ProjectTree Context Menu: Offer both build with/without dependencies

As well as clean/rebuild with/without dependencies.

Change-Id: I4714a00229cc164e807553fbd42f6b2d6fbc1db4
Task-number: QTCREATORBUG-14606
Reviewed-by: Tobias Hunger <tobias.hunger@theqtcompany.com>
This commit is contained in:
Daniel Teske
2015-07-20 12:06:02 +02:00
parent ddea5994f3
commit 82a1006433
2 changed files with 64 additions and 9 deletions

View File

@@ -221,10 +221,12 @@ public:
void buildProjectOnly(); void buildProjectOnly();
void handleBuildProject(); void handleBuildProject();
void buildProjectContextMenu(); void buildProjectContextMenu();
void buildProjectDependenciesContextMenu();
void buildSession(); void buildSession();
void rebuildProjectOnly(); void rebuildProjectOnly();
void rebuildProject(); void rebuildProject();
void rebuildProjectContextMenu(); void rebuildProjectContextMenu();
void rebuildProjectDependenciesContextMenu();
void rebuildSession(); void rebuildSession();
void deployProjectOnly(); void deployProjectOnly();
void deployProject(); void deployProject();
@@ -233,6 +235,7 @@ public:
void cleanProjectOnly(); void cleanProjectOnly();
void cleanProject(); void cleanProject();
void cleanProjectContextMenu(); void cleanProjectContextMenu();
void cleanProjectDependenciesContextMenu();
void cleanSession(); void cleanSession();
void cancelBuild(); void cancelBuild();
void loadAction(); void loadAction();
@@ -303,10 +306,12 @@ public:
QAction *m_buildProjectOnlyAction; QAction *m_buildProjectOnlyAction;
Utils::ParameterAction *m_buildAction; Utils::ParameterAction *m_buildAction;
QAction *m_buildActionContextMenu; QAction *m_buildActionContextMenu;
QAction *m_buildDependenciesActionContextMenu;
QAction *m_buildSessionAction; QAction *m_buildSessionAction;
QAction *m_rebuildProjectOnlyAction; QAction *m_rebuildProjectOnlyAction;
Utils::ParameterAction *m_rebuildAction; Utils::ParameterAction *m_rebuildAction;
QAction *m_rebuildActionContextMenu; QAction *m_rebuildActionContextMenu;
QAction *m_rebuildDependenciesActionContextMenu;
QAction *m_rebuildSessionAction; QAction *m_rebuildSessionAction;
QAction *m_cleanProjectOnlyAction; QAction *m_cleanProjectOnlyAction;
QAction *m_deployProjectOnlyAction; QAction *m_deployProjectOnlyAction;
@@ -315,6 +320,7 @@ public:
QAction *m_deploySessionAction; QAction *m_deploySessionAction;
Utils::ParameterAction *m_cleanAction; Utils::ParameterAction *m_cleanAction;
QAction *m_cleanActionContextMenu; QAction *m_cleanActionContextMenu;
QAction *m_cleanDependenciesActionContextMenu;
QAction *m_cleanSessionAction; QAction *m_cleanSessionAction;
QAction *m_runAction; QAction *m_runAction;
QAction *m_runActionContextMenu; QAction *m_runActionContextMenu;
@@ -924,20 +930,38 @@ bool ProjectExplorerPlugin::initialize(const QStringList &arguments, QString *er
cmd = ActionManager::registerAction(dd->m_runWithoutDeployAction, Constants::RUNWITHOUTDEPLOY); cmd = ActionManager::registerAction(dd->m_runWithoutDeployAction, Constants::RUNWITHOUTDEPLOY);
mbuild->addAction(cmd, Constants::G_BUILD_RUN); mbuild->addAction(cmd, Constants::G_BUILD_RUN);
// build action with dependencies (context menu)
dd->m_buildDependenciesActionContextMenu = new QAction(tr("Build"), this);
cmd = ActionManager::registerAction(dd->m_buildDependenciesActionContextMenu, Constants::BUILDDEPENDCM, projecTreeContext);
cmd->setAttribute(Command::CA_UpdateText);
mprojectContextMenu->addAction(cmd, Constants::G_PROJECT_BUILD);
// build action (context menu) // build action (context menu)
dd->m_buildActionContextMenu = new QAction(tr("Build"), this); dd->m_buildActionContextMenu = new QAction(tr("Build Without Dependencies"), this);
cmd = ActionManager::registerAction(dd->m_buildActionContextMenu, Constants::BUILDCM, projecTreeContext); cmd = ActionManager::registerAction(dd->m_buildActionContextMenu, Constants::BUILDCM, projecTreeContext);
cmd->setAttribute(Command::CA_UpdateText); cmd->setAttribute(Command::CA_UpdateText);
mprojectContextMenu->addAction(cmd, Constants::G_PROJECT_BUILD); mprojectContextMenu->addAction(cmd, Constants::G_PROJECT_BUILD);
// rebuild action with dependencies (context menu)
dd->m_rebuildDependenciesActionContextMenu = new QAction(tr("Rebuild"), this);
cmd = ActionManager::registerAction(dd->m_rebuildDependenciesActionContextMenu, Constants::REBUILDDEPENDCM, projecTreeContext);
cmd->setAttribute(Command::CA_UpdateText);
mprojectContextMenu->addAction(cmd, Constants::G_PROJECT_REBUILD);
// rebuild action (context menu) // rebuild action (context menu)
dd->m_rebuildActionContextMenu = new QAction(tr("Rebuild"), this); dd->m_rebuildActionContextMenu = new QAction(tr("Rebuild Without Dependencies"), this);
cmd = ActionManager::registerAction(dd->m_rebuildActionContextMenu, Constants::REBUILDCM, projecTreeContext); cmd = ActionManager::registerAction(dd->m_rebuildActionContextMenu, Constants::REBUILDCM, projecTreeContext);
cmd->setAttribute(Command::CA_UpdateText); cmd->setAttribute(Command::CA_UpdateText);
mprojectContextMenu->addAction(cmd, Constants::G_PROJECT_REBUILD); mprojectContextMenu->addAction(cmd, Constants::G_PROJECT_REBUILD);
// clean action with dependencies (context menu)
dd->m_cleanDependenciesActionContextMenu = new QAction(tr("Clean"), this);
cmd = ActionManager::registerAction(dd->m_cleanDependenciesActionContextMenu, Constants::CLEANDEPENDCM, projecTreeContext);
cmd->setAttribute(Command::CA_UpdateText);
mprojectContextMenu->addAction(cmd, Constants::G_PROJECT_REBUILD);
// clean action (context menu) // clean action (context menu)
dd->m_cleanActionContextMenu = new QAction(tr("Clean"), this); dd->m_cleanActionContextMenu = new QAction(tr("Clean Without Dependencies"), this);
cmd = ActionManager::registerAction(dd->m_cleanActionContextMenu, Constants::CLEANCM, projecTreeContext); cmd = ActionManager::registerAction(dd->m_cleanActionContextMenu, Constants::CLEANCM, projecTreeContext);
cmd->setAttribute(Command::CA_UpdateText); cmd->setAttribute(Command::CA_UpdateText);
mprojectContextMenu->addAction(cmd, Constants::G_PROJECT_REBUILD); mprojectContextMenu->addAction(cmd, Constants::G_PROJECT_REBUILD);
@@ -1151,6 +1175,8 @@ bool ProjectExplorerPlugin::initialize(const QStringList &arguments, QString *er
dd, &ProjectExplorerPluginPrivate::handleBuildProject); dd, &ProjectExplorerPluginPrivate::handleBuildProject);
connect(dd->m_buildActionContextMenu, &QAction::triggered, connect(dd->m_buildActionContextMenu, &QAction::triggered,
dd, &ProjectExplorerPluginPrivate::buildProjectContextMenu); dd, &ProjectExplorerPluginPrivate::buildProjectContextMenu);
connect(dd->m_buildDependenciesActionContextMenu, &QAction::triggered,
dd, &ProjectExplorerPluginPrivate::buildProjectDependenciesContextMenu);
connect(dd->m_buildSessionAction, &QAction::triggered, connect(dd->m_buildSessionAction, &QAction::triggered,
dd, &ProjectExplorerPluginPrivate::buildSession); dd, &ProjectExplorerPluginPrivate::buildSession);
connect(dd->m_rebuildProjectOnlyAction, &QAction::triggered, connect(dd->m_rebuildProjectOnlyAction, &QAction::triggered,
@@ -1159,6 +1185,8 @@ bool ProjectExplorerPlugin::initialize(const QStringList &arguments, QString *er
dd, &ProjectExplorerPluginPrivate::rebuildProject); dd, &ProjectExplorerPluginPrivate::rebuildProject);
connect(dd->m_rebuildActionContextMenu, &QAction::triggered, connect(dd->m_rebuildActionContextMenu, &QAction::triggered,
dd, &ProjectExplorerPluginPrivate::rebuildProjectContextMenu); dd, &ProjectExplorerPluginPrivate::rebuildProjectContextMenu);
connect(dd->m_rebuildDependenciesActionContextMenu, &QAction::triggered,
dd, &ProjectExplorerPluginPrivate::rebuildProjectDependenciesContextMenu);
connect(dd->m_rebuildSessionAction, &QAction::triggered, connect(dd->m_rebuildSessionAction, &QAction::triggered,
dd, &ProjectExplorerPluginPrivate::rebuildSession); dd, &ProjectExplorerPluginPrivate::rebuildSession);
connect(dd->m_deployProjectOnlyAction, &QAction::triggered, connect(dd->m_deployProjectOnlyAction, &QAction::triggered,
@@ -1175,6 +1203,8 @@ bool ProjectExplorerPlugin::initialize(const QStringList &arguments, QString *er
dd, &ProjectExplorerPluginPrivate::cleanProject); dd, &ProjectExplorerPluginPrivate::cleanProject);
connect(dd->m_cleanActionContextMenu, &QAction::triggered, connect(dd->m_cleanActionContextMenu, &QAction::triggered,
dd, &ProjectExplorerPluginPrivate::cleanProjectContextMenu); dd, &ProjectExplorerPluginPrivate::cleanProjectContextMenu);
connect(dd->m_cleanDependenciesActionContextMenu, &QAction::triggered,
dd, &ProjectExplorerPluginPrivate::cleanProjectDependenciesContextMenu);
connect(dd->m_cleanSessionAction, &QAction::triggered, connect(dd->m_cleanSessionAction, &QAction::triggered,
dd, &ProjectExplorerPluginPrivate::cleanSession); dd, &ProjectExplorerPluginPrivate::cleanSession);
connect(dd->m_runAction, &QAction::triggered, connect(dd->m_runAction, &QAction::triggered,
@@ -2110,19 +2140,23 @@ void ProjectExplorerPluginPrivate::updateActions()
bool hasDependencies = SessionManager::projectOrder(currentProject).size() > 1; bool hasDependencies = SessionManager::projectOrder(currentProject).size() > 1;
if (hasDependencies) { if (hasDependencies) {
m_buildActionContextMenu->setText(tr("Build Without Dependencies")); m_buildActionContextMenu->setVisible(true);
m_rebuildActionContextMenu->setText(tr("Rebuild Without Dependencies")); m_rebuildActionContextMenu->setVisible(true);
m_cleanActionContextMenu->setText(tr("Clean Without Dependencies")); m_cleanActionContextMenu->setVisible(true);
} else { } else {
m_buildActionContextMenu->setText(tr("Build")); m_buildActionContextMenu->setVisible(false);
m_rebuildActionContextMenu->setText(tr("Rebuild")); m_rebuildActionContextMenu->setVisible(false);
m_cleanActionContextMenu->setText(tr("Clean")); m_cleanActionContextMenu->setVisible(false);
} }
m_buildActionContextMenu->setEnabled(buildActionContextState.first); m_buildActionContextMenu->setEnabled(buildActionContextState.first);
m_rebuildActionContextMenu->setEnabled(buildActionContextState.first); m_rebuildActionContextMenu->setEnabled(buildActionContextState.first);
m_cleanActionContextMenu->setEnabled(buildActionContextState.first); m_cleanActionContextMenu->setEnabled(buildActionContextState.first);
m_buildDependenciesActionContextMenu->setEnabled(buildActionContextState.first);
m_rebuildDependenciesActionContextMenu->setEnabled(buildActionContextState.first);
m_cleanDependenciesActionContextMenu->setEnabled(buildActionContextState.first);
m_buildActionContextMenu->setToolTip(buildActionState.second); m_buildActionContextMenu->setToolTip(buildActionState.second);
m_rebuildActionContextMenu->setToolTip(buildActionState.second); m_rebuildActionContextMenu->setToolTip(buildActionState.second);
m_cleanActionContextMenu->setToolTip(buildActionState.second); m_cleanActionContextMenu->setToolTip(buildActionState.second);
@@ -2292,6 +2326,12 @@ void ProjectExplorerPluginPrivate::buildProjectContextMenu()
QList<Id>() << Id(Constants::BUILDSTEPS_BUILD)); QList<Id>() << Id(Constants::BUILDSTEPS_BUILD));
} }
void ProjectExplorerPluginPrivate::buildProjectDependenciesContextMenu()
{
queue(SessionManager::projectOrder(ProjectTree::currentProject()),
QList<Id>() << Id(Constants::BUILDSTEPS_BUILD));
}
void ProjectExplorerPluginPrivate::buildSession() void ProjectExplorerPluginPrivate::buildSession()
{ {
queue(SessionManager::projectOrder(), queue(SessionManager::projectOrder(),
@@ -2316,6 +2356,12 @@ void ProjectExplorerPluginPrivate::rebuildProjectContextMenu()
QList<Id>() << Id(Constants::BUILDSTEPS_CLEAN) << Id(Constants::BUILDSTEPS_BUILD)); QList<Id>() << Id(Constants::BUILDSTEPS_CLEAN) << Id(Constants::BUILDSTEPS_BUILD));
} }
void ProjectExplorerPluginPrivate::rebuildProjectDependenciesContextMenu()
{
queue(SessionManager::projectOrder(ProjectTree::currentProject()),
QList<Id>() << Id(Constants::BUILDSTEPS_CLEAN) << Id(Constants::BUILDSTEPS_BUILD));
}
void ProjectExplorerPluginPrivate::rebuildSession() void ProjectExplorerPluginPrivate::rebuildSession()
{ {
queue(SessionManager::projectOrder(), queue(SessionManager::projectOrder(),
@@ -2360,6 +2406,12 @@ void ProjectExplorerPluginPrivate::cleanProjectContextMenu()
QList<Id>() << Id(Constants::BUILDSTEPS_CLEAN)); QList<Id>() << Id(Constants::BUILDSTEPS_CLEAN));
} }
void ProjectExplorerPluginPrivate::cleanProjectDependenciesContextMenu()
{
queue(SessionManager::projectOrder(ProjectTree::currentProject()),
QList<Id>() << Id(Constants::BUILDSTEPS_CLEAN));
}
void ProjectExplorerPluginPrivate::cleanSession() void ProjectExplorerPluginPrivate::cleanSession()
{ {
queue(SessionManager::projectOrder(), queue(SessionManager::projectOrder(),

View File

@@ -50,10 +50,12 @@ const char CLEARSESSION[] = "ProjectExplorer.ClearSession";
const char BUILDPROJECTONLY[] = "ProjectExplorer.BuildProjectOnly"; const char BUILDPROJECTONLY[] = "ProjectExplorer.BuildProjectOnly";
const char BUILD[] = "ProjectExplorer.Build"; const char BUILD[] = "ProjectExplorer.Build";
const char BUILDCM[] = "ProjectExplorer.BuildCM"; const char BUILDCM[] = "ProjectExplorer.BuildCM";
const char BUILDDEPENDCM[] = "ProjectExplorer.BuildDependenciesCM";
const char BUILDSESSION[] = "ProjectExplorer.BuildSession"; const char BUILDSESSION[] = "ProjectExplorer.BuildSession";
const char REBUILDPROJECTONLY[] = "ProjectExplorer.RebuildProjectOnly"; const char REBUILDPROJECTONLY[] = "ProjectExplorer.RebuildProjectOnly";
const char REBUILD[] = "ProjectExplorer.Rebuild"; const char REBUILD[] = "ProjectExplorer.Rebuild";
const char REBUILDCM[] = "ProjectExplorer.RebuildCM"; const char REBUILDCM[] = "ProjectExplorer.RebuildCM";
const char REBUILDDEPENDCM[] = "ProjectExplorer.RebuildDependenciesCM";
const char REBUILDSESSION[] = "ProjectExplorer.RebuildSession"; const char REBUILDSESSION[] = "ProjectExplorer.RebuildSession";
const char DEPLOYPROJECTONLY[] = "ProjectExplorer.DeployProjectOnly"; const char DEPLOYPROJECTONLY[] = "ProjectExplorer.DeployProjectOnly";
const char DEPLOY[] = "ProjectExplorer.Deploy"; const char DEPLOY[] = "ProjectExplorer.Deploy";
@@ -63,6 +65,7 @@ const char PUBLISH[] = "ProjectExplorer.Publish";
const char CLEANPROJECTONLY[] = "ProjectExplorer.CleanProjectOnly"; const char CLEANPROJECTONLY[] = "ProjectExplorer.CleanProjectOnly";
const char CLEAN[] = "ProjectExplorer.Clean"; const char CLEAN[] = "ProjectExplorer.Clean";
const char CLEANCM[] = "ProjectExplorer.CleanCM"; const char CLEANCM[] = "ProjectExplorer.CleanCM";
const char CLEANDEPENDCM[] = "ProjectExplorer.CleanDependenciesCM";
const char CLEANSESSION[] = "ProjectExplorer.CleanSession"; const char CLEANSESSION[] = "ProjectExplorer.CleanSession";
const char CANCELBUILD[] = "ProjectExplorer.CancelBuild"; const char CANCELBUILD[] = "ProjectExplorer.CancelBuild";
const char RUN[] = "ProjectExplorer.Run"; const char RUN[] = "ProjectExplorer.Run";