diff options
author | Konstantin Tokarev <annulen@yandex.ru> | 2012-04-12 15:56:02 +0400 |
---|---|---|
committer | Daniel Teske <daniel.teske@nokia.com> | 2012-04-12 14:28:22 +0200 |
commit | 866cc421542e4ea746526e7a04f3795784db8b43 (patch) | |
tree | bf0b660567d8c8985843072398815635d7318bc3 /src/plugins/qt4projectmanager/qt4projectmanagerplugin.cpp | |
parent | 225938aab7baa93f67b501e693d0c058e0e08552 (diff) | |
download | qt-creator-866cc421542e4ea746526e7a04f3795784db8b43.tar.gz |
Added menu item for (re)building and cleaning of current subproject.
Change-Id: If1990cd6c4a8a6179ff93f535b5c9a7c116d69ec
Reviewed-by: Daniel Teske <daniel.teske@nokia.com>
Diffstat (limited to 'src/plugins/qt4projectmanager/qt4projectmanagerplugin.cpp')
-rw-r--r-- | src/plugins/qt4projectmanager/qt4projectmanagerplugin.cpp | 53 |
1 files changed, 48 insertions, 5 deletions
diff --git a/src/plugins/qt4projectmanager/qt4projectmanagerplugin.cpp b/src/plugins/qt4projectmanager/qt4projectmanagerplugin.cpp index 5386769104..9dd32c05f2 100644 --- a/src/plugins/qt4projectmanager/qt4projectmanagerplugin.cpp +++ b/src/plugins/qt4projectmanager/qt4projectmanagerplugin.cpp @@ -82,6 +82,7 @@ #include <texteditor/texteditoractionhandler.h> #include <texteditor/texteditorconstants.h> #include <texteditor/texteditorsettings.h> +#include <utils/parameteraction.h> #ifdef WITH_TESTS # include <QTest> @@ -203,7 +204,7 @@ bool Qt4ProjectManagerPlugin::initialize(const QStringList &arguments, QString * QIcon buildIcon = QIcon(QLatin1String(ProjectExplorer::Constants::ICON_BUILD)); buildIcon.addFile(QLatin1String(ProjectExplorer::Constants::ICON_BUILD_SMALL)); m_buildSubProjectContextMenu = new QAction(buildIcon, tr("Build"), this); - command = am->registerAction(m_buildSubProjectContextMenu, Constants::BUILDSUBDIR, projectContext); + command = am->registerAction(m_buildSubProjectContextMenu, Constants::BUILDSUBDIRCONTEXTMENU, projectContext); command->setAttribute(Core::Command::CA_Hide); msubproject->addAction(command, ProjectExplorer::Constants::G_PROJECT_BUILD); connect(m_buildSubProjectContextMenu, SIGNAL(triggered()), m_qt4ProjectManager, SLOT(buildSubDirContextMenu())); @@ -211,7 +212,7 @@ bool Qt4ProjectManagerPlugin::initialize(const QStringList &arguments, QString * QIcon rebuildIcon = QIcon(QLatin1String(ProjectExplorer::Constants::ICON_REBUILD)); rebuildIcon.addFile(QLatin1String(ProjectExplorer::Constants::ICON_REBUILD_SMALL)); m_rebuildSubProjectContextMenu = new QAction(rebuildIcon, tr("Rebuild"), this); - command = am->registerAction(m_rebuildSubProjectContextMenu, Constants::REBUILDSUBDIR, projectContext); + command = am->registerAction(m_rebuildSubProjectContextMenu, Constants::REBUILDSUBDIRCONTEXTMENU, projectContext); command->setAttribute(Core::Command::CA_Hide); msubproject->addAction(command, ProjectExplorer::Constants::G_PROJECT_BUILD); connect(m_rebuildSubProjectContextMenu, SIGNAL(triggered()), m_qt4ProjectManager, SLOT(rebuildSubDirContextMenu())); @@ -219,11 +220,35 @@ bool Qt4ProjectManagerPlugin::initialize(const QStringList &arguments, QString * QIcon cleanIcon = QIcon(QLatin1String(ProjectExplorer::Constants::ICON_CLEAN)); cleanIcon.addFile(QLatin1String(ProjectExplorer::Constants::ICON_CLEAN_SMALL)); m_cleanSubProjectContextMenu = new QAction(cleanIcon, tr("Clean"), this); - command = am->registerAction(m_cleanSubProjectContextMenu, Constants::CLEANSUBDIR, projectContext); + command = am->registerAction(m_cleanSubProjectContextMenu, Constants::CLEANSUBDIRCONTEXTMENU, projectContext); command->setAttribute(Core::Command::CA_Hide); msubproject->addAction(command, ProjectExplorer::Constants::G_PROJECT_BUILD); connect(m_cleanSubProjectContextMenu, SIGNAL(triggered()), m_qt4ProjectManager, SLOT(cleanSubDirContextMenu())); + m_buildSubProjectAction = new Utils::ParameterAction(tr("Build Subproject"), tr("Build Subproject \"%1\""), + Utils::ParameterAction::EnabledWithParameter, this); + command = am->registerAction(m_buildSubProjectAction, Constants::BUILDSUBDIR, projectContext); + command->setAttribute(Core::Command::CA_UpdateText); + command->setDescription(m_buildSubProjectAction->text()); + mbuild->addAction(command, ProjectExplorer::Constants::G_BUILD_PROJECT); + connect(m_buildSubProjectAction, SIGNAL(triggered()), m_qt4ProjectManager, SLOT(buildSubDirContextMenu())); + + m_rebuildSubProjectAction = new Utils::ParameterAction(tr("Rebuild Subproject"), tr("Rebuild Subproject \"%1\""), + Utils::ParameterAction::EnabledWithParameter, this); + command = am->registerAction(m_rebuildSubProjectAction, Constants::REBUILDSUBDIR, projectContext); + command->setAttribute(Core::Command::CA_UpdateText); + command->setDescription(m_rebuildSubProjectAction->text()); + mbuild->addAction(command, ProjectExplorer::Constants::G_BUILD_PROJECT); + connect(m_rebuildSubProjectAction, SIGNAL(triggered()), m_qt4ProjectManager, SLOT(rebuildSubDirContextMenu())); + + m_cleanSubProjectAction = new Utils::ParameterAction(tr("Clean Subproject"), tr("Clean Subproject \"%1\""), + Utils::ParameterAction::EnabledWithParameter, this); + command = am->registerAction(m_cleanSubProjectAction, Constants::CLEANSUBDIR, projectContext); + command->setAttribute(Core::Command::CA_UpdateText); + command->setDescription(m_cleanSubProjectAction->text()); + mbuild->addAction(command, ProjectExplorer::Constants::G_BUILD_PROJECT); + connect(m_cleanSubProjectAction, SIGNAL(triggered()), m_qt4ProjectManager, SLOT(cleanSubDirContextMenu())); + connect(m_projectExplorer, SIGNAL(aboutToShowContextMenu(ProjectExplorer::Project*,ProjectExplorer::Node*)), this, SLOT(updateContextMenu(ProjectExplorer::Project*,ProjectExplorer::Node*))); @@ -233,7 +258,7 @@ bool Qt4ProjectManagerPlugin::initialize(const QStringList &arguments, QString * connect(m_projectExplorer->session(), SIGNAL(startupProjectChanged(ProjectExplorer::Project*)), this, SLOT(startupProjectChanged())); connect(m_projectExplorer, SIGNAL(currentNodeChanged(ProjectExplorer::Node*,ProjectExplorer::Project*)), - this, SLOT(currentNodeChanged(ProjectExplorer::Node*))); + this, SLOT(currentNodeChanged(ProjectExplorer::Node*,ProjectExplorer::Project*))); Core::ActionContainer *contextMenu = am->createMenu(Qt4ProjectManager::Constants::M_CONTEXT); @@ -353,9 +378,27 @@ void Qt4ProjectManagerPlugin::updateRunQMakeAction() m_runQMakeAction->setEnabled(enable); } -void Qt4ProjectManagerPlugin::currentNodeChanged(ProjectExplorer::Node *node) +void Qt4ProjectManagerPlugin::currentNodeChanged(ProjectExplorer::Node *node, ProjectExplorer::Project *project) { m_addLibraryActionContextMenu->setEnabled(qobject_cast<Qt4ProFileNode *>(node)); + + m_qt4ProjectManager->setContextNode(node ? node->projectNode() : 0); + m_qt4ProjectManager->setContextProject(project); + + bool subProjectActionsVisible = node && (node->projectNode() != project->rootProjectNode()); + + QString subProjectName; + if (subProjectActionsVisible) + subProjectName = node->projectNode()->displayName(); + + m_buildSubProjectAction->setParameter(subProjectName); + m_rebuildSubProjectAction->setParameter(subProjectName); + m_cleanSubProjectAction->setParameter(subProjectName); + + m_buildSubProjectAction->setVisible(subProjectActionsVisible); + m_rebuildSubProjectAction->setVisible(subProjectActionsVisible); + m_cleanSubProjectAction->setVisible(subProjectActionsVisible); + } void Qt4ProjectManagerPlugin::buildStateChanged(ProjectExplorer::Project *pro) |