Files
seer/src/SeerSourceSymbolLibraryManagerWidget.cpp
T

199 lines
6.4 KiB
C++
Raw Normal View History

2022-09-25 18:50:53 -05:00
#include "SeerSourceSymbolLibraryManagerWidget.h"
2023-01-27 19:16:15 +00:00
#include "SeerHelpPageDialog.h"
#include "QHContainerWidget.h"
2021-09-01 14:01:00 -05:00
#include <QtWidgets/QToolButton>
#include <QtGui/QIcon>
#include <QtCore/QSettings>
2021-09-01 14:01:00 -05:00
#include <QtCore/QDebug>
2022-09-25 18:50:53 -05:00
SeerSourceSymbolLibraryManagerWidget::SeerSourceSymbolLibraryManagerWidget (QWidget* parent) : QWidget(parent) {
2021-09-01 14:01:00 -05:00
// Initialize private data
// Setup UI
setupUi(this);
// Setup the widgets
tabWidget->setMovable(true);
tabWidget->setTabsClosable(false);
2023-04-02 10:45:53 -05:00
_sourceBrowserWidget = new SeerSourceBrowserWidget(this);
_functionBrowserWidget = new SeerFunctionBrowserWidget(this);
_typeBrowserWidget = new SeerTypeBrowserWidget(this);
_staticBrowserWidget = new SeerStaticBrowserWidget(this);
_libraryBrowserWidget = new SeerLibraryBrowserWidget(this);
_adaExceptionsBrowserWidget = new SeerAdaExceptionsBrowserWidget(this);
2025-03-26 19:57:22 -05:00
_skipBrowserWidget = new SeerSkipBrowserWidget(this);
2023-04-02 10:45:53 -05:00
tabWidget->addTab(_sourceBrowserWidget, "Source");
tabWidget->addTab(_functionBrowserWidget, "Functions");
tabWidget->addTab(_typeBrowserWidget, "Types");
tabWidget->addTab(_staticBrowserWidget, "Statics");
tabWidget->addTab(_libraryBrowserWidget, "Libraries");
tabWidget->addTab(_adaExceptionsBrowserWidget, "AdaExceptions");
2025-03-26 19:57:22 -05:00
tabWidget->addTab(_skipBrowserWidget, "Skips");
2021-09-01 14:01:00 -05:00
QToolButton* refreshToolButton = new QToolButton(tabWidget);
2022-02-09 11:59:14 -06:00
refreshToolButton->setIcon(QIcon(":/seer/resources/RelaxLightIcons/view-refresh.svg"));
2022-09-25 18:50:53 -05:00
refreshToolButton->setToolTip("Refresh the source/symbol/library information.");
QToolButton* helpToolButton = new QToolButton(tabWidget);
helpToolButton->setIcon(QIcon(":/seer/resources/RelaxLightIcons/help-about.svg"));
helpToolButton->setToolTip("Help on source/symbol/library information.");
QHContainerWidget* hcontainer = new QHContainerWidget(this);
hcontainer->setSpacing(3);
hcontainer->addWidget(refreshToolButton);
hcontainer->addWidget(helpToolButton);
tabWidget->setCornerWidget(hcontainer, Qt::TopRightCorner);
2021-09-01 14:01:00 -05:00
// Restore tab ordering.
readSettings();
2021-09-01 14:01:00 -05:00
// Connect things.
QObject::connect(refreshToolButton, &QToolButton::clicked, this, &SeerSourceSymbolLibraryManagerWidget::handleRefreshToolButtonClicked);
QObject::connect(helpToolButton, &QToolButton::clicked, this, &SeerSourceSymbolLibraryManagerWidget::handleHelpToolButtonClicked);
QObject::connect(tabWidget->tabBar(), &QTabBar::tabMoved, this, &SeerSourceSymbolLibraryManagerWidget::handleTabMoved);
QObject::connect(tabWidget->tabBar(), &QTabBar::currentChanged, this, &SeerSourceSymbolLibraryManagerWidget::handleTabChanged);
2021-09-01 14:01:00 -05:00
}
2022-09-25 18:50:53 -05:00
SeerSourceSymbolLibraryManagerWidget::~SeerSourceSymbolLibraryManagerWidget () {
2021-09-01 14:01:00 -05:00
}
2022-09-25 18:50:53 -05:00
SeerSourceBrowserWidget* SeerSourceSymbolLibraryManagerWidget::sourceBrowserWidget () {
2021-09-01 14:01:00 -05:00
return _sourceBrowserWidget;
}
2022-09-25 18:50:53 -05:00
SeerFunctionBrowserWidget* SeerSourceSymbolLibraryManagerWidget::functionBrowserWidget () {
2022-05-08 17:38:39 -05:00
return _functionBrowserWidget;
}
2022-09-25 18:50:53 -05:00
SeerTypeBrowserWidget* SeerSourceSymbolLibraryManagerWidget::typeBrowserWidget () {
return _typeBrowserWidget;
}
2022-09-25 18:50:53 -05:00
SeerStaticBrowserWidget* SeerSourceSymbolLibraryManagerWidget::staticBrowserWidget () {
return _staticBrowserWidget;
}
2022-09-25 18:50:53 -05:00
SeerLibraryBrowserWidget* SeerSourceSymbolLibraryManagerWidget::libraryBrowserWidget () {
2022-05-08 17:38:39 -05:00
return _libraryBrowserWidget;
2021-09-01 14:01:00 -05:00
}
2023-04-02 10:45:53 -05:00
SeerAdaExceptionsBrowserWidget* SeerSourceSymbolLibraryManagerWidget::adaExceptionsBrowserWidget () {
return _adaExceptionsBrowserWidget;
}
2025-03-26 19:57:22 -05:00
SeerSkipBrowserWidget* SeerSourceSymbolLibraryManagerWidget::skipBrowserWidget () {
return _skipBrowserWidget;
}
2022-09-25 18:50:53 -05:00
void SeerSourceSymbolLibraryManagerWidget::handleRefreshToolButtonClicked () {
2021-09-01 14:01:00 -05:00
sourceBrowserWidget()->refresh();
2022-05-08 17:38:39 -05:00
functionBrowserWidget()->refresh();
typeBrowserWidget()->refresh();
staticBrowserWidget()->refresh();
2022-05-08 17:38:39 -05:00
libraryBrowserWidget()->refresh();
2023-04-02 10:45:53 -05:00
adaExceptionsBrowserWidget()->refresh();
2025-03-26 19:57:22 -05:00
skipBrowserWidget()->refresh();
2021-09-01 14:01:00 -05:00
}
void SeerSourceSymbolLibraryManagerWidget::handleHelpToolButtonClicked () {
2023-01-27 19:16:15 +00:00
SeerHelpPageDialog* help = new SeerHelpPageDialog;
help->loadFile(":/seer/resources/help/SourceSymbolLibraryInfoBrowser.md");
help->show();
2023-01-27 19:16:15 +00:00
help->raise();
}
void SeerSourceSymbolLibraryManagerWidget::handleTabMoved (int from, int to) {
Q_UNUSED(from);
Q_UNUSED(to);
writeSettings();
}
void SeerSourceSymbolLibraryManagerWidget::handleTabChanged (int index) {
Q_UNUSED(index);
writeSettings();
}
void SeerSourceSymbolLibraryManagerWidget::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("sourcemanagerwindow"); {
settings.setValue("taborder", tabs.join(','));
settings.setValue("tabcurrent", current);
} settings.endGroup();
}
void SeerSourceSymbolLibraryManagerWidget::readSettings () {
// Can't move things?
if (tabWidget->tabBar()->isMovable() == false) {
return;
}
// Read tab order from settings.
QSettings settings;
QStringList tabs;
QString current;
settings.beginGroup("sourcemanagerwindow"); {
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);
}
}