aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/linden
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--linden/doc/contributions.txt1
-rw-r--r--linden/indra/llinventory/llparcel.cpp12
-rw-r--r--linden/indra/llinventory/llparcel.h6
-rw-r--r--linden/indra/llmessage/llpartdata.cpp28
-rw-r--r--linden/indra/llrender/llfontgl.cpp11
-rw-r--r--linden/indra/llrender/llfontgl.h3
-rw-r--r--linden/indra/llui/llcombobox.cpp25
-rw-r--r--linden/indra/llui/llcombobox.h4
-rw-r--r--linden/indra/llui/lllineeditor.cpp20
-rw-r--r--linden/indra/llui/lllineeditor.h1
-rw-r--r--linden/indra/llui/llresmgr.cpp6
-rw-r--r--linden/indra/llui/llresmgr.h3
-rw-r--r--linden/indra/llui/llscrolllistctrl.cpp28
-rw-r--r--linden/indra/llui/llscrolllistctrl.h3
-rw-r--r--linden/indra/llui/llstyle.cpp8
-rw-r--r--linden/indra/llwindow/llwindowsdl.cpp9
-rwxr-xr-xlinden/indra/media_plugins/gstreamer010/media_plugin_gstreamer010.cpp10
-rw-r--r--linden/indra/newview/English.lproj/InfoPlist.strings5
-rw-r--r--linden/indra/newview/Info-meta-impy.plist2
-rw-r--r--linden/indra/newview/app_settings/cloud.xml100
-rw-r--r--linden/indra/newview/app_settings/settings.xml57
-rw-r--r--linden/indra/newview/app_settings/viewerversion.xml2
-rw-r--r--linden/indra/newview/gpu_table.txt147
-rw-r--r--linden/indra/newview/hippogridmanager.cpp19
-rw-r--r--linden/indra/newview/hippogridmanager.h1
-rw-r--r--linden/indra/newview/installers/windows/imprudence_installer_script.iss193
-rw-r--r--linden/indra/newview/installers/windows/imprudence_installer_script_experimental.iss263
-rw-r--r--linden/indra/newview/llconsole.cpp2
-rw-r--r--linden/indra/newview/llfloaterpreference.cpp20
-rw-r--r--linden/indra/newview/llfloaterpreference.h3
-rw-r--r--linden/indra/newview/llfloatertest.cpp4
-rw-r--r--linden/indra/newview/llgroupnotify.cpp2
-rw-r--r--linden/indra/newview/llloginhandler.cpp20
-rw-r--r--linden/indra/newview/llmediaremotectrl.cpp2
-rw-r--r--linden/indra/newview/llnamelistctrl.cpp2
-rw-r--r--linden/indra/newview/llpanelaudioprefs.cpp22
-rw-r--r--linden/indra/newview/llpanelaudioprefs.h5
-rw-r--r--linden/indra/newview/llpanellandaudio.cpp8
-rw-r--r--linden/indra/newview/llpanellandaudio.h1
-rw-r--r--linden/indra/newview/llpanellandmedia.cpp38
-rw-r--r--linden/indra/newview/llpanellogin.cpp207
-rw-r--r--linden/indra/newview/llpanellogin.h20
-rw-r--r--linden/indra/newview/llpanelnetwork.cpp24
-rw-r--r--linden/indra/newview/llpanelnetwork.h1
-rw-r--r--linden/indra/newview/llpanelweb.cpp13
-rw-r--r--linden/indra/newview/llprefsadvanced.cpp19
-rw-r--r--linden/indra/newview/llprefsadvanced.h3
-rw-r--r--linden/indra/newview/llstartup.cpp42
-rw-r--r--linden/indra/newview/lltexturectrl.cpp2
-rw-r--r--linden/indra/newview/lltoolpie.cpp17
-rw-r--r--linden/indra/newview/llviewermedia.cpp38
-rw-r--r--linden/indra/newview/llviewermedia.h5
-rw-r--r--linden/indra/newview/llviewermediafocus.cpp18
-rw-r--r--linden/indra/newview/llviewerparcelmedia.cpp273
-rw-r--r--linden/indra/newview/llviewerparcelmedia.h40
-rw-r--r--linden/indra/newview/llviewerwindow.cpp14
-rw-r--r--linden/indra/newview/llvoavatar.cpp10
-rw-r--r--linden/indra/newview/llvoiceclient.cpp4
-rw-r--r--linden/indra/newview/llworldmap.cpp4
-rw-r--r--linden/indra/newview/llworldmapview.cpp2
-rw-r--r--linden/indra/newview/llxmlrpctransaction.cpp6
-rw-r--r--linden/indra/newview/res/viewerRes.rc4
-rw-r--r--linden/indra/newview/skins/default/xui/en-us/floater_about_land.xml44
-rw-r--r--linden/indra/newview/skins/default/xui/en-us/floater_buy_land.xml6
-rw-r--r--linden/indra/newview/skins/default/xui/en-us/floater_media_filter.xml63
-rw-r--r--linden/indra/newview/skins/default/xui/en-us/floater_preferences.xml7
-rw-r--r--linden/indra/newview/skins/default/xui/en-us/floater_sell_land.xml8
-rw-r--r--linden/indra/newview/skins/default/xui/en-us/fonts.xml4
-rwxr-xr-xlinden/indra/newview/skins/default/xui/en-us/mime_types_linux.xml11
-rwxr-xr-xlinden/indra/newview/skins/default/xui/en-us/mime_types_mac.xml11
-rw-r--r--linden/indra/newview/skins/default/xui/en-us/mime_types_windows.xml15
-rw-r--r--linden/indra/newview/skins/default/xui/en-us/notifications.xml27
-rw-r--r--linden/indra/newview/skins/default/xui/en-us/panel_group_general.xml2
-rw-r--r--linden/indra/newview/skins/default/xui/en-us/panel_group_land_money.xml4
-rw-r--r--linden/indra/newview/skins/default/xui/en-us/panel_group_notices.xml6
-rw-r--r--linden/indra/newview/skins/default/xui/en-us/panel_group_roles.xml6
-rw-r--r--linden/indra/newview/skins/default/xui/en-us/panel_group_voting.xml4
-rw-r--r--linden/indra/newview/skins/default/xui/en-us/panel_login.xml111
-rw-r--r--linden/indra/newview/skins/default/xui/en-us/panel_preferences_advanced.xml3
-rw-r--r--linden/indra/newview/skins/default/xui/en-us/panel_preferences_audio.xml20
-rw-r--r--linden/indra/newview/skins/default/xui/en-us/panel_preferences_network.xml27
-rw-r--r--linden/indra/newview/skins/default/xui/en-us/panel_preferences_web.xml4
-rw-r--r--linden/indra/newview/slfloatermediafilter.cpp230
-rw-r--r--linden/indra/newview/slfloatermediafilter.h9
84 files changed, 1974 insertions, 510 deletions
diff --git a/linden/doc/contributions.txt b/linden/doc/contributions.txt
index a48730e..4915406 100644
--- a/linden/doc/contributions.txt
+++ b/linden/doc/contributions.txt
@@ -530,6 +530,7 @@ Robin Cornelius
530 SNOW-108 530 SNOW-108
531 SNOW-196 531 SNOW-196
532 SNOW-422 532 SNOW-422
533 SNOW-466
533 SNOW-485 534 SNOW-485
534 VWR-2488 535 VWR-2488
535 VWR-9557 536 VWR-9557
diff --git a/linden/indra/llinventory/llparcel.cpp b/linden/indra/llinventory/llparcel.cpp
index 39605eb..4cbb83a 100644
--- a/linden/indra/llinventory/llparcel.cpp
+++ b/linden/indra/llinventory/llparcel.cpp
@@ -195,8 +195,6 @@ void LLParcel::init(const LLUUID &owner_id,
195 mMediaID.setNull(); 195 mMediaID.setNull();
196 mMediaAutoScale = 0; 196 mMediaAutoScale = 0;
197 mMediaLoop = TRUE; 197 mMediaLoop = TRUE;
198 mObscureMedia = 1;
199 mObscureMusic = 1;
200 mMediaWidth = 0; 198 mMediaWidth = 0;
201 mMediaHeight = 0; 199 mMediaHeight = 0;
202 setMediaCurrentURL(LLStringUtil::null); 200 setMediaCurrentURL(LLStringUtil::null);
@@ -691,8 +689,8 @@ void LLParcel::packMessage(LLSD& msg)
691 msg["auto_scale"] = getMediaAutoScale(); 689 msg["auto_scale"] = getMediaAutoScale();
692 msg["media_loop"] = getMediaLoop(); 690 msg["media_loop"] = getMediaLoop();
693 msg["media_current_url"] = getMediaCurrentURL(); 691 msg["media_current_url"] = getMediaCurrentURL();
694 msg["obscure_media"] = getObscureMedia(); 692 msg["obscure_media"] = FALSE; // OBSOLETE - no longer used
695 msg["obscure_music"] = getObscureMusic(); 693 msg["obscure_music"] = FALSE; // OBSOLETE - no longer used
696 msg["media_id"] = getMediaID(); 694 msg["media_id"] = getMediaID();
697 msg["media_allow_navigate"] = getMediaAllowNavigate(); 695 msg["media_allow_navigate"] = getMediaAllowNavigate();
698 msg["media_prevent_camera_zoom"] = getMediaPreventCameraZoom(); 696 msg["media_prevent_camera_zoom"] = getMediaPreventCameraZoom();
@@ -757,8 +755,6 @@ void LLParcel::unpackMessage(LLMessageSystem* msg)
757 msg->getS32("MediaData", "MediaWidth", mMediaWidth); 755 msg->getS32("MediaData", "MediaWidth", mMediaWidth);
758 msg->getS32("MediaData", "MediaHeight", mMediaHeight); 756 msg->getS32("MediaData", "MediaHeight", mMediaHeight);
759 msg->getU8 ( "MediaData", "MediaLoop", mMediaLoop ); 757 msg->getU8 ( "MediaData", "MediaLoop", mMediaLoop );
760 msg->getU8 ( "MediaData", "ObscureMedia", mObscureMedia );
761 msg->getU8 ( "MediaData", "ObscureMusic", mObscureMusic );
762 } 758 }
763 else 759 else
764 { 760 {
@@ -766,8 +762,6 @@ void LLParcel::unpackMessage(LLMessageSystem* msg)
766 // thats what we want -- AW 762 // thats what we want -- AW
767 setMediaDesc(std::string("No Description available without Server Upgrade")); 763 setMediaDesc(std::string("No Description available without Server Upgrade"));
768 mMediaLoop = true; 764 mMediaLoop = true;
769 mObscureMedia = true;
770 mObscureMusic = true;
771 } 765 }
772 766
773 if(msg->getNumberOfBlocks("MediaLinkSharing") > 0) 767 if(msg->getNumberOfBlocks("MediaLinkSharing") > 0)
@@ -1233,8 +1227,6 @@ void LLParcel::clearParcel()
1233 setMediaDesc(LLStringUtil::null); 1227 setMediaDesc(LLStringUtil::null);
1234 setMediaAutoScale(0); 1228 setMediaAutoScale(0);
1235 setMediaLoop(TRUE); 1229 setMediaLoop(TRUE);
1236 mObscureMedia = 1;
1237 mObscureMusic = 1;
1238 mMediaWidth = 0; 1230 mMediaWidth = 0;
1239 mMediaHeight = 0; 1231 mMediaHeight = 0;
1240 setMediaCurrentURL(LLStringUtil::null); 1232 setMediaCurrentURL(LLStringUtil::null);
diff --git a/linden/indra/llinventory/llparcel.h b/linden/indra/llinventory/llparcel.h
index 1a1205b..2b6eb12 100644
--- a/linden/indra/llinventory/llparcel.h
+++ b/linden/indra/llinventory/llparcel.h
@@ -244,8 +244,6 @@ public:
244 void setMediaID(const LLUUID& id) { mMediaID = id; } 244 void setMediaID(const LLUUID& id) { mMediaID = id; }
245 void setMediaAutoScale ( U8 flagIn ) { mMediaAutoScale = flagIn; } 245 void setMediaAutoScale ( U8 flagIn ) { mMediaAutoScale = flagIn; }
246 void setMediaLoop (U8 loop) { mMediaLoop = loop; } 246 void setMediaLoop (U8 loop) { mMediaLoop = loop; }
247 void setObscureMedia( U8 flagIn ) { mObscureMedia = flagIn; }
248 void setObscureMusic( U8 flagIn ) { mObscureMusic = flagIn; }
249 void setMediaWidth(S32 width); 247 void setMediaWidth(S32 width);
250 void setMediaHeight(S32 height); 248 void setMediaHeight(S32 height);
251 void setMediaCurrentURL(const std::string& url); 249 void setMediaCurrentURL(const std::string& url);
@@ -352,8 +350,6 @@ public:
352 U8 getMediaAutoScale() const { return mMediaAutoScale; } 350 U8 getMediaAutoScale() const { return mMediaAutoScale; }
353 U8 getMediaLoop() const { return mMediaLoop; } 351 U8 getMediaLoop() const { return mMediaLoop; }
354 const std::string& getMediaCurrentURL() const { return mMediaCurrentURL; } 352 const std::string& getMediaCurrentURL() const { return mMediaCurrentURL; }
355 U8 getObscureMedia() const { return mObscureMedia; }
356 U8 getObscureMusic() const { return mObscureMusic; }
357 U8 getMediaURLFilterEnable() const { return mMediaURLFilterEnable; } 353 U8 getMediaURLFilterEnable() const { return mMediaURLFilterEnable; }
358 LLSD getMediaURLFilterList() const { return mMediaURLFilterList; } 354 LLSD getMediaURLFilterList() const { return mMediaURLFilterList; }
359 U8 getMediaAllowNavigate() const { return mMediaAllowNavigate; } 355 U8 getMediaAllowNavigate() const { return mMediaAllowNavigate; }
@@ -645,8 +641,6 @@ protected:
645 U8 mMediaAutoScale; 641 U8 mMediaAutoScale;
646 U8 mMediaLoop; 642 U8 mMediaLoop;
647 std::string mMediaCurrentURL; 643 std::string mMediaCurrentURL;
648 U8 mObscureMedia;
649 U8 mObscureMusic;
650 LLUUID mMediaID; 644 LLUUID mMediaID;
651 U8 mMediaURLFilterEnable; 645 U8 mMediaURLFilterEnable;
652 LLSD mMediaURLFilterList; 646 LLSD mMediaURLFilterList;
diff --git a/linden/indra/llmessage/llpartdata.cpp b/linden/indra/llmessage/llpartdata.cpp
index a2811ab..4012d2c 100644
--- a/linden/indra/llmessage/llpartdata.cpp
+++ b/linden/indra/llmessage/llpartdata.cpp
@@ -363,14 +363,14 @@ LLSD LLPartSysData::asLLSD() const
363 sd["LL_PART_EMISSIVE_MASK"] = (LLPartData::LL_PART_EMISSIVE_MASK & mPartData.mFlags) ? 1 : 0; 363 sd["LL_PART_EMISSIVE_MASK"] = (LLPartData::LL_PART_EMISSIVE_MASK & mPartData.mFlags) ? 1 : 0;
364 sd["LL_PART_BEAM_MASK"] = (LLPartData::LL_PART_BEAM_MASK & mPartData.mFlags) ? 1 : 0; 364 sd["LL_PART_BEAM_MASK"] = (LLPartData::LL_PART_BEAM_MASK & mPartData.mFlags) ? 1 : 0;
365 365
366 sd["SourceMaxage"] = mPartData.mMaxAge; 366 sd["ParticleMaxAge"] = mPartData.mMaxAge;
367 sd["Startcolor"] = ll_sd_from_color4(mPartData.mStartColor); 367 sd["StartColor"] = ll_sd_from_color4(mPartData.mStartColor);
368 sd["Endcolor"] = ll_sd_from_color4(mPartData.mEndColor); 368 sd["EndColor"] = ll_sd_from_color4(mPartData.mEndColor);
369 sd["Startscale"] = ll_sd_from_vector2(mPartData.mStartScale); 369 sd["StartScale"] = ll_sd_from_vector2(mPartData.mStartScale);
370 sd["Endscale"] = ll_sd_from_vector2(mPartData.mEndScale); 370 sd["EndScale"] = ll_sd_from_vector2(mPartData.mEndScale);
371 371
372 sd["ParticleMaxAge"] = mMaxAge; 372 sd["SourceMaxAge"] = mMaxAge;
373 sd["ParticleStartAge"] = mStartAge; 373 sd["SourceStartAge"] = mStartAge;
374 374
375 375
376 sd["LL_PART_SRC_PATTERN_DROP"] = ( mPattern & LL_PART_SRC_PATTERN_DROP) ? 1 : 0; 376 sd["LL_PART_SRC_PATTERN_DROP"] = ( mPattern & LL_PART_SRC_PATTERN_DROP) ? 1 : 0;
@@ -406,14 +406,14 @@ bool LLPartSysData::fromLLSD(LLSD& sd)
406 if (sd["LL_PART_EMISSIVE_MASK"]) mPartData.mFlags |= LLPartData::LL_PART_EMISSIVE_MASK; 406 if (sd["LL_PART_EMISSIVE_MASK"]) mPartData.mFlags |= LLPartData::LL_PART_EMISSIVE_MASK;
407 if (sd["LL_PART_BEAM_MASK"]) mPartData.mFlags |= LLPartData::LL_PART_BEAM_MASK; 407 if (sd["LL_PART_BEAM_MASK"]) mPartData.mFlags |= LLPartData::LL_PART_BEAM_MASK;
408 408
409 mPartData.mMaxAge = (F32)sd["SourceMaxage"].asReal(); 409 mPartData.mMaxAge = (F32)sd["ParticleMaxAge"].asReal();
410 mPartData.mStartColor = ll_color4_from_sd(sd["Startcolor"]); 410 mPartData.mStartColor = ll_color4_from_sd(sd["StartColor"]);
411 mPartData.mEndColor = ll_color4_from_sd(sd["Endcolor"]); 411 mPartData.mEndColor = ll_color4_from_sd(sd["EndColor"]);
412 mPartData.mStartScale = ll_vector2_from_sd(sd["Startscale"]); 412 mPartData.mStartScale = ll_vector2_from_sd(sd["StartScale"]);
413 mPartData.mEndScale = ll_vector2_from_sd(sd["Endscale"]); 413 mPartData.mEndScale = ll_vector2_from_sd(sd["EndScale"]);
414 414
415 mMaxAge = (F32)sd["ParticleMaxAge"].asReal(); 415 mMaxAge = (F32)sd["SourceMaxAge"].asReal();
416 mStartAge = (F32)sd["ParticleStartAge"].asReal(); 416 mStartAge = (F32)sd["SourceStartAge"].asReal();
417 417
418 mPattern = 0; 418 mPattern = 0;
419 if (sd["LL_PART_SRC_PATTERN_DROP"]) mPattern |= LL_PART_SRC_PATTERN_DROP; 419 if (sd["LL_PART_SRC_PATTERN_DROP"]) mPattern |= LL_PART_SRC_PATTERN_DROP;
diff --git a/linden/indra/llrender/llfontgl.cpp b/linden/indra/llrender/llfontgl.cpp
index 7baec81..306c6b9 100644
--- a/linden/indra/llrender/llfontgl.cpp
+++ b/linden/indra/llrender/llfontgl.cpp
@@ -242,7 +242,8 @@ BOOL LLFontGL::initDefaultFonts(F32 screen_dpi, F32 x_scale, F32 y_scale,
242 // This is primarily for error detection purposes. 242 // This is primarily for error detection purposes.
243 succ &= (NULL != getFontSansSerifSmall()); 243 succ &= (NULL != getFontSansSerifSmall());
244 succ &= (NULL != getFontSansSerif()); 244 succ &= (NULL != getFontSansSerif());
245 succ &= (NULL != getFontSansSerifBig()); 245 succ &= (NULL != getFontSansSerifBigger());
246 succ &= (NULL != getFontSansSerifLarge());
246 succ &= (NULL != getFontSansSerifHuge()); 247 succ &= (NULL != getFontSansSerifHuge());
247 succ &= (NULL != getFontSansSerifBold()); 248 succ &= (NULL != getFontSansSerifBold());
248 succ &= (NULL != getFontMonospace()); 249 succ &= (NULL != getFontMonospace());
@@ -313,7 +314,13 @@ LLFontGL* LLFontGL::getFontSansSerif()
313} 314}
314 315
315//static 316//static
316LLFontGL* LLFontGL::getFontSansSerifBig() 317LLFontGL* LLFontGL::getFontSansSerifBigger()
318{
319 return getFont(LLFontDescriptor("SansSerif","Bigger",0));
320}
321
322//static
323LLFontGL* LLFontGL::getFontSansSerifLarge()
317{ 324{
318 return getFont(LLFontDescriptor("SansSerif","Large",0)); 325 return getFont(LLFontDescriptor("SansSerif","Large",0));
319} 326}
diff --git a/linden/indra/llrender/llfontgl.h b/linden/indra/llrender/llfontgl.h
index 6cb1727..e3a953b 100644
--- a/linden/indra/llrender/llfontgl.h
+++ b/linden/indra/llrender/llfontgl.h
@@ -233,7 +233,8 @@ public:
233 static LLFontGL* getFontMonospace(); 233 static LLFontGL* getFontMonospace();
234 static LLFontGL* getFontSansSerifSmall(); 234 static LLFontGL* getFontSansSerifSmall();
235 static LLFontGL* getFontSansSerif(); 235 static LLFontGL* getFontSansSerif();
236 static LLFontGL* getFontSansSerifBig(); 236 static LLFontGL* getFontSansSerifBigger();
237 static LLFontGL* getFontSansSerifLarge();
237 static LLFontGL* getFontSansSerifHuge(); 238 static LLFontGL* getFontSansSerifHuge();
238 static LLFontGL* getFontSansSerifBold(); 239 static LLFontGL* getFontSansSerifBold();
239 static LLFontGL* getFontExtChar(); 240 static LLFontGL* getFontExtChar();
diff --git a/linden/indra/llui/llcombobox.cpp b/linden/indra/llui/llcombobox.cpp
index be34325..a93dc9b 100644
--- a/linden/indra/llui/llcombobox.cpp
+++ b/linden/indra/llui/llcombobox.cpp
@@ -43,6 +43,7 @@
43 43
44// newview includes 44// newview includes
45#include "llbutton.h" 45#include "llbutton.h"
46#include "llfont.h"
46#include "llkeyboard.h" 47#include "llkeyboard.h"
47#include "llscrolllistctrl.h" 48#include "llscrolllistctrl.h"
48#include "llwindow.h" 49#include "llwindow.h"
@@ -60,7 +61,7 @@ S32 MAX_COMBO_WIDTH = 500;
60 61
61static LLRegisterWidget<LLComboBox> r1("combo_box"); 62static LLRegisterWidget<LLComboBox> r1("combo_box");
62 63
63LLComboBox::LLComboBox( const std::string& name, const LLRect &rect, const std::string& label, 64LLComboBox::LLComboBox( const std::string& name, const LLRect &rect, const std::string& label, const LLFontGL* font,
64 void (*commit_callback)(LLUICtrl*,void*), 65 void (*commit_callback)(LLUICtrl*,void*),
65 void *callback_userdata 66 void *callback_userdata
66 ) 67 )
@@ -76,6 +77,15 @@ LLComboBox::LLComboBox( const std::string& name, const LLRect &rect, const std::
76 mTextEntryCallback( NULL ), 77 mTextEntryCallback( NULL ),
77 mLabel(label) 78 mLabel(label)
78{ 79{
80 if (font)
81 {
82 mGLFont = font;
83 }
84 else
85 {
86 mGLFont = LLFontGL::getFontSansSerifSmall();
87 }
88
79 // Always use text box 89 // Always use text box
80 // Text label button 90 // Text label button
81 mButton = new LLButton(mLabel, 91 mButton = new LLButton(mLabel,
@@ -89,14 +99,14 @@ LLComboBox::LLComboBox( const std::string& name, const LLRect &rect, const std::
89 mButton->setScaleImage(TRUE); 99 mButton->setScaleImage(TRUE);
90 100
91 mButton->setMouseDownCallback(onButtonDown); 101 mButton->setMouseDownCallback(onButtonDown);
92 mButton->setFont(LLFontGL::getFontSansSerifSmall()); 102 mButton->setFont(mGLFont);
93 mButton->setFollows(FOLLOWS_LEFT | FOLLOWS_BOTTOM | FOLLOWS_RIGHT); 103 mButton->setFollows(FOLLOWS_LEFT | FOLLOWS_BOTTOM | FOLLOWS_RIGHT);
94 mButton->setHAlign( LLFontGL::LEFT ); 104 mButton->setHAlign( LLFontGL::LEFT );
95 mButton->setRightHPad(2); 105 mButton->setRightHPad(2);
96 addChild(mButton); 106 addChild(mButton);
97 107
98 // disallow multiple selection 108 // disallow multiple selection
99 mList = new LLScrollListCtrl(std::string("ComboBox"), LLRect(), 109 mList = new LLScrollListCtrl(std::string("ComboBox"), LLRect(), mGLFont,
100 &LLComboBox::onItemSelected, this, FALSE); 110 &LLComboBox::onItemSelected, this, FALSE);
101 mList->setVisible(FALSE); 111 mList->setVisible(FALSE);
102 mList->setBgWriteableColor( LLColor4(1,1,1,1) ); 112 mList->setBgWriteableColor( LLColor4(1,1,1,1) );
@@ -167,11 +177,14 @@ LLView* LLComboBox::fromXML(LLXMLNodePtr node, LLView *parent, LLUICtrlFactory *
167 S32 max_chars = 20; 177 S32 max_chars = 20;
168 node->getAttributeS32("max_chars", max_chars); 178 node->getAttributeS32("max_chars", max_chars);
169 179
180 LLFontGL* font = LLView::selectFont(node);
181
170 LLUICtrlCallback callback = NULL; 182 LLUICtrlCallback callback = NULL;
171 183
172 LLComboBox* combo_box = new LLComboBox(name, 184 LLComboBox* combo_box = new LLComboBox(name,
173 rect, 185 rect,
174 label, 186 label,
187 font,
175 callback, 188 callback,
176 NULL); 189 NULL);
177 combo_box->setAllowTextEntry(allow_text_entry, max_chars); 190 combo_box->setAllowTextEntry(allow_text_entry, max_chars);
@@ -540,7 +553,7 @@ void LLComboBox::updateLayout()
540 mTextEntry = new LLLineEditor(std::string("combo_text_entry"), 553 mTextEntry = new LLLineEditor(std::string("combo_text_entry"),
541 text_entry_rect, 554 text_entry_rect,
542 LLStringUtil::null, 555 LLStringUtil::null,
543 LLFontGL::getFontSansSerifSmall(), 556 mGLFont,
544 mMaxChars, 557 mMaxChars,
545 onTextCommit, 558 onTextCommit,
546 onTextEntry, 559 onTextEntry,
@@ -1153,7 +1166,7 @@ LLFlyoutButton::LLFlyoutButton(
1153 const std::string& label, 1166 const std::string& label,
1154 void (*commit_callback)(LLUICtrl*, void*) , 1167 void (*commit_callback)(LLUICtrl*, void*) ,
1155 void *callback_userdata) 1168 void *callback_userdata)
1156: LLComboBox(name, rect, LLStringUtil::null, commit_callback, callback_userdata), 1169: LLComboBox(name, rect, LLStringUtil::null, NULL, commit_callback, callback_userdata),
1157 mToggleState(FALSE), 1170 mToggleState(FALSE),
1158 mActionButton(NULL) 1171 mActionButton(NULL)
1159{ 1172{
@@ -1214,6 +1227,8 @@ LLXMLNodePtr LLFlyoutButton::getXML(bool save_children) const
1214 } 1227 }
1215 } 1228 }
1216 1229
1230 node->createChild("font", TRUE)->setStringValue(LLFontGL::nameFromFont(mGLFont));
1231
1217 return node; 1232 return node;
1218} 1233}
1219 1234
diff --git a/linden/indra/llui/llcombobox.h b/linden/indra/llui/llcombobox.h
index 95ad17a..596f659 100644
--- a/linden/indra/llui/llcombobox.h
+++ b/linden/indra/llui/llcombobox.h
@@ -67,7 +67,8 @@ public:
67 LLComboBox( 67 LLComboBox(
68 const std::string& name, 68 const std::string& name,
69 const LLRect &rect, 69 const LLRect &rect,
70 const std::string& label, 70 const std::string& label,
71 const LLFontGL* font = NULL,
71 void (*commit_callback)(LLUICtrl*, void*) = NULL, 72 void (*commit_callback)(LLUICtrl*, void*) = NULL,
72 void *callback_userdata = NULL 73 void *callback_userdata = NULL
73 ); 74 );
@@ -190,6 +191,7 @@ protected:
190 EPreferredPosition mListPosition; 191 EPreferredPosition mListPosition;
191 LLPointer<LLUIImage> mArrowImage; 192 LLPointer<LLUIImage> mArrowImage;
192 std::string mLabel; 193 std::string mLabel;
194 const LLFontGL* mGLFont;
193 195
194private: 196private:
195 S32 mButtonPadding; 197 S32 mButtonPadding;
diff --git a/linden/indra/llui/lllineeditor.cpp b/linden/indra/llui/lllineeditor.cpp
index 76b8927..a21ad5d 100644
--- a/linden/indra/llui/lllineeditor.cpp
+++ b/linden/indra/llui/lllineeditor.cpp
@@ -2696,7 +2696,6 @@ BOOL LLLineEditor::prevalidatePrintableNotPipe(const LLWString &str)
2696 return rv; 2696 return rv;
2697} 2697}
2698 2698
2699
2700// static 2699// static
2701BOOL LLLineEditor::prevalidatePrintableNoSpace(const LLWString &str) 2700BOOL LLLineEditor::prevalidatePrintableNoSpace(const LLWString &str)
2702{ 2701{
@@ -2721,6 +2720,25 @@ BOOL LLLineEditor::prevalidatePrintableNoSpace(const LLWString &str)
2721} 2720}
2722 2721
2723// static 2722// static
2723BOOL LLLineEditor::prevalidatePrintableSpace(const LLWString &str)
2724{
2725 BOOL rv = TRUE;
2726 S32 len = str.length();
2727 if(len == 0) return rv;
2728 while(len--)
2729 {
2730 if( !(LLStringOps::isAlnum((char)str[len]) ||
2731 LLStringOps::isPunct((char)str[len]) ||
2732 ' ' == str[len]) )
2733 {
2734 rv = FALSE;
2735 break;
2736 }
2737 }
2738 return rv;
2739}
2740
2741// static
2724BOOL LLLineEditor::prevalidateASCII(const LLWString &str) 2742BOOL LLLineEditor::prevalidateASCII(const LLWString &str)
2725{ 2743{
2726 BOOL rv = TRUE; 2744 BOOL rv = TRUE;
diff --git a/linden/indra/llui/lllineeditor.h b/linden/indra/llui/lllineeditor.h
index d217859..43ce869 100644
--- a/linden/indra/llui/lllineeditor.h
+++ b/linden/indra/llui/lllineeditor.h
@@ -253,6 +253,7 @@ public:
253 static BOOL prevalidateAlphaNumSpace(const LLWString &str ); 253 static BOOL prevalidateAlphaNumSpace(const LLWString &str );
254 static BOOL prevalidatePrintableNotPipe(const LLWString &str); 254 static BOOL prevalidatePrintableNotPipe(const LLWString &str);
255 static BOOL prevalidatePrintableNoSpace(const LLWString &str); 255 static BOOL prevalidatePrintableNoSpace(const LLWString &str);
256 static BOOL prevalidatePrintableSpace(const LLWString &str);
256 static BOOL prevalidateASCII(const LLWString &str); 257 static BOOL prevalidateASCII(const LLWString &str);
257 258
258 static BOOL postvalidateFloat(const std::string &str); 259 static BOOL postvalidateFloat(const std::string &str);
diff --git a/linden/indra/llui/llresmgr.cpp b/linden/indra/llui/llresmgr.cpp
index 32d3d1f..22610ca 100644
--- a/linden/indra/llui/llresmgr.cpp
+++ b/linden/indra/llui/llresmgr.cpp
@@ -58,7 +58,8 @@ LLResMgr::LLResMgr()
58 mUSAFonts[ LLFONT_OCRA ] = LLFontGL::getFontMonospace(); 58 mUSAFonts[ LLFONT_OCRA ] = LLFontGL::getFontMonospace();
59 mUSAFonts[ LLFONT_SANSSERIF ] = LLFontGL::getFontSansSerif(); 59 mUSAFonts[ LLFONT_SANSSERIF ] = LLFontGL::getFontSansSerif();
60 mUSAFonts[ LLFONT_SANSSERIF_SMALL ] = LLFontGL::getFontSansSerifSmall(); 60 mUSAFonts[ LLFONT_SANSSERIF_SMALL ] = LLFontGL::getFontSansSerifSmall();
61 mUSAFonts[ LLFONT_SANSSERIF_BIG ] = LLFontGL::getFontSansSerifBig(); 61 mUSAFonts[ LLFONT_SANSSERIF_BIGGER ]= LLFontGL::getFontSansSerifBigger();
62 mUSAFonts[ LLFONT_SANSSERIF_LARGE ] = LLFontGL::getFontSansSerifLarge();
62 mUSAFonts[ LLFONT_SMALL ] = LLFontGL::getFontMonospace(); 63 mUSAFonts[ LLFONT_SMALL ] = LLFontGL::getFontMonospace();
63/* 64/*
64 // USA Strings 65 // USA Strings
@@ -421,7 +422,8 @@ const std::string LLFONT_ID_NAMES[] =
421 std::string("OCRA"), 422 std::string("OCRA"),
422 std::string("SANSSERIF"), 423 std::string("SANSSERIF"),
423 std::string("SANSSERIF_SMALL"), 424 std::string("SANSSERIF_SMALL"),
424 std::string("SANSSERIF_BIG"), 425 std::string("SANSSERIF_BIGGER"),
426 std::string("SANSSERIF_LARGE"),
425 std::string("SMALL"), 427 std::string("SMALL"),
426}; 428};
427 429
diff --git a/linden/indra/llui/llresmgr.h b/linden/indra/llui/llresmgr.h
index d54505c..3008244 100644
--- a/linden/indra/llui/llresmgr.h
+++ b/linden/indra/llui/llresmgr.h
@@ -51,7 +51,8 @@ enum LLFONT_ID
51 LLFONT_OCRA, 51 LLFONT_OCRA,
52 LLFONT_SANSSERIF, 52 LLFONT_SANSSERIF,
53 LLFONT_SANSSERIF_SMALL, 53 LLFONT_SANSSERIF_SMALL,
54 LLFONT_SANSSERIF_BIG, 54 LLFONT_SANSSERIF_BIGGER,
55 LLFONT_SANSSERIF_LARGE,
55 LLFONT_SMALL, 56 LLFONT_SMALL,
56 LLFONT_COUNT // Number of values in this enum. Keep at end. 57 LLFONT_COUNT // Number of values in this enum. Keep at end.
57}; 58};
diff --git a/linden/indra/llui/llscrolllistctrl.cpp b/linden/indra/llui/llscrolllistctrl.cpp
index 1248a9a..1b93abf 100644
--- a/linden/indra/llui/llscrolllistctrl.cpp
+++ b/linden/indra/llui/llscrolllistctrl.cpp
@@ -570,7 +570,7 @@ void LLScrollListItemSeparator::draw(const LLRect& rect, const LLColor4& fg_colo
570// LLScrollListCtrl 570// LLScrollListCtrl
571//--------------------------------------------------------------------------- 571//---------------------------------------------------------------------------
572 572
573LLScrollListCtrl::LLScrollListCtrl(const std::string& name, const LLRect& rect, 573LLScrollListCtrl::LLScrollListCtrl(const std::string& name, const LLRect& rect, const LLFontGL* font,
574 void (*commit_callback)(LLUICtrl* ctrl, void* userdata), 574 void (*commit_callback)(LLUICtrl* ctrl, void* userdata),
575 void* callback_user_data, 575 void* callback_user_data,
576 BOOL allow_multiple_selection, 576 BOOL allow_multiple_selection,
@@ -619,6 +619,15 @@ LLScrollListCtrl::LLScrollListCtrl(const std::string& name, const LLRect& rect,
619 mOriginalSelection(-1), 619 mOriginalSelection(-1),
620 mDrewSelected(FALSE) 620 mDrewSelected(FALSE)
621{ 621{
622 if (font)
623 {
624 mGLFont = font;
625 }
626 else
627 {
628 mGLFont = LLFontGL::getFontSansSerifSmall();
629 }
630
622 mItemListRect.setOriginAndSize( 631 mItemListRect.setOriginAndSize(
623 mBorderThickness, 632 mBorderThickness,
624 mBorderThickness, 633 mBorderThickness,
@@ -987,14 +996,14 @@ void LLScrollListCtrl::calcColumnWidths()
987 column->setWidth(new_width); 996 column->setWidth(new_width);
988 997
989 // update max content width for this column, by looking at all items 998 // update max content width for this column, by looking at all items
990 column->mMaxContentWidth = column->mHeader ? LLFontGL::getFontSansSerifSmall()->getWidth(column->mLabel) + mColumnPadding + HEADING_TEXT_PADDING : 0; 999 column->mMaxContentWidth = column->mHeader ? mGLFont->getWidth(column->mLabel) + mColumnPadding + HEADING_TEXT_PADDING : 0;
991 item_list::iterator iter; 1000 item_list::iterator iter;
992 for (iter = mItemList.begin(); iter != mItemList.end(); iter++) 1001 for (iter = mItemList.begin(); iter != mItemList.end(); iter++)
993 { 1002 {
994 LLScrollListCell* cellp = (*iter)->getColumn(column->mIndex); 1003 LLScrollListCell* cellp = (*iter)->getColumn(column->mIndex);
995 if (!cellp) continue; 1004 if (!cellp) continue;
996 1005
997 column->mMaxContentWidth = llmax(LLFontGL::getFontSansSerifSmall()->getWidth(cellp->getValue().asString()) + mColumnPadding + COLUMN_TEXT_PADDING, column->mMaxContentWidth); 1006 column->mMaxContentWidth = llmax(mGLFont->getWidth(cellp->getValue().asString()) + mColumnPadding + COLUMN_TEXT_PADDING, column->mMaxContentWidth);
998 } 1007 }
999 1008
1000 max_item_width += column->mMaxContentWidth; 1009 max_item_width += column->mMaxContentWidth;
@@ -1642,7 +1651,7 @@ LLScrollListItem* LLScrollListCtrl::addStringUUIDItem(const std::string& item_te
1642 if (getItemCount() < mMaxItemCount) 1651 if (getItemCount() < mMaxItemCount)
1643 { 1652 {
1644 item = new LLScrollListItem( enabled, NULL, id ); 1653 item = new LLScrollListItem( enabled, NULL, id );
1645 item->addColumn(item_text, LLResMgr::getInstance()->getRes(LLFONT_SANSSERIF_SMALL), column_width); 1654 item->addColumn(item_text, mGLFont, column_width);
1646 addItem( item, pos ); 1655 addItem( item, pos );
1647 } 1656 }
1648 return item; 1657 return item;
@@ -2900,6 +2909,7 @@ LLView* LLScrollListCtrl::fromXML(LLXMLNodePtr node, LLView *parent, LLUICtrlFac
2900 LLScrollListCtrl* scroll_list = new LLScrollListCtrl( 2909 LLScrollListCtrl* scroll_list = new LLScrollListCtrl(
2901 name, 2910 name,
2902 rect, 2911 rect,
2912 NULL,
2903 callback, 2913 callback,
2904 NULL, 2914 NULL,
2905 multi_select, 2915 multi_select,
@@ -3374,7 +3384,11 @@ LLScrollListItem* LLScrollListCtrl::addElement(const LLSD& value, EAddPosition p
3374 const LLFontGL *font = LLResMgr::getInstance()->getRes(fontname); 3384 const LLFontGL *font = LLResMgr::getInstance()->getRes(fontname);
3375 if (!font) 3385 if (!font)
3376 { 3386 {
3377 font = LLResMgr::getInstance()->getRes( LLFONT_SANSSERIF_SMALL ); 3387 font = mGLFont;
3388 if (!font)
3389 {
3390 font = LLResMgr::getInstance()->getRes( LLFONT_SANSSERIF_SMALL );
3391 }
3378 } 3392 }
3379 U8 font_style = LLFontGL::getStyleFromString(fontstyle); 3393 U8 font_style = LLFontGL::getStyleFromString(fontstyle);
3380 3394
@@ -3446,7 +3460,7 @@ LLScrollListItem* LLScrollListCtrl::addElement(const LLSD& value, EAddPosition p
3446 if (new_item->getColumn(column_idx) == NULL) 3460 if (new_item->getColumn(column_idx) == NULL)
3447 { 3461 {
3448 LLScrollListColumn* column_ptr = &column_it->second; 3462 LLScrollListColumn* column_ptr = &column_it->second;
3449 new_item->setColumn(column_idx, new LLScrollListText(LLStringUtil::null, LLResMgr::getInstance()->getRes( LLFONT_SANSSERIF_SMALL ), column_ptr->getWidth(), LLFontGL::NORMAL)); 3463 new_item->setColumn(column_idx, new LLScrollListText(LLStringUtil::null, mGLFont, column_ptr->getWidth(), LLFontGL::NORMAL));
3450 } 3464 }
3451 } 3465 }
3452 3466
@@ -3466,7 +3480,7 @@ LLScrollListItem* LLScrollListCtrl::addSimpleElement(const std::string& value, E
3466 3480
3467 LLScrollListItem *new_item = new LLScrollListItem(entry_id); 3481 LLScrollListItem *new_item = new LLScrollListItem(entry_id);
3468 3482
3469 const LLFontGL *font = LLResMgr::getInstance()->getRes( LLFONT_SANSSERIF_SMALL ); 3483 const LLFontGL *font = mGLFont;
3470 3484
3471 new_item->addColumn(value, font, getRect().getWidth()); 3485 new_item->addColumn(value, font, getRect().getWidth());
3472 3486
diff --git a/linden/indra/llui/llscrolllistctrl.h b/linden/indra/llui/llscrolllistctrl.h
index 4be7ff7..1b7105f 100644
--- a/linden/indra/llui/llscrolllistctrl.h
+++ b/linden/indra/llui/llscrolllistctrl.h
@@ -353,6 +353,7 @@ public:
353 LLScrollListCtrl( 353 LLScrollListCtrl(
354 const std::string& name, 354 const std::string& name,
355 const LLRect& rect, 355 const LLRect& rect,
356 const LLFontGL* font,
356 void (*commit_callback)(LLUICtrl*, void*), 357 void (*commit_callback)(LLUICtrl*, void*),
357 void* callback_userdata, 358 void* callback_userdata,
358 BOOL allow_multiple_selection, 359 BOOL allow_multiple_selection,
@@ -694,6 +695,8 @@ private:
694 695
695 // HACK: Did we draw one selected item this frame? 696 // HACK: Did we draw one selected item this frame?
696 BOOL mDrewSelected; 697 BOOL mDrewSelected;
698
699 const LLFontGL* mGLFont;
697}; // end class LLScrollListCtrl 700}; // end class LLScrollListCtrl
698 701
699 702
diff --git a/linden/indra/llui/llstyle.cpp b/linden/indra/llui/llstyle.cpp
index a716cbb..61a025e 100644
--- a/linden/indra/llui/llstyle.cpp
+++ b/linden/indra/llui/llstyle.cpp
@@ -128,9 +128,13 @@ void LLStyle::setFontName(const std::string& fontname)
128 { 128 {
129 mFontID = LLFONT_SMALL; 129 mFontID = LLFONT_SMALL;
130 } 130 }
131 else if ((fontname_lc == "sansserifbig")) 131 else if ((fontname_lc == "sansserifbigger"))
132 { 132 {
133 mFontID = LLFONT_SANSSERIF_BIG; 133 mFontID = LLFONT_SANSSERIF_BIGGER;
134 }
135 else if ((fontname_lc == "sansserifhuge"))
136 {
137 mFontID = LLFONT_SANSSERIF_LARGE;
134 } 138 }
135 else if (fontname_lc == "small") 139 else if (fontname_lc == "small")
136 { 140 {
diff --git a/linden/indra/llwindow/llwindowsdl.cpp b/linden/indra/llwindow/llwindowsdl.cpp
index 5828da3..58090b3 100644
--- a/linden/indra/llwindow/llwindowsdl.cpp
+++ b/linden/indra/llwindow/llwindowsdl.cpp
@@ -632,6 +632,15 @@ BOOL LLWindowSDL::createContext(int x, int y, int width, int height, int bits, B
632 mWindow = SDL_SetVideoMode(width, height, bits, sdlflags); 632 mWindow = SDL_SetVideoMode(width, height, bits, sdlflags);
633 } 633 }
634 634
635 while (!mWindow && mFSAASamples > 0)
636 {
637 llwarns << "Window creating failed with " << mFSAASamples << "x FSAA."<<llendl;
638 mFSAASamples = mFSAASamples>>1;
639 SDL_GL_SetAttribute(SDL_GL_MULTISAMPLEBUFFERS, mFSAASamples ? 1 : 0);
640 SDL_GL_SetAttribute(SDL_GL_MULTISAMPLESAMPLES, mFSAASamples);
641 mWindow = SDL_SetVideoMode(width, height, bits, sdlflags);
642 }
643
635 if (!mWindow) 644 if (!mWindow)
636 { 645 {
637 llwarns << "createContext: window creation failure. SDL: " << SDL_GetError() << llendl; 646 llwarns << "createContext: window creation failure. SDL: " << SDL_GetError() << llendl;
diff --git a/linden/indra/media_plugins/gstreamer010/media_plugin_gstreamer010.cpp b/linden/indra/media_plugins/gstreamer010/media_plugin_gstreamer010.cpp
index 6835d0f..12bbf90 100755
--- a/linden/indra/media_plugins/gstreamer010/media_plugin_gstreamer010.cpp
+++ b/linden/indra/media_plugins/gstreamer010/media_plugin_gstreamer010.cpp
@@ -1409,6 +1409,16 @@ void MediaPluginGStreamer010::receiveMessage(const char *message_string)
1409// We're building without GStreamer enabled. Just refuse to initialize. 1409// We're building without GStreamer enabled. Just refuse to initialize.
1410int init_media_plugin(LLPluginInstance::sendMessageFunction host_send_func, void *host_user_data, LLPluginInstance::sendMessageFunction *plugin_send_func, void **plugin_user_data) 1410int init_media_plugin(LLPluginInstance::sendMessageFunction host_send_func, void *host_user_data, LLPluginInstance::sendMessageFunction *plugin_send_func, void **plugin_user_data)
1411{ 1411{
1412 // init log file so we know what happened
1413 LLFILE* fp = LLFile::fopen("media_plugin_gstreamer010.log", "w");
1414 if (fp)
1415 {
1416 time_t timeptr = time(NULL);
1417 fprintf(fp, "%s", asctime(localtime(&timeptr)));
1418 fprintf(fp, "media_plugin_gstreamer010 installed but not built with GStreamer support! It must be recompiled to work!\n");
1419 fclose(fp);
1420 }
1421
1412 return -1; 1422 return -1;
1413} 1423}
1414 1424
diff --git a/linden/indra/newview/English.lproj/InfoPlist.strings b/linden/indra/newview/English.lproj/InfoPlist.strings
index 17a0b7c..3027772 100644
--- a/linden/indra/newview/English.lproj/InfoPlist.strings
+++ b/linden/indra/newview/English.lproj/InfoPlist.strings
@@ -1,5 +1,6 @@
1/* Localized versions of Info.plist keys */ 1/* Localized versions of Info.plist keys */
2 2
3CFBundleName = "meta-impy"; 3CFBundleName = "meta-impy";
4CFBundleShortVersionString = "meta-impy Experimental 2010.09.04"; 4CFBundleShortVersionString = "meta-impy Experimental 2011.04.02";
5CFBundleGetInfoString = "meta-impy Experimental 2010.09.04"; 5CFBundleGetInfoString = "meta-impy Experimental 2011.04.02";
6
diff --git a/linden/indra/newview/Info-meta-impy.plist b/linden/indra/newview/Info-meta-impy.plist
index c5b413e..3469e5c 100644
--- a/linden/indra/newview/Info-meta-impy.plist
+++ b/linden/indra/newview/Info-meta-impy.plist
@@ -32,7 +32,7 @@
32 </dict> 32 </dict>
33 </array> 33 </array>
34 <key>CFBundleVersion</key> 34 <key>CFBundleVersion</key>
35 <string>Experimental 2010.10.23</string> 35 <string>Experimental 2011.04.02</string>
36 <key>CSResourcesFileMapped</key> 36 <key>CSResourcesFileMapped</key>
37 <true/> 37 <true/>
38</dict> 38</dict>
diff --git a/linden/indra/newview/app_settings/cloud.xml b/linden/indra/newview/app_settings/cloud.xml
index ff9492b..e62bcf1 100644
--- a/linden/indra/newview/app_settings/cloud.xml
+++ b/linden/indra/newview/app_settings/cloud.xml
@@ -1,33 +1,87 @@
1<llsd> 1<llsd>
2 <map> 2 <map>
3
4
5<!-- Settings for the whole particle system -->
6
7 <key>SourceMaxAge</key><!-- how long the source can live with 0 forever -->
8 <real>0</real>
9 <key>SourceStartAge</key>
10 <real>0</real>
11
3 <key>AngularVelocity</key> 12 <key>AngularVelocity</key>
4 <array> 13 <array>
5 <real>0</real> 14 <real>0</real>
6 <real>0</real> 15 <real>0</real>
7 <real>0</real> 16 <real>0</real>
8 </array> 17 </array>
18 <key>InnerAngle</key>
19 <real>3.1415927410125732421875</real>
20 <key>OuterAngle</key>
21 <real>0</real>
22
9 <key>BurstPartCount</key> 23 <key>BurstPartCount</key>
10 <integer>1</integer> 24 <integer>1</integer>
11 <key>BurstRadius</key> 25 <key>BurstRadius</key>
12 <real>0.3</real> 26 <real>0.3</real>
13 <key>BurstRate</key> 27 <key>BurstRate</key>
14 <real>0.02</real> 28 <real>0.02</real>
29 <key>BurstSpeedMin</key>
30 <real>0.1</real>
15 <key>BurstSpeedMax</key> 31 <key>BurstSpeedMax</key>
16 <real>1</real> 32 <real>1</real>
17 <key>Endcolor</key> 33
34 <!-- pattern flags set to 1 for true and 0 for false -->
35 <key>LL_PART_SRC_PATTERN_ANGLE</key>
36 <integer>0</integer>
37 <key>LL_PART_SRC_PATTERN_ANGLE_CONE</key>
38 <integer>1</integer>
39 <key>LL_PART_SRC_PATTERN_ANGLE_CONE_EMPTY</key>
40 <integer>0</integer>
41 <key>LL_PART_SRC_PATTERN_DROP</key>
42 <integer>0</integer>
43 <key>LL_PART_SRC_PATTERN_EXPLODE</key>
44 <integer>0</integer>
45 <!-- end of pattern flags -->
46
47<!-- Settings for single particles within the system -->
48
49 <key>ParticleMaxAge</key><!-- how long a single particle can live with 0 forever -->
50 <real>4</real>
51
52 <key>PartImageID</key> <!--This setting is ignored for the cloud, used instead for now is the hardcoded -->
53 <string>0000000000000-0000-0000-000000000000</string><!-- skins/default/textures/cloud-particle.j2c -->
54
55 <key>StartColor</key><!-- RGBA -->
56 <array>
57 <real>0.9</real>
58 <real>0.0</real>
59 <real>0.8</real>
60 <real>0.7</real>
61 </array>
62 <key>EndColor</key><!-- RGBA -->
18 <array> 63 <array>
19 <real>0.75</real> 64 <real>0.75</real>
20 <real>0.47</real> 65 <real>0.47</real>
21 <real>0.81</real> 66 <real>0.81</real>
22 <real>0</real> 67 <real>0</real>
23 </array> 68 </array>
24 <key>Endscale</key> 69
70 <key>StartScale</key>
71 <array>
72 <real>0.8</real>
73 <real>0.8</real>
74 </array>
75 <key>EndScale</key>
25 <array> 76 <array>
26 <real>0.02</real> 77 <real>0.02</real>
27 <real>0.02</real> 78 <real>0.02</real>
28 </array> 79 </array>
29 <key>InnerAngle</key> 80
30 <real>3.1415927410125732421875</real> 81 <key>TargetId</key><!-- This setting is ignored for the cloud -->
82 <string>00000000-0000-0000-0000-000000000000</string>
83
84 <!-- masks flags set to 1 for true and 0 for false-->
31 <key>LL_PART_BEAM_MASK</key> 85 <key>LL_PART_BEAM_MASK</key>
32 <integer>0</integer> 86 <integer>0</integer>
33 <key>LL_PART_BOUNCE_MASK</key> 87 <key>LL_PART_BOUNCE_MASK</key>
@@ -42,47 +96,13 @@
42 <integer>1</integer> 96 <integer>1</integer>
43 <key>LL_PART_INTERP_SCALE_MASK</key> 97 <key>LL_PART_INTERP_SCALE_MASK</key>
44 <integer>1</integer> 98 <integer>1</integer>
45 <key>LL_PART_SRC_PATTERN_ANGLE</key>
46 <integer>0</integer>
47 <key>LL_PART_SRC_PATTERN_ANGLE_CONE</key>
48 <integer>1</integer>
49 <key>LL_PART_SRC_PATTERN_ANGLE_CONE_EMPTY</key>
50 <integer>0</integer>
51 <key>LL_PART_SRC_PATTERN_DROP</key>
52 <integer>0</integer>
53 <key>LL_PART_SRC_PATTERN_EXPLODE</key>
54 <integer>0</integer>
55 <key>LL_PART_TARGET_LINEAR_MASK</key> 99 <key>LL_PART_TARGET_LINEAR_MASK</key>
56 <integer>0</integer> 100 <integer>0</integer>
57 <key>LL_PART_TARGET_POS_MASK</key> 101 <key>LL_PART_TARGET_POS_MASK</key>
58 <integer>1</integer> 102 <integer>1</integer>
59 <key>LL_PART_WIND_MASK</key> 103 <key>LL_PART_WIND_MASK</key>
60 <integer>0</integer> 104 <integer>0</integer>
61 <key>OuterAngle</key> 105 <!-- end of mask flags -->
62 <real>0</real> 106
63 <key>PartImageID</key>
64 <string>0000000000000-0000-0000-000000000000</string>
65 <key>ParticleMaxAge</key>
66 <real>0</real>
67 <key>ParticleStartAge</key>
68 <real>0</real>
69 <key>SourceMaxage</key>
70 <real>4</real>
71 <key>Startcolor</key>
72 <array>
73 <real>0.9</real>
74 <real>0.0</real>
75 <real>0.8</real>
76 <real>0.7</real>
77 </array>
78 <key>Startscale</key>
79 <array>
80 <real>0.8</real>
81 <real>0.8</real>
82 </array>
83 <key>TargetId</key>
84 <string>00000000-0000-0000-0000-000000000000</string>
85 <key>BurstSpeedMin</key>
86 <real>0.1</real>
87 </map> 107 </map>
88</llsd> 108</llsd>
diff --git a/linden/indra/newview/app_settings/settings.xml b/linden/indra/newview/app_settings/settings.xml
index b7e7196..024296b 100644
--- a/linden/indra/newview/app_settings/settings.xml
+++ b/linden/indra/newview/app_settings/settings.xml
@@ -717,6 +717,17 @@
717 <key>Value</key> 717 <key>Value</key>
718 <string>Random</string> 718 <string>Random</string>
719 </map> 719 </map>
720 <key>LastConnectedGrid</key>
721 <map>
722 <key>Comment</key>
723 <string>Last grid actually connected to</string>
724 <key>Persist</key>
725 <integer>1</integer>
726 <key>Type</key>
727 <string>String</string>
728 <key>Value</key>
729 <string />
730 </map>
720 <key>LastSelectedGrid</key> 731 <key>LastSelectedGrid</key>
721 <map> 732 <map>
722 <key>Comment</key> 733 <key>Comment</key>
@@ -2340,6 +2351,41 @@
2340 <key>Value</key> 2351 <key>Value</key>
2341 <integer>0</integer> 2352 <integer>0</integer>
2342 </map> 2353 </map>
2354
2355 <key>XMLRPCProxyAddress</key>
2356 <map>
2357 <key>Comment</key>
2358 <string>Address for the XMLRPC Web Proxy</string>
2359 <key>Persist</key>
2360 <integer>1</integer>
2361 <key>Type</key>
2362 <string>String</string>
2363 <key>Value</key>
2364 <string />
2365 </map>
2366 <key>XMLRPCProxyEnabled</key>
2367 <map>
2368 <key>Comment</key>
2369 <string>Use XMLRPC Proxy</string>
2370 <key>Persist</key>
2371 <integer>1</integer>
2372 <key>Type</key>
2373 <string>Boolean</string>
2374 <key>Value</key>
2375 <integer>0</integer>
2376 </map>
2377 <key>XMLRPCProxyPort</key>
2378 <map>
2379 <key>Comment</key>
2380 <string>Port of the XMLRPC Proxy</string>
2381 <key>Persist</key>
2382 <integer>1</integer>
2383 <key>Type</key>
2384 <string>S32</string>
2385 <key>Value</key>
2386 <integer>3128</integer>
2387 </map>
2388
2343 <key>AllowIdleAFK</key> 2389 <key>AllowIdleAFK</key>
2344 <map> 2390 <map>
2345 <key>Comment</key> 2391 <key>Comment</key>
@@ -8080,6 +8126,17 @@
8080 <integer>100</integer> 8126 <integer>100</integer>
8081 </array> 8127 </array>
8082 </map> 8128 </map>
8129 <key>MediaFilterOnlyRemoteCommands</key>
8130 <map>
8131 <key>Comment</key>
8132 <string>Whether Media Filter should only filter actions initiated remotely</string>
8133 <key>Persist</key>
8134 <integer>1</integer>
8135 <key>Type</key>
8136 <string>Boolean</string>
8137 <key>Value</key>
8138 <integer>1</integer>
8139 </map>
8083 <key>MediaOnAPrimUI</key> 8140 <key>MediaOnAPrimUI</key>
8084 <map> 8141 <map>
8085 <key>Comment</key> 8142 <key>Comment</key>
diff --git a/linden/indra/newview/app_settings/viewerversion.xml b/linden/indra/newview/app_settings/viewerversion.xml
index bb1b996..a220cf2 100644
--- a/linden/indra/newview/app_settings/viewerversion.xml
+++ b/linden/indra/newview/app_settings/viewerversion.xml
@@ -20,6 +20,6 @@ need to be changed manually - MC
20 <viewer version_patch="0" /> 20 <viewer version_patch="0" />
21 21
22 <!--string--> 22 <!--string-->
23 <viewer version_test="Experimental 2011.03.11" /> 23 <viewer version_test="Experimental 2011.04.02" />
24 24
25</viewer_version> 25</viewer_version>
diff --git a/linden/indra/newview/gpu_table.txt b/linden/indra/newview/gpu_table.txt
index d2092c5..51bc0f2 100644
--- a/linden/indra/newview/gpu_table.txt
+++ b/linden/indra/newview/gpu_table.txt
@@ -73,51 +73,54 @@ ATI M71 .*ATI.*M71.* 1 1
73ATI M72 .*ATI.*M72.* 1 1 73ATI M72 .*ATI.*M72.* 1 1
74ATI M76 .*ATI.*M76.* 3 1 74ATI M76 .*ATI.*M76.* 3 1
75ATI Mobility Radeon 4100 .*ATI.*Mobility *41.* 0 1 75ATI Mobility Radeon 4100 .*ATI.*Mobility *41.* 0 1
76ATI Mobility Radeon 7xxx .*ATI.*Mobility *Radeon 7.* 0 1 76ATI Mobility Radeon 7xxx .*ATI.*Mobility.*Radeon 7.* 0 1
77ATI Mobility Radeon 8xxx .*ATI.*Mobility *Radeon 8.* 0 1 77ATI Mobility Radeon 8xxx .*ATI.*Mobility.*Radeon 8.* 0 1
78ATI Mobility Radeon 9800 .*ATI.*Mobility *98.* 0 1 78ATI Mobility Radeon 9800 .*ATI.*Mobility.*98.* 1 1
79ATI Mobility Radeon 9700 .*ATI.*Mobility *97.* 0 1 79ATI Mobility Radeon 9700 .*ATI.*Mobility.*97.* 1 1
80ATI Mobility Radeon 9600 .*ATI.*Mobility *96.* 0 1 80ATI Mobility Radeon 9600 .*ATI.*Mobility.*96.* 0 1
81ATI Mobility Radeon HD 2300 .*ATI.*Mobility *HD *23.* 1 1 81ATI Mobility Radeon HD 2300 .*ATI.*Mobility.*HD.*23.* 1 1
82ATI Mobility Radeon HD 2400 .*ATI.*Mobility *HD *24.* 1 1 82ATI Mobility Radeon HD 2400 .*ATI.*Mobility.*HD.*24.* 1 1
83ATI Mobility Radeon HD 2600 .*ATI.*Mobility *HD *26.* 3 1 83ATI Mobility Radeon HD 2600 .*ATI.*Mobility.*HD.*26.* 3 1
84ATI Mobility Radeon HD 3400 .*ATI.*Mobility *HD *34.* 1 1 84ATI Mobility Radeon HD 3400 .*ATI.*Mobility.*HD.*34.* 1 1
85ATI Mobility Radeon HD 3600 .*ATI.*Mobility *HD *36.* 3 1 85ATI Mobility Radeon HD 3600 .*ATI.*Mobility.*HD.*36.* 3 1
86ATI Mobility Radeon HD 3800 .*ATI.*Mobility *HD *38.* 3 1 86ATI Mobility Radeon HD 3800 .*ATI.*Mobility.*HD.*38.* 3 1
87ATI Mobility Radeon HD 4200 .*ATI.*Mobility.*HD.*42.* 3 1
87ATI Mobility Radeon HD 5400 .*ATI.*Mobility *HD *54.* 1 1 88ATI Mobility Radeon HD 5400 .*ATI.*Mobility *HD *54.* 1 1
88ATI Mobility Radeon HD 5500 .*ATI.*Mobility *HD *55.* 1 1 89ATI Mobility Radeon HD 5500 .*ATI.*Mobility *HD *55.* 1 1
89ATI Mobility Radeon X1xxx .*ATI.*Mobility *X1.* 0 1 90ATI Mobility Radeon X1xxx .*ATI.*Mobility.*X1.* 0 1
90ATI Mobility Radeon X2xxx .*ATI.*Mobility *X2.* 0 1 91ATI Mobility Radeon X2xxx .*ATI.*Mobility.*X2.* 0 1
91ATI Mobility Radeon X3xx .*ATI.*Mobility *X3.* 1 1 92ATI Mobility Radeon X3xx .*ATI.*Mobility.*X3.* 1 1
92ATI Mobility Radeon X6xx .*ATI.*Mobility *X6.* 1 1 93ATI Mobility Radeon X6xx .*ATI.*Mobility.*X6.* 1 1
93ATI Mobility Radeon X7xx .*ATI.*Mobility *X7.* 1 1 94ATI Mobility Radeon X7xx .*ATI.*Mobility.*X7.* 1 1
94ATI Mobility Radeon Xxxx .*ATI.*Mobility *X.* 0 1 95ATI Mobility Radeon Xxxx .*ATI.*Mobility.*X.* 0 1
95ATI Mobility Radeon .*ATI.*Mobility.* 0 1 96ATI Mobility Radeon .*ATI.*Mobility.* 0 1
96ATI Radeon HD 2300 .*ATI.*Radeon HD *23.* 0 1 97ATI Radeon HD 2300 .*ATI.*Radeon HD 23.* 0 1
97ATI Radeon HD 2400 .*ATI.*Radeon HD *24.* 1 1 98ATI Radeon HD 2400 .*ATI.*Radeon HD.*24.* 1 1
98ATI Radeon HD 2600 .*ATI.*Radeon HD *26.* 2 1 99ATI Radeon HD 2600 .*ATI.*Radeon HD 26.* 2 1
99ATI Radeon HD 2900 .*ATI.*Radeon HD *29.* 3 1 100ATI Radeon HD 2900 .*ATI.*Radeon HD 29.* 3 1
100ATI Radeon HD 3200 .*ATI.*Radeon *HD *32.* 0 1 101ATI Radeon HD 3200 .*ATI.*Radeon.*HD.*32.* 1 1
101ATI Radeon HD 3300 .*ATI.*Radeon HD *33.* 1 1 102ATI Radeon HD 3300 .*ATI.*Radeon HD.*33.* 1 1
102ATI Radeon HD 3400 .*ATI.*Radeon HD *34.* 1 1 103ATI Radeon HD 3400 .*ATI.*Radeon HD.*34.* 1 1
103ATI Radeon HD 3600 .*ATI.*Radeon HD *36.* 3 1 104ATI Radeon HD 3600 .*ATI.*Radeon HD.*36.* 3 1
104ATI Radeon HD 3800 .*ATI.*Radeon HD *38.* 3 1 105ATI Radeon HD 3800 .*ATI.*Radeon HD.*38.* 3 1
105ATI Radeon HD 4200 .*ATI.*Radeon HD *42.* 1 1 106ATI Radeon HD 4200 .*ATI.*Radeon HD *42.* 1 1
106ATI Radeon HD 4300 .*ATI.*Radeon HD *43.* 1 1 107ATI Radeon HD 4300 .*ATI.*Radeon HD 43.* 1 1
107ATI Radeon HD 4500 .*ATI.*Radeon HD *45.* 2 1 108ATI Radeon HD 4500 .*ATI.*Radeon HD 45.* 2 1
108ATI Radeon HD 4600 .*ATI.*Radeon HD *46.* 3 1 109ATI Radeon HD 4600 .*ATI.*Radeon HD 46.* 3 1
109ATI Radeon HD 4700 .*ATI.*Radeon HD *47.* 3 1 110ATI Radeon HD 4700 .*ATI.*Radeon HD *47.* 3 1
110ATI Radeon HD 4800 .*ATI.*Radeon.*HD *48.* 3 1 111ATI Radeon HD 4800 .*ATI.*Radeon.*HD.*48.* 3 1
111ATI Radeon HD 5400 .*ATI.*Radeon.*HD *54.* 3 1 112ATI Radeon HD 5400 .*ATI.*Radeon.*HD.*54.* 2 1
112ATI Radeon HD 5500 .*ATI.*Radeon.*HD *55.* 3 1 113ATI Radeon HD 5500 .*ATI.*Radeon.*HD.*55.* 2 1
113ATI Radeon HD 5600 .*ATI.*Radeon.*HD *56.* 3 1 114ATI Radeon HD 5600 .*ATI.*Radeon.*HD.*56.* 3 1
114ATI Radeon HD 5700 .*ATI.*Radeon.*HD *57.* 3 1 115ATI Radeon HD 5700 .*ATI.*Radeon.*HD.*57.* 3 1
115ATI Radeon HD 5800 .*ATI.*Radeon.*HD *58.* 3 1 116ATI Radeon HD 5800 .*ATI.*Radeon.*HD.*58.* 3 1
116ATI Radeon HD 5900 .*ATI.*Radeon.*HD *59.* 3 1 117ATI Radeon HD 5900 .*ATI.*Radeon.*HD.*59.* 3 1
118ATI Radeon HD 6800 .*ATI.*Radeon.*HD.*68.* 3 1
119ATI Radeon HD 6900 .*ATI.*Radeon.*HD.*69.* 3 1
117ATI Radeon OpenGL .*ATI.*Radeon OpenGL.* 0 0 120ATI Radeon OpenGL .*ATI.*Radeon OpenGL.* 0 0
118ATI Radeon 2100 .*ATI.*Radeon 21.* 0 1 121ATI Radeon 2100 .*ATI.*Radeon 21.* 0 1
119ATI Radeon 3000 .*ATI.*Radeon 30.* 0 1 122ATI Radeon 3000 .*ATI.*Radeon 30.* 0 1
120ATI Radeon 3100 .*ATI.*Radeon 31.* 0 1 123ATI Radeon 3100 .*ATI.*Radeon 31.* 1 1
121ATI Radeon 7xxx .*ATI.*Radeon 7.* 0 1 124ATI Radeon 7xxx .*ATI.*Radeon 7.* 0 1
122ATI Radeon 8xxx .*ATI.*Radeon 8.* 0 1 125ATI Radeon 8xxx .*ATI.*Radeon 8.* 0 1
123ATI Radeon 9000 .*ATI.*Radeon 90.* 0 1 126ATI Radeon 9000 .*ATI.*Radeon 90.* 0 1
@@ -136,12 +139,12 @@ ATI Radeon VE .*ATI.*Radeon.*VE.* 0 0
136ATI Radeon X1000 .*ATI.*Radeon *X10.* 0 1 139ATI Radeon X1000 .*ATI.*Radeon *X10.* 0 1
137ATI Radeon X1200 .*ATI.*Radeon *X12.* 0 1 140ATI Radeon X1200 .*ATI.*Radeon *X12.* 0 1
138ATI Radeon X1300 .*ATI.*Radeon *X13.* 1 1 141ATI Radeon X1300 .*ATI.*Radeon *X13.* 1 1
139ATI Radeon X1400 .*ATI.*Radeon *X14.* 1 1 142ATI Radeon X1400 .*ATI.*Radeon X14.* 1 1
140ATI Radeon X1500 .*ATI.*Radeon *X15.* 1 1 143ATI Radeon X1500 .*ATI.*Radeon X15.* 1 1
141ATI Radeon X1600 .*ATI.*Radeon *X16.* 1 1 144ATI Radeon X1600 .*ATI.*Radeon *X16.* 1 1
142ATI Radeon X1700 .*ATI.*Radeon *X17.* 1 1 145ATI Radeon X1700 .*ATI.*Radeon X17.* 1 1
143ATI Radeon X1800 .*ATI.*Radeon *X18.* 3 1 146ATI Radeon X1800 .*ATI.*Radeon X18.* 3 1
144ATI Radeon X1900 .*ATI.*Radeon *X19.* 3 1 147ATI Radeon X1900 .*ATI.*Radeon X19.* 3 1
145ATI Radeon X300 .*ATI.*Radeon *X3.* 0 1 148ATI Radeon X300 .*ATI.*Radeon *X3.* 0 1
146ATI Radeon X400 .*ATI.*Radeon X4.* 0 1 149ATI Radeon X400 .*ATI.*Radeon X4.* 0 1
147ATI Radeon X500 .*ATI.*Radeon X5.* 0 1 150ATI Radeon X500 .*ATI.*Radeon X5.* 0 1
@@ -184,10 +187,7 @@ Intel Pineview .*Intel.*Pineview.* 0 1
184Intel Springdale .*Intel.*Springdale.* 0 0 187Intel Springdale .*Intel.*Springdale.* 0 0
185Matrox .*Matrox.* 0 0 188Matrox .*Matrox.* 0 0
186Mesa .*Mesa.* 0 0 189Mesa .*Mesa.* 0 0
187NVIDIA 210 .*NVIDIA.*GeForce.*210.* 3 1 190NVIDIA 210 .*NVIDIA.*GeForce.*21.* 2 1
188NVIDIA 310 .*NVIDIA.*GeForce.*310.* 3 1
189NVIDIA 315 .*NVIDIA.*GeForce.*315.* 3 1
190NVIDIA G100 .*NVIDIA.*GeForce G *100.* 2 1
191NVIDIA 310M .*NVIDIA.*GeForce 310M.* 0 1 191NVIDIA 310M .*NVIDIA.*GeForce 310M.* 0 1
192NVIDIA 310 .*NVIDIA.*GeForce 310.* 0 1 192NVIDIA 310 .*NVIDIA.*GeForce 310.* 0 1
193NVIDIA 320M .*NVIDIA.*GeForce 320M.* 0 1 193NVIDIA 320M .*NVIDIA.*GeForce 320M.* 0 1
@@ -196,27 +196,33 @@ NVIDIA G102M .*NVIDIA.*GeForce G *102M.* 0 1
196NVIDIA G103M .*NVIDIA.*GeForce G *103M.* 0 1 196NVIDIA G103M .*NVIDIA.*GeForce G *103M.* 0 1
197NVIDIA G105M .*NVIDIA.*GeForce G *105M.* 0 1 197NVIDIA G105M .*NVIDIA.*GeForce G *105M.* 0 1
198NVIDIA G210M .*NVIDIA.*GeForce G210M.* 0 1 198NVIDIA G210M .*NVIDIA.*GeForce G210M.* 0 1
199NVIDIA GT 120 .*NVIDIA.*GeForce GT 12.* 0 1 199NVIDIA GT 120 .*NVIDIA.*GeForce.*GT.*12.* 2 1
200NVIDIA GT 130 .*NVIDIA.*GeForce GT 13.* 1 1 200NVIDIA GT 130 .*NVIDIA.*GeForce.*GT.*13.* 2 1
201NVIDIA GT 220 .*NVIDIA.*GeForce GT 22.* 0 1 201NVIDIA GT 220 .*NVIDIA.*GeForce.*GT.*22.* 2 1
202NVIDIA GT 230 .*NVIDIA.*GeForce GT 23.* 1 1 202NVIDIA GT 230 .*NVIDIA.*GeForce.*GT.*23.* 2 1
203NVIDIA GT 240 .*NVIDIA.*GeForce GT 24.* 1 1 203NVIDIA GT 240 .*NVIDIA.*GeForce.*GT.*24.* 2 1
204NVIDIA GT 320 .*NVIDIA.*GeForce GT 32.* 0 1 204NVIDIA GT 320 .*NVIDIA.*GeForce GT 32.* 0 1
205NVIDIA GT 330 .*NVIDIA.*GeForce GT 33.* 3 1
206NVIDIA GT 340 .*NVIDIA.*GeForce GT 34.* 3 1
207NVIDIA GT 330M .*NVIDIA.*GeForce GT 330M.* 1 1 205NVIDIA GT 330M .*NVIDIA.*GeForce GT 330M.* 1 1
208NVIDIA GTS 150 .*NVIDIA.*GeForce GTS 15.* 3 1 206NVIDIA GT 430 .*NVIDIA.*GeForce.*GT.*43.* 3 1
209NVIDIA GTS 205 .*NVIDIA.*GeForce GTS 10.* 3 1 207NVIDIA GT 520 .*NVIDIA.*GeForce.*GT.*52.* 2 1
210NVIDIA GTS 240 .*NVIDIA.*GeForce GTS 24.* 1 1 208NVIDIA GT 540 .*NVIDIA.*GeForce.*GT.*54.* 3 1
211NVIDIA GTS 250 .*NVIDIA.*GeForce GTS 25.* 3 1 209NVIDIA GTS 240 .*NVIDIA.*GeForce *GTS.*24.* 3 1
210NVIDIA GTS 250 .*NVIDIA.*GeForce.*GTS.*25.* 3 1
211NVIDIA GTS 450 .*NVIDIA.*GeForce.*GTS.*45.* 3 1
212NVIDIA GTX 260 .*NVIDIA.*GeForce.*GTX.*26.* 3 1
213NVIDIA GTX 270 .*NVIDIA.*GeForce.*GTX.*27.* 3 1
214NVIDIA GTX 280 .*NVIDIA.*GeForce.*GTX.*28.* 3 1
215NVIDIA GTX 285 .*NVIDIA.*GeForce.*GTX.*28.* 3 1
216NVIDIA GTX 290 .*NVIDIA.*GeForce.*GTX.*29.* 3 1
217NVIDIA GTX 295 .*NVIDIA.*GeForce.*GTX.*29.* 3 1
212NVIDIA GTS 360M .*NVIDIA.*GeForce GTS 360M.* 3 1 218NVIDIA GTS 360M .*NVIDIA.*GeForce GTS 360M.* 3 1
213NVIDIA GTX 260 .*NVIDIA.*GeForce GTX 26.* 3 1 219NVIDIA GTX 460 .*NVIDIA.*GeForce.*GTX.*46.* 3 1
214NVIDIA GTX 270 .*NVIDIA.*GeForce GTX 27.* 3 1 220NVIDIA GTX 465 .*NVIDIA.*GeForce.*GTX.*46.* 3 1
215NVIDIA GTX 280 .*NVIDIA.*GeForce GTX 28.* 3 1 221NVIDIA GTX 470 .*NVIDIA.*GeForce.*GTX.*47.* 3 1
216NVIDIA GTX 290 .*NVIDIA.*GeForce GTX 29.* 3 1 222NVIDIA GTX 480 .*NVIDIA.*GeForce.*GTX.*48.* 3 1
217NVIDIA GTX 465 .*NVIDIA.*GeForce GTX 46.* 3 1 223NVIDIA GTX 560 .*NVIDIA.*GeForce.*GTX.*56.* 3 1
218NVIDIA GTX 470 .*NVIDIA.*GeForce GTX 47.* 3 1 224NVIDIA GTX 570 .*NVIDIA.*GeForce.*GTX.*57.* 3 1
219NVIDIA GTX 480 .*NVIDIA.*GeForce GTX 48.* 3 1 225NVIDIA GTX 580 .*NVIDIA.*GeForce.*GTX.*58.* 3 1
220NVIDIA C51 .*NVIDIA.*C51.* 0 1 226NVIDIA C51 .*NVIDIA.*C51.* 0 1
221NVIDIA G72 .*NVIDIA.*G72.* 1 1 227NVIDIA G72 .*NVIDIA.*G72.* 1 1
222NVIDIA G73 .*NVIDIA.*G73.* 1 1 228NVIDIA G73 .*NVIDIA.*G73.* 1 1
@@ -240,29 +246,31 @@ NVIDIA GeForce 7100 .*NVIDIA.*GeForce 71.* 0 1
240NVIDIA GeForce 7200 .*NVIDIA.*GeForce 72.* 1 1 246NVIDIA GeForce 7200 .*NVIDIA.*GeForce 72.* 1 1
241NVIDIA GeForce 7300 .*NVIDIA.*GeForce 73.* 1 1 247NVIDIA GeForce 7300 .*NVIDIA.*GeForce 73.* 1 1
242NVIDIA GeForce 7500 .*NVIDIA.*GeForce 75.* 1 1 248NVIDIA GeForce 7500 .*NVIDIA.*GeForce 75.* 1 1
243NVIDIA GeForce 7600 .*NVIDIA.*GeForce 76.* 1 1 249NVIDIA GeForce 7600 .*NVIDIA.*GeForce 76.* 2 1
244NVIDIA GeForce 7800 .*NVIDIA.*GeForce 78.* 1 1 250NVIDIA GeForce 7800 .*NVIDIA.*GeForce.*78.* 2 1
245NVIDIA GeForce 7900 .*NVIDIA.*GeForce 79.* 1 1 251NVIDIA GeForce 7900 .*NVIDIA.*GeForce.*79.* 2 1
246NVIDIA GeForce 8100 .*NVIDIA.*GeForce 81.* 1 1 252NVIDIA GeForce 8100 .*NVIDIA.*GeForce 81.* 1 1
247NVIDIA GeForce 8200 .*NVIDIA.*GeForce 82.* 1 1 253NVIDIA GeForce 8200 .*NVIDIA.*GeForce 82.* 1 1
248NVIDIA GeForce 8300 .*NVIDIA.*GeForce 83.* 1 1 254NVIDIA GeForce 8300 .*NVIDIA.*GeForce 83.* 1 1
249NVIDIA GeForce 8400 .*NVIDIA.*GeForce 84.* 1 1 255NVIDIA GeForce 8400 .*NVIDIA.*GeForce 84.* 1 1
250NVIDIA GeForce 8500 .*GeForce 85.* 1 1 256NVIDIA GeForce 8500 .*GeForce 85.* 3 1
251NVIDIA GeForce 8600M .*NVIDIA.*GeForce.*8600M.* 1 1 257NVIDIA GeForce 8600M .*NVIDIA.*GeForce.*8600M.* 1 1
252NVIDIA GeForce 8600 .*NVIDIA.*GeForce 86.* 3 1 258NVIDIA GeForce 8600 .*NVIDIA.*GeForce 86.* 3 1
253NVIDIA GeForce 8700 .*NVIDIA.*GeForce 87.* 3 1 259NVIDIA GeForce 8700 .*NVIDIA.*GeForce 87.* 3 1
254NVIDIA GeForce 8800 .*NVIDIA.*GeForce 88.* 3 1 260NVIDIA GeForce 8800 .*NVIDIA.*GeForce 88.* 3 1
255NVIDIA GeForce 9100 .*NVIDIA.*GeForce 9100.* 0 1 261NVIDIA GeForce 9100 .*NVIDIA.*GeForce 9100.* 0 1
256NVIDIA GeForce 9200 .*NVIDIA.*GeForce 9200.* 0 1 262NVIDIA GeForce 9200 .*NVIDIA.*GeForce 9200.* 0 1
263NVIDIA GeForce 9200M .*NVIDIA.*GeForce 9200M.* 1 1
257NVIDIA GeForce 9300M .*NVIDIA.*GeForce 9300M.* 1 1 264NVIDIA GeForce 9300M .*NVIDIA.*GeForce 9300M.* 1 1
258NVIDIA GeForce 9400M .*NVIDIA.*GeForce 9400M.* 1 1 265NVIDIA GeForce 9400M .*NVIDIA.*GeForce 9400M.* 1 1
259NVIDIA GeForce 9500M .*NVIDIA.*GeForce 9500M.* 2 1 266NVIDIA GeForce 9500M .*NVIDIA.*GeForce 9500M.* 2 1
260NVIDIA GeForce 9600M .*NVIDIA.*GeForce 9600M.* 2 1 267NVIDIA GeForce 9600M .*NVIDIA.*GeForce 9600M.* 2 1
261NVIDIA GeForce 9700M .*NVIDIA.*GeForce 9700M.* 2 1 268NVIDIA GeForce 9700M .*NVIDIA.*GeForce 9700M.* 2 1
269NVIDIA GeForce 9200 .*NVIDIA.*GeForce 92.* 1 1
262NVIDIA GeForce 9300 .*NVIDIA.*GeForce 93.* 1 1 270NVIDIA GeForce 9300 .*NVIDIA.*GeForce 93.* 1 1
263NVIDIA GeForce 9400 .*GeForce 94.* 1 1 271NVIDIA GeForce 9400 .*GeForce 94.* 1 1
264NVIDIA GeForce 9500 .*NVIDIA.*GeForce 95.* 2 1 272NVIDIA GeForce 9500 .*NVIDIA.*GeForce 95.* 2 1
265NVIDIA GeForce 9600 .*NVIDIA.*GeForce.*96.* 3 1 273NVIDIA GeForce 9600 .*NVIDIA.*GeForce.*96.* 2 1
266NVIDIA GeForce 9800 .*NVIDIA.*GeForce.*98.* 3 1 274NVIDIA GeForce 9800 .*NVIDIA.*GeForce.*98.* 3 1
267NVIDIA GeForce FX 5100 .*NVIDIA.*GeForce FX 51.* 0 1 275NVIDIA GeForce FX 5100 .*NVIDIA.*GeForce FX 51.* 0 1
268NVIDIA GeForce FX 5200 .*NVIDIA.*GeForce FX 52.* 0 1 276NVIDIA GeForce FX 5200 .*NVIDIA.*GeForce FX 52.* 0 1
@@ -299,6 +307,7 @@ NVIDIA G92 .*G92.* 3 1
299NVIDIA G94 .*G94.* 3 1 307NVIDIA G94 .*G94.* 3 1
300NVIDIA GeForce Go 6 .*GeForce Go 6.* 1 1 308NVIDIA GeForce Go 6 .*GeForce Go 6.* 1 1
301NVIDIA ION .*NVIDIA ION.* 1 1 309NVIDIA ION .*NVIDIA ION.* 1 1
310NVIDIA ION 2 .*NVIDIA ION 2.* 1 1
302NVIDIA NB9M .*GeForce NB9M.* 1 1 311NVIDIA NB9M .*GeForce NB9M.* 1 1
303NVIDIA NB9P .*GeForce NB9P.* 1 1 312NVIDIA NB9P .*GeForce NB9P.* 1 1
304NVIDIA GeForce PCX .*GeForce PCX.* 0 1 313NVIDIA GeForce PCX .*GeForce PCX.* 0 1
diff --git a/linden/indra/newview/hippogridmanager.cpp b/linden/indra/newview/hippogridmanager.cpp
index 5e13ed8..c08709d 100644
--- a/linden/indra/newview/hippogridmanager.cpp
+++ b/linden/indra/newview/hippogridmanager.cpp
@@ -165,6 +165,13 @@ const std::string& HippoGridInfo::getRealCurrencySymbol() const
165 return mRealCurrencySymbol; 165 return mRealCurrencySymbol;
166} 166}
167 167
168bool HippoGridInfo::isUsernameCompat() const
169{
170 // currently only SecondLife grids support username-style logins
171 // but Aurora is working on implementing it -- MC
172 return (mPlatform == HippoGridInfo::PLATFORM_SECONDLIFE);
173}
174
168 175
169 176
170// ******************************************************************** 177// ********************************************************************
@@ -802,7 +809,17 @@ void HippoGridManager::loadFromFile()
802 parseFile(gDirUtilp->getExpandedFilename(LL_PATH_APP_SETTINGS, "default_grids.xml"), !mGridInfo.empty()); 809 parseFile(gDirUtilp->getExpandedFilename(LL_PATH_APP_SETTINGS, "default_grids.xml"), !mGridInfo.empty());
803 // merge grid info from web site, if newer. Force load, if list of grids is empty. 810 // merge grid info from web site, if newer. Force load, if list of grids is empty.
804 if (gSavedSettings.getBOOL("CheckForGridUpdates")) 811 if (gSavedSettings.getBOOL("CheckForGridUpdates"))
805 parseUrl(gSavedSettings.getString("GridUpdateList"), !mGridInfo.empty()); 812 {
813 std::string update_list = gSavedSettings.getString("GridUpdateList");
814 if (!update_list.empty())
815 {
816 parseUrl(update_list, !mGridInfo.empty());
817 }
818 else
819 {
820 llwarns << "\"CheckForGridUpdates\" is set to true, but \"GridUpdateList\" contains no URL to fetch the grid info from. Skipping." << llendl;
821 }
822 }
806 823
807 std::string last_grid = gSavedSettings.getString("LastSelectedGrid"); 824 std::string last_grid = gSavedSettings.getString("LastSelectedGrid");
808 if (last_grid.empty()) last_grid = gSavedSettings.getString("DefaultGrid"); 825 if (last_grid.empty()) last_grid = gSavedSettings.getString("DefaultGrid");
diff --git a/linden/indra/newview/hippogridmanager.h b/linden/indra/newview/hippogridmanager.h
index 8429dba..1b6fbc5 100644
--- a/linden/indra/newview/hippogridmanager.h
+++ b/linden/indra/newview/hippogridmanager.h
@@ -55,6 +55,7 @@ public:
55 const std::string& getVoiceConnector() const { return mVoiceConnector; } 55 const std::string& getVoiceConnector() const { return mVoiceConnector; }
56 std::string getSearchUrl(SearchType ty, bool is_web) const; 56 std::string getSearchUrl(SearchType ty, bool is_web) const;
57 bool isRenderCompat() const; 57 bool isRenderCompat() const;
58 bool isUsernameCompat() const;
58 int getMaxAgentGroups() const { return mMaxAgentGroups; } 59 int getMaxAgentGroups() const { return mMaxAgentGroups; }
59 60
60 const std::string& getCurrencySymbol() const; 61 const std::string& getCurrencySymbol() const;
diff --git a/linden/indra/newview/installers/windows/imprudence_installer_script.iss b/linden/indra/newview/installers/windows/imprudence_installer_script.iss
new file mode 100644
index 0000000..17428eb
--- /dev/null
+++ b/linden/indra/newview/installers/windows/imprudence_installer_script.iss
@@ -0,0 +1,193 @@
1; Script generated by the Inno Setup Script Wizard.
2; SEE THE DOCUMENTATION FOR DETAILS ON CREATING INNO SETUP SCRIPT FILES!
3
4[Setup]
5; NOTE: The value of AppId uniquely identifies this application.
6; Do not use the same AppId value in installers for other applications.
7; (To generate a new GUID, click Tools | Generate GUID inside the IDE.)
8
9; These will change
10AppId={{D7736EE8-AFCE-4735-BBE3-652CDFBBFCA8}
11AppName=Imprudence
12AppVerName=Imprudence Viewer 1.3.0 RC2 (SSE2 optimized)
13DefaultDirName={pf}\Imprudence
14DefaultGroupName=Imprudence Viewer
15VersionInfoProductName=Imprudence Viewer
16OutputBaseFilename=Imprudence-1.3.0-RC2-(SSE2-optimized)-Setup
17VersionInfoVersion=1.3.0
18VersionInfoTextVersion=1.3.0
19VersionInfoProductVersion=1.3.0
20VersionInfoCopyright=2010
21AppCopyright=2010
22
23; These won't change
24VersionInfoCompany=Imprudence
25AppPublisher=The Imprudence Project
26AppPublisherURL=http://www.imprudenceviewer.org
27AppSupportURL=http://www.imprudenceviewer.org
28AppUpdatesURL=http://www.imprudenceviewer.org
29AllowNoIcons=true
30InfoAfterFile=..\windows\README.txt
31OutputDir=C:\
32SetupIconFile=..\windows\imp_icon.ico
33Compression=lzma2/ultra64
34InternalCompressLevel=ultra64
35SolidCompression=true
36PrivilegesRequired=poweruser
37AllowRootDirectory=true
38WizardImageFile=..\windows\imprudence_installer_icon_left.bmp
39WizardSmallImageFile=..\windows\imprudence_installer_icon_right.bmp
40SetupLogging=true
41
42[Languages]
43Name: english; MessagesFile: compiler:Default.isl
44
45[Tasks]
46Name: desktopicon; Description: {cm:CreateDesktopIcon}; GroupDescription: {cm:AdditionalIcons}; Flags: checkedonce
47Name: quicklaunchicon; Description: {cm:CreateQuickLaunchIcon}; GroupDescription: {cm:AdditionalIcons}; Flags: checkedonce
48Name: slurlassociate; Description: Associate Imprudence with SLURLs; GroupDescription: Associations:; Languages: ; Flags: checkedonce
49; TODO: use scripting for something like this on uninstall:
50; Name: uninstallsettings; Description: Remove user settings; Flags: checkablealone; Languages: ; GroupDescription: Uninstall:
51
52[Files]
53Source: C:\imp_1.3\imprudence.exe; DestDir: {app}; Flags: ignoreversion
54Source: C:\imp_1.3\character\*; DestDir: {app}\character; Flags: ignoreversion recursesubdirs createallsubdirs
55Source: C:\imp_1.3\fonts\*; DestDir: {app}\fonts; Flags: ignoreversion recursesubdirs createallsubdirs
56Source: C:\imp_1.3\app_settings\*; DestDir: {app}\app_settings; Flags: ignoreversion recursesubdirs createallsubdirs
57Source: C:\imp_1.3\skins\*; DestDir: {app}\skins; Flags: ignoreversion recursesubdirs createallsubdirs
58Source: C:\imp_1.3\doc\*; DestDir: {app}\doc; Flags: ignoreversion recursesubdirs createallsubdirs
59Source: C:\imp_1.3\lib\*; DestDir: {app}\lib; Flags: ignoreversion recursesubdirs createallsubdirs
60Source: C:\imp_1.3\alut.dll; DestDir: {app}; Flags: ignoreversion
61Source: C:\imp_1.3\ChangeLog.txt; DestDir: {app}; Flags: ignoreversion
62Source: C:\imp_1.3\charset.dll; DestDir: {app}; Flags: ignoreversion
63Source: C:\imp_1.3\dbghelp.dll; DestDir: {app}; Flags: ignoreversion
64Source: C:\imp_1.3\featuretable.txt; DestDir: {app}; Flags: ignoreversion
65Source: C:\imp_1.3\freebl3.dll; DestDir: {app}; Flags: ignoreversion
66Source: C:\imp_1.3\glew32.dll; DestDir: {app}; Flags: ignoreversion
67Source: C:\imp_1.3\gpu_table.txt; DestDir: {app}; Flags: ignoreversion
68Source: C:\imp_1.3\iconv.dll; DestDir: {app}; Flags: ignoreversion
69Source: C:\imp_1.3\imprudence.exe.config; DestDir: {app}; Flags: ignoreversion
70Source: C:\imp_1.3\imprudence.url; DestDir: {app}; Flags: ignoreversion
71Source: C:\imp_1.3\intl.dll; DestDir: {app}; Flags: ignoreversion
72Source: C:\imp_1.3\js3250.dll; DestDir: {app}; Flags: ignoreversion
73Source: C:\imp_1.3\libcairo-2.dll; DestDir: {app}; Flags: ignoreversion
74Source: C:\imp_1.3\libfaad-2.dll; DestDir: {app}; Flags: ignoreversion
75Source: C:\imp_1.3\libgcrypt-11.dll; DestDir: {app}; Flags: ignoreversion
76Source: C:\imp_1.3\libgio-2.0-0.dll; DestDir: {app}; Flags: ignoreversion
77Source: C:\imp_1.3\libglib-2.0-0.dll; DestDir: {app}; Flags: ignoreversion
78Source: C:\imp_1.3\libgmodule-2.0-0.dll; DestDir: {app}; Flags: ignoreversion
79Source: C:\imp_1.3\libgnutls-26.dll; DestDir: {app}; Flags: ignoreversion
80Source: C:\imp_1.3\libgobject-2.0-0.dll; DestDir: {app}; Flags: ignoreversion
81Source: C:\imp_1.3\libgpg-error-0.dll; DestDir: {app}; Flags: ignoreversion
82Source: C:\imp_1.3\libgstapp.dll; DestDir: {app}; Flags: ignoreversion
83Source: C:\imp_1.3\libgstaudio.dll; DestDir: {app}; Flags: ignoreversion
84Source: C:\imp_1.3\libgstaudio-0.10.dll; DestDir: {app}; Flags: ignoreversion
85Source: C:\imp_1.3\libgstbase-0.10.dll; DestDir: {app}; Flags: ignoreversion
86Source: C:\imp_1.3\libgstcdda.dll; DestDir: {app}; Flags: ignoreversion
87Source: C:\imp_1.3\libgstcontroller-0.10.dll; DestDir: {app}; Flags: ignoreversion
88Source: C:\imp_1.3\libgstdataprotocol-0.10.dll; DestDir: {app}; Flags: ignoreversion
89Source: C:\imp_1.3\libgstdshow.dll; DestDir: {app}; Flags: ignoreversion
90Source: C:\imp_1.3\libgstfft.dll; DestDir: {app}; Flags: ignoreversion
91Source: C:\imp_1.3\libgstinterfaces.dll; DestDir: {app}; Flags: ignoreversion
92Source: C:\imp_1.3\libgstnet-0.10.dll; DestDir: {app}; Flags: ignoreversion
93Source: C:\imp_1.3\libgstnetbuffer.dll; DestDir: {app}; Flags: ignoreversion
94Source: C:\imp_1.3\libgstpbutils.dll; DestDir: {app}; Flags: ignoreversion
95Source: C:\imp_1.3\libgstreamer-0.10.dll; DestDir: {app}; Flags: ignoreversion
96Source: C:\imp_1.3\libgstriff.dll; DestDir: {app}; Flags: ignoreversion
97Source: C:\imp_1.3\libgstrtp.dll; DestDir: {app}; Flags: ignoreversion
98Source: C:\imp_1.3\libgstrtsp.dll; DestDir: {app}; Flags: ignoreversion
99Source: C:\imp_1.3\libgstsdp.dll; DestDir: {app}; Flags: ignoreversion
100Source: C:\imp_1.3\libgsttag.dll; DestDir: {app}; Flags: ignoreversion
101Source: C:\imp_1.3\libgstvideo.dll; DestDir: {app}; Flags: ignoreversion
102Source: C:\imp_1.3\libgthread-2.0-0.dll; DestDir: {app}; Flags: ignoreversion
103Source: C:\imp_1.3\libjpeg.dll; DestDir: {app}; Flags: ignoreversion
104Source: C:\imp_1.3\libmp3lame-0.dll; DestDir: {app}; Flags: ignoreversion
105Source: C:\imp_1.3\libneon-27.dll; DestDir: {app}; Flags: ignoreversion
106Source: C:\imp_1.3\libogg-0.dll; DestDir: {app}; Flags: ignoreversion
107Source: C:\imp_1.3\liboil-0.3-0.dll; DestDir: {app}; Flags: ignoreversion
108Source: C:\imp_1.3\libopenjpeg-2.dll; DestDir: {app}; Flags: ignoreversion
109Source: C:\imp_1.3\libpng12-0.dll; DestDir: {app}; Flags: ignoreversion
110Source: C:\imp_1.3\libschroedinger-1.0-0.dll; DestDir: {app}; Flags: ignoreversion
111Source: C:\imp_1.3\libspeex-1.dll; DestDir: {app}; Flags: ignoreversion
112Source: C:\imp_1.3\libtheora-0.dll; DestDir: {app}; Flags: ignoreversion
113Source: C:\imp_1.3\libvorbis-0.dll; DestDir: {app}; Flags: ignoreversion
114Source: C:\imp_1.3\libvorbisenc-2.dll; DestDir: {app}; Flags: ignoreversion
115Source: C:\imp_1.3\libxml2-2.dll; DestDir: {app}; Flags: ignoreversion
116Source: C:\imp_1.3\libxml2.dll; DestDir: {app}; Flags: ignoreversion
117Source: C:\imp_1.3\llkdu.dll.2.config; DestDir: {app}; Flags: ignoreversion
118Source: C:\imp_1.3\Microsoft.VC80.CRT.manifest; DestDir: {app}; Flags: ignoreversion
119Source: C:\imp_1.3\msvcp80.dll; DestDir: {app}; Flags: ignoreversion
120Source: C:\imp_1.3\msvcr80.dll; DestDir: {app}; Flags: ignoreversion
121Source: C:\imp_1.3\nspr4.dll; DestDir: {app}; Flags: ignoreversion
122Source: C:\imp_1.3\nss3.dll; DestDir: {app}; Flags: ignoreversion
123Source: C:\imp_1.3\nssckbi.dll; DestDir: {app}; Flags: ignoreversion
124Source: C:\imp_1.3\openal32.dll; DestDir: {app}; Flags: ignoreversion
125Source: C:\imp_1.3\OpenJPEG.dll; DestDir: {app}; Flags: ignoreversion
126Source: C:\imp_1.3\plc4.dll; DestDir: {app}; Flags: ignoreversion
127Source: C:\imp_1.3\plds4.dll; DestDir: {app}; Flags: ignoreversion
128Source: C:\imp_1.3\smime3.dll; DestDir: {app}; Flags: ignoreversion
129Source: C:\imp_1.3\softokn3.dll; DestDir: {app}; Flags: ignoreversion
130Source: C:\imp_1.3\ssl3.dll; DestDir: {app}; Flags: ignoreversion
131Source: C:\imp_1.3\xpcom.dll; DestDir: {app}; Flags: ignoreversion
132Source: C:\imp_1.3\xul.dll; DestDir: {app}; Flags: ignoreversion
133Source: C:\imp_1.3\xvidcore.dll; DestDir: {app}; Flags: ignoreversion
134Source: C:\imp_1.3\zlib1.dll; DestDir: {app}; Flags: ignoreversion
135
136; Voice files
137Source: C:\imp_1.3\ortp.dll; DestDir: {app}; Flags: ignoreversion
138Source: C:\imp_1.3\SLVoice.exe; DestDir: {app}; Flags: ignoreversion
139Source: C:\imp_1.3\vivoxsdk.dll; DestDir: {app}; Flags: ignoreversion
140Source: C:\imp_1.3\wrap_oal.dll; DestDir: {app}; Flags: ignoreversion
141
142; Old files we don't use anymore
143; Source: C:\imp_1.3\dronesettings.xml; DestDir: {app}; Flags: ignoreversion
144; Source: C:\imp_1.3\volume_settings.xml; DestDir: {app}; Flags: ignoreversion
145; Source: C:\imp_1.3\srtp.dll; DestDir: {app}; Flags: ignoreversion
146; Source: C:\imp_1.3\ssleay32.dll; DestDir: {app}; Flags: ignoreversion
147; Source: C:\imp_1.3\tntk.dll; DestDir: {app}; Flags: ignoreversion
148; Source: C:\imp_1.3\libeay32.dll; DestDir: {app}; Flags: ignoreversion
149; Source: C:\imp_1.3\lsl_guide.html; DestDir: {app}; Flags: ignoreversion
150
151; NOTE: Don't use "Flags: ignoreversion" on any shared system files
152;Source: C:\imp_1.3\msvcr71.dll; DestDir: {app}; Flags: ignoreversion; MinVersion: 0,6.01; Tasks: ; Languages:
153
154[Registry]
155Root: HKCR; Subkey: secondlife; ValueType: string; Flags: uninsdeletekey deletekey; Tasks: slurlassociate; ValueName: (default); ValueData: URL:Second Life
156Root: HKCR; Subkey: secondlife; ValueType: string; Flags: uninsdeletekey deletekey; Tasks: slurlassociate; ValueName: URL Protocol
157Root: HKCR; Subkey: secondlife\DefaultIcon; Flags: uninsdeletekey deletekey; ValueType: string; Tasks: slurlassociate; ValueData: {app}\imprudence.exe
158Root: HKCR; Subkey: secondlife\shell\open\command; ValueType: expandsz; Flags: uninsdeletekey deletekey; Tasks: slurlassociate; ValueData: "{app}\imprudence.exe --settings settings_imprudence.xml -url ""%1"""; Languages:
159; Root: HKCU; Subkey: Environment; ValueType: string; ValueName: GST_PLUGIN_PATH; Flags: deletevalue uninsdeletevalue; ValueData: {app}\lib
160; Root: HKCU; Subkey: Environment; ValueType: expandsz; ValueName: PATH; ValueData: {app}
161
162[Icons]
163Name: {group}\{cm:UninstallProgram,Imprudence}; Filename: {uninstallexe}
164Name: {commondesktop}\Imprudence; Filename: {app}\imprudence.exe; Tasks: desktopicon; Parameters: --settings settings_imprudence.xml; WorkingDir: {app}; IconIndex: 0
165Name: {userappdata}\Microsoft\Internet Explorer\Quick Launch\Imprudence; Filename: {app}\imprudence.exe; Tasks: quicklaunchicon; Parameters: --settings settings_imprudence.xml; WorkingDir: {app}
166Name: {group}\Imprudence; Filename: {app}\imprudence.exe; WorkingDir: {app}; Comment: imprudence; IconIndex: 0; Parameters: --settings settings_imprudence.xml
167
168[Run]
169Filename: {app}\imprudence.exe; WorkingDir: {app}; Flags: nowait postinstall
170Filename: {app}\imprudence.url; WorkingDir: {app}; Flags: nowait postinstall shellexec; Description: See what makes Imprudence different
171
172[UninstallDelete]
173Name: {userappdata}\Imprudence\user_settings\password.dat; Type: files; Languages:
174Name: {userappdata}\Imprudence\user_settings\settings.xml; Type: files; Languages:
175Name: {userappdata}\Imprudence\user_settings\settings_imprudence.xml; Type: files; Languages:
176; 1.2 and lower cache location:
177Name: {userappdata}\Imprudence\cache; Type: filesandordirs
178; 1.3 and higher cache location:
179Name: {localappdata}\Imprudence\cache; Type: filesandordirs
180Name: {userappdata}\Imprudence\logs; Type: filesandordirs
181Name: {userappdata}\Imprudence\browser_profile; Type: filesandordirs
182Name: C:\Users\{username}\.gstreamer-0.10; Type: filesandordirs
183Name: C:\Documents and Settings\{username}\.gstreamer-0.10; Type: filesandordirs
184
185[InstallDelete]
186; Name: {app}\*.dll; Type: files; Tasks: ; Languages:
187Name: {app}\lib\gstreamer-plugins\*; Type: filesandordirs; Tasks: ; Languages:
188; Name: {app}\skins\default\xui\*; Type: filesandordirs; Tasks: ; Languages:
189; Name: {app}\skins\silver\xui\*; Type: filesandordirs; Tasks: ; Languages:
190Name: C:\Documents and Settings\{username}\.gstreamer-0.10\*; Type: filesandordirs
191Name: C:\Users\{username}\.gstreamer-0.10\*; Type: filesandordirs
192; Breaks the browser if installing on top of 1.1:
193Name: {app}\gksvggdiplus.dll; Type: files; Tasks: ; Languages:
diff --git a/linden/indra/newview/installers/windows/imprudence_installer_script_experimental.iss b/linden/indra/newview/installers/windows/imprudence_installer_script_experimental.iss
new file mode 100644
index 0000000..d89a074
--- /dev/null
+++ b/linden/indra/newview/installers/windows/imprudence_installer_script_experimental.iss
@@ -0,0 +1,263 @@
1; Script generated by the Inno Setup Script Wizard.
2; SEE THE DOCUMENTATION FOR DETAILS ON CREATING INNO SETUP SCRIPT FILES!
3
4[Setup]
5; NOTE: The value of AppId uniquely identifies this application.
6; Do not use the same AppId value in installers for other applications.
7; (To generate a new GUID, click Tools | Generate GUID inside the IDE.)
8
9; These will change
10AppId={{1B3E68BC-13EB-4277-9439-CB5FF9259460}
11AppName=Imprudence Viewer Experimental Release
12AppVerName=Imprudence Viewer 1.4.0 Experimental 2011.03.20
13DefaultDirName={pf}\ImprudenceExperimental
14DefaultGroupName=Imprudence Viewer Experimental Release
15VersionInfoProductName=Imprudence Viewer Experimental Release
16OutputBaseFilename=Imprudence-1.4.0-Experimental-2011.03.20-Setup
17VersionInfoVersion=1.4.0
18VersionInfoTextVersion=1.4.0
19VersionInfoProductVersion=1.4.0
20VersionInfoCopyright=2011
21AppCopyright=2011
22
23; These won't change
24VersionInfoCompany=Imprudence
25AppPublisher=The Imprudence Project
26AppPublisherURL=http://kokuaviewer.org
27AppSupportURL=http://kokuaviewer.org
28AppUpdatesURL=http://kokuaviewer.org
29AllowNoIcons=true
30InfoAfterFile=..\windows\README.txt
31OutputDir=C:\imprudence_installers
32SetupIconFile=..\windows\imp_icon.ico
33Compression=lzma2/ultra64
34InternalCompressLevel=ultra64
35SolidCompression=true
36;PrivilegesRequired=poweruser
37AllowRootDirectory=true
38WizardImageFile=..\windows\imprudence_installer_icon_left.bmp
39WizardSmallImageFile=..\windows\imprudence_installer_icon_right.bmp
40SetupLogging=true
41
42[Languages]
43Name: english; MessagesFile: compiler:Default.isl
44
45[Tasks]
46Name: desktopicon; Description: {cm:CreateDesktopIcon}; GroupDescription: {cm:AdditionalIcons}; Flags: checkedonce
47Name: quicklaunchicon; Description: {cm:CreateQuickLaunchIcon}; GroupDescription: {cm:AdditionalIcons}; Flags: checkedonce
48Name: slurlassociate; Description: Associate Imprudence with SLURLs; GroupDescription: Associations:; Languages: ; Flags: checkedonce
49; TODO: use scripting for something like this on uninstall:
50; Name: uninstallsettings; Description: Remove user settings; Flags: checkablealone; Languages: ; GroupDescription: Uninstall:
51
52[Files]
53Source: ..\..\..\build-vc80\newview\release\package\imprudence.exe; DestDir: {app}; Flags: ignoreversion
54Source: ..\..\..\build-vc80\newview\release\package\character\*; DestDir: {app}\character; Flags: ignoreversion recursesubdirs createallsubdirs
55Source: ..\..\..\build-vc80\newview\release\package\fonts\*; DestDir: {app}\fonts; Flags: ignoreversion recursesubdirs createallsubdirs
56Source: ..\..\..\build-vc80\newview\release\package\app_settings\*; DestDir: {app}\app_settings; Flags: ignoreversion recursesubdirs createallsubdirs
57Source: ..\..\..\build-vc80\newview\release\package\skins\*; DestDir: {app}\skins; Flags: ignoreversion recursesubdirs createallsubdirs
58Source: ..\..\..\build-vc80\newview\release\package\doc\*; DestDir: {app}\doc; Flags: ignoreversion recursesubdirs createallsubdirs
59Source: ..\..\..\build-vc80\newview\release\package\llplugin\*; DestDir: {app}\llplugin; Flags: ignoreversion recursesubdirs createallsubdirs
60Source: ..\..\..\build-vc80\newview\release\package\alut.dll; DestDir: {app}; Flags: ignoreversion
61Source: ..\..\..\build-vc80\newview\release\package\ChangeLog.txt; DestDir: {app}; Flags: ignoreversion
62Source: ..\..\..\build-vc80\newview\release\package\dbghelp.dll; DestDir: {app}; Flags: ignoreversion
63Source: ..\..\..\build-vc80\newview\release\package\featuretable.txt; DestDir: {app}; Flags: ignoreversion
64Source: ..\..\..\build-vc80\newview\release\package\gpu_table.txt; DestDir: {app}; Flags: ignoreversion
65Source: ..\..\..\build-vc80\newview\release\package\imprudence.url; DestDir: {app}; Flags: ignoreversion
66Source: ..\..\..\build-vc80\newview\release\package\libapr-1.dll; DestDir: {app}; Flags: ignoreversion
67Source: ..\..\..\build-vc80\newview\release\package\libapriconv-1.dll; DestDir: {app}; Flags: ignoreversion
68Source: ..\..\..\build-vc80\newview\release\package\libaprutil-1.dll; DestDir: {app}; Flags: ignoreversion
69Source: ..\..\..\build-vc80\newview\release\package\libhunspell.dll; DestDir: {app}; Flags: ignoreversion
70Source: ..\..\..\build-vc80\newview\release\package\llcommon.dll; DestDir: {app}; Flags: ignoreversion
71Source: ..\..\..\build-vc80\newview\release\package\llkdu.dll.2.config; DestDir: {app}; Flags: ignoreversion
72Source: ..\..\..\build-vc80\newview\release\package\openal32.dll; DestDir: {app}; Flags: ignoreversion
73Source: ..\..\..\build-vc80\newview\release\package\OpenJPEG.dll; DestDir: {app}; Flags: ignoreversion
74Source: ..\..\..\build-vc80\newview\release\package\SLPlugin.exe; DestDir: {app}; Flags: ignoreversion
75
76; Gstreamer-specific files below
77Source: ..\..\..\build-vc80\newview\release\package\lib\*; DestDir: {app}\lib; Flags: ignoreversion recursesubdirs createallsubdirs
78Source: ..\..\..\build-vc80\newview\release\package\avcodec-gpl-52.dll; DestDir: {app}; Flags: ignoreversion
79Source: ..\..\..\build-vc80\newview\release\package\avdevice-gpl-52.dll; DestDir: {app}; Flags: ignoreversion
80Source: ..\..\..\build-vc80\newview\release\package\avfilter-gpl-1.dll; DestDir: {app}; Flags: ignoreversion
81Source: ..\..\..\build-vc80\newview\release\package\avformat-gpl-52.dll; DestDir: {app}; Flags: ignoreversion
82Source: ..\..\..\build-vc80\newview\release\package\avutil-gpl-50.dll; DestDir: {app}; Flags: ignoreversion
83Source: ..\..\..\build-vc80\newview\release\package\iconv.dll; DestDir: {app}; Flags: ignoreversion
84Source: ..\..\..\build-vc80\newview\release\package\liba52-0.dll; DestDir: {app}; Flags: ignoreversion
85Source: ..\..\..\build-vc80\newview\release\package\libbz2.dll; DestDir: {app}; Flags: ignoreversion
86Source: ..\..\..\build-vc80\newview\release\package\libcelt-0.dll; DestDir: {app}; Flags: ignoreversion
87Source: ..\..\..\build-vc80\newview\release\package\libdca-0.dll; DestDir: {app}; Flags: ignoreversion
88Source: ..\..\..\build-vc80\newview\release\package\libexpat-1.dll; DestDir: {app}; Flags: ignoreversion
89Source: ..\..\..\build-vc80\newview\release\package\libfaad-2.dll; DestDir: {app}; Flags: ignoreversion
90Source: ..\..\..\build-vc80\newview\release\package\libFLAC-8.dll; DestDir: {app}; Flags: ignoreversion
91Source: ..\..\..\build-vc80\newview\release\package\libgcrypt-11.dll; DestDir: {app}; Flags: ignoreversion
92Source: ..\..\..\build-vc80\newview\release\package\libgio-2.0-0.dll; DestDir: {app}; Flags: ignoreversion
93Source: ..\..\..\build-vc80\newview\release\package\libglib-2.0-0.dll; DestDir: {app}; Flags: ignoreversion
94Source: ..\..\..\build-vc80\newview\release\package\libgmodule-2.0-0.dll; DestDir: {app}; Flags: ignoreversion
95Source: ..\..\..\build-vc80\newview\release\package\libgnutls-26.dll; DestDir: {app}; Flags: ignoreversion
96Source: ..\..\..\build-vc80\newview\release\package\libgobject-2.0-0.dll; DestDir: {app}; Flags: ignoreversion
97Source: ..\..\..\build-vc80\newview\release\package\libgpg-error-0.dll; DestDir: {app}; Flags: ignoreversion
98Source: ..\..\..\build-vc80\newview\release\package\libgstapp-0.10.dll; DestDir: {app}; Flags: ignoreversion
99Source: ..\..\..\build-vc80\newview\release\package\libgstaudio-0.10.dll; DestDir: {app}; Flags: ignoreversion
100Source: ..\..\..\build-vc80\newview\release\package\libgstbase-0.10.dll; DestDir: {app}; Flags: ignoreversion
101Source: ..\..\..\build-vc80\newview\release\package\libgstcontroller-0.10.dll; DestDir: {app}; Flags: ignoreversion
102Source: ..\..\..\build-vc80\newview\release\package\libgstdataprotocol-0.10.dll; DestDir: {app}; Flags: ignoreversion
103Source: ..\..\..\build-vc80\newview\release\package\libgstfft-0.10.dll; DestDir: {app}; Flags: ignoreversion
104Source: ..\..\..\build-vc80\newview\release\package\libgstinterfaces-0.10.dll; DestDir: {app}; Flags: ignoreversion
105Source: ..\..\..\build-vc80\newview\release\package\libgstnet-0.10.dll; DestDir: {app}; Flags: ignoreversion
106Source: ..\..\..\build-vc80\newview\release\package\libgstnetbuffer-0.10.dll; DestDir: {app}; Flags: ignoreversion
107Source: ..\..\..\build-vc80\newview\release\package\libgstpbutils-0.10.dll; DestDir: {app}; Flags: ignoreversion
108Source: ..\..\..\build-vc80\newview\release\package\libgstphotography-0.10.dll; DestDir: {app}; Flags: ignoreversion
109Source: ..\..\..\build-vc80\newview\release\package\libgstreamer-0.10.dll; DestDir: {app}; Flags: ignoreversion
110Source: ..\..\..\build-vc80\newview\release\package\libgstriff-0.10.dll; DestDir: {app}; Flags: ignoreversion
111Source: ..\..\..\build-vc80\newview\release\package\libgstrtp-0.10.dll; DestDir: {app}; Flags: ignoreversion
112Source: ..\..\..\build-vc80\newview\release\package\libgstrtsp-0.10.dll; DestDir: {app}; Flags: ignoreversion
113Source: ..\..\..\build-vc80\newview\release\package\libgstsdp-0.10.dll; DestDir: {app}; Flags: ignoreversion
114Source: ..\..\..\build-vc80\newview\release\package\libgstsignalprocessor-0.10.dll; DestDir: {app}; Flags: ignoreversion
115Source: ..\..\..\build-vc80\newview\release\package\libgsttag-0.10.dll; DestDir: {app}; Flags: ignoreversion
116Source: ..\..\..\build-vc80\newview\release\package\libgstvideo-0.10.dll; DestDir: {app}; Flags: ignoreversion
117Source: ..\..\..\build-vc80\newview\release\package\libgthread-2.0-0.dll; DestDir: {app}; Flags: ignoreversion
118Source: ..\..\..\build-vc80\newview\release\package\libmms-0.dll; DestDir: {app}; Flags: ignoreversion
119Source: ..\..\..\build-vc80\newview\release\package\libmpeg2-0.dll; DestDir: {app}; Flags: ignoreversion
120Source: ..\..\..\build-vc80\newview\release\package\libneon-27.dll; DestDir: {app}; Flags: ignoreversion
121Source: ..\..\..\build-vc80\newview\release\package\libogg-0.dll; DestDir: {app}; Flags: ignoreversion
122Source: ..\..\..\build-vc80\newview\release\package\liboil-0.3-0.dll; DestDir: {app}; Flags: ignoreversion
123Source: ..\..\..\build-vc80\newview\release\package\libsoup-2.4-1.dll; DestDir: {app}; Flags: ignoreversion
124Source: ..\..\..\build-vc80\newview\release\package\libtasn1-3.dll; DestDir: {app}; Flags: ignoreversion
125Source: ..\..\..\build-vc80\newview\release\package\libtheora-0.dll; DestDir: {app}; Flags: ignoreversion
126Source: ..\..\..\build-vc80\newview\release\package\libtheoradec-1.dll; DestDir: {app}; Flags: ignoreversion
127Source: ..\..\..\build-vc80\newview\release\package\libvorbis-0.dll; DestDir: {app}; Flags: ignoreversion
128Source: ..\..\..\build-vc80\newview\release\package\libvorbisenc-2.dll; DestDir: {app}; Flags: ignoreversion
129Source: ..\..\..\build-vc80\newview\release\package\libvorbisfile-3.dll; DestDir: {app}; Flags: ignoreversion
130Source: ..\..\..\build-vc80\newview\release\package\libwavpack-1.dll; DestDir: {app}; Flags: ignoreversion
131Source: ..\..\..\build-vc80\newview\release\package\libx264-67.dll; DestDir: {app}; Flags: ignoreversion
132Source: ..\..\..\build-vc80\newview\release\package\libxml2-2.dll; DestDir: {app}; Flags: ignoreversion
133Source: ..\..\..\build-vc80\newview\release\package\libxml2.dll; DestDir: {app}; Flags: ignoreversion
134Source: ..\..\..\build-vc80\newview\release\package\SDL.dll; DestDir: {app}; Flags: ignoreversion
135Source: ..\..\..\build-vc80\newview\release\package\xvidcore.dll; DestDir: {app}; Flags: ignoreversion
136Source: ..\..\..\build-vc80\newview\release\package\z.dll; DestDir: {app}; Flags: ignoreversion
137
138; Voice files
139Source: ..\..\..\build-vc80\newview\release\package\ortp.dll; DestDir: {app}; Flags: ignoreversion
140Source: ..\..\..\build-vc80\newview\release\package\SLVoice.exe; DestDir: {app}; Flags: ignoreversion
141Source: ..\..\..\build-vc80\newview\release\package\vivoxsdk.dll; DestDir: {app}; Flags: ignoreversion
142Source: ..\..\..\build-vc80\newview\release\package\wrap_oal.dll; DestDir: {app}; Flags: ignoreversion
143
144; VC++ 2005 x86 redist
145Source: ..\windows\vcredist_x86_VS2005.exe; DestDir: {tmp}; DestName: vcredist_x86_2005.exe
146
147; Old files we don't use anymore:
148; Source: ..\..\..\build-vc80\newview\release\package\dronesettings.xml; DestDir: {app}; Flags: ignoreversion
149; Source: ..\..\..\build-vc80\newview\release\package\volume_settings.xml; DestDir: {app}; Flags: ignoreversion
150; Source: ..\..\..\build-vc80\newview\release\package\srtp.dll; DestDir: {app}; Flags: ignoreversion
151; Source: ..\..\..\build-vc80\newview\release\package\ssleay32.dll; DestDir: {app}; Flags: ignoreversion
152; Source: ..\..\..\build-vc80\newview\release\package\tntk.dll; DestDir: {app}; Flags: ignoreversion
153; Source: ..\..\..\build-vc80\newview\release\package\libeay32.dll; DestDir: {app}; Flags: ignoreversion
154; Source: ..\..\..\build-vc80\newview\release\package\lsl_guide.html; DestDir: {app}; Flags: ignoreversion
155
156; NOTE: Don't use "Flags: ignoreversion" on any shared system files
157;Source: ..\..\..\build-vc80\newview\release\package\msvcr71.dll; DestDir: {app}; Flags: ignoreversion; MinVersion: 0,6.01; Tasks: ; Languages:
158
159[Icons]
160Name: {group}\{cm:UninstallProgram,Imprudence Experimental}; Filename: {uninstallexe}
161Name: {commondesktop}\Imprudence Experimental; Filename: {app}\imprudence.exe; Tasks: desktopicon; WorkingDir: {app}; IconIndex: 0
162Name: {userappdata}\Microsoft\Internet Explorer\Quick Launch\Imprudence Experimental; Filename: {app}\imprudence.exe; Tasks: quicklaunchicon; WorkingDir: {app}
163Name: {group}\Imprudence Experimental; Filename: {app}\imprudence.exe; WorkingDir: {app}; Comment: imprudence; IconIndex: 0
164
165[Run]
166Filename: {app}\imprudence.exe; WorkingDir: {app}; Flags: nowait postinstall
167Filename: {app}\imprudence.url; WorkingDir: {app}; Flags: nowait postinstall shellexec; Description: See what makes Imprudence different
168Filename: {tmp}\vcredist_x86_2005.exe; Parameters: "/q:a /c:""VCREDI~1.EXE /q:a /c:""""msiexec /i vcredist.msi /qn"""" """; Flags: runhidden
169
170[UninstallDelete]
171Name: {userappdata}\Imprudence\user_settings\password.dat; Type: files; Languages:
172Name: {userappdata}\Imprudence\user_settings\settings.xml; Type: files; Languages:
173Name: {userappdata}\Imprudence\user_settings\settings_imprudence_experimental.xml; Type: files; Languages:
174; 1.2 and lower cache location:
175Name: {userappdata}\Imprudence\cache; Type: filesandordirs
176; 1.3 and higher cache location:
177Name: {localappdata}\Imprudence\cache; Type: filesandordirs
178Name: {userappdata}\Imprudence\logs; Type: filesandordirs
179Name: {userappdata}\Imprudence\browser_profile; Type: filesandordirs
180Name: C:\Users\{username}\.gstreamer-0.10; Type: filesandordirs
181Name: C:\Documents and Settings\{username}\.gstreamer-0.10; Type: filesandordirs
182
183[InstallDelete]
184; Name: {app}\*.dll; Type: files; Tasks: ; Languages:
185Name: {app}\lib\gstreamer-plugins\*; Type: filesandordirs; Tasks: ; Languages:
186; Name: {app}\skins\default\xui\*; Type: filesandordirs; Tasks: ; Languages:
187; Name: {app}\skins\silver\xui\*; Type: filesandordirs; Tasks: ; Languages:
188Name: C:\Documents and Settings\{username}\.gstreamer-0.10\*; Type: filesandordirs
189Name: C:\Users\{username}\.gstreamer-0.10\*; Type: filesandordirs
190; Breaks the browser if installing on top of 1.1:
191Name: {app}\gksvggdiplus.dll; Type: files; Tasks: ; Languages:
192
193; Pre-plugin files:
194Name: {app}\charset.dll; Type: files; Tasks: ; Languages:
195Name: {app}\freebl3.dll; Type: files; Tasks: ; Languages:
196Name: {app}\glew32.dll; Type: files; Tasks: ; Languages:
197Name: {app}\iconv.dll; Type: files; Tasks: ; Languages:
198Name: {app}\intl.dll; Type: files; Tasks: ; Languages:
199Name: {app}\js3250.dll; Type: files; Tasks: ; Languages:
200Name: {app}\libcairo-2.dll; Type: files; Tasks: ; Languages:
201Name: {app}\libfaad-2.dll; Type: files; Tasks: ; Languages:
202Name: {app}\libgcrypt-11.dll; Type: files; Tasks: ; Languages:
203Name: {app}\libgio-2.0-0.dll; Type: files; Tasks: ; Languages:
204Name: {app}\libglib-2.0-0.dll; Type: files; Tasks: ; Languages:
205Name: {app}\libgmodule-2.0-0.dll; Type: files; Tasks: ; Languages:
206Name: {app}\libgnutls-26.dll; Type: files; Tasks: ; Languages:
207Name: {app}\libgobject-2.0-0.dll; Type: files; Tasks: ; Languages:
208Name: {app}\libgpg-error-0.dll; Type: files; Tasks: ; Languages:
209Name: {app}\libgstapp.dll; Type: files; Tasks: ; Languages:
210Name: {app}\libgstaudio.dll; Type: files; Tasks: ; Languages:
211Name: {app}\libgstaudio-0.10.dll; Type: files; Tasks: ; Languages:
212Name: {app}\libgstbase-0.10.dll; Type: files; Tasks: ; Languages:
213Name: {app}\libgstcdda.dll; Type: files; Tasks: ; Languages:
214Name: {app}\libgstcontroller-0.10.dll; Type: files; Tasks: ; Languages:
215Name: {app}\libgstdataprotocol-0.10.dll; Type: files; Tasks: ; Languages:
216Name: {app}\libgstdshow.dll; Type: files; Tasks: ; Languages:
217Name: {app}\libgstfft.dll; Type: files; Tasks: ; Languages:
218Name: {app}\libgstinterfaces.dll; Type: files; Tasks: ; Languages:
219Name: {app}\libgstnet-0.10.dll; Type: files; Tasks: ; Languages:
220Name: {app}\libgstnetbuffer.dll; Type: files; Tasks: ; Languages:
221Name: {app}\libgstpbutils.dll; Type: files; Tasks: ; Languages:
222Name: {app}\libgstreamer-0.10.dll; Type: files; Tasks: ; Languages:
223Name: {app}\libgstriff.dll; Type: files; Tasks: ; Languages:
224Name: {app}\libgstrtp.dll; Type: files; Tasks: ; Languages:
225Name: {app}\libgstrtsp.dll; Type: files; Tasks: ; Languages:
226Name: {app}\libgstsdp.dll; Type: files; Tasks: ; Languages:
227Name: {app}\libgsttag.dll; Type: files; Tasks: ; Languages:
228Name: {app}\libgstvideo.dll; Type: files; Tasks: ; Languages:
229Name: {app}\libgthread-2.0-0.dll; Type: files; Tasks: ; Languages:
230Name: {app}\libjpeg.dll; Type: files; Tasks: ; Languages:
231Name: {app}\libmp3lame-0.dll; Type: files; Tasks: ; Languages:
232Name: {app}\libneon-27.dll; Type: files; Tasks: ; Languages:
233Name: {app}\libogg-0.dll; Type: files; Tasks: ; Languages:
234Name: {app}\liboil-0.3-0.dll; Type: files; Tasks: ; Languages:
235Name: {app}\libopenjpeg-2.dll; Type: files; Tasks: ; Languages:
236Name: {app}\libpng12-0.dll; Type: files; Tasks: ; Languages:
237Name: {app}\libschroedinger-1.0-0.dll; Type: files; Tasks: ; Languages:
238Name: {app}\libspeex-1.dll; Type: files; Tasks: ; Languages:
239Name: {app}\libtheora-0.dll; Type: files; Tasks: ; Languages:
240Name: {app}\libvorbis-0.dll; Type: files; Tasks: ; Languages:
241Name: {app}\libvorbisenc-2.dll; Type: files; Tasks: ; Languages:
242Name: {app}\libxml2-2.dll; Type: files; Tasks: ; Languages:
243Name: {app}\libxml2.dll; Type: files; Tasks: ; Languages:
244Name: {app}\nspr4.dll; Type: files; Tasks: ; Languages:
245Name: {app}\nss3.dll; Type: files; Tasks: ; Languages:
246Name: {app}\nssckbi.dll; Type: files; Tasks: ; Languages:
247Name: {app}\plc4.dll; Type: files; Tasks: ; Languages:
248Name: {app}\plds4.dll; Type: files; Tasks: ; Languages:
249Name: {app}\RELEASE_NOTES.txt; Type: files; Tasks: ; Languages:
250Name: {app}\smime3.dll; Type: files; Tasks: ; Languages:
251Name: {app}\softokn3.dll; Type: files; Tasks: ; Languages:
252Name: {app}\ssl3.dll; Type: files; Tasks: ; Languages:
253Name: {app}\xpcom.dll; Type: files; Tasks: ; Languages:
254Name: {app}\xul.dll; Type: files; Tasks: ; Languages:
255Name: {app}\xvidcore.dll; Type: files; Tasks: ; Languages:
256Name: {app}\zlib1.dll; Type: files; Tasks: ; Languages:
257
258; We don't distribute the CRT like this anymore; kill old files
259Name: {app}\SLPlugin.exe.config; Type: files; Tasks: ; Languages:
260Name: {app}\Microsoft.VC80.CRT.manifest; Type: files; Tasks: ; Languages:
261Name: {app}\msvcp80.dll; Type: files; Tasks: ; Languages:
262Name: {app}\msvcr80.dll; Type: files; Tasks: ; Languages:
263Name: {app}\imprudence.exe.config; Type: files; Tasks: ; Languages:
diff --git a/linden/indra/newview/llconsole.cpp b/linden/indra/newview/llconsole.cpp
index 4b3bac3..e2f620a 100644
--- a/linden/indra/newview/llconsole.cpp
+++ b/linden/indra/newview/llconsole.cpp
@@ -117,7 +117,7 @@ void LLConsole::setFontSize(S32 size_index)
117 } 117 }
118 else if (1 == size_index) 118 else if (1 == size_index)
119 { 119 {
120 mFont = LLFontGL::getFontSansSerifBig(); 120 mFont = LLFontGL::getFontSansSerifLarge();
121 } 121 }
122 else 122 else
123 { 123 {
diff --git a/linden/indra/newview/llfloaterpreference.cpp b/linden/indra/newview/llfloaterpreference.cpp
index 46e6104..40f18e8 100644
--- a/linden/indra/newview/llfloaterpreference.cpp
+++ b/linden/indra/newview/llfloaterpreference.cpp
@@ -369,6 +369,7 @@ void LLPreferenceCore::setPersonalInfo(const std::string& visibility, bool im_vi
369void LLPreferenceCore::updateIsLoggedIn(bool enable) 369void LLPreferenceCore::updateIsLoggedIn(bool enable)
370{ 370{
371 mPrefsIM->preparePerAccountPrefs(enable); 371 mPrefsIM->preparePerAccountPrefs(enable);
372 mAudioPanel->updateIsLoggedIn(enable);
372} 373}
373 374
374void LLPreferenceCore::refreshEnabledGraphics() 375void LLPreferenceCore::refreshEnabledGraphics()
@@ -465,6 +466,25 @@ void LLFloaterPreference::show(void*)
465} 466}
466 467
467 468
469// static
470void LLFloaterPreference::onClickResetPrefs(void* user_data)
471{
472 LLFloaterPreference* self = (LLFloaterPreference*)user_data;
473 LLNotifications::instance().add("ConfirmResetAllPreferences", LLSD(), LLSD(), boost::bind(callbackReset, _1, _2, self));
474}
475
476// static
477bool LLFloaterPreference::callbackReset(const LLSD& notification, const LLSD& response, LLFloaterPreference *self)
478{
479 S32 option = LLNotification::getSelectedOption(notification, response);
480 if ( option == 0 )
481 {
482 gSavedSettings.setBOOL("ResetAllPreferences", TRUE);
483 }
484 return false;
485}
486
487
468// static 488// static
469void LLFloaterPreference::onBtnOK( void* userdata ) 489void LLFloaterPreference::onBtnOK( void* userdata )
470{ 490{
diff --git a/linden/indra/newview/llfloaterpreference.h b/linden/indra/newview/llfloaterpreference.h
index 931c8b6..d5eccbc 100644
--- a/linden/indra/newview/llfloaterpreference.h
+++ b/linden/indra/newview/llfloaterpreference.h
@@ -133,6 +133,9 @@ protected:
133 static void onBtnCancel(void*); 133 static void onBtnCancel(void*);
134 static void onBtnApply(void*); 134 static void onBtnApply(void*);
135 135
136 static void onClickResetPrefs(void* user_data);
137 static bool callbackReset(const LLSD& notification, const LLSD& response, LLFloaterPreference* self);
138
136 static LLFloaterPreference* sInstance; 139 static LLFloaterPreference* sInstance;
137}; 140};
138 141
diff --git a/linden/indra/newview/llfloatertest.cpp b/linden/indra/newview/llfloatertest.cpp
index e9aada3..1934dcc 100644
--- a/linden/indra/newview/llfloatertest.cpp
+++ b/linden/indra/newview/llfloatertest.cpp
@@ -228,7 +228,9 @@ LLFloaterTestImpl::LLFloaterTestImpl()
228 combo = new LLComboBox(std::string("combo"), 228 combo = new LLComboBox(std::string("combo"),
229 LLRect(LEFT, y, LEFT+100, y-LLCOMBOBOX_HEIGHT), 229 LLRect(LEFT, y, LEFT+100, y-LLCOMBOBOX_HEIGHT),
230 std::string("Combobox Label"), 230 std::string("Combobox Label"),
231 onCommitCombo, this); 231 NULL,
232 onCommitCombo,
233 this);
232 combo->add(std::string("first item")); 234 combo->add(std::string("first item"));
233 combo->add(std::string("second item")); 235 combo->add(std::string("second item"));
234 combo->add(std::string("should go to the top"), ADD_TOP); 236 combo->add(std::string("should go to the top"), ADD_TOP);
diff --git a/linden/indra/newview/llgroupnotify.cpp b/linden/indra/newview/llgroupnotify.cpp
index 8e98cbc..81e6c21 100644
--- a/linden/indra/newview/llgroupnotify.cpp
+++ b/linden/indra/newview/llgroupnotify.cpp
@@ -186,7 +186,7 @@ LLGroupNotifyBox::LLGroupNotifyBox(const std::string& subject,
186 LLFontGL::getFontSansSerif(), 186 LLFontGL::getFontSansSerif(),
187 FALSE); 187 FALSE);
188 188
189 static const LLStyleSP headerstyle(new LLStyle(true,LLColor4::black,"SansSerifBig")); 189 static const LLStyleSP headerstyle(new LLStyle(true,LLColor4::black,"SansSerifLarge"));
190 static const LLStyleSP datestyle(new LLStyle(true,LLColor4::black,"serif")); 190 static const LLStyleSP datestyle(new LLStyle(true,LLColor4::black,"serif"));
191 191
192 text->appendStyledText(subject + "\n",false,false,headerstyle); 192 text->appendStyledText(subject + "\n",false,false,headerstyle);
diff --git a/linden/indra/newview/llloginhandler.cpp b/linden/indra/newview/llloginhandler.cpp
index 30b05ef..c35ba04 100644
--- a/linden/indra/newview/llloginhandler.cpp
+++ b/linden/indra/newview/llloginhandler.cpp
@@ -35,6 +35,7 @@
35#include "llloginhandler.h" 35#include "llloginhandler.h"
36 36
37// viewer includes 37// viewer includes
38#include "hippogridmanager.h"
38#include "llpanellogin.h" // save_password_to_disk() 39#include "llpanellogin.h" // save_password_to_disk()
39#include "llstartup.h" // getStartupState() 40#include "llstartup.h" // getStartupState()
40#include "llurlsimstring.h" 41#include "llurlsimstring.h"
@@ -141,10 +142,27 @@ bool LLLoginHandler::handle(const LLSD& tokens,
141 142
142 if (LLStartUp::getStartupState() < STATE_LOGIN_CLEANUP) //on splash page 143 if (LLStartUp::getStartupState() < STATE_LOGIN_CLEANUP) //on splash page
143 { 144 {
145 // if we ever support saving names based on grid, we'll have to support saving usernames too -- MC
146 LLPanelLogin::loadLoginForm();
147
144 if (!mFirstName.empty() || !mLastName.empty()) 148 if (!mFirstName.empty() || !mLastName.empty())
145 { 149 {
146 // Fill in the name, and maybe the password 150 // Fill in the name, and maybe the password
147 LLPanelLogin::setFields(mFirstName, mLastName, password); 151 if (gHippoGridManager && gHippoGridManager->getCurrentGrid()->isUsernameCompat())
152 {
153 if (mLastName == "resident" || mLastName == "Resident")
154 {
155 LLPanelLogin::setFields(mFirstName, password);
156 }
157 else
158 {
159 LLPanelLogin::setFields(mFirstName+"."+ mLastName, password);
160 }
161 }
162 else
163 {
164 LLPanelLogin::setFields(mFirstName, mLastName, password);
165 }
148 } 166 }
149 167
150 if (mWebLoginKey.isNull()) 168 if (mWebLoginKey.isNull())
diff --git a/linden/indra/newview/llmediaremotectrl.cpp b/linden/indra/newview/llmediaremotectrl.cpp
index 8186293..2f6dbdf 100644
--- a/linden/indra/newview/llmediaremotectrl.cpp
+++ b/linden/indra/newview/llmediaremotectrl.cpp
@@ -172,7 +172,7 @@ void LLMediaRemoteCtrl::enableMediaButtons()
172 { 172 {
173 // Set the tooltip 173 // Set the tooltip
174 // Put this text into xui file 174 // Put this text into xui file
175 media_url = parcel->getObscureMedia() ? mControls->getString("media_hidden_label") : parcel->getMediaURL(); 175 media_url = parcel->getMediaURL();
176 media_type = parcel->getMediaType(); 176 media_type = parcel->getMediaType();
177 177
178 play_media_enabled = true; 178 play_media_enabled = true;
diff --git a/linden/indra/newview/llnamelistctrl.cpp b/linden/indra/newview/llnamelistctrl.cpp
index e30c129..935e6ac 100644
--- a/linden/indra/newview/llnamelistctrl.cpp
+++ b/linden/indra/newview/llnamelistctrl.cpp
@@ -54,7 +54,7 @@ LLNameListCtrl::LLNameListCtrl(const std::string& name,
54 BOOL draw_border, 54 BOOL draw_border,
55 S32 name_column_index, 55 S32 name_column_index,
56 const std::string& tooltip) 56 const std::string& tooltip)
57: LLScrollListCtrl(name, rect, cb, userdata, allow_multiple_selection, 57: LLScrollListCtrl(name, rect, NULL, cb, userdata, allow_multiple_selection,
58 draw_border), 58 draw_border),
59 mNameColumnIndex(name_column_index), 59 mNameColumnIndex(name_column_index),
60 mAllowCallingCardDrop(FALSE), 60 mAllowCallingCardDrop(FALSE),
diff --git a/linden/indra/newview/llpanelaudioprefs.cpp b/linden/indra/newview/llpanelaudioprefs.cpp
index 426f85e..e1ffe0d 100644
--- a/linden/indra/newview/llpanelaudioprefs.cpp
+++ b/linden/indra/newview/llpanelaudioprefs.cpp
@@ -55,12 +55,14 @@
55#include "llslider.h" 55#include "llslider.h"
56#include "llsliderctrl.h" 56#include "llsliderctrl.h"
57#include "llspinctrl.h" 57#include "llspinctrl.h"
58#include "llstartup.h"
58#include "lltextbox.h" 59#include "lltextbox.h"
59#include "llui.h" 60#include "llui.h"
60#include "llviewerparcelmgr.h" 61#include "llviewerparcelmgr.h"
61#include "lluictrlfactory.h" 62#include "lluictrlfactory.h"
62#include "llviewerwindow.h" 63#include "llviewerwindow.h"
63#include "llviewercontrol.h" 64#include "llviewercontrol.h"
65#include "slfloatermediafilter.h"
64 66
65#include "hippogridmanager.h" 67#include "hippogridmanager.h"
66 68
@@ -92,6 +94,8 @@ BOOL LLPanelAudioPrefs::postBuild()
92 refreshValues(); // initialize member data from saved settings 94 refreshValues(); // initialize member data from saved settings
93 childSetLabelArg("L$ Change Threshold", "[CURRENCY]", gHippoGridManager->getConnectedGrid()->getCurrencySymbol()); 95 childSetLabelArg("L$ Change Threshold", "[CURRENCY]", gHippoGridManager->getConnectedGrid()->getCurrencySymbol());
94 childSetValue("mute_wind_check", !gSavedSettings.getBOOL("MuteWind")); 96 childSetValue("mute_wind_check", !gSavedSettings.getBOOL("MuteWind"));
97 childSetAction("show_media_filter", onShowMediaFilter, this);
98 updateIsLoggedIn(LLStartUp::isLoggedIn());
95 99
96 return TRUE; 100 return TRUE;
97} 101}
@@ -112,7 +116,8 @@ void LLPanelAudioPrefs::refreshValues()
112 116
113 mPreviousStreamingMusic = gSavedSettings.getBOOL("AudioStreamingMusic"); 117 mPreviousStreamingMusic = gSavedSettings.getBOOL("AudioStreamingMusic");
114 mPreviousStreamingVideo = gSavedSettings.getBOOL("AudioStreamingVideo"); 118 mPreviousStreamingVideo = gSavedSettings.getBOOL("AudioStreamingVideo");
115 119 mPreviousHelperWidget = gSavedSettings.getBOOL("MediaOnAPrimUI");
120 mPreviousEnableMediaFilter = gSavedSettings.getBOOL("MediaEnableFilter");
116 mPreviousMuteAudio = gSavedSettings.getBOOL("MuteAudio"); 121 mPreviousMuteAudio = gSavedSettings.getBOOL("MuteAudio");
117 mPreviousMuteWhenMinimized = gSavedSettings.getBOOL("MuteWhenMinimized"); 122 mPreviousMuteWhenMinimized = gSavedSettings.getBOOL("MuteWhenMinimized");
118} 123}
@@ -140,8 +145,19 @@ void LLPanelAudioPrefs::cancel()
140 145
141 gSavedSettings.setBOOL("AudioStreamingMusic", mPreviousStreamingMusic ); 146 gSavedSettings.setBOOL("AudioStreamingMusic", mPreviousStreamingMusic );
142 gSavedSettings.setBOOL("AudioStreamingVideo", mPreviousStreamingVideo ); 147 gSavedSettings.setBOOL("AudioStreamingVideo", mPreviousStreamingVideo );
143 148 gSavedSettings.setBOOL("MediaOnAPrimUI", mPreviousHelperWidget );
144 149 gSavedSettings.setBOOL("MediaEnableFilter", mPreviousEnableMediaFilter );
145 gSavedSettings.setBOOL("MuteAudio", mPreviousMuteAudio ); 150 gSavedSettings.setBOOL("MuteAudio", mPreviousMuteAudio );
146 gSavedSettings.setBOOL("MuteWhenMinimized", mPreviousMuteWhenMinimized ); 151 gSavedSettings.setBOOL("MuteWhenMinimized", mPreviousMuteWhenMinimized );
147} 152}
153
154//static
155void LLPanelAudioPrefs::onShowMediaFilter(void* data)
156{
157 SLFloaterMediaFilter::toggleInstance();
158}
159
160void LLPanelAudioPrefs::updateIsLoggedIn(const bool enable)
161{
162 childSetEnabled("show_media_filter", enable);
163}
diff --git a/linden/indra/newview/llpanelaudioprefs.h b/linden/indra/newview/llpanelaudioprefs.h
index 21d2f59..a47a83e 100644
--- a/linden/indra/newview/llpanelaudioprefs.h
+++ b/linden/indra/newview/llpanelaudioprefs.h
@@ -54,6 +54,9 @@ public:
54 virtual BOOL postBuild(); 54 virtual BOOL postBuild();
55 55
56 static void* createVolumePanel(void* data); 56 static void* createVolumePanel(void* data);
57 static void onShowMediaFilter(void* data);
58
59 void updateIsLoggedIn(const bool);
57 60
58private: 61private:
59 void refreshValues(); 62 void refreshValues();
@@ -75,6 +78,8 @@ private:
75 78
76 BOOL mPreviousStreamingMusic; 79 BOOL mPreviousStreamingMusic;
77 BOOL mPreviousStreamingVideo; 80 BOOL mPreviousStreamingVideo;
81 BOOL mPreviousHelperWidget;
82 BOOL mPreviousEnableMediaFilter;
78 BOOL mPreviousMuteAudio; 83 BOOL mPreviousMuteAudio;
79 BOOL mPreviousMuteWhenMinimized; 84 BOOL mPreviousMuteWhenMinimized;
80}; 85};
diff --git a/linden/indra/newview/llpanellandaudio.cpp b/linden/indra/newview/llpanellandaudio.cpp
index 0247009..8d902b6 100644
--- a/linden/indra/newview/llpanellandaudio.cpp
+++ b/linden/indra/newview/llpanellandaudio.cpp
@@ -91,9 +91,6 @@ BOOL LLPanelLandAudio::postBuild()
91 mMusicURLEdit = getChild<LLLineEditor>("music_url"); 91 mMusicURLEdit = getChild<LLLineEditor>("music_url");
92 childSetCommitCallback("music_url", onCommitAny, this); 92 childSetCommitCallback("music_url", onCommitAny, this);
93 93
94 mMusicUrlCheck = getChild<LLCheckBoxCtrl>("hide_music_url");
95 childSetCommitCallback("hide_music_url", onCommitAny, this);
96
97 return TRUE; 94 return TRUE;
98} 95}
99 96
@@ -117,9 +114,6 @@ void LLPanelLandAudio::refresh()
117 mMusicURLEdit->setText(parcel->getMusicURL()); 114 mMusicURLEdit->setText(parcel->getMusicURL());
118 mMusicURLEdit->setEnabled( can_change_media ); 115 mMusicURLEdit->setEnabled( can_change_media );
119 116
120 mMusicUrlCheck->set( parcel->getObscureMusic() );
121 mMusicUrlCheck->setEnabled( can_change_media );
122
123 mCheckSoundLocal->set( parcel->getSoundLocal() ); 117 mCheckSoundLocal->set( parcel->getSoundLocal() );
124 mCheckSoundLocal->setEnabled( can_change_media ); 118 mCheckSoundLocal->setEnabled( can_change_media );
125 119
@@ -154,7 +148,6 @@ void LLPanelLandAudio::onCommitAny(LLUICtrl*, void *userdata)
154 BOOL sound_local = self->mCheckSoundLocal->get(); 148 BOOL sound_local = self->mCheckSoundLocal->get();
155 int voice_setting = self->mRadioVoiceChat->getSelectedIndex(); 149 int voice_setting = self->mRadioVoiceChat->getSelectedIndex();
156 std::string music_url = self->mMusicURLEdit->getText(); 150 std::string music_url = self->mMusicURLEdit->getText();
157 U8 obscure_music = self->mMusicUrlCheck->get();
158 151
159 152
160 BOOL voice_enabled; 153 BOOL voice_enabled;
@@ -185,7 +178,6 @@ void LLPanelLandAudio::onCommitAny(LLUICtrl*, void *userdata)
185 parcel->setParcelFlag(PF_USE_ESTATE_VOICE_CHAN, voice_estate_chan); 178 parcel->setParcelFlag(PF_USE_ESTATE_VOICE_CHAN, voice_estate_chan);
186 parcel->setParcelFlag(PF_SOUND_LOCAL, sound_local); 179 parcel->setParcelFlag(PF_SOUND_LOCAL, sound_local);
187 parcel->setMusicURL(music_url); 180 parcel->setMusicURL(music_url);
188 parcel->setObscureMusic(obscure_music);
189 181
190 // Send current parcel data upstream to server 182 // Send current parcel data upstream to server
191 LLViewerParcelMgr::getInstance()->sendParcelPropertiesUpdate( parcel ); 183 LLViewerParcelMgr::getInstance()->sendParcelPropertiesUpdate( parcel );
diff --git a/linden/indra/newview/llpanellandaudio.h b/linden/indra/newview/llpanellandaudio.h
index 3d5d633..82e27f6 100644
--- a/linden/indra/newview/llpanellandaudio.h
+++ b/linden/indra/newview/llpanellandaudio.h
@@ -55,7 +55,6 @@ private:
55 LLCheckBoxCtrl* mCheckSoundLocal; 55 LLCheckBoxCtrl* mCheckSoundLocal;
56 LLRadioGroup* mRadioVoiceChat; 56 LLRadioGroup* mRadioVoiceChat;
57 LLLineEditor* mMusicURLEdit; 57 LLLineEditor* mMusicURLEdit;
58 LLCheckBoxCtrl* mMusicUrlCheck;
59 58
60 LLSafeHandle<LLParcelSelection>& mParcel; 59 LLSafeHandle<LLParcelSelection>& mParcel;
61}; 60};
diff --git a/linden/indra/newview/llpanellandmedia.cpp b/linden/indra/newview/llpanellandmedia.cpp
index b7df164..8a0be86 100644
--- a/linden/indra/newview/llpanellandmedia.cpp
+++ b/linden/indra/newview/llpanellandmedia.cpp
@@ -80,9 +80,7 @@ LLPanelLandMedia::LLPanelLandMedia(LLParcelSelectionHandle& parcel)
80 mMediaSizeCtrlLabel(NULL), 80 mMediaSizeCtrlLabel(NULL),
81 mMediaTextureCtrl(NULL), 81 mMediaTextureCtrl(NULL),
82 mMediaAutoScaleCheck(NULL), 82 mMediaAutoScaleCheck(NULL),
83 mMediaLoopCheck(NULL), 83 mMediaLoopCheck(NULL)
84 mMediaUrlCheck(NULL),
85 mMusicUrlCheck(NULL)
86{ 84{
87} 85}
88 86
@@ -132,12 +130,6 @@ BOOL LLPanelLandMedia::postBuild()
132 mMediaLoopCheck = getChild<LLCheckBoxCtrl>("media_loop"); 130 mMediaLoopCheck = getChild<LLCheckBoxCtrl>("media_loop");
133 childSetCommitCallback("media_loop", onCommitAny, this); 131 childSetCommitCallback("media_loop", onCommitAny, this);
134 132
135 mMediaUrlCheck = getChild<LLCheckBoxCtrl>("hide_media_url");
136 childSetCommitCallback("hide_media_url", onCommitAny, this);
137
138 mMusicUrlCheck = getChild<LLCheckBoxCtrl>("hide_music_url");
139 childSetCommitCallback("hide_music_url", onCommitAny, this);
140
141 mMediaURLEdit = getChild<LLLineEditor>("media_url"); 133 mMediaURLEdit = getChild<LLLineEditor>("media_url");
142 childSetCommitCallback("media_url", onCommitAny, this); 134 childSetCommitCallback("media_url", onCommitAny, this);
143 135
@@ -243,30 +235,6 @@ void LLPanelLandMedia::refresh()
243 mMediaTypeCombo->setEnabled( can_change_media ); 235 mMediaTypeCombo->setEnabled( can_change_media );
244 childSetText("mime_type", mime_type); 236 childSetText("mime_type", mime_type);
245 237
246 mMediaUrlCheck->set( parcel->getObscureMedia() );
247 mMediaUrlCheck->setEnabled( can_change_media );
248
249 mMusicUrlCheck->set( parcel->getObscureMusic() );
250 mMusicUrlCheck->setEnabled( can_change_media );
251
252 // don't display urls if you're not able to change it
253 // much requested change in forums so people can't 'steal' urls
254 // NOTE: bug#2009 means this is still vunerable - however, bug
255 // should be closed since this bug opens up major security issues elsewhere.
256 bool obscure_media = ! can_change_media && parcel->getObscureMedia();
257 bool obscure_music = ! can_change_media && parcel->getObscureMusic();
258
259 // Special code to disable asterixes for html type
260 if(mime_type == "text/html")
261 {
262 obscure_media = false;
263 mMediaUrlCheck->set( 0 );
264 mMediaUrlCheck->setEnabled( false );
265 }
266
267 mMusicURLEdit->setDrawAsterixes( obscure_music );
268 mMediaURLEdit->setDrawAsterixes( obscure_media );
269
270 mMediaAutoScaleCheck->set( parcel->getMediaAutoScale () ); 238 mMediaAutoScaleCheck->set( parcel->getMediaAutoScale () );
271 mMediaAutoScaleCheck->setEnabled ( can_change_media ); 239 mMediaAutoScaleCheck->setEnabled ( can_change_media );
272 240
@@ -413,8 +381,6 @@ void LLPanelLandMedia::onCommitAny(LLUICtrl*, void *userdata)
413 std::string mime_type = self->childGetText("mime_type"); 381 std::string mime_type = self->childGetText("mime_type");
414 U8 media_auto_scale = self->mMediaAutoScaleCheck->get(); 382 U8 media_auto_scale = self->mMediaAutoScaleCheck->get();
415 U8 media_loop = self->mMediaLoopCheck->get(); 383 U8 media_loop = self->mMediaLoopCheck->get();
416 U8 obscure_media = self->mMediaUrlCheck->get();
417 U8 obscure_music = self->mMusicUrlCheck->get();
418 S32 media_width = (S32)self->mMediaWidthCtrl->get(); 384 S32 media_width = (S32)self->mMediaWidthCtrl->get();
419 S32 media_height = (S32)self->mMediaHeightCtrl->get(); 385 S32 media_height = (S32)self->mMediaHeightCtrl->get();
420 LLUUID media_id = self->mMediaTextureCtrl->getImageAssetID(); 386 LLUUID media_id = self->mMediaTextureCtrl->getImageAssetID();
@@ -441,8 +407,6 @@ void LLPanelLandMedia::onCommitAny(LLUICtrl*, void *userdata)
441 parcel->setMediaID(media_id); 407 parcel->setMediaID(media_id);
442 parcel->setMediaAutoScale ( media_auto_scale ); 408 parcel->setMediaAutoScale ( media_auto_scale );
443 parcel->setMediaLoop ( media_loop ); 409 parcel->setMediaLoop ( media_loop );
444 parcel->setObscureMedia( obscure_media );
445 parcel->setObscureMusic( obscure_music );
446 410
447 // Send current parcel data upstream to server 411 // Send current parcel data upstream to server
448 LLViewerParcelMgr::getInstance()->sendParcelPropertiesUpdate( parcel ); 412 LLViewerParcelMgr::getInstance()->sendParcelPropertiesUpdate( parcel );
diff --git a/linden/indra/newview/llpanellogin.cpp b/linden/indra/newview/llpanellogin.cpp
index d00ccd9..cb61647 100644
--- a/linden/indra/newview/llpanellogin.cpp
+++ b/linden/indra/newview/llpanellogin.cpp
@@ -81,6 +81,8 @@
81 81
82#include "llglheaders.h" 82#include "llglheaders.h"
83 83
84#include <boost/algorithm/string.hpp>
85
84// [RLVa:KB] 86// [RLVa:KB]
85#include "rlvhandler.h" 87#include "rlvhandler.h"
86// [/RLVa:KB] 88// [/RLVa:KB]
@@ -208,6 +210,7 @@ LLPanelLogin::LLPanelLogin(const LLRect &rect,
208#if !USE_VIEWER_AUTH 210#if !USE_VIEWER_AUTH
209 childSetPrevalidate("first_name_edit", LLLineEditor::prevalidatePrintableNoSpace); 211 childSetPrevalidate("first_name_edit", LLLineEditor::prevalidatePrintableNoSpace);
210 childSetPrevalidate("last_name_edit", LLLineEditor::prevalidatePrintableNoSpace); 212 childSetPrevalidate("last_name_edit", LLLineEditor::prevalidatePrintableNoSpace);
213 childSetPrevalidate("username_edit", LLLineEditor::prevalidatePrintableSpace);
211 214
212 childSetCommitCallback("password_edit", mungePassword); 215 childSetCommitCallback("password_edit", mungePassword);
213 childSetKeystrokeCallback("password_edit", onPassKey, this); 216 childSetKeystrokeCallback("password_edit", onPassKey, this);
@@ -327,6 +330,8 @@ LLPanelLogin::LLPanelLogin(const LLRect &rect,
327 refreshLocation( false ); 330 refreshLocation( false );
328#endif 331#endif
329 332
333 loadLoginForm();
334// loadNewsBar();
330 LLFirstUse::useLoginScreen(); 335 LLFirstUse::useLoginScreen();
331} 336}
332 337
@@ -553,6 +558,26 @@ void LLPanelLogin::show(const LLRect &rect,
553 LLPanelLogin::addServer(LLViewerLogin::getInstance()->getGridLabel()); 558 LLPanelLogin::addServer(LLViewerLogin::getInstance()->getGridLabel());
554} 559}
555 560
561
562// static
563void LLPanelLogin::setFields(const std::string& username, const std::string& password)
564{
565 if (!sInstance)
566 {
567 llwarns << "Attempted fillFields with no login view shown" << llendl;
568 return;
569 }
570
571 if (!gHippoGridManager->getCurrentGrid()->isUsernameCompat())
572 {
573 llwarns << "Trying to set a username for an incompatible grid!" << llendl;
574 return;
575 }
576
577 sInstance->childSetText("username_edit", username);
578 setPassword(password);
579}
580
556// static 581// static
557void LLPanelLogin::setFields(const std::string& firstname, 582void LLPanelLogin::setFields(const std::string& firstname,
558 const std::string& lastname, 583 const std::string& lastname,
@@ -566,7 +591,13 @@ void LLPanelLogin::setFields(const std::string& firstname,
566 591
567 sInstance->childSetText("first_name_edit", firstname); 592 sInstance->childSetText("first_name_edit", firstname);
568 sInstance->childSetText("last_name_edit", lastname); 593 sInstance->childSetText("last_name_edit", lastname);
594 setPassword(password);
595}
596
569 597
598// static
599void LLPanelLogin::setPassword(const std::string& password)
600{
570 // Max "actual" password length is 16 characters. 601 // Max "actual" password length is 16 characters.
571 // Hex digests are always 32 characters. 602 // Hex digests are always 32 characters.
572 if (password.length() == 32) 603 if (password.length() == 32)
@@ -665,11 +696,25 @@ void LLPanelLogin::getFields(std::string *firstname,
665 return; 696 return;
666 } 697 }
667 698
668 *firstname = sInstance->childGetText("first_name_edit"); 699 // SL grids use a generic one-line text entry field for logins
669 LLStringUtil::trim(*firstname); 700 std::string username = sInstance->childGetText("username_edit");
701 if (!username.empty() && gHippoGridManager->getConnectedGrid()->isUsernameCompat())
702 {
703 // no need to trim here, spaces are removed
704 if (!convertUsernameToLegacy(username, *firstname, *lastname))
705 {
706 llerrs << "Invalid username accepted! Cannot proceed!" << llendl;
707 return;
708 }
709 }
710 else
711 {
712 *firstname = sInstance->childGetText("first_name_edit");
713 LLStringUtil::trim(*firstname);
670 714
671 *lastname = sInstance->childGetText("last_name_edit"); 715 *lastname = sInstance->childGetText("last_name_edit");
672 LLStringUtil::trim(*lastname); 716 LLStringUtil::trim(*lastname);
717 }
673 718
674 *password = sInstance->mMungedPassword; 719 *password = sInstance->mMungedPassword;
675} 720}
@@ -817,6 +862,54 @@ void LLPanelLogin::refreshLoginPage()
817} 862}
818 863
819 864
865// static
866void LLPanelLogin::loadLoginForm()
867{
868 if (!sInstance) return;
869
870 // toggle between username/first+last login based on grid -- MC
871 LLTextBox* firstnamet = sInstance->getChild<LLTextBox>("first_name_text");
872 LLTextBox* lastnamet = sInstance->getChild<LLTextBox>("last_name_text");
873 LLTextBox* usernamet = sInstance->getChild<LLTextBox>("username_text");
874
875 LLLineEditor* firstnamel = sInstance->getChild<LLLineEditor>("first_name_edit");
876 LLLineEditor* lastnamel = sInstance->getChild<LLLineEditor>("last_name_edit");
877 LLLineEditor* usernamel = sInstance->getChild<LLLineEditor>("username_edit");
878
879 firstnamet->setVisible(!gHippoGridManager->getCurrentGrid()->isUsernameCompat());
880 lastnamet->setVisible(!gHippoGridManager->getCurrentGrid()->isUsernameCompat());
881 usernamet->setVisible(gHippoGridManager->getCurrentGrid()->isUsernameCompat());
882
883 firstnamel->setVisible(!gHippoGridManager->getCurrentGrid()->isUsernameCompat());
884 lastnamel->setVisible(!gHippoGridManager->getCurrentGrid()->isUsernameCompat());
885 usernamel->setVisible(gHippoGridManager->getCurrentGrid()->isUsernameCompat());
886
887 // these should really REALLY be stored in the grid info -- MC
888 std::string firstnames = gSavedSettings.getString("FirstName");
889 std::string lastnames = gSavedSettings.getString("LastName");
890 if (!firstnames.empty() && !lastnames.empty())
891 {
892 if (gHippoGridManager->getCurrentGrid()->isUsernameCompat())
893 {
894 if (lastnames == "resident" || lastnames == "Resident")
895 {
896 usernamel->setText(firstnames);
897 }
898 else
899 {
900 usernamel->setText(firstnames+"."+lastnames);
901 }
902 }
903 else
904 {
905 firstnamel->setText(firstnames);
906 lastnamel->setText(lastnames);
907 }
908 }
909}
910
911
912// static
820void LLPanelLogin::loadLoginPage() 913void LLPanelLogin::loadLoginPage()
821{ 914{
822 if (!sInstance) return; 915 if (!sInstance) return;
@@ -987,6 +1080,64 @@ void LLPanelLogin::handleMediaEvent(LLPluginClassMedia* /*self*/, EMediaEvent ev
987//--------------------------------------------------------------------------- 1080//---------------------------------------------------------------------------
988 1081
989// static 1082// static
1083bool LLPanelLogin::convertUsernameToLegacy(std::string& username, std::string& firstname, std::string& lastname)
1084{
1085 if (!username.empty())
1086 {
1087 // trim beginning and end
1088 LLStringUtil::trim(username);
1089
1090 // minimum length for an SL grid
1091 if (username.length() < 5)
1092 {
1093 return false;
1094 }
1095 }
1096 else
1097 {
1098 return false;
1099 }
1100
1101 std::vector<std::string> names;
1102 boost::algorithm::split(names, username,
1103 boost::is_any_of(std::string(" .")));
1104
1105 // maybe they typed in a few too many spaces?
1106 if (names.size() > 2)
1107 {
1108 std::vector<std::string>::iterator vIt = names.begin();
1109 while (vIt != names.end())
1110 {
1111 if ((*vIt).empty())
1112 {
1113 vIt = names.erase(vIt);
1114 }
1115 else
1116 {
1117 ++vIt;
1118 }
1119 }
1120 }
1121
1122 if (names.size() == 1) // username
1123 {
1124 firstname = names[0];
1125 lastname = "Resident";
1126 return true;
1127 }
1128 else if (names.size() == 2) // first.last or first+" "+last
1129 {
1130 firstname = names[0];
1131 lastname = names[1];
1132 return true;
1133 }
1134 else
1135 {
1136 return false;
1137 }
1138}
1139
1140// static
990void LLPanelLogin::onClickConnect(void *) 1141void LLPanelLogin::onClickConnect(void *)
991{ 1142{
992 if (sInstance && sInstance->mCallback) 1143 if (sInstance && sInstance->mCallback)
@@ -998,17 +1149,48 @@ void LLPanelLogin::onClickConnect(void *)
998 // JC - Make sure the fields all get committed. 1149 // JC - Make sure the fields all get committed.
999 sInstance->setFocus(FALSE); 1150 sInstance->setFocus(FALSE);
1000 1151
1001 std::string first = sInstance->childGetText("first_name_edit"); 1152 // Note: valid logins are username or Username or First.Last or First Last -- MC
1002 std::string last = sInstance->childGetText("last_name_edit"); 1153 if (gHippoGridManager->getCurrentGrid()->isUsernameCompat())
1003 if (!first.empty() && !last.empty())
1004 { 1154 {
1005 // has both first and last name typed 1155 std::string username = sInstance->childGetText("username_edit");
1006 sInstance->mCallback(0, sInstance->mCallbackData); 1156 if (!username.empty())
1157 {
1158 // todo: make this two functions, one for validating the other for converting
1159 std::string temp1;
1160 std::string temp2;
1161 if (convertUsernameToLegacy(username, temp1, temp2))
1162 {
1163 // has username typed, make sure we're just using that
1164 sInstance->childSetText("first_name_edit", LLStringUtil::null);
1165 sInstance->childSetText("last_name_edit", LLStringUtil::null);
1166 sInstance->mCallback(0, sInstance->mCallbackData);
1167 }
1168 else
1169 {
1170 LLNotifications::instance().add("InvalidLogInSecondLife", LLSD(), LLSD(),
1171 LLPanelLogin::newAccountAlertCallback);
1172 }
1173 }
1174 else
1175 {
1176 LLNotifications::instance().add("MustHaveAccountToLogIn", LLSD(), LLSD(),
1177 LLPanelLogin::newAccountAlertCallback);
1178 }
1007 } 1179 }
1008 else 1180 else
1009 { 1181 {
1010 LLNotifications::instance().add("MustHaveAccountToLogIn", LLSD(), LLSD(), 1182 std::string first = sInstance->childGetText("first_name_edit");
1011 LLPanelLogin::newAccountAlertCallback); 1183 std::string last = sInstance->childGetText("last_name_edit");
1184 if (!first.empty() && !last.empty())
1185 {
1186 // has both first and last name typed
1187 sInstance->mCallback(0, sInstance->mCallbackData);
1188 }
1189 else
1190 {
1191 LLNotifications::instance().add("MustHaveAccountToLogIn", LLSD(), LLSD(),
1192 LLPanelLogin::newAccountAlertCallback);
1193 }
1012 } 1194 }
1013 } 1195 }
1014} 1196}
@@ -1138,6 +1320,9 @@ void LLPanelLogin::updateGridCombo(std::string grid_nick)
1138 1320
1139 llinfos << "current grid set to " << grid_nick << llendl; 1321 llinfos << "current grid set to " << grid_nick << llendl;
1140 1322
1323 // switch between username/first+last name based on grid
1324 loadLoginForm();
1325
1141 // grid changed so show new splash screen (possibly) 1326 // grid changed so show new splash screen (possibly)
1142 loadLoginPage(); 1327 loadLoginPage();
1143 1328
diff --git a/linden/indra/newview/llpanellogin.h b/linden/indra/newview/llpanellogin.h
index c99fa30..d077f32 100644
--- a/linden/indra/newview/llpanellogin.h
+++ b/linden/indra/newview/llpanellogin.h
@@ -59,9 +59,9 @@ public:
59 void (*callback)(S32 option, void* user_data), 59 void (*callback)(S32 option, void* user_data),
60 void* callback_data); 60 void* callback_data);
61 61
62 // Remember password checkbox is set via gSavedSettings "RememberPassword" 62 // Sets the login screen's name and password editors. Remember password checkbox is set via gSavedSettings "RememberPassword"
63 static void setFields(const std::string& firstname, const std::string& lastname, 63 static void setFields(const std::string& firstname, const std::string& lastname, const std::string& password);
64 const std::string& password); 64 static void setFields(const std::string& username, const std::string& password);
65 65
66 static void addServer(const std::string& server); 66 static void addServer(const std::string& server);
67 static void refreshLocation( bool force_visible ); 67 static void refreshLocation( bool force_visible );
@@ -78,6 +78,7 @@ public:
78 78
79 void setSiteIsAlive( bool alive ); 79 void setSiteIsAlive( bool alive );
80 80
81 static void loadLoginForm();
81 static void loadLoginPage(); 82 static void loadLoginPage();
82 static void refreshLoginPage(); 83 static void refreshLoginPage();
83 static void giveFocus(); 84 static void giveFocus();
@@ -98,8 +99,19 @@ private:
98 static void onPassKey(LLLineEditor* caller, void* user_data); 99 static void onPassKey(LLLineEditor* caller, void* user_data);
99 static void onSelectServer(LLUICtrl*, void*); 100 static void onSelectServer(LLUICtrl*, void*);
100 static void onServerComboLostFocus(LLFocusableElement*, void*); 101 static void onServerComboLostFocus(LLFocusableElement*, void*);
102
103 // converts the following login name formats into valid firstname lastname combos:
104 // username
105 // username.Resident
106 // first.last
107 // first+" "+last
108 // " "+first+" "+last+" "
109 // returns true if name conversion successful
110 static bool convertUsernameToLegacy(std::string& username, std::string& firstname, std::string& lastname);
111
112 // set the password for the login screen
113 static void setPassword(const std::string& password);
101 114
102private:
103 LLPointer<LLUIImage> mLogoImage; 115 LLPointer<LLUIImage> mLogoImage;
104 116
105 void (*mCallback)(S32 option, void *userdata); 117 void (*mCallback)(S32 option, void *userdata);
diff --git a/linden/indra/newview/llpanelnetwork.cpp b/linden/indra/newview/llpanelnetwork.cpp
index ec0b6ee..ebe1d53 100644
--- a/linden/indra/newview/llpanelnetwork.cpp
+++ b/linden/indra/newview/llpanelnetwork.cpp
@@ -64,6 +64,14 @@ BOOL LLPanelNetwork::postBuild()
64 childSetValue("connection_port_enabled", gSavedSettings.getBOOL("ConnectionPortEnabled")); 64 childSetValue("connection_port_enabled", gSavedSettings.getBOOL("ConnectionPortEnabled"));
65 childSetValue("connection_port", (F32)gSavedSettings.getU32("ConnectionPort")); 65 childSetValue("connection_port", (F32)gSavedSettings.getU32("ConnectionPort"));
66 66
67 childSetCommitCallback("xmlrpc_proxy_enabled", onCommitXMLRPCProxyEnabled, this);
68 childSetValue("xmlrpc_proxy_enabled", gSavedSettings.getBOOL("XMLRPCProxyEnabled"));
69 childSetValue("xmlrpc_proxy_editor", gSavedSettings.getString("XMLRPCProxyAddress"));
70 childSetValue("xmlrpc_proxy_port", gSavedSettings.getS32("XMLRPCProxyPort"));
71 childSetEnabled("xmlrpc_proxy_text_label", gSavedSettings.getBOOL("XMLRPCProxyEnabled"));
72 childSetEnabled("xmlrpc_proxy_editor", gSavedSettings.getBOOL("XMLRPCProxyEnabled"));
73 childSetEnabled("xmlrpc_proxy_port", gSavedSettings.getBOOL("XMLRPCProxyEnabled"));
74
67 return TRUE; 75 return TRUE;
68} 76}
69 77
@@ -79,6 +87,10 @@ void LLPanelNetwork::apply()
79 gSavedSettings.setF32("ThrottleBandwidthKBPS", childGetValue("max_bandwidth").asReal()); 87 gSavedSettings.setF32("ThrottleBandwidthKBPS", childGetValue("max_bandwidth").asReal());
80 gSavedSettings.setBOOL("ConnectionPortEnabled", childGetValue("connection_port_enabled")); 88 gSavedSettings.setBOOL("ConnectionPortEnabled", childGetValue("connection_port_enabled"));
81 gSavedSettings.setU32("ConnectionPort", childGetValue("connection_port").asInteger()); 89 gSavedSettings.setU32("ConnectionPort", childGetValue("connection_port").asInteger());
90
91 gSavedSettings.setBOOL("XMLRPCProxyEnabled", childGetValue("xmlrpc_proxy_enabled"));
92 gSavedSettings.setString("XMLRPCProxyAddress", childGetValue("xmlrpc_proxy_editor"));
93 gSavedSettings.setS32("XMLRPCProxyPort", childGetValue("xmlrpc_proxy_port"));
82} 94}
83 95
84void LLPanelNetwork::cancel() 96void LLPanelNetwork::cancel()
@@ -144,3 +156,15 @@ void LLPanelNetwork::onCommitPort(LLUICtrl* ctrl, void* data)
144 self->childSetEnabled("connection_port", check->get()); 156 self->childSetEnabled("connection_port", check->get());
145 LLNotifications::instance().add("ChangeConnectionPort"); 157 LLNotifications::instance().add("ChangeConnectionPort");
146} 158}
159
160// static
161void LLPanelNetwork::onCommitXMLRPCProxyEnabled(LLUICtrl* ctrl, void* data)
162{
163 LLPanelNetwork* self = (LLPanelNetwork*)data;
164 LLCheckBoxCtrl* check = (LLCheckBoxCtrl*)ctrl;
165
166 if (!self || !check) return;
167 self->childSetEnabled("xmlrpc_proxy_editor", check->get());
168 self->childSetEnabled("xmlrpc_proxy_port", check->get());
169 self->childSetEnabled("xmlrpc_proxy_text_label", check->get());
170}
diff --git a/linden/indra/newview/llpanelnetwork.h b/linden/indra/newview/llpanelnetwork.h
index 3a3d857..900158a 100644
--- a/linden/indra/newview/llpanelnetwork.h
+++ b/linden/indra/newview/llpanelnetwork.h
@@ -51,6 +51,7 @@ private:
51 static void onClickSetCache(void*); 51 static void onClickSetCache(void*);
52 static void onClickResetCache(void*); 52 static void onClickResetCache(void*);
53 static void onCommitPort(LLUICtrl* ctrl, void*); 53 static void onCommitPort(LLUICtrl* ctrl, void*);
54 static void onCommitXMLRPCProxyEnabled(LLUICtrl* ctrl, void* data);
54}; 55};
55 56
56#endif 57#endif
diff --git a/linden/indra/newview/llpanelweb.cpp b/linden/indra/newview/llpanelweb.cpp
index 6f9bd7a..93441dd 100644
--- a/linden/indra/newview/llpanelweb.cpp
+++ b/linden/indra/newview/llpanelweb.cpp
@@ -69,6 +69,7 @@ BOOL LLPanelWeb::postBuild()
69 childSetValue("use_external_browser", value); 69 childSetValue("use_external_browser", value);
70 70
71 childSetValue("cookies_enabled", gSavedSettings.getBOOL("BrowserCookiesEnabled")); 71 childSetValue("cookies_enabled", gSavedSettings.getBOOL("BrowserCookiesEnabled"));
72 childSetAction("clear_cookies", onClickClearCookies,this);
72 73
73 childSetValue("web_proxy_enabled", gSavedSettings.getBOOL("BrowserProxyEnabled")); 74 childSetValue("web_proxy_enabled", gSavedSettings.getBOOL("BrowserProxyEnabled"));
74 childSetValue("web_proxy_editor", gSavedSettings.getString("BrowserProxyAddress")); 75 childSetValue("web_proxy_editor", gSavedSettings.getString("BrowserProxyAddress"));
@@ -102,9 +103,15 @@ LLPanelWeb::~LLPanelWeb()
102void LLPanelWeb::apply() 103void LLPanelWeb::apply()
103{ 104{
104 gSavedSettings.setBOOL("BrowserCookiesEnabled", childGetValue("cookies_enabled")); 105 gSavedSettings.setBOOL("BrowserCookiesEnabled", childGetValue("cookies_enabled"));
105 gSavedSettings.setBOOL("BrowserProxyEnabled", childGetValue("web_proxy_enabled")); 106
106 gSavedSettings.setString("BrowserProxyAddress", childGetValue("web_proxy_editor")); 107 bool proxy_enable = childGetValue("web_proxy_enabled");
107 gSavedSettings.setS32("BrowserProxyPort", childGetValue("web_proxy_port")); 108 std::string proxy_address = childGetValue("web_proxy_editor");
109 int proxy_port = childGetValue("web_proxy_port");
110 gSavedSettings.setBOOL("BrowserProxyEnabled", proxy_enable);
111 gSavedSettings.setString("BrowserProxyAddress", proxy_address);
112 gSavedSettings.setS32("BrowserProxyPort", proxy_port);
113 LLViewerMedia::setProxyConfig(proxy_enable, proxy_address, proxy_port);
114
108 if (gHippoGridManager->getConnectedGrid()->isSecondLife()) 115 if (gHippoGridManager->getConnectedGrid()->isSecondLife())
109 { 116 {
110 gSavedSettings.setString("SearchURLQuery", childGetValue("world_search_editor")); 117 gSavedSettings.setString("SearchURLQuery", childGetValue("world_search_editor"));
diff --git a/linden/indra/newview/llprefsadvanced.cpp b/linden/indra/newview/llprefsadvanced.cpp
index 17f7b09..38e6745 100644
--- a/linden/indra/newview/llprefsadvanced.cpp
+++ b/linden/indra/newview/llprefsadvanced.cpp
@@ -62,7 +62,6 @@ LLPrefsAdvanced::LLPrefsAdvanced()
62 childSetCommitCallback("speed_rez_check", onCommitCheckBox, this); 62 childSetCommitCallback("speed_rez_check", onCommitCheckBox, this);
63 childSetCommitCallback("command_line_check", onCommitCheckBox, this); 63 childSetCommitCallback("command_line_check", onCommitCheckBox, this);
64 64
65 childSetAction("reset_btn", onClickResetPrefs, this);
66 childSetAction("command_line_btn", onClickCommandLine, this); 65 childSetAction("command_line_btn", onClickCommandLine, this);
67} 66}
68 67
@@ -286,24 +285,6 @@ void LLPrefsAdvanced::onCommitCheckBox(LLUICtrl* ctrl, void* user_data)
286 self->refresh(); 285 self->refresh();
287} 286}
288 287
289// static
290void LLPrefsAdvanced::onClickResetPrefs(void* user_data)
291{
292 LLPrefsAdvanced* self = (LLPrefsAdvanced*)user_data;
293 LLNotifications::instance().add("ConfirmResetAllPreferences", LLSD(), LLSD(), boost::bind(callbackReset, _1, _2, self));
294}
295
296// static
297bool LLPrefsAdvanced::callbackReset(const LLSD& notification, const LLSD& response, LLPrefsAdvanced *self)
298{
299 S32 option = LLNotification::getSelectedOption(notification, response);
300 if ( option == 0 )
301 {
302 gSavedSettings.setBOOL("ResetAllPreferences", TRUE);
303 }
304 return false;
305}
306
307void LLPrefsAdvanced::onSpellAdd(void* data) 288void LLPrefsAdvanced::onSpellAdd(void* data)
308{ 289{
309 LLPrefsAdvanced* panel = (LLPrefsAdvanced*)data; 290 LLPrefsAdvanced* panel = (LLPrefsAdvanced*)data;
diff --git a/linden/indra/newview/llprefsadvanced.h b/linden/indra/newview/llprefsadvanced.h
index 9dfe617..d75dcd3 100644
--- a/linden/indra/newview/llprefsadvanced.h
+++ b/linden/indra/newview/llprefsadvanced.h
@@ -50,11 +50,8 @@ private:
50 static LLPrefsAdvanced* sInstance; 50 static LLPrefsAdvanced* sInstance;
51 51
52 static void onCommitCheckBox(LLUICtrl* ctrl, void* user_data); 52 static void onCommitCheckBox(LLUICtrl* ctrl, void* user_data);
53 static void onClickResetPrefs(void* user_data);
54 static void onClickCommandLine(void* data); 53 static void onClickCommandLine(void* data);
55 54
56 static bool callbackReset(const LLSD& notification, const LLSD& response, LLPrefsAdvanced *self);
57
58 static void onSpellAdd(void* data); 55 static void onSpellAdd(void* data);
59 static void onSpellRemove(void* data); 56 static void onSpellRemove(void* data);
60 static void onSpellGetMore(void* data); 57 static void onSpellGetMore(void* data);
diff --git a/linden/indra/newview/llstartup.cpp b/linden/indra/newview/llstartup.cpp
index d13e112..9906cbf 100644
--- a/linden/indra/newview/llstartup.cpp
+++ b/linden/indra/newview/llstartup.cpp
@@ -817,8 +817,23 @@ bool idle_startup()
817 // Show the login dialog 817 // Show the login dialog
818 login_show(); 818 login_show();
819 // connect dialog is already shown, so fill in the names 819 // connect dialog is already shown, so fill in the names
820 LLPanelLogin::setFields( firstname, lastname, password); 820 // icky how usernames get bolted on here as a kind of hack -- MC
821 821 if (gHippoGridManager && gHippoGridManager->getCurrentGrid()->isUsernameCompat())
822 {
823 if (lastname == "resident" || lastname == "Resident")
824 {
825 LLPanelLogin::setFields(firstname, password);
826 }
827 else
828 {
829 LLPanelLogin::setFields(firstname+"."+lastname, password);
830 }
831 }
832 else
833 {
834 LLPanelLogin::setFields(firstname, lastname, password);
835 }
836
822 LLPanelLogin::giveFocus(); 837 LLPanelLogin::giveFocus();
823 838
824 gSavedSettings.setBOOL("FirstRunThisInstall", FALSE); 839 gSavedSettings.setBOOL("FirstRunThisInstall", FALSE);
@@ -1247,6 +1262,20 @@ bool idle_startup()
1247 hashed_mac.finalize(); 1262 hashed_mac.finalize();
1248 hashed_mac.hex_digest(hashed_mac_string); 1263 hashed_mac.hex_digest(hashed_mac_string);
1249 1264
1265 // Don't report crashes if the grid we crashed in
1266 // is different from the grid we log in
1267 eLastExecEvent last_exec_event = LAST_EXEC_NORMAL;
1268 {
1269 std::string current_grid = gHippoGridManager->getCurrentGrid()->getGridNick();
1270 std::string last_grid = gSavedSettings.getString("LastConnectedGrid");
1271 LL_DEBUGS("AppInit") << "current grid: " << current_grid
1272 << " Last Connected Grid: " << last_grid << LL_ENDL;
1273 if( last_grid == current_grid )
1274 {
1275 last_exec_event = gLastExecEvent;
1276 }
1277 }
1278
1250 // TODO if statement here to use web_login_key 1279 // TODO if statement here to use web_login_key
1251 if(web_login_key.isNull()){ 1280 if(web_login_key.isNull()){
1252 sAuthUriNum = llclamp(sAuthUriNum, 0, (S32)sAuthUris.size()-1); 1281 sAuthUriNum = llclamp(sAuthUriNum, 0, (S32)sAuthUris.size()-1);
@@ -1261,7 +1290,7 @@ bool idle_startup()
1261 gSkipOptionalUpdate, 1290 gSkipOptionalUpdate,
1262 gAcceptTOS, 1291 gAcceptTOS,
1263 gAcceptCriticalMessage, 1292 gAcceptCriticalMessage,
1264 gLastExecEvent, 1293 last_exec_event,
1265 requested_options, 1294 requested_options,
1266 hashed_mac_string, 1295 hashed_mac_string,
1267 LLAppViewer::instance()->getSerialNumber()); 1296 LLAppViewer::instance()->getSerialNumber());
@@ -1276,7 +1305,7 @@ bool idle_startup()
1276 gSkipOptionalUpdate, 1305 gSkipOptionalUpdate,
1277 gAcceptTOS, 1306 gAcceptTOS,
1278 gAcceptCriticalMessage, 1307 gAcceptCriticalMessage,
1279 gLastExecEvent, 1308 last_exec_event,
1280 requested_options, 1309 requested_options,
1281 hashed_mac_string, 1310 hashed_mac_string,
1282 LLAppViewer::instance()->getSerialNumber()); 1311 LLAppViewer::instance()->getSerialNumber());
@@ -1514,6 +1543,11 @@ bool idle_startup()
1514 1543
1515 if(successful_login) 1544 if(successful_login)
1516 { 1545 {
1546 {
1547 std::string current_grid = gHippoGridManager->getConnectedGrid()->getGridNick();
1548 gSavedSettings.setString("LastConnectedGrid", current_grid);
1549 }
1550
1517 std::string text; 1551 std::string text;
1518 text = LLUserAuth::getInstance()->getResponse("udp_blacklist"); 1552 text = LLUserAuth::getInstance()->getResponse("udp_blacklist");
1519 if(!text.empty()) 1553 if(!text.empty())
diff --git a/linden/indra/newview/lltexturectrl.cpp b/linden/indra/newview/lltexturectrl.cpp
index 38849f9..ccc3ab2 100644
--- a/linden/indra/newview/lltexturectrl.cpp
+++ b/linden/indra/newview/lltexturectrl.cpp
@@ -1514,7 +1514,7 @@ void LLTextureCtrl::draw()
1514 (mTexturep->getDiscardLevel() != 1) && 1514 (mTexturep->getDiscardLevel() != 1) &&
1515 (mTexturep->getDiscardLevel() != 0)) 1515 (mTexturep->getDiscardLevel() != 0))
1516 { 1516 {
1517 LLFontGL* font = LLFontGL::getFontSansSerifBig(); 1517 LLFontGL* font = LLFontGL::getFontSansSerifLarge();
1518 font->renderUTF8( 1518 font->renderUTF8(
1519 mLoadingPlaceholderString, 0, 1519 mLoadingPlaceholderString, 0,
1520 llfloor(interior.mLeft+10), 1520 llfloor(interior.mLeft+10),
diff --git a/linden/indra/newview/lltoolpie.cpp b/linden/indra/newview/lltoolpie.cpp
index 34735a3..b7d762c 100644
--- a/linden/indra/newview/lltoolpie.cpp
+++ b/linden/indra/newview/lltoolpie.cpp
@@ -800,6 +800,14 @@ BOOL LLToolPie::handleDoubleClick(S32 x, S32 y, MASK mask)
800 LL_DEBUGS("DoubleClicks") << "Double clicked a touch-scripted object" << LL_ENDL; 800 LL_DEBUGS("DoubleClicks") << "Double clicked a touch-scripted object" << LL_ENDL;
801 return FALSE; 801 return FALSE;
802 } 802 }
803
804 const LLTextureEntry* tep = object->getTE(mPick.mObjectFace);
805 viewer_media_t media_impl = LLViewerMedia::getMediaImplFromTextureID(tep->getID());
806 if (tep && media_impl.notNull() && media_impl->hasMedia())
807 {
808 LL_DEBUGS("DoubleClicks") << "Double clicked running parcel media" << LL_ENDL;
809 return FALSE;
810 }
803 } 811 }
804 812
805 std::string action = gSavedSettings.getString("DoubleClickAction"); 813 std::string action = gSavedSettings.getString("DoubleClickAction");
@@ -938,19 +946,16 @@ static bool handle_media_click(const LLPickInfo& pick)
938 if (tep 946 if (tep
939 && media_impl.notNull() 947 && media_impl.notNull()
940 && media_impl->hasMedia() 948 && media_impl->hasMedia()
941 && gSavedSettings.getBOOL("MediaOnAPrimUI")) 949 /*&& gSavedSettings.getBOOL("MediaOnAPrimUI")*/)
942 { 950 {
943 LLObjectSelectionHandle selection = LLViewerMediaFocus::getInstance()->getSelection(); 951 LLObjectSelectionHandle selection = LLViewerMediaFocus::getInstance()->getSelection();
944 if (! selection->contains(pick.getObject(), pick.mObjectFace)) 952 if (! selection->contains(pick.getObject(), pick.mObjectFace))
945 { 953 {
946 LLViewerMediaFocus::getInstance()->setFocusFace(TRUE, pick.getObject(), pick.mObjectFace, media_impl); 954 LLViewerMediaFocus::getInstance()->setFocusFace(TRUE, pick.getObject(), pick.mObjectFace, media_impl);
947 } 955 }
948 else
949 {
950 media_impl->mouseDown(pick.mXYCoords.mX, pick.mXYCoords.mY);
951 media_impl->mouseCapture(); // the mouse-up will happen when capture is lost
952 }
953 956
957 media_impl->mouseDown(pick.mXYCoords.mX, pick.mXYCoords.mY);
958 media_impl->mouseCapture(); // the mouse-up will happen when capture is lost
954 return true; 959 return true;
955 } 960 }
956 961
diff --git a/linden/indra/newview/llviewermedia.cpp b/linden/indra/newview/llviewermedia.cpp
index 417f5ff..2ba6b50 100644
--- a/linden/indra/newview/llviewermedia.cpp
+++ b/linden/indra/newview/llviewermedia.cpp
@@ -267,6 +267,23 @@ std::string LLViewerMedia::getCurrentUserAgent()
267 267
268 return codec.str(); 268 return codec.str();
269} 269}
270
271/////////////////////////////////////////////////////////////////////////////////////////
272// static
273void LLViewerMedia::setProxyConfig(bool enable, const std::string &host, int port)
274{
275 // Set the proxy config for all loaded plugins
276 impl_list::iterator iter = sViewerMediaImplList.begin();
277 impl_list::iterator end = sViewerMediaImplList.end();
278 for (; iter != end; iter++)
279 {
280 LLViewerMediaImpl* pimpl = *iter;
281 if(pimpl->mMediaSource)
282 {
283 pimpl->mMediaSource->proxy_setup(enable, host, port);
284 }
285 }
286}
270 287
271////////////////////////////////////////////////////////////////////////////////////////// 288//////////////////////////////////////////////////////////////////////////////////////////
272// static 289// static
@@ -395,6 +412,19 @@ LLViewerMediaImpl::~LLViewerMediaImpl()
395 LLViewerMedia::removeMedia(this); 412 LLViewerMedia::removeMedia(this);
396} 413}
397 414
415//static
416void LLViewerMediaImpl::setProxy(LLPluginClassMedia* media_source)
417{
418 // pass proxy settings to browser
419 bool proxy_enabled = gSavedSettings.getBOOL( "BrowserProxyEnabled" );
420 std::string proxy_address = gSavedSettings.getString("BrowserProxyAddress");
421 S32 proxy_port = gSavedSettings.getS32("BrowserProxyPort");
422 media_source->proxy_setup(proxy_enabled, proxy_address, proxy_port);
423 LL_DEBUGS("Media") << "Proxy: " << (proxy_enabled ? "enabled" : "not enabled")
424 << " Address: " << proxy_address
425 << " Port: " << proxy_port << LL_ENDL;
426}
427
398////////////////////////////////////////////////////////////////////////////////////////// 428//////////////////////////////////////////////////////////////////////////////////////////
399bool LLViewerMediaImpl::initializeMedia(const std::string& mime_type) 429bool LLViewerMediaImpl::initializeMedia(const std::string& mime_type)
400{ 430{
@@ -411,6 +441,11 @@ bool LLViewerMediaImpl::initializeMedia(const std::string& mime_type)
411 } 441 }
412 } 442 }
413 443
444 if(mMediaSource)
445 {
446 setProxy(mMediaSource);
447 }
448
414 // play(); 449 // play();
415 return (mMediaSource != NULL); 450 return (mMediaSource != NULL);
416} 451}
@@ -508,6 +543,8 @@ LLPluginClassMedia* LLViewerMediaImpl::newSourceFromMediaType(std::string media_
508 bool javascript_enabled = gSavedSettings.getBOOL( "BrowserJavascriptEnabled" ); 543 bool javascript_enabled = gSavedSettings.getBOOL( "BrowserJavascriptEnabled" );
509 media_source->setJavascriptEnabled( javascript_enabled ); 544 media_source->setJavascriptEnabled( javascript_enabled );
510 545
546 setProxy(media_source);
547
511 if (media_source->init(launcher_name, plugin_name, gSavedSettings.getBOOL("PluginAttachDebuggerToPlugins"))) 548 if (media_source->init(launcher_name, plugin_name, gSavedSettings.getBOOL("PluginAttachDebuggerToPlugins")))
512 { 549 {
513 return media_source; 550 return media_source;
@@ -741,6 +778,7 @@ void LLViewerMediaImpl::navigateHome()
741////////////////////////////////////////////////////////////////////////////////////////// 778//////////////////////////////////////////////////////////////////////////////////////////
742void LLViewerMediaImpl::navigateTo(const std::string& url, const std::string& mime_type, bool rediscover_type) 779void LLViewerMediaImpl::navigateTo(const std::string& url, const std::string& mime_type, bool rediscover_type)
743{ 780{
781
744 if(rediscover_type) 782 if(rediscover_type)
745 { 783 {
746 784
diff --git a/linden/indra/newview/llviewermedia.h b/linden/indra/newview/llviewermedia.h
index 43895c9..b2c95c0 100644
--- a/linden/indra/newview/llviewermedia.h
+++ b/linden/indra/newview/llviewermedia.h
@@ -79,6 +79,10 @@ class LLViewerMedia
79 static void removeMedia(LLViewerMediaImpl* media); 79 static void removeMedia(LLViewerMediaImpl* media);
80 static LLViewerMediaImpl* getMediaImplFromTextureID(const LLUUID& texture_id); 80 static LLViewerMediaImpl* getMediaImplFromTextureID(const LLUUID& texture_id);
81 static std::string getCurrentUserAgent(); 81 static std::string getCurrentUserAgent();
82
83 // Set the proxy config for all loaded plugins
84 static void setProxyConfig(bool enable, const std::string &host, int port);
85
82 static void updateBrowserUserAgent(); 86 static void updateBrowserUserAgent();
83 static bool handleSkinCurrentChanged(const LLSD& /*newvalue*/); 87 static bool handleSkinCurrentChanged(const LLSD& /*newvalue*/);
84 static bool textureHasMedia(const LLUUID& texture_id); 88 static bool textureHasMedia(const LLUUID& texture_id);
@@ -109,6 +113,7 @@ public:
109 void createMediaSource(); 113 void createMediaSource();
110 void destroyMediaSource(); 114 void destroyMediaSource();
111 void setMediaType(const std::string& media_type); 115 void setMediaType(const std::string& media_type);
116 static void setProxy(LLPluginClassMedia* media_source);
112 bool initializeMedia(const std::string& mime_type); 117 bool initializeMedia(const std::string& mime_type);
113 bool initializePlugin(const std::string& media_type); 118 bool initializePlugin(const std::string& media_type);
114 LLPluginClassMedia* getMediaPlugin() { return mMediaSource; } 119 LLPluginClassMedia* getMediaPlugin() { return mMediaSource; }
diff --git a/linden/indra/newview/llviewermediafocus.cpp b/linden/indra/newview/llviewermediafocus.cpp
index 2e372a1..c81cd76 100644
--- a/linden/indra/newview/llviewermediafocus.cpp
+++ b/linden/indra/newview/llviewermediafocus.cpp
@@ -48,6 +48,7 @@
48#include "llparcel.h" 48#include "llparcel.h"
49#include "llviewerparcelmgr.h" 49#include "llviewerparcelmgr.h"
50#include "llweb.h" 50#include "llweb.h"
51#include "llviewercontrol.h"//gSavedSettings
51// 52//
52// LLViewerMediaFocus 53// LLViewerMediaFocus
53// 54//
@@ -99,7 +100,7 @@ void LLViewerMediaFocus::setFocusFace( BOOL b, LLPointer<LLViewerObject> objectp
99 LLSelectMgr::getInstance()->selectObjectOnly(objectp, face); 100 LLSelectMgr::getInstance()->selectObjectOnly(objectp, face);
100 101
101 mFocus = LLSelectMgr::getInstance()->getSelection(); 102 mFocus = LLSelectMgr::getInstance()->getSelection();
102 if(mMediaHUD.get() && ! parcel->getMediaPreventCameraZoom()) 103 if(gSavedSettings.getBOOL("MediaOnAPrimUI") && mMediaHUD.get() && ! parcel->getMediaPreventCameraZoom())
103 { 104 {
104 mMediaHUD.get()->resetZoomLevel(); 105 mMediaHUD.get()->resetZoomLevel();
105 mMediaHUD.get()->nextZoomLevel(); 106 mMediaHUD.get()->nextZoomLevel();
@@ -224,14 +225,20 @@ void LLViewerMediaFocus::setMouseOverFlag(bool b, viewer_media_t media_impl)
224{ 225{
225 if (b && media_impl.notNull()) 226 if (b && media_impl.notNull())
226 { 227 {
227 if(! mMediaHUD.get()) 228
229 if(! mMediaHUD.get() && gSavedSettings.getBOOL("MediaOnAPrimUI"))
228 { 230 {
229 LLPanelMediaHUD* media_hud = new LLPanelMediaHUD(mMediaImpl); 231 LLPanelMediaHUD* media_hud = new LLPanelMediaHUD(mMediaImpl);
230 mMediaHUD = media_hud->getHandle(); 232 mMediaHUD = media_hud->getHandle();
231 gHUDView->addChild(media_hud); 233 gHUDView->addChild(media_hud);
232 } 234 }
233 mMediaHUD.get()->setMediaImpl(media_impl); 235
236 if(mMediaHUD.get())
237 {
238 mMediaHUD.get()->setMediaImpl(media_impl);
239 }
234 mMediaImpl = media_impl; 240 mMediaImpl = media_impl;
241
235 } 242 }
236 mMouseOverFlag = b; 243 mMouseOverFlag = b;
237} 244}
@@ -281,7 +288,10 @@ void LLViewerMediaFocus::update()
281{ 288{
282 if (mMediaHUD.get()) 289 if (mMediaHUD.get())
283 { 290 {
284 if(mFocus.notNull() || mMouseOverFlag || mMediaHUD.get()->isMouseOver()) 291 if(gSavedSettings.getBOOL("MediaOnAPrimUI")
292 &&(mFocus.notNull()
293 || mMouseOverFlag
294 || mMediaHUD.get()->isMouseOver() ) )
285 { 295 {
286 // mMediaHUD.get()->setVisible(true); 296 // mMediaHUD.get()->setVisible(true);
287 mMediaHUD.get()->updateShape(); 297 mMediaHUD.get()->updateShape();
diff --git a/linden/indra/newview/llviewerparcelmedia.cpp b/linden/indra/newview/llviewerparcelmedia.cpp
index a5d97f2..386a86e 100644
--- a/linden/indra/newview/llviewerparcelmedia.cpp
+++ b/linden/indra/newview/llviewerparcelmedia.cpp
@@ -49,6 +49,7 @@
49#include "llpluginclassmedia.h" 49#include "llpluginclassmedia.h"
50#include "llnotify.h" 50#include "llnotify.h"
51#include "llsdserialize.h" 51#include "llsdserialize.h"
52#include "llmemory.h"
52 53
53#include "lloverlaybar.h" 54#include "lloverlaybar.h"
54#include "slfloatermediafilter.h" 55#include "slfloatermediafilter.h"
@@ -64,6 +65,7 @@ LLSD LLViewerParcelMedia::sMediaFilterList;
64std::set<std::string> LLViewerParcelMedia::sMediaQueries; 65std::set<std::string> LLViewerParcelMedia::sMediaQueries;
65std::set<std::string> LLViewerParcelMedia::sAllowedMedia; 66std::set<std::string> LLViewerParcelMedia::sAllowedMedia;
66std::set<std::string> LLViewerParcelMedia::sDeniedMedia; 67std::set<std::string> LLViewerParcelMedia::sDeniedMedia;
68LLPointer<LLViewerParcelMediaInfo> LLViewerParcelMedia::sSavedMediaInfo;
67 69
68// Local functions 70// Local functions
69bool callback_play_media(const LLSD& notification, const LLSD& response, LLParcel* parcel); 71bool callback_play_media(const LLSD& notification, const LLSD& response, LLParcel* parcel);
@@ -186,7 +188,7 @@ void LLViewerParcelMedia::update(LLParcel* parcel)
186} 188}
187 189
188// static 190// static
189void LLViewerParcelMedia::play(LLParcel* parcel, bool filter) 191void LLViewerParcelMedia::play(LLParcel* parcel, bool filter, const ECommandOrigin origin)
190{ 192{
191 lldebugs << "LLViewerParcelMedia::play" << llendl; 193 lldebugs << "LLViewerParcelMedia::play" << llendl;
192 194
@@ -198,12 +200,13 @@ void LLViewerParcelMedia::play(LLParcel* parcel, bool filter)
198 std::string media_url = parcel->getMediaURL(); 200 std::string media_url = parcel->getMediaURL();
199 LLStringUtil::trim(media_url); 201 LLStringUtil::trim(media_url);
200 202
201 if (!media_url.empty() && gSavedSettings.getBOOL("MediaEnableFilter") && (filter || !allowedMedia(media_url))) 203 if (!media_url.empty() && gSavedSettings.getBOOL("MediaEnableFilter") && filter
204 && (!allowedMedia(media_url) || origin == COMMAND_ORIGIN_REMOTE))
202 { 205 {
203 // If filtering is needed or in case media_url just changed 206 // If filtering is needed or in case media_url just changed
204 // to something we did not yet approve. 207 // to something we did not yet approve.
205 LLViewerParcelMediaAutoPlay::playStarted(); 208 LLViewerParcelMediaAutoPlay::playStarted();
206 filterMedia(parcel, 0); 209 filterMedia(parcel, 0, origin);
207 return; 210 return;
208 } 211 }
209 212
@@ -384,7 +387,7 @@ void LLViewerParcelMedia::processParcelMediaCommandMessage( LLMessageSystem *msg
384 else 387 else
385 { 388 {
386 LLParcel *parcel = LLViewerParcelMgr::getInstance()->getAgentParcel(); 389 LLParcel *parcel = LLViewerParcelMgr::getInstance()->getAgentParcel();
387 play(parcel); 390 play(parcel, true, COMMAND_ORIGIN_REMOTE);
388 } 391 }
389 } 392 }
390 else 393 else
@@ -400,7 +403,7 @@ void LLViewerParcelMedia::processParcelMediaCommandMessage( LLMessageSystem *msg
400 if(sMediaImpl.isNull()) 403 if(sMediaImpl.isNull())
401 { 404 {
402 LLParcel *parcel = LLViewerParcelMgr::getInstance()->getAgentParcel(); 405 LLParcel *parcel = LLViewerParcelMgr::getInstance()->getAgentParcel();
403 play(parcel); 406 play(parcel, true, COMMAND_ORIGIN_REMOTE);
404 } 407 }
405 seek(time); 408 seek(time);
406 } 409 }
@@ -437,33 +440,38 @@ void LLViewerParcelMedia::processParcelMediaUpdate( LLMessageSystem *msg, void *
437 } 440 }
438 441
439 LLParcel *parcel = LLViewerParcelMgr::getInstance()->getAgentParcel(); 442 LLParcel *parcel = LLViewerParcelMgr::getInstance()->getAgentParcel();
440 BOOL same = FALSE;
441 if (parcel) 443 if (parcel)
442 { 444 {
443 same = ((parcel->getMediaURL() == media_url) && 445 LLViewerParcelMediaInfo* new_info = new LLViewerParcelMediaInfo(media_url, media_type, media_id, media_width, media_height, media_auto_scale, media_loop);
444 (parcel->getMediaType() == media_type) && 446 LLViewerParcelMediaInfo* current_info = new LLViewerParcelMediaInfo(parcel);
445 (parcel->getMediaID() == media_id) && 447 if (new_info != current_info)
446 (parcel->getMediaWidth() == media_width) &&
447 (parcel->getMediaHeight() == media_height) &&
448 (parcel->getMediaAutoScale() == media_auto_scale) &&
449 (parcel->getMediaLoop() == media_loop));
450
451 if (!same)
452 { 448 {
449 if (!sSavedMediaInfo || (sSavedMediaInfo && !sSavedMediaInfo->sameParcel(parcel)))
450 {
451 // only save if no previously saved media info, because
452 // we want to remeber the original parcel media info.
453 sSavedMediaInfo = current_info;
454 }
453 // temporarily store these new values in the parcel 455 // temporarily store these new values in the parcel
454 parcel->setMediaURL(media_url); 456 new_info->applyToParcel(parcel);
455 parcel->setMediaType(media_type);
456 parcel->setMediaID(media_id);
457 parcel->setMediaWidth(media_width);
458 parcel->setMediaHeight(media_height);
459 parcel->setMediaAutoScale(media_auto_scale);
460 parcel->setMediaLoop(media_loop);
461 457
462 play(parcel); 458 play(parcel, true, COMMAND_ORIGIN_REMOTE);
463 } 459 }
464 460
465 } 461 }
466} 462}
463
464//static
465void LLViewerParcelMedia::undoParcelMediaUpdate()
466{
467 LLParcel *parcel = LLViewerParcelMgr::getInstance()->getAgentParcel();
468 if (sSavedMediaInfo.notNull() && parcel)
469 {
470 sSavedMediaInfo->applyToParcel(parcel);
471 }
472 sSavedMediaInfo = NULL;
473}
474
467// Static 475// Static
468///////////////////////////////////////////////////////////////////////////////////////// 476/////////////////////////////////////////////////////////////////////////////////////////
469void LLViewerParcelMedia::sendMediaNavigateMessage(const std::string& url) 477void LLViewerParcelMedia::sendMediaNavigateMessage(const std::string& url)
@@ -619,7 +627,7 @@ void LLViewerParcelMedia::playStreamingMusic(LLParcel* parcel, bool filter)
619 { 627 {
620 // If filtering is needed or in case music_url just changed 628 // If filtering is needed or in case music_url just changed
621 // to something we did not yet approve. 629 // to something we did not yet approve.
622 filterMedia(parcel, 1); 630 filterMedia(parcel, 1, COMMAND_ORIGIN_LOCAL);
623 } 631 }
624 else if (gAudioStream) 632 else if (gAudioStream)
625 { 633 {
@@ -649,13 +657,18 @@ bool LLViewerParcelMedia::allowedMedia(std::string media_url)
649{ 657{
650 LLStringUtil::trim(media_url); 658 LLStringUtil::trim(media_url);
651 std::string domain = extractDomain(media_url); 659 std::string domain = extractDomain(media_url);
660 LLHost host;
661 host.setHostByName(domain);
662 std::string ip = host.getIPString();
652 if (sAllowedMedia.count(domain)) 663 if (sAllowedMedia.count(domain))
653 { 664 {
654 return true; 665 return true;
655 } 666 }
667 std::string server;
656 for (S32 i = 0; i < (S32)sMediaFilterList.size(); i++) 668 for (S32 i = 0; i < (S32)sMediaFilterList.size(); i++)
657 { 669 {
658 if (sMediaFilterList[i]["domain"].asString() == domain) 670 server = sMediaFilterList[i]["domain"].asString();
671 if (server == domain || server == ip)
659 { 672 {
660 if (sMediaFilterList[i]["action"].asString() == "allow") 673 if (sMediaFilterList[i]["action"].asString() == "allow")
661 { 674 {
@@ -670,12 +683,13 @@ bool LLViewerParcelMedia::allowedMedia(std::string media_url)
670 return false; 683 return false;
671} 684}
672 685
673void LLViewerParcelMedia::filterMedia(LLParcel* parcel, U32 type) 686void LLViewerParcelMedia::filterMedia(LLParcel* parcel, U32 type, const ECommandOrigin origin)
674{ 687{
675 std::string media_action; 688 std::string media_action;
676 std::string media_url; 689 std::string media_url;
677 std::string domain; 690 std::string domain;
678 691 std::string ip;
692
679 if (parcel != LLViewerParcelMgr::getInstance()->getAgentParcel()) 693 if (parcel != LLViewerParcelMgr::getInstance()->getAgentParcel())
680 { 694 {
681 // The parcel just changed (may occur right out after a TP) 695 // The parcel just changed (may occur right out after a TP)
@@ -703,31 +717,51 @@ void LLViewerParcelMedia::filterMedia(LLParcel* parcel, U32 type)
703 return; 717 return;
704 } 718 }
705 719
720 LLHost host;
721 host.setHostByName(domain);
722 ip = host.getIPString();
723
706 if (sIsUserAction) 724 if (sIsUserAction)
707 { 725 {
708 // This was a user manual request to play this media, so give 726 // This was a user manual request to play this media, so give
709 // it another chance... 727 // it another chance...
710 sIsUserAction = false; 728 sIsUserAction = false;
729 bool dirty = false;
711 if (sDeniedMedia.count(domain)) 730 if (sDeniedMedia.count(domain))
712 { 731 {
713 sDeniedMedia.erase(domain); 732 sDeniedMedia.erase(domain);
733 dirty = true;
734 }
735 if (sDeniedMedia.count(ip))
736 {
737 sDeniedMedia.erase(ip);
738 dirty = true;
739 }
740 if (dirty)
741 {
714 SLFloaterMediaFilter::setDirty(); 742 SLFloaterMediaFilter::setDirty();
715 } 743 }
716 } 744 }
717 745
718 if (!sMediaFilterListLoaded || sDeniedMedia.count(domain)) 746 if (media_url.empty())
747 {
748 media_action == "allow";
749 }
750 else if (!sMediaFilterListLoaded || sDeniedMedia.count(domain) || sDeniedMedia.count(ip))
719 { 751 {
720 media_action = "ignore"; 752 media_action = "ignore";
721 } 753 }
722 else if (sAllowedMedia.count(domain)) 754 else if (sAllowedMedia.count(domain) || sAllowedMedia.count(ip))
723 { 755 {
724 media_action = "allow"; 756 media_action = "allow";
725 } 757 }
726 else 758 else
727 { 759 {
760 std::string server;
728 for (S32 i = 0; i < (S32)sMediaFilterList.size(); i++) 761 for (S32 i = 0; i < (S32)sMediaFilterList.size(); i++)
729 { 762 {
730 if (sMediaFilterList[i]["domain"].asString() == domain) 763 server = sMediaFilterList[i]["domain"].asString();
764 if (server == domain || server == ip)
731 { 765 {
732 media_action = sMediaFilterList[i]["action"].asString(); 766 media_action = sMediaFilterList[i]["action"].asString();
733 break; 767 break;
@@ -735,7 +769,7 @@ void LLViewerParcelMedia::filterMedia(LLParcel* parcel, U32 type)
735 } 769 }
736 } 770 }
737 771
738 if (media_action == "allow" || media_url.empty()) 772 if (media_action == "allow")
739 { 773 {
740 if (type == 0) 774 if (type == 0)
741 { 775 {
@@ -745,47 +779,76 @@ void LLViewerParcelMedia::filterMedia(LLParcel* parcel, U32 type)
745 { 779 {
746 playStreamingMusic(parcel, false); 780 playStreamingMusic(parcel, false);
747 } 781 }
782 return;
748 } 783 }
749 else if (media_action == "deny") 784 if (media_action == "ignore")
750 { 785 {
751 LLSD args; 786 if (type == 0)
752 args["DOMAIN"] = domain; 787 {
753 LLNotifications::instance().add("MediaBlocked", args); 788 undoParcelMediaUpdate();
754 if (type == 1) 789 }
790 else if (type == 1)
755 { 791 {
756 LLViewerParcelMedia::stopStreamingMusic(); 792 LLViewerParcelMedia::stopStreamingMusic();
757 } 793 }
758 // So to avoid other "blocked" messages later in the session 794 return;
759 // for this url should it be requested again by a script.
760 sDeniedMedia.insert(domain);
761 } 795 }
762 else if (media_action == "ignore") 796 // skip local-originating play commands, unless the url is blacklisted.
797 if (gSavedSettings.getBOOL("MediaFilterOnlyRemoteCommands")
798 && (origin != COMMAND_ORIGIN_REMOTE)
799 && (media_action != "ignore"))
763 { 800 {
764 if (type == 1) 801 sAllowedMedia.insert(domain);
802 SLFloaterMediaFilter::setDirty();
803 if (type == 0)
765 { 804 {
766 LLViewerParcelMedia::stopStreamingMusic(); 805 play(parcel, false);
767 } 806 }
807 else
808 {
809 playStreamingMusic(parcel, false);
810 }
811 return;
812 }
813
814 LLSD args;
815 if (ip != domain && domain.find('/') == std::string::npos)
816 {
817 args["DOMAIN"] = domain + " (" + ip + ")";
768 } 818 }
769 else 819 else
770 { 820 {
771 sMediaQueries.insert(domain);
772 LLSD args;
773 args["DOMAIN"] = domain; 821 args["DOMAIN"] = domain;
774 if (media_url.find('?') != std::string::npos) 822 }
823
824 if (media_action == "deny")
825 {
826 LLNotifications::instance().add("MediaBlocked", args);
827 if (type == 0)
775 { 828 {
776 args["WARNING"] = " (WARNING: this URL also contains parameter(s) that could potentially be used to correlate your avatar name with your IP)"; 829 undoParcelMediaUpdate();
777 } 830 }
778 else 831 if (type == 1)
779 { 832 {
780 args["WARNING"] = ""; 833 LLViewerParcelMedia::stopStreamingMusic();
781 } 834 }
835 // So to avoid other "blocked" messages later in the session
836 // for this url should it be requested again by a script.
837 // We don't add the IP, on purpose (want to show different
838 // blocks for different domains pointing to the same IP).
839 sDeniedMedia.insert(domain);
840 }
841 else
842 {
843 sMediaQueries.insert(domain);
844 args["URL"] = media_url;
782 if (type == 0) 845 if (type == 0)
783 { 846 {
784 args["TYPE"] = "a media"; 847 args["TYPE"] = "media";
785 } 848 }
786 else 849 else
787 { 850 {
788 args["TYPE"] = "an audio"; 851 args["TYPE"] = "audio";
789 } 852 }
790 LLNotifications::instance().add("MediaAlert", args, LLSD(), boost::bind(callback_media_alert, _1, _2, parcel, type, domain)); 853 LLNotifications::instance().add("MediaAlert", args, LLSD(), boost::bind(callback_media_alert, _1, _2, parcel, type, domain));
791 } 854 }
@@ -795,8 +858,19 @@ void callback_media_alert(const LLSD &notification, const LLSD &response, LLParc
795{ 858{
796 S32 option = LLNotification::getSelectedOption(notification, response); 859 S32 option = LLNotification::getSelectedOption(notification, response);
797 860
861 LLHost host;
862 host.setHostByName(domain);
863 std::string ip = host.getIPString();
864
798 LLSD args; 865 LLSD args;
799 args["DOMAIN"] = domain; 866 if (ip != domain && domain.find('/') == std::string::npos)
867 {
868 args["DOMAIN"] = domain + " (" + ip + ")";
869 }
870 else
871 {
872 args["DOMAIN"] = domain;
873 }
800 874
801 if (option == 0 || option == 3) // Allow or Whitelist 875 if (option == 0 || option == 3) // Allow or Whitelist
802 { 876 {
@@ -807,6 +881,11 @@ void callback_media_alert(const LLSD &notification, const LLSD &response, LLParc
807 newmedia["domain"] = domain; 881 newmedia["domain"] = domain;
808 newmedia["action"] = "allow"; 882 newmedia["action"] = "allow";
809 LLViewerParcelMedia::sMediaFilterList.append(newmedia); 883 LLViewerParcelMedia::sMediaFilterList.append(newmedia);
884 if (ip != domain && domain.find('/') == std::string::npos)
885 {
886 newmedia["domain"] = ip;
887 LLViewerParcelMedia::sMediaFilterList.append(newmedia);
888 }
810 LLViewerParcelMedia::saveDomainFilterList(); 889 LLViewerParcelMedia::saveDomainFilterList();
811 args["LISTED"] = "whitelisted"; 890 args["LISTED"] = "whitelisted";
812 LLNotifications::instance().add("MediaListed", args); 891 LLNotifications::instance().add("MediaListed", args);
@@ -823,10 +902,19 @@ void callback_media_alert(const LLSD &notification, const LLSD &response, LLParc
823 else if (option == 1 || option == 2) // Deny or Blacklist 902 else if (option == 1 || option == 2) // Deny or Blacklist
824 { 903 {
825 LLViewerParcelMedia::sDeniedMedia.insert(domain); 904 LLViewerParcelMedia::sDeniedMedia.insert(domain);
826 if (type == 1) 905 if (ip != domain && domain.find('/') == std::string::npos)
906 {
907 LLViewerParcelMedia::sDeniedMedia.insert(ip);
908 }
909 if (type == 0)
910 {
911 LLViewerParcelMedia::undoParcelMediaUpdate();
912 }
913 else if (type == 1)
827 { 914 {
828 LLViewerParcelMedia::stopStreamingMusic(); 915 LLViewerParcelMedia::stopStreamingMusic();
829 } 916 }
917
830 if (option == 1) // Deny 918 if (option == 1) // Deny
831 { 919 {
832 LLNotifications::instance().add("MediaBlocked", args); 920 LLNotifications::instance().add("MediaBlocked", args);
@@ -837,6 +925,11 @@ void callback_media_alert(const LLSD &notification, const LLSD &response, LLParc
837 newmedia["domain"] = domain; 925 newmedia["domain"] = domain;
838 newmedia["action"] = "deny"; 926 newmedia["action"] = "deny";
839 LLViewerParcelMedia::sMediaFilterList.append(newmedia); 927 LLViewerParcelMedia::sMediaFilterList.append(newmedia);
928 if (ip != domain && domain.find('/') == std::string::npos)
929 {
930 newmedia["domain"] = ip;
931 LLViewerParcelMedia::sMediaFilterList.append(newmedia);
932 }
840 LLViewerParcelMedia::saveDomainFilterList(); 933 LLViewerParcelMedia::saveDomainFilterList();
841 args["LISTED"] = "blacklisted"; 934 args["LISTED"] = "blacklisted";
842 LLNotifications::instance().add("MediaListed", args); 935 LLNotifications::instance().add("MediaListed", args);
@@ -928,7 +1021,12 @@ std::string LLViewerParcelMedia::extractDomain(std::string url)
928 url = url.substr(pos + 1, count); 1021 url = url.substr(pos + 1, count);
929 } 1022 }
930 1023
931 if (url.find(gAgent.getRegion()->getHost().getHostName()) == 0 || url.find(last_region) == 0) 1024 std::string current_region = gAgent.getRegion()->getHost().getHostName();
1025 if (!current_region.size())
1026 {
1027 current_region = gAgent.getRegion()->getHost().getIPString();
1028 }
1029 if (url.find(current_region) == 0 || url.find(last_region) == 0)
932 { 1030 {
933 // This must be a scripted object rezzed in the region: 1031 // This must be a scripted object rezzed in the region:
934 // extend the concept of "domain" to encompass the 1032 // extend the concept of "domain" to encompass the
@@ -937,7 +1035,7 @@ std::string LLViewerParcelMedia::extractDomain(std::string url)
937 1035
938 // Get rid of any port number 1036 // Get rid of any port number
939 pos = url.find('/'); // We earlier made sure that there's one 1037 pos = url.find('/'); // We earlier made sure that there's one
940 url = gAgent.getRegion()->getHost().getHostName() + url.substr(pos); 1038 url = current_region + url.substr(pos);
941 1039
942 pos = url.find('?'); 1040 pos = url.find('?');
943 if (pos != std::string::npos) 1041 if (pos != std::string::npos)
@@ -972,6 +1070,73 @@ std::string LLViewerParcelMedia::extractDomain(std::string url)
972 // Remember this region, so to cope with requests occuring just after a 1070 // Remember this region, so to cope with requests occuring just after a
973 // TP out of it. 1071 // TP out of it.
974 last_region = gAgent.getRegion()->getHost().getHostName(); 1072 last_region = gAgent.getRegion()->getHost().getHostName();
1073 if (!last_region.size())
1074 {
1075 last_region = gAgent.getRegion()->getHost().getIPString();
1076 }
975 1077
976 return url; 1078 return url;
977} 1079}
1080
1081LLViewerParcelMediaInfo::LLViewerParcelMediaInfo(const std::string url,
1082 const std::string type,
1083 const LLUUID media_id,
1084 const S32 width,
1085 const S32 height,
1086 const U8 scale,
1087 const U8 loop)
1088 :
1089 mMediaURL(url),
1090 mMediaType(type),
1091 mMediaID(media_id),
1092 mMediaWidth(width),
1093 mMediaHeight(height),
1094 mMediaAutoScale(scale),
1095 mMediaLoop(loop)
1096{
1097 LLParcel *parcel = LLViewerParcelMgr::getInstance()->getAgentParcel();
1098 mParcelLocalID = parcel ? parcel->getLocalID() : 0;
1099}
1100
1101LLViewerParcelMediaInfo::LLViewerParcelMediaInfo(const LLParcel* parcel)
1102{
1103 mMediaURL = parcel->getMediaURL();
1104 mMediaType = parcel->getMediaType();
1105 mMediaID = parcel->getMediaID();
1106 mMediaWidth = parcel->getMediaWidth();
1107 mMediaHeight = parcel->getMediaHeight();
1108 mMediaAutoScale = parcel->getMediaAutoScale();
1109 mMediaLoop = parcel->getMediaLoop();
1110 mParcelLocalID = parcel->getLocalID();
1111}
1112
1113void LLViewerParcelMediaInfo::applyToParcel(LLParcel* parcel)
1114{
1115 if (parcel && sameParcel(parcel))
1116 {
1117 parcel->setMediaURL(mMediaURL);
1118 parcel->setMediaType(mMediaType);
1119 parcel->setMediaID(mMediaID);
1120 parcel->setMediaWidth(mMediaWidth);
1121 parcel->setMediaHeight(mMediaHeight);
1122 parcel->setMediaAutoScale(mMediaAutoScale);
1123 parcel->setMediaLoop(mMediaLoop);
1124 }
1125}
1126
1127bool LLViewerParcelMediaInfo::sameParcel(const LLParcel* parcel) const
1128{
1129 return parcel && (parcel->getLocalID() == mParcelLocalID);
1130}
1131
1132bool LLViewerParcelMediaInfo::operator==(const LLViewerParcelMediaInfo &rhs) const
1133{
1134 return (mMediaURL == rhs.mMediaURL) &&
1135 (mMediaType == rhs.mMediaType) &&
1136 (mMediaID == rhs.mMediaID) &&
1137 (mMediaWidth == rhs.mMediaWidth) &&
1138 (mMediaHeight == rhs.mMediaHeight) &&
1139 (mMediaAutoScale == rhs.mMediaAutoScale) &&
1140 (mMediaLoop == rhs.mMediaLoop) &&
1141 (mParcelLocalID == rhs.mParcelLocalID);
1142} \ No newline at end of file
diff --git a/linden/indra/newview/llviewerparcelmedia.h b/linden/indra/newview/llviewerparcelmedia.h
index 7531a0f..f4c4312 100644
--- a/linden/indra/newview/llviewerparcelmedia.h
+++ b/linden/indra/newview/llviewerparcelmedia.h
@@ -34,6 +34,7 @@
34#define LLVIEWERPARCELMEDIA_H 34#define LLVIEWERPARCELMEDIA_H
35 35
36#include "llviewermedia.h" 36#include "llviewermedia.h"
37#include "llmemory.h"
37 38
38// For use by other patches so they know that media filtering is implemented. 39// For use by other patches so they know that media filtering is implemented.
39#define MEDIA_FILTERING 1 40#define MEDIA_FILTERING 1
@@ -41,6 +42,7 @@
41class LLMessageSystem; 42class LLMessageSystem;
42class LLParcel; 43class LLParcel;
43class LLViewerParcelMediaNavigationObserver; 44class LLViewerParcelMediaNavigationObserver;
45class LLViewerParcelMediaInfo;
44 46
45 47
46// This class understands land parcels, network traffic, LSL media 48// This class understands land parcels, network traffic, LSL media
@@ -49,6 +51,13 @@ class LLViewerParcelMediaNavigationObserver;
49class LLViewerParcelMedia : public LLViewerMediaObserver 51class LLViewerParcelMedia : public LLViewerMediaObserver
50{ 52{
51 LOG_CLASS(LLViewerParcelMedia); 53 LOG_CLASS(LLViewerParcelMedia);
54 private:
55 typedef enum e_command_origin
56 {
57 COMMAND_ORIGIN_LOCAL,
58 COMMAND_ORIGIN_REMOTE
59 } ECommandOrigin;
60
52 public: 61 public:
53 static void initClass(); 62 static void initClass();
54 static void cleanupClass(); 63 static void cleanupClass();
@@ -57,14 +66,14 @@ class LLViewerParcelMedia : public LLViewerMediaObserver
57 // called when the agent's parcel has a new URL, or the agent has 66 // called when the agent's parcel has a new URL, or the agent has
58 // walked on to a new parcel with media 67 // walked on to a new parcel with media
59 68
60 static void play(LLParcel* parcel, bool filter = true); 69 static void play(LLParcel* parcel, bool filter = true, const ECommandOrigin origin = COMMAND_ORIGIN_LOCAL);
61 // user clicked play button in media transport controls 70 // user clicked play button in media transport controls
62 static void playStreamingMusic(LLParcel* parcel, bool filter = true); 71 static void playStreamingMusic(LLParcel* parcel, bool filter = true);
63 // play the parcel music stream 72 // play the parcel music stream
64 static void stopStreamingMusic(); 73 static void stopStreamingMusic();
65 // stop the parcel music stream 74 // stop the parcel music stream
66 75
67 static void filterMedia(LLParcel* parcel, U32 type); // type: 0 = media, 1 = streaming music 76 static void filterMedia(LLParcel* parcel, U32 type, const ECommandOrigin origin); // type: 0 = media, 1 = streaming music
68 static bool allowedMedia(std::string media_url); 77 static bool allowedMedia(std::string media_url);
69 78
70 static bool loadDomainFilterList(); 79 static bool loadDomainFilterList();
@@ -90,6 +99,7 @@ class LLViewerParcelMedia : public LLViewerMediaObserver
90 99
91 static void processParcelMediaCommandMessage( LLMessageSystem *msg, void ** ); 100 static void processParcelMediaCommandMessage( LLMessageSystem *msg, void ** );
92 static void processParcelMediaUpdate( LLMessageSystem *msg, void ** ); 101 static void processParcelMediaUpdate( LLMessageSystem *msg, void ** );
102 static void undoParcelMediaUpdate(); // reset the parcel's media to what it was before ParcelMediaUpdate
93 static void sendMediaNavigateMessage(const std::string& url); 103 static void sendMediaNavigateMessage(const std::string& url);
94 104
95 // inherited from LLViewerMediaObserver 105 // inherited from LLViewerMediaObserver
@@ -107,6 +117,7 @@ class LLViewerParcelMedia : public LLViewerMediaObserver
107 static std::set<std::string> sMediaQueries; 117 static std::set<std::string> sMediaQueries;
108 static std::set<std::string> sAllowedMedia; 118 static std::set<std::string> sAllowedMedia;
109 static std::set<std::string> sDeniedMedia; 119 static std::set<std::string> sDeniedMedia;
120 static LLPointer<LLViewerParcelMediaInfo> sSavedMediaInfo; // The parcel original media (before a remote command is applied)
110}; 121};
111 122
112 123
@@ -120,4 +131,29 @@ public:
120 131
121}; 132};
122 133
134class LLViewerParcelMediaInfo : public LLRefCount
135{
136public:
137 LLViewerParcelMediaInfo(const std::string url,
138 const std::string type,
139 const LLUUID media_id,
140 const S32 width,
141 const S32 height,
142 const U8 scale,
143 const U8 loop);
144 LLViewerParcelMediaInfo(const LLParcel* parcel);
145 ~LLViewerParcelMediaInfo() {}
146 void applyToParcel(LLParcel* parcel);
147 bool sameParcel(const LLParcel* parcel) const;
148 bool operator==(const LLViewerParcelMediaInfo &rhs) const;
149private:
150 std::string mMediaURL;
151 std::string mMediaType;
152 LLUUID mMediaID;
153 S32 mMediaWidth;
154 S32 mMediaHeight;
155 U8 mMediaAutoScale;
156 U8 mMediaLoop;
157 S32 mParcelLocalID;
158};
123#endif 159#endif
diff --git a/linden/indra/newview/llviewerwindow.cpp b/linden/indra/newview/llviewerwindow.cpp
index 8a343ac..868094e 100644
--- a/linden/indra/newview/llviewerwindow.cpp
+++ b/linden/indra/newview/llviewerwindow.cpp
@@ -1278,6 +1278,13 @@ LLViewerWindow::LLViewerWindow(
1278 LLAppViewer::instance()->forceExit(1); 1278 LLAppViewer::instance()->forceExit(1);
1279 } 1279 }
1280 1280
1281 const U32 real_fsaa = mWindow->getFSAASamples();
1282 if (real_fsaa != gSavedSettings.getU32("RenderFSAASamples"))
1283 {
1284 LL_WARNS("Window") << "Window created with reduced anti-aliasing samples: " << real_fsaa << "x FSAA." << LL_ENDL;
1285 gSavedSettings.setU32("RenderFSAASamples", real_fsaa);
1286 }
1287
1281 // Get the real window rect the window was created with (since there are various OS-dependent reasons why 1288 // Get the real window rect the window was created with (since there are various OS-dependent reasons why
1282 // the size of a window or fullscreen context may have been adjusted slightly...) 1289 // the size of a window or fullscreen context may have been adjusted slightly...)
1283 F32 ui_scale_factor = gSavedSettings.getF32("UIScaleFactor"); 1290 F32 ui_scale_factor = gSavedSettings.getF32("UIScaleFactor");
@@ -2178,7 +2185,7 @@ void LLViewerWindow::draw()
2178 { 2185 {
2179 // Used for special titles such as "MyViewer - Special E3 2003 Beta" 2186 // Used for special titles such as "MyViewer - Special E3 2003 Beta"
2180 const S32 DIST_FROM_TOP = 20; 2187 const S32 DIST_FROM_TOP = 20;
2181 LLFontGL::getFontSansSerifBig()->renderUTF8( 2188 LLFontGL::getFontSansSerifLarge()->renderUTF8(
2182 mOverlayTitle, 0, 2189 mOverlayTitle, 0,
2183 llround( getWindowWidth() * 0.5f), 2190 llround( getWindowWidth() * 0.5f),
2184 getWindowHeight() - DIST_FROM_TOP, 2191 getWindowHeight() - DIST_FROM_TOP,
@@ -2838,6 +2845,7 @@ BOOL LLViewerWindow::handlePerFrameHover()
2838 } 2845 }
2839 // In the future we may wish to hide the tools menu unless you 2846 // In the future we may wish to hide the tools menu unless you
2840 // are building. JC 2847 // are building. JC
2848 // I think the users generally told LL to get fucked on that silly idea. Pfffft
2841 //gMenuBarView->setItemVisible("Tools", gFloaterTools->getVisible()); 2849 //gMenuBarView->setItemVisible("Tools", gFloaterTools->getVisible());
2842 //gMenuBarView->arrange(); 2850 //gMenuBarView->arrange();
2843 } 2851 }
@@ -2910,7 +2918,9 @@ BOOL LLViewerWindow::handlePerFrameHover()
2910 2918
2911 // Always update console 2919 // Always update console
2912 LLRect console_rect = getChatConsoleRect(); 2920 LLRect console_rect = getChatConsoleRect();
2913 console_rect.mBottom = gHUDView->getRect().mBottom + getChatConsoleBottomPad(); 2921 // Add a magic number so the pre login console does not cover the login panel.
2922 // TODO: Would be nice to only do this for the pre login window.
2923 console_rect.mBottom = gHUDView->getRect().mBottom + getChatConsoleBottomPad() + 20;
2914 gConsole->reshape(console_rect.getWidth(), console_rect.getHeight()); 2924 gConsole->reshape(console_rect.getWidth(), console_rect.getHeight());
2915 gConsole->setRect(console_rect); 2925 gConsole->setRect(console_rect);
2916 } 2926 }
diff --git a/linden/indra/newview/llvoavatar.cpp b/linden/indra/newview/llvoavatar.cpp
index 49d786d..2345bf6 100644
--- a/linden/indra/newview/llvoavatar.cpp
+++ b/linden/indra/newview/llvoavatar.cpp
@@ -1496,8 +1496,16 @@ LLPartSysData LLVOAvatar::sCloud;
1496void LLVOAvatar::initCloud() 1496void LLVOAvatar::initCloud()
1497{ 1497{
1498 // fancy particle cloud designed by Brent 1498 // fancy particle cloud designed by Brent
1499 std::string filename = gDirUtilp->getExpandedFilename(LL_PATH_PER_SL_ACCOUNT, "cloud.xml");
1500 if(!gDirUtilp->fileExists(filename))
1501 {
1502 filename = gDirUtilp->getExpandedFilename(LL_PATH_USER_SETTINGS, "cloud.xml");
1503 }
1504 if(!gDirUtilp->fileExists(filename))
1505 {
1506 filename = gDirUtilp->getExpandedFilename(LL_PATH_APP_SETTINGS, "cloud.xml");
1507 }
1499 1508
1500 std::string filename = gDirUtilp->getExpandedFilename(LL_PATH_APP_SETTINGS, "cloud.xml");
1501 LLSD cloud; 1509 LLSD cloud;
1502 llifstream in_file(filename); 1510 llifstream in_file(filename);
1503 LLSDSerialize::fromXMLDocument(cloud, in_file); 1511 LLSDSerialize::fromXMLDocument(cloud, in_file);
diff --git a/linden/indra/newview/llvoiceclient.cpp b/linden/indra/newview/llvoiceclient.cpp
index da7b840..63362be 100644
--- a/linden/indra/newview/llvoiceclient.cpp
+++ b/linden/indra/newview/llvoiceclient.cpp
@@ -1539,7 +1539,9 @@ void LLVoiceClient::stateMachine()
1539{ 1539{
1540 1540
1541 // Disable voice as long as the viewer is disconnected from the sim (login/relog) 1541 // Disable voice as long as the viewer is disconnected from the sim (login/relog)
1542 setVoiceEnabled(!gDisconnected); 1542 setVoiceEnabled(!gDisconnected
1543 && gSavedSettings.getBOOL("EnableVoiceChat")
1544 && !gSavedSettings.getBOOL("CmdLineDisableVoice") );
1543 1545
1544 if(mVoiceEnabled) 1546 if(mVoiceEnabled)
1545 { 1547 {
diff --git a/linden/indra/newview/llworldmap.cpp b/linden/indra/newview/llworldmap.cpp
index bd3996d..608d720 100644
--- a/linden/indra/newview/llworldmap.cpp
+++ b/linden/indra/newview/llworldmap.cpp
@@ -81,7 +81,9 @@ LLSimInfo::LLSimInfo()
81 mAccess(0x0), 81 mAccess(0x0),
82 mRegionFlags(0x0), 82 mRegionFlags(0x0),
83 mWaterHeight(0.f), 83 mWaterHeight(0.f),
84 mAlpha(-1.f) 84 mAlpha(-1.f),
85 msizeX(REGION_WIDTH_UNITS),
86 msizeY(REGION_WIDTH_UNITS)
85{ 87{
86} 88}
87 89
diff --git a/linden/indra/newview/llworldmapview.cpp b/linden/indra/newview/llworldmapview.cpp
index 8d9ed1b..d7a6838 100644
--- a/linden/indra/newview/llworldmapview.cpp
+++ b/linden/indra/newview/llworldmapview.cpp
@@ -472,7 +472,7 @@ void LLWorldMapView::draw()
472 F32 bottom = sPanY + half_height + relative_y; 472 F32 bottom = sPanY + half_height + relative_y;
473 F32 left = sPanX + half_width + relative_x; 473 F32 left = sPanX + half_width + relative_x;
474 F32 top = bottom+ (sMapScale * info->msizeY / REGION_WIDTH_METERS); 474 F32 top = bottom+ (sMapScale * info->msizeY / REGION_WIDTH_METERS);
475 F32 right = left + (sMapScale * info->msizeY / REGION_WIDTH_METERS); 475 F32 right = left + (sMapScale * info->msizeX / REGION_WIDTH_METERS);
476 476
477 // Switch to world map texture (if available for this region) if either: 477 // Switch to world map texture (if available for this region) if either:
478 // 1. Tiles are zoomed out small enough, or 478 // 1. Tiles are zoomed out small enough, or
diff --git a/linden/indra/newview/llxmlrpctransaction.cpp b/linden/indra/newview/llxmlrpctransaction.cpp
index 058946e..675ba42 100644
--- a/linden/indra/newview/llxmlrpctransaction.cpp
+++ b/linden/indra/newview/llxmlrpctransaction.cpp
@@ -226,10 +226,10 @@ void LLXMLRPCTransaction::Impl::init(XMLRPC_REQUEST request, bool useGzip)
226 mCurlRequest = new LLCurlEasyRequest(); 226 mCurlRequest = new LLCurlEasyRequest();
227 } 227 }
228 228
229 if (gSavedSettings.getBOOL("BrowserProxyEnabled")) 229 if (gSavedSettings.getBOOL("XMLRPCProxyEnabled"))
230 { 230 {
231 mProxyAddress = gSavedSettings.getString("BrowserProxyAddress"); 231 mProxyAddress = gSavedSettings.getString("XMLRPCProxyAddress");
232 S32 port = gSavedSettings.getS32 ( "BrowserProxyPort" ); 232 S32 port = gSavedSettings.getS32 ( "XMLRPCProxyPort" );
233 233
234 // tell curl about the settings 234 // tell curl about the settings
235 mCurlRequest->setoptString(CURLOPT_PROXY, mProxyAddress); 235 mCurlRequest->setoptString(CURLOPT_PROXY, mProxyAddress);
diff --git a/linden/indra/newview/res/viewerRes.rc b/linden/indra/newview/res/viewerRes.rc
index afe6988..65d4cbb 100644
--- a/linden/indra/newview/res/viewerRes.rc
+++ b/linden/indra/newview/res/viewerRes.rc
@@ -156,11 +156,11 @@ BEGIN
156 BEGIN 156 BEGIN
157 VALUE "CompanyName", "meta-impy Viewer Project" 157 VALUE "CompanyName", "meta-impy Viewer Project"
158 VALUE "FileDescription", "meta-impy Experimental" 158 VALUE "FileDescription", "meta-impy Experimental"
159 VALUE "FileVersion", "2010.09.04" 159 VALUE "FileVersion", "2011.04.02"
160 VALUE "InternalName", "meta-impy Experimental" 160 VALUE "InternalName", "meta-impy Experimental"
161 VALUE "OriginalFilename", "meta-impy.exe" 161 VALUE "OriginalFilename", "meta-impy.exe"
162 VALUE "ProductName", "meta-impy Weekly" 162 VALUE "ProductName", "meta-impy Weekly"
163 VALUE "ProductVersion", "2010.09.04" 163 VALUE "ProductVersion", "2011.04.02"
164 END 164 END
165 END 165 END
166 BLOCK "VarFileInfo" 166 BLOCK "VarFileInfo"
diff --git a/linden/indra/newview/skins/default/xui/en-us/floater_about_land.xml b/linden/indra/newview/skins/default/xui/en-us/floater_about_land.xml
index 5836901..d57ca5f 100644
--- a/linden/indra/newview/skins/default/xui/en-us/floater_about_land.xml
+++ b/linden/indra/newview/skins/default/xui/en-us/floater_about_land.xml
@@ -915,32 +915,18 @@ Only large parcels can be listed in search.
915 right="-12" 915 right="-12"
916 scale_image="true" 916 scale_image="true"
917 width="70" /> 917 width="70" />
918 <check_box
919 bottom_delta="-22"
920 enabled="true"
921 follows="left|top"
922 font="SansSerifSmall"
923 height="16"
924 initial_value="false"
925 label="Hide URL"
926 left="80"
927 mouse_opaque="true"
928 name="hide_media_url"
929 radio_style="false"
930 tool_tip="Checking this option will hide the media URL from any non-authorized viewers of this parcel information. Note this is not available for HTML types."
931 width="150" />
932 <text 918 <text
933 bottom_delta="0" 919 bottom_delta="-22"
934 follows="right|top" 920 follows="right|top"
935 font="SansSerifSmall" 921 font="SansSerifSmall"
936 halign="right" 922 halign="left"
937 height="16" 923 height="16"
938 length="1" 924 length="1"
939 name="media_reset" 925 name="media_reset"
940 right="-164" 926 left="80"
941 tool_tip="Amount of time until parcel automatically reverts to default URL (0 for never return)" 927 tool_tip="Amount of time until parcel automatically reverts to default URL (0 for never return)"
942 type="string" 928 type="string"
943 width="185"> 929 width="120">
944 Return to Home URL in: 930 Return to Home URL in:
945 </text> 931 </text>
946 <spinner 932 <spinner
@@ -948,14 +934,13 @@ Only large parcels can be listed in search.
948 decimal_digits="0" 934 decimal_digits="0"
949 enabled="false" 935 enabled="false"
950 follows="right|top" 936 follows="right|top"
951 halign="right"
952 height="16" 937 height="16"
953 increment="1" 938 increment="1"
954 initial_val="0" 939 initial_val="0"
955 max_val="1024" 940 max_val="1024"
956 min_val="0" 941 min_val="0"
957 name="media_reset_time" 942 name="media_reset_time"
958 right="-90" 943 left_delta="126"
959 tool_tip="Amount of time until parcel reverts to default URL (0 for never return)" 944 tool_tip="Amount of time until parcel reverts to default URL (0 for never return)"
960 width="64" /> 945 width="64" />
961 <text 946 <text
@@ -964,12 +949,11 @@ Only large parcels can be listed in search.
964 font="SansSerifSmall" 949 font="SansSerifSmall"
965 halign="left" 950 halign="left"
966 height="16" 951 height="16"
967 left_delta="70" 952 left_delta="72"
968 length="1" 953 length="1"
969 name="minutes" 954 name="minutes"
970 right="-10"
971 type="string"> 955 type="string">
972 Minutes 956 minutes
973 </text> 957 </text>
974 <text 958 <text
975 bottom_delta="-22" 959 bottom_delta="-22"
@@ -1315,20 +1299,6 @@ Select the thumbnail to choose a different texture.
1315 name="music_url" 1299 name="music_url"
1316 right="-15" 1300 right="-15"
1317 select_on_focus="true" /> 1301 select_on_focus="true" />
1318 <check_box
1319 bottom_delta="-25"
1320 enabled="true"
1321 follows="left|top"
1322 font="SansSerifSmall"
1323 height="16"
1324 initial_value="false"
1325 label="Hide URL"
1326 left="80"
1327 mouse_opaque="true"
1328 name="hide_music_url"
1329 radio_style="false"
1330 tool_tip="Checking this option will hide the music URL from any non-authorized viewers of this parcel information."
1331 width="150" />
1332 <text 1302 <text
1333 bottom_delta="-65" 1303 bottom_delta="-65"
1334 follows="left|top" 1304 follows="left|top"
diff --git a/linden/indra/newview/skins/default/xui/en-us/floater_buy_land.xml b/linden/indra/newview/skins/default/xui/en-us/floater_buy_land.xml
index 3370ea8..47638d5 100644
--- a/linden/indra/newview/skins/default/xui/en-us/floater_buy_land.xml
+++ b/linden/indra/newview/skins/default/xui/en-us/floater_buy_land.xml
@@ -117,7 +117,7 @@ sold with objects
117 <icon follows="top|left" height="64" image_name="badge_ok.j2c" left="0" name="step_1" 117 <icon follows="top|left" height="64" image_name="badge_ok.j2c" left="0" name="step_1"
118 width="64" /> 118 width="64" />
119 <text bottom_delta="38" follows="top|left" height="16" left="72" 119 <text bottom_delta="38" follows="top|left" height="16" left="72"
120 name="account_action" right="438" width="218" font="SansSerifBig" > 120 name="account_action" right="438" width="218" font="SansSerifLarge" >
121 Upgrade you to premium membership. 121 Upgrade you to premium membership.
122 </text> 122 </text>
123 <text follows="top|left" height="16" left="72" name="account_reason" right="400" 123 <text follows="top|left" height="16" left="72" name="account_reason" right="400"
@@ -139,7 +139,7 @@ sold with objects
139 <icon follows="top|left" height="64" image_name="badge_note.j2c" left="0" 139 <icon follows="top|left" height="64" image_name="badge_note.j2c" left="0"
140 name="step_2" width="64" /> 140 name="step_2" width="64" />
141 <text bottom_delta="38" follows="top|left" height="16" left="72" 141 <text bottom_delta="38" follows="top|left" height="16" left="72"
142 name="land_use_action" right="438" width="218" font="SansSerifBig" > 142 name="land_use_action" right="438" width="218" font="SansSerifLarge" >
143 Increase your monthly land use fees to US$ 40/month. 143 Increase your monthly land use fees to US$ 40/month.
144 </text> 144 </text>
145 <text follows="top|left" height="32" left="72" name="land_use_reason" right="435" 145 <text follows="top|left" height="32" left="72" name="land_use_reason" right="435"
@@ -151,7 +151,7 @@ This parcel is 512 sq.m. of land.
151 <icon follows="top|left" height="64" image_name="badge_note.j2c" left="0" 151 <icon follows="top|left" height="64" image_name="badge_note.j2c" left="0"
152 name="step_3" width="64" /> 152 name="step_3" width="64" />
153 <text bottom_delta="38" follows="top|left" height="16" left="72" 153 <text bottom_delta="38" follows="top|left" height="16" left="72"
154 name="purchase_action" right="438" font="SansSerifBig" > 154 name="purchase_action" right="438" font="SansSerifLarge" >
155 Pay Joe Resident L$ 4000 for the land 155 Pay Joe Resident L$ 4000 for the land
156 </text> 156 </text>
157 <text follows="top|left" height="16" left="72" name="currency_reason" right="400"> 157 <text follows="top|left" height="16" left="72" name="currency_reason" right="400">
diff --git a/linden/indra/newview/skins/default/xui/en-us/floater_media_filter.xml b/linden/indra/newview/skins/default/xui/en-us/floater_media_filter.xml
index 9b7355c..f0fb3a3 100644
--- a/linden/indra/newview/skins/default/xui/en-us/floater_media_filter.xml
+++ b/linden/indra/newview/skins/default/xui/en-us/floater_media_filter.xml
@@ -1,9 +1,22 @@
1<?xml version="1.0" encoding="utf-8" standalone="yes" ?> 1<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
2<floater name="floatermediafilter" title="Media Filter" rect_control="MediaFilterRect" 2<floater name="floatermediafilter" title="Media Filter" rect_control="MediaFilterRect"
3 can_close="true" can_drag_on_left="false" can_minimize="true" can_resize="true" 3 can_close="true" can_drag_on_left="false" can_minimize="true" can_resize="true"
4 height="350" width="600" min_height="350" min_width="600"> 4 height="410" width="600" min_height="350" min_width="600">
5
6 <check_box control_name="MediaEnableFilter" name="enable_mediafilter" label="Enable Media Filter"
7 initial_value="true" tool_tip="Enables filtering media URLs by domain names."
8 font="SansSerifSmall" mouse_opaque="true"
9 left="14" height="16" bottom_delta="-45" width="4500" follows="left|top" />
10
11 <check_box control_name="MediaFilterOnlyRemoteCommands" name="filter_only_remote"
12 label="Filter only when a script initiates the stream (less secure)" initial_value="false"
13 tool_tip="This will prevent popups asking about URLs that are permanently set on a parcel.
14Only scripted changes to the media URL and scripted requests to start playing a stream will be filtered."
15 font="SansSerifSmall" mouse_opaque="true"
16 left_delta="14" height="16" width="450" follows="left|top" />
17
5 <text name="info1" font="SansSerif" mouse_opaque="true" halign="center" 18 <text name="info1" font="SansSerif" mouse_opaque="true" halign="center"
6 bottom_delta="-45" left="20" height="20" width="560" follows="left|right|top"> 19 bottom_delta="-40" left="20" height="20" width="560" follows="left|right|top">
7 Domains in bold are in the persistent list (i.e. they are whitelisted or blacklisted). 20 Domains in bold are in the persistent list (i.e. they are whitelisted or blacklisted).
8 </text> 21 </text>
9 <text name="info2" font="SansSerif" mouse_opaque="true" halign="center" 22 <text name="info2" font="SansSerif" mouse_opaque="true" halign="center"
@@ -14,48 +27,68 @@
14 <scroll_list name="whitelist_list" follows="top|bottom|left" 27 <scroll_list name="whitelist_list" follows="top|bottom|left"
15 background_visible="true" mouse_opaque="true" 28 background_visible="true" mouse_opaque="true"
16 multi_select="false" column_padding="5" draw_border="true" draw_heading="true" 29 multi_select="false" column_padding="5" draw_border="true" draw_heading="true"
17 bottom_delta="-205" left="15" height="200" width="280"> 30 bottom_delta="-200" left="15" height="200" width="280">
18 <column name="whitelist_col" label="Allowed domains/objects" dynamicwidth="true" /> 31 <column name="whitelist_col" label="Allowed domains or server objects" dynamicwidth="true" />
19 </scroll_list> 32 </scroll_list>
20 33
21 <scroll_list name="blacklist_list" follows="top|bottom|right" 34 <scroll_list name="blacklist_list" follows="top|bottom|right"
22 background_visible="true" mouse_opaque="true" 35 background_visible="true" mouse_opaque="true"
23 multi_select="false" column_padding="5" draw_border="true" draw_heading="true" 36 multi_select="false" column_padding="5" draw_border="true" draw_heading="true"
24 bottom_delta="0" right="-15" height="200" width="280"> 37 bottom_delta="0" right="-15" height="200" width="280">
25 <column name="blacklist_col" label="Blocked domains/objects" dynamicwidth="true" /> 38 <column name="blacklist_col" label="Blocked domains or server objects" dynamicwidth="true" />
26 </scroll_list> 39 </scroll_list>
27 40
28 <button name="add_whitelist" font="SansSerif" label="Add..." halign="center" 41 <button name="add_whitelist" font="SansSerif" label="Add..." halign="center"
42 tool_tip="Add a server to the whitelist"
29 enabled="true" mouse_opaque="true" follows="bottom|left" 43 enabled="true" mouse_opaque="true" follows="bottom|left"
30 bottom_delta="-25" left="30" height="20" width="80" /> 44 bottom_delta="-25" left="15" height="20" width="80" />
31 45
32 <button name="remove_whitelist" font="SansSerif" label="Remove" halign="center" 46 <button name="remove_whitelist" font="SansSerif" label="Remove" halign="center"
47 tool_tip="Remove the selected server from the whitelist"
33 enabled="true" mouse_opaque="true" follows="bottom|left" 48 enabled="true" mouse_opaque="true" follows="bottom|left"
34 bottom_delta="0" left_delta="100" height="20" width="80" /> 49 bottom_delta="0" left="100" height="20" width="80" />
35 50
36 <button name="clear_lists" font="SansSerif" label="Clear lists" halign="center" 51 <button name="clear_lists" font="SansSerif" label="Clear lists" halign="center"
37 enabled="true" mouse_opaque="true" follows="bottom|left|right" 52 tool_tip="Clear all lists"
38 bottom_delta="0" left_delta="110" height="20" width="120" /> 53 enabled="true" mouse_opaque="true" follows="bottom|left"
54 bottom_delta="0" left="205" height="20" width="90" />
55
56 <button name="show_ips" font="SansSerif" label="Show IPs" halign="center"
57 tool_tip="Show the IP associated with each domain name (makes the viewer pause while the list is refreshed, because of DNS lookups)"
58 enabled="true" mouse_opaque="true" follows="bottom|right"
59 bottom_delta="0" right="-205" height="20" width="90" />
39 60
40 <button name="add_blacklist" font="SansSerif" label="Add..." halign="center" 61 <button name="add_blacklist" font="SansSerif" label="Add..." halign="center"
62 tool_tip="Add a server to the blacklist"
41 enabled="true" mouse_opaque="true" follows="bottom|right" 63 enabled="true" mouse_opaque="true" follows="bottom|right"
42 bottom_delta="0" right="-130" height="20" width="80" /> 64 bottom_delta="0" right="-100" height="20" width="80" />
43 65
44 <button name="remove_blacklist" font="SansSerif" label="Remove" halign="center" 66 <button name="remove_blacklist" font="SansSerif" label="Remove" halign="center"
67 tool_tip="Remove the selected server from the blacklist"
45 enabled="true" mouse_opaque="true" follows="bottom|right" 68 enabled="true" mouse_opaque="true" follows="bottom|right"
46 bottom_delta="0" right="-30" height="20" width="80" /> 69 bottom_delta="0" right="-15" height="20" width="80" />
47 70
48 <text name="add_text" font="SansSerif" mouse_opaque="true" enabled="true" 71 <text name="add_text" font="SansSerif" mouse_opaque="true"
49 bottom_delta="-25" left="20" height="20" width="500" follows="left|right|bottom"> 72 bottom_delta="-25" left="20" height="20" width="450" follows="left|right|bottom">
50 New domain: 73 New domain:
51 </text> 74 </text>
52 75
76 <check_box name="match_ip" label="Add/remove matching IP" initial_value="true"
77 tool_tip="Add or remove any IP associated with the added or removed domain name"
78 font="SansSerifSmall" mouse_opaque="true" radio_style="false"
79 bottom_delta="2" right="-95" height="16" width="70" follows="right|bottom" />
80
53 <line_editor name="input_domain" max_length="255" font="SansSerif" enabled="false" 81 <line_editor name="input_domain" max_length="255" font="SansSerif" enabled="false"
82 tool_tip="Enter the new URL, domain name, IP or scripted object HTTP server path here"
54 select_all_on_focus_received="true" select_on_focus="true" 83 select_all_on_focus_received="true" select_on_focus="true"
55 bevel_style="in" border_style="line" border_thickness="1" 84 bevel_style="in" border_style="line" border_thickness="1"
56 bottom_delta="-20" right="-100" height="20" left="15" follows="left|bottom|right"/> 85 bottom_delta="-22" right="-180" height="20" left="15" follows="left|bottom|right"/>
57 86
58 <button name="commit_domain" font="SansSerif" label="Add" halign="center" enabled="false" 87 <button name="cancel_domain" font="SansSerif" label="Cancel" halign="center" enabled="false"
59 mouse_opaque="true" follows="bottom|right" 88 mouse_opaque="true" follows="bottom|right"
60 bottom_delta="0" right="-15" height="20" width="80"/> 89 bottom_delta="0" right="-15" height="20" width="80"/>
90 <button name="commit_domain" font="SansSerif" label="Add" halign="center" enabled="false"
91 tool_tip="Add to the list"
92 mouse_opaque="true" follows="bottom|right"
93 bottom_delta="0" right="-95" height="20" width="80"/>
61</floater> 94</floater>
diff --git a/linden/indra/newview/skins/default/xui/en-us/floater_preferences.xml b/linden/indra/newview/skins/default/xui/en-us/floater_preferences.xml
index 939a877..213147a 100644
--- a/linden/indra/newview/skins/default/xui/en-us/floater_preferences.xml
+++ b/linden/indra/newview/skins/default/xui/en-us/floater_preferences.xml
@@ -18,8 +18,11 @@
18 halign="center" height="20" 18 halign="center" height="20"
19 help_url="http://support.imprudenceviewer.org/" 19 help_url="http://support.imprudenceviewer.org/"
20 label="Support" left="9" mouse_opaque="true" 20 label="Support" left="9" mouse_opaque="true"
21 name="Support" scale_image="true" width="100" /> 21 name="Support" scale_image="true" width="90" />
22 <tab_container bottom="-476" enabled="true" follows="left|top|right|bottom" height="455" 22 <button bottom_delta="0" follows="left|bottom" font="SansSerif" height="20" width="160"
23 label="Reset All To Default" name="reset_btn" left_delta="95"
24 tool_tip="Reset all preferences to their default values (requires a restart)" />
25 <tab_container bottom="-476" enabled="true" follows="left|top|right|bottom" height="455"
23 left="0" mouse_opaque="false" name="pref core" tab_group="1" 26 left="0" mouse_opaque="false" name="pref core" tab_group="1"
24 tab_position="left" tab_width="120" width="620" /> 27 tab_position="left" tab_width="120" width="620" />
25</floater> 28</floater>
diff --git a/linden/indra/newview/skins/default/xui/en-us/floater_sell_land.xml b/linden/indra/newview/skins/default/xui/en-us/floater_sell_land.xml
index d91b5ff..3aeba26 100644
--- a/linden/indra/newview/skins/default/xui/en-us/floater_sell_land.xml
+++ b/linden/indra/newview/skins/default/xui/en-us/floater_sell_land.xml
@@ -27,7 +27,7 @@
27 <icon bottom_delta="-66" follows="top|left" height="64" image_name="badge_note.j2c" 27 <icon bottom_delta="-66" follows="top|left" height="64" image_name="badge_note.j2c"
28 left="0" name="step_price" width="64" /> 28 left="0" name="step_price" width="64" />
29 <text bottom_delta="38" follows="top|left" height="16" left="72" name="price_label" 29 <text bottom_delta="38" follows="top|left" height="16" left="72" name="price_label"
30 right="-20" font="SansSerifBig" > 30 right="-20" font="SansSerifLarge" >
31 Set a price: 31 Set a price:
32 </text> 32 </text>
33 <text follows="top|left" height="16" left="72" name="price_text" right="-20"> 33 <text follows="top|left" height="16" left="72" name="price_text" right="-20">
@@ -44,7 +44,7 @@
44 <icon follows="top|left" height="64" image_name="badge_note.j2c" left="0" 44 <icon follows="top|left" height="64" image_name="badge_note.j2c" left="0"
45 name="step_sell_to" width="64" /> 45 name="step_sell_to" width="64" />
46 <text bottom_delta="38" follows="top|left" height="16" left="72" name="sell_to_label" 46 <text bottom_delta="38" follows="top|left" height="16" left="72" name="sell_to_label"
47 right="-20" font="SansSerifBig" > 47 right="-20" font="SansSerifLarge" >
48 Sell the land to: 48 Sell the land to:
49 </text> 49 </text>
50 <text follows="top|left" height="16" left="72" name="sell_to_text" right="-20"> 50 <text follows="top|left" height="16" left="72" name="sell_to_text" right="-20">
@@ -69,7 +69,7 @@
69 <icon follows="top|left" height="64" image_name="badge_note.j2c" left="0" 69 <icon follows="top|left" height="64" image_name="badge_note.j2c" left="0"
70 name="step_sell_objects" width="64" /> 70 name="step_sell_objects" width="64" />
71 <text bottom_delta="38" follows="top|left" height="16" left="72" 71 <text bottom_delta="38" follows="top|left" height="16" left="72"
72 name="sell_objects_label" right="-20" font="SansSerifBig" > 72 name="sell_objects_label" right="-20" font="SansSerifLarge" >
73 Sell the objects with the land? 73 Sell the objects with the land?
74 </text> 74 </text>
75 <text bottom_delta="-20" follows="top|left" height="16" left="72" 75 <text bottom_delta="-20" follows="top|left" height="16" left="72"
@@ -89,7 +89,7 @@
89 <button bottom_delta="4" height="16" label="Show Objects" name="show_objects" 89 <button bottom_delta="4" height="16" label="Show Objects" name="show_objects"
90 right="414" width="110" /> 90 right="414" width="110" />
91 <text bottom_delta="-35" follows="top|left" height="16" left="72" 91 <text bottom_delta="-35" follows="top|left" height="16" left="72"
92 name="nag_message_label" right="-20" font="SansSerifBig" > 92 name="nag_message_label" right="-20" font="SansSerifLarge" >
93 REMEMBER: All sales are final. 93 REMEMBER: All sales are final.
94 </text> 94 </text>
95 <button bottom="-479" follows="bottom|left" height="20" label="Set Land For Sale" 95 <button bottom="-479" follows="bottom|left" height="20" label="Set Land For Sale"
diff --git a/linden/indra/newview/skins/default/xui/en-us/fonts.xml b/linden/indra/newview/skins/default/xui/en-us/fonts.xml
index 7343ac2..e9ede83 100644
--- a/linden/indra/newview/skins/default/xui/en-us/fonts.xml
+++ b/linden/indra/newview/skins/default/xui/en-us/fonts.xml
@@ -147,6 +147,10 @@
147 comment="Size of large font (points, or 1/72 of an inch)" 147 comment="Size of large font (points, or 1/72 of an inch)"
148 size="12" 148 size="12"
149 /> 149 />
150 <font_size name="Bigger"
151 comment="Size of medium font (points, or 1/72 of an inch)"
152 size="11"
153 />
150 <font_size name="Medium" 154 <font_size name="Medium"
151 comment="Size of medium font (points, or 1/72 of an inch)" 155 comment="Size of medium font (points, or 1/72 of an inch)"
152 size="10" 156 size="10"
diff --git a/linden/indra/newview/skins/default/xui/en-us/mime_types_linux.xml b/linden/indra/newview/skins/default/xui/en-us/mime_types_linux.xml
index e95b371..f0ba830 100755
--- a/linden/indra/newview/skins/default/xui/en-us/mime_types_linux.xml
+++ b/linden/indra/newview/skins/default/xui/en-us/mime_types_linux.xml
@@ -431,6 +431,17 @@
431 media_plugin_gstreamer 431 media_plugin_gstreamer
432 </impl> 432 </impl>
433 </mimetype> 433 </mimetype>
434 <mimetype name="video/x-m4v">
435 <label name="video/m4v_label">
436 Movie (M4V)
437 </label>
438 <widgettype>
439 movie
440 </widgettype>
441 <impl>
442 media_plugin_gstreamer
443 </impl>
444 </mimetype>
434 <mimetype menu="1" name="video/quicktime"> 445 <mimetype menu="1" name="video/quicktime">
435 <label name="video/quicktime_label"> 446 <label name="video/quicktime_label">
436 Movie (QuickTime) 447 Movie (QuickTime)
diff --git a/linden/indra/newview/skins/default/xui/en-us/mime_types_mac.xml b/linden/indra/newview/skins/default/xui/en-us/mime_types_mac.xml
index 7931e55..e1751eb 100755
--- a/linden/indra/newview/skins/default/xui/en-us/mime_types_mac.xml
+++ b/linden/indra/newview/skins/default/xui/en-us/mime_types_mac.xml
@@ -431,6 +431,17 @@
431 media_plugin_quicktime 431 media_plugin_quicktime
432 </impl> 432 </impl>
433 </mimetype> 433 </mimetype>
434 <mimetype name="video/x-m4v">
435 <label name="video/m4v_label">
436 Movie (M4V)
437 </label>
438 <widgettype>
439 movie
440 </widgettype>
441 <impl>
442 media_plugin_gstreamer
443 </impl>
444 </mimetype>
434 <mimetype menu="1" name="video/quicktime"> 445 <mimetype menu="1" name="video/quicktime">
435 <label name="video/quicktime_label"> 446 <label name="video/quicktime_label">
436 Movie (QuickTime) 447 Movie (QuickTime)
diff --git a/linden/indra/newview/skins/default/xui/en-us/mime_types_windows.xml b/linden/indra/newview/skins/default/xui/en-us/mime_types_windows.xml
index 5ee4ed0..26491e0 100644
--- a/linden/indra/newview/skins/default/xui/en-us/mime_types_windows.xml
+++ b/linden/indra/newview/skins/default/xui/en-us/mime_types_windows.xml
@@ -428,8 +428,19 @@
428 movie 428 movie
429 </widgettype> 429 </widgettype>
430 <impl> 430 <impl>
431 media_plugin_quicktime 431 media_plugin_quicktime
432 </impl> 432 </impl>
433 </mimetype>
434 <mimetype name="video/x-m4v">
435 <label name="video/m4v_label">
436 Movie (M4V)
437 </label>
438 <widgettype>
439 movie
440 </widgettype>
441 <impl>
442 media_plugin_gstreamer
443 </impl>
433 </mimetype> 444 </mimetype>
434 <mimetype menu="1" name="video/quicktime"> 445 <mimetype menu="1" name="video/quicktime">
435 <label name="video/quicktime_label"> 446 <label name="video/quicktime_label">
diff --git a/linden/indra/newview/skins/default/xui/en-us/notifications.xml b/linden/indra/newview/skins/default/xui/en-us/notifications.xml
index 219f85b..b24b136 100644
--- a/linden/indra/newview/skins/default/xui/en-us/notifications.xml
+++ b/linden/indra/newview/skins/default/xui/en-us/notifications.xml
@@ -7197,6 +7197,25 @@ IM history could not be found for [NAME].
7197</notification> 7197</notification>
7198 7198
7199<notification 7199<notification
7200 icon="alertmodal.tga"
7201 name="InvalidLogInSecondLife"
7202 type="alertmodal">
7203Oops! The login name you entered wasn't formatted correctly!
7204
7205[SECOND_LIFE] accepts the following login formats:
7206
7207 - username
7208 - username.Resident
7209 - firstname.lastname
7210
7211If you don't have an account, would you like to create one now?
7212 <usetemplate
7213 name="okcancelbuttons"
7214 notext="Try again"
7215 yestext="Create an account"/>
7216</notification>
7217
7218<notification
7200 icon="alert.tga" 7219 icon="alert.tga"
7201 name="ShowLookAtInfo" 7220 name="ShowLookAtInfo"
7202 type="alert"> 7221 type="alert">
@@ -7326,11 +7345,15 @@ The Second Life Terms of Service do not allow you to opt out. By logging in to S
7326 icon="alert.tga" 7345 icon="alert.tga"
7327 name="MediaAlert" 7346 name="MediaAlert"
7328 type="alert"> 7347 type="alert">
7329The owner of this parcel has requested [TYPE] URL pertaining to the following domain or scripted object to be loaded by your viewer[WARNING]: 7348The owner of this parcel has requested the following [TYPE] URL to be loaded by your viewer:
7349
7350[URL]
7351
7352You may choose to allow or deny the corresponding domain or in-world scripted object server:
7330 7353
7331[DOMAIN] 7354[DOMAIN]
7332 7355
7333"Allow" and "Deny" apply only for this session, while "Blacklist" and "Whitelist" apply forever to the above domain or scripted object. 7356"Allow" and "Deny" apply only for this session, while "Blacklist" and "Whitelist" apply forever.
7334 <form name="form"> 7357 <form name="form">
7335 <button 7358 <button
7336 index="0" 7359 index="0"
diff --git a/linden/indra/newview/skins/default/xui/en-us/panel_group_general.xml b/linden/indra/newview/skins/default/xui/en-us/panel_group_general.xml
index 21d914b..0895e3f 100644
--- a/linden/indra/newview/skins/default/xui/en-us/panel_group_general.xml
+++ b/linden/indra/newview/skins/default/xui/en-us/panel_group_general.xml
@@ -21,7 +21,7 @@ Hover your mouse over the options for more help.
21 prevalidate="ascii" v_pad="0" width="300" spell_check="true" /> 21 prevalidate="ascii" v_pad="0" width="300" spell_check="true" />
22 <text bg_visible="false" border_drop_shadow_visible="false" border_visible="false" 22 <text bg_visible="false" border_drop_shadow_visible="false" border_visible="false"
23 bottom="-20" drop_shadow_visible="true" follows="left|top" 23 bottom="-20" drop_shadow_visible="true" follows="left|top"
24 font="SansSerifBig" h_pad="0" halign="left" height="16" left="7" 24 font="SansSerifLarge" h_pad="0" halign="left" height="16" left="7"
25 mouse_opaque="true" name="group_name" v_pad="0" width="300"> 25 mouse_opaque="true" name="group_name" v_pad="0" width="300">
26 Type your new group name here 26 Type your new group name here
27 </text> 27 </text>
diff --git a/linden/indra/newview/skins/default/xui/en-us/panel_group_land_money.xml b/linden/indra/newview/skins/default/xui/en-us/panel_group_land_money.xml
index 9341d4b..b5f7b37 100644
--- a/linden/indra/newview/skins/default/xui/en-us/panel_group_land_money.xml
+++ b/linden/indra/newview/skins/default/xui/en-us/panel_group_land_money.xml
@@ -18,7 +18,7 @@
18 </string> 18 </string>
19 <text bg_visible="false" border_drop_shadow_visible="false" border_visible="false" 19 <text bg_visible="false" border_drop_shadow_visible="false" border_visible="false"
20 bottom="-20" drop_shadow_visible="true" follows="left|top" 20 bottom="-20" drop_shadow_visible="true" follows="left|top"
21 font="SansSerifBig" h_pad="0" halign="left" height="16" left="7" 21 font="SansSerifLarge" h_pad="0" halign="left" height="16" left="7"
22 mouse_opaque="true" name="group_land_heading" v_pad="0" width="150"> 22 mouse_opaque="true" name="group_land_heading" v_pad="0" width="150">
23 Group Owned Land 23 Group Owned Land
24 </text> 24 </text>
@@ -105,7 +105,7 @@
105 </text> 105 </text>
106 <text bg_visible="false" border_drop_shadow_visible="false" border_visible="false" 106 <text bg_visible="false" border_drop_shadow_visible="false" border_visible="false"
107 bottom_delta="-25" drop_shadow_visible="true" follows="left|top" 107 bottom_delta="-25" drop_shadow_visible="true" follows="left|top"
108 font="SansSerifBig" h_pad="0" halign="left" height="16" left="12" 108 font="SansSerifLarge" h_pad="0" halign="left" height="16" left="12"
109 mouse_opaque="true" name="group_money_heading" v_pad="0" width="150"> 109 mouse_opaque="true" name="group_money_heading" v_pad="0" width="150">
110 Group [CURRENCY] 110 Group [CURRENCY]
111 </text> 111 </text>
diff --git a/linden/indra/newview/skins/default/xui/en-us/panel_group_notices.xml b/linden/indra/newview/skins/default/xui/en-us/panel_group_notices.xml
index bca87d9..e6d7604 100644
--- a/linden/indra/newview/skins/default/xui/en-us/panel_group_notices.xml
+++ b/linden/indra/newview/skins/default/xui/en-us/panel_group_notices.xml
@@ -15,7 +15,7 @@ the General tab.
15 <button bottom="-24" font="SansSerif" halign="center" height="16" label="?" 15 <button bottom="-24" font="SansSerif" halign="center" height="16" label="?"
16 label_selected="?" left="391" name="help_button" width="20" /> 16 label_selected="?" left="391" name="help_button" width="20" />
17 <text bg_visible="false" border_drop_shadow_visible="false" border_visible="false" 17 <text bg_visible="false" border_drop_shadow_visible="false" border_visible="false"
18 bottom="-20" drop_shadow_visible="true" font="SansSerifBig" h_pad="0" 18 bottom="-20" drop_shadow_visible="true" font="SansSerifLarge" h_pad="0"
19 halign="left" height="16" left="7" mouse_opaque="true" name="lbl" v_pad="0" 19 halign="left" height="16" left="7" mouse_opaque="true" name="lbl" v_pad="0"
20 width="436"> 20 width="436">
21 Group Notices Archive 21 Group Notices Archive
@@ -51,7 +51,7 @@ Notice lists are limited to 200 notices per group on a daily basis.
51 <panel border="false" bottom="0" follows="all" height="268" label="Create New Notice" 51 <panel border="false" bottom="0" follows="all" height="268" label="Create New Notice"
52 left="1" mouse_opaque="true" name="panel_create_new_notice" width="418"> 52 left="1" mouse_opaque="true" name="panel_create_new_notice" width="418">
53 <text bg_visible="false" border_drop_shadow_visible="false" border_visible="false" 53 <text bg_visible="false" border_drop_shadow_visible="false" border_visible="false"
54 bottom="-18" drop_shadow_visible="true" font="SansSerifBig" h_pad="0" 54 bottom="-18" drop_shadow_visible="true" font="SansSerifLarge" h_pad="0"
55 halign="left" height="16" left="7" mouse_opaque="false" name="lbl" 55 halign="left" height="16" left="7" mouse_opaque="false" name="lbl"
56 v_pad="0" width="436"> 56 v_pad="0" width="436">
57 Create a Notice 57 Create a Notice
@@ -115,7 +115,7 @@ and you can&apos;t send a folder.
115 <panel border="false" bottom="0" follows="all" height="268" label="View Past Notice" 115 <panel border="false" bottom="0" follows="all" height="268" label="View Past Notice"
116 left="1" mouse_opaque="true" name="panel_view_past_notice" width="418"> 116 left="1" mouse_opaque="true" name="panel_view_past_notice" width="418">
117 <text bg_visible="false" border_drop_shadow_visible="false" border_visible="false" 117 <text bg_visible="false" border_drop_shadow_visible="false" border_visible="false"
118 bottom="-18" drop_shadow_visible="true" font="SansSerifBig" h_pad="0" 118 bottom="-18" drop_shadow_visible="true" font="SansSerifLarge" h_pad="0"
119 halign="left" height="16" left="7" mouse_opaque="false" name="lbl" 119 halign="left" height="16" left="7" mouse_opaque="false" name="lbl"
120 v_pad="0" width="436"> 120 v_pad="0" width="436">
121 Archived Notice 121 Archived Notice
diff --git a/linden/indra/newview/skins/default/xui/en-us/panel_group_roles.xml b/linden/indra/newview/skins/default/xui/en-us/panel_group_roles.xml
index e5b621e..014b28d 100644
--- a/linden/indra/newview/skins/default/xui/en-us/panel_group_roles.xml
+++ b/linden/indra/newview/skins/default/xui/en-us/panel_group_roles.xml
@@ -12,7 +12,7 @@
12 name="help_button" width="20" /> 12 name="help_button" width="20" />
13 <panel border="false" bottom="-24" height="24" left="7" name="members_header" 13 <panel border="false" bottom="-24" height="24" left="7" name="members_header"
14 visible="true" width="380"> 14 visible="true" width="380">
15 <text bottom_delta="-20" font="SansSerifBig" halign="left" height="16" left="0" 15 <text bottom_delta="-20" font="SansSerifLarge" halign="left" height="16" left="0"
16 name="static" width="150"> 16 name="static" width="150">
17 Members &amp; Roles 17 Members &amp; Roles
18 </text> 18 </text>
@@ -24,7 +24,7 @@ easily be customized, allowing for greater organization and flexibility.
24 </panel> 24 </panel>
25 <panel border="false" bottom_delta="0" height="24" left="7" name="roles_header" 25 <panel border="false" bottom_delta="0" height="24" left="7" name="roles_header"
26 visible="false" width="380"> 26 visible="false" width="380">
27 <text bottom_delta="-20" font="SansSerifBig" halign="left" height="16" left="0" 27 <text bottom_delta="-20" font="SansSerifLarge" halign="left" height="16" left="0"
28 name="static" width="100"> 28 name="static" width="100">
29 Roles 29 Roles
30 </text> 30 </text>
@@ -47,7 +47,7 @@ easily be customized, allowing for greater organization and flexibility.
47 </panel> 47 </panel>
48 <panel border="false" bottom_delta="-20" height="24" left="7" name="actions_header" 48 <panel border="false" bottom_delta="-20" height="24" left="7" name="actions_header"
49 visible="false" width="380"> 49 visible="false" width="380">
50 <text bottom_delta="0" font="SansSerifBig" halign="left" height="16" left="0" 50 <text bottom_delta="0" font="SansSerifLarge" halign="left" height="16" left="0"
51 name="static" width="200"> 51 name="static" width="200">
52 Abilities 52 Abilities
53 </text> 53 </text>
diff --git a/linden/indra/newview/skins/default/xui/en-us/panel_group_voting.xml b/linden/indra/newview/skins/default/xui/en-us/panel_group_voting.xml
index 168b60b..64be465 100644
--- a/linden/indra/newview/skins/default/xui/en-us/panel_group_voting.xml
+++ b/linden/indra/newview/skins/default/xui/en-us/panel_group_voting.xml
@@ -20,7 +20,7 @@ vote on open proposals, and view old proposals.
20 name="help_button" width="20" /> 20 name="help_button" width="20" />
21 <text bg_visible="false" border_drop_shadow_visible="false" border_visible="false" 21 <text bg_visible="false" border_drop_shadow_visible="false" border_visible="false"
22 bottom="446" drop_shadow_visible="true" follows="left|top" 22 bottom="446" drop_shadow_visible="true" follows="left|top"
23 font="SansSerifBig" h_pad="0" halign="left" height="16" left="7" 23 font="SansSerifLarge" h_pad="0" halign="left" height="16" left="7"
24 mouse_opaque="false" name="proposal_header" v_pad="0" width="363"> 24 mouse_opaque="false" name="proposal_header" v_pad="0" width="363">
25 Open Group Proposals 25 Open Group Proposals
26 </text> 26 </text>
@@ -144,7 +144,7 @@ vote on open proposals, and view old proposals.
144 mouse_opaque="true" name="btn_abstain" width="63" /> 144 mouse_opaque="true" name="btn_abstain" width="63" />
145 <text bg_visible="false" border_drop_shadow_visible="false" border_visible="false" 145 <text bg_visible="false" border_drop_shadow_visible="false" border_visible="false"
146 bottom="-240" drop_shadow_visible="true" follows="left|top" 146 bottom="-240" drop_shadow_visible="true" follows="left|top"
147 font="SansSerifBig" h_pad="0" halign="left" height="10" left="12" 147 font="SansSerifLarge" h_pad="0" halign="left" height="10" left="12"
148 mouse_opaque="false" name="txt" v_pad="0" width="363"> 148 mouse_opaque="false" name="txt" v_pad="0" width="363">
149 Group Voting History 149 Group Voting History
150 </text> 150 </text>
diff --git a/linden/indra/newview/skins/default/xui/en-us/panel_login.xml b/linden/indra/newview/skins/default/xui/en-us/panel_login.xml
index 75c635e..35ecc6e 100644
--- a/linden/indra/newview/skins/default/xui/en-us/panel_login.xml
+++ b/linden/indra/newview/skins/default/xui/en-us/panel_login.xml
@@ -29,45 +29,24 @@
29 http://secondlife.com/account/request.php 29 http://secondlife.com/account/request.php
30 </string> 30 </string>
31 31
32
33 <!-- START LOCATION -->
34
35 <text name="start_location_text"
36 bottom="8" left="10" height="16" right="115"
37 follows="left|bottom" h_pad="0" halign="right" v_pad="0"
38 bg_visible="false" drop_shadow_visible="true"
39 border_visible="false" border_drop_shadow_visible="false"
40 font="SansSerifSmall" mouse_opaque="true">
41 Start location:
42 </text>
43 <combo_box name="start_location_combo"
44 bottom_delta="2" left="120" height="16" width="150"
45 follows="left|bottom" font="SansSerifSmall"
46 mouse_opaque="true" allow_text_entry="true" max_chars="128">
47 <combo_item name="MyHome" value="My Home">
48 My Home
49 </combo_item>
50 <combo_item name="MyLastLocation" value="My Last Location">
51 My Last Location
52 </combo_item>
53 <combo_item name="Typeregionname" value="&lt;Type region name&gt;">
54 &lt;Type region name&gt;
55 </combo_item>
56 </combo_box>
57
58
59 <!-- FIRST NAME --> 32 <!-- FIRST NAME -->
60 33
61 <text name="first_name_text" 34 <text name="first_name_text"
62 bottom="56" left="24" height="16" width="120" 35 bottom="48" left="24" height="16" width="120"
63 follows="left|bottom" h_pad="0" halign="left" v_pad="0" 36 follows="left|bottom" h_pad="0" halign="left" v_pad="0"
64 bg_visible="false" drop_shadow_visible="true" 37 bg_visible="false" drop_shadow_visible="true"
65 border_visible="false" border_drop_shadow_visible="false" 38 border_visible="false" border_drop_shadow_visible="false"
66 font="SansSerif" mouse_opaque="true"> 39 font="SansSerif" mouse_opaque="true">
67 First name: 40 First name:
68 </text> 41 </text>
42<!--
43 <combo_box bevel_style="in" border_style="line" border_thickness="1" bottom_delta="-24"
44 follows="left|bottom" font="SansSerif" handle_edit_keys_directly="true" height="20" left_delta="0"
45 max_chars="31" mouse_opaque="true" name="first_name_combo"
46 select_all_on_focus_received="true" width="120" allow_text_entry="true" allow_translate="false" />
47-->
69 <line_editor name="first_name_edit" 48 <line_editor name="first_name_edit"
70 bottom_delta="-20" left_delta="0" height="20" width="120" 49 bottom_delta="-24" left_delta="0" height="20" width="120"
71 follows="left|bottom" font="SansSerif" 50 follows="left|bottom" font="SansSerif"
72 bevel_style="in" border_style="line" border_thickness="1" 51 bevel_style="in" border_style="line" border_thickness="1"
73 max_length="31" mouse_opaque="true" 52 max_length="31" mouse_opaque="true"
@@ -75,11 +54,10 @@
75 select_all_on_focus_received="true" 54 select_all_on_focus_received="true"
76 allow_translate="false" /> 55 allow_translate="false" />
77 56
78
79 <!-- LAST NAME --> 57 <!-- LAST NAME -->
80 58
81 <text name="last_name_text" 59 <text name="last_name_text"
82 bottom_delta="20" left_delta="130" height="16" width="120" 60 bottom_delta="24" left_delta="130" height="16" width="120"
83 follows="left|bottom" h_pad="0" halign="left" v_pad="0" 61 follows="left|bottom" h_pad="0" halign="left" v_pad="0"
84 bg_visible="false" drop_shadow_visible="true" 62 bg_visible="false" drop_shadow_visible="true"
85 border_visible="false" border_drop_shadow_visible="false" 63 border_visible="false" border_drop_shadow_visible="false"
@@ -87,7 +65,7 @@
87 Last name: 65 Last name:
88 </text> 66 </text>
89 <line_editor name="last_name_edit" 67 <line_editor name="last_name_edit"
90 bottom_delta="-20" left_delta="0" height="20" width="120" 68 bottom_delta="-24" left_delta="0" height="20" width="120"
91 follows="left|bottom" font="SansSerif" 69 follows="left|bottom" font="SansSerif"
92 bevel_style="in" border_style="line" border_thickness="1" 70 bevel_style="in" border_style="line" border_thickness="1"
93 max_length="31" mouse_opaque="true" 71 max_length="31" mouse_opaque="true"
@@ -99,7 +77,7 @@
99 <!-- PASSWORD --> 77 <!-- PASSWORD -->
100 78
101 <text name="password_text" 79 <text name="password_text"
102 bottom_delta="20" left_delta="130" height="16" width="120" 80 bottom_delta="24" left_delta="130" height="16" width="120"
103 follows="left|bottom" h_pad="0" halign="left" v_pad="0" 81 follows="left|bottom" h_pad="0" halign="left" v_pad="0"
104 bg_visible="false" drop_shadow_visible="true" 82 bg_visible="false" drop_shadow_visible="true"
105 border_visible="false" border_drop_shadow_visible="false" 83 border_visible="false" border_drop_shadow_visible="false"
@@ -107,23 +85,57 @@
107 Password: 85 Password:
108 </text> 86 </text>
109 <line_editor name="password_edit" 87 <line_editor name="password_edit"
110 bottom_delta="-20" left_delta="0" height="20" width="120" 88 bottom_delta="-24" left_delta="0" height="20" width="120"
111 follows="left|bottom" font="SansSerif" 89 follows="left|bottom" font="SansSerif"
112 bevel_style="in" border_style="line" border_thickness="1" 90 bevel_style="in" border_style="line" border_thickness="1"
113 max_length="16" mouse_opaque="true" 91 max_length="16" mouse_opaque="true"
114 handle_edit_keys_directly="true" 92 handle_edit_keys_directly="true"
115 select_all_on_focus_received="true" 93 select_all_on_focus_received="true"
116 allow_translate="false" /> 94 allow_translate="false" />
95
96
97 <!-- ACCOUNT CHECK BOXES -->
98
99 <check_box control_name="RememberName"
100 follows="left|bottom" font="SansSerifSmall" height="16"
101 initial_value="true" label="Remember account name"
102 bottom_delta="-24" left="24" mouse_opaque="true" name="remember_name_check" width="158" />
117 <check_box name="remember_check" label="Remember password" 103 <check_box name="remember_check" label="Remember password"
118 bottom_delta="-24" left_delta="0" height="16" width="140" 104 bottom_delta="0" left_delta="260" height="16" width="140"
119 follows="left|bottom" font="SansSerifSmall" control_name="RememberPassword" 105 follows="left|bottom" font="SansSerifSmall" control_name="RememberPassword"
120 initial_value="false" mouse_opaque="true" /> 106 initial_value="false" mouse_opaque="true" />
121 107
122 108
109 <!-- START LOCATION -->
110
111 <text name="start_location_text"
112 bottom="48" left_delta="150" height="16"
113 follows="left|bottom" h_pad="0" halign="left" v_pad="0"
114 bg_visible="false" drop_shadow_visible="true"
115 border_visible="false" border_drop_shadow_visible="false"
116 font="SansSerifSmall" mouse_opaque="true">
117 Start location:
118 </text>
119 <combo_box name="start_location_combo"
120 bottom_delta="-24" left_delta="0" height="20" width="150"
121 follows="left|bottom" font="SansSerifSmall"
122 mouse_opaque="true" allow_text_entry="true" max_chars="128">
123 <combo_item name="MyHome" value="My Home">
124 My Home
125 </combo_item>
126 <combo_item name="MyLastLocation" value="My Last Location">
127 My Last Location
128 </combo_item>
129 <combo_item name="Typeregionname" value="&lt;Type region name&gt;">
130 &lt;Type region name&gt;
131 </combo_item>
132 </combo_box>
133
134
123 <!-- GRIDS --> 135 <!-- GRIDS -->
124 136
125 <text name="grid_text" 137 <text name="grid_text"
126 bottom="56" left_delta="150" height="16" width="120" 138 bottom="48" left_delta="160" height="16" width="120"
127 follows="left|bottom" h_pad="0" halign="left" v_pad="0" 139 follows="left|bottom" h_pad="0" halign="left" v_pad="0"
128 bg_visible="false" drop_shadow_visible="true" 140 bg_visible="false" drop_shadow_visible="true"
129 border_visible="false" border_drop_shadow_visible="false" 141 border_visible="false" border_drop_shadow_visible="false"
@@ -131,11 +143,11 @@
131 Grid: 143 Grid:
132 </text> 144 </text>
133 <combo_box name="server_combo" 145 <combo_box name="server_combo"
134 bottom_delta="-20" left_delta="0" height="20" width="120" 146 bottom_delta="-24" left_delta="0" height="20" width="120"
135 follows="left|bottom" allow_text_entry="false" 147 follows="left|bottom" allow_text_entry="false"
136 max_chars="20" mouse_opaque="true" /> 148 max_chars="20" mouse_opaque="true" />
137 <button name="grid_btn" label="Grid Manager" 149 <button name="grid_btn" label="Grid Manager"
138 bottom_delta="-24" left_delta="10" height="16" width="100" 150 bottom_delta="-24" left_delta="0" height="20" width="100"
139 follows="left|bottom" font="SansSerifSmall" halign="center" 151 follows="left|bottom" font="SansSerifSmall" halign="center"
140 mouse_opaque="true" scale_image="TRUE" /> 152 mouse_opaque="true" scale_image="TRUE" />
141 153
@@ -143,11 +155,32 @@
143 <!-- LOG IN --> 155 <!-- LOG IN -->
144 156
145 <button name="connect_btn" label="Log In" 157 <button name="connect_btn" label="Log In"
146 bottom="34" left_delta="140" height="24" width="120" 158 bottom="24" left_delta="140" height="24" width="120"
147 follows="left|bottom" font="SansSerif" halign="center" 159 follows="left|bottom" font="SansSerif" halign="center"
148 mouse_opaque="true" scale_image="TRUE" /> 160 mouse_opaque="true" scale_image="TRUE" />
149 161
150 162
163 <!-- Yes, this is getting messy, with three different ways of doing the username. sigh -->
164 <!-- SL USERNAME -->
165
166 <text name="username_text"
167 bottom="80" left="24" height="16" width="250"
168 follows="left|bottom" h_pad="0" halign="left" v_pad="0"
169 bg_visible="false" drop_shadow_visible="true"
170 border_visible="false" border_drop_shadow_visible="false"
171 font="SansSerif" mouse_opaque="true">
172 Login name:
173 </text>
174 <line_editor name="username_edit"
175 bottom_delta="-20" left_delta="0" height="20" width="250"
176 follows="left|bottom" font="SansSerif"
177 bevel_style="in" border_style="line" border_thickness="1"
178 max_length="31" mouse_opaque="true"
179 handle_edit_keys_directly="true"
180 select_all_on_focus_received="true"
181 allow_translate="false" />
182
183
151 <!-- ACCOUNT / FORGOT PASSWORD --> 184 <!-- ACCOUNT / FORGOT PASSWORD -->
152 185
153 <text name="create_new_account_text" 186 <text name="create_new_account_text"
diff --git a/linden/indra/newview/skins/default/xui/en-us/panel_preferences_advanced.xml b/linden/indra/newview/skins/default/xui/en-us/panel_preferences_advanced.xml
index a31d090..a3961bb 100644
--- a/linden/indra/newview/skins/default/xui/en-us/panel_preferences_advanced.xml
+++ b/linden/indra/newview/skins/default/xui/en-us/panel_preferences_advanced.xml
@@ -129,9 +129,6 @@
129 </combo_item> 129 </combo_item>
130 </combo_box>--> 130 </combo_box>-->
131 131
132 <button bottom="10" follows="left|bottom" font="SansSerif" height="20" width="250"
133 label="Reset All Preferences To Default" name="reset_btn" left="12"
134 tool_tip="Reset all preferences to their default values (requires a restart)" />
135 </panel> 132 </panel>
136 133
137 <panel border="true" bottom="-580" follows="left|top|right|bottom" height="525" label="SpellCheck" 134 <panel border="true" bottom="-580" follows="left|top|right|bottom" height="525" label="SpellCheck"
diff --git a/linden/indra/newview/skins/default/xui/en-us/panel_preferences_audio.xml b/linden/indra/newview/skins/default/xui/en-us/panel_preferences_audio.xml
index c6bb938..355d7e8 100644
--- a/linden/indra/newview/skins/default/xui/en-us/panel_preferences_audio.xml
+++ b/linden/indra/newview/skins/default/xui/en-us/panel_preferences_audio.xml
@@ -9,13 +9,13 @@
9 Volume: 9 Volume:
10 </text> 10 </text>
11 <text type="string" length="1" bg_visible="false" border_drop_shadow_visible="false" border_visible="false" 11 <text type="string" length="1" bg_visible="false" border_drop_shadow_visible="false" border_visible="false"
12 bottom="-190" drop_shadow_visible="true" enabled="true" follows="left|top" 12 bottom="-202" drop_shadow_visible="true" enabled="true" follows="left|top"
13 font="SansSerifSmall" h_pad="0" halign="left" height="12" left="10" 13 font="SansSerifSmall" h_pad="0" halign="left" height="12" left="10"
14 mouse_opaque="true" name="streaming_prefs_text" v_pad="0" width="128"> 14 mouse_opaque="true" name="streaming_prefs_text" v_pad="0" width="128">
15 Streaming: 15 Streaming:
16 </text> 16 </text>
17 <text type="string" length="1" bg_visible="false" border_drop_shadow_visible="false" border_visible="false" 17 <text type="string" length="1" bg_visible="false" border_drop_shadow_visible="false" border_visible="false"
18 bottom="-285" drop_shadow_visible="true" enabled="true" follows="left|top" 18 bottom="-315" drop_shadow_visible="true" enabled="true" follows="left|top"
19 font="SansSerifSmall" h_pad="0" halign="left" height="12" left="10" 19 font="SansSerifSmall" h_pad="0" halign="left" height="12" left="10"
20 mouse_opaque="true" name="audio_prefs_text" v_pad="0" width="128"> 20 mouse_opaque="true" name="audio_prefs_text" v_pad="0" width="128">
21 Audio: 21 Audio:
@@ -42,7 +42,21 @@
42 initial_value="true" label="Automatically play media" left="162" 42 initial_value="true" label="Automatically play media" left="162"
43 mouse_opaque="true" name="auto_streaming_video" radio_style="false" 43 mouse_opaque="true" name="auto_streaming_video" radio_style="false"
44 width="338" /> 44 width="338" />
45 <check_box bottom_delta="-27" control_name="MuteWhenMinimized" enabled="true" 45 <check_box bottom_delta="-20" control_name="MediaOnAPrimUI" enabled="true"
46 follows="left|top" font="SansSerifSmall" height="16"
47 initial_value="true" label="Media helper widget" left="162"
48 mouse_opaque="true" name="media_helper_widget" radio_style="false"
49 width="338" />
50 <check_box bottom_delta="-20" control_name="MediaEnableFilter" enabled="true"
51 follows="left|top" font="SansSerifSmall" height="16"
52 initial_value="true" label="Filter media URLs" left="142"
53 mouse_opaque="true" name="enable_media_filter" radio_style="false"
54 width="200" />
55 <button name="show_media_filter" font="SansSerif" label="Media Filter Settings" halign="center"
56 tool_tip="Edit settings and the blocked and allowed lists for the Media Filter."
57 enabled="false" mouse_opaque="true" follows="top|right"
58 bottom_delta="-2" right="-15" height="20" width="180" />
59 <check_box bottom_delta="-33" control_name="MuteWhenMinimized" enabled="true"
46 follows="left|top" font="SansSerifSmall" height="16" initial_value="true" 60 follows="left|top" font="SansSerifSmall" height="16" initial_value="true"
47 label="Mute audio when window minimized" left="142" mouse_opaque="true" 61 label="Mute audio when window minimized" left="142" mouse_opaque="true"
48 name="mute_when_minimized" radio_style="false" width="215" /> 62 name="mute_when_minimized" radio_style="false" width="215" />
diff --git a/linden/indra/newview/skins/default/xui/en-us/panel_preferences_network.xml b/linden/indra/newview/skins/default/xui/en-us/panel_preferences_network.xml
index 1e4ded6..86aa353 100644
--- a/linden/indra/newview/skins/default/xui/en-us/panel_preferences_network.xml
+++ b/linden/indra/newview/skins/default/xui/en-us/panel_preferences_network.xml
@@ -64,4 +64,31 @@
64 increment="1" initial_val="13000" label="Port number:" label_width="75" 64 increment="1" initial_val="13000" label="Port number:" label_width="75"
65 left_delta="20" max_val="13050" min_val="13000" mouse_opaque="true" 65 left_delta="20" max_val="13050" min_val="13000" mouse_opaque="true"
66 name="connection_port" width="150" /> 66 name="connection_port" width="150" />
67 <text type="string" length="1" bg_visible="false" border_drop_shadow_visible="false" border_visible="false"
68 bottom_delta="-24" drop_shadow_visible="true" enabled="true"
69 follows="left|top" font="SansSerifSmall" h_pad="0" halign="left"
70 height="10" left="15" mouse_opaque="false" name="proxy_label" v_pad="0"
71 width="250">
72 XMLRPC Proxy (Login, Land- and Money purchase):
73 </text>
74 <check_box bottom_delta="-25" enabled="true"
75 follows="left|top" font="SansSerifSmall" height="16" initial_value="false"
76 label="Enable XMLRPC proxy" left_delta="199" mouse_opaque="true"
77 name="xmlrpc_proxy_enabled" radio_style="false" width="256" />
78 <text type="string" length="1" bg_visible="false" border_drop_shadow_visible="false" border_visible="false"
79 bottom_delta="-25" drop_shadow_visible="true" enabled="true"
80 follows="left|top" font="SansSerifSmall" h_pad="0" halign="left"
81 height="10" left="140" mouse_opaque="false" name="xmlrpc_proxy_text_label"
82 v_pad="0" width="128">
83 Address:
84 </text>
85 <line_editor bottom_delta="-8" enabled="true" follows="left|top" font="SansSerif"
86 height="20" left="217" name="xmlrpc_proxy_editor"
87 tool_tip="The name or IP address of the proxy you would like to use"
88 width="200" />
89 <spinner bottom_delta="-25" decimal_digits="0"
90 enabled="true" follows="left|top" height="16" increment="1"
91 initial_val="80" label="Port number:" label_width="75" left="140"
92 max_val="12000" min_val="10" mouse_opaque="true" name="xmlrpc_proxy_port"
93 width="140" />
67</panel> 94</panel>
diff --git a/linden/indra/newview/skins/default/xui/en-us/panel_preferences_web.xml b/linden/indra/newview/skins/default/xui/en-us/panel_preferences_web.xml
index e077ca1..d855a6f 100644
--- a/linden/indra/newview/skins/default/xui/en-us/panel_preferences_web.xml
+++ b/linden/indra/newview/skins/default/xui/en-us/panel_preferences_web.xml
@@ -34,6 +34,10 @@
34 font="SansSerifSmall" height="16" initial_value="false" 34 font="SansSerifSmall" height="16" initial_value="false"
35 label="Accept cookies from sites" left="140" mouse_opaque="true" 35 label="Accept cookies from sites" left="140" mouse_opaque="true"
36 name="cookies_enabled" radio_style="false" width="256" /> 36 name="cookies_enabled" radio_style="false" width="256" />
37 <button bottom_delta="-20" enabled="true" follows="left|top" font="SansSerif"
38 halign="center" height="18" label="Clear Cookies" left_delta="0"
39 tool_tip="Clear Cookies"
40 mouse_opaque="true" name="clear_ookies" scale_image="true" width="110" />
37 <text type="string" length="1" bg_visible="false" border_drop_shadow_visible="false" border_visible="false" 41 <text type="string" length="1" bg_visible="false" border_drop_shadow_visible="false" border_visible="false"
38 bottom_delta="-24" drop_shadow_visible="true" enabled="true" 42 bottom_delta="-24" drop_shadow_visible="true" enabled="true"
39 follows="left|top" font="SansSerifSmall" h_pad="0" halign="left" 43 follows="left|top" font="SansSerifSmall" h_pad="0" halign="left"
diff --git a/linden/indra/newview/slfloatermediafilter.cpp b/linden/indra/newview/slfloatermediafilter.cpp
index c47ed26..b0d9c26 100644
--- a/linden/indra/newview/slfloatermediafilter.cpp
+++ b/linden/indra/newview/slfloatermediafilter.cpp
@@ -43,6 +43,8 @@
43 43
44SLFloaterMediaFilter* SLFloaterMediaFilter::sInstance = NULL; 44SLFloaterMediaFilter* SLFloaterMediaFilter::sInstance = NULL;
45bool SLFloaterMediaFilter::sIsWhitelist = false; 45bool SLFloaterMediaFilter::sIsWhitelist = false;
46bool SLFloaterMediaFilter::sIsAdding = false;
47bool SLFloaterMediaFilter::sShowIPs = false;
46 48
47SLFloaterMediaFilter::SLFloaterMediaFilter() : LLFloater(std::string("media filter")), mIsDirty(false) 49SLFloaterMediaFilter::SLFloaterMediaFilter() : LLFloater(std::string("media filter")), mIsDirty(false)
48{ 50{
@@ -62,15 +64,18 @@ BOOL SLFloaterMediaFilter::postBuild()
62 if (mWhitelistSLC && mBlacklistSLC) 64 if (mWhitelistSLC && mBlacklistSLC)
63 { 65 {
64 childSetAction("clear_lists", onClearLists, this); 66 childSetAction("clear_lists", onClearLists, this);
67 childSetAction("show_ips", onShowIPs, this);
65 childSetAction("add_whitelist", onWhitelistAdd, this); 68 childSetAction("add_whitelist", onWhitelistAdd, this);
66 childSetAction("remove_whitelist", onWhitelistRemove, this); 69 childSetAction("remove_whitelist", onWhitelistRemove, this);
67 childSetAction("add_blacklist", onBlacklistAdd, this); 70 childSetAction("add_blacklist", onBlacklistAdd, this);
68 childSetAction("remove_blacklist", onBlacklistRemove, this); 71 childSetAction("remove_blacklist", onBlacklistRemove, this);
69 childSetAction("commit_domain", onCommitDomain, this); 72 childSetAction("commit_domain", onCommitDomain, this);
73 childSetAction("cancel_domain", onCancelDomain, this);
70 childSetUserData("whitelist_list", this); 74 childSetUserData("whitelist_list", this);
71 childSetUserData("blacklist_list", this); 75 childSetUserData("blacklist_list", this);
72 mIsDirty = true; 76 mIsDirty = true;
73 } 77 }
78 gSavedSettings.getControl("MediaEnableFilter")->getSignal()->connect(boost::bind(&onMediaEnableFilterChanged, _1));
74 79
75 return TRUE; 80 return TRUE;
76} 81}
@@ -84,6 +89,8 @@ void SLFloaterMediaFilter::draw()
84 mWhitelistSLC->deleteAllItems(); 89 mWhitelistSLC->deleteAllItems();
85 mBlacklistSLC->deleteAllItems(); 90 mBlacklistSLC->deleteAllItems();
86 std::set<std::string> listed; 91 std::set<std::string> listed;
92 LLHost host;
93 std::string ip;
87 std::string domain; 94 std::string domain;
88 std::string action; 95 std::string action;
89 LLSD element; 96 LLSD element;
@@ -92,6 +99,16 @@ void SLFloaterMediaFilter::draw()
92 for (S32 i = 0; i < (S32)LLViewerParcelMedia::sMediaFilterList.size(); i++) 99 for (S32 i = 0; i < (S32)LLViewerParcelMedia::sMediaFilterList.size(); i++)
93 { 100 {
94 domain = LLViewerParcelMedia::sMediaFilterList[i]["domain"].asString(); 101 domain = LLViewerParcelMedia::sMediaFilterList[i]["domain"].asString();
102 if (sShowIPs)
103 {
104 host.setHostByName(domain);
105 ip = host.getIPString();
106 if (ip != domain && domain.find('/') == std::string::npos)
107 {
108 domain += " (" + ip + ")";
109 }
110 }
111
95 action = LLViewerParcelMedia::sMediaFilterList[i]["action"].asString(); 112 action = LLViewerParcelMedia::sMediaFilterList[i]["action"].asString();
96 if (!domain.empty() && action == "allow") 113 if (!domain.empty() && action == "allow")
97 { 114 {
@@ -123,6 +140,15 @@ void SLFloaterMediaFilter::draw()
123 for (it = LLViewerParcelMedia::sAllowedMedia.begin(); it != LLViewerParcelMedia::sAllowedMedia.end(); it++) 140 for (it = LLViewerParcelMedia::sAllowedMedia.begin(); it != LLViewerParcelMedia::sAllowedMedia.end(); it++)
124 { 141 {
125 domain = *it; 142 domain = *it;
143 if (sShowIPs)
144 {
145 host.setHostByName(domain);
146 ip = host.getIPString();
147 if (ip != domain && domain.find('/') == std::string::npos)
148 {
149 domain += " (" + ip + ")";
150 }
151 }
126 if (listed.count(domain) == 0) 152 if (listed.count(domain) == 0)
127 { 153 {
128 element["columns"][0]["value"] = domain; 154 element["columns"][0]["value"] = domain;
@@ -133,6 +159,15 @@ void SLFloaterMediaFilter::draw()
133 for (it = LLViewerParcelMedia::sDeniedMedia.begin(); it != LLViewerParcelMedia::sDeniedMedia.end(); it++) 159 for (it = LLViewerParcelMedia::sDeniedMedia.begin(); it != LLViewerParcelMedia::sDeniedMedia.end(); it++)
134 { 160 {
135 domain = *it; 161 domain = *it;
162 if (sShowIPs)
163 {
164 host.setHostByName(domain);
165 ip = host.getIPString();
166 if (ip != domain && domain.find('/') == std::string::npos)
167 {
168 domain += " (" + ip + ")";
169 }
170 }
136 if (listed.count(domain) == 0) 171 if (listed.count(domain) == 0)
137 { 172 {
138 element["columns"][0]["value"] = domain; 173 element["columns"][0]["value"] = domain;
@@ -142,26 +177,56 @@ void SLFloaterMediaFilter::draw()
142 mWhitelistSLC->setScrollPos(whitescrollpos); 177 mWhitelistSLC->setScrollPos(whitescrollpos);
143 mBlacklistSLC->setScrollPos(blackscrollpos); 178 mBlacklistSLC->setScrollPos(blackscrollpos);
144 179
145 if (!gSavedSettings.getBOOL("MediaEnableFilter")) 180 updateWidgets();
146 {
147 childDisable("clear_lists");
148 childDisable("blacklist_list");
149 childDisable("whitelist_list");
150 childDisable("remove_whitelist");
151 childDisable("add_whitelist");
152 childDisable("remove_blacklist");
153 childDisable("add_blacklist");
154 childDisable("input_domain");
155 childDisable("commit_domain");
156 childSetText("add_text", std::string("****** WARNING: media filtering is currently DISABLED ******"));
157 }
158 181
159 mIsDirty = false; 182 mIsDirty = false;
183 sShowIPs = false;
160 } 184 }
161 185
162 LLFloater::draw(); 186 LLFloater::draw();
163} 187}
164 188
189void SLFloaterMediaFilter::updateWidgets()
190{
191 bool enabled = gSavedSettings.getBOOL("MediaEnableFilter");
192 childSetEnabled("clear_lists", enabled && !sIsAdding);
193 childSetEnabled("show_ips", enabled && !sIsAdding);
194 childSetEnabled("blacklist_list", enabled && !sIsAdding);
195 childSetEnabled("whitelist_list", enabled && !sIsAdding);
196 childSetEnabled("remove_whitelist", enabled && !sIsAdding);
197 childSetEnabled("add_whitelist", enabled && !sIsAdding);
198 childSetEnabled("remove_blacklist", enabled && !sIsAdding);
199 childSetEnabled("add_blacklist", enabled && !sIsAdding);
200 childSetEnabled("match_ip", enabled);
201 childSetEnabled("input_domain", enabled && sIsAdding);
202 childSetEnabled("commit_domain", enabled && sIsAdding);
203 childSetEnabled("cancel_domain", enabled && sIsAdding);
204 childSetEnabled("filter_only_remote", enabled);
205 childSetEnabled("info1", enabled);
206 childSetEnabled("info2", enabled);
207
208 std::string add_text("****** Media filtering is currently DISABLED ******");
209 if (enabled)
210 {
211 if (sIsAdding)
212 {
213 if (sIsWhitelist)
214 {
215 add_text = "Enter the domain/url to add to the white list:";
216 }
217 else
218 {
219 add_text = "Enter the domain/url to add to the black list:";
220 }
221 }
222 else
223 {
224 add_text = "New Domain:";
225 }
226 }
227 childSetText("add_text", add_text);
228}
229
165void SLFloaterMediaFilter::setDirty() 230void SLFloaterMediaFilter::setDirty()
166{ 231{
167 if (sInstance) 232 if (sInstance)
@@ -208,23 +273,21 @@ void SLFloaterMediaFilter::onClearLists(void* data)
208 LLViewerParcelMedia::clearDomainFilterList(); 273 LLViewerParcelMedia::clearDomainFilterList();
209} 274}
210 275
276void SLFloaterMediaFilter::onShowIPs(void* data)
277{
278 sShowIPs = true;
279 setDirty();
280}
281
211void SLFloaterMediaFilter::onWhitelistAdd(void* data) 282void SLFloaterMediaFilter::onWhitelistAdd(void* data)
212{ 283{
213 if (!sInstance) 284 if (!sInstance)
214 { 285 {
215 return; 286 return;
216 } 287 }
217 sInstance->childDisable("clear_lists");
218 sInstance->childDisable("blacklist_list");
219 sInstance->childDisable("whitelist_list");
220 sInstance->childDisable("remove_whitelist");
221 sInstance->childDisable("add_whitelist");
222 sInstance->childDisable("remove_blacklist");
223 sInstance->childDisable("add_blacklist");
224 sInstance->childEnable("input_domain");
225 sInstance->childEnable("commit_domain");
226 sInstance->childSetText("add_text", std::string("Enter the domain/url to add to the white list:"));
227 sIsWhitelist = true; 288 sIsWhitelist = true;
289 sIsAdding = true;
290 sInstance->updateWidgets();
228} 291}
229 292
230void SLFloaterMediaFilter::onWhitelistRemove(void* data) 293void SLFloaterMediaFilter::onWhitelistRemove(void* data)
@@ -238,6 +301,12 @@ void SLFloaterMediaFilter::onWhitelistRemove(void* data)
238 if (selected) 301 if (selected)
239 { 302 {
240 std::string domain = sInstance->mWhitelistSLC->getSelectedItemLabel(); 303 std::string domain = sInstance->mWhitelistSLC->getSelectedItemLabel();
304 size_t pos = domain.find(' ');
305 if (pos != std::string::npos)
306 {
307 domain = domain.substr(0, pos);
308 }
309
241 LLViewerParcelMedia::sAllowedMedia.erase(domain); 310 LLViewerParcelMedia::sAllowedMedia.erase(domain);
242 311
243 for (S32 i = 0; i < (S32)LLViewerParcelMedia::sMediaFilterList.size(); i++) 312 for (S32 i = 0; i < (S32)LLViewerParcelMedia::sMediaFilterList.size(); i++)
@@ -245,11 +314,32 @@ void SLFloaterMediaFilter::onWhitelistRemove(void* data)
245 if (LLViewerParcelMedia::sMediaFilterList[i]["domain"].asString() == domain) 314 if (LLViewerParcelMedia::sMediaFilterList[i]["domain"].asString() == domain)
246 { 315 {
247 LLViewerParcelMedia::sMediaFilterList.erase(i); 316 LLViewerParcelMedia::sMediaFilterList.erase(i);
248 LLViewerParcelMedia::saveDomainFilterList();
249 break; 317 break;
250 } 318 }
251 } 319 }
252 320
321 if (sInstance->childGetValue("match_ip") && domain.find('/') == std::string::npos)
322 {
323 LLHost host;
324 host.setHostByName(domain);
325 std::string ip = host.getIPString();
326
327 if (ip != domain)
328 {
329 LLViewerParcelMedia::sAllowedMedia.erase(ip);
330
331 for (S32 i = 0; i < (S32)LLViewerParcelMedia::sMediaFilterList.size(); i++)
332 {
333 if (LLViewerParcelMedia::sMediaFilterList[i]["domain"].asString() == ip)
334 {
335 LLViewerParcelMedia::sMediaFilterList.erase(i);
336 break;
337 }
338 }
339 }
340 }
341
342 LLViewerParcelMedia::saveDomainFilterList();
253 setDirty(); 343 setDirty();
254 } 344 }
255} 345}
@@ -260,17 +350,9 @@ void SLFloaterMediaFilter::onBlacklistAdd(void* data)
260 { 350 {
261 return; 351 return;
262 } 352 }
263 sInstance->childDisable("clear_lists");
264 sInstance->childDisable("blacklist_list");
265 sInstance->childDisable("whitelist_list");
266 sInstance->childDisable("remove_whitelist");
267 sInstance->childDisable("add_whitelist");
268 sInstance->childDisable("remove_blacklist");
269 sInstance->childDisable("add_blacklist");
270 sInstance->childEnable("input_domain");
271 sInstance->childEnable("commit_domain");
272 sInstance->childSetText("add_text", std::string("Enter the domain/url to add to the black list:"));
273 sIsWhitelist = false; 353 sIsWhitelist = false;
354 sIsAdding = true;
355 sInstance->updateWidgets();
274} 356}
275 357
276void SLFloaterMediaFilter::onBlacklistRemove(void* data) 358void SLFloaterMediaFilter::onBlacklistRemove(void* data)
@@ -284,6 +366,12 @@ void SLFloaterMediaFilter::onBlacklistRemove(void* data)
284 if (selected) 366 if (selected)
285 { 367 {
286 std::string domain = sInstance->mBlacklistSLC->getSelectedItemLabel(); 368 std::string domain = sInstance->mBlacklistSLC->getSelectedItemLabel();
369 size_t pos = domain.find(' ');
370 if (pos != std::string::npos)
371 {
372 domain = domain.substr(0, pos);
373 }
374
287 LLViewerParcelMedia::sDeniedMedia.erase(domain); 375 LLViewerParcelMedia::sDeniedMedia.erase(domain);
288 376
289 for (S32 i = 0; i < (S32)LLViewerParcelMedia::sMediaFilterList.size(); i++) 377 for (S32 i = 0; i < (S32)LLViewerParcelMedia::sMediaFilterList.size(); i++)
@@ -291,11 +379,32 @@ void SLFloaterMediaFilter::onBlacklistRemove(void* data)
291 if (LLViewerParcelMedia::sMediaFilterList[i]["domain"].asString() == domain) 379 if (LLViewerParcelMedia::sMediaFilterList[i]["domain"].asString() == domain)
292 { 380 {
293 LLViewerParcelMedia::sMediaFilterList.erase(i); 381 LLViewerParcelMedia::sMediaFilterList.erase(i);
294 LLViewerParcelMedia::saveDomainFilterList();
295 break; 382 break;
296 } 383 }
297 } 384 }
298 385
386 if (sInstance->childGetValue("match_ip") && domain.find('/') == std::string::npos)
387 {
388 LLHost host;
389 host.setHostByName(domain);
390 std::string ip = host.getIPString();
391
392 if (ip != domain)
393 {
394 LLViewerParcelMedia::sDeniedMedia.erase(ip);
395
396 for (S32 i = 0; i < (S32)LLViewerParcelMedia::sMediaFilterList.size(); i++)
397 {
398 if (LLViewerParcelMedia::sMediaFilterList[i]["domain"].asString() == ip)
399 {
400 LLViewerParcelMedia::sMediaFilterList.erase(i);
401 break;
402 }
403 }
404 }
405 }
406
407 LLViewerParcelMedia::saveDomainFilterList();
299 setDirty(); 408 setDirty();
300 } 409 }
301} 410}
@@ -308,6 +417,10 @@ void SLFloaterMediaFilter::onCommitDomain(void* data)
308 } 417 }
309 std::string domain = sInstance->childGetText("input_domain"); 418 std::string domain = sInstance->childGetText("input_domain");
310 domain = LLViewerParcelMedia::extractDomain(domain); 419 domain = LLViewerParcelMedia::extractDomain(domain);
420 LLHost host;
421 host.setHostByName(domain);
422 std::string ip = host.getIPString();
423 bool match_ip = (sInstance->childGetValue("match_ip") && ip != domain && domain.find('/') == std::string::npos);
311 424
312 if (!domain.empty()) 425 if (!domain.empty())
313 { 426 {
@@ -318,7 +431,18 @@ void SLFloaterMediaFilter::onCommitDomain(void* data)
318 if (LLViewerParcelMedia::sMediaFilterList[i]["domain"].asString() == domain) 431 if (LLViewerParcelMedia::sMediaFilterList[i]["domain"].asString() == domain)
319 { 432 {
320 LLViewerParcelMedia::sMediaFilterList.erase(i); 433 LLViewerParcelMedia::sMediaFilterList.erase(i);
321 break; 434 }
435 }
436 if (match_ip)
437 {
438 LLViewerParcelMedia::sDeniedMedia.erase(ip);
439 LLViewerParcelMedia::sAllowedMedia.erase(ip);
440 for (S32 i = 0; i < (S32)LLViewerParcelMedia::sMediaFilterList.size(); i++)
441 {
442 if (LLViewerParcelMedia::sMediaFilterList[i]["domain"].asString() == ip)
443 {
444 LLViewerParcelMedia::sMediaFilterList.erase(i);
445 }
322 } 446 }
323 } 447 }
324 LLSD newmedia; 448 LLSD newmedia;
@@ -332,19 +456,33 @@ void SLFloaterMediaFilter::onCommitDomain(void* data)
332 newmedia["action"] = "deny"; 456 newmedia["action"] = "deny";
333 } 457 }
334 LLViewerParcelMedia::sMediaFilterList.append(newmedia); 458 LLViewerParcelMedia::sMediaFilterList.append(newmedia);
459 if (match_ip)
460 {
461 newmedia["domain"] = ip;
462 LLViewerParcelMedia::sMediaFilterList.append(newmedia);
463 }
335 LLViewerParcelMedia::saveDomainFilterList(); 464 LLViewerParcelMedia::saveDomainFilterList();
336 } 465 }
337 466
338 sInstance->childEnable("clear_lists");
339 sInstance->childEnable("blacklist_list");
340 sInstance->childEnable("whitelist_list");
341 sInstance->childEnable("remove_whitelist");
342 sInstance->childEnable("add_whitelist");
343 sInstance->childEnable("remove_blacklist");
344 sInstance->childEnable("add_blacklist");
345 sInstance->childDisable("input_domain");
346 sInstance->childDisable("commit_domain");
347 sInstance->childSetText("add_text", std::string("New domain:"));
348 sInstance->childSetText("input_domain", std::string("")); 467 sInstance->childSetText("input_domain", std::string(""));
468 sIsAdding = false;
469 setDirty();
470}
471
472//static
473void SLFloaterMediaFilter::onCancelDomain(void* data)
474{
475 if (!sInstance)
476 {
477 return;
478 }
479 sInstance->childSetText("input_domain", std::string(""));
480 sIsAdding = false;
481 setDirty();
482}
483
484//static
485void SLFloaterMediaFilter::onMediaEnableFilterChanged(const LLSD& newvalue)
486{
349 setDirty(); 487 setDirty();
350} 488}
diff --git a/linden/indra/newview/slfloatermediafilter.h b/linden/indra/newview/slfloatermediafilter.h
index 0f900be..9067c74 100644
--- a/linden/indra/newview/slfloatermediafilter.h
+++ b/linden/indra/newview/slfloatermediafilter.h
@@ -38,6 +38,7 @@
38 38
39class LLScrollListCtrl; 39class LLScrollListCtrl;
40class LLButton; 40class LLButton;
41class LLSD;
41 42
42class SLFloaterMediaFilter : public LLFloater 43class SLFloaterMediaFilter : public LLFloater
43{ 44{
@@ -52,14 +53,22 @@ public:
52 static void toggleInstance(); 53 static void toggleInstance();
53 54
54 static void onClearLists(void*); 55 static void onClearLists(void*);
56 static void onShowIPs(void*);
55 static void onWhitelistAdd(void*); 57 static void onWhitelistAdd(void*);
56 static void onWhitelistRemove(void*); 58 static void onWhitelistRemove(void*);
57 static void onBlacklistAdd(void*); 59 static void onBlacklistAdd(void*);
58 static void onBlacklistRemove(void*); 60 static void onBlacklistRemove(void*);
59 static void onCommitDomain(void*); 61 static void onCommitDomain(void*);
62 static void onCancelDomain(void*);
63 static void onMediaEnableFilterChanged(const LLSD& newvalue);
64
65private:
66 void updateWidgets();
60 67
61private: 68private:
62 static bool sIsWhitelist; 69 static bool sIsWhitelist;
70 static bool sShowIPs;
71 static bool sIsAdding;
63 LLScrollListCtrl* mWhitelistSLC; 72 LLScrollListCtrl* mWhitelistSLC;
64 LLScrollListCtrl* mBlacklistSLC; 73 LLScrollListCtrl* mBlacklistSLC;
65 bool mIsDirty; 74 bool mIsDirty;