forked from qt-creator/qt-creator
Show a dialog in case of mismatching build/run configurations.
This commit is contained in:
@@ -98,6 +98,7 @@
|
|||||||
#include <QtGui/QFileDialog>
|
#include <QtGui/QFileDialog>
|
||||||
#include <QtGui/QMenu>
|
#include <QtGui/QMenu>
|
||||||
#include <QtGui/QMessageBox>
|
#include <QtGui/QMessageBox>
|
||||||
|
#include <QtGui/QVBoxLayout>
|
||||||
|
|
||||||
Q_DECLARE_METATYPE(QSharedPointer<ProjectExplorer::RunConfiguration>);
|
Q_DECLARE_METATYPE(QSharedPointer<ProjectExplorer::RunConfiguration>);
|
||||||
Q_DECLARE_METATYPE(Core::IEditorFactory*);
|
Q_DECLARE_METATYPE(Core::IEditorFactory*);
|
||||||
@@ -1541,6 +1542,10 @@ void ProjectExplorerPlugin::runProjectImpl(Project *pro)
|
|||||||
return;
|
return;
|
||||||
|
|
||||||
if (d->m_projectExplorerSettings.buildBeforeRun && pro->hasBuildSettings()) {
|
if (d->m_projectExplorerSettings.buildBeforeRun && pro->hasBuildSettings()) {
|
||||||
|
if (!pro->activeRunConfiguration()->isEnabled()) {
|
||||||
|
if (!showBuildConfigDialog())
|
||||||
|
return;
|
||||||
|
}
|
||||||
if (saveModifiedFiles()) {
|
if (saveModifiedFiles()) {
|
||||||
d->m_runMode = ProjectExplorer::Constants::RUNMODE;
|
d->m_runMode = ProjectExplorer::Constants::RUNMODE;
|
||||||
d->m_delayedRunConfiguration = pro->activeRunConfiguration();
|
d->m_delayedRunConfiguration = pro->activeRunConfiguration();
|
||||||
@@ -1560,6 +1565,10 @@ void ProjectExplorerPlugin::debugProject()
|
|||||||
return;
|
return;
|
||||||
|
|
||||||
if (d->m_projectExplorerSettings.buildBeforeRun && pro->hasBuildSettings()) {
|
if (d->m_projectExplorerSettings.buildBeforeRun && pro->hasBuildSettings()) {
|
||||||
|
if (!pro->activeRunConfiguration()->isEnabled()) {
|
||||||
|
if (!showBuildConfigDialog())
|
||||||
|
return;
|
||||||
|
}
|
||||||
if (saveModifiedFiles()) {
|
if (saveModifiedFiles()) {
|
||||||
d->m_runMode = ProjectExplorer::Constants::DEBUGMODE;
|
d->m_runMode = ProjectExplorer::Constants::DEBUGMODE;
|
||||||
d->m_delayedRunConfiguration = pro->activeRunConfiguration();
|
d->m_delayedRunConfiguration = pro->activeRunConfiguration();
|
||||||
@@ -1574,6 +1583,31 @@ void ProjectExplorerPlugin::debugProject()
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool ProjectExplorerPlugin::showBuildConfigDialog()
|
||||||
|
{
|
||||||
|
Project *pro = startupProject();
|
||||||
|
BuildConfigDialog *dialog = new BuildConfigDialog(pro,
|
||||||
|
Core::ICore::instance()->mainWindow());
|
||||||
|
dialog->exec();
|
||||||
|
BuildConfiguration *otherConfig = dialog->selectedBuildConfiguration();
|
||||||
|
int result = dialog->result();
|
||||||
|
dialog->deleteLater();
|
||||||
|
switch (result) {
|
||||||
|
case BuildConfigDialog::ChangeBuild:
|
||||||
|
if (otherConfig) {
|
||||||
|
pro->setActiveBuildConfiguration(otherConfig);
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
case BuildConfigDialog::Cancel:
|
||||||
|
return false;
|
||||||
|
case BuildConfigDialog::Continue:
|
||||||
|
return true;
|
||||||
|
default:
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
void ProjectExplorerPlugin::addToApplicationOutputWindow(RunControl *rc, const QString &line)
|
void ProjectExplorerPlugin::addToApplicationOutputWindow(RunControl *rc, const QString &line)
|
||||||
{
|
{
|
||||||
d->m_outputPane->appendOutput(rc, line);
|
d->m_outputPane->appendOutput(rc, line);
|
||||||
@@ -2095,4 +2129,79 @@ Internal::ProjectExplorerSettings ProjectExplorerPlugin::projectExplorerSettings
|
|||||||
return d->m_projectExplorerSettings;
|
return d->m_projectExplorerSettings;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// ---------- BuildConfigDialog -----------
|
||||||
|
Q_DECLARE_METATYPE(BuildConfiguration*);
|
||||||
|
|
||||||
|
BuildConfigDialog::BuildConfigDialog(Project *project, QWidget *parent)
|
||||||
|
: QDialog(parent),
|
||||||
|
m_project(project)
|
||||||
|
{
|
||||||
|
QVBoxLayout *vlayout = new QVBoxLayout;
|
||||||
|
setLayout(vlayout);
|
||||||
|
QDialogButtonBox *buttonBox = new QDialogButtonBox;
|
||||||
|
m_changeBuildConfiguration = buttonBox->addButton(tr("Change build configuration && continue"),
|
||||||
|
QDialogButtonBox::ActionRole);
|
||||||
|
m_cancel = buttonBox->addButton(tr("Cancel"),
|
||||||
|
QDialogButtonBox::RejectRole);
|
||||||
|
m_justContinue = buttonBox->addButton(tr("Continue anyway"),
|
||||||
|
QDialogButtonBox::AcceptRole);
|
||||||
|
connect(m_changeBuildConfiguration, SIGNAL(clicked()), this, SLOT(buttonClicked()));
|
||||||
|
connect(m_cancel, SIGNAL(clicked()), this, SLOT(buttonClicked()));
|
||||||
|
connect(m_justContinue, SIGNAL(clicked()), this, SLOT(buttonClicked()));
|
||||||
|
setWindowTitle(tr("Run configuration doesn't match build configuration"));
|
||||||
|
QLabel *shortText = new QLabel(tr(
|
||||||
|
"The active build configuration builds a target "
|
||||||
|
"that cannot be used by the active run configuration."
|
||||||
|
));
|
||||||
|
vlayout->addWidget(shortText);
|
||||||
|
QLabel *descriptiveText = new QLabel(tr(
|
||||||
|
"This can happen if the active build configuration "
|
||||||
|
"uses the wrong Qt version and/or tool chain for the active run configuration "
|
||||||
|
"(e.g. running in Symbian emulator requires building with WINSCW tool chain)."
|
||||||
|
));
|
||||||
|
descriptiveText->setWordWrap(true);
|
||||||
|
vlayout->addWidget(descriptiveText);
|
||||||
|
QHBoxLayout *hlayout = new QHBoxLayout;
|
||||||
|
hlayout->addWidget(new QLabel(tr("Choose build configuration:")));
|
||||||
|
m_configCombo = new QComboBox;
|
||||||
|
QSharedPointer<RunConfiguration> activeRun = m_project->activeRunConfiguration();
|
||||||
|
foreach (BuildConfiguration *config, m_project->buildConfigurations()) {
|
||||||
|
if (activeRun->isEnabled(config)) {
|
||||||
|
m_configCombo->addItem(config->name(), qVariantFromValue(config));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (m_configCombo->count() == 0) {
|
||||||
|
m_configCombo->addItem(tr("No valid build configuration found."));
|
||||||
|
m_configCombo->setEnabled(false);
|
||||||
|
m_changeBuildConfiguration->setEnabled(false);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
hlayout->addWidget(m_configCombo);
|
||||||
|
hlayout->addStretch(10);
|
||||||
|
vlayout->addLayout(hlayout);
|
||||||
|
vlayout->addWidget(buttonBox);
|
||||||
|
m_cancel->setDefault(true);
|
||||||
|
}
|
||||||
|
|
||||||
|
BuildConfiguration *BuildConfigDialog::selectedBuildConfiguration() const
|
||||||
|
{
|
||||||
|
int index = m_configCombo->currentIndex();
|
||||||
|
if (index < 0)
|
||||||
|
return 0;
|
||||||
|
return m_configCombo->itemData(index, Qt::UserRole).value<BuildConfiguration*>();
|
||||||
|
}
|
||||||
|
|
||||||
|
void BuildConfigDialog::buttonClicked()
|
||||||
|
{
|
||||||
|
QPushButton *button = qobject_cast<QPushButton *>(sender());
|
||||||
|
if (button == m_changeBuildConfiguration) {
|
||||||
|
done(ChangeBuild);
|
||||||
|
} else if (button == m_cancel) {
|
||||||
|
done(Cancel);
|
||||||
|
} else if (button == m_justContinue) {
|
||||||
|
done(Continue);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
Q_EXPORT_PLUGIN(ProjectExplorerPlugin)
|
Q_EXPORT_PLUGIN(ProjectExplorerPlugin)
|
||||||
|
|||||||
@@ -35,10 +35,12 @@
|
|||||||
#include <extensionsystem/iplugin.h>
|
#include <extensionsystem/iplugin.h>
|
||||||
|
|
||||||
#include <QtCore/QSharedPointer>
|
#include <QtCore/QSharedPointer>
|
||||||
|
#include <QtGui/QDialog>
|
||||||
|
|
||||||
QT_BEGIN_NAMESPACE
|
QT_BEGIN_NAMESPACE
|
||||||
class QPoint;
|
class QPoint;
|
||||||
class QAction;
|
class QAction;
|
||||||
|
class QComboBox;
|
||||||
QT_END_NAMESPACE
|
QT_END_NAMESPACE
|
||||||
|
|
||||||
namespace Core {
|
namespace Core {
|
||||||
@@ -59,10 +61,36 @@ class RunConfiguration;
|
|||||||
class IRunControlFactory;
|
class IRunControlFactory;
|
||||||
class Project;
|
class Project;
|
||||||
class Node;
|
class Node;
|
||||||
|
class BuildConfiguration;
|
||||||
|
|
||||||
namespace Internal {
|
namespace Internal {
|
||||||
class ProjectFileFactory;
|
class ProjectFileFactory;
|
||||||
struct ProjectExplorerSettings;
|
struct ProjectExplorerSettings;
|
||||||
|
|
||||||
|
class BuildConfigDialog : public QDialog
|
||||||
|
{
|
||||||
|
Q_OBJECT
|
||||||
|
public:
|
||||||
|
enum DialogResult {
|
||||||
|
ChangeBuild = 10,
|
||||||
|
Cancel = 11,
|
||||||
|
Continue = 12
|
||||||
|
};
|
||||||
|
BuildConfigDialog(Project *project, QWidget *parent = 0);
|
||||||
|
|
||||||
|
BuildConfiguration *selectedBuildConfiguration() const;
|
||||||
|
|
||||||
|
private slots:
|
||||||
|
void buttonClicked();
|
||||||
|
|
||||||
|
private:
|
||||||
|
Project *m_project;
|
||||||
|
QPushButton *m_changeBuildConfiguration;
|
||||||
|
QPushButton *m_cancel;
|
||||||
|
QPushButton *m_justContinue;
|
||||||
|
QComboBox *m_configCombo;
|
||||||
|
};
|
||||||
|
|
||||||
} // namespace Internal
|
} // namespace Internal
|
||||||
|
|
||||||
struct ProjectExplorerPluginPrivate;
|
struct ProjectExplorerPluginPrivate;
|
||||||
@@ -187,6 +215,7 @@ private slots:
|
|||||||
private:
|
private:
|
||||||
void runProjectImpl(Project *pro);
|
void runProjectImpl(Project *pro);
|
||||||
void executeRunConfiguration(const QSharedPointer<RunConfiguration> &, const QString &mode);
|
void executeRunConfiguration(const QSharedPointer<RunConfiguration> &, const QString &mode);
|
||||||
|
bool showBuildConfigDialog();
|
||||||
void setCurrent(Project *project, QString filePath, Node *node);
|
void setCurrent(Project *project, QString filePath, Node *node);
|
||||||
|
|
||||||
QStringList allFilesWithDependencies(Project *pro);
|
QStringList allFilesWithDependencies(Project *pro);
|
||||||
|
|||||||
@@ -30,6 +30,7 @@
|
|||||||
#include "runconfiguration.h"
|
#include "runconfiguration.h"
|
||||||
#include "project.h"
|
#include "project.h"
|
||||||
#include "persistentsettings.h"
|
#include "persistentsettings.h"
|
||||||
|
#include "buildconfiguration.h"
|
||||||
|
|
||||||
#include <QtCore/QTimer>
|
#include <QtCore/QTimer>
|
||||||
|
|
||||||
@@ -56,6 +57,15 @@ Project *RunConfiguration::project() const
|
|||||||
return m_project.data();
|
return m_project.data();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool RunConfiguration::isEnabled() const
|
||||||
|
{
|
||||||
|
if (!m_project)
|
||||||
|
return false;
|
||||||
|
if (!m_project->activeBuildConfiguration())
|
||||||
|
return false;
|
||||||
|
return isEnabled(m_project->activeBuildConfiguration());
|
||||||
|
}
|
||||||
|
|
||||||
QString RunConfiguration::name() const
|
QString RunConfiguration::name() const
|
||||||
{
|
{
|
||||||
return m_name;
|
return m_name;
|
||||||
|
|||||||
@@ -49,6 +49,7 @@ class PersistentSettingsReader;
|
|||||||
class PersistentSettingsWriter;
|
class PersistentSettingsWriter;
|
||||||
|
|
||||||
class RunControl;
|
class RunControl;
|
||||||
|
class BuildConfiguration;
|
||||||
|
|
||||||
/* Base class for a run configuration. A run configuration specifies how a
|
/* Base class for a run configuration. A run configuration specifies how a
|
||||||
* project should be run, while the runner (see below) does the actual running.
|
* project should be run, while the runner (see below) does the actual running.
|
||||||
@@ -75,7 +76,8 @@ public:
|
|||||||
QString name() const;
|
QString name() const;
|
||||||
void setName(const QString &name);
|
void setName(const QString &name);
|
||||||
|
|
||||||
virtual bool isEnabled() const { return true; }
|
virtual bool isEnabled(BuildConfiguration *) const { return true; }
|
||||||
|
bool isEnabled() const;
|
||||||
|
|
||||||
// Returns the widget used to configure this run configuration. Ownership is transferred to the caller
|
// Returns the widget used to configure this run configuration. Ownership is transferred to the caller
|
||||||
// rename to createConfigurationWidget
|
// rename to createConfigurationWidget
|
||||||
|
|||||||
@@ -288,11 +288,6 @@ void RunSettingsWidget::initRunConfigurationComboBox()
|
|||||||
m_ui->runConfigurationCombo->setCurrentIndex(runConfigurations.indexOf(currentSelection));
|
m_ui->runConfigurationCombo->setCurrentIndex(runConfigurations.indexOf(currentSelection));
|
||||||
else
|
else
|
||||||
m_ui->runConfigurationCombo->setCurrentIndex(runConfigurations.indexOf(activeRunConfiguration));
|
m_ui->runConfigurationCombo->setCurrentIndex(runConfigurations.indexOf(activeRunConfiguration));
|
||||||
QList<QSharedPointer<RunConfiguration> > enabledRunConfigurations;
|
|
||||||
for (int i = 0; i < runConfigurations.size(); ++i) {
|
|
||||||
if (runConfigurations.at(i)->isEnabled())
|
|
||||||
enabledRunConfigurations.append(runConfigurations.at(i));
|
|
||||||
}
|
|
||||||
m_ui->removeToolButton->setEnabled(runConfigurations.size() > 1);
|
m_ui->removeToolButton->setEnabled(runConfigurations.size() > 1);
|
||||||
updateMakeActiveLabel();
|
updateMakeActiveLabel();
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -101,6 +101,14 @@ QString S60DeviceRunConfiguration::type() const
|
|||||||
return QLatin1String("Qt4ProjectManager.DeviceRunConfiguration");
|
return QLatin1String("Qt4ProjectManager.DeviceRunConfiguration");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
ProjectExplorer::ToolChain::ToolChainType S60DeviceRunConfiguration::toolChainType(
|
||||||
|
ProjectExplorer::BuildConfiguration *configuration) const
|
||||||
|
{
|
||||||
|
if (const Qt4Project *pro = qobject_cast<const Qt4Project*>(project()))
|
||||||
|
return pro->toolChainType(configuration);
|
||||||
|
return ProjectExplorer::ToolChain::INVALID;
|
||||||
|
}
|
||||||
|
|
||||||
ProjectExplorer::ToolChain::ToolChainType S60DeviceRunConfiguration::toolChainType() const
|
ProjectExplorer::ToolChain::ToolChainType S60DeviceRunConfiguration::toolChainType() const
|
||||||
{
|
{
|
||||||
if (const Qt4Project *pro = qobject_cast<const Qt4Project*>(project()))
|
if (const Qt4Project *pro = qobject_cast<const Qt4Project*>(project()))
|
||||||
@@ -108,9 +116,9 @@ ProjectExplorer::ToolChain::ToolChainType S60DeviceRunConfiguration::toolChainTy
|
|||||||
return ProjectExplorer::ToolChain::INVALID;
|
return ProjectExplorer::ToolChain::INVALID;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool S60DeviceRunConfiguration::isEnabled() const
|
bool S60DeviceRunConfiguration::isEnabled(ProjectExplorer::BuildConfiguration *configuration) const
|
||||||
{
|
{
|
||||||
const ToolChain::ToolChainType type = toolChainType();
|
const ToolChain::ToolChainType type = toolChainType(configuration);
|
||||||
return type == ToolChain::GCCE || type == ToolChain::RVCT_ARMV5 || type == ToolChain::RVCT_ARMV6;
|
return type == ToolChain::GCCE || type == ToolChain::RVCT_ARMV5 || type == ToolChain::RVCT_ARMV6;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -62,7 +62,7 @@ public:
|
|||||||
~S60DeviceRunConfiguration();
|
~S60DeviceRunConfiguration();
|
||||||
|
|
||||||
QString type() const;
|
QString type() const;
|
||||||
bool isEnabled() const;
|
bool isEnabled(ProjectExplorer::BuildConfiguration *configuration) const;
|
||||||
QWidget *configurationWidget();
|
QWidget *configurationWidget();
|
||||||
void save(ProjectExplorer::PersistentSettingsWriter &writer) const;
|
void save(ProjectExplorer::PersistentSettingsWriter &writer) const;
|
||||||
void restore(const ProjectExplorer::PersistentSettingsReader &reader);
|
void restore(const ProjectExplorer::PersistentSettingsReader &reader);
|
||||||
@@ -97,6 +97,7 @@ private slots:
|
|||||||
void invalidateCachedTargetInformation();
|
void invalidateCachedTargetInformation();
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
ProjectExplorer::ToolChain::ToolChainType toolChainType(ProjectExplorer::BuildConfiguration *configuration) const;
|
||||||
void updateTarget();
|
void updateTarget();
|
||||||
|
|
||||||
QString m_proFilePath;
|
QString m_proFilePath;
|
||||||
|
|||||||
@@ -76,11 +76,11 @@ QString S60EmulatorRunConfiguration::type() const
|
|||||||
return "Qt4ProjectManager.EmulatorRunConfiguration";
|
return "Qt4ProjectManager.EmulatorRunConfiguration";
|
||||||
}
|
}
|
||||||
|
|
||||||
bool S60EmulatorRunConfiguration::isEnabled() const
|
bool S60EmulatorRunConfiguration::isEnabled(ProjectExplorer::BuildConfiguration *configuration) const
|
||||||
{
|
{
|
||||||
Qt4Project *pro = qobject_cast<Qt4Project*>(project());
|
Qt4Project *pro = qobject_cast<Qt4Project*>(project());
|
||||||
QTC_ASSERT(pro, return false);
|
QTC_ASSERT(pro, return false);
|
||||||
ToolChain::ToolChainType type = pro->toolChainType(pro->activeBuildConfiguration());
|
ToolChain::ToolChainType type = pro->toolChainType(configuration);
|
||||||
return type == ToolChain::WINSCW;
|
return type == ToolChain::WINSCW;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -55,7 +55,7 @@ public:
|
|||||||
~S60EmulatorRunConfiguration();
|
~S60EmulatorRunConfiguration();
|
||||||
|
|
||||||
QString type() const;
|
QString type() const;
|
||||||
bool isEnabled() const;
|
bool isEnabled(ProjectExplorer::BuildConfiguration *configuration) const;
|
||||||
QWidget *configurationWidget();
|
QWidget *configurationWidget();
|
||||||
void save(ProjectExplorer::PersistentSettingsWriter &writer) const;
|
void save(ProjectExplorer::PersistentSettingsWriter &writer) const;
|
||||||
void restore(const ProjectExplorer::PersistentSettingsReader &reader);
|
void restore(const ProjectExplorer::PersistentSettingsReader &reader);
|
||||||
|
|||||||
@@ -994,15 +994,6 @@ void Qt4Project::setToolChainType(BuildConfiguration *configuration, ProjectExpl
|
|||||||
|
|
||||||
void Qt4Project::updateActiveRunConfiguration()
|
void Qt4Project::updateActiveRunConfiguration()
|
||||||
{
|
{
|
||||||
const QSharedPointer<RunConfiguration> activeRunConfig = activeRunConfiguration();
|
|
||||||
if (!activeRunConfig.isNull() && !activeRunConfig->isEnabled()) {
|
|
||||||
foreach (const QSharedPointer<RunConfiguration> &runConfiguration, runConfigurations()) {
|
|
||||||
if (runConfiguration->isEnabled()) {
|
|
||||||
setActiveRunConfiguration(runConfiguration);
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
emit runConfigurationsEnabledStateChanged();
|
emit runConfigurationsEnabledStateChanged();
|
||||||
emit targetInformationChanged();
|
emit targetInformationChanged();
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -93,12 +93,12 @@ QString Qt4RunConfiguration::type() const
|
|||||||
return "Qt4ProjectManager.Qt4RunConfiguration";
|
return "Qt4ProjectManager.Qt4RunConfiguration";
|
||||||
}
|
}
|
||||||
|
|
||||||
bool Qt4RunConfiguration::isEnabled() const
|
bool Qt4RunConfiguration::isEnabled(ProjectExplorer::BuildConfiguration *configuration) const
|
||||||
{
|
{
|
||||||
#ifdef QTCREATOR_WITH_S60
|
#ifdef QTCREATOR_WITH_S60
|
||||||
Qt4Project *pro = qobject_cast<Qt4Project*>(project());
|
Qt4Project *pro = qobject_cast<Qt4Project*>(project());
|
||||||
QTC_ASSERT(pro, return false);
|
QTC_ASSERT(pro, return false);
|
||||||
ProjectExplorer::ToolChain::ToolChainType type = pro->toolChainType(pro->activeBuildConfiguration());
|
ProjectExplorer::ToolChain::ToolChainType type = pro->toolChainType(configuration);
|
||||||
return type != ProjectExplorer::ToolChain::WINSCW
|
return type != ProjectExplorer::ToolChain::WINSCW
|
||||||
&& type != ProjectExplorer::ToolChain::GCCE
|
&& type != ProjectExplorer::ToolChain::GCCE
|
||||||
&& type != ProjectExplorer::ToolChain::RVCT_ARMV5
|
&& type != ProjectExplorer::ToolChain::RVCT_ARMV5
|
||||||
|
|||||||
@@ -66,7 +66,7 @@ public:
|
|||||||
virtual ~Qt4RunConfiguration();
|
virtual ~Qt4RunConfiguration();
|
||||||
|
|
||||||
virtual QString type() const;
|
virtual QString type() const;
|
||||||
virtual bool isEnabled() const;
|
virtual bool isEnabled(ProjectExplorer::BuildConfiguration *configuration) const;
|
||||||
virtual QWidget *configurationWidget();
|
virtual QWidget *configurationWidget();
|
||||||
virtual void save(ProjectExplorer::PersistentSettingsWriter &writer) const;
|
virtual void save(ProjectExplorer::PersistentSettingsWriter &writer) const;
|
||||||
virtual void restore(const ProjectExplorer::PersistentSettingsReader &reader);
|
virtual void restore(const ProjectExplorer::PersistentSettingsReader &reader);
|
||||||
|
|||||||
Reference in New Issue
Block a user