Add method to remember variable names when restarting a session.

This commit is contained in:
Ernie Pasveer
2026-01-30 13:51:13 -06:00
parent 7e50e95eb7
commit 28bd1f2aef
6 changed files with 108 additions and 34 deletions
+5 -33
View File
@@ -1452,40 +1452,12 @@ void SeerGdbWidget::handleGdbTerminateExecutable (bool confirm) {
if (isGdbRuning() == true) { if (isGdbRuning() == true) {
if (confirm) { if (confirm) {
int result = QMessageBox::warning(this, "Seer",
QString("Terminate current session?"),
QMessageBox::Ok|QMessageBox::Cancel, QMessageBox::Cancel);
QSettings settings; if (result == QMessageBox::Cancel) {
bool prompt = true; break;
settings.beginGroup("mainwindow"); {
prompt = settings.value("promptterminate", prompt).toBool();
} settings.endGroup();
if (prompt) {
QMessageBox msgBox(this);
msgBox.setWindowTitle("Seer");
msgBox.setText("Terminate current session?");
msgBox.setIcon(QMessageBox::Question);
// Add "Don't ask again" checkbox
QCheckBox* dontAskAgainBox = new QCheckBox("Don't ask again", &msgBox);
msgBox.setCheckBox(dontAskAgainBox);
msgBox.setStandardButtons(QMessageBox::Ok | QMessageBox::Cancel);
msgBox.setDefaultButton(QMessageBox::Ok);
int result = msgBox.exec();
// Save preference if checked
if (dontAskAgainBox->isChecked()) {
settings.beginGroup("mainwindow"); {
settings.setValue("promptterminate", false);
} settings.endGroup();
}
if (result == QMessageBox::Cancel) {
break;
}
} }
} }
+43 -1
View File
@@ -852,7 +852,45 @@ void SeerMainWindow::handleHelpAbout () {
void SeerMainWindow::handleTerminateExecutable () { void SeerMainWindow::handleTerminateExecutable () {
gdbWidget->handleGdbTerminateExecutable(); if (gdbWidget->isGdbRuning() == true) {
QSettings settings;
bool prompt = true;
settings.beginGroup("mainwindow"); {
prompt = settings.value("promptterminate", prompt).toBool();
} settings.endGroup();
if (prompt) {
QMessageBox msgBox(this);
msgBox.setWindowTitle("Seer");
msgBox.setText("Terminate current session?");
msgBox.setIcon(QMessageBox::Question);
// Add "Don't ask again" checkbox
QCheckBox* dontAskAgainBox = new QCheckBox("Don't ask again", &msgBox);
msgBox.setCheckBox(dontAskAgainBox);
msgBox.setStandardButtons(QMessageBox::Ok | QMessageBox::Cancel);
msgBox.setDefaultButton(QMessageBox::Ok);
int result = msgBox.exec();
// Save preference if checked
if (dontAskAgainBox->isChecked()) {
settings.beginGroup("mainwindow"); {
settings.setValue("promptterminate", false);
} settings.endGroup();
}
if (result == QMessageBox::Cancel) {
return;
}
}
gdbWidget->handleGdbTerminateExecutable(false);
}
} }
void SeerMainWindow::handleRestartExecutable () { void SeerMainWindow::handleRestartExecutable () {
@@ -899,6 +937,10 @@ void SeerMainWindow::handleRestartExecutable () {
} }
} }
if (gdbWidget->isGdbRuning() == true) {
gdbWidget->handleGdbTerminateExecutable(false);
}
if (gdbWidget->isGdbRuning() == false && gdbWidget->hasBackupLaunchMode()) { if (gdbWidget->isGdbRuning() == false && gdbWidget->hasBackupLaunchMode()) {
gdbWidget->restoreLaunchMode(); gdbWidget->restoreLaunchMode();
} }
+38
View File
@@ -11,6 +11,7 @@
#include <QtGui/QFontDatabase> #include <QtGui/QFontDatabase>
#include <QtGui/QClipboard> #include <QtGui/QClipboard>
#include <QtCore/QTimer> #include <QtCore/QTimer>
#include <QtCore/QSettings>
#include <QtCore/QDebug> #include <QtCore/QDebug>
SeerVariableTrackerBrowserWidget::SeerVariableTrackerBrowserWidget (QWidget* parent) : QWidget(parent) { SeerVariableTrackerBrowserWidget::SeerVariableTrackerBrowserWidget (QWidget* parent) : QWidget(parent) {
@@ -39,6 +40,10 @@ SeerVariableTrackerBrowserWidget::SeerVariableTrackerBrowserWidget (QWidget* par
QObject::connect(variablesTreeWidget, &QTreeWidget::itemExpanded, this, &SeerVariableTrackerBrowserWidget::handleItemExpanded); QObject::connect(variablesTreeWidget, &QTreeWidget::itemExpanded, this, &SeerVariableTrackerBrowserWidget::handleItemExpanded);
QObject::connect(variablesTreeWidget, &QTreeWidget::itemEntered, this, &SeerVariableTrackerBrowserWidget::handleItemEntered); QObject::connect(variablesTreeWidget, &QTreeWidget::itemEntered, this, &SeerVariableTrackerBrowserWidget::handleItemEntered);
QObject::connect(variablesTreeWidget, &QTreeWidget::customContextMenuRequested, this, &SeerVariableTrackerBrowserWidget::handleContextMenu); QObject::connect(variablesTreeWidget, &QTreeWidget::customContextMenuRequested, this, &SeerVariableTrackerBrowserWidget::handleContextMenu);
QObject::connect(variableRememberToolButton, &QToolButton::toggled, this, &SeerVariableTrackerBrowserWidget::handleRememberToolButton);
// Read state.
readSettings();
} }
SeerVariableTrackerBrowserWidget::~SeerVariableTrackerBrowserWidget () { SeerVariableTrackerBrowserWidget::~SeerVariableTrackerBrowserWidget () {
@@ -240,6 +245,11 @@ void SeerVariableTrackerBrowserWidget::handleStoppingPointReached () {
void SeerVariableTrackerBrowserWidget::handleSessionTerminated () { void SeerVariableTrackerBrowserWidget::handleSessionTerminated () {
// Remember the variable names?
if (variableRememberToolButton->isChecked() == true) {
return;
}
// Delete previous contents. // Delete previous contents.
variablesTreeWidget->clear(); variablesTreeWidget->clear();
@@ -805,3 +815,31 @@ void SeerVariableTrackerBrowserWidget::handleContextMenu (const QPoint& pos) {
} }
} }
void SeerVariableTrackerBrowserWidget::handleRememberToolButton (bool checked) {
Q_UNUSED(checked);
writeSettings();
}
void SeerVariableTrackerBrowserWidget::readSettings () {
QSettings settings;
bool remember = false;
settings.beginGroup("variabletrackerwindow"); {
remember = settings.value("remembervariablenames", remember).toBool();
} settings.endGroup();
variableRememberToolButton->setChecked(remember);
}
void SeerVariableTrackerBrowserWidget::writeSettings () {
QSettings settings;
settings.beginGroup("variabletrackerwindow"); {
settings.setValue("remembervariablenames", variableRememberToolButton->isChecked());
} settings.endGroup();
}
+3
View File
@@ -31,6 +31,7 @@ class SeerVariableTrackerBrowserWidget : public QWidget, protected Ui::SeerVaria
void handleItemExpanded (QTreeWidgetItem* item); void handleItemExpanded (QTreeWidgetItem* item);
void handleItemCollapsed (QTreeWidgetItem* item); void handleItemCollapsed (QTreeWidgetItem* item);
void handleContextMenu (const QPoint& pos); void handleContextMenu (const QPoint& pos);
void handleRememberToolButton (bool checked);
signals: signals:
void refreshVariableTrackerNames (); void refreshVariableTrackerNames ();
@@ -49,6 +50,8 @@ class SeerVariableTrackerBrowserWidget : public QWidget, protected Ui::SeerVaria
void showEvent (QShowEvent* event); void showEvent (QShowEvent* event);
private: private:
void readSettings ();
void writeSettings ();
}; };
+17
View File
@@ -29,6 +29,23 @@
</property> </property>
</widget> </widget>
</item> </item>
<item>
<widget class="QToolButton" name="variableRememberToolButton">
<property name="toolTip">
<string>Remember variable names between sessions.</string>
</property>
<property name="text">
<string>...</string>
</property>
<property name="icon">
<iconset resource="resource.qrc">
<normaloff>:/seer/resources/RelaxLightIcons/pin.svg</normaloff>:/seer/resources/RelaxLightIcons/pin.svg</iconset>
</property>
<property name="checkable">
<bool>true</bool>
</property>
</widget>
</item>
<item> <item>
<widget class="QToolButton" name="variableDeleteToolButton"> <widget class="QToolButton" name="variableDeleteToolButton">
<property name="toolTip"> <property name="toolTip">
+2
View File
@@ -59,6 +59,8 @@
<file>resources/RelaxLightIcons/data-warning.svg</file> <file>resources/RelaxLightIcons/data-warning.svg</file>
<file>resources/RelaxLightIcons/dialog-question.svg</file> <file>resources/RelaxLightIcons/dialog-question.svg</file>
<file>resources/RelaxLightIcons/system-shutdown.svg</file> <file>resources/RelaxLightIcons/system-shutdown.svg</file>
<file>resources/RelaxLightIcons/pin.svg</file>
<file>resources/RelaxLightIcons/lock.svg</file>
<file>resources/help/ThreadProcessInfoBrowser.md</file> <file>resources/help/ThreadProcessInfoBrowser.md</file>
<file>resources/help/seergdb.hlp</file> <file>resources/help/seergdb.hlp</file>
<file>resources/help/StructVisualizer.md</file> <file>resources/help/StructVisualizer.md</file>