9#include "DockDebugLog.h"
10#include "ui_DockDebugLog.h"
13#include "RabbitCommonDir.h"
14#include "RabbitCommonTools.h"
19CDockDebugLog::CDockDebugLog(QWidget *parent) :
24 setObjectName(
"dockDebugLog");
28 bool check = connect(
this, &QDockWidget::visibilityChanged,
this, [=](
bool visible) {
30 ui->txtDebugLog->horizontalScrollBar()->setValue(0);
34 check = connect(
this, SIGNAL(sigAddLog(QString)),
35 this, SLOT(slotAddLog(QString)));
38 static QSettings set(RabbitCommon::CDir::Instance()->GetFileUserConfigure(),
39 QSettings::IniFormat);
44 setTitleBarWidget(pDockTitleBar);
47 QMenu* pMenu =
new QMenu(tr(
"Tools"), pDockTitleBar);
48 QPushButton* pWrap = pDockTitleBar->CreateSmallPushButton(
49 QIcon::fromTheme(
"tools"), pDockTitleBar);
50 pWrap->setToolTip(tr(
"Wrap"));
51 pWrap->setMenu(pMenu);
52 QList<QWidget*> lstWidget;
58 szTitle = tr(
"Clear");
59 pMenu->addAction(QIcon::fromTheme(
"edit-clear"), szTitle, [&](){
60 ui->txtDebugLog->clear();
65 int nWrap = QPlainTextEdit::NoWrap;
66 nWrap = set.value(
"DockDebugLog/Wrap", nWrap).toInt();
67 if(nWrap == QPlainTextEdit::NoWrap)
70 iconWrap = QIcon::fromTheme(
"text-wrap");
72 szTitle = tr(
"No wrap");
73 iconWrap = QIcon::fromTheme(
"format-justify-fill");
75 ui->txtDebugLog->setLineWrapMode((QPlainTextEdit::LineWrapMode)nWrap);
76 pMenu->addAction(iconWrap, szTitle,
this, [&](){
77 QAction* p = qobject_cast<QAction*>(sender());
78 p->setCheckable(
true);
79 if(ui->txtDebugLog->lineWrapMode() == QPlainTextEdit::NoWrap)
81 p->setText(tr(
"No wrap"));
82 p->setIcon(QIcon::fromTheme(
"format-justify-fill"));
84 ui->txtDebugLog->setLineWrapMode(QPlainTextEdit::WidgetWidth);
86 p->setText(tr(
"Wrap"));
87 p->setIcon(QIcon::fromTheme(
"text-wrap"));
89 ui->txtDebugLog->setLineWrapMode(QPlainTextEdit::NoWrap);
91 int nWrap = ui->txtDebugLog->lineWrapMode();
92 set.setValue(
"DockDebugLog/Wrap", nWrap);
95 QString szInclude = set.value(
"DockDebugLog/Filter/Include").toString();
96 SetInclude(szInclude);
97 QString szExclude = set.value(
"DockDebugLog/Filter/Exclude").toString();
98 SetExclude(szExclude);
99 pMenu->addAction(QIcon::fromTheme(
"filter"), tr(
"Filter"), [&](){
100 QString szInclude = set.value(
"DockDebugLog/Filter/Include").toString();
101 QString szExclude = set.value(
"DockDebugLog/Filter/Exclude").toString();
103 f.SetFilter(szInclude, szExclude);
104 if(QDialog::Accepted == RC_SHOW_WINDOW(&f)) {
105 f.GetFilter(szInclude, szExclude);
106 this->SetInclude(szInclude);
107 this->SetExclude(szExclude);
108 set.setValue(
"DockDebugLog/Filter/Include", szInclude);
109 set.setValue(
"DockDebugLog/Filter/Exclude", szExclude);
113 int nMaxBlockCount = set.value(
"DockDebugLog/MaximumBlockCount", ui->txtDebugLog->maximumBlockCount()).toInt();
114 ui->txtDebugLog->setMaximumBlockCount(nMaxBlockCount);
115 pMenu->addAction(tr(
"Set maximum block count"), [&](){
117 int count = QInputDialog::getInt(
this,
118 tr(
"Set maximum block count"),
119 tr(
"Set maximum block count"),
120 ui->txtDebugLog->maximumBlockCount(),
123 this->ui->txtDebugLog->setMaximumBlockCount(count);
124 set.setValue(
"DockDebugLog/MaximumBlockCount", ui->txtDebugLog->maximumBlockCount());
128 pMenu->addSeparator();
129 pMenu->addAction(QIcon::fromTheme(
"document-open"),
130 QObject::tr(
"Open Log configure file"),
131 [](){RabbitCommon::OpenLogConfigureFile();});
132 pMenu->addAction(QIcon::fromTheme(
"document-open"),
133 QObject::tr(
"Open Log file"),
134 [](){RabbitCommon::OpenLogFile();});
135 pMenu->addAction(QIcon::fromTheme(
"folder-open"),
136 tr(
"Open log folder"), [](){
137 RabbitCommon::OpenLogFolder();
142CDockDebugLog::~CDockDebugLog()
144 g_pDcokDebugLog =
nullptr;
148int CDockDebugLog::SetInclude(
const QString &szInclude)
150 m_reInclude = QRegularExpression(szInclude);
154int CDockDebugLog::SetExclude(
const QString &szExclude)
156 m_reExclude = QRegularExpression(szExclude);
160void CDockDebugLog::slotAddLog(
const QString &szLog)
162 if(m_reInclude.isValid() && !m_reInclude.pattern().isEmpty()) {
163 QRegularExpressionMatch m = m_reInclude.match(szLog);
168 if(m_reExclude.isValid() && !m_reExclude.pattern().isEmpty()) {
169 QRegularExpressionMatch m = m_reExclude.match(szLog);
174 ui->txtDebugLog->appendPlainText(szLog);
The cursom title bar for QWidget, QDockWidget etc.
int AddWidgets(QList< QWidget * > pLstWidget)
Add user-defined buttons.