summaryrefslogtreecommitdiff
path: root/src/plugins/coreplugin/outputpanemanager.cpp
diff options
context:
space:
mode:
authorChristian Kandeler <christian.kandeler@qt.io>2019-05-14 13:55:14 +0200
committerChristian Kandeler <christian.kandeler@qt.io>2019-05-24 10:54:37 +0000
commit2439cfcbdb6ade63bc37c1a5aecc4d91aa1995f3 (patch)
tree559e7d254d3317ea43f9ed5a19a87f99aa0143f9 /src/plugins/coreplugin/outputpanemanager.cpp
parenta9d2e14dca0a04e261634b0b34b394aa7f66a29f (diff)
downloadqt-creator-2439cfcbdb6ade63bc37c1a5aecc4d91aa1995f3.tar.gz
ProjectExplorer: Move filtering infrastructure up
... from AppOutputPane to IOutputPane. We want to have filtering in other output panes too. Change-Id: I805ec68baedf491b71d392c3370dee78ed4ab76c Reviewed-by: Eike Ziller <eike.ziller@qt.io>
Diffstat (limited to 'src/plugins/coreplugin/outputpanemanager.cpp')
-rw-r--r--src/plugins/coreplugin/outputpanemanager.cpp78
1 files changed, 77 insertions, 1 deletions
diff --git a/src/plugins/coreplugin/outputpanemanager.cpp b/src/plugins/coreplugin/outputpanemanager.cpp
index 6ed62e141e..5bee2fb5f7 100644
--- a/src/plugins/coreplugin/outputpanemanager.cpp
+++ b/src/plugins/coreplugin/outputpanemanager.cpp
@@ -37,6 +37,7 @@
#include <coreplugin/actionmanager/command.h>
#include <coreplugin/editormanager/editormanager.h>
#include <coreplugin/editormanager/ieditor.h>
+#include <coreplugin/find/optionspopup.h>
#include <utils/algorithm.h>
#include <utils/hostosinfo.h>
@@ -117,7 +118,10 @@ IOutputPane::~IOutputPane()
QList<QWidget *> IOutputPane::toolBarWidgets() const
{
- return {m_zoomInButton, m_zoomOutButton};
+ QList<QWidget *> widgets;
+ if (m_filterOutputLineEdit)
+ widgets << m_filterOutputLineEdit;
+ return widgets << m_zoomInButton << m_zoomOutButton;
}
void IOutputPane::setFont(const QFont &font)
@@ -130,12 +134,84 @@ void IOutputPane::setWheelZoomEnabled(bool enabled)
emit wheelZoomEnabledChanged(enabled);
}
+void IOutputPane::setupFilterUi(const QString &historyKey)
+{
+ m_filterOutputLineEdit = new FancyLineEdit;
+ m_filterActionRegexp = new QAction(this);
+ m_filterActionRegexp->setCheckable(true);
+ m_filterActionRegexp->setText(tr("Use Regular Expressions"));
+ connect(m_filterActionRegexp, &QAction::toggled, this, &IOutputPane::setRegularExpressions);
+ Core::ActionManager::registerAction(m_filterActionRegexp, filterRegexpActionId());
+
+ m_filterActionCaseSensitive = new QAction(this);
+ m_filterActionCaseSensitive->setCheckable(true);
+ m_filterActionCaseSensitive->setText(tr("Case Sensitive"));
+ connect(m_filterActionCaseSensitive, &QAction::toggled, this, &IOutputPane::setCaseSensitive);
+ Core::ActionManager::registerAction(m_filterActionCaseSensitive,
+ filterCaseSensitivityActionId());
+
+ m_filterOutputLineEdit->setPlaceholderText(tr("Filter output..."));
+ m_filterOutputLineEdit->setButtonVisible(FancyLineEdit::Left, true);
+ m_filterOutputLineEdit->setButtonIcon(FancyLineEdit::Left, Icons::MAGNIFIER.icon());
+ m_filterOutputLineEdit->setFiltering(true);
+ m_filterOutputLineEdit->setEnabled(false);
+ m_filterOutputLineEdit->setHistoryCompleter(historyKey);
+ connect(m_filterOutputLineEdit, &FancyLineEdit::textChanged,
+ this, &IOutputPane::updateFilter);
+ connect(m_filterOutputLineEdit, &FancyLineEdit::returnPressed,
+ this, &IOutputPane::updateFilter);
+ connect(m_filterOutputLineEdit, &FancyLineEdit::leftButtonClicked,
+ this, &IOutputPane::filterOutputButtonClicked);
+}
+
+QString IOutputPane::filterText() const
+{
+ return m_filterOutputLineEdit->text();
+}
+
+void IOutputPane::setFilteringEnabled(bool enable)
+{
+ m_filterOutputLineEdit->setEnabled(enable);
+}
+
void IOutputPane::setZoomButtonsEnabled(bool enabled)
{
m_zoomInButton->setEnabled(enabled);
m_zoomOutButton->setEnabled(enabled);
}
+void IOutputPane::updateFilter()
+{
+ QTC_ASSERT(false, qDebug() << "updateFilter() needs to get re-implemented");
+}
+
+void IOutputPane::filterOutputButtonClicked()
+{
+ auto popup = new Core::OptionsPopup(m_filterOutputLineEdit,
+ {filterRegexpActionId(), filterCaseSensitivityActionId()});
+ popup->show();
+}
+
+void IOutputPane::setRegularExpressions(bool regularExpressions)
+{
+ m_filterRegexp = regularExpressions;
+}
+
+Id IOutputPane::filterRegexpActionId() const
+{
+ return Id("OutputFilter.RegularExpressions").withSuffix(metaObject()->className());
+}
+
+Id IOutputPane::filterCaseSensitivityActionId() const
+{
+ return Id("OutputFilter.CaseSensitive").withSuffix(metaObject()->className());
+}
+
+void IOutputPane::setCaseSensitive(bool caseSensitive)
+{
+ m_filterCaseSensitive = caseSensitive;
+}
+
namespace Internal {
const char outputPaneSettingsKeyC[] = "OutputPaneVisibility";