aboutsummaryrefslogtreecommitdiffstats
path: root/src/plugins/coreplugin
diff options
context:
space:
mode:
authorChristian Kandeler <christian.kandeler@qt.io>2019-06-20 17:27:10 +0200
committerChristian Kandeler <christian.kandeler@qt.io>2019-06-24 14:14:07 +0000
commit41ade463da39473bae42fa4755813250f3356fd6 (patch)
treea2548d4651324df4c74706202bc8ceb4b72c693c /src/plugins/coreplugin
parent864e3ab44aa676c4254fa5a58146a642f481c958 (diff)
Output panes: Support keyboard shortcuts for zooming
Fixes: QTCREATORBUG-22567 Change-Id: I3c7419c7b464c329d8f8dae11db9a0b01e51f32c Reviewed-by: André Hartmann <aha_1980@gmx.de>
Diffstat (limited to 'src/plugins/coreplugin')
-rw-r--r--src/plugins/coreplugin/ioutputpane.h10
-rw-r--r--src/plugins/coreplugin/messageoutputwindow.cpp2
-rw-r--r--src/plugins/coreplugin/outputpanemanager.cpp32
-rw-r--r--src/plugins/coreplugin/outputwindow.h1
4 files changed, 38 insertions, 7 deletions
diff --git a/src/plugins/coreplugin/ioutputpane.h b/src/plugins/coreplugin/ioutputpane.h
index d219e2aefff..b7800a65c84 100644
--- a/src/plugins/coreplugin/ioutputpane.h
+++ b/src/plugins/coreplugin/ioutputpane.h
@@ -41,6 +41,8 @@ class QWidget;
QT_END_NAMESPACE
namespace Core {
+class CommandButton;
+class IContext;
class CORE_EXPORT IOutputPane : public QObject
{
@@ -93,6 +95,7 @@ signals:
void setBadgeNumber(int number);
void zoomIn(int range);
void zoomOut(int range);
+ void resetZoom();
void wheelZoomEnabledChanged(bool enabled);
void fontChanged(const QFont &font);
@@ -103,7 +106,7 @@ protected:
Qt::CaseSensitivity filterCaseSensitivity() const { return m_filterCaseSensitivity; }
void setFilteringEnabled(bool enable);
QWidget *filterWidget() const { return m_filterOutputLineEdit; }
-
+ void setupContext(const char *context, QWidget *widget);
void setZoomButtonsEnabled(bool enabled);
private:
@@ -115,11 +118,12 @@ private:
Id filterRegexpActionId() const;
Id filterCaseSensitivityActionId() const;
- QToolButton * const m_zoomInButton = nullptr;
- QToolButton * const m_zoomOutButton = nullptr;
+ Core::CommandButton * const m_zoomInButton;
+ Core::CommandButton * const m_zoomOutButton;
QAction *m_filterActionRegexp = nullptr;
QAction *m_filterActionCaseSensitive = nullptr;
Utils::FancyLineEdit *m_filterOutputLineEdit = nullptr;
+ IContext *m_context = nullptr;
bool m_filterRegexp = false;
Qt::CaseSensitivity m_filterCaseSensitivity = Qt::CaseInsensitive;
};
diff --git a/src/plugins/coreplugin/messageoutputwindow.cpp b/src/plugins/coreplugin/messageoutputwindow.cpp
index 7aabaefbbc9..c7c752e1556 100644
--- a/src/plugins/coreplugin/messageoutputwindow.cpp
+++ b/src/plugins/coreplugin/messageoutputwindow.cpp
@@ -56,6 +56,7 @@ MessageOutputWindow::MessageOutputWindow()
connect(this, &IOutputPane::zoomIn, m_widget, &Core::OutputWindow::zoomIn);
connect(this, &IOutputPane::zoomOut, m_widget, &Core::OutputWindow::zoomOut);
+ connect(this, &IOutputPane::resetZoom, m_widget, &Core::OutputWindow::resetZoom);
connect(this, &IOutputPane::fontChanged, m_widget, &OutputWindow::setBaseFont);
connect(this, &IOutputPane::wheelZoomEnabledChanged, m_widget, &OutputWindow::setWheelZoomEnabled);
@@ -65,6 +66,7 @@ MessageOutputWindow::MessageOutputWindow()
setupFilterUi("MessageOutputPane.Filter");
setFilteringEnabled(true);
+ setupContext(Constants::C_GENERAL_OUTPUT_PANE, m_widget);
}
MessageOutputWindow::~MessageOutputWindow()
diff --git a/src/plugins/coreplugin/outputpanemanager.cpp b/src/plugins/coreplugin/outputpanemanager.cpp
index 951fed419b0..7cf2ec2c90a 100644
--- a/src/plugins/coreplugin/outputpanemanager.cpp
+++ b/src/plugins/coreplugin/outputpanemanager.cpp
@@ -35,6 +35,7 @@
#include <coreplugin/actionmanager/actionmanager.h>
#include <coreplugin/actionmanager/actioncontainer.h>
#include <coreplugin/actionmanager/command.h>
+#include <coreplugin/actionmanager/commandbutton.h>
#include <coreplugin/editormanager/editormanager.h>
#include <coreplugin/editormanager/ieditor.h>
#include <coreplugin/find/optionspopup.h>
@@ -90,24 +91,27 @@ static bool g_managerConstructed = false; // For debugging reasons.
IOutputPane::IOutputPane(QObject *parent)
: QObject(parent),
- m_zoomInButton(new QToolButton),
- m_zoomOutButton(new QToolButton)
+ m_zoomInButton(new Core::CommandButton),
+ m_zoomOutButton(new Core::CommandButton)
{
// We need all pages first. Ignore latecomers and shout.
QTC_ASSERT(!g_managerConstructed, return);
g_outputPanes.append(OutputPaneData(this));
- m_zoomInButton->setToolTip(tr("Increase Font Size"));
m_zoomInButton->setIcon(Utils::Icons::PLUS_TOOLBAR.icon());
+ m_zoomInButton->setCommandId(Constants::ZOOM_IN);
connect(m_zoomInButton, &QToolButton::clicked, this, [this] { emit zoomIn(1); });
- m_zoomOutButton->setToolTip(tr("Decrease Font Size"));
m_zoomOutButton->setIcon(Utils::Icons::MINUS.icon());
+ m_zoomOutButton->setCommandId(Constants::ZOOM_OUT);
connect(m_zoomOutButton, &QToolButton::clicked, this, [this] { emit zoomOut(1); });
}
IOutputPane::~IOutputPane()
{
+ if (m_context)
+ ICore::removeContextObject(m_context);
+
const int i = Utils::indexOf(g_outputPanes, Utils::equal(&OutputPaneData::pane, this));
QTC_ASSERT(i >= 0, return);
delete g_outputPanes.at(i).button;
@@ -174,6 +178,26 @@ void IOutputPane::setFilteringEnabled(bool enable)
m_filterOutputLineEdit->setEnabled(enable);
}
+void IOutputPane::setupContext(const char *context, QWidget *widget)
+{
+ QTC_ASSERT(!m_context, return);
+ m_context = new IContext(this);
+ m_context->setContext(Context(context));
+ m_context->setWidget(widget);
+ ICore::addContextObject(m_context);
+
+ const auto zoomInAction = new QAction(this);
+ Core::ActionManager::registerAction(zoomInAction, Constants::ZOOM_IN, m_context->context());
+ connect(zoomInAction, &QAction::triggered, this, [this] { emit zoomIn(1); });
+ const auto zoomOutAction = new QAction(this);
+ Core::ActionManager::registerAction(zoomOutAction, Constants::ZOOM_OUT, m_context->context());
+ connect(zoomOutAction, &QAction::triggered, this, [this] { emit zoomOut(1); });
+ const auto resetZoomAction = new QAction(this);
+ Core::ActionManager::registerAction(resetZoomAction, Constants::ZOOM_RESET,
+ m_context->context());
+ connect(resetZoomAction, &QAction::triggered, this, &IOutputPane::resetZoom);
+}
+
void IOutputPane::setZoomButtonsEnabled(bool enabled)
{
m_zoomInButton->setEnabled(enabled);
diff --git a/src/plugins/coreplugin/outputwindow.h b/src/plugins/coreplugin/outputwindow.h
index 88692d5ab74..204a1106a93 100644
--- a/src/plugins/coreplugin/outputwindow.h
+++ b/src/plugins/coreplugin/outputwindow.h
@@ -75,6 +75,7 @@ public:
void setBaseFont(const QFont &newFont);
float fontZoom() const;
void setFontZoom(float zoom);
+ void resetZoom() { setFontZoom(0); }
void setWheelZoomEnabled(bool enabled);
void updateFilterProperties(const QString &filterText, Qt::CaseSensitivity caseSensitivity, bool regexp);