[SCM] A client for connecting to 3D metaverses such as Linden Labs Secondlife(tm) and OpenSim grids branch, master, updated. upstream/1.20.14-56-g65bb03f
Robin Cornelius
robin.cornelius at gmail.com
Fri Jul 18 21:22:24 UTC 2008
The following commit has been merged in the master branch:
commit d5c60abcd79f351cf06d3f7b7f9492dd844d7736
Author: Robin Cornelius <robin.cornelius at gmail.com>
Date: Fri Jul 18 22:26:53 2008 +0100
new patches and version bump
diff --git a/debian/changelog b/debian/changelog
index 1a6cd32..885c753 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -1,6 +1,9 @@
omvviewer (1.20.14-1) experimental; urgency=low
* New Upstream Version
+ + New patch VWR-5917_multiple_user_day_cycles_in_rw_area.dpatch
+ + Modify VWR-4981_save_windlight_settings_in_user_rw_area.dpatch
+ + Bump artwork dependencies
-- Robin Cornelius <robin.cornelius at gmail.com> Wed, 16 Jul 2008 23:11:35 +0200
diff --git a/debian/patches/00list b/debian/patches/00list
index 38ad0bc..c9b1dc0 100644
--- a/debian/patches/00list
+++ b/debian/patches/00list
@@ -78,3 +78,4 @@ VWR-7831_smart_pointer_explicit_casting.dpatch
VWR-5082_set_bulk_inv_permissions.dpatch
VWR-4981_save_windlight_settings_in_user_rw_area.dpatch
+VWR-5917_multiple_user_day_cycles_in_rw_area.dpatch
diff --git a/debian/patches/VWR-5917_multiple_user_day_cycles_in_rw_area.dpatch b/debian/patches/VWR-5917_multiple_user_day_cycles_in_rw_area.dpatch
new file mode 100755
index 0000000..9882c80
--- /dev/null
+++ b/debian/patches/VWR-5917_multiple_user_day_cycles_in_rw_area.dpatch
@@ -0,0 +1,530 @@
+#! /bin/sh /usr/share/dpatch/dpatch-run
+## Allow multiple user savable daycycles.dpatch by <root at debian.example.org>
+##
+## All lines beginning with `## DP:' are a description of the patch.
+## DP: VWR-5917 fix
+
+ at DPATCH@
+
+diff --git a/indra/newview/llfloaterdaycycle.cpp b/indra/newview/llfloaterdaycycle.cpp
+index f517439..154975e 100644
+--- a/indra/newview/llfloaterdaycycle.cpp
++++ b/indra/newview/llfloaterdaycycle.cpp
+@@ -65,6 +65,30 @@ const F32 LLFloaterDayCycle::sHoursPerDay = 24.0f;
+ LLFloaterDayCycle::LLFloaterDayCycle() : LLFloater("Day Cycle Floater")
+ {
+ LLUICtrlFactory::getInstance()->buildFloater(this, "floater_day_cycle_options.xml");
++
++
++ // This populates M2's combo with the names of avaiable day cycles.
++
++ // add the combo boxes
++ LLComboBox* comboBox = getChild<LLComboBox>("WLPresetsCombo");
++
++ if(comboBox != NULL) {
++
++ std::map<std::string, std::string>::iterator mIt =
++ LLWLParamManager::instance()->mDay.mDayList.begin();
++ for(; mIt !=LLWLParamManager::instance()->mDay.mDayList.end(); mIt++)
++ {
++ comboBox->add(mIt->first);
++ llinfos << "adding "<<mIt->first<<llendl;
++ }
++
++ // entry for when we're in estate time
++ //comboBox->add("");
++
++ // set defaults on combo boxes
++ comboBox->selectByValue(LLSD("Default"));
++ }
++
+
+ // add the combo boxes
+ LLComboBox* keyCombo = getChild<LLComboBox>("WLKeyPresets");
+@@ -135,11 +159,20 @@ void LLFloaterDayCycle::initCallbacks(void)
+ childSetAction("WLAnimSky", onRunAnimSky, NULL);
+ childSetAction("WLStopAnimSky", onStopAnimSky, NULL);
+
+- childSetAction("WLLoadDayCycle", onLoadDayCycle, NULL);
+- childSetAction("WLSaveDayCycle", onSaveDayCycle, NULL);
+-
+ childSetAction("WLAddKey", onAddKey, NULL);
+ childSetAction("WLDeleteKey", onDeleteKey, NULL);
++
++ // Load/save
++ LLComboBox* comboBox = getChild<LLComboBox>("WLPresetsCombo");
++
++ childSetAction("WLLoadDayCycle", onLoadDayCycle, (void*)comboBox);
++ childSetAction("WLSaveDayCycle", onSaveDayCycle, (void*)comboBox);
++
++ childSetAction("WLNewPreset", onNewPreset, (void*)this);
++ childSetAction("WLDeletePreset", onDeletePreset, (void*)this);
++
++ comboBox->setCommitCallback(onChangePresetName);
++
+ }
+
+ void LLFloaterDayCycle::syncMenu()
+@@ -323,9 +356,17 @@ void LLFloaterDayCycle::onUseLindenTime(void* userData)
+ LLWLParamManager::instance()->mAnimator.mUseLindenTime = true;
+ }
+
+-void LLFloaterDayCycle::onLoadDayCycle(void* userData)
++void LLFloaterDayCycle::onLoadDayCycle(void * userData)
+ {
+- LLWLParamManager::instance()->mDay.loadDayCycle("Default.xml");
++
++ LLComboBox * combo_box = static_cast<LLComboBox*>(userData);
++
++ if(combo_box->getSimple() == "")
++ {
++ return;
++ }
++
++ LLWLParamManager::instance()->mDay.loadDayCycle(combo_box->getSelectedValue().asString());
+
+ // sync it all up
+ syncSliderTrack();
+@@ -343,9 +384,25 @@ void LLFloaterDayCycle::onLoadDayCycle(void* userData)
+ LLWLParamManager::instance()->mCurParams);
+ }
+
+-void LLFloaterDayCycle::onSaveDayCycle(void* userData)
++void LLFloaterDayCycle::onSaveDayCycle(void * userData)
+ {
+- LLWLParamManager::instance()->mDay.saveDayCycle("Default.xml");
++ LLComboBox * combo_box = static_cast<LLComboBox*>(userData);
++
++ if(combo_box->getSimple() == "")
++ {
++ return;
++ }
++
++ std::string name(combo_box->getSelectedValue().asString());
++
++ if(name=="Default")
++ {
++ gViewerWindow->alertXml("WLNoEditDefault");
++ return;
++ }
++
++
++ LLWLParamManager::instance()->mDay.saveDayCycle(name);
+ }
+
+
+@@ -592,5 +649,108 @@ void LLFloaterDayCycle::onDeleteKey(void* userData)
+ minSpin->set(min);
+
+ syncTrack();
++}
++
++void LLFloaterDayCycle::onChangePresetName(LLUICtrl* ctrl, void * userData)
++{
++
++ LLComboBox * combo_box = static_cast<LLComboBox*>(ctrl);
++
++ if(combo_box->getSimple() == "")
++ {
++ return;
++ }
++
++ // We probably should not do this here, day cycle should look after its own map lookups
++// std::map<std::string,std::string>::iterator iter = LLWLParamManager::instance()->mDay.mDayList.find(combo_box->getSelectedValue().asString());
++
++ llinfos<<"New day cycle selected: "<<combo_box->getSelectedValue().asString()<<llendl;
++
++ onLoadDayCycle((void*)combo_box);
+
+ }
++
++/// button to add a new day
++void LLFloaterDayCycle::onNewPreset(void * userData)
++{
++ gViewerWindow->alertXmlEditText("NewSkyPreset", LLString::format_map_t(),
++ NULL, NULL, newPromptCallback, userData);
++}
++
++/// button to delete a day
++void LLFloaterDayCycle::onDeletePreset(void * userData)
++{
++ LLFloaterDayCycle * pthis=(LLFloaterDayCycle *)userData;
++
++ LLComboBox* combo_box = pthis->getChild<LLComboBox>("WLPresetsCombo");
++
++ if(combo_box->getSelectedValue().asString() == "")
++ {
++ return;
++ }
++
++ LLString::format_map_t args;
++ args["[SKY]"] = combo_box->getSelectedValue().asString();
++ gViewerWindow->alertXml("WLDeletePresetAlert", args, deleteAlertCallback, pthis);
++
++}
++
++void LLFloaterDayCycle::deleteAlertCallback(S32 option, void* userData)
++{
++ //Need to delete the current settings and then fallback to *something*
++ // either next in list or may be just Default ???
++
++ if(option!=0)
++ return;
++
++ LLFloaterDayCycle * pthis=(LLFloaterDayCycle *)userData;
++
++ LLComboBox* combo_box = pthis->getChild<LLComboBox>("WLPresetsCombo");
++
++ std::string name(combo_box->getSelectedValue().asString());
++
++ if(name=="Default")
++ {
++ gViewerWindow->alertXml("WLNoEditDefault");
++ return;
++ }
++
++ combo_box->remove(name);
++
++ LLWLParamManager::instance()->mDay.deleteDayCycle(name,TRUE);
++
++ combo_box->selectByValue("Default");
++
++ onLoadDayCycle(combo_box);
++
++}
++
++
++void LLFloaterDayCycle::newPromptCallback(S32 option, const LLString& text, void* userData)
++{
++ // Save the curent settings as the new filename.
++
++ LLFloaterDayCycle * pthis=(LLFloaterDayCycle *)userData;
++
++ std::map<std::string, std::string>::iterator mIt = LLWLParamManager::instance()->mDay.mDayList.find(text);
++ if(mIt != LLWLParamManager::instance()->mDay.mDayList.end())
++ {
++ //cannot add name already in use
++ gViewerWindow->alertXml("WLDayNameInUse");
++ return;
++ }
++
++
++ LLComboBox* combo_box = pthis->getChild<LLComboBox>("WLPresetsCombo");
++
++ combo_box->add(text);
++ combo_box->selectByValue(text);
++
++ LLWLParamManager::instance()->mDay.mDayList[text] = "NO PATH"; // this is because i'm using a map, change to vector
++
++ LLWLParamManager::instance()->mDay.saveDayCycle(text);
++
++ // dont need to reload as what is current is current
++
++}
++
+diff --git a/indra/newview/llfloaterdaycycle.h b/indra/newview/llfloaterdaycycle.h
+index edddbb5..cb5fa76 100644
+--- a/indra/newview/llfloaterdaycycle.h
++++ b/indra/newview/llfloaterdaycycle.h
+@@ -99,14 +99,24 @@ public:
+ static void onDeleteKey(void* userData);
+
+ /// button to load day
+- static void onLoadDayCycle(void* userData);
++ static void onLoadDayCycle(void * userData);
+
+ /// button to save day
+- static void onSaveDayCycle(void* userData);
++ static void onSaveDayCycle(void * userData);
++
++ /// button to add a new day
++ static void onNewPreset(void * userData);
++ static void newPromptCallback(S32 option, const LLString& text, void* userData);
++
++ /// button to delete a day
++ static void onDeletePreset(void * userData);
++ static void deleteAlertCallback(S32 option, void* userdata);
+
+ /// toggle for Linden time
+ static void onUseLindenTime(void* userData);
+
++ /// what to do when you change the preset name
++ static void onChangePresetName(LLUICtrl* ctrl, void* userData);
+
+ //// menu management
+
+diff --git a/indra/newview/llwldaycycle.cpp b/indra/newview/llwldaycycle.cpp
+index 4626160..a36c654 100644
+--- a/indra/newview/llwldaycycle.cpp
++++ b/indra/newview/llwldaycycle.cpp
+@@ -41,6 +41,7 @@
+
+ LLWLDayCycle::LLWLDayCycle() : mDayRate(120)
+ {
++ loadDayCycles();
+ }
+
+
+@@ -48,17 +49,91 @@ LLWLDayCycle::~LLWLDayCycle()
+ {
+ }
+
++void LLWLDayCycle::loadDayCycles()
++{
++
++ bool found = true;
++
++ llinfos << "Searching for default day cycles" << llendl;
++ LLString path_name(gDirUtilp->getExpandedFilename(LL_PATH_APP_SETTINGS, "windlight/days", ""));
++
++ while(found)
++ {
++ std::string name;
++ found = gDirUtilp->getNextFileInDir(path_name, "*.xml", name, false);
++ if(found)
++ {
++
++ // bugfix for SL-46920: preventing filenames that break stuff.
++ char * curl_str = curl_unescape(name.c_str(), name.size());
++ std::string unescaped_name(curl_str);
++ curl_free(curl_str);
++ curl_str = NULL;
++
++ llinfos << "Adding system day cycle " << unescaped_name << " at "<< path_name<<llendl;
++ std::string tname=unescaped_name.substr(0,unescaped_name.length()-4);
++ mDayList[tname] = path_name;
++ }
++ }
++
++ llinfos << "Searching for user day cycles" << llendl;
++ found=true;
++
++ path_name=gDirUtilp->getExpandedFilename( LL_PATH_USER_SETTINGS , "windlight/days", "");
++ while(found)
++ {
++ std::string name;
++ found = gDirUtilp->getNextFileInDir(path_name, "*.xml", name, false);
++ if(found)
++ {
++
++ // bugfix for SL-46920: preventing filenames that break stuff.
++ char * curl_str = curl_unescape(name.c_str(), name.size());
++ std::string unescaped_name(curl_str);
++ curl_free(curl_str);
++ curl_str = NULL;
++
++ llinfos << "Adding user day cycle " << unescaped_name << " at "<< path_name<<llendl;
++ std::string tname=unescaped_name.substr(0,unescaped_name.length()-4);
++ mDayList[tname] = path_name;
++ }
++ }
++}
++
+ void LLWLDayCycle::loadDayCycle(const LLString & fileName)
+ {
++
++ // bugfix for SL-46920: preventing filenames that break stuff.
++ char * curl_str = curl_escape(fileName.c_str(), fileName.size());
++ std::string escaped_filename(curl_str);
++ curl_free(curl_str);
++ curl_str = NULL;
++
++ escaped_filename += ".xml";
++
++
+ // clear the first few things
+ mTimeMap.clear();
+
+ // now load the file
+- LLString pathName(gDirUtilp->getExpandedFilename(LL_PATH_APP_SETTINGS,
+- "windlight/days", fileName));
+- llinfos << "Loading DayCycle settings from " << pathName << llendl;
++ LLString pathName(gDirUtilp->getExpandedFilename( LL_PATH_USER_SETTINGS ,
++ "windlight/days", escaped_filename));
+
+- llifstream day_cycle_xml(pathName.c_str());
++ llifstream day_cycle_xml;
++ day_cycle_xml.open(pathName.c_str());
++
++ if(day_cycle_xml)
++ llinfos << "Loading USER DayCycle settings from " << pathName << llendl;
++
++ if(!day_cycle_xml)
++ {
++ LLString pathName(gDirUtilp->getExpandedFilename(LL_PATH_APP_SETTINGS,
++ "windlight/days", escaped_filename));
++ day_cycle_xml.open(pathName.c_str());
++ if(day_cycle_xml)
++ llinfos << "Loading Default DayCycle settings from " << pathName << llendl;
++ }
++
+ if (day_cycle_xml.is_open())
+ {
+ // load and parse it
+@@ -98,10 +173,19 @@ void LLWLDayCycle::loadDayCycle(const LLString & fileName)
+
+ void LLWLDayCycle::saveDayCycle(const LLString & fileName)
+ {
++
++ // bugfix for SL-46920: preventing filenames that break stuff.
++ char * curl_str = curl_escape(fileName.c_str(), fileName.size());
++ std::string escaped_filename(curl_str);
++ curl_free(curl_str);
++ curl_str = NULL;
++
++ escaped_filename += ".xml";
++
+ LLSD day_data(LLSD::emptyArray());
+
+- LLString pathName(gDirUtilp->getExpandedFilename(LL_PATH_APP_SETTINGS, "windlight/days", fileName));
+- //llinfos << "Saving WindLight settings to " << pathName << llendl;
++ LLString pathName(gDirUtilp->getExpandedFilename( LL_PATH_USER_SETTINGS , "windlight/days", escaped_filename));
++ llinfos << "Saving Day cycle settings to " << pathName << llendl;
+
+ for(std::map<F32, std::string>::const_iterator mIt = mTimeMap.begin();
+ mIt != mTimeMap.end();
+@@ -120,6 +204,29 @@ void LLWLDayCycle::saveDayCycle(const LLString & fileName)
+ //day_cycle_xml.close();
+ }
+
++void LLWLDayCycle::deleteDayCycle(std::string name,bool delete_from_disk)
++{
++
++ std::map<std::string, std::string>::iterator mIt = mDayList.find(name);
++ if(mIt != mDayList.end())
++ {
++ mDayList.erase(mIt);
++ }
++
++ if(delete_from_disk)
++ {
++ LLString path_name(gDirUtilp->getExpandedFilename( LL_PATH_USER_SETTINGS , "windlight/days", ""));
++
++ // use full curl escaped name
++ char * curl_str = curl_escape(name.c_str(), name.size());
++ std::string escaped_name(curl_str);
++ curl_free(curl_str);
++ curl_str = NULL;
++
++ gDirUtilp->deleteFilesInDir(path_name, escaped_name + ".xml");
++ }
++}
++
+
+ void LLWLDayCycle::clearKeys()
+ {
+diff --git a/indra/newview/llwldaycycle.h b/indra/newview/llwldaycycle.h
+index 85e75c2..c850438 100644
+--- a/indra/newview/llwldaycycle.h
++++ b/indra/newview/llwldaycycle.h
+@@ -48,6 +48,9 @@ public:
+
+ // lists what param sets are used when during the day
+ std::map<F32, std::string> mTimeMap;
++ std::map<std::string,std::string> mDayList; //I'm using a map for the moment just incase we suddenly want to be like
++ // the other WL parameters and hold a class with the details. The second
++ // string is not actualy used at the moment.
+
+ // how long is my day
+ F32 mDayRate;
+@@ -60,12 +63,18 @@ public:
+ /// simple destructor
+ ~LLWLDayCycle();
+
++ // Load the list of day cycles
++ void loadDayCycles();
++
+ /// load a day cycle
+ void loadDayCycle(const LLString & fileName);
+
+ /// load a day cycle
+ void saveDayCycle(const LLString & fileName);
+
++ /// delete a day cycle
++ void deleteDayCycle(std::string name,bool delete_from_disk);
++
+ /// clear keys
+ void clearKeys();
+
+diff --git a/indra/newview/llwlparammanager.cpp b/indra/newview/llwlparammanager.cpp
+index 9f23b37..a916823 100644
+--- a/indra/newview/llwlparammanager.cpp
++++ b/indra/newview/llwlparammanager.cpp
+@@ -556,7 +556,7 @@ LLWLParamManager * LLWLParamManager::instance()
+ sInstance->loadPresets("");
+
+ // load the day
+- sInstance->mDay.loadDayCycle("Default.xml");
++ sInstance->mDay.loadDayCycle("Default");
+
+ // *HACK - sets cloud scrolling to what we want... fix this better in the future
+ sInstance->getParamSet("Default", sInstance->mCurParams);
+diff --git a/indra/newview/skins/default/xui/en-us/alerts.xml b/indra/newview/skins/xui/en-us/alerts.xml
+index 08a316a..dd8efc1 100644
+--- a/indra/newview/skins/default/xui/en-us/alerts.xml
++++ b/indra/newview/skins/default/xui/en-us/alerts.xml
+@@ -4555,6 +4555,11 @@ Terrain Detail: Sets the amount of detail you would like to see for the terrain
+ No
+ </option>
+ </alert>
++ <alert modal="true" name="WLDayNameInUse">
++ <message name="message">
++ That name is already in use, please pick a new name.
++ </message>
++ </alert>
+ <alert modal="true" name="WLNoEditDefault">
+ <message name="message">
+ You cannot edit or delete a default preset.
+diff --git a/indra/newview/skins/default/xui/en-us/floater_day_cycle_options.xml b/indra/newview/skins/xui/en-us/floater_day_cycle_options.xml
+index 84812b9..a4c6667 100644
+--- a/indra/newview/skins/default/xui/en-us/floater_day_cycle_options.xml
++++ b/indra/newview/skins/default/xui/en-us/floater_day_cycle_options.xml
+@@ -1,9 +1,12 @@
+ <?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+ <floater bottom="-150" can_close="true" can_drag_on_left="false" can_minimize="true"
+- can_resize="false" height="275" left="50" min_height="180"
++ can_resize="false" height="300" left="50" min_height="180"
+ min_width="400" mouse_opaque="true" name="Day Cycle Floater"
+ rect_control="FloaterDayCycleRect" title="Day Cycle Editor" width="646">
+- <tab_container bottom="-275" follows="left|top" height="255" left="0"
++
++
++
++ <tab_container bottom="-300" follows="left|top" height="255" left="0"
+ mouse_opaque="false" name="Day Cycle Tabs" tab_position="top" width="644">
+ <panel border="true" bottom="-255" follows="left|top|right|bottom" height="255"
+ label="Day Cycle" left="1" mouse_opaque="false"
+@@ -237,14 +240,27 @@
+ label="Use Estate Time" label_selected="Go to Estate Time"
+ left_delta="55" mouse_opaque="true" name="WLUseLindenTime"
+ scale_image="true" width="140" />
+- <button bottom="-195" enabled="true" font="SansSerif" halign="center" height="20"
+- label="Save Test Day" label_selected="Save Test Day"
++
++ <combo_box allow_text_entry="false" bottom="-190" follows="left|top" height="18"
++ left="480" max_chars="20" mouse_opaque="true" name="WLPresetsCombo"
++ width="150" />
++
++ <button bottom="-215" enabled="true" font="SansSerif" halign="center" height="20"
++ label="New" label_selected="New" left="560"
++ mouse_opaque="true" name="WLNewPreset" scale_image="true" width="70" />
++
++ <button bottom="-235" enabled="true" font="SansSerif" halign="center" height="20"
++ label="Delete" label_selected="Delete" left="560"
++ mouse_opaque="true" name="WLDeletePreset" scale_image="true" width="70" />
++
++ <button bottom="-215" enabled="true" font="SansSerif" halign="center" height="20"
++ label="Save" label_selected="Save Test Day"
+ left="480" mouse_opaque="true" name="WLSaveDayCycle" scale_image="true"
+- width="150" />
+- <button bottom="-220" enabled="true" font="SansSerif" halign="center" height="20"
+- label="Load Test Day" label_selected="Load Test Day"
++ width="75" />
++ <button bottom="-235" enabled="true" font="SansSerif" halign="center" height="20"
++ label="(Re)Load" label_selected="Load Test Day"
+ left="480" mouse_opaque="true" name="WLLoadDayCycle" scale_image="true"
+- width="150" />
++ width="75" />
+ </panel>
+ </tab_container>
+ </floater>
--
A client for connecting to 3D metaverses such as Linden Labs Secondlife(tm) and OpenSim grids
More information about the Pkg-games-commits
mailing list