mirror of
https://gitlab.com/OpenMW/openmw.git
synced 2025-03-12 04:14:05 +00:00
got the launcher working with the new settings system.
This commit is contained in:
parent
355268dae1
commit
ad46049ee0
@ -1,7 +1,11 @@
|
|||||||
|
#include "graphicspage.hpp"
|
||||||
|
|
||||||
#include <QtGui>
|
#include <QtGui>
|
||||||
|
|
||||||
#include "graphicspage.hpp"
|
#include <boost/lexical_cast.hpp>
|
||||||
|
|
||||||
#include <components/files/configurationmanager.hpp>
|
#include <components/files/configurationmanager.hpp>
|
||||||
|
#include <components/settings/settings.hpp>
|
||||||
|
|
||||||
GraphicsPage::GraphicsPage(Files::ConfigurationManager &cfg, QWidget *parent)
|
GraphicsPage::GraphicsPage(Files::ConfigurationManager &cfg, QWidget *parent)
|
||||||
: QWidget(parent)
|
: QWidget(parent)
|
||||||
@ -17,12 +21,9 @@ GraphicsPage::GraphicsPage(Files::ConfigurationManager &cfg, QWidget *parent)
|
|||||||
renderSystemLayout->addWidget(rendererLabel, 0, 0, 1, 1);
|
renderSystemLayout->addWidget(rendererLabel, 0, 0, 1, 1);
|
||||||
renderSystemLayout->addWidget(mRendererComboBox, 0, 1, 1, 1);
|
renderSystemLayout->addWidget(mRendererComboBox, 0, 1, 1, 1);
|
||||||
|
|
||||||
mRendererStackedWidget = new QStackedWidget(rendererGroup);
|
|
||||||
|
|
||||||
QVBoxLayout *rendererGroupLayout = new QVBoxLayout(rendererGroup);
|
QVBoxLayout *rendererGroupLayout = new QVBoxLayout(rendererGroup);
|
||||||
|
|
||||||
rendererGroupLayout->addLayout(renderSystemLayout);
|
rendererGroupLayout->addLayout(renderSystemLayout);
|
||||||
rendererGroupLayout->addWidget(mRendererStackedWidget);
|
|
||||||
|
|
||||||
// Display
|
// Display
|
||||||
QGroupBox *displayGroup = new QGroupBox(tr("Display"), this);
|
QGroupBox *displayGroup = new QGroupBox(tr("Display"), this);
|
||||||
@ -52,100 +53,29 @@ GraphicsPage::GraphicsPage(Files::ConfigurationManager &cfg, QWidget *parent)
|
|||||||
|
|
||||||
void GraphicsPage::createPages()
|
void GraphicsPage::createPages()
|
||||||
{
|
{
|
||||||
// OpenGL rendering settings
|
QWidget *main = new QWidget();
|
||||||
QWidget *mOGLRendererPage = new QWidget();
|
QGridLayout *grid = new QGridLayout(main);
|
||||||
|
|
||||||
QLabel *OGLRTTLabel = new QLabel(tr("Preferred RTT Mode:"), mOGLRendererPage);
|
mVSyncCheckBox = new QCheckBox(tr("Vertical Sync"), main);
|
||||||
mOGLRTTComboBox = new QComboBox(mOGLRendererPage);
|
grid->addWidget(mVSyncCheckBox, 0, 0, 1, 1);
|
||||||
|
|
||||||
QLabel *OGLAntiAliasingLabel = new QLabel(tr("Antialiasing:"), mOGLRendererPage);
|
mFullScreenCheckBox = new QCheckBox(tr("Full Screen"), main);
|
||||||
mOGLAntiAliasingComboBox = new QComboBox(mOGLRendererPage);
|
grid->addWidget(mFullScreenCheckBox, 1, 0, 1, 1);
|
||||||
|
|
||||||
|
QLabel *antiAliasingLabel = new QLabel(tr("Antialiasing:"), main);
|
||||||
|
mAntiAliasingComboBox = new QComboBox(main);
|
||||||
|
grid->addWidget(antiAliasingLabel, 2, 0, 1, 1);
|
||||||
|
grid->addWidget(mAntiAliasingComboBox, 2, 1, 1, 1);
|
||||||
|
|
||||||
|
QLabel *resolutionLabel = new QLabel(tr("Resolution:"), main);
|
||||||
|
mResolutionComboBox = new QComboBox(main);
|
||||||
|
grid->addWidget(resolutionLabel, 3, 0, 1, 1);
|
||||||
|
grid->addWidget(mResolutionComboBox, 3, 1, 1, 1);
|
||||||
|
|
||||||
QGridLayout *OGLRendererLayout = new QGridLayout(mOGLRendererPage);
|
|
||||||
QSpacerItem *vSpacer1 = new QSpacerItem(20, 10, QSizePolicy::Minimum, QSizePolicy::Expanding);
|
QSpacerItem *vSpacer1 = new QSpacerItem(20, 10, QSizePolicy::Minimum, QSizePolicy::Expanding);
|
||||||
|
grid->addItem(vSpacer1, 4, 0, 1, 1);
|
||||||
|
|
||||||
OGLRendererLayout->addWidget(OGLRTTLabel, 0, 0, 1, 1);
|
mDisplayStackedWidget->addWidget(main);
|
||||||
OGLRendererLayout->addWidget(mOGLRTTComboBox, 0, 1, 1, 1);
|
|
||||||
OGLRendererLayout->addWidget(OGLAntiAliasingLabel, 1, 0, 1, 1);
|
|
||||||
OGLRendererLayout->addWidget(mOGLAntiAliasingComboBox, 1, 1, 1, 1);
|
|
||||||
OGLRendererLayout->addItem(vSpacer1, 2, 1, 1, 1);
|
|
||||||
|
|
||||||
// OpenGL display settings
|
|
||||||
QWidget *mOGLDisplayPage = new QWidget();
|
|
||||||
|
|
||||||
QLabel *OGLResolutionLabel = new QLabel(tr("Resolution:"), mOGLDisplayPage);
|
|
||||||
mOGLResolutionComboBox = new QComboBox(mOGLDisplayPage);
|
|
||||||
|
|
||||||
QLabel *OGLFrequencyLabel = new QLabel(tr("Display Frequency:"), mOGLDisplayPage);
|
|
||||||
mOGLFrequencyComboBox = new QComboBox(mOGLDisplayPage);
|
|
||||||
|
|
||||||
mOGLVSyncCheckBox = new QCheckBox(tr("Vertical Sync"), mOGLDisplayPage);
|
|
||||||
mOGLFullScreenCheckBox = new QCheckBox(tr("Full Screen"), mOGLDisplayPage);
|
|
||||||
|
|
||||||
QGridLayout *OGLDisplayLayout = new QGridLayout(mOGLDisplayPage);
|
|
||||||
QSpacerItem *vSpacer2 = new QSpacerItem(20, 10, QSizePolicy::Minimum, QSizePolicy::Minimum);
|
|
||||||
|
|
||||||
OGLDisplayLayout->addWidget(OGLResolutionLabel, 0, 0, 1, 1);
|
|
||||||
OGLDisplayLayout->addWidget(mOGLResolutionComboBox, 0, 1, 1, 1);
|
|
||||||
OGLDisplayLayout->addWidget(OGLFrequencyLabel, 1, 0, 1, 1);
|
|
||||||
OGLDisplayLayout->addWidget(mOGLFrequencyComboBox, 1, 1, 1, 1);
|
|
||||||
|
|
||||||
OGLDisplayLayout->addItem(vSpacer2, 2, 1, 1, 1);
|
|
||||||
OGLDisplayLayout->addWidget(mOGLVSyncCheckBox, 3, 0, 1, 1);
|
|
||||||
OGLDisplayLayout->addWidget(mOGLFullScreenCheckBox, 6, 0, 1, 1);
|
|
||||||
|
|
||||||
// Direct3D rendering settings
|
|
||||||
QWidget *mD3DRendererPage = new QWidget();
|
|
||||||
|
|
||||||
QLabel *D3DRenderDeviceLabel = new QLabel(tr("Rendering Device:"), mD3DRendererPage);
|
|
||||||
mD3DRenderDeviceComboBox = new QComboBox(mD3DRendererPage);
|
|
||||||
|
|
||||||
QLabel *D3DAntiAliasingLabel = new QLabel(tr("Antialiasing:"), mD3DRendererPage);
|
|
||||||
mD3DAntiAliasingComboBox = new QComboBox(mD3DRendererPage);
|
|
||||||
|
|
||||||
QLabel *D3DFloatingPointLabel = new QLabel(tr("Floating-point Mode:"), mD3DRendererPage);
|
|
||||||
mD3DFloatingPointComboBox = new QComboBox(mD3DRendererPage);
|
|
||||||
|
|
||||||
mD3DNvPerfCheckBox = new QCheckBox(tr("Allow NVPerfHUD"), mD3DRendererPage);
|
|
||||||
|
|
||||||
QGridLayout *D3DRendererLayout = new QGridLayout(mD3DRendererPage);
|
|
||||||
QSpacerItem *vSpacer3 = new QSpacerItem(20, 10, QSizePolicy::Minimum, QSizePolicy::Minimum);
|
|
||||||
QSpacerItem *vSpacer4 = new QSpacerItem(20, 10, QSizePolicy::Minimum, QSizePolicy::Expanding);
|
|
||||||
|
|
||||||
D3DRendererLayout->addWidget(D3DRenderDeviceLabel, 0, 0, 1, 1);
|
|
||||||
D3DRendererLayout->addWidget(mD3DRenderDeviceComboBox, 0, 1, 1, 1);
|
|
||||||
D3DRendererLayout->addWidget(D3DAntiAliasingLabel, 1, 0, 1, 1);
|
|
||||||
D3DRendererLayout->addWidget(mD3DAntiAliasingComboBox, 1, 1, 1, 1);
|
|
||||||
D3DRendererLayout->addWidget(D3DFloatingPointLabel, 2, 0, 1, 1);
|
|
||||||
D3DRendererLayout->addWidget(mD3DFloatingPointComboBox, 2, 1, 1, 1);
|
|
||||||
D3DRendererLayout->addItem(vSpacer3, 3, 1, 1, 1);
|
|
||||||
D3DRendererLayout->addWidget(mD3DNvPerfCheckBox, 4, 0, 1, 1);
|
|
||||||
D3DRendererLayout->addItem(vSpacer4, 5, 1, 1, 1);
|
|
||||||
|
|
||||||
// Direct3D display settings
|
|
||||||
QWidget *mD3DDisplayPage = new QWidget();
|
|
||||||
|
|
||||||
QLabel *D3DResolutionLabel = new QLabel(tr("Resolution:"), mD3DDisplayPage);
|
|
||||||
mD3DResolutionComboBox = new QComboBox(mD3DDisplayPage);
|
|
||||||
|
|
||||||
mD3DVSyncCheckBox = new QCheckBox(tr("Vertical Sync"), mD3DDisplayPage);
|
|
||||||
mD3DFullScreenCheckBox = new QCheckBox(tr("Full Screen"), mD3DDisplayPage);
|
|
||||||
|
|
||||||
QGridLayout *mD3DDisplayLayout = new QGridLayout(mD3DDisplayPage);
|
|
||||||
QSpacerItem *vSpacer5 = new QSpacerItem(20, 10, QSizePolicy::Minimum, QSizePolicy::Minimum);
|
|
||||||
|
|
||||||
mD3DDisplayLayout->addWidget(D3DResolutionLabel, 0, 0, 1, 1);
|
|
||||||
mD3DDisplayLayout->addWidget(mD3DResolutionComboBox, 0, 1, 1, 1);
|
|
||||||
mD3DDisplayLayout->addItem(vSpacer5, 1, 1, 1, 1);
|
|
||||||
mD3DDisplayLayout->addWidget(mD3DVSyncCheckBox, 2, 0, 1, 1);
|
|
||||||
mD3DDisplayLayout->addWidget(mD3DFullScreenCheckBox, 5, 0, 1, 1);
|
|
||||||
|
|
||||||
// Add the created pages
|
|
||||||
mRendererStackedWidget->addWidget(mOGLRendererPage);
|
|
||||||
mRendererStackedWidget->addWidget(mD3DRendererPage);
|
|
||||||
|
|
||||||
mDisplayStackedWidget->addWidget(mOGLDisplayPage);
|
|
||||||
mDisplayStackedWidget->addWidget(mD3DDisplayPage);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void GraphicsPage::setupConfig()
|
void GraphicsPage::setupConfig()
|
||||||
@ -204,13 +134,21 @@ void GraphicsPage::setupOgre()
|
|||||||
mSelectedRenderSystem = *r;
|
mSelectedRenderSystem = *r;
|
||||||
mRendererComboBox->addItem((*r)->getName().c_str());
|
mRendererComboBox->addItem((*r)->getName().c_str());
|
||||||
}
|
}
|
||||||
/*
|
|
||||||
int index = mRendererComboBox->findText(mOgreConfig->value("Render System").toString());
|
int index = mRendererComboBox->findText(QString::fromStdString(Settings::Manager::getString("render system", "Video")));
|
||||||
|
|
||||||
if ( index != -1) {
|
if ( index != -1) {
|
||||||
mRendererComboBox->setCurrentIndex(index);
|
mRendererComboBox->setCurrentIndex(index);
|
||||||
}
|
}
|
||||||
*/
|
else
|
||||||
|
{
|
||||||
|
#if OGRE_PLATFORM == OGRE_PLATFORM_WIN32
|
||||||
|
mRendererComboBox->setCurrentIndex(mRendererComboBox->findText("Direct3D9 Rendering Subsystem"));
|
||||||
|
#else
|
||||||
|
mRendererComboBox->setCurrentIndex(mRendererComboBox->findText("OpenGL Rendering Subsystem"));
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
|
||||||
// Create separate rendersystems
|
// Create separate rendersystems
|
||||||
QString openGLName = mRendererComboBox->itemText(mRendererComboBox->findText(QString("OpenGL"), Qt::MatchStartsWith));
|
QString openGLName = mRendererComboBox->itemText(mRendererComboBox->findText(QString("OpenGL"), Qt::MatchStartsWith));
|
||||||
QString direct3DName = mRendererComboBox->itemText(mRendererComboBox->findText(QString("Direct3D"), Qt::MatchStartsWith));
|
QString direct3DName = mRendererComboBox->itemText(mRendererComboBox->findText(QString("Direct3D"), Qt::MatchStartsWith));
|
||||||
@ -232,217 +170,44 @@ void GraphicsPage::setupOgre()
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Now fill the GUI elements
|
// Now fill the GUI elements
|
||||||
// OpenGL
|
mAntiAliasingComboBox->clear();
|
||||||
if (mOpenGLRenderSystem) {
|
mResolutionComboBox->clear();
|
||||||
mOGLRTTComboBox->addItems(getAvailableOptions(QString("RTT Preferred Mode"), mOpenGLRenderSystem));
|
mAntiAliasingComboBox->addItems(getAvailableOptions(QString("FSAA"), mSelectedRenderSystem));
|
||||||
mOGLAntiAliasingComboBox->addItems(getAvailableOptions(QString("FSAA"), mOpenGLRenderSystem));
|
mResolutionComboBox->addItems(getAvailableOptions(QString("Video Mode"), mSelectedRenderSystem));
|
||||||
mOGLResolutionComboBox->addItems(getAvailableOptions(QString("Video Mode"), mOpenGLRenderSystem));
|
|
||||||
mOGLFrequencyComboBox->addItems(getAvailableOptions(QString("Display Frequency"), mOpenGLRenderSystem));
|
|
||||||
}
|
|
||||||
|
|
||||||
// Direct3D
|
|
||||||
if (mDirect3DRenderSystem) {
|
|
||||||
mD3DRenderDeviceComboBox->addItems(getAvailableOptions(QString("Rendering Device"), mDirect3DRenderSystem));
|
|
||||||
mD3DAntiAliasingComboBox->addItems(getAvailableOptions(QString("FSAA"), mDirect3DRenderSystem));
|
|
||||||
mD3DFloatingPointComboBox->addItems(getAvailableOptions(QString("Floating-point mode"), mDirect3DRenderSystem));
|
|
||||||
mD3DResolutionComboBox->addItems(getAvailableOptions(QString("Video Mode"), mDirect3DRenderSystem));
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void GraphicsPage::readConfig()
|
void GraphicsPage::readConfig()
|
||||||
{
|
{
|
||||||
// Read the config file settings
|
if (Settings::Manager::getBool("vsync", "Video"))
|
||||||
if (mOpenGLRenderSystem) {
|
mVSyncCheckBox->setCheckState(Qt::Checked);
|
||||||
|
|
||||||
int index = mOGLRTTComboBox->findText(getConfigValue("RTT Preferred Mode", mOpenGLRenderSystem));
|
if (Settings::Manager::getBool("fullscreen", "Video"))
|
||||||
if ( index != -1) {
|
mFullScreenCheckBox->setCheckState(Qt::Checked);
|
||||||
mOGLRTTComboBox->setCurrentIndex(index);
|
|
||||||
}
|
|
||||||
|
|
||||||
index = mOGLAntiAliasingComboBox->findText(getConfigValue("FSAA", mOpenGLRenderSystem));
|
int aaIndex = mAntiAliasingComboBox->findText(QString::fromStdString(Settings::Manager::getString("antialiasing", "Video")));
|
||||||
if ( index != -1){
|
if (aaIndex != -1)
|
||||||
mOGLAntiAliasingComboBox->setCurrentIndex(index);
|
mAntiAliasingComboBox->setCurrentIndex(aaIndex);
|
||||||
}
|
|
||||||
|
|
||||||
index = mOGLResolutionComboBox->findText(getConfigValue("Video Mode", mOpenGLRenderSystem));
|
std::string resolution = boost::lexical_cast<std::string>(Settings::Manager::getInt("resolution x", "Video"))
|
||||||
if ( index != -1) {
|
+ " x " + boost::lexical_cast<std::string>(Settings::Manager::getInt("resolution y", "Video"));
|
||||||
mOGLResolutionComboBox->setCurrentIndex(index);
|
int resIndex = mResolutionComboBox->findText(QString::fromStdString(resolution));
|
||||||
}
|
if (resIndex != -1)
|
||||||
|
mResolutionComboBox->setCurrentIndex(resIndex);
|
||||||
index = mOGLFrequencyComboBox->findText(getConfigValue("Display Frequency", mOpenGLRenderSystem));
|
|
||||||
if ( index != -1) {
|
|
||||||
mOGLFrequencyComboBox->setCurrentIndex(index);
|
|
||||||
}
|
|
||||||
|
|
||||||
// Now we do the same for the checkboxes
|
|
||||||
if (getConfigValue("VSync", mOpenGLRenderSystem) == QLatin1String("Yes")) {
|
|
||||||
mOGLVSyncCheckBox->setCheckState(Qt::Checked);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (getConfigValue("Full Screen", mOpenGLRenderSystem) == QLatin1String("Yes")) {
|
|
||||||
mOGLFullScreenCheckBox->setCheckState(Qt::Checked);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (mDirect3DRenderSystem) {
|
|
||||||
|
|
||||||
int index = mD3DRenderDeviceComboBox->findText(getConfigValue("Rendering Device", mDirect3DRenderSystem));
|
|
||||||
if ( index != -1) {
|
|
||||||
mD3DRenderDeviceComboBox->setCurrentIndex(index);
|
|
||||||
}
|
|
||||||
|
|
||||||
index = mD3DAntiAliasingComboBox->findText(getConfigValue("FSAA", mDirect3DRenderSystem));
|
|
||||||
if ( index != -1) {
|
|
||||||
mD3DAntiAliasingComboBox->setCurrentIndex(index);
|
|
||||||
}
|
|
||||||
|
|
||||||
index = mD3DFloatingPointComboBox->findText(getConfigValue("Floating-point mode", mDirect3DRenderSystem));
|
|
||||||
if ( index != -1) {
|
|
||||||
mD3DFloatingPointComboBox->setCurrentIndex(index);
|
|
||||||
}
|
|
||||||
|
|
||||||
index = mD3DResolutionComboBox->findText(getConfigValue("Video Mode", mDirect3DRenderSystem));
|
|
||||||
if ( index != -1) {
|
|
||||||
mD3DResolutionComboBox->setCurrentIndex(index);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (getConfigValue("Allow NVPerfHUD", mDirect3DRenderSystem) == QLatin1String("Yes")) {
|
|
||||||
mD3DNvPerfCheckBox->setCheckState(Qt::Checked);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (getConfigValue("VSync", mDirect3DRenderSystem) == QLatin1String("Yes")) {
|
|
||||||
mD3DVSyncCheckBox->setCheckState(Qt::Checked);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (getConfigValue("Full Screen", mDirect3DRenderSystem) == QLatin1String("Yes")) {
|
|
||||||
mD3DFullScreenCheckBox->setCheckState(Qt::Checked);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void GraphicsPage::writeConfig()
|
void GraphicsPage::writeConfig()
|
||||||
{
|
{
|
||||||
mOgre->setRenderSystem(mSelectedRenderSystem);
|
Settings::Manager::setBool("vsync", "Video", mVSyncCheckBox->checkState());
|
||||||
|
Settings::Manager::setBool("fullscreen", "Video", mFullScreenCheckBox->checkState());
|
||||||
|
Settings::Manager::setString("antialiasing", "Video", mAntiAliasingComboBox->currentText().toStdString());
|
||||||
|
|
||||||
if (mDirect3DRenderSystem) {
|
std::string resolution = mResolutionComboBox->currentText().toStdString();
|
||||||
// Nvidia Performance HUD
|
// parse resolution x and y from a string like "800 x 600"
|
||||||
if (mD3DNvPerfCheckBox->checkState() == Qt::Checked) {
|
size_t xPos = resolution.find("x");
|
||||||
mDirect3DRenderSystem->setConfigOption("Allow NVPerfHUD", "Yes");
|
int resX = boost::lexical_cast<int>(resolution.substr(0, xPos-1));
|
||||||
} else {
|
int resY = boost::lexical_cast<int>(resolution.substr(xPos+2, resolution.size()-(xPos+2)));
|
||||||
mDirect3DRenderSystem->setConfigOption("Allow NVPerfHUD", "No");
|
Settings::Manager::setInt("resolution x", "Video", resX);
|
||||||
}
|
Settings::Manager::setInt("resolution y", "Video", resY);
|
||||||
|
|
||||||
// Antialiasing
|
|
||||||
mDirect3DRenderSystem->setConfigOption("FSAA", mD3DAntiAliasingComboBox->currentText().toStdString());
|
|
||||||
|
|
||||||
// Full screen
|
|
||||||
if (mD3DFullScreenCheckBox->checkState() == Qt::Checked) {
|
|
||||||
mDirect3DRenderSystem->setConfigOption("Full Screen", "Yes");
|
|
||||||
} else {
|
|
||||||
mDirect3DRenderSystem->setConfigOption("Full Screen", "No");
|
|
||||||
}
|
|
||||||
|
|
||||||
// Rendering device
|
|
||||||
mDirect3DRenderSystem->setConfigOption("Rendering Device", mD3DRenderDeviceComboBox->currentText().toStdString());
|
|
||||||
|
|
||||||
// VSync
|
|
||||||
if (mD3DVSyncCheckBox->checkState() == Qt::Checked) {
|
|
||||||
mDirect3DRenderSystem->setConfigOption("VSync", "Yes");
|
|
||||||
} else {
|
|
||||||
mDirect3DRenderSystem->setConfigOption("VSync", "No");
|
|
||||||
}
|
|
||||||
|
|
||||||
// Resolution
|
|
||||||
mDirect3DRenderSystem->setConfigOption("Video Mode", mD3DResolutionComboBox->currentText().toStdString());
|
|
||||||
}
|
|
||||||
|
|
||||||
if (mOpenGLRenderSystem) {
|
|
||||||
// Display Frequency
|
|
||||||
mOpenGLRenderSystem->setConfigOption("Display Frequency", mOGLFrequencyComboBox->currentText().toStdString());
|
|
||||||
|
|
||||||
// Antialiasing
|
|
||||||
mOpenGLRenderSystem->setConfigOption("FSAA", mOGLAntiAliasingComboBox->currentText().toStdString());
|
|
||||||
|
|
||||||
// Full screen
|
|
||||||
if (mOGLFullScreenCheckBox->checkState() == Qt::Checked) {
|
|
||||||
mOpenGLRenderSystem->setConfigOption("Full Screen", "Yes");
|
|
||||||
} else {
|
|
||||||
mOpenGLRenderSystem->setConfigOption("Full Screen", "No");
|
|
||||||
}
|
|
||||||
|
|
||||||
// RTT mode
|
|
||||||
mOpenGLRenderSystem->setConfigOption("RTT Preferred Mode", mOGLRTTComboBox->currentText().toStdString());
|
|
||||||
|
|
||||||
// VSync
|
|
||||||
if (mOGLVSyncCheckBox->checkState() == Qt::Checked) {
|
|
||||||
mOpenGLRenderSystem->setConfigOption("VSync", "Yes");
|
|
||||||
} else {
|
|
||||||
mOpenGLRenderSystem->setConfigOption("VSync", "No");
|
|
||||||
}
|
|
||||||
|
|
||||||
// Resolution
|
|
||||||
mOpenGLRenderSystem->setConfigOption("Video Mode", mOGLResolutionComboBox->currentText().toStdString());
|
|
||||||
}
|
|
||||||
|
|
||||||
// Now we validate the options
|
|
||||||
QString ogreError = QString::fromStdString(mSelectedRenderSystem->validateConfigOptions());
|
|
||||||
|
|
||||||
if (!ogreError.isEmpty()) {
|
|
||||||
QMessageBox msgBox;
|
|
||||||
msgBox.setWindowTitle("Error validating Ogre configuration");
|
|
||||||
msgBox.setIcon(QMessageBox::Critical);
|
|
||||||
msgBox.setStandardButtons(QMessageBox::Ok);
|
|
||||||
msgBox.setText(tr("<br><b>A problem occured while validating the graphics options</b><br><br> \
|
|
||||||
The graphics options could not be saved.<br><br> \
|
|
||||||
Press \"Show Details...\" for more information.<br>"));
|
|
||||||
msgBox.setDetailedText(ogreError);
|
|
||||||
msgBox.exec();
|
|
||||||
|
|
||||||
Ogre::LogManager::getSingletonPtr()->logMessage( "Caught exception in validateConfigOptions");
|
|
||||||
|
|
||||||
qCritical("Error validating configuration");
|
|
||||||
|
|
||||||
qApp->exit(1);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Write the settings to the config file
|
|
||||||
|
|
||||||
|
|
||||||
try
|
|
||||||
{
|
|
||||||
mOgre->saveConfig();
|
|
||||||
}
|
|
||||||
catch(Ogre::Exception &ex)
|
|
||||||
{
|
|
||||||
QString ogreError = QString::fromStdString(ex.getFullDescription().c_str());
|
|
||||||
QMessageBox msgBox;
|
|
||||||
msgBox.setWindowTitle("Error writing Ogre configuration file");
|
|
||||||
msgBox.setIcon(QMessageBox::Critical);
|
|
||||||
msgBox.setStandardButtons(QMessageBox::Ok);
|
|
||||||
msgBox.setText(tr("<br><b>Could not write the graphics configuration</b><br><br> \
|
|
||||||
Please make sure you have the right permissions and try again.<br><br> \
|
|
||||||
Press \"Show Details...\" for more information.<br>"));
|
|
||||||
msgBox.setDetailedText(ogreError);
|
|
||||||
msgBox.exec();
|
|
||||||
|
|
||||||
qCritical("Error saving Ogre configuration, the error reported was:\n %s", qPrintable(ogreError));
|
|
||||||
|
|
||||||
qApp->exit(1);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
QString GraphicsPage::getConfigValue(const QString &key, Ogre::RenderSystem *renderer)
|
|
||||||
{
|
|
||||||
QString result;
|
|
||||||
/*
|
|
||||||
mOgreConfig->beginGroup(renderer->getName().c_str());
|
|
||||||
result = mOgreConfig->value(key).toString();
|
|
||||||
mOgreConfig->endGroup();
|
|
||||||
*/
|
|
||||||
return result;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
QStringList GraphicsPage::getAvailableOptions(const QString &key, Ogre::RenderSystem *renderer)
|
QStringList GraphicsPage::getAvailableOptions(const QString &key, Ogre::RenderSystem *renderer)
|
||||||
@ -461,7 +226,9 @@ QStringList GraphicsPage::getAvailableOptions(const QString &key, Ogre::RenderSy
|
|||||||
{
|
{
|
||||||
|
|
||||||
if (strcmp (key.toStdString().c_str(), i->first.c_str()) == 0)
|
if (strcmp (key.toStdString().c_str(), i->first.c_str()) == 0)
|
||||||
result << QString::fromStdString((*opt_it).c_str()).simplified();
|
{
|
||||||
|
result << ((key == "FSAA") ? QString("MSAA ") : QString("")) + QString::fromStdString((*opt_it).c_str()).simplified();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
@ -471,15 +238,11 @@ QStringList GraphicsPage::getAvailableOptions(const QString &key, Ogre::RenderSy
|
|||||||
|
|
||||||
void GraphicsPage::rendererChanged(const QString &renderer)
|
void GraphicsPage::rendererChanged(const QString &renderer)
|
||||||
{
|
{
|
||||||
if (renderer.contains("Direct3D")) {
|
|
||||||
mRendererStackedWidget->setCurrentIndex(1);
|
|
||||||
mDisplayStackedWidget->setCurrentIndex(1);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (renderer.contains("OpenGL")) {
|
|
||||||
mRendererStackedWidget->setCurrentIndex(0);
|
|
||||||
mDisplayStackedWidget->setCurrentIndex(0);
|
|
||||||
}
|
|
||||||
|
|
||||||
mSelectedRenderSystem = mOgre->getRenderSystemByName(renderer.toStdString());
|
mSelectedRenderSystem = mOgre->getRenderSystemByName(renderer.toStdString());
|
||||||
|
|
||||||
|
mAntiAliasingComboBox->clear();
|
||||||
|
mResolutionComboBox->clear();
|
||||||
|
|
||||||
|
mAntiAliasingComboBox->addItems(getAvailableOptions(QString("FSAA"), mSelectedRenderSystem));
|
||||||
|
mResolutionComboBox->addItems(getAvailableOptions(QString("Video Mode"), mSelectedRenderSystem));
|
||||||
}
|
}
|
||||||
|
@ -49,33 +49,15 @@ private:
|
|||||||
|
|
||||||
QComboBox *mRendererComboBox;
|
QComboBox *mRendererComboBox;
|
||||||
|
|
||||||
QStackedWidget *mRendererStackedWidget;
|
|
||||||
QStackedWidget *mDisplayStackedWidget;
|
QStackedWidget *mDisplayStackedWidget;
|
||||||
|
|
||||||
// OpenGL
|
QComboBox *mAntiAliasingComboBox;
|
||||||
QComboBox *mOGLRTTComboBox;
|
QComboBox *mResolutionComboBox;
|
||||||
QComboBox *mOGLAntiAliasingComboBox;
|
QCheckBox *mVSyncCheckBox;
|
||||||
QComboBox *mOGLResolutionComboBox;
|
QCheckBox *mFullScreenCheckBox;
|
||||||
QComboBox *mOGLFrequencyComboBox;
|
|
||||||
|
|
||||||
QCheckBox *mOGLVSyncCheckBox;
|
|
||||||
QCheckBox *mOGLFullScreenCheckBox;
|
|
||||||
|
|
||||||
// Direct3D
|
|
||||||
QComboBox *mD3DRenderDeviceComboBox;
|
|
||||||
QComboBox *mD3DAntiAliasingComboBox;
|
|
||||||
QComboBox *mD3DFloatingPointComboBox;
|
|
||||||
QComboBox *mD3DResolutionComboBox;
|
|
||||||
|
|
||||||
QCheckBox *mD3DNvPerfCheckBox;
|
|
||||||
QCheckBox *mD3DVSyncCheckBox;
|
|
||||||
QCheckBox *mD3DFullScreenCheckBox;
|
|
||||||
|
|
||||||
QSettings *mOgreConfig;
|
|
||||||
|
|
||||||
Files::ConfigurationManager &mCfgMgr;
|
Files::ConfigurationManager &mCfgMgr;
|
||||||
|
|
||||||
QString getConfigValue(const QString &key, Ogre::RenderSystem *renderer);
|
|
||||||
QStringList getAvailableOptions(const QString &key, Ogre::RenderSystem *renderer);
|
QStringList getAvailableOptions(const QString &key, Ogre::RenderSystem *renderer);
|
||||||
|
|
||||||
void createPages();
|
void createPages();
|
||||||
|
@ -7,6 +7,28 @@
|
|||||||
|
|
||||||
MainDialog::MainDialog()
|
MainDialog::MainDialog()
|
||||||
{
|
{
|
||||||
|
// Create the settings manager and load default settings file
|
||||||
|
const std::string localdefault = mCfgMgr.getLocalPath().string() + "/settings-default.cfg";
|
||||||
|
const std::string globaldefault = mCfgMgr.getGlobalPath().string() + "/settings-default.cfg";
|
||||||
|
|
||||||
|
// prefer local
|
||||||
|
if (boost::filesystem::exists(localdefault))
|
||||||
|
mSettings.loadDefault(localdefault);
|
||||||
|
else if (boost::filesystem::exists(globaldefault))
|
||||||
|
mSettings.loadDefault(globaldefault);
|
||||||
|
else
|
||||||
|
throw std::runtime_error ("No default settings file found! Make sure the file \"settings-default.cfg\" was properly installed.");
|
||||||
|
|
||||||
|
// load user settings if they exist, otherwise just load the default settings as user settings
|
||||||
|
const std::string settingspath = mCfgMgr.getUserPath().string() + "/settings.cfg";
|
||||||
|
if (boost::filesystem::exists(settingspath))
|
||||||
|
mSettings.loadUser(settingspath);
|
||||||
|
else if (boost::filesystem::exists(localdefault))
|
||||||
|
mSettings.loadUser(localdefault);
|
||||||
|
else if (boost::filesystem::exists(globaldefault))
|
||||||
|
mSettings.loadUser(globaldefault);
|
||||||
|
|
||||||
|
|
||||||
mIconWidget = new QListWidget;
|
mIconWidget = new QListWidget;
|
||||||
mIconWidget->setObjectName("IconWidget");
|
mIconWidget->setObjectName("IconWidget");
|
||||||
mIconWidget->setViewMode(QListView::IconMode);
|
mIconWidget->setViewMode(QListView::IconMode);
|
||||||
@ -178,6 +200,11 @@ void MainDialog::closeEvent(QCloseEvent *event)
|
|||||||
// Now write all config files
|
// Now write all config files
|
||||||
mDataFilesPage->writeConfig();
|
mDataFilesPage->writeConfig();
|
||||||
mGraphicsPage->writeConfig();
|
mGraphicsPage->writeConfig();
|
||||||
|
|
||||||
|
// Save user settings
|
||||||
|
const std::string settingspath = mCfgMgr.getUserPath().string() + "/settings.cfg";
|
||||||
|
mSettings.saveUser(settingspath);
|
||||||
|
|
||||||
event->accept();
|
event->accept();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -4,6 +4,7 @@
|
|||||||
#include <QDialog>
|
#include <QDialog>
|
||||||
|
|
||||||
#include <components/files/configurationmanager.hpp>
|
#include <components/files/configurationmanager.hpp>
|
||||||
|
#include <components/settings/settings.hpp>
|
||||||
|
|
||||||
class QListWidget;
|
class QListWidget;
|
||||||
class QListWidgetItem;
|
class QListWidgetItem;
|
||||||
@ -41,6 +42,7 @@ private:
|
|||||||
DataFilesPage *mDataFilesPage;
|
DataFilesPage *mDataFilesPage;
|
||||||
|
|
||||||
Files::ConfigurationManager mCfgMgr;
|
Files::ConfigurationManager mCfgMgr;
|
||||||
|
Settings::Manager mSettings;
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
Loading…
x
Reference in New Issue
Block a user