Finished adding a Icon Theme option (auto/light/dark).

This commit is contained in:
Ernie Pasveer
2026-07-23 11:16:48 -05:00
parent 768d14e298
commit 81bd82ef50
16 changed files with 121 additions and 119 deletions
+1 -1
View File
@@ -53,7 +53,7 @@ SeerAboutDialog::~SeerAboutDialog () {
void SeerAboutDialog::handleThemeChanged () {
// Get the colorized icon.
QIcon icon = Seer::colorizeIcon(QIcon(":/seer/resources/icons/hicolor/256x256/seergdb.png"), Seer::iconColorMode(), QSize(256,256));
QIcon icon = Seer::colorizeIcon(QIcon(":/seer/resources/icons/hicolor/256x256/seergdb.png"), Seer::iconColorTheme(), QSize(256,256));
// Set the label's pixmap
label->setPixmap(icon.pixmap(QSize(256,256)));
+4 -4
View File
@@ -137,8 +137,8 @@ SeerArrayVisualizerWidget::SeerArrayVisualizerWidget (QWidget* parent) : QWidget
#endif
// Colorize icons for theme.
Seer::colorizeAllIcons(this, Seer::iconColorMode());
Seer::colorizeChartViewItem(arrayChartView, Seer::iconColorMode());
Seer::colorizeAllIcons(this, Seer::iconColorTheme());
Seer::colorizeChartViewItem(arrayChartView, Seer::iconColorTheme());
// Restore window settings.
readSettings();
@@ -1123,10 +1123,10 @@ void SeerArrayVisualizerWidget::handleLineTypeButtonGroup () {
void SeerArrayVisualizerWidget::handleThemeChanged () {
// Colorize icons for theme.
Seer::colorizeAllIcons(this, Seer::iconColorMode());
Seer::colorizeAllIcons(this, Seer::iconColorTheme());
// And the ChartView.
Seer::colorizeChartViewItem(arrayChartView, Seer::iconColorMode());
Seer::colorizeChartViewItem(arrayChartView, Seer::iconColorTheme());
}
void SeerArrayVisualizerWidget::createASeries() {
+8 -8
View File
@@ -110,14 +110,14 @@ SeerConfigDialog::SeerConfigDialog(QWidget* parent) : QDialog(parent) {
connect(buttonBox, &QDialogButtonBox::clicked, this, &SeerConfigDialog::handleButtonClicked);
// Colorize icons for theme.
Seer::colorizeAllIcons(this, Seer::iconColorMode());
Seer::colorizeListWidgetItemIcon(configSeerButton, Seer::iconColorMode(), QSize(128,128));
Seer::colorizeListWidgetItemIcon(configGdbButton, Seer::iconColorMode(), QSize(128,128));
Seer::colorizeListWidgetItemIcon(configEditorButton, Seer::iconColorMode(), QSize(128,128));
Seer::colorizeListWidgetItemIcon(configSourceButton, Seer::iconColorMode(), QSize(128,128));
Seer::colorizeListWidgetItemIcon(configAssemblyButton, Seer::iconColorMode(), QSize(128,128));
Seer::colorizeListWidgetItemIcon(configKeysButton, Seer::iconColorMode(), QSize(128,128));
// Seer::colorizeListWidgetItemIcon(configRRButton, Seer::iconColorMode(), QSize(128,128)); // Don't change. It's a multi-colored icon.
Seer::colorizeAllIcons(this, Seer::iconColorTheme());
Seer::colorizeListWidgetItemIcon(configSeerButton, Seer::iconColorTheme(), QSize(128,128));
Seer::colorizeListWidgetItemIcon(configGdbButton, Seer::iconColorTheme(), QSize(128,128));
Seer::colorizeListWidgetItemIcon(configEditorButton, Seer::iconColorTheme(), QSize(128,128));
Seer::colorizeListWidgetItemIcon(configSourceButton, Seer::iconColorTheme(), QSize(128,128));
Seer::colorizeListWidgetItemIcon(configAssemblyButton, Seer::iconColorTheme(), QSize(128,128));
Seer::colorizeListWidgetItemIcon(configKeysButton, Seer::iconColorTheme(), QSize(128,128));
// Seer::colorizeListWidgetItemIcon(configRRButton, Seer::iconColorTheme(), QSize(128,128)); // Don't change. It's a multi-colored icon.
// Set to first page.
contentsListWidget->setCurrentRow(0);
+1 -1
View File
@@ -76,7 +76,7 @@ SeerDebugDialog::SeerDebugDialog (QWidget* parent) : QDialog(parent) {
QObject::connect(buttonBox, &QDialogButtonBox::clicked, this, &SeerDebugDialog::handleResetButtonClicked);
// Colorize icons for theme.
Seer::colorizeAllIcons(this, Seer::iconColorMode());
Seer::colorizeAllIcons(this, Seer::iconColorTheme());
// Set initial run mode.
handleRunModeChanged(0);
+2 -2
View File
@@ -67,7 +67,7 @@ SeerGdbMonitorWidget::SeerGdbMonitorWidget (QWidget* parent) : QWidget(parent) {
#endif
// Colorize icons for theme.
Seer::colorizeAllIcons(this, Seer::iconColorMode());
Seer::colorizeAllIcons(this, Seer::iconColorTheme());
// Restore window settings.
readSettings();
@@ -196,7 +196,7 @@ void SeerGdbMonitorWidget::handleMacroToolButtonClicked (QAbstractButton* button
void SeerGdbMonitorWidget::handleThemeChanged () {
// Colorize icons for theme.
Seer::colorizeAllIcons(this, Seer::iconColorMode());
Seer::colorizeAllIcons(this, Seer::iconColorTheme());
}
void SeerGdbMonitorWidget::writeSettings() {
+1 -1
View File
@@ -27,7 +27,7 @@ SeerHelpPageDialog::SeerHelpPageDialog(QDialog* parent) : QDialog(parent) {
QObject::connect(okPushButton, &QPushButton::clicked, this, &SeerHelpPageDialog::handleOkPushButton);
// Colorize icons for theme.
Seer::colorizeAllIcons(this, Seer::iconColorMode());
Seer::colorizeAllIcons(this, Seer::iconColorTheme());
// Restore window settings.
readSettings();
+2 -2
View File
@@ -54,7 +54,7 @@ SeerImageVisualizerWidget::SeerImageVisualizerWidget (QWidget* parent) : QWidget
#endif
// Colorize icons for theme.
Seer::colorizeAllIcons(this, Seer::iconColorMode());
Seer::colorizeAllIcons(this, Seer::iconColorTheme());
// Restore window settings.
readSettings();
@@ -421,7 +421,7 @@ void SeerImageVisualizerWidget::handleCreateImage (const QByteArray& array) {
void SeerImageVisualizerWidget::handleThemeChanged () {
// Colorize icons for theme.
Seer::colorizeAllIcons(this, Seer::iconColorMode());
Seer::colorizeAllIcons(this, Seer::iconColorTheme());
}
void SeerImageVisualizerWidget::writeSettings() {
+11 -13
View File
@@ -253,7 +253,7 @@ SeerMainWindow::SeerMainWindow(QWidget* parent) : QMainWindow(parent) {
#endif
// Colorize icons for theme.
Seer::colorizeAllIcons(this, Seer::iconColorMode());
Seer::colorizeAllIcons(this, Seer::iconColorTheme());
handleRecordSettingsChanged();
@@ -607,17 +607,15 @@ const QString& SeerMainWindow::styleName () {
return _styleName;
}
void SeerMainWindow::setIconColorName (const QString& name) {
void SeerMainWindow::setIconColorTheme(const QString& mode) {
// Check for Dark/Light style from Seer's resource tree.
if (name == "auto" || name == "dark" || name == "light") {
Seer::setIconColorTheme(mode);
_iconColorName = name;
}
handleThemeChanged(); // Will trigger the icon colorization.
}
const QString& SeerMainWindow::iconColorName () {
return _iconColorName;
const QString& SeerMainWindow::iconColorTheme () {
return Seer::iconColorTheme();
}
void SeerMainWindow::handleFileDebugWithDefaultProject () {
@@ -1078,7 +1076,7 @@ void SeerMainWindow::handleIconColorMenuChanged () {
return;
}
setIconColorName(action->text());
setIconColorTheme(action->text());
}
void SeerMainWindow::handleShowMessage (QString message, int time) {
@@ -1746,7 +1744,7 @@ void SeerMainWindow::writeConfigSettings () {
settings.beginGroup("mainwindow"); {
settings.setValue("qtstyle", styleName());
settings.setValue("iconcolor", iconColorName());
settings.setValue("iconcolortheme", iconColorTheme());
} settings.endGroup();
settings.beginGroup("gdb"); {
@@ -1830,8 +1828,8 @@ void SeerMainWindow::readConfigSettings () {
if (settings.contains("qtstyle")) {
setStyleName(settings.value("qtstyle").toString());
}
if (settings.contains("iconcolor")) {
setIconColorName(settings.value("iconcolor").toString());
if (settings.contains("iconcolortheme")) {
setIconColorTheme(settings.value("iconcolortheme").toString());
}
} settings.endGroup();
@@ -2197,6 +2195,6 @@ void SeerMainWindow::handleGdbTargetInterrupt() {
void SeerMainWindow::handleThemeChanged () {
// Colorize icons for theme.
Seer::colorizeAllIcons(this, Seer::iconColorMode());
Seer::colorizeAllIcons(this, Seer::iconColorTheme());
}
+2 -3
View File
@@ -76,8 +76,8 @@ class SeerMainWindow : public QMainWindow, protected Ui::SeerMainWindowForm {
void setStyleName (const QString& name);
const QString& styleName ();
void setIconColorName (const QString& name);
const QString& iconColorName ();
void setIconColorTheme (const QString& theme);
const QString& iconColorTheme ();
private slots:
void handleFileDebugWithDefaultProject ();
@@ -131,7 +131,6 @@ class SeerMainWindow : public QMainWindow, protected Ui::SeerMainWindowForm {
QActionGroup* _themeStyleMenuActionGroup;
QActionGroup* _iconColorMenuActionGroup;
QString _styleName;
QString _iconColorName;
QAction* _interruptAction;
SeerProgressIndicator* _progressIndicator;
SeerKeySettings _keySettings;
+1 -1
View File
@@ -72,7 +72,7 @@
</widget>
<widget class="QMenu" name="menuIconColor">
<property name="title">
<string>Icon Color</string>
<string>Icon Theme</string>
</property>
<property name="icon">
<iconset resource="resource.qrc">
+2 -2
View File
@@ -65,7 +65,7 @@ SeerMatrixVisualizerWidget::SeerMatrixVisualizerWidget (QWidget* parent) : QWidg
#endif
// Colorize icons for theme.
Seer::colorizeAllIcons(this, Seer::iconColorMode());
Seer::colorizeAllIcons(this, Seer::iconColorTheme());
// Restore window settings.
readSettings();
@@ -647,7 +647,7 @@ void SeerMatrixVisualizerWidget::handleDataChanged () {
void SeerMatrixVisualizerWidget::handleThemeChanged () {
// Colorize icons for theme.
Seer::colorizeAllIcons(this, Seer::iconColorMode());
Seer::colorizeAllIcons(this, Seer::iconColorTheme());
}
void SeerMatrixVisualizerWidget::writeSettings() {
+2 -2
View File
@@ -79,7 +79,7 @@ SeerMemoryVisualizerWidget::SeerMemoryVisualizerWidget (QWidget* parent) : QWidg
#endif
// Colorize icons for theme.
Seer::colorizeAllIcons(this, Seer::iconColorMode());
Seer::colorizeAllIcons(this, Seer::iconColorTheme());
// Restore window settings.
readSettings();
@@ -497,7 +497,7 @@ void SeerMemoryVisualizerWidget::handleSaveButton () {
void SeerMemoryVisualizerWidget::handleThemeChanged () {
// Colorize icons for theme.
Seer::colorizeAllIcons(this, Seer::iconColorMode());
Seer::colorizeAllIcons(this, Seer::iconColorTheme());
}
void SeerMemoryVisualizerWidget::writeSettings() {
+2 -2
View File
@@ -53,7 +53,7 @@ SeerStructVisualizerWidget::SeerStructVisualizerWidget (QWidget* parent) : QWidg
#endif
// Colorize icons for theme.
Seer::colorizeAllIcons(this, Seer::iconColorMode());
Seer::colorizeAllIcons(this, Seer::iconColorTheme());
// Restore window settings.
readSettings();
@@ -511,7 +511,7 @@ void SeerStructVisualizerWidget::handleVariableNameLineEdit () {
void SeerStructVisualizerWidget::handleThemeChanged () {
// Colorize icons for theme.
Seer::colorizeAllIcons(this, Seer::iconColorMode());
Seer::colorizeAllIcons(this, Seer::iconColorTheme());
}
void SeerStructVisualizerWidget::writeSettings () {
+30 -25
View File
@@ -1386,23 +1386,28 @@ namespace Seer {
//
// Icon colorization.
//
static QString _iconColorMode = "auto";
static QString _iconColorTheme = "auto";
void setIconColorMode (const QString& colorMode) {
_iconColorMode = colorMode;
void setIconColorTheme (const QString& colorTheme) {
if (colorTheme == "auto" || colorTheme == "dark" || colorTheme == "light") {
_iconColorTheme = colorTheme;
}else{
qDebug() << "Bad iconColorTheme of: " << colorTheme;
}
}
const QString& iconColorMode () {
return _iconColorMode;
const QString& iconColorTheme () {
return _iconColorTheme;
}
void colorizeAllIcons (QWidget* parent, const QString& colorMode, const QSize& size) {
void colorizeAllIcons (QWidget* parent, const QString& colorTheme, const QSize& size) {
if (parent == nullptr) {
return;
}
if (colorMode == "auto") {
if (colorTheme == "auto") {
#if QT_VERSION >= QT_VERSION_CHECK(6, 6, 3)
// Get the current color scheme
@@ -1419,7 +1424,7 @@ namespace Seer {
#endif
return;
}else if (colorMode == "light") {
}else if (colorTheme == "light") {
// Look for all button types.
const auto buttons = parent->findChildren<QAbstractButton*>();
@@ -1449,7 +1454,7 @@ namespace Seer {
return;
}else if (colorMode == "dark") {
}else if (colorTheme == "dark") {
// Look for all button types.
const auto buttons = parent->findChildren<QAbstractButton*>();
@@ -1480,16 +1485,16 @@ namespace Seer {
return;
}
qDebug() << "Bad iconColorMode of: " << colorMode;
qDebug() << "Bad iconColorTheme of: " << colorTheme;
}
void colorizeListWidgetItemIcon (QListWidgetItem* item, const QString& colorMode, const QSize& size) {
void colorizeListWidgetItemIcon (QListWidgetItem* item, const QString& colorTheme, const QSize& size) {
if (item == nullptr) {
return;
}
if (colorMode == "auto") {
if (colorTheme == "auto") {
#if QT_VERSION >= QT_VERSION_CHECK(6, 6, 3)
// Get the current color scheme
@@ -1506,18 +1511,18 @@ namespace Seer {
#endif
return;
}else if (colorMode == "light") {
}else if (colorTheme == "light") {
item->setIcon(Seer::colorizeIcon(item->icon(), QColor("black"), size));
return;
}else if (colorMode == "dark") {
}else if (colorTheme == "dark") {
item->setIcon(Seer::colorizeIcon(item->icon(), QColor("white"), size));
return;
}
qDebug() << "Bad iconColorMode of: " << colorMode;
qDebug() << "Bad iconColorTheme of: " << colorTheme;
}
void colorizeChartViewItem (QChartView* item, const QString& colorMode) {
void colorizeChartViewItem (QChartView* item, const QString& colorTheme) {
if (item == nullptr) {
return;
@@ -1529,7 +1534,7 @@ namespace Seer {
return;
}
if (colorMode == "auto") {
if (colorTheme == "auto") {
#if QT_VERSION >= QT_VERSION_CHECK(6, 6, 3)
// Get the current color scheme
@@ -1546,20 +1551,20 @@ namespace Seer {
#endif
return;
}else if (colorMode == "light") {
}else if (colorTheme == "light") {
chart->setTheme(QChart::ChartThemeLight);
return;
}else if (colorMode == "dark") {
}else if (colorTheme == "dark") {
chart->setTheme(QChart::ChartThemeDark);
return;
}
qDebug() << "Bad iconColorMode of: " << colorMode;
qDebug() << "Bad iconColorTheme of: " << colorTheme;
}
QIcon colorizeIcon (const QIcon& icon, const QString& colorMode, const QSize& size) {
QIcon colorizeIcon (const QIcon& icon, const QString& colorTheme, const QSize& size) {
if (colorMode == "auto") {
if (colorTheme == "auto") {
#if QT_VERSION >= QT_VERSION_CHECK(6, 6, 3)
// Get the current color scheme
@@ -1576,13 +1581,13 @@ namespace Seer {
#endif
return icon;
}else if (colorMode == "light") {
}else if (colorTheme == "light") {
return Seer::colorizeIcon(icon, QColor("white"), size);
}else if (colorMode == "dark") {
}else if (colorTheme == "dark") {
return Seer::colorizeIcon(icon, QColor("black"), size);
}
qDebug() << "Bad iconColorMode of: " << colorMode;
qDebug() << "Bad iconColorTheme of: " << colorTheme;
return icon;
}
+50 -50
View File
@@ -22,58 +22,58 @@
namespace Seer {
QString version ();
QString version ();
QString filterBareNewLines (const QString& str);
QString filterEscapes (const QString& str);
QStringList filterEscapes (const QStringList& strings);
QString expandTabs (const QString& str, int tabwidth, bool morph);
QString expandEnv (const QString& str, bool* ok = nullptr);
QStringList parse (const QString& str, const QString& search, QChar startBracket, QChar endBracket, bool includeSearch);
QString parseFirst (const QString& str, const QString& search, QChar startBracket, QChar endBracket, bool includeSearch);
QString parseFirst (const QString& str, const QString& search, bool includeSearch);
bool hasBookends (const QString& str, QChar startBracket, QChar endBracket);
QString filterBookends (const QString& str, QChar startBracket, QChar endBracket);
QStringList filterBookends (const QStringList& strings, QChar startBracket, QChar endBracket);
QStringList parseCommaList (const QString& str);
QStringList parseCommaList (const QString& str, QChar startBracket, QChar endBracket);
QStringList parseArray (const QString& parentName, const QString& str);
QMap<QString,QString> createKeyValueMap (const QStringList& list, QChar separator);
QStringPair parseNameValue (const QString& str, QChar separator);
QString quoteChars (const QString& str, const QString& chars);
QStringList quoteChars (const QStringList& strings, const QString& chars);
QString varObjParent (const QString& str);
bool matchesWildcard (const QStringList& regexpatterns, const QString& string);
bool hasWildcards (const QString& str);
QString elideText (const QString& str, Qt::TextElideMode mode, int length);
QStringList split (const QString& str);
QString unescape (const QString& str);
int createID ();
unsigned char ebcdicToAscii (unsigned char byte);
unsigned char ucharToAscii (unsigned char byte);
QString ucharToHex (const QVector<quint8>& bytes, int from, int count);
QString ucharToOctal (const QVector<quint8>& bytes, int from, int count);
QString ucharToAscii (const QVector<quint8>& bytes, int from, int count);
QString ucharToUShort (const QVector<quint8>& bytes, int from, int count);
QString ucharToShort (const QVector<quint8>& bytes, int from, int count);
QString ucharToUInt (const QVector<quint8>& bytes, int from, int count);
QString ucharToInt (const QVector<quint8>& bytes, int from, int count);
QString ucharToULong (const QVector<quint8>& bytes, int from, int count);
QString ucharToLong (const QVector<quint8>& bytes, int from, int count);
QString ucharToFloat (const QVector<quint8>& bytes, int from, int count);
QString ucharToDouble (const QVector<quint8>& bytes, int from, int count);
int typeBytes (const QString& type);
bool readFile (const QString& filename, QStringList& lines);
void printStackTrace ();
bool isFileExistNotify (const QString& filename);
bool isDirExistNotify (const QString& dirname);
QString filterBareNewLines (const QString& str);
QString filterEscapes (const QString& str);
QStringList filterEscapes (const QStringList& strings);
QString expandTabs (const QString& str, int tabwidth, bool morph);
QString expandEnv (const QString& str, bool* ok = nullptr);
QStringList parse (const QString& str, const QString& search, QChar startBracket, QChar endBracket, bool includeSearch);
QString parseFirst (const QString& str, const QString& search, QChar startBracket, QChar endBracket, bool includeSearch);
QString parseFirst (const QString& str, const QString& search, bool includeSearch);
bool hasBookends (const QString& str, QChar startBracket, QChar endBracket);
QString filterBookends (const QString& str, QChar startBracket, QChar endBracket);
QStringList filterBookends (const QStringList& strings, QChar startBracket, QChar endBracket);
QStringList parseCommaList (const QString& str);
QStringList parseCommaList (const QString& str, QChar startBracket, QChar endBracket);
QStringList parseArray (const QString& parentName, const QString& str);
QMap<QString,QString> createKeyValueMap (const QStringList& list, QChar separator);
QStringPair parseNameValue (const QString& str, QChar separator);
QString quoteChars (const QString& str, const QString& chars);
QStringList quoteChars (const QStringList& strings, const QString& chars);
QString varObjParent (const QString& str);
bool matchesWildcard (const QStringList& regexpatterns, const QString& string);
bool hasWildcards (const QString& str);
QString elideText (const QString& str, Qt::TextElideMode mode, int length);
QStringList split (const QString& str);
QString unescape (const QString& str);
int createID ();
unsigned char ebcdicToAscii (unsigned char byte);
unsigned char ucharToAscii (unsigned char byte);
QString ucharToHex (const QVector<quint8>& bytes, int from, int count);
QString ucharToOctal (const QVector<quint8>& bytes, int from, int count);
QString ucharToAscii (const QVector<quint8>& bytes, int from, int count);
QString ucharToUShort (const QVector<quint8>& bytes, int from, int count);
QString ucharToShort (const QVector<quint8>& bytes, int from, int count);
QString ucharToUInt (const QVector<quint8>& bytes, int from, int count);
QString ucharToInt (const QVector<quint8>& bytes, int from, int count);
QString ucharToULong (const QVector<quint8>& bytes, int from, int count);
QString ucharToLong (const QVector<quint8>& bytes, int from, int count);
QString ucharToFloat (const QVector<quint8>& bytes, int from, int count);
QString ucharToDouble (const QVector<quint8>& bytes, int from, int count);
int typeBytes (const QString& type);
bool readFile (const QString& filename, QStringList& lines);
void printStackTrace ();
bool isFileExistNotify (const QString& filename);
bool isDirExistNotify (const QString& dirname);
void setIconColorMode (const QString& colorMode);
const QString& iconColorMode ();
void colorizeAllIcons (QWidget* parent, const QString& colorMode, const QSize& size = QSize(32,32));
void colorizeListWidgetItemIcon (QListWidgetItem* item, const QString& colorMode, const QSize& size = QSize(32,32));
void colorizeChartViewItem (QChartView* item, const QString& colorMode);
QIcon colorizeIcon (const QIcon& icon, const QString& colorMode, const QSize& size = QSize(32,32));
void setIconColorTheme (const QString& colorTheme);
const QString& iconColorTheme ();
void colorizeAllIcons (QWidget* parent, const QString& colorTheme, const QSize& size = QSize(32,32));
void colorizeListWidgetItemIcon (QListWidgetItem* item, const QString& colorTheme, const QSize& size = QSize(32,32));
void colorizeChartViewItem (QChartView* item, const QString& colorTheme);
QIcon colorizeIcon (const QIcon& icon, const QString& colorTheme, const QSize& size = QSize(32,32));
QIcon colorizeIcon (const QIcon& icon, const QColor& color, const QSize& size = QSize(32,32));
}
+2 -2
View File
@@ -90,7 +90,7 @@ SeerVarVisualizerWidget::SeerVarVisualizerWidget (QWidget* parent) : QWidget(par
#endif
// Colorize icons for theme.
Seer::colorizeAllIcons(this, Seer::iconColorMode());
Seer::colorizeAllIcons(this, Seer::iconColorTheme());
// Show/hide columns.
handleDebugCheckBox();
@@ -946,7 +946,7 @@ void SeerVarVisualizerWidget::handleIndexEditingFinished (const QModelIndex& ind
void SeerVarVisualizerWidget::handleThemeChanged () {
// Colorize icons for theme.
Seer::colorizeAllIcons(this, Seer::iconColorMode());
Seer::colorizeAllIcons(this, Seer::iconColorTheme());
}
QTreeWidgetItem* SeerVarVisualizerWidget::findItem (const QString& text, Qt::MatchFlags flags, int column) {