Added a GUI style selection combo box. Lists all built in GUI styles available. This allows user to change the GUI style while it is running. Also, style setting is saved and used for future GUI startups.

This commit is contained in:
mjbudd77 2021-03-01 20:24:00 -05:00
parent 8347e2fd0b
commit ac0f377873
4 changed files with 70 additions and 0 deletions

View File

@ -36,6 +36,8 @@
#include <QMessageBox>
#include <QInputDialog>
#include <QDesktopServices>
#include <QStyleFactory>
#include <QApplication>
#include <QUrl>
#include "../../fceu.h"
@ -88,6 +90,19 @@ consoleWin_t::consoleWin_t(QWidget *parent)
int opt, xWinSize = 256, yWinSize = 240;
int use_SDL_video = false;
int setFullScreen = false;
std::string guiStyle;
g_config->getOption("SDL.GuiStyle", &guiStyle );
if ( guiStyle.size() > 0 )
{
QStyle *sty = QStyleFactory::create( tr(guiStyle.c_str()) );
if ( sty != nullptr )
{
QApplication::setStyle(sty);
}
}
createMainMenu();

View File

@ -20,6 +20,8 @@
// PaletteConf.cpp
//
#include <QTextEdit>
#include <QApplication>
#include <QStyleFactory>
#include "Qt/GuiConf.h"
#include "Qt/main.h"
@ -38,8 +40,14 @@ GuiConfDialog_t::GuiConfDialog_t(QWidget *parent)
QVBoxLayout *mainLayout;
QHBoxLayout *hbox;
QPushButton *closeButton;
QLabel *lbl;
QStringList styleKeys;
QString selStyle;
//resize( 512, 600 );
//printf("Style: %s \n", style()->objectName().toStdString().c_str() );
selStyle = style()->objectName();
// sync with config
g_config->getOption("SDL.UseNativeFileDialog", &useNativeFileDialogVal);
@ -58,6 +66,29 @@ GuiConfDialog_t::GuiConfDialog_t(QWidget *parent)
connect(useNativeFileDialog, SIGNAL(stateChanged(int)), this, SLOT(useNativeFileDialogChanged(int)));
connect(useNativeMenuBar, SIGNAL(stateChanged(int)), this, SLOT(useNativeMenuBarChanged(int)));
hbox = new QHBoxLayout();
lbl = new QLabel( tr("Style:") );
styleComboBox = new QComboBox();
styleKeys = QStyleFactory::keys();
for (int i=0; i<styleKeys.size(); i++)
{
styleComboBox->addItem( styleKeys[i], i );
if ( selStyle.compare( styleKeys[i], Qt::CaseInsensitive ) == 0 )
{
//printf("Style Match: %s \n", selStyle.toStdString().c_str() );
styleComboBox->setCurrentIndex(i);
}
}
connect(styleComboBox, SIGNAL(currentIndexChanged(int)), this, SLOT(styleChanged(int)));
hbox->addWidget( lbl, 1 );
hbox->addWidget( styleComboBox, 10 );
mainLayout->addLayout(hbox);
mainLayout->addWidget(useNativeFileDialog);
mainLayout->addWidget(useNativeMenuBar);
@ -65,6 +96,7 @@ GuiConfDialog_t::GuiConfDialog_t(QWidget *parent)
closeButton->setIcon(style()->standardIcon(QStyle::SP_DialogCloseButton));
connect(closeButton, SIGNAL(clicked(void)), this, SLOT(closeWindow(void)));
hbox = new QHBoxLayout();
hbox->addStretch(3);
hbox->addWidget( closeButton, 3 );
@ -111,3 +143,23 @@ void GuiConfDialog_t::useNativeMenuBarChanged(int state)
consoleWindow->menuBar()->setNativeMenuBar(value);
}
//----------------------------------------------------
void GuiConfDialog_t::styleChanged(int index)
{
QString s;
QStyle *sty;
s = styleComboBox->currentText();
//printf("Style: '%s'\n", s.toStdString().c_str() );
sty = QStyleFactory::create( s );
if ( sty != nullptr )
{
QApplication::setStyle(sty);
g_config->setOption("SDL.GuiStyle", s.toStdString().c_str() );
g_config->save();
}
}
//----------------------------------------------------

View File

@ -30,6 +30,7 @@ protected:
QCheckBox *useNativeFileDialog;
QCheckBox *useNativeMenuBar;
QComboBox *styleComboBox;
private:
public slots:
@ -37,4 +38,5 @@ public slots:
private slots:
void useNativeFileDialogChanged(int v);
void useNativeMenuBarChanged(int v);
void styleChanged(int index);
};

View File

@ -373,6 +373,7 @@ InitConfig()
config->addOption("_useNativeFileDialog", "SDL.UseNativeFileDialog", false);
config->addOption("_useNativeMenuBar" , "SDL.UseNativeMenuBar", false);
config->addOption("SDL.GuiStyle", "");
config->addOption("_setSchedParam" , "SDL.SetSchedParam" , 0);
config->addOption("_emuSchedPolicy" , "SDL.EmuSchedPolicy", 0);