2021-12-20 18:04:53 -06:00
|
|
|
#include "SeerConfigDialog.h"
|
2021-12-19 11:11:42 -06:00
|
|
|
#include <QtWidgets/QListWidget>
|
|
|
|
|
#include <QtWidgets/QListWidgetItem>
|
|
|
|
|
#include <QtWidgets/QStackedWidget>
|
2022-01-04 19:41:01 -06:00
|
|
|
#include <QtWidgets/QMessageBox>
|
2022-01-23 10:32:12 -06:00
|
|
|
#include <QtCore/QString>
|
|
|
|
|
#include <QtCore/QStringList>
|
2021-12-19 11:11:42 -06:00
|
|
|
#include <QtCore/QDebug>
|
|
|
|
|
|
|
|
|
|
SeerConfigDialog::SeerConfigDialog(QWidget* parent) : QDialog(parent) {
|
|
|
|
|
|
|
|
|
|
// Set up the UI.
|
|
|
|
|
setupUi(this);
|
|
|
|
|
|
|
|
|
|
// Setup the widgets
|
|
|
|
|
contentsListWidget->setViewMode(QListView::IconMode);
|
|
|
|
|
contentsListWidget->setIconSize(QSize(96, 84));
|
|
|
|
|
contentsListWidget->setMovement(QListView::Static);
|
|
|
|
|
contentsListWidget->setMaximumWidth(128);
|
|
|
|
|
contentsListWidget->setSpacing(12);
|
|
|
|
|
|
2021-12-20 18:04:53 -06:00
|
|
|
// Create pages.
|
|
|
|
|
_gdbConfigPage = new SeerGdbConfigPage;
|
|
|
|
|
_editorConfigPage = new SeerEditorConfigPage;
|
|
|
|
|
_sourceConfigPage = new SeerSourceConfigPage;
|
2022-02-19 10:54:26 -06:00
|
|
|
_keysConfigPage = new SeerKeysConfigPage;
|
2021-12-20 18:04:53 -06:00
|
|
|
_seerConfigPage = new SeerSeerConfigPage;
|
|
|
|
|
|
|
|
|
|
// Add the pages to the stacked widget.
|
|
|
|
|
pagesStackedWidget->addWidget(_gdbConfigPage);
|
|
|
|
|
pagesStackedWidget->addWidget(_editorConfigPage);
|
|
|
|
|
pagesStackedWidget->addWidget(_sourceConfigPage);
|
2022-02-19 10:54:26 -06:00
|
|
|
pagesStackedWidget->addWidget(_keysConfigPage);
|
2021-12-20 18:04:53 -06:00
|
|
|
pagesStackedWidget->addWidget(_seerConfigPage);
|
|
|
|
|
|
2021-12-19 11:11:42 -06:00
|
|
|
// Create icons.
|
|
|
|
|
QListWidgetItem* configGdbButton = new QListWidgetItem(contentsListWidget);
|
|
|
|
|
configGdbButton->setIcon(QIcon(":/seer/resources/gdb.png"));
|
|
|
|
|
configGdbButton->setText(tr("GDB"));
|
|
|
|
|
configGdbButton->setTextAlignment(Qt::AlignHCenter);
|
|
|
|
|
configGdbButton->setFlags(Qt::ItemIsSelectable | Qt::ItemIsEnabled);
|
|
|
|
|
|
|
|
|
|
QListWidgetItem* configEditorButton = new QListWidgetItem(contentsListWidget);
|
|
|
|
|
configEditorButton->setIcon(QIcon(":/seer/resources/editor.png"));
|
|
|
|
|
configEditorButton->setText(tr("Editor"));
|
|
|
|
|
configEditorButton->setTextAlignment(Qt::AlignHCenter);
|
|
|
|
|
configEditorButton->setFlags(Qt::ItemIsSelectable | Qt::ItemIsEnabled);
|
|
|
|
|
|
2021-12-20 18:04:53 -06:00
|
|
|
QListWidgetItem* configSourceButton = new QListWidgetItem(contentsListWidget);
|
|
|
|
|
configSourceButton->setIcon(QIcon(":/seer/resources/source.png"));
|
|
|
|
|
configSourceButton->setText(tr("Source"));
|
|
|
|
|
configSourceButton->setTextAlignment(Qt::AlignHCenter);
|
|
|
|
|
configSourceButton->setFlags(Qt::ItemIsSelectable | Qt::ItemIsEnabled);
|
|
|
|
|
|
2022-02-19 10:54:26 -06:00
|
|
|
QListWidgetItem* configKeysButton = new QListWidgetItem(contentsListWidget);
|
|
|
|
|
configKeysButton->setIcon(QIcon(":/seer/resources/keyboard-key.png"));
|
|
|
|
|
configKeysButton->setText(tr("Keys"));
|
|
|
|
|
configKeysButton->setTextAlignment(Qt::AlignHCenter);
|
|
|
|
|
configKeysButton->setFlags(Qt::ItemIsSelectable | Qt::ItemIsEnabled);
|
|
|
|
|
|
2021-12-20 18:04:53 -06:00
|
|
|
QListWidgetItem* configSeerButton = new QListWidgetItem(contentsListWidget);
|
|
|
|
|
configSeerButton->setIcon(QIcon(":/seer/resources/seer_128x128.png"));
|
|
|
|
|
configSeerButton->setText(tr("Seer"));
|
|
|
|
|
configSeerButton->setTextAlignment(Qt::AlignHCenter);
|
|
|
|
|
configSeerButton->setFlags(Qt::ItemIsSelectable | Qt::ItemIsEnabled);
|
2021-12-19 11:11:42 -06:00
|
|
|
|
|
|
|
|
// Connect things.
|
2022-01-04 19:41:01 -06:00
|
|
|
connect(contentsListWidget, &QListWidget::currentItemChanged, this, &SeerConfigDialog::handleChangePage);
|
|
|
|
|
connect(buttonBox, &QDialogButtonBox::clicked, this, &SeerConfigDialog::handleButtonClicked);
|
2021-12-20 18:04:53 -06:00
|
|
|
|
|
|
|
|
// Set to first page.
|
|
|
|
|
contentsListWidget->setCurrentRow(0);
|
2021-12-19 11:11:42 -06:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
SeerConfigDialog::~SeerConfigDialog() {
|
|
|
|
|
}
|
|
|
|
|
|
2021-12-26 14:57:58 -06:00
|
|
|
void SeerConfigDialog::setGdbProgram (const QString& program) {
|
|
|
|
|
|
|
|
|
|
_gdbConfigPage->setGdbProgram(program);
|
|
|
|
|
}
|
|
|
|
|
|
2021-12-20 20:28:00 -06:00
|
|
|
QString SeerConfigDialog::gdbProgram () const {
|
|
|
|
|
|
|
|
|
|
return _gdbConfigPage->gdbProgram();
|
|
|
|
|
}
|
|
|
|
|
|
2021-12-26 14:57:58 -06:00
|
|
|
void SeerConfigDialog::setGdbArguments (const QString& arguments) {
|
|
|
|
|
|
|
|
|
|
_gdbConfigPage->setGdbArguments(arguments);
|
|
|
|
|
}
|
|
|
|
|
|
2021-12-20 20:28:00 -06:00
|
|
|
QString SeerConfigDialog::gdbArguments () const {
|
|
|
|
|
|
|
|
|
|
return _gdbConfigPage->gdbArguments();
|
|
|
|
|
}
|
|
|
|
|
|
2021-12-26 14:57:58 -06:00
|
|
|
void SeerConfigDialog::setGdbAsyncMode (bool flag) {
|
2021-12-20 20:28:00 -06:00
|
|
|
|
2021-12-26 14:57:58 -06:00
|
|
|
_gdbConfigPage->setGdbAsyncMode(flag);
|
2021-12-20 20:28:00 -06:00
|
|
|
}
|
|
|
|
|
|
2021-12-26 14:57:58 -06:00
|
|
|
bool SeerConfigDialog::gdbAsyncMode () const {
|
2021-12-20 20:28:00 -06:00
|
|
|
|
2021-12-26 14:57:58 -06:00
|
|
|
return _gdbConfigPage->gdbAsyncMode();
|
2021-12-20 20:28:00 -06:00
|
|
|
}
|
|
|
|
|
|
2022-02-17 18:55:03 -06:00
|
|
|
void SeerConfigDialog::setDprintfStyle (const QString& style) {
|
|
|
|
|
|
|
|
|
|
_gdbConfigPage->setDprintfStyle(style);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
QString SeerConfigDialog::dprintfStyle () const {
|
|
|
|
|
|
|
|
|
|
return _gdbConfigPage->dprintfStyle();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void SeerConfigDialog::setDprintfFunction (const QString& function) {
|
|
|
|
|
|
|
|
|
|
_gdbConfigPage->setDprintfFunction(function);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
QString SeerConfigDialog::dprintfFunction () const {
|
|
|
|
|
|
|
|
|
|
return _gdbConfigPage->dprintfFunction();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void SeerConfigDialog::setDprintfChannel (const QString& channel) {
|
|
|
|
|
|
|
|
|
|
_gdbConfigPage->setDprintfChannel(channel);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
QString SeerConfigDialog::dprintfChannel () const {
|
|
|
|
|
|
|
|
|
|
return _gdbConfigPage->dprintfChannel();
|
|
|
|
|
}
|
|
|
|
|
|
2021-12-26 14:57:58 -06:00
|
|
|
void SeerConfigDialog::setEditorFont (const QFont& font) {
|
2021-12-20 20:28:00 -06:00
|
|
|
|
2021-12-26 14:57:58 -06:00
|
|
|
_editorConfigPage->setEditorFont(font);
|
2021-12-20 20:28:00 -06:00
|
|
|
}
|
|
|
|
|
|
2021-12-26 14:57:58 -06:00
|
|
|
const QFont& SeerConfigDialog::editorFont () const {
|
2021-12-20 20:28:00 -06:00
|
|
|
|
2021-12-26 14:57:58 -06:00
|
|
|
return _editorConfigPage->editorFont();
|
2021-12-20 20:28:00 -06:00
|
|
|
}
|
|
|
|
|
|
2022-01-03 16:03:07 -06:00
|
|
|
void SeerConfigDialog::setEditorHighlighterSettings (const SeerHighlighterSettings& settings) {
|
|
|
|
|
|
|
|
|
|
_editorConfigPage->setHighlighterSettings(settings);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
const SeerHighlighterSettings& SeerConfigDialog::editorHighlighterSettings () const {
|
|
|
|
|
|
|
|
|
|
return _editorConfigPage->highlighterSettings();
|
|
|
|
|
}
|
|
|
|
|
|
2022-01-08 12:39:37 -06:00
|
|
|
void SeerConfigDialog::setEditorHighlighterEnabled (bool flag) {
|
|
|
|
|
|
|
|
|
|
_editorConfigPage->setHighlighterEnabled(flag);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
bool SeerConfigDialog::editorHighlighterEnabled () const {
|
|
|
|
|
|
|
|
|
|
return _editorConfigPage->highlighterEnabled();
|
|
|
|
|
}
|
|
|
|
|
|
2022-01-23 10:32:12 -06:00
|
|
|
void SeerConfigDialog::setSourceAlternateDirectories (const QStringList& alternateDirectories) {
|
|
|
|
|
|
|
|
|
|
_sourceConfigPage->setAlternateDirectories(alternateDirectories);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
QStringList SeerConfigDialog::sourceAlternateDirectories () const {
|
|
|
|
|
|
|
|
|
|
return _sourceConfigPage->alternateDirectories();
|
|
|
|
|
}
|
|
|
|
|
|
2022-01-11 19:47:31 -06:00
|
|
|
void SeerConfigDialog::setSeerRememberWindowSizes (bool flag) {
|
|
|
|
|
|
|
|
|
|
_seerConfigPage->setRememberWindowSizes(flag);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
bool SeerConfigDialog::seerRememberWindowSizes () const {
|
|
|
|
|
|
|
|
|
|
return _seerConfigPage->rememberWindowSizes();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void SeerConfigDialog::setSeerConsoleMode (const QString& mode) {
|
|
|
|
|
|
|
|
|
|
_seerConfigPage->setConsoleMode(mode);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
QString SeerConfigDialog::seerConsoleMode () const {
|
|
|
|
|
|
|
|
|
|
return _seerConfigPage->consoleMode();
|
|
|
|
|
}
|
|
|
|
|
|
2022-01-16 09:55:17 -06:00
|
|
|
void SeerConfigDialog::setSeerRememberManualCommandCount (int count) {
|
|
|
|
|
|
|
|
|
|
_seerConfigPage->setRememberManualCommandCount(count);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
int SeerConfigDialog::seerRememberManualCommandCount () const {
|
|
|
|
|
|
|
|
|
|
return _seerConfigPage->rememberManualCommandCount();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void SeerConfigDialog::setSeerClearManualCommandHistory (bool flag) {
|
|
|
|
|
|
|
|
|
|
_seerConfigPage->setClearManualCommandHistory(flag);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
bool SeerConfigDialog::seerClearManualCommandHistory () const {
|
|
|
|
|
|
|
|
|
|
return _seerConfigPage->clearManualCommandHistory();
|
|
|
|
|
}
|
|
|
|
|
|
2022-01-04 19:41:01 -06:00
|
|
|
void SeerConfigDialog::handleChangePage(QListWidgetItem* current, QListWidgetItem* previous) {
|
|
|
|
|
|
2022-01-20 10:40:56 -06:00
|
|
|
//qDebug() << current << previous;
|
2022-01-04 19:41:01 -06:00
|
|
|
|
|
|
|
|
if (!current) {
|
|
|
|
|
current = previous;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
pagesStackedWidget->setCurrentIndex(contentsListWidget->row(current));
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void SeerConfigDialog::handleButtonClicked (QAbstractButton* button) {
|
|
|
|
|
|
|
|
|
|
// Handle resetting the config pages if "Reset" is clicked.
|
|
|
|
|
if (buttonBox->buttonRole(button) == QDialogButtonBox::ResetRole) {
|
|
|
|
|
|
|
|
|
|
QString itemLabel = contentsListWidget->currentItem()->text();
|
|
|
|
|
|
2022-01-16 09:55:17 -06:00
|
|
|
int result = QMessageBox::warning(this, "Seer",
|
|
|
|
|
QString("Reset settings for '") + itemLabel + "'?",
|
|
|
|
|
QMessageBox::Ok|QMessageBox::Cancel, QMessageBox::Cancel);
|
2022-01-04 19:41:01 -06:00
|
|
|
|
2022-01-16 09:55:17 -06:00
|
|
|
if (result != QMessageBox::Ok) {
|
|
|
|
|
return;
|
|
|
|
|
}
|
2022-01-04 19:41:01 -06:00
|
|
|
|
2022-01-16 09:55:17 -06:00
|
|
|
if (itemLabel == "GDB") {
|
2022-01-04 19:41:01 -06:00
|
|
|
|
2022-01-16 09:55:17 -06:00
|
|
|
setGdbProgram("/usr/bin/gdb");
|
|
|
|
|
setGdbArguments("--interpreter=mi");
|
|
|
|
|
setGdbAsyncMode(true);
|
2022-01-04 19:41:01 -06:00
|
|
|
|
2022-02-17 18:55:03 -06:00
|
|
|
setDprintfStyle("gdb");
|
|
|
|
|
setDprintfFunction("printf");
|
|
|
|
|
setDprintfChannel("");
|
|
|
|
|
|
2022-01-16 09:55:17 -06:00
|
|
|
}else if (itemLabel == "Editor") {
|
2022-01-04 19:41:01 -06:00
|
|
|
|
2022-01-16 09:55:17 -06:00
|
|
|
setEditorFont(QFont("Source Code Pro", 10));
|
|
|
|
|
setEditorHighlighterSettings(SeerHighlighterSettings::populateForCPP());
|
|
|
|
|
setEditorHighlighterEnabled(true);
|
2022-01-04 19:41:01 -06:00
|
|
|
|
|
|
|
|
}else if (itemLabel == "Source") {
|
|
|
|
|
|
2022-01-23 10:32:12 -06:00
|
|
|
QStringList alternateDirectories;
|
|
|
|
|
|
|
|
|
|
alternateDirectories << "./";
|
|
|
|
|
|
|
|
|
|
setSourceAlternateDirectories(alternateDirectories);
|
|
|
|
|
|
2022-01-04 19:41:01 -06:00
|
|
|
}else if (itemLabel == "Seer") {
|
|
|
|
|
|
2022-01-16 09:55:17 -06:00
|
|
|
setSeerConsoleMode("normal");
|
|
|
|
|
setSeerRememberWindowSizes(true);
|
|
|
|
|
setSeerRememberManualCommandCount(10);
|
|
|
|
|
setSeerClearManualCommandHistory(false);
|
2022-01-04 19:41:01 -06:00
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|