From 162ac8865cb927c561283da696570dcd68490c67 Mon Sep 17 00:00:00 2001 From: McCabe Maxsted Date: Sun, 13 Sep 2009 20:26:02 -0700 Subject: Added prev/next buttons for windlight presets, cleaned up some stuff --- linden/indra/newview/llfloaterwindlight.cpp | 67 +++++++++++++++++++--- linden/indra/newview/llfloaterwindlight.h | 3 + linden/indra/newview/llwindlightremotectrl.cpp | 16 +++--- linden/indra/newview/llwlparammanager.cpp | 6 +- linden/indra/newview/llwlparammanager.h | 6 +- .../newview/skins/default/textures/textures.xml | 3 + .../xui/en-us/floater_windlight_options.xml | 24 +++++--- 7 files changed, 91 insertions(+), 34 deletions(-) (limited to 'linden') diff --git a/linden/indra/newview/llfloaterwindlight.cpp b/linden/indra/newview/llfloaterwindlight.cpp index 1c3db9b..914513b 100644 --- a/linden/indra/newview/llfloaterwindlight.cpp +++ b/linden/indra/newview/llfloaterwindlight.cpp @@ -228,6 +228,10 @@ void LLFloaterWindLight::initCallbacks(void) { // Dome childSetCommitCallback("WLGamma", onFloatControlMoved, ¶m_mgr->mWLGamma); childSetCommitCallback("WLStarAlpha", onStarAlphaMoved, NULL); + + // next/prev buttons + childSetAction("next", onClickNext, this); + childSetAction("prev", onClickPrev, this); } void LLFloaterWindLight::onClickHelp(void* data) @@ -318,6 +322,13 @@ void LLFloaterWindLight::syncMenu() LLWLParamSet& currentParams = param_mgr->mCurParams; //std::map & currentParams = param_mgr->mCurParams.mParamValues; + // Fixes LL "bug" (preset name isn't kept synchronized) + LLComboBox* comboBox = getChild("WLPresetsCombo"); + if (comboBox->getSelectedItemLabel() != currentParams.mName) + { + comboBox->setSimple(currentParams.mName); + } + // blue horizon param_mgr->mBlueHorizon = currentParams.getVector(param_mgr->mBlueHorizon.mName, err); childSetValue("WLBlueHorizonR", param_mgr->mBlueHorizon.r / 2.0); @@ -439,14 +450,6 @@ void LLFloaterWindLight::syncMenu() childSetValue("WLGamma", param_mgr->mWLGamma.x); childSetValue("WLStarAlpha", param_mgr->mCurParams.getStarBrightness()); - - // Update combobox name - LLComboBox* comboBox = getChild("WLPresetsCombo"); - std::string current_name = param_mgr->mCurPresetName; - if (!current_name.empty() && current_name != comboBox->getSelectedValue().asString()) - { - comboBox->selectByValue(LLSD(current_name)); - } } @@ -1001,3 +1004,51 @@ void LLFloaterWindLight::deactivateAnimator() LLWLParamManager::instance()->mAnimator.mIsRunning = false; LLWLParamManager::instance()->mAnimator.mUseLindenTime = false; } + +void LLFloaterWindLight::onClickNext(void* user_data) +{ + LLWLParamManager * param_mgr = LLWLParamManager::instance(); + LLWLParamSet& currentParams = param_mgr->mCurParams; + + // find place of current param + std::map::iterator mIt = + param_mgr->mParamList.find(currentParams.mName); + + // if at the end, loop + std::map::iterator last = param_mgr->mParamList.end(); --last; + if(mIt == last) + { + mIt = param_mgr->mParamList.begin(); + } + else + { + mIt++; + } + param_mgr->mAnimator.mIsRunning = false; + param_mgr->mAnimator.mUseLindenTime = false; + param_mgr->loadPreset(mIt->first, true); +} + +void LLFloaterWindLight::onClickPrev(void* user_data) +{ + LLWLParamManager * param_mgr = LLWLParamManager::instance(); + LLWLParamSet& currentParams = param_mgr->mCurParams; + + // find place of current param + std::map::iterator mIt = + param_mgr->mParamList.find(currentParams.mName); + + // if at the beginning, loop + if(mIt == param_mgr->mParamList.begin()) + { + std::map::iterator last = param_mgr->mParamList.end(); --last; + mIt = last; + } + else + { + mIt--; + } + param_mgr->mAnimator.mIsRunning = false; + param_mgr->mAnimator.mUseLindenTime = false; + param_mgr->loadPreset(mIt->first, true); +} diff --git a/linden/indra/newview/llfloaterwindlight.h b/linden/indra/newview/llfloaterwindlight.h index 3e5556b..70e76c5 100644 --- a/linden/indra/newview/llfloaterwindlight.h +++ b/linden/indra/newview/llfloaterwindlight.h @@ -136,6 +136,9 @@ private: static LLFloaterWindLight* sWindLight; static std::set sDefaultPresets; + + static void onClickNext(void* user_data); + static void onClickPrev(void* user_data); }; diff --git a/linden/indra/newview/llwindlightremotectrl.cpp b/linden/indra/newview/llwindlightremotectrl.cpp index ca411c5..591b413 100644 --- a/linden/indra/newview/llwindlightremotectrl.cpp +++ b/linden/indra/newview/llwindlightremotectrl.cpp @@ -92,11 +92,11 @@ void LLWindlightRemoteCtrl::build() { if (gSavedSettings.getBOOL("ShowWindlightSettingsPopup")) { - LLUICtrlFactory::getInstance()->buildPanel(this, "panel_windlight_remote_expanded.xml"/*, &getFactoryMap()*/); + LLUICtrlFactory::getInstance()->buildPanel(this, "panel_windlight_remote_expanded.xml"); } else { - LLUICtrlFactory::getInstance()->buildPanel(this, "panel_windlight_remote.xml"/*, &getFactoryMap()*/); + LLUICtrlFactory::getInstance()->buildPanel(this, "panel_windlight_remote.xml"); } } @@ -128,14 +128,15 @@ void LLWindlightRemoteCtrl::refreshPresets() if (mPresetsCombo) { // snag current preset - std::string cur_preset = LLWLParamManager::instance()->mCurPresetName;//mPresetsCombo->getValue().asString(); + LLWLParamManager * param_mgr = LLWLParamManager::instance(); + LLWLParamSet& currentParams = param_mgr->mCurParams; // clear in case presets names have changed mPresetsCombo->clearRows(); std::map::iterator mIt = - LLWLParamManager::instance()->mParamList.begin(); - for(; mIt != LLWLParamManager::instance()->mParamList.end(); mIt++) + param_mgr->mParamList.begin(); + for(; mIt != param_mgr->mParamList.end(); mIt++) { mPresetsCombo->add(mIt->first); } @@ -148,9 +149,10 @@ void LLWindlightRemoteCtrl::refreshPresets() mPresetsCombo->addSimpleElement(getString("midnight"), ADD_BOTTOM); mPresetsCombo->addSimpleElement(getString("revert_region"), ADD_BOTTOM); - if (!cur_preset.empty()) + if (mPresetsCombo->getSelectedItemLabel() != currentParams.mName && + !currentParams.mName.empty()) { - mPresetsCombo->selectByValue(LLSD(cur_preset)); + mPresetsCombo->selectByValue(LLSD(currentParams.mName)); } else { diff --git a/linden/indra/newview/llwlparammanager.cpp b/linden/indra/newview/llwlparammanager.cpp index ba21a96..ba3d070 100644 --- a/linden/indra/newview/llwlparammanager.cpp +++ b/linden/indra/newview/llwlparammanager.cpp @@ -97,10 +97,7 @@ LLWLParamManager::LLWLParamManager() : // sky dome mDomeOffset(0.96f), - mDomeRadius(15000.f), - - // current name - mCurPresetName("") + mDomeRadius(15000.f) { } @@ -229,7 +226,6 @@ void LLWLParamManager::loadPreset(const std::string & name,bool propagate) setParamSet(name, paramsData); } presetsXML.close(); - mCurPresetName = name; } else { diff --git a/linden/indra/newview/llwlparammanager.h b/linden/indra/newview/llwlparammanager.h index 4507307..355d3e3 100644 --- a/linden/indra/newview/llwlparammanager.h +++ b/linden/indra/newview/llwlparammanager.h @@ -261,11 +261,7 @@ public: F32 mDomeRadius; // list of all the parameters, listed by name - std::map mParamList; - - // current parameter name - std::string mCurPresetName; - + std::map mParamList; private: // our parameter manager singleton instance diff --git a/linden/indra/newview/skins/default/textures/textures.xml b/linden/indra/newview/skins/default/textures/textures.xml index 9e1d9b5..4800048 100644 --- a/linden/indra/newview/skins/default/textures/textures.xml +++ b/linden/indra/newview/skins/default/textures/textures.xml @@ -365,6 +365,9 @@ + + + diff --git a/linden/indra/newview/skins/default/xui/en-us/floater_windlight_options.xml b/linden/indra/newview/skins/default/xui/en-us/floater_windlight_options.xml index 906e7de..471b3e5 100644 --- a/linden/indra/newview/skins/default/xui/en-us/floater_windlight_options.xml +++ b/linden/indra/newview/skins/default/xui/en-us/floater_windlight_options.xml @@ -4,29 +4,35 @@ min_width="400" mouse_opaque="true" name="WindLight floater" rect_control="FloaterAdvancedSkyRect" title="Advanced Sky Editor" width="700"> - - Sky Presets: - - + +