1#include "DockDebugLog.h"
2#include "ui_DockDebugLog.h"
5#include "RabbitCommonDir.h"
10#include <QInputDialog>
14CDockDebugLog::CDockDebugLog(QWidget *parent) :
19 setObjectName(
"dockDebugLog");
23 bool check = connect(
this, &QDockWidget::visibilityChanged,
this, [=](
bool visible) {
25 ui->txtDebugLog->horizontalScrollBar()->setValue(0);
29 check = connect(
this, SIGNAL(sigAddLog(QString)),
30 this, SLOT(slotAddLog(QString)));
33 static QSettings set(RabbitCommon::CDir::Instance()->GetFileUserConfigure(),
34 QSettings::IniFormat);
39 setTitleBarWidget(pDockTitleBar);
42 QMenu* pMenu =
new QMenu(tr(
"Tools"), pDockTitleBar);
43 QPushButton* pWrap = pDockTitleBar->CreateSmallPushButton(
44 QIcon::fromTheme(
"tools"), pDockTitleBar);
45 pWrap->setToolTip(tr(
"Wrap"));
46 pWrap->setMenu(pMenu);
47 QList<QWidget*> lstWidget;
53 szTitle = tr(
"Clear");
54 pMenu->addAction(QIcon::fromTheme(
"edit-clear"), szTitle, [&](){
55 ui->txtDebugLog->clear();
60 int nWrap = QPlainTextEdit::NoWrap;
61 nWrap = set.value(
"DockDebugLog/Wrap", nWrap).toInt();
62 if(nWrap == QPlainTextEdit::NoWrap)
65 iconWrap = QIcon::fromTheme(
"text-wrap");
67 szTitle = tr(
"No wrap");
68 iconWrap = QIcon::fromTheme(
"format-justify-fill");
70 ui->txtDebugLog->setLineWrapMode((QPlainTextEdit::LineWrapMode)nWrap);
71 pMenu->addAction(iconWrap, szTitle,
this, [&](){
72 QAction* p = qobject_cast<QAction*>(sender());
73 p->setCheckable(
true);
74 if(ui->txtDebugLog->lineWrapMode() == QPlainTextEdit::NoWrap)
76 p->setText(tr(
"No wrap"));
77 p->setIcon(QIcon::fromTheme(
"format-justify-fill"));
79 ui->txtDebugLog->setLineWrapMode(QPlainTextEdit::WidgetWidth);
81 p->setText(tr(
"Wrap"));
82 p->setIcon(QIcon::fromTheme(
"text-wrap"));
84 ui->txtDebugLog->setLineWrapMode(QPlainTextEdit::NoWrap);
86 int nWrap = ui->txtDebugLog->lineWrapMode();
87 set.setValue(
"DockDebugLog/Wrap", nWrap);
90 QString szInclude = set.value(
"DockDebugLog/Filter/Include").toString();
91 SetInclude(szInclude);
92 QString szExclude = set.value(
"DockDebugLog/Filter/Exclude").toString();
93 SetExclude(szExclude);
94 pMenu->addAction(QIcon::fromTheme(
"filter"), tr(
"Filter"), [&](){
95 QString szInclude = set.value(
"DockDebugLog/Filter/Include").toString();
96 QString szExclude = set.value(
"DockDebugLog/Filter/Exclude").toString();
98 f.SetFilter(szInclude, szExclude);
99 if(QDialog::Accepted == f.exec()) {
100 f.GetFilter(szInclude, szExclude);
101 this->SetInclude(szInclude);
102 this->SetExclude(szExclude);
103 set.setValue(
"DockDebugLog/Filter/Include", szInclude);
104 set.setValue(
"DockDebugLog/Filter/Exclude", szExclude);
108 int nMaxBlockCount = set.value(
"DockDebugLog/MaximumBlockCount", ui->txtDebugLog->maximumBlockCount()).toInt();
109 ui->txtDebugLog->setMaximumBlockCount(nMaxBlockCount);
110 pMenu->addAction(tr(
"Set maximum block count"), [&](){
112 int count = QInputDialog::getInt(
this,
113 tr(
"Set maximum block count"),
114 tr(
"Set maximum block count"),
115 ui->txtDebugLog->maximumBlockCount(),
118 this->ui->txtDebugLog->setMaximumBlockCount(count);
119 set.setValue(
"DockDebugLog/MaximumBlockCount", ui->txtDebugLog->maximumBlockCount());
123 pMenu->addSeparator();
124 pMenu->addAction(QIcon::fromTheme(
"document-open"),
125 QObject::tr(
"Open Log configure file"),
126 [](){RabbitCommon::OpenLogConfigureFile();});
127 pMenu->addAction(QIcon::fromTheme(
"document-open"),
128 QObject::tr(
"Open Log file"),
129 [](){RabbitCommon::OpenLogFile();});
130 pMenu->addAction(QIcon::fromTheme(
"folder-open"),
131 tr(
"Open log folder"), [](){
132 RabbitCommon::OpenLogFolder();
137CDockDebugLog::~CDockDebugLog()
139 g_pDcokDebugLog =
nullptr;
143int CDockDebugLog::SetInclude(
const QString &szInclude)
145 m_reInclude = QRegularExpression(szInclude);
149int CDockDebugLog::SetExclude(
const QString &szExclude)
151 m_reExclude = QRegularExpression(szExclude);
155void CDockDebugLog::slotAddLog(
const QString &szLog)
157 if(m_reInclude.isValid() && !m_reInclude.pattern().isEmpty()) {
158 QRegularExpressionMatch m = m_reInclude.match(szLog);
163 if(m_reExclude.isValid() && !m_reExclude.pattern().isEmpty()) {
164 QRegularExpressionMatch m = m_reExclude.match(szLog);
169 ui->txtDebugLog->appendPlainText(szLog);
The cursom title bar for QWidget, QDockWidget etc.
int AddWidgets(QList< QWidget * > pLstWidget)
Add user-defined buttons.