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
@@ -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