summaryrefslogtreecommitdiff
path: root/src/gui/setup_video.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/gui/setup_video.cpp')
-rw-r--r--src/gui/setup_video.cpp293
1 files changed, 51 insertions, 242 deletions
diff --git a/src/gui/setup_video.cpp b/src/gui/setup_video.cpp
index 1a5e17b6..d72b402b 100644
--- a/src/gui/setup_video.cpp
+++ b/src/gui/setup_video.cpp
@@ -37,6 +37,7 @@
#include "gui/widgets/listbox.h"
#include "gui/widgets/scrollarea.h"
#include "gui/widgets/slider.h"
+#include "gui/widgets/spacer.h"
#include "gui/widgets/textfield.h"
#include "gui/widgets/dropdown.h"
@@ -61,14 +62,8 @@ extern Graphics *graphics;
class ModeListModel : public gcn::ListModel
{
public:
- /**
- * Constructor.
- */
ModeListModel();
- /**
- * Destructor.
- */
virtual ~ModeListModel() { }
/**
@@ -129,49 +124,10 @@ int ModeListModel::getIndexOf(const std::string &widthXHeightMode)
return -1;
}
-const char *SIZE_NAME[4] =
-{
- N_("Tiny"),
- N_("Small"),
- N_("Medium"),
- N_("Large"),
-};
-
-class FontSizeChoiceListModel : public gcn::ListModel
-{
-public:
- virtual ~FontSizeChoiceListModel() { }
-
- virtual int getNumberOfElements()
- {
- return 4;
- }
-
- virtual std::string getElementAt(int i)
- {
- if (i >= getNumberOfElements())
- return _("???");
-
- return SIZE_NAME[i];
- }
-};
-
-static const char *speechModeToString(Being::Speech mode)
-{
- switch (mode)
- {
- case Being::NO_SPEECH: return _("No text");
- case Being::TEXT_OVERHEAD: return _("Text");
- case Being::NO_NAME_IN_BUBBLE: return _("Bubbles, no names");
- case Being::NAME_IN_BUBBLE: return _("Bubbles with names");
- }
- return "";
-}
-
const char *Setup_Video::overlayDetailToString(int detail)
{
if (detail == -1)
- detail = config.getValue("OverlayDetail", -1);
+ detail = config.getIntValue("OverlayDetail");
switch (detail)
{
@@ -185,7 +141,7 @@ const char *Setup_Video::overlayDetailToString(int detail)
const char *Setup_Video::particleDetailToString(int detail)
{
if (detail == -1)
- detail = 3 - config.getValue("particleEmitterSkip", -1);
+ detail = 3 - config.getIntValue("particleEmitterSkip");
switch (detail)
{
@@ -198,73 +154,42 @@ const char *Setup_Video::particleDetailToString(int detail)
}
Setup_Video::Setup_Video():
- mFullScreenEnabled(config.getValue("screen", false)),
- mOpenGLEnabled(config.getValue("opengl", false)),
- mCustomCursorEnabled(config.getValue("customcursor", true)),
- mShowMonsterDamageEnabled(config.getValue("showMonstersTakedDamage",
- false)),
- mVisibleNamesEnabled(config.getValue("visiblenames", true)),
- mParticleEffectsEnabled(config.getValue("particleeffects", true)),
- mNameEnabled(config.getValue("showownname", false)),
- mNPCLogEnabled(config.getValue("logNpcInGui", true)),
- mPickupChatEnabled(config.getValue("showpickupchat", true)),
- mPickupParticleEnabled(config.getValue("showpickupparticle", false)),
- mOpacity(config.getValue("guialpha", 0.8)),
- mFps((int) config.getValue("fpslimit", 60)),
- mSDLTransparencyDisabled(config.getValue("disableTransparency", true)),
- mSpeechMode(static_cast<Being::Speech>(
- config.getValue("speech", Being::TEXT_OVERHEAD))),
+ mFullScreenEnabled(config.getBoolValue("screen")),
+ mOpenGLEnabled(config.getBoolValue("opengl")),
+ mCustomCursorEnabled(config.getBoolValue("customcursor")),
+ mParticleEffectsEnabled(config.getBoolValue("particleeffects")),
+ mFps(config.getIntValue("fpslimit")),
+ mSDLTransparencyDisabled(config.getBoolValue("disableTransparency")),
mModeListModel(new ModeListModel),
mModeList(new ListBox(mModeListModel)),
mFsCheckBox(new CheckBox(_("Full screen"), mFullScreenEnabled)),
mOpenGLCheckBox(new CheckBox(_("OpenGL"), mOpenGLEnabled)),
mCustomCursorCheckBox(new CheckBox(_("Custom cursor"),
mCustomCursorEnabled)),
- mVisibleNamesCheckBox(new CheckBox(_("Visible names"),
- mVisibleNamesEnabled)),
mParticleEffectsCheckBox(new CheckBox(_("Particle effects"),
mParticleEffectsEnabled)),
- mNameCheckBox(new CheckBox(_("Show own name"), mNameEnabled)),
- mNPCLogCheckBox(new CheckBox(_("Log NPC dialogue"), mNPCLogEnabled)),
- mPickupNotifyLabel(new Label(_("Show pickup notification"))),
- // TRANSLATORS: Refers to "Show pickup notification"
- mPickupChatCheckBox(new CheckBox(_("in chat"), mPickupChatEnabled)),
- // TRANSLATORS: Refers to "Show pickup notification"
- mPickupParticleCheckBox(new CheckBox(_("as particle"),
- mPickupParticleEnabled)),
- mSpeechSlider(new Slider(0, 3)),
- mSpeechLabel(new Label("")),
- mAlphaSlider(new Slider(0.2, 1.0)),
mFpsCheckBox(new CheckBox(_("FPS limit:"))),
mFpsSlider(new Slider(10, 120)),
mFpsLabel(new Label),
- mOverlayDetail((int) config.getValue("OverlayDetail", 2)),
+ mOverlayDetail(config.getIntValue("OverlayDetail")),
mOverlayDetailSlider(new Slider(0, 2)),
mOverlayDetailField(new Label),
- mParticleDetail(3 - (int) config.getValue("particleEmitterSkip", 1)),
+ mParticleDetail(3 - config.getIntValue("particleEmitterSkip")),
mParticleDetailSlider(new Slider(0, 3)),
mParticleDetailField(new Label),
- mFontSize((int) config.getValue("fontSize", 11)),
mDisableSDLTransparencyCheckBox(
new CheckBox(_("Disable transparency (Low CPU mode)"),
mSDLTransparencyDisabled))
{
setName(_("Video"));
- mShowMonsterDamageCheckBox = new CheckBox(_("Show damage"),
- mShowMonsterDamageEnabled);
+ Spacer *space = new Spacer(0,10);
ScrollArea *scrollArea = new ScrollArea(mModeList);
scrollArea->setHorizontalScrollPolicy(gcn::ScrollArea::SHOW_NEVER);
- speechLabel = new Label(_("Overhead text"));
- alphaLabel = new Label(_("Gui opacity"));
- overlayDetailLabel = new Label(_("Ambient FX"));
- particleDetailLabel = new Label(_("Particle detail"));
- fontSizeLabel = new Label(_("Font size"));
-
- mFontSizeListModel = new FontSizeChoiceListModel;
- mFontSizeDropDown = new DropDown(mFontSizeListModel);
+ overlayDetailLabel = new Label(_("Ambient FX:"));
+ particleDetailLabel = new Label(_("Particle detail:"));
mModeList->setEnabled(true);
@@ -272,16 +197,15 @@ Setup_Video::Setup_Video():
mOpenGLCheckBox->setEnabled(false);
#endif
- mAlphaSlider->setValue(mOpacity);
- mAlphaSlider->setWidth(90);
- mAlphaSlider->setEnabled(!mSDLTransparencyDisabled);
-
mFpsLabel->setCaption(mFps > 0 ? toString(mFps) : _("None"));
mFpsLabel->setWidth(60);
mFpsSlider->setValue(mFps);
mFpsSlider->setEnabled(mFps > 0);
mFpsCheckBox->setSelected(mFps > 0);
+ overlayDetailLabel->setAlignment(Graphics::RIGHT);
+ particleDetailLabel->setAlignment(Graphics::RIGHT);
+
// If the openGL Mode is enabled, disabling the transaprency
// is irrelevant.
mDisableSDLTransparencyCheckBox->setEnabled(!mOpenGLEnabled);
@@ -291,48 +215,31 @@ Setup_Video::Setup_Video():
+ toString(graphics->getHeight());
mModeList->setSelected(mModeListModel->getIndexOf(videoMode));
+ // Set actions
mModeList->setActionEventId("videomode");
mCustomCursorCheckBox->setActionEventId("customcursor");
- mShowMonsterDamageCheckBox->setActionEventId("monsterdamage");
- mVisibleNamesCheckBox->setActionEventId("visiblenames");
mParticleEffectsCheckBox->setActionEventId("particleeffects");
- mPickupChatCheckBox->setActionEventId("pickupchat");
- mPickupParticleCheckBox->setActionEventId("pickupparticle");
- mNameCheckBox->setActionEventId("showownname");
- mNPCLogCheckBox->setActionEventId("lognpc");
- mAlphaSlider->setActionEventId("guialpha");
+ mDisableSDLTransparencyCheckBox->setActionEventId("disableTransparency");
mFpsCheckBox->setActionEventId("fpslimitcheckbox");
- mSpeechSlider->setActionEventId("speech");
mFpsSlider->setActionEventId("fpslimitslider");
mOverlayDetailSlider->setActionEventId("overlaydetailslider");
mOverlayDetailField->setActionEventId("overlaydetailfield");
mOpenGLCheckBox->setActionEventId("opengl");
mParticleDetailSlider->setActionEventId("particledetailslider");
mParticleDetailField->setActionEventId("particledetailfield");
- mDisableSDLTransparencyCheckBox->setActionEventId("disableTransparency");
+ // Set listeners
mModeList->addActionListener(this);
mCustomCursorCheckBox->addActionListener(this);
- mShowMonsterDamageCheckBox->addActionListener(this);
- mVisibleNamesCheckBox->addActionListener(this);
mOpenGLCheckBox->addActionListener(this);
mParticleEffectsCheckBox->addActionListener(this);
- mPickupChatCheckBox->addActionListener(this);
- mPickupParticleCheckBox->addActionListener(this);
- mNameCheckBox->addActionListener(this);
- mNPCLogCheckBox->addActionListener(this);
- mAlphaSlider->addActionListener(this);
+ mDisableSDLTransparencyCheckBox->addActionListener(this);
mFpsCheckBox->addActionListener(this);
- mSpeechSlider->addActionListener(this);
mFpsSlider->addActionListener(this);
mOverlayDetailSlider->addActionListener(this);
mOverlayDetailField->addKeyListener(this);
mParticleDetailSlider->addActionListener(this);
mParticleDetailField->addKeyListener(this);
- mDisableSDLTransparencyCheckBox->addActionListener(this);
-
- mSpeechLabel->setCaption(speechModeToString(mSpeechMode));
- mSpeechSlider->setValue(mSpeechMode);
mOverlayDetailField->setCaption(overlayDetailToString(mOverlayDetail));
mOverlayDetailSlider->setValue(mOverlayDetail);
@@ -340,70 +247,52 @@ Setup_Video::Setup_Video():
mParticleDetailField->setCaption(particleDetailToString(mParticleDetail));
mParticleDetailSlider->setValue(mParticleDetail);
- mFontSizeDropDown->setSelected(mFontSize - 10);
- mFontSizeDropDown->adjustHeight();
-
// Do the layout
LayoutHelper h(this);
ContainerPlacer place = h.getPlacer(0, 0);
- place(0, 0, scrollArea, 1, 5).setPadding(2);
- place(1, 0, mFsCheckBox, 2);
- place(3, 0, mOpenGLCheckBox, 1);
-
- place(1, 1, mCustomCursorCheckBox, 3);
- place(3, 1, mShowMonsterDamageCheckBox, 3);
-
- place(1, 2, mVisibleNamesCheckBox, 3);
- place(3, 2, mNameCheckBox, 1);
+ place(0, 0, scrollArea, 2, 6).setPadding(2);
- place(1, 3, mParticleEffectsCheckBox, 3);
- place(3, 3, mNPCLogCheckBox, 1);
+ place(2, 0, mFsCheckBox, 2);
+ place(4, 0, mOpenGLCheckBox, 2);
- place(1, 4, mPickupNotifyLabel, 4);
+ place(2, 1, space, 4, 1);
- place(1, 5, mPickupChatCheckBox, 1);
- place(2, 5, mPickupParticleCheckBox, 2);
+ place(2, 2, mCustomCursorCheckBox, 2);
+ place(4, 2, mParticleEffectsCheckBox, 2);
- place(0, 6, fontSizeLabel, 3);
- place(1, 6, mFontSizeDropDown, 2);
+ place(2, 3, space, 4, 1);
- place(0, 7, mAlphaSlider);
- place(1, 7, alphaLabel, 3);
+ place(2, 4, mDisableSDLTransparencyCheckBox, 4);
- place(0, 8, mFpsSlider);
- place(1, 8, mFpsCheckBox).setPadding(3);
- place(2, 8, mFpsLabel).setPadding(1);
+ place(2, 5, space, 4, 1);
- place(0, 9, mSpeechSlider);
- place(1, 9, speechLabel);
- place(2, 9, mSpeechLabel, 3).setPadding(2);
+ place(0, 6, mFpsSlider, 2);
+ place(2, 6, mFpsCheckBox).setPadding(3);
+ place(3, 6, mFpsLabel).setPadding(1);
- place(0, 10, mOverlayDetailSlider);
- place(1, 10, overlayDetailLabel);
- place(2, 10, mOverlayDetailField, 3).setPadding(2);
+ place(0, 7, mOverlayDetailSlider, 2);
+ place(2, 7, overlayDetailLabel);
+ place(3, 7, mOverlayDetailField).setPadding(2);
- place(0, 11, mParticleDetailSlider);
- place(1, 11, particleDetailLabel);
- place(2, 11, mParticleDetailField, 3).setPadding(2);
+ place(0, 8, mParticleDetailSlider, 2);
+ place(2, 8, particleDetailLabel);
+ place(3, 8, mParticleDetailField).setPadding(2);
- place(0, 12, mDisableSDLTransparencyCheckBox, 4);
-
- setDimension(gcn::Rectangle(0, 0, 365, 300));
+ setDimension(gcn::Rectangle(0, 0, 370, 300));
}
Setup_Video::~Setup_Video()
{
delete mModeListModel;
delete mModeList;
- delete mFontSizeListModel;
}
void Setup_Video::apply()
{
// Full screen changes
bool fullscreen = mFsCheckBox->isSelected();
- if (fullscreen != (config.getValue("screen", false) == 1))
+ if (fullscreen != config.getBoolValue("screen"))
{
/* The OpenGL test is only necessary on Windows, since switching
* to/from full screen works fine on Linux. On Windows we'd have to
@@ -414,7 +303,7 @@ void Setup_Video::apply()
#if defined(WIN32) || defined(__APPLE__)
// checks for opengl usage
- if (!(config.getValue("opengl", false) == 1))
+ if (!config.getBoolValue("opengl"))
{
#endif
if (!graphics->setFullscreen(fullscreen))
@@ -494,24 +383,14 @@ void Setup_Video::apply()
// FPS change
config.setValue("fpslimit", mFps);
- config.setValue("fontSize", mFontSizeDropDown->getSelected() + 10);
// We sync old and new values at apply time
- mFullScreenEnabled = config.getValue("screen", false);
- mCustomCursorEnabled = config.getValue("customcursor", true);
- mShowMonsterDamageEnabled = config.getValue("showMonstersTakedDamage", false);
- mVisibleNamesEnabled = config.getValue("visiblenames", true);
- mParticleEffectsEnabled = config.getValue("particleeffects", true);
- mNameEnabled = config.getValue("showownname", false);
- mNPCLogEnabled = config.getValue("logNpcInGui", true);
- mSpeechMode = static_cast<Being::Speech>(
- config.getValue("speech", Being::TEXT_OVERHEAD));
- mOpacity = config.getValue("guialpha", 0.8);
- mOverlayDetail = (int) config.getValue("OverlayDetail", 2);
- mOpenGLEnabled = config.getValue("opengl", false);
- mPickupChatEnabled = config.getValue("showpickupchat", true);
- mPickupParticleEnabled = config.getValue("showpickupparticle", false);
- mSDLTransparencyDisabled = config.getValue("disableTransparency", true);
+ mFullScreenEnabled = config.getBoolValue("screen");
+ mCustomCursorEnabled = config.getBoolValue("customcursor");
+ mParticleEffectsEnabled = config.getBoolValue("particleeffects");
+ mOverlayDetail = config.getIntValue("OverlayDetail");
+ mOpenGLEnabled = config.getBoolValue("opengl");
+ mSDLTransparencyDisabled = config.getBoolValue("disableTransparency");
}
void Setup_Video::cancel()
@@ -520,16 +399,9 @@ void Setup_Video::cancel()
mFsCheckBox->setSelected(mFullScreenEnabled);
mOpenGLCheckBox->setSelected(mOpenGLEnabled);
mCustomCursorCheckBox->setSelected(mCustomCursorEnabled);
- mShowMonsterDamageCheckBox->setSelected(mShowMonsterDamageEnabled);
- mVisibleNamesCheckBox->setSelected(mVisibleNamesEnabled);
mParticleEffectsCheckBox->setSelected(mParticleEffectsEnabled);
mFpsSlider->setValue(mFps);
mFpsSlider->setEnabled(mFps > 0);
- mSpeechSlider->setValue(mSpeechMode);
- mNameCheckBox->setSelected(mNameEnabled);
- mNPCLogCheckBox->setSelected(mNPCLogEnabled);
- mAlphaSlider->setValue(mOpacity);
- mAlphaSlider->setEnabled(!mSDLTransparencyDisabled);
mOverlayDetailSlider->setValue(mOverlayDetail);
mParticleDetailSlider->setValue(mParticleDetail);
std::string text = mFpsCheckBox->isSelected() ? toString(mFps) : _("None");
@@ -547,18 +419,8 @@ void Setup_Video::cancel()
config.setValue("screenheight", graphics->getHeight());
config.setValue("customcursor", mCustomCursorEnabled);
- config.setValue("showMonstersTakedDamage", mShowMonsterDamageEnabled);
- config.setValue("visiblenames", mVisibleNamesEnabled);
config.setValue("particleeffects", mParticleEffectsEnabled);
- config.setValue("speech", mSpeechMode);
- config.setValue("showownname", mNameEnabled);
- if (player_node)
- player_node->setCheckNameSetting(true);
- config.setValue("logNpcInGui", mNPCLogEnabled);
- config.setValue("guialpha", mOpacity);
config.setValue("opengl", mOpenGLEnabled);
- config.setValue("showpickupchat", mPickupChatEnabled);
- config.setValue("showpickupparticle", mPickupParticleEnabled);
config.setValue("disableTransparency", mSDLTransparencyDisabled);
}
@@ -572,38 +434,20 @@ void Setup_Video::action(const gcn::ActionEvent &event)
const int width = atoi(mode.substr(0, mode.find("x")).c_str());
const int height = atoi(mode.substr(mode.find("x") + 1).c_str());
- // TODO: Find out why the drawing area doesn't resize without a restart.
+ // TODO: Find out why the drawing area doesn't resize without a restart
if (width != graphics->getWidth() || height != graphics->getHeight())
{
- if (width < graphics->getWidth() || height < graphics->getHeight())
- new OkDialog(_("Screen Resolution Changed"),
- _("Restart your client for the change to take effect.")
- + std::string("\n") +
- _("Some windows may be moved to fit the lowered resolution."));
- else
- new OkDialog(_("Screen Resolution Changed"),
- _("Restart your client for the change to take effect."));
+ new OkDialog(_("Screen Resolution Changed"),
+ _("Restart your client for the change to take effect."));
}
config.setValue("screenwidth", width);
config.setValue("screenheight", height);
}
- else if (id == "guialpha")
- {
- config.setValue("guialpha", mAlphaSlider->getValue());
- }
else if (id == "customcursor")
{
config.setValue("customcursor", mCustomCursorCheckBox->isSelected());
}
- else if (id == "monsterdamage")
- {
- config.setValue("showMonstersTakedDamage", mShowMonsterDamageCheckBox->isSelected());
- }
- else if (id == "visiblenames")
- {
- config.setValue("visiblenames", mVisibleNamesCheckBox->isSelected());
- }
else if (id == "particleeffects")
{
config.setValue("particleeffects",
@@ -616,34 +460,6 @@ void Setup_Video::action(const gcn::ActionEvent &event)
_("Changes will take effect on map change."));
}
}
- else if (id == "pickupchat")
- {
- config.setValue("showpickupchat", mPickupChatCheckBox->isSelected());
- }
- else if (id == "pickupparticle")
- {
- config.setValue("showpickupparticle",
- mPickupParticleCheckBox->isSelected());
- }
- else if (id == "speech")
- {
- Being::Speech val = (Being::Speech)mSpeechSlider->getValue();
- mSpeechLabel->setCaption(speechModeToString(val));
- mSpeechSlider->setValue(val);
- config.setValue("speech", val);
- }
- else if (id == "showownname")
- {
- // Notify the local player that settings have changed for the name
- // and requires an update
- if (player_node)
- player_node->setCheckNameSetting(true);
- config.setValue("showownname", mNameCheckBox->isSelected());
- }
- else if (id == "lognpc")
- {
- config.setValue("logNpcInGui", mNPCLogCheckBox->isSelected());
- }
else if (id == "overlaydetailslider")
{
int val = (int) mOverlayDetailSlider->getValue();
@@ -680,12 +496,5 @@ void Setup_Video::action(const gcn::ActionEvent &event)
{
mDisableSDLTransparencyCheckBox->setEnabled(true);
}
-
- // Disable gui opacity slider when disabling transparency.
- if (mDisableSDLTransparencyCheckBox->isEnabled())
- mAlphaSlider->setEnabled(
- !mDisableSDLTransparencyCheckBox->isSelected());
- else
- mAlphaSlider->setEnabled(true);
}
}