forked from qt-creator/qt-creator
Qt4PM: Make enabling/disabling of subproject actions consistent
Change-Id: I56e139e364b71d71a6cf8db9f3add01ab56611c3 Reviewed-by: Daniel Teske <daniel.teske@nokia.com>
This commit is contained in:
committed by
Daniel Teske
parent
bbfc49fe4d
commit
dc52fbfc11
@@ -222,7 +222,7 @@ bool Qt4ProjectManagerPlugin::initialize(const QStringList &arguments, QString *
|
|||||||
connect(m_cleanSubProjectContextMenu, SIGNAL(triggered()), m_qt4ProjectManager, SLOT(cleanSubDirContextMenu()));
|
connect(m_cleanSubProjectContextMenu, SIGNAL(triggered()), m_qt4ProjectManager, SLOT(cleanSubDirContextMenu()));
|
||||||
|
|
||||||
m_buildSubProjectAction = new Utils::ParameterAction(tr("Build Subproject"), tr("Build Subproject \"%1\""),
|
m_buildSubProjectAction = new Utils::ParameterAction(tr("Build Subproject"), tr("Build Subproject \"%1\""),
|
||||||
Utils::ParameterAction::EnabledWithParameter, this);
|
Utils::ParameterAction::AlwaysEnabled, this);
|
||||||
command = am->registerAction(m_buildSubProjectAction, Constants::BUILDSUBDIR, projectContext);
|
command = am->registerAction(m_buildSubProjectAction, Constants::BUILDSUBDIR, projectContext);
|
||||||
command->setAttribute(Core::Command::CA_Hide);
|
command->setAttribute(Core::Command::CA_Hide);
|
||||||
command->setAttribute(Core::Command::CA_UpdateText);
|
command->setAttribute(Core::Command::CA_UpdateText);
|
||||||
@@ -237,7 +237,7 @@ bool Qt4ProjectManagerPlugin::initialize(const QStringList &arguments, QString *
|
|||||||
connect(m_runQMakeAction, SIGNAL(triggered()), m_qt4ProjectManager, SLOT(runQMake()));
|
connect(m_runQMakeAction, SIGNAL(triggered()), m_qt4ProjectManager, SLOT(runQMake()));
|
||||||
|
|
||||||
m_rebuildSubProjectAction = new Utils::ParameterAction(tr("Rebuild Subproject"), tr("Rebuild Subproject \"%1\""),
|
m_rebuildSubProjectAction = new Utils::ParameterAction(tr("Rebuild Subproject"), tr("Rebuild Subproject \"%1\""),
|
||||||
Utils::ParameterAction::EnabledWithParameter, this);
|
Utils::ParameterAction::AlwaysEnabled, this);
|
||||||
command = am->registerAction(m_rebuildSubProjectAction, Constants::REBUILDSUBDIR, projectContext);
|
command = am->registerAction(m_rebuildSubProjectAction, Constants::REBUILDSUBDIR, projectContext);
|
||||||
command->setAttribute(Core::Command::CA_Hide);
|
command->setAttribute(Core::Command::CA_Hide);
|
||||||
command->setAttribute(Core::Command::CA_UpdateText);
|
command->setAttribute(Core::Command::CA_UpdateText);
|
||||||
@@ -246,7 +246,7 @@ bool Qt4ProjectManagerPlugin::initialize(const QStringList &arguments, QString *
|
|||||||
connect(m_rebuildSubProjectAction, SIGNAL(triggered()), m_qt4ProjectManager, SLOT(rebuildSubDirContextMenu()));
|
connect(m_rebuildSubProjectAction, SIGNAL(triggered()), m_qt4ProjectManager, SLOT(rebuildSubDirContextMenu()));
|
||||||
|
|
||||||
m_cleanSubProjectAction = new Utils::ParameterAction(tr("Clean Subproject"), tr("Clean Subproject \"%1\""),
|
m_cleanSubProjectAction = new Utils::ParameterAction(tr("Clean Subproject"), tr("Clean Subproject \"%1\""),
|
||||||
Utils::ParameterAction::EnabledWithParameter, this);
|
Utils::ParameterAction::AlwaysEnabled, this);
|
||||||
command = am->registerAction(m_cleanSubProjectAction, Constants::CLEANSUBDIR, projectContext);
|
command = am->registerAction(m_cleanSubProjectAction, Constants::CLEANSUBDIR, projectContext);
|
||||||
command->setAttribute(Core::Command::CA_Hide);
|
command->setAttribute(Core::Command::CA_Hide);
|
||||||
command->setAttribute(Core::Command::CA_UpdateText);
|
command->setAttribute(Core::Command::CA_UpdateText);
|
||||||
@@ -264,16 +264,12 @@ bool Qt4ProjectManagerPlugin::initialize(const QStringList &arguments, QString *
|
|||||||
mbuild->addAction(command, ProjectExplorer::Constants::G_BUILD_BUILD);
|
mbuild->addAction(command, ProjectExplorer::Constants::G_BUILD_BUILD);
|
||||||
connect(m_buildFileAction, SIGNAL(triggered()), m_qt4ProjectManager, SLOT(buildSubDirContextMenu()));
|
connect(m_buildFileAction, SIGNAL(triggered()), m_qt4ProjectManager, SLOT(buildSubDirContextMenu()));
|
||||||
|
|
||||||
connect(m_projectExplorer,
|
|
||||||
SIGNAL(aboutToShowContextMenu(ProjectExplorer::Project*,ProjectExplorer::Node*)),
|
|
||||||
this, SLOT(updateContextMenu(ProjectExplorer::Project*,ProjectExplorer::Node*)));
|
|
||||||
|
|
||||||
connect(m_projectExplorer->buildManager(), SIGNAL(buildStateChanged(ProjectExplorer::Project*)),
|
connect(m_projectExplorer->buildManager(), SIGNAL(buildStateChanged(ProjectExplorer::Project*)),
|
||||||
this, SLOT(buildStateChanged(ProjectExplorer::Project*)));
|
this, SLOT(buildStateChanged(ProjectExplorer::Project*)));
|
||||||
connect(m_projectExplorer->session(), SIGNAL(startupProjectChanged(ProjectExplorer::Project*)),
|
connect(m_projectExplorer->session(), SIGNAL(startupProjectChanged(ProjectExplorer::Project*)),
|
||||||
this, SLOT(startupProjectChanged()));
|
this, SLOT(startupProjectChanged()));
|
||||||
connect(m_projectExplorer, SIGNAL(currentNodeChanged(ProjectExplorer::Node*,ProjectExplorer::Project*)),
|
connect(m_projectExplorer, SIGNAL(currentNodeChanged(ProjectExplorer::Node*,ProjectExplorer::Project*)),
|
||||||
this, SLOT(currentNodeChanged(ProjectExplorer::Node*,ProjectExplorer::Project*)));
|
this, SLOT(updateContextActions(ProjectExplorer::Node*,ProjectExplorer::Project*)));
|
||||||
|
|
||||||
Core::ActionContainer *contextMenu = am->createMenu(Qt4ProjectManager::Constants::M_CONTEXT);
|
Core::ActionContainer *contextMenu = am->createMenu(Qt4ProjectManager::Constants::M_CONTEXT);
|
||||||
|
|
||||||
@@ -319,44 +315,6 @@ void Qt4ProjectManagerPlugin::extensionsInitialized()
|
|||||||
m_qt4ProjectManager->init();
|
m_qt4ProjectManager->init();
|
||||||
}
|
}
|
||||||
|
|
||||||
void Qt4ProjectManagerPlugin::updateContextMenu(Project *project,
|
|
||||||
ProjectExplorer::Node *node)
|
|
||||||
{
|
|
||||||
m_qt4ProjectManager->setContextProject(project);
|
|
||||||
m_qt4ProjectManager->setContextNode(node);
|
|
||||||
m_runQMakeActionContextMenu->setEnabled(false);
|
|
||||||
m_buildSubProjectContextMenu->setEnabled(false);
|
|
||||||
m_rebuildSubProjectContextMenu->setEnabled(false);
|
|
||||||
m_cleanSubProjectContextMenu->setEnabled(false);
|
|
||||||
|
|
||||||
Qt4ProFileNode *proFileNode = qobject_cast<Qt4ProFileNode *>(node);
|
|
||||||
Qt4Project *qt4Project = qobject_cast<Qt4Project *>(project);
|
|
||||||
if (qt4Project && proFileNode
|
|
||||||
&& qt4Project->activeTarget()
|
|
||||||
&& qt4Project->activeTarget()->activeQt4BuildConfiguration()) {
|
|
||||||
m_runQMakeActionContextMenu->setVisible(true);
|
|
||||||
m_buildSubProjectContextMenu->setVisible(true);
|
|
||||||
m_subProjectRebuildSeparator->setVisible(true);
|
|
||||||
m_rebuildSubProjectContextMenu->setVisible(true);
|
|
||||||
m_cleanSubProjectContextMenu->setVisible(true);
|
|
||||||
|
|
||||||
if (!m_projectExplorer->buildManager()->isBuilding(project)) {
|
|
||||||
if (qt4Project->activeTarget()->activeQt4BuildConfiguration()->qmakeStep())
|
|
||||||
m_runQMakeActionContextMenu->setEnabled(true);
|
|
||||||
m_buildSubProjectContextMenu->setEnabled(true);
|
|
||||||
m_rebuildSubProjectContextMenu->setEnabled(true);
|
|
||||||
m_cleanSubProjectContextMenu->setEnabled(true);
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
m_runQMakeActionContextMenu->setVisible(false);
|
|
||||||
m_buildSubProjectContextMenu->setVisible(false);
|
|
||||||
m_subProjectRebuildSeparator->setVisible(false);
|
|
||||||
m_rebuildSubProjectContextMenu->setVisible(false);
|
|
||||||
m_cleanSubProjectContextMenu->setVisible(false);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
void Qt4ProjectManagerPlugin::startupProjectChanged()
|
void Qt4ProjectManagerPlugin::startupProjectChanged()
|
||||||
{
|
{
|
||||||
if (m_previousStartupProject)
|
if (m_previousStartupProject)
|
||||||
@@ -401,11 +359,12 @@ void Qt4ProjectManagerPlugin::updateRunQMakeAction()
|
|||||||
m_runQMakeAction->setEnabled(enable);
|
m_runQMakeAction->setEnabled(enable);
|
||||||
}
|
}
|
||||||
|
|
||||||
void Qt4ProjectManagerPlugin::currentNodeChanged(ProjectExplorer::Node *node, ProjectExplorer::Project *project)
|
void Qt4ProjectManagerPlugin::updateContextActions(ProjectExplorer::Node *node, ProjectExplorer::Project *project)
|
||||||
{
|
{
|
||||||
m_addLibraryActionContextMenu->setEnabled(qobject_cast<Qt4ProFileNode *>(node));
|
m_addLibraryActionContextMenu->setEnabled(qobject_cast<Qt4ProFileNode *>(node));
|
||||||
|
|
||||||
Qt4Project *pro = qobject_cast<Qt4Project *>(project);
|
Qt4ProFileNode *proFileNode = qobject_cast<Qt4ProFileNode *>(node);
|
||||||
|
Qt4Project *qt4Project = qobject_cast<Qt4Project *>(project);
|
||||||
Qt4ProFileNode *subProjectNode = node ? qobject_cast<Qt4ProFileNode *>(node->projectNode()) : 0;
|
Qt4ProFileNode *subProjectNode = node ? qobject_cast<Qt4ProFileNode *>(node->projectNode()) : 0;
|
||||||
ProjectExplorer::FileNode *fileNode = qobject_cast<ProjectExplorer::FileNode *>(node);
|
ProjectExplorer::FileNode *fileNode = qobject_cast<ProjectExplorer::FileNode *>(node);
|
||||||
bool buildFilePossible = subProjectNode && fileNode
|
bool buildFilePossible = subProjectNode && fileNode
|
||||||
@@ -413,10 +372,10 @@ void Qt4ProjectManagerPlugin::currentNodeChanged(ProjectExplorer::Node *node, Pr
|
|||||||
&& !subProjectNode->isDebugAndRelease();
|
&& !subProjectNode->isDebugAndRelease();
|
||||||
|
|
||||||
m_qt4ProjectManager->setContextNode(subProjectNode);
|
m_qt4ProjectManager->setContextNode(subProjectNode);
|
||||||
m_qt4ProjectManager->setContextProject(pro);
|
m_qt4ProjectManager->setContextProject(qt4Project);
|
||||||
m_qt4ProjectManager->setContextFile(buildFilePossible ? fileNode : 0);
|
m_qt4ProjectManager->setContextFile(buildFilePossible ? fileNode : 0);
|
||||||
|
|
||||||
bool subProjectActionsVisible = pro && subProjectNode && (subProjectNode != pro->rootProjectNode());
|
bool subProjectActionsVisible = qt4Project && subProjectNode && (subProjectNode != qt4Project->rootProjectNode());
|
||||||
|
|
||||||
QString subProjectName;
|
QString subProjectName;
|
||||||
if (subProjectActionsVisible)
|
if (subProjectActionsVisible)
|
||||||
@@ -428,17 +387,38 @@ void Qt4ProjectManagerPlugin::currentNodeChanged(ProjectExplorer::Node *node, Pr
|
|||||||
m_buildSubProjectContextMenu->setParameter(subProjectName);
|
m_buildSubProjectContextMenu->setParameter(subProjectName);
|
||||||
m_buildFileAction->setParameter(node ? QFileInfo(node->path()).fileName() : QString());
|
m_buildFileAction->setParameter(node ? QFileInfo(node->path()).fileName() : QString());
|
||||||
|
|
||||||
|
Qt4BuildConfiguration *buildConfiguration = qt4Project->activeTarget() ?
|
||||||
|
qt4Project->activeTarget()->activeQt4BuildConfiguration() : 0;
|
||||||
|
bool isProjectNode = qt4Project && proFileNode && buildConfiguration;
|
||||||
|
bool enabled = subProjectActionsVisible && !m_projectExplorer->buildManager()->isBuilding(project);
|
||||||
|
|
||||||
m_buildSubProjectAction->setVisible(subProjectActionsVisible);
|
m_buildSubProjectAction->setVisible(subProjectActionsVisible);
|
||||||
m_rebuildSubProjectAction->setVisible(subProjectActionsVisible);
|
m_rebuildSubProjectAction->setVisible(subProjectActionsVisible);
|
||||||
m_cleanSubProjectAction->setVisible(subProjectActionsVisible);
|
m_cleanSubProjectAction->setVisible(subProjectActionsVisible);
|
||||||
|
m_buildSubProjectContextMenu->setVisible(subProjectActionsVisible && isProjectNode);
|
||||||
|
m_subProjectRebuildSeparator->setVisible(subProjectActionsVisible && isProjectNode);
|
||||||
|
m_rebuildSubProjectContextMenu->setVisible(subProjectActionsVisible && isProjectNode);
|
||||||
|
m_cleanSubProjectContextMenu->setVisible(subProjectActionsVisible && isProjectNode);
|
||||||
|
m_runQMakeActionContextMenu->setVisible(subProjectActionsVisible && isProjectNode
|
||||||
|
&& buildConfiguration->qmakeStep());
|
||||||
m_buildFileAction->setVisible(buildFilePossible);
|
m_buildFileAction->setVisible(buildFilePossible);
|
||||||
|
|
||||||
|
m_buildSubProjectAction->setEnabled(enabled);
|
||||||
|
m_rebuildSubProjectAction->setEnabled(enabled);
|
||||||
|
m_cleanSubProjectAction->setEnabled(enabled);
|
||||||
|
m_buildSubProjectContextMenu->setEnabled(enabled && isProjectNode);
|
||||||
|
m_rebuildSubProjectContextMenu->setEnabled(enabled && isProjectNode);
|
||||||
|
m_cleanSubProjectContextMenu->setEnabled(enabled && isProjectNode);
|
||||||
|
m_runQMakeActionContextMenu->setEnabled(enabled && isProjectNode && buildConfiguration->qmakeStep());
|
||||||
}
|
}
|
||||||
|
|
||||||
void Qt4ProjectManagerPlugin::buildStateChanged(ProjectExplorer::Project *pro)
|
void Qt4ProjectManagerPlugin::buildStateChanged(ProjectExplorer::Project *pro)
|
||||||
{
|
{
|
||||||
ProjectExplorer::Project *currentProject = m_projectExplorer->currentProject();
|
ProjectExplorer::Project *currentProject = m_projectExplorer->currentProject();
|
||||||
if (pro == currentProject)
|
if (pro == currentProject) {
|
||||||
updateRunQMakeAction();
|
updateRunQMakeAction();
|
||||||
|
updateContextActions(m_projectExplorer->currentNode(), pro);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
Q_EXPORT_PLUGIN(Qt4ProjectManagerPlugin)
|
Q_EXPORT_PLUGIN(Qt4ProjectManagerPlugin)
|
||||||
|
|||||||
@@ -71,12 +71,10 @@ public:
|
|||||||
void extensionsInitialized();
|
void extensionsInitialized();
|
||||||
|
|
||||||
private slots:
|
private slots:
|
||||||
void updateContextMenu(ProjectExplorer::Project *project,
|
|
||||||
ProjectExplorer::Node *node);
|
|
||||||
void startupProjectChanged();
|
void startupProjectChanged();
|
||||||
void activeTargetChanged();
|
void activeTargetChanged();
|
||||||
void updateRunQMakeAction();
|
void updateRunQMakeAction();
|
||||||
void currentNodeChanged(ProjectExplorer::Node *node, ProjectExplorer::Project *project);
|
void updateContextActions(ProjectExplorer::Node *node, ProjectExplorer::Project *project);
|
||||||
void buildStateChanged(ProjectExplorer::Project *pro);
|
void buildStateChanged(ProjectExplorer::Project *pro);
|
||||||
|
|
||||||
#ifdef WITH_TESTS
|
#ifdef WITH_TESTS
|
||||||
|
|||||||
Reference in New Issue
Block a user