diff --git a/src/plugins/coreplugin/actionmanager/actionmanager.cpp b/src/plugins/coreplugin/actionmanager/actionmanager.cpp index 1287d117182..d0d97f22b28 100644 --- a/src/plugins/coreplugin/actionmanager/actionmanager.cpp +++ b/src/plugins/coreplugin/actionmanager/actionmanager.cpp @@ -9,11 +9,11 @@ #include #include +#include #include #include -#include #include #include #include @@ -75,7 +75,7 @@ class ActionBuilderPrivate { public: ActionBuilderPrivate(QObject *contextActionParent, const Id actionId) - : action(new QAction(contextActionParent)) + : action(new ParameterAction({}, {}, ParameterAction::AlwaysEnabled, contextActionParent)) , actionId(actionId) { command = ActionManager::createCommand(actionId); @@ -87,7 +87,7 @@ public: ActionManager::registerAction(action, actionId, context); } - QAction *action = nullptr; + ParameterAction *action = nullptr; Command *command = nullptr; Id actionId; @@ -213,6 +213,20 @@ void ActionBuilder::setMenuRole(QAction::MenuRole role) d->action->setMenuRole(role); } +void ActionBuilder::setParameterText(const QString ¶meterText, + const QString &emptyText, + EnablingMode mode) +{ + QTC_CHECK(parameterText.contains("%1")); + QTC_CHECK(!emptyText.contains("%1")); + + d->action->setEmptyText(emptyText); + d->action->setParameterText(parameterText); + d->action->setEnablingMode(mode == AlwaysEnabled + ? ParameterAction::AlwaysEnabled + : ParameterAction::EnabledWithParameter); +} + Command *ActionBuilder::command() const { return d->command; @@ -228,6 +242,11 @@ QAction *ActionBuilder::contextAction() const return d->action; } +ParameterAction *ActionBuilder::contextParameterAction() const +{ + return d->action; +} + void ActionBuilder::bindContextAction(QAction **dest) { QTC_ASSERT(dest, return); diff --git a/src/plugins/coreplugin/actionmanager/actionmanager.h b/src/plugins/coreplugin/actionmanager/actionmanager.h index 320842e0b77..aba964a3746 100644 --- a/src/plugins/coreplugin/actionmanager/actionmanager.h +++ b/src/plugins/coreplugin/actionmanager/actionmanager.h @@ -13,6 +13,8 @@ #include +namespace Utils { class ParameterAction; } + namespace Core { class ActionContainer; @@ -57,10 +59,18 @@ public: void setCheckable(bool on); void setMenuRole(QAction::MenuRole role); + enum EnablingMode { AlwaysEnabled, EnabledWithParameter }; + void setParameterText(const QString ¶metrizedText, + const QString &emptyText, + EnablingMode mode = EnabledWithParameter); + + Command *command() const; QAction *commandAction() const; QAction *contextAction() const; + Utils::ParameterAction *contextParameterAction() const; void bindContextAction(QAction **dest); + void bindContextAction(Utils::ParameterAction **dest); void augmentActionWithShortcutToolTip(); private: