Skip to content

Commit 8cff36c

Browse files
authored
Merge pull request #430 from epasveer/429-remember-variables-in-tracker-for-the-next-session
429 remember variables in tracker for the next session
2 parents 04d368c + 28bd1f2 commit 8cff36c

File tree

8 files changed

+131
-34
lines changed

8 files changed

+131
-34
lines changed

src/SeerGdbWidget.cpp

Lines changed: 5 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -1452,40 +1452,12 @@ void SeerGdbWidget::handleGdbTerminateExecutable (bool confirm) {
14521452
if (isGdbRuning() == true) {
14531453

14541454
if (confirm) {
1455+
int result = QMessageBox::warning(this, "Seer",
1456+
QString("Terminate current session?"),
1457+
QMessageBox::Ok|QMessageBox::Cancel, QMessageBox::Cancel);
14551458

1456-
QSettings settings;
1457-
bool prompt = true;
1458-
1459-
settings.beginGroup("mainwindow"); {
1460-
prompt = settings.value("promptterminate", prompt).toBool();
1461-
} settings.endGroup();
1462-
1463-
if (prompt) {
1464-
1465-
QMessageBox msgBox(this);
1466-
msgBox.setWindowTitle("Seer");
1467-
msgBox.setText("Terminate current session?");
1468-
msgBox.setIcon(QMessageBox::Question);
1469-
1470-
// Add "Don't ask again" checkbox
1471-
QCheckBox* dontAskAgainBox = new QCheckBox("Don't ask again", &msgBox);
1472-
msgBox.setCheckBox(dontAskAgainBox);
1473-
1474-
msgBox.setStandardButtons(QMessageBox::Ok | QMessageBox::Cancel);
1475-
msgBox.setDefaultButton(QMessageBox::Ok);
1476-
1477-
int result = msgBox.exec();
1478-
1479-
// Save preference if checked
1480-
if (dontAskAgainBox->isChecked()) {
1481-
settings.beginGroup("mainwindow"); {
1482-
settings.setValue("promptterminate", false);
1483-
} settings.endGroup();
1484-
}
1485-
1486-
if (result == QMessageBox::Cancel) {
1487-
break;
1488-
}
1459+
if (result == QMessageBox::Cancel) {
1460+
break;
14891461
}
14901462
}
14911463

src/SeerMainWindow.cpp

Lines changed: 43 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -852,7 +852,45 @@ void SeerMainWindow::handleHelpAbout () {
852852

853853
void SeerMainWindow::handleTerminateExecutable () {
854854

855-
gdbWidget->handleGdbTerminateExecutable();
855+
if (gdbWidget->isGdbRuning() == true) {
856+
857+
QSettings settings;
858+
bool prompt = true;
859+
860+
settings.beginGroup("mainwindow"); {
861+
prompt = settings.value("promptterminate", prompt).toBool();
862+
} settings.endGroup();
863+
864+
if (prompt) {
865+
866+
QMessageBox msgBox(this);
867+
msgBox.setWindowTitle("Seer");
868+
msgBox.setText("Terminate current session?");
869+
msgBox.setIcon(QMessageBox::Question);
870+
871+
// Add "Don't ask again" checkbox
872+
QCheckBox* dontAskAgainBox = new QCheckBox("Don't ask again", &msgBox);
873+
msgBox.setCheckBox(dontAskAgainBox);
874+
875+
msgBox.setStandardButtons(QMessageBox::Ok | QMessageBox::Cancel);
876+
msgBox.setDefaultButton(QMessageBox::Ok);
877+
878+
int result = msgBox.exec();
879+
880+
// Save preference if checked
881+
if (dontAskAgainBox->isChecked()) {
882+
settings.beginGroup("mainwindow"); {
883+
settings.setValue("promptterminate", false);
884+
} settings.endGroup();
885+
}
886+
887+
if (result == QMessageBox::Cancel) {
888+
return;
889+
}
890+
}
891+
892+
gdbWidget->handleGdbTerminateExecutable(false);
893+
}
856894
}
857895

858896
void SeerMainWindow::handleRestartExecutable () {
@@ -899,6 +937,10 @@ void SeerMainWindow::handleRestartExecutable () {
899937
}
900938
}
901939

940+
if (gdbWidget->isGdbRuning() == true) {
941+
gdbWidget->handleGdbTerminateExecutable(false);
942+
}
943+
902944
if (gdbWidget->isGdbRuning() == false && gdbWidget->hasBackupLaunchMode()) {
903945
gdbWidget->restoreLaunchMode();
904946
}

src/SeerVariableTrackerBrowserWidget.cpp

Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@
1111
#include <QtGui/QFontDatabase>
1212
#include <QtGui/QClipboard>
1313
#include <QtCore/QTimer>
14+
#include <QtCore/QSettings>
1415
#include <QtCore/QDebug>
1516

1617
SeerVariableTrackerBrowserWidget::SeerVariableTrackerBrowserWidget (QWidget* parent) : QWidget(parent) {
@@ -39,6 +40,10 @@ SeerVariableTrackerBrowserWidget::SeerVariableTrackerBrowserWidget (QWidget* par
3940
QObject::connect(variablesTreeWidget, &QTreeWidget::itemExpanded, this, &SeerVariableTrackerBrowserWidget::handleItemExpanded);
4041
QObject::connect(variablesTreeWidget, &QTreeWidget::itemEntered, this, &SeerVariableTrackerBrowserWidget::handleItemEntered);
4142
QObject::connect(variablesTreeWidget, &QTreeWidget::customContextMenuRequested, this, &SeerVariableTrackerBrowserWidget::handleContextMenu);
43+
QObject::connect(variableRememberToolButton, &QToolButton::toggled, this, &SeerVariableTrackerBrowserWidget::handleRememberToolButton);
44+
45+
// Read state.
46+
readSettings();
4247
}
4348

4449
SeerVariableTrackerBrowserWidget::~SeerVariableTrackerBrowserWidget () {
@@ -240,6 +245,11 @@ void SeerVariableTrackerBrowserWidget::handleStoppingPointReached () {
240245

241246
void SeerVariableTrackerBrowserWidget::handleSessionTerminated () {
242247

248+
// Remember the variable names?
249+
if (variableRememberToolButton->isChecked() == true) {
250+
return;
251+
}
252+
243253
// Delete previous contents.
244254
variablesTreeWidget->clear();
245255

@@ -805,3 +815,31 @@ void SeerVariableTrackerBrowserWidget::handleContextMenu (const QPoint& pos) {
805815
}
806816
}
807817

818+
void SeerVariableTrackerBrowserWidget::handleRememberToolButton (bool checked) {
819+
820+
Q_UNUSED(checked);
821+
822+
writeSettings();
823+
}
824+
825+
void SeerVariableTrackerBrowserWidget::readSettings () {
826+
827+
QSettings settings;
828+
bool remember = false;
829+
830+
settings.beginGroup("variabletrackerwindow"); {
831+
remember = settings.value("remembervariablenames", remember).toBool();
832+
} settings.endGroup();
833+
834+
variableRememberToolButton->setChecked(remember);
835+
}
836+
837+
void SeerVariableTrackerBrowserWidget::writeSettings () {
838+
839+
QSettings settings;
840+
841+
settings.beginGroup("variabletrackerwindow"); {
842+
settings.setValue("remembervariablenames", variableRememberToolButton->isChecked());
843+
} settings.endGroup();
844+
}
845+

src/SeerVariableTrackerBrowserWidget.h

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,7 @@ class SeerVariableTrackerBrowserWidget : public QWidget, protected Ui::SeerVaria
3131
void handleItemExpanded (QTreeWidgetItem* item);
3232
void handleItemCollapsed (QTreeWidgetItem* item);
3333
void handleContextMenu (const QPoint& pos);
34+
void handleRememberToolButton (bool checked);
3435

3536
signals:
3637
void refreshVariableTrackerNames ();
@@ -49,6 +50,8 @@ class SeerVariableTrackerBrowserWidget : public QWidget, protected Ui::SeerVaria
4950
void showEvent (QShowEvent* event);
5051

5152
private:
53+
void readSettings ();
54+
void writeSettings ();
5255

5356
};
5457

src/SeerVariableTrackerBrowserWidget.ui

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,23 @@
2929
</property>
3030
</widget>
3131
</item>
32+
<item>
33+
<widget class="QToolButton" name="variableRememberToolButton">
34+
<property name="toolTip">
35+
<string>Remember variable names between sessions.</string>
36+
</property>
37+
<property name="text">
38+
<string>...</string>
39+
</property>
40+
<property name="icon">
41+
<iconset resource="resource.qrc">
42+
<normaloff>:/seer/resources/RelaxLightIcons/pin.svg</normaloff>:/seer/resources/RelaxLightIcons/pin.svg</iconset>
43+
</property>
44+
<property name="checkable">
45+
<bool>true</bool>
46+
</property>
47+
</widget>
48+
</item>
3249
<item>
3350
<widget class="QToolButton" name="variableDeleteToolButton">
3451
<property name="toolTip">

src/resource.qrc

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -59,6 +59,8 @@
5959
<file>resources/RelaxLightIcons/data-warning.svg</file>
6060
<file>resources/RelaxLightIcons/dialog-question.svg</file>
6161
<file>resources/RelaxLightIcons/system-shutdown.svg</file>
62+
<file>resources/RelaxLightIcons/pin.svg</file>
63+
<file>resources/RelaxLightIcons/lock.svg</file>
6264
<file>resources/help/ThreadProcessInfoBrowser.md</file>
6365
<file>resources/help/seergdb.hlp</file>
6466
<file>resources/help/StructVisualizer.md</file>
Lines changed: 13 additions & 0 deletions
Loading
Lines changed: 10 additions & 0 deletions
Loading

0 commit comments

Comments
 (0)