diff options
Diffstat (limited to 'indra')
-rw-r--r-- | indra/newview/CMakeLists.txt | 2 | ||||
-rw-r--r-- | indra/newview/llfloaterdeleteenvpreset.cpp | 139 | ||||
-rw-r--r-- | indra/newview/llfloaterdeleteenvpreset.h | 55 | ||||
-rw-r--r-- | indra/newview/llfloaterenvironmentsettings.cpp | 1 | ||||
-rw-r--r-- | indra/newview/llviewerfloaterreg.cpp | 2 | ||||
-rw-r--r-- | indra/newview/llviewermenu.cpp | 46 | ||||
-rw-r--r-- | indra/newview/skins/default/xui/en/floater_delete_env_preset.xml | 19 | ||||
-rw-r--r-- | indra/newview/skins/default/xui/en/menu_viewer.xml | 36 |
8 files changed, 277 insertions, 23 deletions
diff --git a/indra/newview/CMakeLists.txt b/indra/newview/CMakeLists.txt index b87f3bf3d4..097151d058 100644 --- a/indra/newview/CMakeLists.txt +++ b/indra/newview/CMakeLists.txt @@ -174,6 +174,7 @@ set(viewer_SOURCE_FILES llfloatercamera.cpp llfloatercolorpicker.cpp llfloaterdaycycle.cpp + llfloaterdeleteenvpreset.cpp llfloaterdisplayname.cpp llfloaterenvsettings.cpp llfloaterenvironmentsettings.cpp @@ -723,6 +724,7 @@ set(viewer_HEADER_FILES llfloatercamera.h llfloatercolorpicker.h llfloaterdaycycle.h + llfloaterdeleteenvpreset.h llfloaterdisplayname.h llfloaterenvsettings.h llfloaterenvironmentsettings.h diff --git a/indra/newview/llfloaterdeleteenvpreset.cpp b/indra/newview/llfloaterdeleteenvpreset.cpp new file mode 100644 index 0000000000..e014eedeb1 --- /dev/null +++ b/indra/newview/llfloaterdeleteenvpreset.cpp @@ -0,0 +1,139 @@ +/** + * @file llfloaterdeleteenvpreset.cpp + * @brief Floater to delete a water / sky / day cycle preset. + * + * $LicenseInfo:firstyear=2011&license=viewerlgpl$ + * Second Life Viewer Source Code + * Copyright (C) 2011, Linden Research, Inc. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; + * version 2.1 of the License only. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + * + * Linden Research, Inc., 945 Battery Street, San Francisco, CA 94111 USA + * $/LicenseInfo$ + */ + +#include "llviewerprecompiledheaders.h" + +#include "llfloaterdeleteenvpreset.h" + +// libs +#include "llbutton.h" +#include "llcombobox.h" + +// newview +#include "lldaycyclemanager.h" +#include "llwaterparammanager.h" + +LLFloaterDeleteEnvPreset::LLFloaterDeleteEnvPreset(const LLSD &key) +: LLFloater(key) +, mPresetCombo(NULL) +{ +} + +// virtual +BOOL LLFloaterDeleteEnvPreset::postBuild() +{ + mPresetCombo = getChild<LLComboBox>("preset_combo"); + + getChild<LLButton>("delete")->setCommitCallback(boost::bind(&LLFloaterDeleteEnvPreset::onBtnDelete, this)); + getChild<LLButton>("cancel")->setCommitCallback(boost::bind(&LLFloaterDeleteEnvPreset::onBtnCancel, this)); + + // Deletion is not implemented yet, so disable the button for now. + getChild<LLButton>("delete")->setEnabled(FALSE); + + return TRUE; +} + +// virtual +void LLFloaterDeleteEnvPreset::onOpen(const LLSD& key) +{ + std::string param = key.asString(); + std::string floater_title = getString(std::string("title_") + param); + std::string combo_label = getString(std::string("label_" + param)); + + // Update floater title. + setTitle(floater_title); + + // Update the combobox label. + getChild<LLUICtrl>("label")->setValue(combo_label); + + // Populate the combobox. + mPresetCombo->removeall(); + if (param == "water") + { + populateWaterPresetsList(); + } + else if (param == "sky") + { + populateSkyPresetsList(); + } + else if (param == "day_cycle") + { + populateDayCyclesList(); + } + else + { + llwarns << "Unrecognized key" << llendl; + } +} + +void LLFloaterDeleteEnvPreset::onBtnDelete() +{ + closeFloater(); +} + +void LLFloaterDeleteEnvPreset::onBtnCancel() +{ + closeFloater(); +} + +void LLFloaterDeleteEnvPreset::populateWaterPresetsList() +{ + // *TODO: Reload the list when user preferences change. + LLWaterParamManager& water_mgr = LLWaterParamManager::instance(); + LL_DEBUGS("Windlight") << "Current water preset: " << water_mgr.mCurParams.mName << LL_ENDL; + + const std::map<std::string, LLWaterParamSet> &water_params_map = water_mgr.mParamList; + for (std::map<std::string, LLWaterParamSet>::const_iterator it = water_params_map.begin(); it != water_params_map.end(); it++) + { + std::string name = it->first; + bool enabled = (name != water_mgr.mCurParams.mName); // don't allow deleting current preset + mPresetCombo->add(name, ADD_BOTTOM, enabled); + } +} + +void LLFloaterDeleteEnvPreset::populateSkyPresetsList() +{ + LLWLParamManager& sky_mgr = LLWLParamManager::instance(); + LL_DEBUGS("Windlight") << "Current sky preset: " << sky_mgr.mCurParams.mName << LL_ENDL; + + const std::map<LLWLParamKey, LLWLParamSet> &sky_params_map = sky_mgr.mParamList; + for (std::map<LLWLParamKey, LLWLParamSet>::const_iterator it = sky_params_map.begin(); it != sky_params_map.end(); it++) + { + if (it->first.scope == LLEnvKey::SCOPE_REGION) continue; // list only local presets + bool enabled = (it->first.name != sky_mgr.mCurParams.mName); + mPresetCombo->add(it->first.name, ADD_BOTTOM, enabled); + } +} + +void LLFloaterDeleteEnvPreset::populateDayCyclesList() +{ + // *TODO: Disable current day cycle. + const LLDayCycleManager::dc_map_t& map = LLDayCycleManager::instance().getPresets(); + for (LLDayCycleManager::dc_map_t::const_iterator it = map.begin(); it != map.end(); ++it) + { + mPresetCombo->add(it->first); + } +} diff --git a/indra/newview/llfloaterdeleteenvpreset.h b/indra/newview/llfloaterdeleteenvpreset.h new file mode 100644 index 0000000000..08fd11a16d --- /dev/null +++ b/indra/newview/llfloaterdeleteenvpreset.h @@ -0,0 +1,55 @@ +/** + * @file llfloaterdeleteenvpreset.h + * @brief Floater to delete a water / sky / day cycle preset. + * + * $LicenseInfo:firstyear=2011&license=viewerlgpl$ + * Second Life Viewer Source Code + * Copyright (C) 2011, Linden Research, Inc. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; + * version 2.1 of the License only. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + * + * Linden Research, Inc., 945 Battery Street, San Francisco, CA 94111 USA + * $/LicenseInfo$ + */ + +#ifndef LL_LLFLOATERDELETEENVPRESET_H +#define LL_LLFLOATERDELETEENVPRESET_H + +#include "llfloater.h" + +class LLComboBox; + +class LLFloaterDeleteEnvPreset : public LLFloater +{ + LOG_CLASS(LLFloaterDeleteEnvPreset); + +public: + LLFloaterDeleteEnvPreset(const LLSD &key); + + /*virtual*/ BOOL postBuild(); + /*virtual*/ void onOpen(const LLSD& key); + + void onBtnDelete(); + void onBtnCancel(); + +private: + void populateWaterPresetsList(); + void populateSkyPresetsList(); + void populateDayCyclesList(); + + LLComboBox* mPresetCombo; +}; + +#endif // LL_LLFLOATERDELETEENVPRESET_H diff --git a/indra/newview/llfloaterenvironmentsettings.cpp b/indra/newview/llfloaterenvironmentsettings.cpp index f097f70143..2149103792 100644 --- a/indra/newview/llfloaterenvironmentsettings.cpp +++ b/indra/newview/llfloaterenvironmentsettings.cpp @@ -197,6 +197,7 @@ void LLFloaterEnvironmentSettings::populateSkyPresetsList() const std::map<LLWLParamKey, LLWLParamSet> &sky_params_map = LLWLParamManager::getInstance()->mParamList; for (std::map<LLWLParamKey, LLWLParamSet>::const_iterator it = sky_params_map.begin(); it != sky_params_map.end(); it++) { + if (it->first.scope == LLEnvKey::SCOPE_REGION) continue; // list only local presets mSkyPresetCombo->add(it->first.name); } } diff --git a/indra/newview/llviewerfloaterreg.cpp b/indra/newview/llviewerfloaterreg.cpp index a6dee5a553..dfa6e2e5c8 100644 --- a/indra/newview/llviewerfloaterreg.cpp +++ b/indra/newview/llviewerfloaterreg.cpp @@ -49,6 +49,7 @@ #include "llfloaterbump.h" #include "llfloatercamera.h" #include "llfloaterdaycycle.h" +#include "llfloaterdeleteenvpreset.h" #include "llfloaterdisplayname.h" #include "llfloaterenvironmentsettings.h" #include "llfloaterevent.h" @@ -159,6 +160,7 @@ void LLViewerFloaterReg::registerFloaters() LLFloaterReg::add("env_settings", "floater_environment_settings.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLFloaterEnvironmentSettings>); LLFloaterReg::add("env_water", "floater_water.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLFloaterWater>); LLFloaterReg::add("env_windlight", "floater_windlight_options.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLFloaterWindLight>); + LLFloaterReg::add("env_delete_preset", "floater_delete_env_preset.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLFloaterDeleteEnvPreset>); LLFloaterReg::add("event", "floater_event.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLFloaterEvent>); diff --git a/indra/newview/llviewermenu.cpp b/indra/newview/llviewermenu.cpp index 4d0d663e0c..437bc4c598 100644 --- a/indra/newview/llviewermenu.cpp +++ b/indra/newview/llviewermenu.cpp @@ -7619,6 +7619,51 @@ class LLWorldEnvSettings : public view_listener_t } }; +class LLWorldEnvPreset : public view_listener_t +{ + bool handleEvent(const LLSD& userdata) + { + std::string item = userdata.asString(); + + if (item == "new_water") + { + } + else if (item == "edit_water") + { + } + else if (item == "delete_water") + { + LLFloaterReg::showInstance("env_delete_preset", "water"); + } + else if (item == "new_sky") + { + } + else if (item == "edit_sky") + { + } + else if (item == "delete_sky") + { + LLFloaterReg::showInstance("env_delete_preset", "sky"); + } + else if (item == "new_day_cycle") + { + } + else if (item == "edit_day_cycle") + { + } + else if (item == "delete_day_cycle") + { + LLFloaterReg::showInstance("env_delete_preset", "day_cycle"); + } + else + { + llwarns << "Unknown item selected" << llendl; + } + + return true; + } +}; + /// Post-Process callbacks class LLWorldPostProcess : public view_listener_t { @@ -7867,6 +7912,7 @@ void initialize_menus() view_listener_t::addMenu(new LLWorldCheckAlwaysRun(), "World.CheckAlwaysRun"); view_listener_t::addMenu(new LLWorldEnvSettings(), "World.EnvSettings"); + view_listener_t::addMenu(new LLWorldEnvPreset(), "World.EnvPreset"); view_listener_t::addMenu(new LLWorldPostProcess(), "World.PostProcess"); view_listener_t::addMenu(new LLWorldDayCycle(), "World.DayCycle"); diff --git a/indra/newview/skins/default/xui/en/floater_delete_env_preset.xml b/indra/newview/skins/default/xui/en/floater_delete_env_preset.xml index a7ab5abf38..1539c6448e 100644 --- a/indra/newview/skins/default/xui/en/floater_delete_env_preset.xml +++ b/indra/newview/skins/default/xui/en/floater_delete_env_preset.xml @@ -2,22 +2,31 @@ <floater legacy_header_height="18" height="130" - help_topic="environment_editor_floater" + help_topic="" layout="topleft" - name="Environment Editor Floater" + name="Delete Env Preset" save_rect="true" - title="DELETE PRESETS" + title="DELETE ENV PRESET" width="550"> + + <string name="title_water">Delete Water Preset</string> + <string name="title_sky">Delete Sky Preset</string> + <string name="title_day_cycle">Delete Day Cycle</string> + + <string name="label_water">Preset:</string> + <string name="label_sky">Preset:</string> + <string name="label_day_cycle">Day cycle:</string> + <text follows="top|left|right" font="SansSerif" height="10" layout="topleft" left="50" - name="delete_preset" + name="label" top="60" width="60"> - Setting: + Preset: </text> <combo_box follows="top|left" diff --git a/indra/newview/skins/default/xui/en/menu_viewer.xml b/indra/newview/skins/default/xui/en/menu_viewer.xml index 38bffd04ed..d5d41b981f 100644 --- a/indra/newview/skins/default/xui/en/menu_viewer.xml +++ b/indra/newview/skins/default/xui/en/menu_viewer.xml @@ -539,22 +539,22 @@ label="New preset..." name="new_water_preset"> <menu_item_call.on_click - function="stub" - parameter="stub"/> + function="World.EnvPreset" + parameter="new_water"/> </menu_item_call> <menu_item_call label="Edit preset..." name="edit_water_preset"> <menu_item_call.on_click - function="stub" - parameter="stub"/> + function="World.EnvPreset" + parameter="edit_water"/> </menu_item_call> <menu_item_call label="Delete preset..." name="delete_water_preset"> <menu_item_call.on_click - function="stub" - parameter="stub"/> + function="World.EnvPreset" + parameter="delete_water"/> </menu_item_call> </menu> @@ -565,22 +565,22 @@ label="New preset..." name="new_sky_preset"> <menu_item_call.on_click - function="stub" - parameter="stub"/> + function="World.EnvPreset" + parameter="new_sky"/> </menu_item_call> <menu_item_call label="Edit preset..." name="edit_sky_preset"> <menu_item_call.on_click - function="stub" - parameter="stub"/> + function="World.EnvPreset" + parameter="edit_sky"/> </menu_item_call> <menu_item_call label="Delete preset..." name="delete_sky_preset"> <menu_item_call.on_click - function="stub" - parameter="stub"/> + function="World.EnvPreset" + parameter="delete_sky"/> </menu_item_call> </menu> @@ -591,22 +591,22 @@ label="New preset..." name="new_day_preset"> <menu_item_call.on_click - function="stub" - parameter="stub"/> + function="World.EnvPreset" + parameter="new_day_cycle"/> </menu_item_call> <menu_item_call label="Edit preset..." name="edit_day_preset"> <menu_item_call.on_click - function="stub" - parameter="stub"/> + function="World.EnvPreset" + parameter="edit_day_cycle"/> </menu_item_call> <menu_item_call label="Delete preset..." name="delete_day_preset"> <menu_item_call.on_click - function="stub" - parameter="stub"/> + function="World.EnvPreset" + parameter="delete_day_cycle"/> </menu_item_call> </menu> </menu> |