diff --git a/src/SeerGdbWidget.cpp b/src/SeerGdbWidget.cpp
index 155ee8f..90673bc 100644
--- a/src/SeerGdbWidget.cpp
+++ b/src/SeerGdbWidget.cpp
@@ -304,6 +304,7 @@ SeerGdbWidget::SeerGdbWidget (QWidget* parent) : QWidget(parent) {
QObject::connect(variableManagerWidget->registerValuesBrowserWidget(), &SeerRegisterValuesBrowserWidget::setRegisterValue, this, &SeerGdbWidget::handleGdbRegisterSetValue);
QObject::connect(variableManagerWidget->signalValuesBrowserWidget(), &SeerSignalValuesBrowserWidget::refreshSignalNames, this, &SeerGdbWidget::handleGdbSignalListNames);
QObject::connect(variableManagerWidget->signalValuesBrowserWidget(), &SeerSignalValuesBrowserWidget::refreshSignalValues, this, &SeerGdbWidget::handleGdbSignalListValues);
+ QObject::connect(variableManagerWidget->signalValuesBrowserWidget(), &SeerSignalValuesBrowserWidget::setSignalValue, this, &SeerGdbWidget::handleGdbSignalSetValue);
QObject::connect(threadManagerWidget->threadFramesBrowserWidget(), &SeerThreadFramesBrowserWidget::refreshThreadIds, this, &SeerGdbWidget::handleGdbThreadListIds);
QObject::connect(threadManagerWidget->threadFramesBrowserWidget(), &SeerThreadFramesBrowserWidget::refreshThreadFrames, this, &SeerGdbWidget::handleGdbThreadListFrames);
@@ -2800,6 +2801,19 @@ void SeerGdbWidget::handleGdbSignalListValues (QString names) {
handleGdbCommand("-signal-list-values " + names);
}
+void SeerGdbWidget::handleGdbSignalSetValue (QString name, QString stop, QString print, QString pass) {
+
+ if (executableLaunchMode() == "") {
+ return;
+ }
+
+ // Set the signal value.
+ handleGdbCommand("-signal-set-value " + name + " " + stop + " " + print + " " + pass);
+
+ // Refresh whoever is listening.
+ handleGdbSignalListValues("");
+}
+
void SeerGdbWidget::handleGdbDataEvaluateExpression (int expressionid, QString expression) {
if (executableLaunchMode() == "") {
diff --git a/src/SeerGdbWidget.h b/src/SeerGdbWidget.h
index d67ab81..d7a0bef 100644
--- a/src/SeerGdbWidget.h
+++ b/src/SeerGdbWidget.h
@@ -342,6 +342,7 @@ class SeerGdbWidget : public QWidget, protected Ui::SeerGdbWidgetForm {
void handleGdbRegisterSetValue (QString fmt, QString name, QString value);
void handleGdbSignalListNames ();
void handleGdbSignalListValues (QString names);
+ void handleGdbSignalSetValue (QString name, QString stop, QString print, QString pass);
void handleGdbDataEvaluateExpression (int expressionid, QString expression);
void handleGdbVarObjCreate (int expressionid, QString expression);
void handleGdbVarObjListChildren (int expressionid, QString objname);
diff --git a/src/SeerSignalEditValueDialog.cpp b/src/SeerSignalEditValueDialog.cpp
index 3869c27..341cdb4 100644
--- a/src/SeerSignalEditValueDialog.cpp
+++ b/src/SeerSignalEditValueDialog.cpp
@@ -22,7 +22,7 @@ SeerSignalEditValueDialog::~SeerSignalEditValueDialog () {
void SeerSignalEditValueDialog::set (const QString& signame, const QString& stopvalue, const QString& printvalue, const QString& passvalue, const QString& description) {
signalNameLineEdit->setText(signame);
- signalDescriptionLabel->setText(description);
+ signalDescriptionLineEdit->setText(description);
signalStopCheckBox->setCheckState(Qt::Unchecked);
signalPrintCheckBox->setCheckState(Qt::Unchecked);
@@ -75,6 +75,6 @@ QString SeerSignalEditValueDialog::passText () const {
QString SeerSignalEditValueDialog::descriptionText () const {
- return signalDescriptionLabel->text();
+ return signalDescriptionLineEdit->text();
}
diff --git a/src/SeerSignalEditValueDialog.ui b/src/SeerSignalEditValueDialog.ui
index f77d713..08f3f76 100644
--- a/src/SeerSignalEditValueDialog.ui
+++ b/src/SeerSignalEditValueDialog.ui
@@ -6,8 +6,8 @@
0
0
- 527
- 167
+ 523
+ 173
@@ -25,79 +25,115 @@
-
-
-
-
-
-
-
-
-
- Name
-
-
-
- -
-
-
-
- 50
- 0
-
-
-
- The name of the register to edit.
-
-
- true
-
-
- false
-
-
-
- -
-
-
- Stop
-
-
-
- -
-
-
- Print
-
-
-
- -
-
-
- Pass
-
-
-
- -
-
-
- Qt::Horizontal
-
-
-
- 100
- 20
-
-
-
-
-
-
- -
-
-
-
-
-
-
-
+
+
+ Name
+
+
+
+ -
+
+
+
+ 100
+ 0
+
+
+
+ The name of the signal to edit.
+
+
+ true
+
+
+ false
+
+
+
+ -
+
+
+ Stop your program if GDB sees this signal.
+
+
+ Stop
+
+
+
+ -
+
+
+ Print a message to the "GDB output" tab if GDB sees this signal.
+
+
+ Print
+
+
+
+ -
+
+
+ Pass this signal to your program if GDB sees this signal.
+
+
+ Pass
+
+
+
+ -
+
+
+ Qt::Horizontal
+
+
+ QSizePolicy::Preferred
+
+
+
+ 60
+ 20
+
+
+
+
+ -
+
+
+ Description
+
+
+
+ -
+
+
+
+ 50
+ 0
+
+
+
+ The description of the signal.
+
+
+ true
+
+
+ false
+
+
+
+ -
+
+
+ Qt::Vertical
+
+
+
+ 20
+ 11
+
+
+
diff --git a/src/resources/mi-python/MISignals.py b/src/resources/mi-python/MISignals.py
index 75a1d34..2b0f0eb 100644
--- a/src/resources/mi-python/MISignals.py
+++ b/src/resources/mi-python/MISignals.py
@@ -96,11 +96,13 @@ class MISignal(gdb.MICommand):
elif self._mode == "stop":
+ # handle signal [ signal … ] stop
gdb.execute ("handle " + " ".join(argv) + " stop", from_tty=True, to_string=True)
return None
elif self._mode == "nostop":
+ # handle signal [ signal … ] nostop
gdb.execute ("handle " + " ".join(argv) + " nostop", from_tty=True, to_string=True)
return None
@@ -124,6 +126,12 @@ class MISignal(gdb.MICommand):
gdb.execute ("handle " + " ".join(argv) + " nopass", from_tty=True, to_string=True)
return None
+ elif self._mode == "set-value":
+
+ # handle signal [ signal … ] [keywords…]
+ gdb.execute ("handle " + " ".join(argv), from_tty=True, to_string=True)
+ return None
+
else:
raise gdb.GdbError("signal: Invalid parameter: %s" % self._mode)
@@ -135,4 +143,5 @@ MISignal("-signal-print", "print")
MISignal("-signal-noprint", "noprint")
MISignal("-signal-pass", "pass")
MISignal("-signal-nopass", "nopass")
+MISignal("-signal-set-value", "set-value")