DUNE-DAQ
DUNE Trigger and Data Acquisition software
Loading...
Searching...
No Matches
FilterTextEdit.hpp
Go to the documentation of this file.
1#ifndef FILTERTEXTEDIT_H
2#define FILTERTEXTEDIT_H
7#include "ers/ers.hpp"
8#include <QRegExp>
9#include <QTextEdit>
10namespace daq {
11namespace QTUtils {
12
46class FilterTextEdit : public QTextEdit
47{
48 Q_OBJECT
49public:
50 FilterTextEdit(QWidget* parent)
51 : QTextEdit(parent)
52 , m_invert(false)
53 {
54 ;
55 }
56 virtual ~FilterTextEdit() { ; }
57 void append(const QString& text)
58 {
59 m_original.append(text);
60 if (text.contains(m_filter)) {
61 QTextEdit::append(text);
62 }
63 }
64 void setPlainText(const QString& text)
65 {
66 m_original = text;
67 filterAndSet(text);
68 }
69
70 void setFilter(const QString& filter)
71 {
72 m_filter = filter;
74 }
75 void setInversion(bool invert) { m_invert = invert; }
76
77private slots:
78 void clear()
79 {
80 m_original = "";
81 QTextEdit::clear();
82 }
83
84private:
85 void filterAndSet(const QString& text)
86 {
87 if (m_filter != "") {
88 QStringList strings = text.split("\n");
89 if (!m_invert) {
90 strings = strings.filter(m_filter);
91 } else {
92 QStringList result;
93 foreach (QString str, strings) {
94 if (!str.contains(m_filter)) {
95 result += str;
96 }
97 }
98 strings = result;
99 }
100 QString filtered = strings.join("\n");
101 QTextEdit::setPlainText(filtered);
102 } else {
103 QTextEdit::setPlainText(text);
104 }
105 }
106
107 QString m_filter;
108 QString m_original;
109 bool m_invert;
110};
111}
112}
113#endif
void setFilter(const QString &filter)
bool m_invert
the 'original' text.
void filterAndSet(const QString &text)
void append(const QString &text)
void setPlainText(const QString &text)
Including ers headers.