mirror of
https://github.com/epasveer/seer.git
synced 2026-08-29 16:40:42 +08:00
Add method to remember variable names when restarting a session.
This commit is contained in:
+5
-33
@@ -1452,40 +1452,12 @@ void SeerGdbWidget::handleGdbTerminateExecutable (bool confirm) {
|
||||
if (isGdbRuning() == true) {
|
||||
|
||||
if (confirm) {
|
||||
int result = QMessageBox::warning(this, "Seer",
|
||||
QString("Terminate current session?"),
|
||||
QMessageBox::Ok|QMessageBox::Cancel, QMessageBox::Cancel);
|
||||
|
||||
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) {
|
||||
break;
|
||||
}
|
||||
if (result == QMessageBox::Cancel) {
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
+43
-1
@@ -852,7 +852,45 @@ void SeerMainWindow::handleHelpAbout () {
|
||||
|
||||
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 () {
|
||||
@@ -899,6 +937,10 @@ void SeerMainWindow::handleRestartExecutable () {
|
||||
}
|
||||
}
|
||||
|
||||
if (gdbWidget->isGdbRuning() == true) {
|
||||
gdbWidget->handleGdbTerminateExecutable(false);
|
||||
}
|
||||
|
||||
if (gdbWidget->isGdbRuning() == false && gdbWidget->hasBackupLaunchMode()) {
|
||||
gdbWidget->restoreLaunchMode();
|
||||
}
|
||||
|
||||
@@ -11,6 +11,7 @@
|
||||
#include <QtGui/QFontDatabase>
|
||||
#include <QtGui/QClipboard>
|
||||
#include <QtCore/QTimer>
|
||||
#include <QtCore/QSettings>
|
||||
#include <QtCore/QDebug>
|
||||
|
||||
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::itemEntered, this, &SeerVariableTrackerBrowserWidget::handleItemEntered);
|
||||
QObject::connect(variablesTreeWidget, &QTreeWidget::customContextMenuRequested, this, &SeerVariableTrackerBrowserWidget::handleContextMenu);
|
||||
QObject::connect(variableRememberToolButton, &QToolButton::toggled, this, &SeerVariableTrackerBrowserWidget::handleRememberToolButton);
|
||||
|
||||
// Read state.
|
||||
readSettings();
|
||||
}
|
||||
|
||||
SeerVariableTrackerBrowserWidget::~SeerVariableTrackerBrowserWidget () {
|
||||
@@ -240,6 +245,11 @@ void SeerVariableTrackerBrowserWidget::handleStoppingPointReached () {
|
||||
|
||||
void SeerVariableTrackerBrowserWidget::handleSessionTerminated () {
|
||||
|
||||
// Remember the variable names?
|
||||
if (variableRememberToolButton->isChecked() == true) {
|
||||
return;
|
||||
}
|
||||
|
||||
// Delete previous contents.
|
||||
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();
|
||||
}
|
||||
|
||||
|
||||
@@ -31,6 +31,7 @@ class SeerVariableTrackerBrowserWidget : public QWidget, protected Ui::SeerVaria
|
||||
void handleItemExpanded (QTreeWidgetItem* item);
|
||||
void handleItemCollapsed (QTreeWidgetItem* item);
|
||||
void handleContextMenu (const QPoint& pos);
|
||||
void handleRememberToolButton (bool checked);
|
||||
|
||||
signals:
|
||||
void refreshVariableTrackerNames ();
|
||||
@@ -49,6 +50,8 @@ class SeerVariableTrackerBrowserWidget : public QWidget, protected Ui::SeerVaria
|
||||
void showEvent (QShowEvent* event);
|
||||
|
||||
private:
|
||||
void readSettings ();
|
||||
void writeSettings ();
|
||||
|
||||
};
|
||||
|
||||
|
||||
@@ -29,6 +29,23 @@
|
||||
</property>
|
||||
</widget>
|
||||
</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>
|
||||
<widget class="QToolButton" name="variableDeleteToolButton">
|
||||
<property name="toolTip">
|
||||
|
||||
@@ -59,6 +59,8 @@
|
||||
<file>resources/RelaxLightIcons/data-warning.svg</file>
|
||||
<file>resources/RelaxLightIcons/dialog-question.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/seergdb.hlp</file>
|
||||
<file>resources/help/StructVisualizer.md</file>
|
||||
|
||||
Reference in New Issue
Block a user