1
0
mirror of https://gitlab.com/OpenMW/openmw.git synced 2025-01-26 00:35:23 +00:00

Fixed checkbox behaviour. Added some shader settings.

This commit is contained in:
cc9cii 2014-09-22 07:50:35 +10:00
parent 17a74da650
commit 02f8f54192
4 changed files with 142 additions and 31 deletions

View File

@ -314,10 +314,10 @@ std::auto_ptr<sh::Factory> CS::Editor::setupGraphics()
factory->loadAllFiles();
sh::Factory::getInstance().setGlobalSetting ("fog", "true");
sh::Factory::getInstance().setGlobalSetting ("fog", mUserSettings.settingValue("shader/fog").toStdString() == "true" ? "true" : "false");
sh::Factory::getInstance().setGlobalSetting ("shadows", "false");
sh::Factory::getInstance().setGlobalSetting ("shadows_pssm", "false");
sh::Factory::getInstance().setGlobalSetting ("shadows", mUserSettings.settingValue("shader/shadows").toStdString() == "true" ? "true" : "false");
sh::Factory::getInstance().setGlobalSetting ("shadows_pssm", mUserSettings.settingValue("shader/shadows_pssm").toStdString() == "true" ? "true" : "false");
sh::Factory::getInstance ().setGlobalSetting ("render_refraction", "false");

View File

@ -53,12 +53,108 @@ UserSettings::UserSettings (const Files::ConfigurationManager& configurationMana
void UserSettings::buildSettingModelDefaults()
{
QString section;
QString page;
section = "Window Size";
page = "Shader";
{
Setting *width = createSetting (Type_LineEdit, section, "Width");
Setting *height = createSetting (Type_LineEdit, section, "Height");
QString section = "Group1";
Setting *fog = createSetting (Type_CheckBox, page, "fog");
fog->setDeclaredValues(QStringList() << "true" << "false");
fog->setDefaultValue("true");
fog->setEditorSetting(true);
fog->setSpecialValueText("Enable Fog");
fog->setWidgetWidth(15);
fog->setColumnSpan (2);
fog->setViewLocation(1, 1);
Setting *shadows = createSetting (Type_CheckBox, page, "shadows");
shadows->setDeclaredValues(QStringList() << "true" << "false");
shadows->setDefaultValue("false");
shadows->setEditorSetting(true);
shadows->setSpecialValueText("Enable Shadows");
shadows->setWidgetWidth(15);
//shadows->setColumnSpan (2);
shadows->setViewLocation(2, 1);
Setting *shadows_pssm = createSetting (Type_CheckBox, page, "shadows_pssm");
shadows_pssm->setDeclaredValues(QStringList() << "true" << "false");
shadows_pssm->setDefaultValue("false");
shadows_pssm->setEditorSetting(true);
shadows_pssm->setSpecialValueText("Enable PSSM Shadows");
shadows_pssm->setWidgetWidth(15);
//shadows_pssm->setColumnSpan (2);
shadows_pssm->setViewLocation(3, 1);
// FIXME: add option to put label elsewhere (i.e. no frame text)
Setting *numLights = createSetting (Type_SpinBox, page, "num lights");
numLights->setDefaultValue(8);
numLights->setEditorSetting(true);
numLights->setColumnSpan (2);
numLights->setMinimum (0);
numLights->setMaximum (100); // FIXME: not sure what the max value should be
numLights->setWidgetWidth (15);
numLights->setSpecialValueText ("Nothing!"); // text to display when value is 0
numLights->setViewLocation(4, 1);
Setting *simpleWater = createSetting (Type_CheckBox, page, "simple_water");
simpleWater->setDeclaredValues(QStringList() << "true" << "false");
simpleWater->setDefaultValue("false");
simpleWater->setEditorSetting(true);
simpleWater->setSpecialValueText("Enable Simple Water");
simpleWater->setWidgetWidth(15);
simpleWater->setColumnSpan (2);
simpleWater->setViewLocation(2, 4);
Setting *waterEnabled = createSetting (Type_DoubleSpinBox, page, "waterEnabled");
waterEnabled->setDefaultValue(0.00);
waterEnabled->setEditorSetting(true);
//waterEnabled->setColumnSpan (2);
waterEnabled->setMinimum (0);
waterEnabled->setMaximum (100.00); // FIXME: not sure what the max value should be
waterEnabled->setWidgetWidth (15);
waterEnabled->setViewLocation(3, 4);
Setting *waterLevel = createSetting (Type_DoubleSpinBox, page, "waterLevel");
waterLevel->setDefaultValue(0.00);
waterLevel->setEditorSetting(true);
//waterLevel->setColumnSpan (2);
waterLevel->setMinimum (0);
waterLevel->setMaximum (100.00); // FIXME: not sure what the max value should be
waterLevel->setWidgetWidth (15);
waterLevel->setViewLocation(4, 4);
Setting *waterTimer = createSetting (Type_DoubleSpinBox, page, "waterTimer");
waterTimer->setDefaultValue(0.00);
waterTimer->setEditorSetting(true);
//waterTimer->setColumnSpan (2);
waterTimer->setMinimum (0);
waterTimer->setMaximum (100.00); // FIXME: not sure what the max value should be
waterTimer->setWidgetWidth (15);
waterTimer->setViewLocation(5, 4);
#if 0
sh::Factory::getInstance().setGlobalSetting ("shadows_pssm", "false");
sh::Factory::getInstance ().setGlobalSetting ("render_refraction", "false");
sh::Factory::getInstance ().setGlobalSetting ("viewproj_fix", "false");
sh::Factory::getInstance ().setSharedParameter ("windDir_windSpeed", sh::makeProperty<sh::Vector3>(new sh::Vector3(0.5, -0.8, 0.2)));
sh::Factory::getInstance ().setSharedParameter ("waterSunFade_sunHeight", sh::makeProperty<sh::Vector2>(new sh::Vector2(1, 0.6)));
sh::Factory::getInstance ().setGlobalSetting ("refraction", Settings::Manager::getBool("refraction", "Water") ? "true" : "false");
sh::Factory::getInstance ().setGlobalSetting ("viewproj_fix", "false");
sh::Factory::getInstance ().setSharedParameter ("vpRow2Fix", sh::makeProperty<sh::Vector4> (new sh::Vector4(0,0,0,0)));
#endif
}
#if 0
page = "Window Size";
{
Setting *width = createSetting (Type_LineEdit, page, "Width");
Setting *height = createSetting (Type_LineEdit, page, "Height");
width->setWidgetWidth (5);
height->setWidgetWidth (8);
@ -75,7 +171,7 @@ void UserSettings::buildSettingModelDefaults()
/*
*Create the proxy setting for predefined values
*/
Setting *preDefined = createSetting (Type_ComboBox, section,
Setting *preDefined = createSetting (Type_ComboBox, page,
"Pre-Defined");
preDefined->setDeclaredValues (QStringList() << "640 x 480"
@ -94,7 +190,7 @@ void UserSettings::buildSettingModelDefaults()
);
}
section = "Display Format";
page = "Display Format";
{
QString defaultValue = "Icon and Text";
@ -102,10 +198,10 @@ void UserSettings::buildSettingModelDefaults()
<< defaultValue << "Icon Only" << "Text Only";
Setting *rsd = createSetting (Type_RadioButton,
section, "Record Status Display");
page, "Record Status Display");
Setting *ritd = createSetting (Type_RadioButton,
section, "Referenceable ID Type Display");
page, "Referenceable ID Type Display");
rsd->setDeclaredValues (values);
ritd->setDeclaredValues (values);
@ -113,8 +209,9 @@ void UserSettings::buildSettingModelDefaults()
rsd->setEditorSetting (true);
ritd->setEditorSetting (true);
}
#endif
section = "Proxy Selection Test";
page = "Proxy Selection Test";
{
/******************************************************************
* There are three types of values:
@ -142,30 +239,30 @@ void UserSettings::buildSettingModelDefaults()
//create setting objects, specifying the basic widget type,
//the page name, and the view name
Setting *masterBoolean = createSetting (Type_RadioButton, section,
Setting *masterBoolean = createSetting (Type_RadioButton, page,
"Master Proxy");
Setting *slaveBoolean = createSetting (Type_CheckBox, section,
Setting *slaveBoolean = createSetting (Type_CheckBox, page,
"Proxy Checkboxes");
Setting *slaveSingleText = createSetting (Type_LineEdit, section,
Setting *slaveSingleText = createSetting (Type_LineEdit, page,
"Proxy TextBox 1");
Setting *slaveMultiText = createSetting (Type_LineEdit, section,
Setting *slaveMultiText = createSetting (Type_LineEdit, page,
"ProxyTextBox 2");
Setting *slaveAlphaSpinbox = createSetting (Type_SpinBox, section,
Setting *slaveAlphaSpinbox = createSetting (Type_SpinBox, page,
"Alpha Spinbox");
Setting *slaveIntegerSpinbox = createSetting (Type_SpinBox, section,
Setting *slaveIntegerSpinbox = createSetting (Type_SpinBox, page,
"Int Spinbox");
Setting *slaveDoubleSpinbox = createSetting (Type_DoubleSpinBox,
section, "Double Spinbox");
page, "Double Spinbox");
Setting *slaveSlider = createSetting (Type_Slider, section, "Slider");
Setting *slaveSlider = createSetting (Type_Slider, page, "Slider");
Setting *slaveDial = createSetting (Type_Dial, section, "Dial");
Setting *slaveDial = createSetting (Type_Dial, page, "Dial");
//set declared values for selected views
masterBoolean->setDeclaredValues (QStringList()
@ -366,7 +463,7 @@ void UserSettings::loadSettings (const QString &fileName)
|| (glES && currShader != "glsles"))
{
QString shader = openGL ? (glES ? "glsles" : "glsl") : "hlsl";
mSettingDefinitions->setValue("General/shader mode", shader);
mSettingDefinitions->setValue("shader mode", shader); //no group means "General" group
}
// check if override entry exists (default: override)

View File

@ -20,8 +20,19 @@ CSVSettings::BooleanView::BooleanView (CSMSettings::Setting *setting,
switch (setting->type())
{
case CSMSettings::Type_CheckBox:
button = new QCheckBox (value, this);
case CSMSettings::Type_CheckBox: {
if(mButtons.empty()) // show only one for checkboxes
{
button = new QCheckBox (value, this);
button->setChecked (setting->defaultValues().at(0) == "true" ? true : false);
// special visual treatment option for checkboxes
if(setting->specialValueText() != "") {
Frame::setTitle("");
button->setText(setting->specialValueText());
}
}
}
break;
case CSMSettings::Type_RadioButton:
@ -32,14 +43,17 @@ CSVSettings::BooleanView::BooleanView (CSMSettings::Setting *setting,
break;
}
connect (button, SIGNAL (clicked (bool)),
this, SLOT (slotToggled (bool)));
if(setting->type() != CSMSettings::Type_CheckBox || mButtons.empty())
{
connect (button, SIGNAL (clicked (bool)),
this, SLOT (slotToggled (bool)));
button->setObjectName (value);
button->setObjectName (value);
addWidget (button);
addWidget (button);
mButtons[value] = button;
mButtons[value] = button;
}
}
}

View File

@ -326,8 +326,8 @@ void CSVSettings::Dialog::closeEvent (QCloseEvent *event)
model()->setDefinitions("Video/antialiasing", QStringList(reAA.cap(1)));
#endif
// shader lang
model()->setDefinitions("General/shader mode",
// shader lang (no group means "General" group)
model()->setDefinitions("shader mode",
QStringList(cmbShaderLang->currentText().toLower()));
// window size