From 9cfcf60e4abf782762c603d7f7c9e6c4e4dc8834 Mon Sep 17 00:00:00 2001 From: Ernie Pasveer Date: Sat, 8 Jul 2023 11:35:51 -0500 Subject: [PATCH] Add CLEAR button. --- src/SeerMainWindow.cpp | 16 ++++++++++++++++ src/SeerMainWindow.h | 1 + src/SeerMainWindow.ui | 11 ++++++++++- src/SeerMessagesDialog.cpp | 26 +++++++++++++++++++++----- src/SeerMessagesDialog.h | 1 + src/SeerMessagesDialog.ui | 2 +- 6 files changed, 50 insertions(+), 7 deletions(-) diff --git a/src/SeerMainWindow.cpp b/src/SeerMainWindow.cpp index ca10f9e..8c855d1 100644 --- a/src/SeerMainWindow.cpp +++ b/src/SeerMainWindow.cpp @@ -123,6 +123,7 @@ SeerMainWindow::SeerMainWindow(QWidget* parent) : QMainWindow(parent) { QObject::connect(actionViewBasicStructVisualizer, &QAction::triggered, this, &SeerMainWindow::handleViewStructVisualizer); QObject::connect(actionViewImageVisualizer, &QAction::triggered, this, &SeerMainWindow::handleViewImageVisualizer); QObject::connect(actionViewAssembly, &QAction::triggered, this, &SeerMainWindow::handleViewAssembly); + QObject::connect(actionViewExecutionMessages, &QAction::triggered, this, &SeerMainWindow::handleViewExecutionMessages); QObject::connect(actionConsoleNormal, &QAction::triggered, this, &SeerMainWindow::handleViewConsoleNormal); QObject::connect(actionConsoleHidden, &QAction::triggered, this, &SeerMainWindow::handleViewConsoleHidden); QObject::connect(actionConsoleMinimized, &QAction::triggered, this, &SeerMainWindow::handleViewConsoleMinimized); @@ -176,6 +177,7 @@ SeerMainWindow::SeerMainWindow(QWidget* parent) : QMainWindow(parent) { QObject::connect(gdbWidget->gdbMonitor(), &GdbMonitor::astrixTextOutput, runStatus, &SeerRunStatusIndicator::handleText); QObject::connect(gdbWidget->gdbMonitor(), &GdbMonitor::astrixTextOutput, this, &SeerMainWindow::handleText); QObject::connect(gdbWidget->gdbMonitor(), &GdbMonitor::caretTextOutput, this, &SeerMainWindow::handleText); + QObject::connect(gdbWidget->gdbMonitor(), &GdbMonitor::equalTextOutput, this, &SeerMainWindow::handleText); QObject::connect(gdbWidget->editorManager(), &SeerEditorManagerWidget::showMessage, this, &SeerMainWindow::handleShowMessage); QObject::connect(gdbWidget->editorManager(), &SeerEditorManagerWidget::assemblyTabShown, this, &SeerMainWindow::handleViewAssemblyShown); @@ -552,6 +554,11 @@ void SeerMainWindow::handleViewAssembly () { gdbWidget->editorManager()->showAssembly(); } +void SeerMainWindow::handleViewExecutionMessages () { + + _executionMessages->show(); +} + void SeerMainWindow::handleViewAssemblyShown (bool shown) { // Corefile always have them off. @@ -990,6 +997,15 @@ void SeerMainWindow::handleText (const QString& text) { } return; + + }else if (text.startsWith("=thread-group-started,")) { + // =thread-group-started,id="i1",pid="30916" + + QString pid_text = Seer::parseFirst(text, "pid=", '"', '"', false); + + //qDebug() << "Inferior pid = " << pid_text; + + _executionMessages->addMessage("Program started. (pid=" + pid_text +")", QMessageBox::Information); } // Leave in for stray error messages. diff --git a/src/SeerMainWindow.h b/src/SeerMainWindow.h index 55fe0b4..baa646f 100644 --- a/src/SeerMainWindow.h +++ b/src/SeerMainWindow.h @@ -69,6 +69,7 @@ class SeerMainWindow : public QMainWindow, protected Ui::SeerMainWindowForm { void handleViewVarVisualizer (); void handleViewImageVisualizer (); void handleViewAssembly (); + void handleViewExecutionMessages (); void handleViewAssemblyShown (bool shown); void handleViewConsoleNormal (); void handleViewConsoleHidden (); diff --git a/src/SeerMainWindow.ui b/src/SeerMainWindow.ui index 8e9deca..eb73b16 100644 --- a/src/SeerMainWindow.ui +++ b/src/SeerMainWindow.ui @@ -20,7 +20,7 @@ 0 0 1206 - 28 + 23 @@ -73,6 +73,7 @@ + @@ -668,6 +669,14 @@ Basic Struct Visualizer + + + Execution Messages + + + View the program's execution messages. + + diff --git a/src/SeerMessagesDialog.cpp b/src/SeerMessagesDialog.cpp index 754c25c..b2d1ee1 100644 --- a/src/SeerMessagesDialog.cpp +++ b/src/SeerMessagesDialog.cpp @@ -1,7 +1,8 @@ #include "SeerMessagesDialog.h" #include #include -#include +#include +#include #include #include #include @@ -30,7 +31,14 @@ SeerMessagesDialog::SeerMessagesDialog (QWidget* parent) : QDialog(parent) { messageTreeWidget->resizeColumnToContents(0); // timestamp messageTreeWidget->resizeColumnToContents(1); // message type icon messageTreeWidget->resizeColumnToContents(2); // message - messageTreeWidget->clear(); + + // Add a "CLEAR" button to the dialog's buttonbox. + QDialogButtonBox* buttonBox = findChild("buttonBox"); + if (buttonBox) { + QPushButton* clearPushButton = buttonBox->addButton("Clear", QDialogButtonBox::ActionRole); + + QObject::connect(clearPushButton, &QPushButton::clicked, this, &SeerMessagesDialog::clearMessages); + } // Get icons. _informationIcon = QIcon(":/seer/resources/RelaxLightIcons/data-information.svg"); @@ -41,6 +49,9 @@ SeerMessagesDialog::SeerMessagesDialog (QWidget* parent) : QDialog(parent) { // Connect things. + // Clear messages + clearMessages(); + // Restore window settings. readSettings(); @@ -53,8 +64,8 @@ SeerMessagesDialog::~SeerMessagesDialog () { void SeerMessagesDialog::addMessage (const QString& message, QMessageBox::Icon messageType) { + // Shot messages any time a messaged is added. show(); - //raise(); // Create an entry with our message. QTreeWidgetItem* item = new QTreeWidgetItem; @@ -100,7 +111,12 @@ void SeerMessagesDialog::addMessage (const QString& message, QMessageBox::Icon m } } -void SeerMessagesDialog::writeSettings() { +void SeerMessagesDialog::clearMessages () { + + messageTreeWidget->clear(); +} + +void SeerMessagesDialog::writeSettings () { QSettings settings; @@ -109,7 +125,7 @@ void SeerMessagesDialog::writeSettings() { }settings.endGroup(); } -void SeerMessagesDialog::readSettings() { +void SeerMessagesDialog::readSettings () { QSettings settings; diff --git a/src/SeerMessagesDialog.h b/src/SeerMessagesDialog.h index 94a6dbd..6682f90 100644 --- a/src/SeerMessagesDialog.h +++ b/src/SeerMessagesDialog.h @@ -18,6 +18,7 @@ class SeerMessagesDialog : public QDialog, protected Ui::SeerMessagesDialog { public slots: void addMessage (const QString& message, QMessageBox::Icon messageType); + void clearMessages (); protected slots: diff --git a/src/SeerMessagesDialog.ui b/src/SeerMessagesDialog.ui index 0ae840e..6207aec 100644 --- a/src/SeerMessagesDialog.ui +++ b/src/SeerMessagesDialog.ui @@ -45,7 +45,7 @@ Qt::Horizontal - QDialogButtonBox::Ok + QDialogButtonBox::Close