mirror of
https://github.com/epasveer/seer.git
synced 2026-08-31 01:20:45 +08:00
Save state of tabs (tab order and current tab).
This commit is contained in:
@@ -4,6 +4,7 @@
|
||||
#include "QHContainerWidget.h"
|
||||
#include <QtWidgets/QToolButton>
|
||||
#include <QtGui/QIcon>
|
||||
#include <QtCore/QSettings>
|
||||
#include <QtCore/QDebug>
|
||||
|
||||
SeerStackManagerWidget::SeerStackManagerWidget (QWidget* parent) : QWidget(parent) {
|
||||
@@ -40,9 +41,14 @@ SeerStackManagerWidget::SeerStackManagerWidget (QWidget* parent) : QWidget(paren
|
||||
|
||||
tabWidget->setCornerWidget(hcontainer, Qt::TopRightCorner);
|
||||
|
||||
// Restore tab ordering.
|
||||
readSettings();
|
||||
|
||||
// Connect things.
|
||||
QObject::connect(refreshToolButton, &QToolButton::clicked, this, &SeerStackManagerWidget::handleRefreshToolButtonClicked);
|
||||
QObject::connect(helpToolButton, &QToolButton::clicked, this, &SeerStackManagerWidget::handleHelpToolButtonClicked);
|
||||
QObject::connect(refreshToolButton, &QToolButton::clicked, this, &SeerStackManagerWidget::handleRefreshToolButtonClicked);
|
||||
QObject::connect(helpToolButton, &QToolButton::clicked, this, &SeerStackManagerWidget::handleHelpToolButtonClicked);
|
||||
QObject::connect(tabWidget->tabBar(), &QTabBar::tabMoved, this, &SeerStackManagerWidget::handleTabMoved);
|
||||
QObject::connect(tabWidget->tabBar(), &QTabBar::currentChanged, this, &SeerStackManagerWidget::handleTabChanged);
|
||||
}
|
||||
|
||||
SeerStackManagerWidget::~SeerStackManagerWidget () {
|
||||
@@ -77,6 +83,94 @@ void SeerStackManagerWidget::handleHelpToolButtonClicked () {
|
||||
help->raise();
|
||||
}
|
||||
|
||||
void SeerStackManagerWidget::handleTabMoved (int from, int to) {
|
||||
|
||||
Q_UNUSED(from);
|
||||
Q_UNUSED(to);
|
||||
|
||||
writeSettings();
|
||||
}
|
||||
|
||||
void SeerStackManagerWidget::handleTabChanged (int index) {
|
||||
|
||||
Q_UNUSED(index);
|
||||
|
||||
writeSettings();
|
||||
}
|
||||
|
||||
void SeerStackManagerWidget::writeSettings () {
|
||||
|
||||
// Write tab order to settings.
|
||||
QStringList tabs;
|
||||
|
||||
for (int i=0; i<tabWidget->tabBar()->count(); i++) {
|
||||
tabs.append(tabWidget->tabBar()->tabText(i));
|
||||
}
|
||||
|
||||
QString current = tabWidget->tabBar()->tabText(tabWidget->tabBar()->currentIndex());
|
||||
|
||||
//qDebug() << "Tabs" << tabs;
|
||||
//qDebug() << "Current" << current;
|
||||
|
||||
QSettings settings;
|
||||
|
||||
settings.beginGroup("stackmanagerwindow"); {
|
||||
settings.setValue("taborder", tabs.join(','));
|
||||
settings.setValue("tabcurrent", current);
|
||||
} settings.endGroup();
|
||||
}
|
||||
|
||||
void SeerStackManagerWidget::readSettings () {
|
||||
|
||||
// Can't move things?
|
||||
if (tabWidget->tabBar()->isMovable() == false) {
|
||||
return;
|
||||
}
|
||||
|
||||
// Read tab order from settings.
|
||||
QSettings settings;
|
||||
QStringList tabs;
|
||||
QString current;
|
||||
|
||||
settings.beginGroup("stackmanagerwindow"); {
|
||||
tabs = settings.value("taborder").toString().split(',');
|
||||
current = settings.value("tabcurrent").toString();
|
||||
} settings.endGroup();
|
||||
|
||||
//qDebug() << "Tabs" << tabs;
|
||||
//qDebug() << "Current" << current;
|
||||
|
||||
// Move tabs to the requested order.
|
||||
for (int i=0; i<tabs.count(); i++) {
|
||||
|
||||
QString tab = tabs[i];
|
||||
int tb = -1;
|
||||
|
||||
for (int j=0; j<tabWidget->tabBar()->count(); j++) {
|
||||
if (tabWidget->tabBar()->tabText(j) == tab) {
|
||||
tb = j;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if (tb != -1) {
|
||||
tabWidget->tabBar()->moveTab(tb, i);
|
||||
}
|
||||
}
|
||||
|
||||
// Make a tab current.
|
||||
if (current != "") {
|
||||
for (int i=0; i<tabWidget->tabBar()->count(); i++) {
|
||||
if (tabWidget->tabBar()->tabText(i) == current) {
|
||||
tabWidget->setCurrentIndex(i);
|
||||
break;
|
||||
}
|
||||
}
|
||||
}else{
|
||||
tabWidget->setCurrentIndex(0);
|
||||
}
|
||||
}
|
||||
|
||||
void SeerStackManagerWidget::handleText (const QString& text) {
|
||||
|
||||
// Don't do any work if the widget is hidden.
|
||||
@@ -101,6 +195,10 @@ void SeerStackManagerWidget::handleText (const QString& text) {
|
||||
|
||||
groupBox->setTitle("Stack Info for Thread Id : " + currentthreadid_text);
|
||||
|
||||
stackFramesBrowserWidget()->refresh();
|
||||
stackArgumentsBrowserWidget()->refresh();
|
||||
stackLocalsBrowserWidget()->refresh();
|
||||
|
||||
}else if (text.startsWith("^error,msg=\"No registers.\"")) {
|
||||
|
||||
groupBox->setTitle("Stack Info");
|
||||
|
||||
Reference in New Issue
Block a user