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.