diff options
Diffstat (limited to 'src/gui/setup_video.cpp')
-rw-r--r-- | src/gui/setup_video.cpp | 293 |
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); } } |