From 063c4ff670247051ab60a9b360db99e0c07c2e4b Mon Sep 17 00:00:00 2001 From: dt Date: Thu, 20 Jan 2011 18:05:58 +0100 Subject: [PATCH] Add "Run" to projectexplorer context menu Task-Nr: QTCREATORBUG-2166 --- .../cmakeprojectmanager/cmakeprojectnodes.cpp | 6 ++ .../cmakeprojectmanager/cmakeprojectnodes.h | 1 + .../genericprojectmanager/genericprojectnodes.cpp | 6 ++ .../genericprojectmanager/genericprojectnodes.h | 1 + src/plugins/projectexplorer/projectexplorer.cpp | 66 +++++++++++++++++++--- src/plugins/projectexplorer/projectexplorer.h | 3 +- .../projectexplorer/projectexplorerconstants.h | 2 + src/plugins/projectexplorer/projectnodes.h | 8 ++- src/plugins/qmlprojectmanager/qmlprojectnodes.cpp | 6 ++ src/plugins/qmlprojectmanager/qmlprojectnodes.h | 1 + .../qt-desktop/qt4desktoptarget.cpp | 10 ++++ .../qt-desktop/qt4desktoptarget.h | 1 + .../qt-desktop/qt4runconfiguration.h | 1 + .../qt-desktop/qt4simulatortarget.cpp | 10 ++++ .../qt-desktop/qt4simulatortarget.h | 1 + .../qt4projectmanager/qt-maemo/qt4maemotarget.cpp | 10 ++++ .../qt4projectmanager/qt-maemo/qt4maemotarget.h | 1 + .../qt4projectmanager/qt-s60/qt4symbiantarget.cpp | 17 ++++++ .../qt4projectmanager/qt-s60/qt4symbiantarget.h | 1 + src/plugins/qt4projectmanager/qt4nodes.cpp | 8 +++ src/plugins/qt4projectmanager/qt4nodes.h | 3 + .../qt4projectmanager/qt4projectmanagerconstants.h | 2 + .../qt4projectmanager/qt4projectmanagerplugin.cpp | 1 + src/plugins/qt4projectmanager/qt4target.h | 4 ++ 24 files changed, 161 insertions(+), 9 deletions(-) diff --git a/src/plugins/cmakeprojectmanager/cmakeprojectnodes.cpp b/src/plugins/cmakeprojectmanager/cmakeprojectnodes.cpp index c84dc7bc84..f706f903b7 100644 --- a/src/plugins/cmakeprojectmanager/cmakeprojectnodes.cpp +++ b/src/plugins/cmakeprojectmanager/cmakeprojectnodes.cpp @@ -101,3 +101,9 @@ bool CMakeProjectNode::renameFile(const ProjectExplorer::FileType fileType, cons Q_UNUSED(newFilePath) return false; } + +QList CMakeProjectNode::runConfigurationsFor(Node *node) +{ + Q_UNUSED(node) + return QList(); +} diff --git a/src/plugins/cmakeprojectmanager/cmakeprojectnodes.h b/src/plugins/cmakeprojectmanager/cmakeprojectnodes.h index 79868eb342..aea2c88510 100644 --- a/src/plugins/cmakeprojectmanager/cmakeprojectnodes.h +++ b/src/plugins/cmakeprojectmanager/cmakeprojectnodes.h @@ -63,6 +63,7 @@ public: virtual bool renameFile(const ProjectExplorer::FileType fileType, const QString &filePath, const QString &newFilePath); + virtual QList runConfigurationsFor(Node *node); }; } // namespace Internal diff --git a/src/plugins/genericprojectmanager/genericprojectnodes.cpp b/src/plugins/genericprojectmanager/genericprojectnodes.cpp index 5ea726cd95..022df7b7e1 100644 --- a/src/plugins/genericprojectmanager/genericprojectnodes.cpp +++ b/src/plugins/genericprojectmanager/genericprojectnodes.cpp @@ -235,3 +235,9 @@ bool GenericProjectNode::renameFile(const ProjectExplorer::FileType fileType, Q_UNUSED(newFilePath) return false; } + +QList GenericProjectNode::runConfigurationsFor(Node *node) +{ + Q_UNUSED(node) + return QList(); +} diff --git a/src/plugins/genericprojectmanager/genericprojectnodes.h b/src/plugins/genericprojectmanager/genericprojectnodes.h index 3a22e0c50a..3f9e74a6fe 100644 --- a/src/plugins/genericprojectmanager/genericprojectnodes.h +++ b/src/plugins/genericprojectmanager/genericprojectnodes.h @@ -80,6 +80,7 @@ public: const QString &filePath, const QString &newFilePath); + virtual QList runConfigurationsFor(Node *node); void refresh(); diff --git a/src/plugins/projectexplorer/projectexplorer.cpp b/src/plugins/projectexplorer/projectexplorer.cpp index 1d01d0c284..a8bb8a5d35 100644 --- a/src/plugins/projectexplorer/projectexplorer.cpp +++ b/src/plugins/projectexplorer/projectexplorer.cpp @@ -180,6 +180,7 @@ struct ProjectExplorerPluginPrivate { QAction *m_setStartupProjectAction; QAction *m_projectSelectorAction; QAction *m_projectSelectorActionMenu; + QAction *m_runSubProject; Internal::ProjectWindow *m_proWindow; SessionManager *m_session; @@ -428,10 +429,19 @@ bool ProjectExplorerPlugin::initialize(const QStringList &arguments, QString *er msubProjectContextMenu->appendGroup(Constants::G_PROJECT_FIRST); msubProjectContextMenu->appendGroup(Constants::G_PROJECT_BUILD); + msubProjectContextMenu->appendGroup(Constants::G_PROJECT_RUN); msubProjectContextMenu->appendGroup(Constants::G_PROJECT_FILES); msubProjectContextMenu->appendGroup(Constants::G_PROJECT_OTHER); msubProjectContextMenu->appendGroup(Constants::G_PROJECT_CONFIG); + Core::ActionContainer *runMenu = Core::ICore::instance()->actionManager()->createMenu(Constants::RUNMENUCONTEXTMENU); + runMenu->setOnAllDisabledBehavior(Core::ActionContainer::Hide); + QIcon runIcon(Constants::ICON_RUN); + runIcon.addFile(Constants::ICON_RUN_SMALL); + runMenu->menu()->setIcon(runIcon); + runMenu->menu()->setTitle("Run"); + msubProjectContextMenu->addMenu(runMenu, ProjectExplorer::Constants::G_PROJECT_RUN); + mfolderContextMenu->appendGroup(Constants::G_FOLDER_FILES); mfolderContextMenu->appendGroup(Constants::G_FOLDER_OTHER); mfolderContextMenu->appendGroup(Constants::G_FOLDER_CONFIG); @@ -700,8 +710,6 @@ bool ProjectExplorerPlugin::initialize(const QStringList &arguments, QString *er cmd = am->registerAction(d->m_cleanProjectOnlyAction, Constants::CLEANPROJECTONLY, globalcontext); // run action - QIcon runIcon(Constants::ICON_RUN); - runIcon.addFile(Constants::ICON_RUN_SMALL); d->m_runAction = new QAction(runIcon, tr("Run"), this); cmd = am->registerAction(d->m_runAction, Constants::RUN, globalcontext); cmd->setAttribute(Core::Command::CA_UpdateText); @@ -714,6 +722,7 @@ bool ProjectExplorerPlugin::initialize(const QStringList &arguments, QString *er d->m_runActionContextMenu = new QAction(runIcon, tr("Run"), this); cmd = am->registerAction(d->m_runActionContextMenu, Constants::RUNCONTEXTMENU, projecTreeContext); mprojectContextMenu->addAction(cmd, Constants::G_PROJECT_RUN); + msubProjectContextMenu->addAction(cmd, Constants::G_PROJECT_RUN); // cancel build action d->m_cancelBuildAction = new QAction(tr("Cancel Build"), this); @@ -1714,7 +1723,18 @@ void ProjectExplorerPlugin::runProject() void ProjectExplorerPlugin::runProjectContextMenu() { - runProject(d->m_currentProject, ProjectExplorer::Constants::RUNMODE); + ProjectNode *projectNode = qobject_cast(d->m_currentNode); + if (projectNode == d->m_currentProject->rootProjectNode() || !projectNode) { + runProject(d->m_currentProject, ProjectExplorer::Constants::RUNMODE); + } else { + QAction *act = qobject_cast(sender()); + if (!act) + return; + RunConfiguration *rc = act->data().value(); + if (!rc) + return; + runRunConfiguration(rc, ProjectExplorer::Constants::RUNMODE); + } } bool ProjectExplorerPlugin::hasBuildSettings(Project *pro) @@ -1770,12 +1790,17 @@ bool ProjectExplorerPlugin::hasDeploySettings(Project *pro) return false; } -void ProjectExplorerPlugin::runProject(Project *pro, QString mode) +void ProjectExplorerPlugin::runProject(Project *pro, const QString &mode) { if (!pro) return; - if (!pro->activeTarget()->activeRunConfiguration()->isEnabled()) + runRunConfiguration(pro->activeTarget()->activeRunConfiguration(), mode); +} + +void ProjectExplorerPlugin::runRunConfiguration(ProjectExplorer::RunConfiguration *rc, const QString &mode) +{ + if (!rc->isEnabled()) return; QStringList stepIds; @@ -1784,6 +1809,8 @@ void ProjectExplorerPlugin::runProject(Project *pro, QString mode) stepIds << Constants::BUILDSTEPS_BUILD; stepIds << Constants::BUILDSTEPS_DEPLOY; } + + Project *pro = rc->target()->project(); const QList &projects = d->m_session->projectOrder(pro); int queueCount = queue(projects, stepIds); @@ -1793,9 +1820,9 @@ void ProjectExplorerPlugin::runProject(Project *pro, QString mode) if (queueCount > 0) { // delay running till after our queued steps were processed d->m_runMode = mode; - d->m_delayedRunConfiguration = pro->activeTarget()->activeRunConfiguration(); + d->m_delayedRunConfiguration = rc; } else { - executeRunConfiguration(pro->activeTarget()->activeRunConfiguration(), mode); + executeRunConfiguration(rc, mode); } emit updateRunActions(); } @@ -2072,12 +2099,37 @@ void ProjectExplorerPlugin::updateContextMenuActions() d->m_addExistingFilesAction->setVisible(true); d->m_removeFileAction->setVisible(true); d->m_deleteFileAction->setVisible(true); + d->m_runActionContextMenu->setVisible(false); + + Core::ActionContainer *runMenu = Core::ICore::instance()->actionManager()->actionContainer(Constants::RUNMENUCONTEXTMENU); + runMenu->menu()->clear(); if (d->m_currentNode && d->m_currentNode->projectNode()) { QList actions = d->m_currentNode->projectNode()->supportedActions(d->m_currentNode); + if (ProjectNode *pn = qobject_cast(d->m_currentNode)) { + if (pn == d->m_currentProject->rootProjectNode()) { + d->m_runActionContextMenu->setVisible(true); + } else { + QList runConfigs = pn->runConfigurationsFor(pn); + if (runConfigs.count() == 1) { + d->m_runActionContextMenu->setVisible(true); + d->m_runActionContextMenu->setData(QVariant::fromValue(runConfigs.first())); + } else if (runConfigs.count() > 1) { + foreach (RunConfiguration *rc, runConfigs) { + QAction *act = new QAction(runMenu->menu()); + act->setData(QVariant::fromValue(rc)); + act->setText(QString("Run %1").arg(rc->displayName())); + runMenu->menu()->addAction(act); + connect(act, SIGNAL(triggered()), + this, SLOT(runProjectContextMenu())); + } + } + } + } if (qobject_cast(d->m_currentNode)) { + // Also handles ProjectNode d->m_addNewFileAction->setEnabled(actions.contains(ProjectNode::AddNewFile)); d->m_addNewSubprojectAction->setEnabled(d->m_currentNode->nodeType() == ProjectNodeType && actions.contains(ProjectNode::AddSubProject)); diff --git a/src/plugins/projectexplorer/projectexplorer.h b/src/plugins/projectexplorer/projectexplorer.h index 61926b4f98..3621e9712a 100644 --- a/src/plugins/projectexplorer/projectexplorer.h +++ b/src/plugins/projectexplorer/projectexplorer.h @@ -117,7 +117,8 @@ public: bool coreAboutToClose(); bool canRun(Project *pro, const QString &runMode); - void runProject(Project *pro, QString mode); + void runProject(Project *pro, const QString &mode); + void runRunConfiguration(ProjectExplorer::RunConfiguration *rc, const QString &mode); signals: void aboutToShowContextMenu(ProjectExplorer::Project *project, diff --git a/src/plugins/projectexplorer/projectexplorerconstants.h b/src/plugins/projectexplorer/projectexplorerconstants.h index bfca377b87..005f029c24 100644 --- a/src/plugins/projectexplorer/projectexplorerconstants.h +++ b/src/plugins/projectexplorer/projectexplorerconstants.h @@ -162,6 +162,8 @@ const char * const G_FILE_OPEN = "ProjectFile.Group.Open"; const char * const G_FILE_OTHER = "ProjectFile.Group.Other"; const char * const G_FILE_CONFIG = "ProjectFile.Group.Config"; +const char * const RUNMENUCONTEXTMENU = "Project.RunMenu"; + // file id const char * const FILE_FACTORY_ID = "ProjectExplorer.FileFactoryId"; diff --git a/src/plugins/projectexplorer/projectnodes.h b/src/plugins/projectexplorer/projectnodes.h index ad9005e2fc..6acba2ec08 100644 --- a/src/plugins/projectexplorer/projectnodes.h +++ b/src/plugins/projectexplorer/projectnodes.h @@ -38,8 +38,10 @@ #include #include +#include "runconfiguration.h" #include "projectexplorer_export.h" + QT_BEGIN_NAMESPACE class QFileInfo; QT_END_NAMESPACE @@ -174,7 +176,8 @@ public: // that a file was deleted // DeleteFile is a define on windows... EraseFile, - Rename + Rename, + HasSubProjectRunConfigurations }; // all subFolders that are projects @@ -209,6 +212,9 @@ public: // by default returns false virtual bool deploysFolder(const QString &folder) const; + // TODO node parameter not really needed + virtual QList runConfigurationsFor(Node *node) = 0; + QList watchers() const; void registerWatcher(NodesWatcher *watcher); diff --git a/src/plugins/qmlprojectmanager/qmlprojectnodes.cpp b/src/plugins/qmlprojectmanager/qmlprojectnodes.cpp index da40fca97a..7eb79d5cd0 100644 --- a/src/plugins/qmlprojectmanager/qmlprojectnodes.cpp +++ b/src/plugins/qmlprojectmanager/qmlprojectnodes.cpp @@ -228,5 +228,11 @@ bool QmlProjectNode::renameFile(const ProjectExplorer::FileType /*fileType*/, return true; } +QList QmlProjectNode::runConfigurationsFor(Node *node) +{ + Q_UNUSED(node) + return QList(); +} + } // namespace Internal } // namespace QmlProjectManager diff --git a/src/plugins/qmlprojectmanager/qmlprojectnodes.h b/src/plugins/qmlprojectmanager/qmlprojectnodes.h index 52d3ef005b..b371e0683e 100644 --- a/src/plugins/qmlprojectmanager/qmlprojectnodes.h +++ b/src/plugins/qmlprojectmanager/qmlprojectnodes.h @@ -81,6 +81,7 @@ public: virtual bool renameFile(const ProjectExplorer::FileType fileType, const QString &filePath, const QString &newFilePath); + virtual QList runConfigurationsFor(Node *node); void refresh(); diff --git a/src/plugins/qt4projectmanager/qt-desktop/qt4desktoptarget.cpp b/src/plugins/qt4projectmanager/qt-desktop/qt4desktoptarget.cpp index f4b8e47a8c..af3f92c587 100644 --- a/src/plugins/qt4projectmanager/qt-desktop/qt4desktoptarget.cpp +++ b/src/plugins/qt4projectmanager/qt-desktop/qt4desktoptarget.cpp @@ -90,3 +90,13 @@ void Qt4DesktopTarget::createApplicationProFiles() addRunConfiguration(new ProjectExplorer::CustomExecutableRunConfiguration(this)); } } + +QList Qt4DesktopTarget::runConfigurationsForNode(ProjectExplorer::Node *n) +{ + QList result; + foreach (ProjectExplorer::RunConfiguration *rc, runConfigurations()) + if (Qt4RunConfiguration *qt4c = qobject_cast(rc)) + if (qt4c->proFilePath() == n->path()) + result << rc; + return result; +} diff --git a/src/plugins/qt4projectmanager/qt-desktop/qt4desktoptarget.h b/src/plugins/qt4projectmanager/qt-desktop/qt4desktoptarget.h index 68ef63c35f..00ad5a5dbe 100644 --- a/src/plugins/qt4projectmanager/qt-desktop/qt4desktoptarget.h +++ b/src/plugins/qt4projectmanager/qt-desktop/qt4desktoptarget.h @@ -50,6 +50,7 @@ public: ProjectExplorer::DeployConfigurationFactory *deployConfigurationFactory() const; void createApplicationProFiles(); + QList runConfigurationsForNode(ProjectExplorer::Node *n); static QString defaultDisplayName(); diff --git a/src/plugins/qt4projectmanager/qt-desktop/qt4runconfiguration.h b/src/plugins/qt4projectmanager/qt-desktop/qt4runconfiguration.h index 182521bfa7..1d4afd4841 100644 --- a/src/plugins/qt4projectmanager/qt-desktop/qt4runconfiguration.h +++ b/src/plugins/qt4projectmanager/qt-desktop/qt4runconfiguration.h @@ -40,6 +40,7 @@ #include #include +#include QT_BEGIN_NAMESPACE class QCheckBox; diff --git a/src/plugins/qt4projectmanager/qt-desktop/qt4simulatortarget.cpp b/src/plugins/qt4projectmanager/qt-desktop/qt4simulatortarget.cpp index c15df4ccb4..9cff547635 100644 --- a/src/plugins/qt4projectmanager/qt-desktop/qt4simulatortarget.cpp +++ b/src/plugins/qt4projectmanager/qt-desktop/qt4simulatortarget.cpp @@ -94,3 +94,13 @@ void Qt4SimulatorTarget::createApplicationProFiles() addRunConfiguration(new ProjectExplorer::CustomExecutableRunConfiguration(this)); } } + +QList Qt4SimulatorTarget::runConfigurationsForNode(ProjectExplorer::Node *n) +{ + QList result; + foreach (ProjectExplorer::RunConfiguration *rc, runConfigurations()) + if (Qt4RunConfiguration *qt4c = qobject_cast(rc)) + if (qt4c->proFilePath() == n->path()) + result << rc; + return result; +} diff --git a/src/plugins/qt4projectmanager/qt-desktop/qt4simulatortarget.h b/src/plugins/qt4projectmanager/qt-desktop/qt4simulatortarget.h index c9b6858a7a..83dff2a4c8 100644 --- a/src/plugins/qt4projectmanager/qt-desktop/qt4simulatortarget.h +++ b/src/plugins/qt4projectmanager/qt-desktop/qt4simulatortarget.h @@ -50,6 +50,7 @@ public: ProjectExplorer::DeployConfigurationFactory *deployConfigurationFactory() const; void createApplicationProFiles(); + QList runConfigurationsForNode(ProjectExplorer::Node *n); static QString defaultDisplayName(); diff --git a/src/plugins/qt4projectmanager/qt-maemo/qt4maemotarget.cpp b/src/plugins/qt4projectmanager/qt-maemo/qt4maemotarget.cpp index 946b44528d..09a4f269bd 100644 --- a/src/plugins/qt4projectmanager/qt-maemo/qt4maemotarget.cpp +++ b/src/plugins/qt4projectmanager/qt-maemo/qt4maemotarget.cpp @@ -116,6 +116,16 @@ void AbstractQt4MaemoTarget::createApplicationProFiles() } } +QList AbstractQt4MaemoTarget::runConfigurationsForNode(ProjectExplorer::Node *n) +{ + QList result; + foreach (ProjectExplorer::RunConfiguration *rc, runConfigurations()) + if (MaemoRunConfiguration *mrc = qobject_cast(rc)) + if (mrc->proFilePath() == n->path()) + result << rc; + return result; +} + QString AbstractQt4MaemoTarget::projectVersion(QString *error) const { QSharedPointer changeLog = openFile(changeLogFilePath(), diff --git a/src/plugins/qt4projectmanager/qt-maemo/qt4maemotarget.h b/src/plugins/qt4projectmanager/qt-maemo/qt4maemotarget.h index 4ce6f3b60f..af5a382574 100644 --- a/src/plugins/qt4projectmanager/qt-maemo/qt4maemotarget.h +++ b/src/plugins/qt4projectmanager/qt-maemo/qt4maemotarget.h @@ -56,6 +56,7 @@ public: ProjectExplorer::DeployConfigurationFactory *deployConfigurationFactory() const; QString defaultBuildDirectory() const; void createApplicationProFiles(); + QList runConfigurationsForNode(ProjectExplorer::Node *n); QString debianDirPath() const; QStringList debianFiles() const; diff --git a/src/plugins/qt4projectmanager/qt-s60/qt4symbiantarget.cpp b/src/plugins/qt4projectmanager/qt-s60/qt4symbiantarget.cpp index 2687dd12a2..a66d07f5b5 100644 --- a/src/plugins/qt4projectmanager/qt-s60/qt4symbiantarget.cpp +++ b/src/plugins/qt4projectmanager/qt-s60/qt4symbiantarget.cpp @@ -157,6 +157,23 @@ void Qt4SymbianTarget::createApplicationProFiles() } } +QList Qt4SymbianTarget::runConfigurationsForNode(ProjectExplorer::Node *n) +{ + QList result; + foreach (ProjectExplorer::RunConfiguration *rc, runConfigurations()) { + if (id() == QLatin1String(Constants::S60_EMULATOR_TARGET_ID)) { + if (S60EmulatorRunConfiguration * s60rc = qobject_cast(rc)) + if (s60rc->proFilePath() == n->path()) + result << rc; + } else if (id() == QLatin1String(Constants::S60_DEVICE_TARGET_ID)) { + if (S60DeviceRunConfiguration *s60rc = qobject_cast(rc)) + if (s60rc->proFilePath() == n->path()) + result << rc; + } + } + return result; +} + bool Qt4SymbianTarget::isSymbianConnectionAvailable(QString &tooltipText) { const S60DeployConfiguration *s60DeployConf = qobject_cast(activeDeployConfiguration()); diff --git a/src/plugins/qt4projectmanager/qt-s60/qt4symbiantarget.h b/src/plugins/qt4projectmanager/qt-s60/qt4symbiantarget.h index e4a2c9225b..cf88165289 100644 --- a/src/plugins/qt4projectmanager/qt-s60/qt4symbiantarget.h +++ b/src/plugins/qt4projectmanager/qt-s60/qt4symbiantarget.h @@ -56,6 +56,7 @@ public: QString defaultBuildDirectory() const; void createApplicationProFiles(); + virtual QList runConfigurationsForNode(ProjectExplorer::Node *n); static QString defaultDisplayName(const QString &id); static QIcon iconForId(const QString &id); diff --git a/src/plugins/qt4projectmanager/qt4nodes.cpp b/src/plugins/qt4projectmanager/qt4nodes.cpp index a07f7c0003..af9aff2505 100644 --- a/src/plugins/qt4projectmanager/qt4nodes.cpp +++ b/src/plugins/qt4projectmanager/qt4nodes.cpp @@ -760,6 +760,11 @@ bool Qt4PriFileNode::deploysFolder(const QString &folder) const return false; } +QList Qt4PriFileNode::runConfigurationsFor(Node *node) +{ + return m_project->activeTarget()->runConfigurationsForNode(node); +} + QList Qt4PriFileNode::supportedActions(Node *node) const { QList actions; @@ -811,6 +816,9 @@ QList Qt4PriFileNode::supportedActions(Node *node) c if (fileNode && fileNode->fileType() != ProjectExplorer::ProjectFileType) actions << Rename; + if (!m_project->activeTarget()->runConfigurationsForNode(node).isEmpty()) + actions << HasSubProjectRunConfigurations; + return actions; } diff --git a/src/plugins/qt4projectmanager/qt4nodes.h b/src/plugins/qt4projectmanager/qt4nodes.h index f760a9df47..fe73c35c43 100644 --- a/src/plugins/qt4projectmanager/qt4nodes.h +++ b/src/plugins/qt4projectmanager/qt4nodes.h @@ -37,6 +37,7 @@ #include #include #include +#include #include #include @@ -164,6 +165,7 @@ public: void folderChanged(const QString &changedFolder); bool deploysFolder(const QString &folder) const; + QList runConfigurationsFor(Node *node); protected: void clear(); @@ -310,6 +312,7 @@ public: bool validParse() const; bool hasBuildTargets(Qt4ProjectType projectType) const; + public slots: void asyncUpdate(); diff --git a/src/plugins/qt4projectmanager/qt4projectmanagerconstants.h b/src/plugins/qt4projectmanager/qt4projectmanagerconstants.h index d22549acdd..8a39b1fd3f 100644 --- a/src/plugins/qt4projectmanager/qt4projectmanagerconstants.h +++ b/src/plugins/qt4projectmanager/qt4projectmanagerconstants.h @@ -68,6 +68,8 @@ const char * const RUNQMAKECONTEXTMENU = "Qt4Builder.RunQMakeContextMenu"; const char * const BUILDSUBDIR = "Qt4Builder.BuildSubDir"; const char * const REBUILDSUBDIR = "Qt4Builder.RebuildSubDir"; const char * const CLEANSUBDIR = "Qt4Builder.CleanSubDir"; +const char * const RUNSUBDIR = "Qt4Builder.RunSubDir"; +const char * const RUNMENUSUBDIR = "Qt4Builder.RunMenuSubDir"; const char * const ADDLIBRARY = "Qt4.AddLibrary"; const char * const JUMP_TO_FILE = "Qt4.JumpToFile"; const char * const SEPARATOR = "Qt4.Separator"; diff --git a/src/plugins/qt4projectmanager/qt4projectmanagerplugin.cpp b/src/plugins/qt4projectmanager/qt4projectmanagerplugin.cpp index 7ed77f57bf..50086391c1 100644 --- a/src/plugins/qt4projectmanager/qt4projectmanagerplugin.cpp +++ b/src/plugins/qt4projectmanager/qt4projectmanagerplugin.cpp @@ -85,6 +85,7 @@ #endif #include +#include using namespace Qt4ProjectManager::Internal; using namespace Qt4ProjectManager; diff --git a/src/plugins/qt4projectmanager/qt4target.h b/src/plugins/qt4projectmanager/qt4target.h index 926a8717a8..955621d602 100644 --- a/src/plugins/qt4projectmanager/qt4target.h +++ b/src/plugins/qt4projectmanager/qt4target.h @@ -36,7 +36,9 @@ #include "qt4buildconfiguration.h" #include "qtversionmanager.h" + #include +#include namespace Qt4ProjectManager { @@ -81,6 +83,8 @@ public: virtual QList filterToolChainTypes(const QList &candidates) const; virtual ProjectExplorer::ToolChainType preferredToolChainType(const QList &candidates) const; virtual QString defaultBuildDirectory() const; + + virtual QList runConfigurationsForNode(ProjectExplorer::Node *n) = 0; signals: void buildDirectoryInitialized(); /// emitted if the build configuration changed in a way that -- 2.11.0