aboutsummaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
-rw-r--r--linden/indra/cmake/DirectX.cmake4
-rw-r--r--linden/indra/llcommon/llsdserialize.cpp46
-rw-r--r--linden/indra/llcommon/llsdserialize_xml.cpp23
-rwxr-xr-xlinden/indra/llplugin/llpluginclassmedia.cpp9
-rwxr-xr-xlinden/indra/llplugin/llpluginclassmedia.h5
-rwxr-xr-xlinden/indra/llplugin/llpluginmessage.cpp13
-rwxr-xr-xlinden/indra/llplugin/llpluginprocesschild.cpp57
-rwxr-xr-xlinden/indra/llplugin/llpluginprocesschild.h6
-rw-r--r--linden/indra/llui/lllineeditor.cpp2
-rw-r--r--linden/indra/llui/lltexteditor.cpp2
-rw-r--r--linden/indra/newview/CMakeLists.txt2
-rw-r--r--linden/indra/newview/app_settings/logcontrol.xml5
-rw-r--r--linden/indra/newview/app_settings/settings.xml118
-rw-r--r--linden/indra/newview/hippogridmanager.cpp2
-rw-r--r--linden/indra/newview/impprefsfonts.cpp15
-rw-r--r--linden/indra/newview/impprefsfonts.h5
-rw-r--r--linden/indra/newview/installers/windows/imprudence_installer_script_experimental.iss4
-rw-r--r--linden/indra/newview/kowopenregionsettings.cpp8
-rw-r--r--linden/indra/newview/llface.cpp1
-rw-r--r--linden/indra/newview/llface.h2
-rw-r--r--linden/indra/newview/llfloaterchat.cpp2
-rw-r--r--linden/indra/newview/llfloaterpreference.cpp25
-rw-r--r--linden/indra/newview/llfloaterpreference.h2
-rw-r--r--linden/indra/newview/llhudeffectlookat.cpp5
-rw-r--r--linden/indra/newview/llimpanel.cpp2
-rw-r--r--linden/indra/newview/llpaneldisplay.cpp50
-rw-r--r--linden/indra/newview/llpaneldisplay.h11
-rw-r--r--linden/indra/newview/llpanelgeneral.cpp47
-rw-r--r--linden/indra/newview/llpanelgeneral.h2
-rw-r--r--linden/indra/newview/llpanelinput.cpp17
-rw-r--r--linden/indra/newview/llpanelinput.h2
-rw-r--r--linden/indra/newview/llpanelmsgs.cpp4
-rw-r--r--linden/indra/newview/llpanelnetwork.cpp241
-rw-r--r--linden/indra/newview/llpanelnetwork.h20
-rw-r--r--linden/indra/newview/llpanelweb.cpp234
-rw-r--r--linden/indra/newview/llpanelweb.h60
-rw-r--r--linden/indra/newview/llprefsadvanced.cpp187
-rw-r--r--linden/indra/newview/llprefsadvanced.h13
-rw-r--r--linden/indra/newview/llprefschat.cpp322
-rw-r--r--linden/indra/newview/llprefschat.h1
-rw-r--r--linden/indra/newview/llprefscolors.cpp30
-rw-r--r--linden/indra/newview/llprefscolors.h4
-rw-r--r--linden/indra/newview/llprefsim.cpp58
-rw-r--r--linden/indra/newview/llprefsim.h2
-rw-r--r--linden/indra/newview/llprefsvoice.cpp2
-rw-r--r--linden/indra/newview/llstartup.cpp12
-rw-r--r--linden/indra/newview/lltexturefetch.cpp55
-rw-r--r--linden/indra/newview/lltexturefetch.h2
-rw-r--r--linden/indra/newview/llviewerimagelist.cpp7
-rw-r--r--linden/indra/newview/llviewermedia.cpp7
-rw-r--r--linden/indra/newview/llviewermedia_streamingaudio.cpp2
-rw-r--r--linden/indra/newview/llvoavatar.cpp2
-rw-r--r--linden/indra/newview/llvoavatar.h1
-rw-r--r--linden/indra/newview/llvoiceclient.cpp721
-rw-r--r--linden/indra/newview/llvoiceclient.h20
-rw-r--r--linden/indra/newview/llvovolume.cpp54
-rw-r--r--linden/indra/newview/llvovolume.h4
-rw-r--r--linden/indra/newview/primbackup.cpp20
-rw-r--r--linden/indra/newview/skins/default/xui/en-us/panel_preferences_advanced.xml296
-rw-r--r--linden/indra/newview/skins/default/xui/en-us/panel_preferences_audio.xml128
-rw-r--r--linden/indra/newview/skins/default/xui/en-us/panel_preferences_chat.xml538
-rw-r--r--linden/indra/newview/skins/default/xui/en-us/panel_preferences_colors.xml167
-rw-r--r--linden/indra/newview/skins/default/xui/en-us/panel_preferences_fonts.xml57
-rw-r--r--linden/indra/newview/skins/default/xui/en-us/panel_preferences_general.xml392
-rw-r--r--linden/indra/newview/skins/default/xui/en-us/panel_preferences_graphics1.xml484
-rw-r--r--linden/indra/newview/skins/default/xui/en-us/panel_preferences_im.xml170
-rw-r--r--linden/indra/newview/skins/default/xui/en-us/panel_preferences_input.xml238
-rw-r--r--linden/indra/newview/skins/default/xui/en-us/panel_preferences_network.xml602
-rw-r--r--linden/indra/newview/skins/default/xui/en-us/panel_preferences_popups.xml126
-rw-r--r--linden/indra/newview/skins/default/xui/en-us/panel_preferences_skins.xml47
-rw-r--r--linden/indra/newview/skins/default/xui/en-us/panel_preferences_voice.xml97
-rw-r--r--linden/indra/newview/skins/default/xui/en-us/panel_preferences_web.xml68
72 files changed, 3422 insertions, 2567 deletions
diff --git a/linden/indra/cmake/DirectX.cmake b/linden/indra/cmake/DirectX.cmake
index d406f37..e455755 100644
--- a/linden/indra/cmake/DirectX.cmake
+++ b/linden/indra/cmake/DirectX.cmake
@@ -3,6 +3,8 @@
3if (VIEWER AND WINDOWS) 3if (VIEWER AND WINDOWS)
4 find_path(DIRECTX_INCLUDE_DIR dxdiag.h 4 find_path(DIRECTX_INCLUDE_DIR dxdiag.h
5 "$ENV{DXSDK_DIR}/Include" 5 "$ENV{DXSDK_DIR}/Include"
6 "$ENV{PROGRAMFILES}/Microsoft DirectX SDK (June 2010)/Include"
7 "$ENV{PROGRAMFILES}/Microsoft DirectX SDK (March 2009)/Include"
6 "$ENV{PROGRAMFILES}/Microsoft DirectX SDK (August 2008)/Include" 8 "$ENV{PROGRAMFILES}/Microsoft DirectX SDK (August 2008)/Include"
7 "$ENV{PROGRAMFILES}/Microsoft DirectX SDK (June 2008)/Include" 9 "$ENV{PROGRAMFILES}/Microsoft DirectX SDK (June 2008)/Include"
8 "$ENV{PROGRAMFILES}/Microsoft DirectX SDK (March 2008)/Include" 10 "$ENV{PROGRAMFILES}/Microsoft DirectX SDK (March 2008)/Include"
@@ -23,6 +25,8 @@ if (VIEWER AND WINDOWS)
23 25
24 find_path(DIRECTX_LIBRARY_DIR dxguid.lib 26 find_path(DIRECTX_LIBRARY_DIR dxguid.lib
25 "$ENV{DXSDK_DIR}/Lib/x86" 27 "$ENV{DXSDK_DIR}/Lib/x86"
28 "$ENV{PROGRAMFILES}/Microsoft DirectX SDK (June 2010)/Lib/x86"
29 "$ENV{PROGRAMFILES}/Microsoft DirectX SDK (March 2009)/Lib/x86"
26 "$ENV{PROGRAMFILES}/Microsoft DirectX SDK (August 2008)/Lib/x86" 30 "$ENV{PROGRAMFILES}/Microsoft DirectX SDK (August 2008)/Lib/x86"
27 "$ENV{PROGRAMFILES}/Microsoft DirectX SDK (June 2008)/Lib/x86" 31 "$ENV{PROGRAMFILES}/Microsoft DirectX SDK (June 2008)/Lib/x86"
28 "$ENV{PROGRAMFILES}/Microsoft DirectX SDK (March 2008)/Lib/x86" 32 "$ENV{PROGRAMFILES}/Microsoft DirectX SDK (March 2008)/Lib/x86"
diff --git a/linden/indra/llcommon/llsdserialize.cpp b/linden/indra/llcommon/llsdserialize.cpp
index 9f4ce64..e2be922 100644
--- a/linden/indra/llcommon/llsdserialize.cpp
+++ b/linden/indra/llcommon/llsdserialize.cpp
@@ -441,7 +441,7 @@ S32 LLSDNotationParser::doParse(std::istream& istr, LLSD& data) const
441 } 441 }
442 if(istr.fail()) 442 if(istr.fail())
443 { 443 {
444 llinfos << "STREAM FAILURE reading map." << llendl; 444 llwarns << "STREAM FAILURE reading map." << llendl;
445 parse_count = PARSE_FAILURE; 445 parse_count = PARSE_FAILURE;
446 } 446 }
447 break; 447 break;
@@ -460,7 +460,7 @@ S32 LLSDNotationParser::doParse(std::istream& istr, LLSD& data) const
460 } 460 }
461 if(istr.fail()) 461 if(istr.fail())
462 { 462 {
463 llinfos << "STREAM FAILURE reading array." << llendl; 463 llwarns << "STREAM FAILURE reading array." << llendl;
464 parse_count = PARSE_FAILURE; 464 parse_count = PARSE_FAILURE;
465 } 465 }
466 break; 466 break;
@@ -496,7 +496,7 @@ S32 LLSDNotationParser::doParse(std::istream& istr, LLSD& data) const
496 } 496 }
497 if(istr.fail()) 497 if(istr.fail())
498 { 498 {
499 llinfos << "STREAM FAILURE reading boolean." << llendl; 499 llwarns << "STREAM FAILURE reading boolean." << llendl;
500 parse_count = PARSE_FAILURE; 500 parse_count = PARSE_FAILURE;
501 } 501 }
502 break; 502 break;
@@ -522,7 +522,7 @@ S32 LLSDNotationParser::doParse(std::istream& istr, LLSD& data) const
522 } 522 }
523 if(istr.fail()) 523 if(istr.fail())
524 { 524 {
525 llinfos << "STREAM FAILURE reading boolean." << llendl; 525 llwarns << "STREAM FAILURE reading boolean." << llendl;
526 parse_count = PARSE_FAILURE; 526 parse_count = PARSE_FAILURE;
527 } 527 }
528 break; 528 break;
@@ -535,7 +535,7 @@ S32 LLSDNotationParser::doParse(std::istream& istr, LLSD& data) const
535 data = integer; 535 data = integer;
536 if(istr.fail()) 536 if(istr.fail())
537 { 537 {
538 llinfos << "STREAM FAILURE reading integer." << llendl; 538 llwarns << "STREAM FAILURE reading integer." << llendl;
539 parse_count = PARSE_FAILURE; 539 parse_count = PARSE_FAILURE;
540 } 540 }
541 break; 541 break;
@@ -549,7 +549,7 @@ S32 LLSDNotationParser::doParse(std::istream& istr, LLSD& data) const
549 data = real; 549 data = real;
550 if(istr.fail()) 550 if(istr.fail())
551 { 551 {
552 llinfos << "STREAM FAILURE reading real." << llendl; 552 llwarns << "STREAM FAILURE reading real." << llendl;
553 parse_count = PARSE_FAILURE; 553 parse_count = PARSE_FAILURE;
554 } 554 }
555 break; 555 break;
@@ -563,7 +563,7 @@ S32 LLSDNotationParser::doParse(std::istream& istr, LLSD& data) const
563 data = id; 563 data = id;
564 if(istr.fail()) 564 if(istr.fail())
565 { 565 {
566 llinfos << "STREAM FAILURE reading uuid." << llendl; 566 llwarns << "STREAM FAILURE reading uuid." << llendl;
567 parse_count = PARSE_FAILURE; 567 parse_count = PARSE_FAILURE;
568 } 568 }
569 break; 569 break;
@@ -578,7 +578,7 @@ S32 LLSDNotationParser::doParse(std::istream& istr, LLSD& data) const
578 } 578 }
579 if(istr.fail()) 579 if(istr.fail())
580 { 580 {
581 llinfos << "STREAM FAILURE reading string." << llendl; 581 llwarns << "STREAM FAILURE reading string." << llendl;
582 parse_count = PARSE_FAILURE; 582 parse_count = PARSE_FAILURE;
583 } 583 }
584 break; 584 break;
@@ -600,7 +600,7 @@ S32 LLSDNotationParser::doParse(std::istream& istr, LLSD& data) const
600 } 600 }
601 if(istr.fail()) 601 if(istr.fail())
602 { 602 {
603 llinfos << "STREAM FAILURE reading link." << llendl; 603 llwarns << "STREAM FAILURE reading link." << llendl;
604 parse_count = PARSE_FAILURE; 604 parse_count = PARSE_FAILURE;
605 } 605 }
606 break; 606 break;
@@ -623,7 +623,7 @@ S32 LLSDNotationParser::doParse(std::istream& istr, LLSD& data) const
623 } 623 }
624 if(istr.fail()) 624 if(istr.fail())
625 { 625 {
626 llinfos << "STREAM FAILURE reading date." << llendl; 626 llwarns << "STREAM FAILURE reading date." << llendl;
627 parse_count = PARSE_FAILURE; 627 parse_count = PARSE_FAILURE;
628 } 628 }
629 break; 629 break;
@@ -636,14 +636,14 @@ S32 LLSDNotationParser::doParse(std::istream& istr, LLSD& data) const
636 } 636 }
637 if(istr.fail()) 637 if(istr.fail())
638 { 638 {
639 llinfos << "STREAM FAILURE reading data." << llendl; 639 llwarns << "STREAM FAILURE reading data." << llendl;
640 parse_count = PARSE_FAILURE; 640 parse_count = PARSE_FAILURE;
641 } 641 }
642 break; 642 break;
643 643
644 default: 644 default:
645 parse_count = PARSE_FAILURE; 645 parse_count = PARSE_FAILURE;
646 llinfos << "Unrecognized character while parsing: int(" << (int)c 646 llwarns << "Unrecognized character while parsing: int(" << (int)c
647 << ")" << llendl; 647 << ")" << llendl;
648 break; 648 break;
649 } 649 }
@@ -905,7 +905,7 @@ S32 LLSDBinaryParser::doParse(std::istream& istr, LLSD& data) const
905 } 905 }
906 if(istr.fail()) 906 if(istr.fail())
907 { 907 {
908 llinfos << "STREAM FAILURE reading binary map." << llendl; 908 llwarns << "STREAM FAILURE reading binary map." << llendl;
909 parse_count = PARSE_FAILURE; 909 parse_count = PARSE_FAILURE;
910 } 910 }
911 break; 911 break;
@@ -924,7 +924,7 @@ S32 LLSDBinaryParser::doParse(std::istream& istr, LLSD& data) const
924 } 924 }
925 if(istr.fail()) 925 if(istr.fail())
926 { 926 {
927 llinfos << "STREAM FAILURE reading binary array." << llendl; 927 llwarns << "STREAM FAILURE reading binary array." << llendl;
928 parse_count = PARSE_FAILURE; 928 parse_count = PARSE_FAILURE;
929 } 929 }
930 break; 930 break;
@@ -949,7 +949,7 @@ S32 LLSDBinaryParser::doParse(std::istream& istr, LLSD& data) const
949 data = (S32)ntohl(value_nbo); 949 data = (S32)ntohl(value_nbo);
950 if(istr.fail()) 950 if(istr.fail())
951 { 951 {
952 llinfos << "STREAM FAILURE reading binary integer." << llendl; 952 llwarns << "STREAM FAILURE reading binary integer." << llendl;
953 } 953 }
954 break; 954 break;
955 } 955 }
@@ -961,7 +961,7 @@ S32 LLSDBinaryParser::doParse(std::istream& istr, LLSD& data) const
961 data = ll_ntohd(real_nbo); 961 data = ll_ntohd(real_nbo);
962 if(istr.fail()) 962 if(istr.fail())
963 { 963 {
964 llinfos << "STREAM FAILURE reading binary real." << llendl; 964 llwarns << "STREAM FAILURE reading binary real." << llendl;
965 } 965 }
966 break; 966 break;
967 } 967 }
@@ -973,7 +973,7 @@ S32 LLSDBinaryParser::doParse(std::istream& istr, LLSD& data) const
973 data = id; 973 data = id;
974 if(istr.fail()) 974 if(istr.fail())
975 { 975 {
976 llinfos << "STREAM FAILURE reading binary uuid." << llendl; 976 llwarns << "STREAM FAILURE reading binary uuid." << llendl;
977 } 977 }
978 break; 978 break;
979 } 979 }
@@ -994,7 +994,7 @@ S32 LLSDBinaryParser::doParse(std::istream& istr, LLSD& data) const
994 } 994 }
995 if(istr.fail()) 995 if(istr.fail())
996 { 996 {
997 llinfos << "STREAM FAILURE reading binary (notation-style) string." 997 llwarns << "STREAM FAILURE reading binary (notation-style) string."
998 << llendl; 998 << llendl;
999 parse_count = PARSE_FAILURE; 999 parse_count = PARSE_FAILURE;
1000 } 1000 }
@@ -1014,7 +1014,7 @@ S32 LLSDBinaryParser::doParse(std::istream& istr, LLSD& data) const
1014 } 1014 }
1015 if(istr.fail()) 1015 if(istr.fail())
1016 { 1016 {
1017 llinfos << "STREAM FAILURE reading binary string." << llendl; 1017 llwarns << "STREAM FAILURE reading binary string." << llendl;
1018 parse_count = PARSE_FAILURE; 1018 parse_count = PARSE_FAILURE;
1019 } 1019 }
1020 break; 1020 break;
@@ -1033,7 +1033,7 @@ S32 LLSDBinaryParser::doParse(std::istream& istr, LLSD& data) const
1033 } 1033 }
1034 if(istr.fail()) 1034 if(istr.fail())
1035 { 1035 {
1036 llinfos << "STREAM FAILURE reading binary link." << llendl; 1036 llwarns << "STREAM FAILURE reading binary link." << llendl;
1037 parse_count = PARSE_FAILURE; 1037 parse_count = PARSE_FAILURE;
1038 } 1038 }
1039 break; 1039 break;
@@ -1046,7 +1046,7 @@ S32 LLSDBinaryParser::doParse(std::istream& istr, LLSD& data) const
1046 data = LLDate(real); 1046 data = LLDate(real);
1047 if(istr.fail()) 1047 if(istr.fail())
1048 { 1048 {
1049 llinfos << "STREAM FAILURE reading binary date." << llendl; 1049 llwarns << "STREAM FAILURE reading binary date." << llendl;
1050 parse_count = PARSE_FAILURE; 1050 parse_count = PARSE_FAILURE;
1051 } 1051 }
1052 break; 1052 break;
@@ -1075,7 +1075,7 @@ S32 LLSDBinaryParser::doParse(std::istream& istr, LLSD& data) const
1075 } 1075 }
1076 if(istr.fail()) 1076 if(istr.fail())
1077 { 1077 {
1078 llinfos << "STREAM FAILURE reading binary." << llendl; 1078 llwarns << "STREAM FAILURE reading binary." << llendl;
1079 parse_count = PARSE_FAILURE; 1079 parse_count = PARSE_FAILURE;
1080 } 1080 }
1081 break; 1081 break;
@@ -1083,7 +1083,7 @@ S32 LLSDBinaryParser::doParse(std::istream& istr, LLSD& data) const
1083 1083
1084 default: 1084 default:
1085 parse_count = PARSE_FAILURE; 1085 parse_count = PARSE_FAILURE;
1086 llinfos << "Unrecognized character while parsing: int(" << (int)c 1086 llwarns << "Unrecognized character while parsing: int(" << (int)c
1087 << ")" << llendl; 1087 << ")" << llendl;
1088 break; 1088 break;
1089 } 1089 }
diff --git a/linden/indra/llcommon/llsdserialize_xml.cpp b/linden/indra/llcommon/llsdserialize_xml.cpp
index 33206b4..dab6c1d 100644
--- a/linden/indra/llcommon/llsdserialize_xml.cpp
+++ b/linden/indra/llcommon/llsdserialize_xml.cpp
@@ -391,6 +391,14 @@ S32 LLSDXMLParser::Impl::parse(std::istream& input, LLSD& data)
391 391
392 if (status == XML_STATUS_ERROR) 392 if (status == XML_STATUS_ERROR)
393 { 393 {
394 std::string error_string( XML_ErrorString(XML_GetErrorCode( mParser )));
395 if ("parsing aborted" != error_string )//end of input
396 {
397 S32 line_number = XML_GetCurrentLineNumber( mParser );
398 llwarns << "LLXmlTree parse failed. Line " << line_number << ": "
399 << error_string << llendl;
400 }
401
394 break; 402 break;
395 } 403 }
396 } 404 }
@@ -408,7 +416,8 @@ S32 LLSDXMLParser::Impl::parse(std::istream& input, LLSD& data)
408 { 416 {
409 ((char*) buffer)[count ? count - 1 : 0] = '\0'; 417 ((char*) buffer)[count ? count - 1 : 0] = '\0';
410 } 418 }
411 llinfos << "LLSDXMLParser::Impl::parse: XML_STATUS_ERROR parsing:" << (char*) buffer << llendl; 419
420
412 data = LLSD(); 421 data = LLSD();
413 return LLSDParser::PARSE_FAILURE; 422 return LLSDParser::PARSE_FAILURE;
414 } 423 }
@@ -486,7 +495,13 @@ S32 LLSDXMLParser::Impl::parseLines(std::istream& input, LLSD& data)
486 if (status == XML_STATUS_ERROR 495 if (status == XML_STATUS_ERROR
487 && !mGracefullStop) 496 && !mGracefullStop)
488 { 497 {
489 llinfos << "LLSDXMLParser::Impl::parseLines: XML_STATUS_ERROR" << llendl; 498 std::string error_string( XML_ErrorString(XML_GetErrorCode( mParser )));
499 if ("parsing aborted" != error_string )//end of input
500 {
501 S32 line_number = XML_GetCurrentLineNumber( mParser );
502 llwarns << "LLXmlTree parse failed. Line " << line_number << ": "
503 << error_string << llendl;
504 }
490 return LLSDParser::PARSE_FAILURE; 505 return LLSDParser::PARSE_FAILURE;
491 } 506 }
492 507
@@ -552,7 +567,9 @@ void LLSDXMLParser::Impl::parsePart(const char* buf, int len)
552 XML_Status status = XML_Parse(mParser, buf, len, false); 567 XML_Status status = XML_Parse(mParser, buf, len, false);
553 if (status == XML_STATUS_ERROR) 568 if (status == XML_STATUS_ERROR)
554 { 569 {
555 llinfos << "Unexpected XML parsing error at start" << llendl; 570 std::string error_string( XML_ErrorString(XML_GetErrorCode( mParser )) );
571
572 llwarns << "Unexpected XML parsing error at start: " << error_string << llendl;
556 } 573 }
557 } 574 }
558} 575}
diff --git a/linden/indra/llplugin/llpluginclassmedia.cpp b/linden/indra/llplugin/llpluginclassmedia.cpp
index f0a44f7..31a9d1d 100755
--- a/linden/indra/llplugin/llpluginclassmedia.cpp
+++ b/linden/indra/llplugin/llpluginclassmedia.cpp
@@ -1143,6 +1143,15 @@ void LLPluginClassMedia::setBrowserUserAgent(const std::string& user_agent)
1143 sendMessage(message); 1143 sendMessage(message);
1144} 1144}
1145 1145
1146#if LL_WINDOWS
1147void LLPluginClassMedia::showConsole()
1148{
1149 LLPluginMessage message(LLPLUGIN_MESSAGE_CLASS_INTERNAL, "show_console");
1150
1151 sendMessage(message);
1152}
1153#endif
1154
1146void LLPluginClassMedia::crashPlugin() 1155void LLPluginClassMedia::crashPlugin()
1147{ 1156{
1148 LLPluginMessage message(LLPLUGIN_MESSAGE_CLASS_INTERNAL, "crash"); 1157 LLPluginMessage message(LLPLUGIN_MESSAGE_CLASS_INTERNAL, "crash");
diff --git a/linden/indra/llplugin/llpluginclassmedia.h b/linden/indra/llplugin/llpluginclassmedia.h
index 0004971..098312d 100755
--- a/linden/indra/llplugin/llpluginclassmedia.h
+++ b/linden/indra/llplugin/llpluginclassmedia.h
@@ -229,6 +229,11 @@ public:
229 std::string getMediaName() const { return mMediaName; }; 229 std::string getMediaName() const { return mMediaName; };
230 std::string getMediaDescription() const { return mMediaDescription; }; 230 std::string getMediaDescription() const { return mMediaDescription; };
231 231
232 #if LL_WINDOWS
233 //Open a debug console for this plugin.
234 void showConsole();
235 #endif
236
232 // Crash the plugin. If you use this outside of a testbed, you will be punished. 237 // Crash the plugin. If you use this outside of a testbed, you will be punished.
233 void crashPlugin(); 238 void crashPlugin();
234 239
diff --git a/linden/indra/llplugin/llpluginmessage.cpp b/linden/indra/llplugin/llpluginmessage.cpp
index 0810a04..9c4940a 100755
--- a/linden/indra/llplugin/llpluginmessage.cpp
+++ b/linden/indra/llplugin/llpluginmessage.cpp
@@ -368,7 +368,8 @@ std::string LLPluginMessage::generate(void) const
368 368
369 // Pretty XML may be slightly easier to deal with while debugging... 369 // Pretty XML may be slightly easier to deal with while debugging...
370// LLSDSerialize::toXML(mMessage, result); 370// LLSDSerialize::toXML(mMessage, result);
371 LLSDSerialize::toPrettyXML(mMessage, result); 371// LLSDSerialize::toPrettyXML(mMessage, result);
372 result << mMessage;
372 373
373 return result.str(); 374 return result.str();
374} 375}
@@ -383,10 +384,12 @@ int LLPluginMessage::parse(const std::string &message)
383 // clear any previous state 384 // clear any previous state
384 clear(); 385 clear();
385 386
386 std::istringstream input(message); 387 std::istringstream input(message);
387 388
388 S32 parse_result = LLSDSerialize::fromXML(mMessage, input); 389
389 390// S32 parse_result = LLSDSerialize::fromXML(test, input);
391 S32 parse_result = LLSDSerialize::fromNotation( mMessage, input, LLSDSerialize::SIZE_UNLIMITED) ;
392
390 return (int)parse_result; 393 return (int)parse_result;
391} 394}
392 395
diff --git a/linden/indra/llplugin/llpluginprocesschild.cpp b/linden/indra/llplugin/llpluginprocesschild.cpp
index 0d95cac..168236e 100755
--- a/linden/indra/llplugin/llpluginprocesschild.cpp
+++ b/linden/indra/llplugin/llpluginprocesschild.cpp
@@ -42,6 +42,14 @@
42#include "llpluginmessagepipe.h" 42#include "llpluginmessagepipe.h"
43#include "llpluginmessageclasses.h" 43#include "llpluginmessageclasses.h"
44 44
45#if LL_WINDOWS
46#include <windows.h>
47#include <fcntl.h>
48#include <io.h>
49#include <iostream>
50#include <fstream>
51#endif
52
45static const F32 HEARTBEAT_SECONDS = 1.0f; 53static const F32 HEARTBEAT_SECONDS = 1.0f;
46static const F32 PLUGIN_IDLE_SECONDS = 1.0f / 100.0f; // Each call to idle will give the plugin this much time. 54static const F32 PLUGIN_IDLE_SECONDS = 1.0f / 100.0f; // Each call to idle will give the plugin this much time.
47 55
@@ -420,6 +428,12 @@ void LLPluginProcessChild::receiveMessageRaw(const std::string &message)
420 { 428 {
421 mSleepTime = parsed.getValueReal("time"); 429 mSleepTime = parsed.getValueReal("time");
422 } 430 }
431 #if LL_WINDOWS
432 else if(message_name == "show_console")
433 {
434 createConsole();
435 }
436 #endif
423 else if(message_name == "crash") 437 else if(message_name == "crash")
424 { 438 {
425 // Crash the plugin 439 // Crash the plugin
@@ -569,3 +583,46 @@ void LLPluginProcessChild::deliverQueuedMessages()
569 } 583 }
570 } 584 }
571} 585}
586
587#if LL_WINDOWS
588void LLPluginProcessChild::createConsole()
589{
590 const S32 MAX_CONSOLE_LINES = 500;
591
592 int h_con_handle;
593 long l_std_handle;
594
595 CONSOLE_SCREEN_BUFFER_INFO coninfo;
596 FILE *fp;
597
598 // allocate a console for this app
599 AllocConsole();
600
601 // set the screen buffer to be big enough to let us scroll text
602 GetConsoleScreenBufferInfo(GetStdHandle(STD_OUTPUT_HANDLE), &coninfo);
603 coninfo.dwSize.Y = MAX_CONSOLE_LINES;
604 SetConsoleScreenBufferSize(GetStdHandle(STD_OUTPUT_HANDLE), coninfo.dwSize);
605
606 // redirect unbuffered STDOUT to the console
607 l_std_handle = (long)GetStdHandle(STD_OUTPUT_HANDLE);
608 h_con_handle = _open_osfhandle(l_std_handle, _O_TEXT);
609 fp = _fdopen( h_con_handle, "w" );
610 *stdout = *fp;
611 setvbuf( stdout, NULL, _IONBF, 0 );
612
613 // redirect unbuffered STDIN to the console
614 l_std_handle = (long)GetStdHandle(STD_INPUT_HANDLE);
615 h_con_handle = _open_osfhandle(l_std_handle, _O_TEXT);
616 fp = _fdopen( h_con_handle, "r" );
617 *stdin = *fp;
618 setvbuf( stdin, NULL, _IONBF, 0 );
619
620 // redirect unbuffered STDERR to the console
621 l_std_handle = (long)GetStdHandle(STD_ERROR_HANDLE);
622 h_con_handle = _open_osfhandle(l_std_handle, _O_TEXT);
623 fp = _fdopen( h_con_handle, "w" );
624 *stderr = *fp;
625 setvbuf( stderr, NULL, _IOFBF, 1024 ); //Assigning a buffer improves speed a LOT, esp on vista/win7
626 //_IOLBF is borked.
627}
628#endif \ No newline at end of file
diff --git a/linden/indra/llplugin/llpluginprocesschild.h b/linden/indra/llplugin/llpluginprocesschild.h
index 5d643d7..6d864bb 100755
--- a/linden/indra/llplugin/llpluginprocesschild.h
+++ b/linden/indra/llplugin/llpluginprocesschild.h
@@ -76,7 +76,11 @@ public:
76 76
77 // Inherited from LLPluginInstanceMessageListener 77 // Inherited from LLPluginInstanceMessageListener
78 /* virtual */ void receivePluginMessage(const std::string &message); 78 /* virtual */ void receivePluginMessage(const std::string &message);
79 79
80#if LL_WINDOWS
81 void createConsole();
82#endif
83
80private: 84private:
81 85
82 enum EState 86 enum EState
diff --git a/linden/indra/llui/lllineeditor.cpp b/linden/indra/llui/lllineeditor.cpp
index 453bb50..c4f9525 100644
--- a/linden/indra/llui/lllineeditor.cpp
+++ b/linden/indra/llui/lllineeditor.cpp
@@ -1344,7 +1344,7 @@ void LLLineEditor::defineMenuCallbacks(LLMenuGL* menu) {
1344 "Select All Text", 1344 "Select All Text",
1345 this, 1345 this,
1346 (void*)context_enable_selectall); 1346 (void*)context_enable_selectall);
1347 menu->setCtrlResponse(1+LLCallbackInformation::LL_MENU_ITEM_CALL_GL_ON_CLICK, 1347 menu->setCtrlResponse(LLCallbackInformation::LL_MENU_ITEM_CALL_GL_ON_CLICK,
1348 "Select All Text", 1348 "Select All Text",
1349 this, 1349 this,
1350 (void*)context_selectall); 1350 (void*)context_selectall);
diff --git a/linden/indra/llui/lltexteditor.cpp b/linden/indra/llui/lltexteditor.cpp
index 5bddcbc..dd72a69 100644
--- a/linden/indra/llui/lltexteditor.cpp
+++ b/linden/indra/llui/lltexteditor.cpp
@@ -636,7 +636,7 @@ void LLTextEditor::defineMenuCallbacks(LLMenuGL* menu) {
636 "Select All Text", 636 "Select All Text",
637 this, 637 this,
638 (void*)context_enable_selectall); 638 (void*)context_enable_selectall);
639 menu->setCtrlResponse(1+LLCallbackInformation::LL_MENU_ITEM_CALL_GL_ON_CLICK, 639 menu->setCtrlResponse(LLCallbackInformation::LL_MENU_ITEM_CALL_GL_ON_CLICK,
640 "Select All Text", 640 "Select All Text",
641 this, 641 this,
642 (void*)context_selectall); 642 (void*)context_selectall);
diff --git a/linden/indra/newview/CMakeLists.txt b/linden/indra/newview/CMakeLists.txt
index 72b2d02..5500a73 100644
--- a/linden/indra/newview/CMakeLists.txt
+++ b/linden/indra/newview/CMakeLists.txt
@@ -330,7 +330,6 @@ set(viewer_SOURCE_FILES
330 llpanelplace.cpp 330 llpanelplace.cpp
331 llpanelskins.cpp 331 llpanelskins.cpp
332 llpanelvolume.cpp 332 llpanelvolume.cpp
333 llpanelweb.cpp
334 llparcelselection.cpp 333 llparcelselection.cpp
335 llpatchvertexarray.cpp 334 llpatchvertexarray.cpp
336 llpolymesh.cpp 335 llpolymesh.cpp
@@ -793,7 +792,6 @@ set(viewer_HEADER_FILES
793 llpanelplace.h 792 llpanelplace.h
794 llpanelskins.h 793 llpanelskins.h
795 llpanelvolume.h 794 llpanelvolume.h
796 llpanelweb.h
797 llparcelselection.h 795 llparcelselection.h
798 llpatchvertexarray.h 796 llpatchvertexarray.h
799 llpolymesh.h 797 llpolymesh.h
diff --git a/linden/indra/newview/app_settings/logcontrol.xml b/linden/indra/newview/app_settings/logcontrol.xml
index c9e9127..f0db00f 100644
--- a/linden/indra/newview/app_settings/logcontrol.xml
+++ b/linden/indra/newview/app_settings/logcontrol.xml
@@ -90,7 +90,12 @@
90 <!--<string>TextureCache</string>--> 90 <!--<string>TextureCache</string>-->
91 <!--<string>Throttle</string>--> 91 <!--<string>Throttle</string>-->
92 <!--<string>Voice</string>--> 92 <!--<string>Voice</string>-->
93 <!--<string>"VoiceCaps"</string>-->
94 <!--<string>VoiceSession</string>-->
95 <!--<string>VoiceDaemon</string>-->
96 <!--<string>VoiceDevice</string>-->
93 <!--<string>VivoxProtocolParser</string>--> 97 <!--<string>VivoxProtocolParser</string>-->
98
94 <!--<string>Wearable</string>--> 99 <!--<string>Wearable</string>-->
95 <!--<string>WindLight</string>--> 100 <!--<string>WindLight</string>-->
96 101
diff --git a/linden/indra/newview/app_settings/settings.xml b/linden/indra/newview/app_settings/settings.xml
index 80eb65a..1ada9f8 100644
--- a/linden/indra/newview/app_settings/settings.xml
+++ b/linden/indra/newview/app_settings/settings.xml
@@ -39,16 +39,27 @@
39 <key>Value</key> 39 <key>Value</key>
40 <integer>0</integer> 40 <integer>0</integer>
41 </map> 41 </map>
42 <key>VoiceModule</key> 42 <key>VoiceModuleMumble</key>
43 <map> 43 <map>
44 <key>Comment</key> 44 <key>Comment</key>
45 <string>Executable file that runs voice. Platform specific parts (like .exe on windows) are added automatically.</string> 45 <string>Executable file that runs mumble voice . Platform specific parts (like .exe on windows) are added automatically, paths are stripped off if present. Defaults to mumble if empty</string>
46 <key>Persist</key> 46 <key>Persist</key>
47 <integer>1</integer> 47 <integer>1</integer>
48 <key>Type</key> 48 <key>Type</key>
49 <string>String</string> 49 <string>String</string>
50 <key>Value</key> 50 <key>Value</key>
51 <string>SLVoice</string> 51 <string />
52 </map>
53 <key>VoiceModuleVivox</key>
54 <map>
55 <key>Comment</key>
56 <string>Executable file that runs vivox voice. Platform specific parts (like .exe on windows) are added automatically, paths are stripped off if present. Defaults to SLVoice if empty.</string>
57 <key>Persist</key>
58 <integer>1</integer>
59 <key>Type</key>
60 <string>String</string>
61 <key>Value</key>
62 <string />
52 </map> 63 </map>
53 64
54 <!-- end Aurora-specific settings --> 65 <!-- end Aurora-specific settings -->
@@ -204,7 +215,7 @@
204 <key>AutoCloseOOC</key> 215 <key>AutoCloseOOC</key>
205 <map> 216 <map>
206 <key>Comment</key> 217 <key>Comment</key>
207 <string>Auto-close OOC chat (i.e. add \"))\" if not found and \"((\" was used)</string> 218 <string>Auto-close OOC chat (i.e. add &apos;&quot;))&apos;&quot; if not found and &apos;&quot;((&apos;&quot; was used)</string>
208 <key>Persist</key> 219 <key>Persist</key>
209 <integer>1</integer> 220 <integer>1</integer>
210 <key>Type</key> 221 <key>Type</key>
@@ -459,7 +470,7 @@
459 <key>OmitResidentAsLastName</key> 470 <key>OmitResidentAsLastName</key>
460 <map> 471 <map>
461 <key>Comment</key> 472 <key>Comment</key>
462 <string>Do not display "Resident" as the last name for new residents in their legacy name</string> 473 <string>Do not display &quot;Resident&quot; as the last name for new residents in their legacy name</string>
463 <key>Persist</key> 474 <key>Persist</key>
464 <integer>1</integer> 475 <integer>1</integer>
465 <key>Type</key> 476 <key>Type</key>
@@ -639,7 +650,7 @@
639 <key>GoAction</key> 650 <key>GoAction</key>
640 <map> 651 <map>
641 <key>Comment</key> 652 <key>Comment</key>
642 <string>How to move for "Go Here" or double-click move. Either "Autopilot" or "Teleport".</string> 653 <string>How to move for &quot;Go Here&quot; or double-click move. Either &quot;Autopilot&quot; or &quot;Teleport&quot;.</string>
643 <key>Persist</key> 654 <key>Persist</key>
644 <integer>1</integer> 655 <integer>1</integer>
645 <key>Type</key> 656 <key>Type</key>
@@ -1004,6 +1015,17 @@
1004 <key>Value</key> 1015 <key>Value</key>
1005 <integer>1</integer> 1016 <integer>1</integer>
1006 </map> 1017 </map>
1018 <key>ShowTimestamps</key>
1019 <map>
1020 <key>Comment</key>
1021 <string>Show timestamps in chat and IMs</string>
1022 <key>Persist</key>
1023 <integer>1</integer>
1024 <key>Type</key>
1025 <string>Boolean</string>
1026 <key>Value</key>
1027 <integer>1</integer>
1028 </map>
1007 <key>SpeedRez</key> 1029 <key>SpeedRez</key>
1008 <map> 1030 <map>
1009 <key>Comment</key> 1031 <key>Comment</key>
@@ -1038,7 +1060,7 @@
1038 <integer>1</integer> 1060 <integer>1</integer>
1039 </map> 1061 </map>
1040 <key>RenderWaterVoidCulling</key> 1062 <key>RenderWaterVoidCulling</key>
1041 <map> 1063 <map>
1042 <key>Comment</key> 1064 <key>Comment</key>
1043 <string>Cull void water objects when off-screen.</string> 1065 <string>Cull void water objects when off-screen.</string>
1044 <key>Persist</key> 1066 <key>Persist</key>
@@ -1060,16 +1082,16 @@
1060 <integer>0</integer> 1082 <integer>0</integer>
1061 </map> 1083 </map>
1062 <key>ResetFocusOnSelfClick</key> 1084 <key>ResetFocusOnSelfClick</key>
1063 <map> 1085 <map>
1064 <key>Comment</key> 1086 <key>Comment</key>
1065 <string>Setting this to TRUE resets your camera when you left-click your avatar</string> 1087 <string>Setting this to TRUE resets your camera when you left-click your avatar</string>
1066 <key>Persist</key> 1088 <key>Persist</key>
1067 <integer>1</integer> 1089 <integer>1</integer>
1068 <key>Type</key> 1090 <key>Type</key>
1069 <string>Boolean</string> 1091 <string>Boolean</string>
1070 <key>Value</key> 1092 <key>Value</key>
1071 <integer>1</integer> 1093 <integer>1</integer>
1072 </map> 1094 </map>
1073 <key>RezWithLandGroup</key> 1095 <key>RezWithLandGroup</key>
1074 <map> 1096 <map>
1075 <key>Comment</key> 1097 <key>Comment</key>
@@ -1513,7 +1535,7 @@
1513 </map> 1535 </map>
1514 1536
1515 <!-- Begin: OpenRegionInfo --> 1537 <!-- Begin: OpenRegionInfo -->
1516 1538
1517 <key>ToggleTeenMode</key> 1539 <key>ToggleTeenMode</key>
1518 <map> 1540 <map>
1519 <key>Comment</key> 1541 <key>Comment</key>
@@ -1525,7 +1547,7 @@
1525 <key>Value</key> 1547 <key>Value</key>
1526 <integer>1</integer> 1548 <integer>1</integer>
1527 </map> 1549 </map>
1528 1550
1529 <!-- Begin: AO--> 1551 <!-- Begin: AO-->
1530 1552
1531 <key>AOEnabled</key> 1553 <key>AOEnabled</key>
@@ -1776,7 +1798,7 @@
1776 <key>Value</key> 1798 <key>Value</key>
1777 <integer>1</integer> 1799 <integer>1</integer>
1778 </map> 1800 </map>
1779 1801
1780 <key>DownloadClientTags</key> 1802 <key>DownloadClientTags</key>
1781 <map> 1803 <map>
1782 <key>Comment</key> 1804 <key>Comment</key>
@@ -2131,9 +2153,9 @@
2131 <key>Value</key> 2153 <key>Value</key>
2132 <string>English (United States of America)</string> 2154 <string>English (United States of America)</string>
2133 </map> 2155 </map>
2134 2156
2135 <!-- End: Spellcheck & Translation --> 2157 <!-- End: Spellcheck & Translation -->
2136 2158
2137 <!-- Begin: RLVa --> 2159 <!-- Begin: RLVa -->
2138 2160
2139 <key>RestrainedLove</key> 2161 <key>RestrainedLove</key>
@@ -2205,7 +2227,7 @@
2205 <key>RLVaEnableWear</key> 2227 <key>RLVaEnableWear</key>
2206 <map> 2228 <map>
2207 <key>Comment</key> 2229 <key>Comment</key>
2208 <string>Enables the "Wear" option on the inventory item context menu for attachments</string> 2230 <string>Enables the &quot;Wear&quot; option on the inventory item context menu for attachments</string>
2209 <key>Persist</key> 2231 <key>Persist</key>
2210 <integer>1</integer> 2232 <integer>1</integer>
2211 <key>Type</key> 2233 <key>Type</key>
@@ -2227,7 +2249,7 @@
2227 <key>RLVaHideLockedLayers</key> 2249 <key>RLVaHideLockedLayers</key>
2228 <map> 2250 <map>
2229 <key>Comment</key> 2251 <key>Comment</key>
2230 <string>Hides "remove outfit" restricted worn clothing layers from @getoufit</string> 2252 <string>Hides &quot;remove outfit&quot; restricted worn clothing layers from @getoufit</string>
2231 <key>Persist</key> 2253 <key>Persist</key>
2232 <integer>1</integer> 2254 <integer>1</integer>
2233 <key>Type</key> 2255 <key>Type</key>
@@ -2260,7 +2282,7 @@
2260 <key>RLVaShowNameTags</key> 2282 <key>RLVaShowNameTags</key>
2261 <map> 2283 <map>
2262 <key>Comment</key> 2284 <key>Comment</key>
2263 <string>Display of names above avatars is subject to the general "Show Names" setting when @shownames=n restricted</string> 2285 <string>Display of names above avatars is subject to the general &quot;Show Names&quot; setting when @shownames=n restricted</string>
2264 <key>Persist</key> 2286 <key>Persist</key>
2265 <integer>1</integer> 2287 <integer>1</integer>
2266 <key>Type</key> 2288 <key>Type</key>
@@ -2314,7 +2336,7 @@
2314 </map> 2336 </map>
2315 2337
2316 <!-- End: RLVa --> 2338 <!-- End: RLVa -->
2317 2339
2318 <!-- Begin: socks5 --> 2340 <!-- Begin: socks5 -->
2319 2341
2320 <key>Socks5ProxyEnabled</key> 2342 <key>Socks5ProxyEnabled</key>
@@ -2525,11 +2547,11 @@
2525 <key>Value</key> 2547 <key>Value</key>
2526 <integer>-8888888</integer> 2548 <integer>-8888888</integer>
2527 </map> 2549 </map>
2528 2550
2529 <!-- End: full radar (Advanced menu) --> 2551 <!-- End: full radar (Advanced menu) -->
2530 2552
2531 <!-- END IMPRUDENCE-SPECIFIC SETTINGS --> 2553 <!-- END IMPRUDENCE-SPECIFIC SETTINGS -->
2532 2554
2533 <key>AFKTimeout</key> 2555 <key>AFKTimeout</key>
2534 <map> 2556 <map>
2535 <key>Comment</key> 2557 <key>Comment</key>
@@ -2985,7 +3007,7 @@
2985 <key>AutomaticFly</key> 3007 <key>AutomaticFly</key>
2986 <map> 3008 <map>
2987 <key>Comment</key> 3009 <key>Comment</key>
2988 <string>Fly by holding jump key or using "Fly" command (FALSE = fly by using "Fly" command only)</string> 3010 <string>Fly by holding jump key or using &quot;Fly&quot; command (FALSE = fly by using &quot;Fly&quot; command only)</string>
2989 <key>Persist</key> 3011 <key>Persist</key>
2990 <integer>1</integer> 3012 <integer>1</integer>
2991 <key>Type</key> 3013 <key>Type</key>
@@ -3944,17 +3966,6 @@
3944 <key>Value</key> 3966 <key>Value</key>
3945 <real>20.0</real> 3967 <real>20.0</real>
3946 </map> 3968 </map>
3947 <key>ChatShowTimestamps</key>
3948 <map>
3949 <key>Comment</key>
3950 <string>Show timestamps in chat</string>
3951 <key>Persist</key>
3952 <integer>1</integer>
3953 <key>Type</key>
3954 <string>Boolean</string>
3955 <key>Value</key>
3956 <integer>1</integer>
3957 </map>
3958 <key>ChatVisible</key> 3969 <key>ChatVisible</key>
3959 <map> 3970 <map>
3960 <key>Comment</key> 3971 <key>Comment</key>
@@ -5626,7 +5637,7 @@
5626 <key>DoubleClickAction</key> 5637 <key>DoubleClickAction</key>
5627 <map> 5638 <map>
5628 <key>Comment</key> 5639 <key>Comment</key>
5629 <string>What to do when you double-click. Either "None" or "Go".</string> 5640 <string>What to do when you double-click. Either &quot;None&quot; or &quot;Go&quot;.</string>
5630 <key>Persist</key> 5641 <key>Persist</key>
5631 <integer>1</integer> 5642 <integer>1</integer>
5632 <key>Type</key> 5643 <key>Type</key>
@@ -5862,7 +5873,7 @@
5862 <key>FindLandType</key> 5873 <key>FindLandType</key>
5863 <map> 5874 <map>
5864 <key>Comment</key> 5875 <key>Comment</key>
5865 <string>Controls which type of land you are searching for in Find Land interface ("All", "Auction", "For Sale")</string> 5876 <string>Controls which type of land you are searching for in Find Land interface (&quot;All&quot;, &quot;Auction&quot;, &quot;For Sale&quot;)</string>
5866 <key>Persist</key> 5877 <key>Persist</key>
5867 <integer>1</integer> 5878 <integer>1</integer>
5868 <key>Type</key> 5879 <key>Type</key>
@@ -7413,17 +7424,6 @@
7413 <key>Value</key> 7424 <key>Value</key>
7414 <integer>0</integer> 7425 <integer>0</integer>
7415 </map> 7426 </map>
7416 <key>IMShowTimestamps</key>
7417 <map>
7418 <key>Comment</key>
7419 <string>Show timestamps in IM</string>
7420 <key>Persist</key>
7421 <integer>1</integer>
7422 <key>Type</key>
7423 <string>Boolean</string>
7424 <key>Value</key>
7425 <integer>1</integer>
7426 </map>
7427 <key>IgnorePixelDepth</key> 7427 <key>IgnorePixelDepth</key>
7428 <map> 7428 <map>
7429 <key>Comment</key> 7429 <key>Comment</key>
@@ -7795,7 +7795,7 @@
7795 <key>LastFindPanel</key> 7795 <key>LastFindPanel</key>
7796 <map> 7796 <map>
7797 <key>Comment</key> 7797 <key>Comment</key>
7798 <string>Controls which find operation appears by default when clicking "Find" button </string> 7798 <string>Controls which find operation appears by default when clicking &quot;Find&quot; button </string>
7799 <key>Persist</key> 7799 <key>Persist</key>
7800 <integer>1</integer> 7800 <integer>1</integer>
7801 <key>Type</key> 7801 <key>Type</key>
@@ -8317,7 +8317,7 @@
8317 <key>MediaOnAPrimUI</key> 8317 <key>MediaOnAPrimUI</key>
8318 <map> 8318 <map>
8319 <key>Comment</key> 8319 <key>Comment</key>
8320 <string>Whether or not to show the "link sharing" UI</string> 8320 <string>Whether or not to show the &quot;link sharing&quot; UI</string>
8321 <key>Persist</key> 8321 <key>Persist</key>
8322 <integer>1</integer> 8322 <integer>1</integer>
8323 <key>Type</key> 8323 <key>Type</key>
@@ -8914,7 +8914,7 @@
8914 <key>OverlayTitle</key> 8914 <key>OverlayTitle</key>
8915 <map> 8915 <map>
8916 <key>Comment</key> 8916 <key>Comment</key>
8917 <string>Controls watermark text message displayed on screen when "ShowOverlayTitle" is enabled (one word, underscores become spaces)</string> 8917 <string>Controls watermark text message displayed on screen when &quot;ShowOverlayTitle&quot; is enabled (one word, underscores become spaces)</string>
8918 <key>Persist</key> 8918 <key>Persist</key>
8919 <integer>1</integer> 8919 <integer>1</integer>
8920 <key>Type</key> 8920 <key>Type</key>
@@ -13257,7 +13257,7 @@
13257 <key>UISndHealthReductionThreshold</key> 13257 <key>UISndHealthReductionThreshold</key>
13258 <map> 13258 <map>
13259 <key>Comment</key> 13259 <key>Comment</key>
13260 <string>Amount of health reduction required to trigger "pain" sound</string> 13260 <string>Amount of health reduction required to trigger &quot;pain&quot; sound</string>
13261 <key>Persist</key> 13261 <key>Persist</key>
13262 <integer>1</integer> 13262 <integer>1</integer>
13263 <key>Type</key> 13263 <key>Type</key>
@@ -13290,7 +13290,7 @@
13290 <key>UISndMoneyChangeThreshold</key> 13290 <key>UISndMoneyChangeThreshold</key>
13291 <map> 13291 <map>
13292 <key>Comment</key> 13292 <key>Comment</key>
13293 <string>Amount of change in L$ balance required to trigger "money" sound</string> 13293 <string>Amount of change in L$ balance required to trigger &quot;money&quot; sound</string>
13294 <key>Persist</key> 13294 <key>Persist</key>
13295 <integer>1</integer> 13295 <integer>1</integer>
13296 <key>Type</key> 13296 <key>Type</key>
@@ -13587,7 +13587,7 @@
13587 <key>UseDebugMenus</key> 13587 <key>UseDebugMenus</key>
13588 <map> 13588 <map>
13589 <key>Comment</key> 13589 <key>Comment</key>
13590 <string>Turns on "Debug" menu</string> 13590 <string>Turns on &quot;Debug&quot; menu</string>
13591 <key>Persist</key> 13591 <key>Persist</key>
13592 <integer>1</integer> 13592 <integer>1</integer>
13593 <key>Type</key> 13593 <key>Type</key>
diff --git a/linden/indra/newview/hippogridmanager.cpp b/linden/indra/newview/hippogridmanager.cpp
index 78539f8..4c46d3e 100644
--- a/linden/indra/newview/hippogridmanager.cpp
+++ b/linden/indra/newview/hippogridmanager.cpp
@@ -89,7 +89,7 @@ HippoGridInfo::HippoGridInfo(const std::string& gridNick) :
89 mPasswordAvatar(LLStringUtil::null), 89 mPasswordAvatar(LLStringUtil::null),
90 mXmlState(XML_VOID), 90 mXmlState(XML_VOID),
91 mVoiceConnector("SLVoice"), 91 mVoiceConnector("SLVoice"),
92 mRenderCompat(true), 92 mRenderCompat(false),
93 mMaxAgentGroups(-1), 93 mMaxAgentGroups(-1),
94 mCurrencySymbol("OS$"), 94 mCurrencySymbol("OS$"),
95 mRealCurrencySymbol("US$"), 95 mRealCurrencySymbol("US$"),
diff --git a/linden/indra/newview/impprefsfonts.cpp b/linden/indra/newview/impprefsfonts.cpp
index a4dcd34..505761b 100644
--- a/linden/indra/newview/impprefsfonts.cpp
+++ b/linden/indra/newview/impprefsfonts.cpp
@@ -51,6 +51,10 @@ ImpPrefsFonts::~ImpPrefsFonts()
51 51
52BOOL ImpPrefsFonts::postBuild() 52BOOL ImpPrefsFonts::postBuild()
53{ 53{
54 childSetValue("ui_scale_slider", gSavedSettings.getF32("UIScaleFactor"));
55 childSetValue("ui_auto_scale", gSavedSettings.getBOOL("UIAutoScale"));
56 childSetAction("reset_ui_size", onClickResetUISize, this);
57
54 refresh(); 58 refresh();
55 return true; 59 return true;
56} 60}
@@ -79,6 +83,9 @@ void ImpPrefsFonts::refresh()
79 83
80void ImpPrefsFonts::apply() 84void ImpPrefsFonts::apply()
81{ 85{
86 gSavedSettings.setF32("UIScaleFactor", childGetValue("ui_scale_slider").asReal());
87 gSavedSettings.setBOOL("UIAutoScale", childGetValue("ui_auto_scale"));
88
82 bool changed = false; 89 bool changed = false;
83 90
84 LLRadioGroup* fonts = getChild<LLRadioGroup>("fonts"); 91 LLRadioGroup* fonts = getChild<LLRadioGroup>("fonts");
@@ -126,3 +133,11 @@ void ImpPrefsFonts::apply()
126void ImpPrefsFonts::cancel() 133void ImpPrefsFonts::cancel()
127{ 134{
128} 135}
136
137// static
138void ImpPrefsFonts::onClickResetUISize(void* user_data)
139{
140 ImpPrefsFonts* self = (ImpPrefsFonts*)user_data;
141 F32 def = gSavedSettings.getControl("UIScaleFactor")->getDefault().asReal();
142 self->childSetValue("ui_scale_slider", def);
143}
diff --git a/linden/indra/newview/impprefsfonts.h b/linden/indra/newview/impprefsfonts.h
index 12aa0bb..0319261 100644
--- a/linden/indra/newview/impprefsfonts.h
+++ b/linden/indra/newview/impprefsfonts.h
@@ -1,6 +1,6 @@
1/** 1/**
2 * @file impprefsfonts.h 2 * @file impprefsfonts.h
3 * @brief Font preferences panel 3 * @brief UI and font preferences panel
4 * 4 *
5 * Copyright (c) 2010, Jacek Antonelli 5 * Copyright (c) 2010, Jacek Antonelli
6 * 6 *
@@ -40,6 +40,9 @@ public:
40 void refresh(); 40 void refresh();
41 void apply(); 41 void apply();
42 void cancel(); 42 void cancel();
43
44private:
45 static void onClickResetUISize(void*);
43}; 46};
44 47
45#endif // IMP_PREFSFONTS_H 48#endif // IMP_PREFSFONTS_H
diff --git a/linden/indra/newview/installers/windows/imprudence_installer_script_experimental.iss b/linden/indra/newview/installers/windows/imprudence_installer_script_experimental.iss
index 398c26d..aa31c3b 100644
--- a/linden/indra/newview/installers/windows/imprudence_installer_script_experimental.iss
+++ b/linden/indra/newview/installers/windows/imprudence_installer_script_experimental.iss
@@ -9,11 +9,11 @@
9; These will change 9; These will change
10AppId={{1B3E68BC-13EB-4277-9439-CB5FF9259460} 10AppId={{1B3E68BC-13EB-4277-9439-CB5FF9259460}
11AppName=Imprudence Viewer Experimental 11AppName=Imprudence Viewer Experimental
12AppVerName=Imprudence Viewer 1.4.0 Experimental 2011.03.20 12AppVerName=Imprudence Viewer 1.4.0 Experimental 2011.04.19
13DefaultDirName={pf}\ImprudenceExperimental 13DefaultDirName={pf}\ImprudenceExperimental
14DefaultGroupName=Imprudence Viewer Experimental 14DefaultGroupName=Imprudence Viewer Experimental
15VersionInfoProductName=Imprudence Viewer Experimental 15VersionInfoProductName=Imprudence Viewer Experimental
16OutputBaseFilename=Imprudence-1.4.0-Experimental-2011.03.20-Setup 16OutputBaseFilename=Imprudence-1.4.0-Experimental-2011.04.19-Setup
17VersionInfoVersion=1.4.0 17VersionInfoVersion=1.4.0
18VersionInfoTextVersion=1.4.0 18VersionInfoTextVersion=1.4.0
19VersionInfoProductVersion=1.4.0 19VersionInfoProductVersion=1.4.0
diff --git a/linden/indra/newview/kowopenregionsettings.cpp b/linden/indra/newview/kowopenregionsettings.cpp
index 0c4bb38..6257147 100644
--- a/linden/indra/newview/kowopenregionsettings.cpp
+++ b/linden/indra/newview/kowopenregionsettings.cpp
@@ -36,7 +36,6 @@
36#include "llviewerobject.h" 36#include "llviewerobject.h"
37#include "llfloaterregioninfo.h" 37#include "llfloaterregioninfo.h"
38#include "llfloaterworldmap.h" 38#include "llfloaterworldmap.h"
39#include "llvoiceclient.h"
40#include "viewertime.h" 39#include "viewertime.h"
41 40
42//DEBUG includes 41//DEBUG includes
@@ -205,12 +204,7 @@ class OpenRegionInfoUpdate : public LLHTTPNode
205 { 204 {
206 gHippoLimits->mAllowParcelWindLight = body["AllowParcelWindLight"].asInteger() == 1; 205 gHippoLimits->mAllowParcelWindLight = body["AllowParcelWindLight"].asInteger() == 1;
207 } 206 }
208 if ( body.has("Voice") ) 207
209 {
210 gSavedSettings.setString("VoiceModule", body["Voice"].asString());
211 //gVoiceClient->close();
212 //gVoiceClient->start();
213 }
214 208
215 if (limitschanged) 209 if (limitschanged)
216 gFloaterTools->updateToolsSizeLimits(); 210 gFloaterTools->updateToolsSizeLimits();
diff --git a/linden/indra/newview/llface.cpp b/linden/indra/newview/llface.cpp
index aa8cd15..cf681fa 100644
--- a/linden/indra/newview/llface.cpp
+++ b/linden/indra/newview/llface.cpp
@@ -159,6 +159,7 @@ void LLFace::init(LLDrawable* drawablep, LLViewerObject* objp)
159 mIndicesIndex = 0; 159 mIndicesIndex = 0;
160 mTexture = NULL; 160 mTexture = NULL;
161 mTEOffset = -1; 161 mTEOffset = -1;
162 mIndexInTex = 0;
162 163
163 setDrawable(drawablep); 164 setDrawable(drawablep);
164 mVObjp = objp; 165 mVObjp = objp;
diff --git a/linden/indra/newview/llface.h b/linden/indra/newview/llface.h
index e31b93f..f870370 100644
--- a/linden/indra/newview/llface.h
+++ b/linden/indra/newview/llface.h
@@ -228,7 +228,7 @@ private:
228 U16 mGeomIndex; // index into draw pool 228 U16 mGeomIndex; // index into draw pool
229 U32 mIndicesCount; 229 U32 mIndicesCount;
230 U32 mIndicesIndex; // index into draw pool for indices (yeah, I know!) 230 U32 mIndicesIndex; // index into draw pool for indices (yeah, I know!)
231 S32 mIndexInTex ; 231 S32 mIndexInTex ; // index of this face in the texture's face list
232 232
233 //previous rebuild's geometry info 233 //previous rebuild's geometry info
234 U16 mLastGeomCount; 234 U16 mLastGeomCount;
diff --git a/linden/indra/newview/llfloaterchat.cpp b/linden/indra/newview/llfloaterchat.cpp
index f3d71d7..1142e5c 100644
--- a/linden/indra/newview/llfloaterchat.cpp
+++ b/linden/indra/newview/llfloaterchat.cpp
@@ -216,7 +216,7 @@ void add_timestamped_line(LLViewerTextEditor* edit, LLChat chat, const LLColor4&
216{ 216{
217 std::string line = chat.mText; 217 std::string line = chat.mText;
218 bool prepend_newline = true; 218 bool prepend_newline = true;
219 if (gSavedSettings.getBOOL("ChatShowTimestamps")) 219 if (gSavedSettings.getBOOL("ShowTimestamps"))
220 { 220 {
221 edit->appendTime(prepend_newline); 221 edit->appendTime(prepend_newline);
222 prepend_newline = false; 222 prepend_newline = false;
diff --git a/linden/indra/newview/llfloaterpreference.cpp b/linden/indra/newview/llfloaterpreference.cpp
index 52192b8..d518eac 100644
--- a/linden/indra/newview/llfloaterpreference.cpp
+++ b/linden/indra/newview/llfloaterpreference.cpp
@@ -60,7 +60,6 @@
60#include "llpanellogin.h" 60#include "llpanellogin.h"
61#include "llpanelLCD.h" 61#include "llpanelLCD.h"
62#include "llpanelmsgs.h" 62#include "llpanelmsgs.h"
63#include "llpanelweb.h"
64#include "llpanelskins.h" 63#include "llpanelskins.h"
65#include "llprefsadvanced.h" 64#include "llprefsadvanced.h"
66#include "llprefschat.h" 65#include "llprefschat.h"
@@ -151,10 +150,6 @@ LLPreferenceCore::LLPreferenceCore(LLTabContainer* tab_container, LLButton * def
151 mTabContainer->addTabPanel(mNetworkPanel, mNetworkPanel->getLabel(), FALSE, onTabChanged, mTabContainer); 150 mTabContainer->addTabPanel(mNetworkPanel, mNetworkPanel->getLabel(), FALSE, onTabChanged, mTabContainer);
152 mNetworkPanel->setDefaultBtn(default_btn); 151 mNetworkPanel->setDefaultBtn(default_btn);
153 152
154 mWebPanel = new LLPanelWeb();
155 mTabContainer->addTabPanel(mWebPanel, mWebPanel->getLabel(), FALSE, onTabChanged, mTabContainer);
156 mWebPanel->setDefaultBtn(default_btn);
157
158 mDisplayPanel = new LLPanelDisplay(); 153 mDisplayPanel = new LLPanelDisplay();
159 mTabContainer->addTabPanel(mDisplayPanel, mDisplayPanel->getLabel(), FALSE, onTabChanged, mTabContainer); 154 mTabContainer->addTabPanel(mDisplayPanel, mDisplayPanel->getLabel(), FALSE, onTabChanged, mTabContainer);
160 mDisplayPanel->setDefaultBtn(default_btn); 155 mDisplayPanel->setDefaultBtn(default_btn);
@@ -167,10 +162,6 @@ LLPreferenceCore::LLPreferenceCore(LLTabContainer* tab_container, LLButton * def
167 mTabContainer->addTabPanel(mPrefsChat->getPanel(), mPrefsChat->getPanel()->getLabel(), FALSE, onTabChanged, mTabContainer); 162 mTabContainer->addTabPanel(mPrefsChat->getPanel(), mPrefsChat->getPanel()->getLabel(), FALSE, onTabChanged, mTabContainer);
168 mPrefsChat->getPanel()->setDefaultBtn(default_btn); 163 mPrefsChat->getPanel()->setDefaultBtn(default_btn);
169 164
170 mPrefsColors = new LLPrefsColors();
171 mTabContainer->addTabPanel(mPrefsColors, mPrefsColors->getLabel(), FALSE, onTabChanged, mTabContainer);
172 mPrefsColors->setDefaultBtn(default_btn);
173
174 mPrefsIM = new LLPrefsIM(); 165 mPrefsIM = new LLPrefsIM();
175 mTabContainer->addTabPanel(mPrefsIM->getPanel(), mPrefsIM->getPanel()->getLabel(), FALSE, onTabChanged, mTabContainer); 166 mTabContainer->addTabPanel(mPrefsIM->getPanel(), mPrefsIM->getPanel()->getLabel(), FALSE, onTabChanged, mTabContainer);
176 mPrefsIM->getPanel()->setDefaultBtn(default_btn); 167 mPrefsIM->getPanel()->setDefaultBtn(default_btn);
@@ -197,6 +188,10 @@ LLPreferenceCore::LLPreferenceCore(LLTabContainer* tab_container, LLButton * def
197 mMsgPanel = new LLPanelMsgs(); 188 mMsgPanel = new LLPanelMsgs();
198 mTabContainer->addTabPanel(mMsgPanel, mMsgPanel->getLabel(), FALSE, onTabChanged, mTabContainer); 189 mTabContainer->addTabPanel(mMsgPanel, mMsgPanel->getLabel(), FALSE, onTabChanged, mTabContainer);
199 mMsgPanel->setDefaultBtn(default_btn); 190 mMsgPanel->setDefaultBtn(default_btn);
191
192 mPrefsColors = new LLPrefsColors();
193 mTabContainer->addTabPanel(mPrefsColors, mPrefsColors->getLabel(), FALSE, onTabChanged, mTabContainer);
194 mPrefsColors->setDefaultBtn(default_btn);
200 195
201 mSkinsPanel = new LLPanelSkins(); 196 mSkinsPanel = new LLPanelSkins();
202 mTabContainer->addTabPanel(mSkinsPanel, mSkinsPanel->getLabel(), FALSE, onTabChanged, mTabContainer); 197 mTabContainer->addTabPanel(mSkinsPanel, mSkinsPanel->getLabel(), FALSE, onTabChanged, mTabContainer);
@@ -259,11 +254,6 @@ LLPreferenceCore::~LLPreferenceCore()
259 delete mMsgPanel; 254 delete mMsgPanel;
260 mMsgPanel = NULL; 255 mMsgPanel = NULL;
261 } 256 }
262 if (mWebPanel)
263 {
264 delete mWebPanel;
265 mWebPanel = NULL;
266 }
267 if (mSkinsPanel) 257 if (mSkinsPanel)
268 { 258 {
269 delete mSkinsPanel; 259 delete mSkinsPanel;
@@ -306,7 +296,6 @@ void LLPreferenceCore::apply()
306 // hardware menu apply 296 // hardware menu apply
307 LLFloaterHardwareSettings::instance()->apply(); 297 LLFloaterHardwareSettings::instance()->apply();
308 298
309 mWebPanel->apply();
310#if LL_LCD_COMPILE 299#if LL_LCD_COMPILE
311 // only add this option if we actually have a logitech keyboard / speaker set 300 // only add this option if we actually have a logitech keyboard / speaker set
312 if (gLcdScreen->Enabled()) 301 if (gLcdScreen->Enabled())
@@ -314,7 +303,6 @@ void LLPreferenceCore::apply()
314 mLCDPanel->apply(); 303 mLCDPanel->apply();
315 } 304 }
316#endif 305#endif
317// mWebPanel->apply();
318} 306}
319 307
320 308
@@ -337,7 +325,6 @@ void LLPreferenceCore::cancel()
337 // cancel hardware menu 325 // cancel hardware menu
338 LLFloaterHardwareSettings::instance()->cancel(); 326 LLFloaterHardwareSettings::instance()->cancel();
339 327
340 mWebPanel->cancel();
341#if LL_LCD_COMPILE 328#if LL_LCD_COMPILE
342 // only add this option if we actually have a logitech keyboard / speaker set 329 // only add this option if we actually have a logitech keyboard / speaker set
343 if (gLcdScreen->Enabled()) 330 if (gLcdScreen->Enabled())
@@ -345,7 +332,6 @@ void LLPreferenceCore::cancel()
345 mLCDPanel->cancel(); 332 mLCDPanel->cancel();
346 } 333 }
347#endif 334#endif
348// mWebPanel->cancel();
349} 335}
350 336
351// static 337// static
@@ -359,7 +345,8 @@ void LLPreferenceCore::onTabChanged(void* user_data, bool from_click)
359 345
360void LLPreferenceCore::setPersonalInfo(const std::string& visibility, bool im_via_email, const std::string& email) 346void LLPreferenceCore::setPersonalInfo(const std::string& visibility, bool im_via_email, const std::string& email)
361{ 347{
362 mPrefsIM->setPersonalInfo(visibility, im_via_email, email); 348 mPrefsIM->setPersonalInfo(visibility);
349 mPrefsChat->setPersonalInfo(im_via_email, email);
363} 350}
364 351
365void LLPreferenceCore::updateIsLoggedIn(bool enable) 352void LLPreferenceCore::updateIsLoggedIn(bool enable)
diff --git a/linden/indra/newview/llfloaterpreference.h b/linden/indra/newview/llfloaterpreference.h
index d5eccbc..ae4f4d9 100644
--- a/linden/indra/newview/llfloaterpreference.h
+++ b/linden/indra/newview/llfloaterpreference.h
@@ -48,7 +48,6 @@ class LLPanelDisplay;
48class LLPanelAudioPrefs; 48class LLPanelAudioPrefs;
49class LLPanelDebug; 49class LLPanelDebug;
50class LLPanelNetwork; 50class LLPanelNetwork;
51class LLPanelWeb;
52class LLMessageSystem; 51class LLMessageSystem;
53class LLPrefsChat; 52class LLPrefsChat;
54class LLPrefsVoice; 53class LLPrefsVoice;
@@ -92,7 +91,6 @@ private:
92 LLPrefsChat *mPrefsChat; 91 LLPrefsChat *mPrefsChat;
93 LLPrefsVoice *mPrefsVoice; 92 LLPrefsVoice *mPrefsVoice;
94 LLPrefsIM *mPrefsIM; 93 LLPrefsIM *mPrefsIM;
95 LLPanelWeb *mWebPanel;
96 LLPanelMsgs *mMsgPanel; 94 LLPanelMsgs *mMsgPanel;
97 LLPanelLCD *mLCDPanel; 95 LLPanelLCD *mLCDPanel;
98 LLPrefsAdvanced *mPrefsAdvanced; 96 LLPrefsAdvanced *mPrefsAdvanced;
diff --git a/linden/indra/newview/llhudeffectlookat.cpp b/linden/indra/newview/llhudeffectlookat.cpp
index ccd723f..333bd13 100644
--- a/linden/indra/newview/llhudeffectlookat.cpp
+++ b/linden/indra/newview/llhudeffectlookat.cpp
@@ -702,6 +702,11 @@ bool LLHUDEffectLookAt::calcTargetPosition()
702 702
703 LLVOAvatar* source_avatar = (LLVOAvatar*)(LLViewerObject*)mSourceObject; 703 LLVOAvatar* source_avatar = (LLVOAvatar*)(LLViewerObject*)mSourceObject;
704 704
705 if (!source_avatar->isBuilt())
706 {
707 return false;
708 }
709
705 if (target_obj && target_obj->mDrawable.notNull()) 710 if (target_obj && target_obj->mDrawable.notNull())
706 { 711 {
707 LLQuaternion target_rot; 712 LLQuaternion target_rot;
diff --git a/linden/indra/newview/llimpanel.cpp b/linden/indra/newview/llimpanel.cpp
index a3e917f..5f6624b 100644
--- a/linden/indra/newview/llimpanel.cpp
+++ b/linden/indra/newview/llimpanel.cpp
@@ -1618,7 +1618,7 @@ void LLFloaterIMPanel::addHistoryLine(const std::string &utf8msg, const LLColor4
1618 // Actually add the line 1618 // Actually add the line
1619 std::string timestring; 1619 std::string timestring;
1620 bool prepend_newline = true; 1620 bool prepend_newline = true;
1621 if (gSavedSettings.getBOOL("IMShowTimestamps")) 1621 if (gSavedSettings.getBOOL("ShowTimestamps"))
1622 { 1622 {
1623 timestring = mHistoryEditor->appendTime(prepend_newline); 1623 timestring = mHistoryEditor->appendTime(prepend_newline);
1624 prepend_newline = false; 1624 prepend_newline = false;
diff --git a/linden/indra/newview/llpaneldisplay.cpp b/linden/indra/newview/llpaneldisplay.cpp
index a5c0d97..9ee7dc3 100644
--- a/linden/indra/newview/llpaneldisplay.cpp
+++ b/linden/indra/newview/llpaneldisplay.cpp
@@ -120,7 +120,6 @@ BOOL LLPanelDisplay::postBuild()
120 mCtrlWindowed->setCallbackUserData(this); 120 mCtrlWindowed->setCallbackUserData(this);
121 121
122 mAspectRatioLabel1 = getChild<LLTextBox>("AspectRatioLabel1"); 122 mAspectRatioLabel1 = getChild<LLTextBox>("AspectRatioLabel1");
123 mFullScreenInfo = getChild<LLTextEditor>("FullScreenInfo");
124 mDisplayResLabel = getChild<LLTextBox>("DisplayResLabel"); 123 mDisplayResLabel = getChild<LLTextBox>("DisplayResLabel");
125 124
126 S32 num_resolutions = 0; 125 S32 num_resolutions = 0;
@@ -229,7 +228,7 @@ BOOL LLPanelDisplay::postBuild()
229 mCtrlReflections = getChild<LLCheckBoxCtrl>("Reflections"); 228 mCtrlReflections = getChild<LLCheckBoxCtrl>("Reflections");
230 mCtrlReflections->setCommitCallback(&LLPanelDisplay::onVertexShaderEnable); 229 mCtrlReflections->setCommitCallback(&LLPanelDisplay::onVertexShaderEnable);
231 mCtrlReflections->setCallbackUserData(this); 230 mCtrlReflections->setCallbackUserData(this);
232 mRadioReflectionDetail = getChild<LLRadioGroup>("ReflectionDetailRadio"); 231 mComboReflectionDetail = getChild<LLComboBox>("ReflectionDetailCombo");
233 232
234 // WindLight 233 // WindLight
235 mCtrlWindLight = getChild<LLCheckBoxCtrl>("WindLightUseAtmosShaders"); 234 mCtrlWindLight = getChild<LLCheckBoxCtrl>("WindLightUseAtmosShaders");
@@ -251,11 +250,11 @@ BOOL LLPanelDisplay::postBuild()
251 250
252 //---------------------------------------------------------------------------- 251 //----------------------------------------------------------------------------
253 // radio set for lighting detail 252 // radio set for lighting detail
254 mRadioLightingDetail2 = getChild<LLRadioGroup>("LightingDetailRadio"); 253 mComboLightingDetail = getChild<LLComboBox>("LightingDetailCombo");
255 254
256 //---------------------------------------------------------------------------- 255 //----------------------------------------------------------------------------
257 // radio set for terrain detail mode 256 // radio set for terrain detail mode
258 mRadioTerrainDetail = getChild<LLRadioGroup>("TerrainDetailRadio"); 257 mComboTerrainDetail = getChild<LLComboBox>("TerrainDetailCombo");
259 258
260 //---------------------------------------------------------------------------- 259 //----------------------------------------------------------------------------
261 // Global Shader Enable 260 // Global Shader Enable
@@ -316,7 +315,6 @@ BOOL LLPanelDisplay::postBuild()
316 315
317 // Avatar imposter count 316 // Avatar imposter count
318 mCtrlAvatarMaxVisible = getChild<LLSliderCtrl>("AvatarMaxVisible"); 317 mCtrlAvatarMaxVisible = getChild<LLSliderCtrl>("AvatarMaxVisible");
319 mAvatarCountText = getChild<LLTextBox>("AvatarCountText");
320 318
321 // Text boxes (for enabling/disabling) 319 // Text boxes (for enabling/disabling)
322 mShaderText = getChild<LLTextBox>("ShadersText"); 320 mShaderText = getChild<LLTextBox>("ShadersText");
@@ -325,10 +323,7 @@ BOOL LLPanelDisplay::postBuild()
325 mTerrainText = getChild<LLTextBox>("TerrainDetailText"); 323 mTerrainText = getChild<LLTextBox>("TerrainDetailText");
326 mLightingText = getChild<LLTextBox>("LightingDetailText"); 324 mLightingText = getChild<LLTextBox>("LightingDetailText");
327 mMeshDetailText = getChild<LLTextBox>("MeshDetailText"); 325 mMeshDetailText = getChild<LLTextBox>("MeshDetailText");
328 326 mLimitsText = getChild<LLTextBox>("LimitsText");
329 static BOOL* sEnableWindlightRemote = rebind_llcontrol<BOOL>("EnableWindlightRemote", &gSavedSettings, true);
330 childSetValue("toggle_windlight_control", (*sEnableWindlightRemote));
331 mWLControl = (*sEnableWindlightRemote);
332 327
333 refresh(); 328 refresh();
334 329
@@ -420,10 +415,6 @@ void LLPanelDisplay::refresh()
420 mLightingDetail = gSavedSettings.getS32("RenderLightingDetail"); 415 mLightingDetail = gSavedSettings.getS32("RenderLightingDetail");
421 mTerrainDetail = gSavedSettings.getS32("RenderTerrainDetail"); 416 mTerrainDetail = gSavedSettings.getS32("RenderTerrainDetail");
422 417
423 // windlight remote
424 static BOOL* sEnableWindlightRemote = rebind_llcontrol<BOOL>("EnableWindlightRemote", &gSavedSettings, true);
425 mWLControl = (*sEnableWindlightRemote);
426
427 // max avatar count 418 // max avatar count
428 mAvatarMaxVisible = gSavedSettings.getS32("RenderAvatarMaxVisible"); 419 mAvatarMaxVisible = gSavedSettings.getS32("RenderAvatarMaxVisible");
429 420
@@ -449,7 +440,6 @@ void LLPanelDisplay::refreshEnabledState()
449 mCtrlAspectRatio->setVisible(isFullScreen); 440 mCtrlAspectRatio->setVisible(isFullScreen);
450 mAspectRatioLabel1->setVisible(isFullScreen); 441 mAspectRatioLabel1->setVisible(isFullScreen);
451 mCtrlAutoDetectAspect->setVisible(isFullScreen); 442 mCtrlAutoDetectAspect->setVisible(isFullScreen);
452 mFullScreenInfo->setVisible(!isFullScreen);
453 mWindowSizeLabel->setVisible(!isFullScreen); 443 mWindowSizeLabel->setVisible(!isFullScreen);
454 444
455 // disable graphics settings and exit if it's not set to custom 445 // disable graphics settings and exit if it's not set to custom
@@ -475,10 +465,7 @@ void LLPanelDisplay::refreshEnabledState()
475 bool bumpshiny = gGLManager.mHasCubeMap && LLCubeMap::sUseCubeMaps && LLFeatureManager::getInstance()->isFeatureAvailable("RenderObjectBump"); 465 bool bumpshiny = gGLManager.mHasCubeMap && LLCubeMap::sUseCubeMaps && LLFeatureManager::getInstance()->isFeatureAvailable("RenderObjectBump");
476 mCtrlBumpShiny->setEnabled(bumpshiny ? TRUE : FALSE); 466 mCtrlBumpShiny->setEnabled(bumpshiny ? TRUE : FALSE);
477 467
478 for (S32 i = 0; i < mRadioReflectionDetail->getItemCount(); ++i) 468 mComboReflectionDetail->setEnabled(mCtrlReflections->get() && reflections);
479 {
480 mRadioReflectionDetail->setIndexEnabled(i, mCtrlReflections->get() && reflections);
481 }
482 469
483 // Avatar Mode 470 // Avatar Mode
484 S32 max_avatar_shader = LLViewerShaderMgr::instance()->mMaxAvatarShaderLevel; 471 S32 max_avatar_shader = LLViewerShaderMgr::instance()->mMaxAvatarShaderLevel;
@@ -505,12 +492,12 @@ void LLPanelDisplay::refreshEnabledState()
505 BOOL shaders = mCtrlShaderEnable->get(); 492 BOOL shaders = mCtrlShaderEnable->get();
506 if (shaders) 493 if (shaders)
507 { 494 {
508 mRadioTerrainDetail->setValue(1); 495 mComboTerrainDetail->setValue(1);
509 mRadioTerrainDetail->setEnabled(FALSE); 496 mComboTerrainDetail->setEnabled(FALSE);
510 } 497 }
511 else 498 else
512 { 499 {
513 mRadioTerrainDetail->setEnabled(TRUE); 500 mComboTerrainDetail->setEnabled(TRUE);
514 } 501 }
515 502
516 // *HACK just checks to see if we can use shaders... 503 // *HACK just checks to see if we can use shaders...
@@ -588,7 +575,6 @@ void LLPanelDisplay::disableUnavailableSettings()
588 } 575 }
589 576
590 mCtrlAvatarMaxVisible->setEnabled(mCtrlAvatarImpostors->getValue().asBoolean()); 577 mCtrlAvatarMaxVisible->setEnabled(mCtrlAvatarImpostors->getValue().asBoolean());
591 mAvatarCountText->setEnabled(mCtrlAvatarImpostors->getValue().asBoolean());
592} 578}
593 579
594void LLPanelDisplay::setHiddenGraphicsState(bool isHidden) 580void LLPanelDisplay::setHiddenGraphicsState(bool isHidden)
@@ -622,10 +608,10 @@ void LLPanelDisplay::setHiddenGraphicsState(bool isHidden)
622 llassert(mCtrlShaderEnable != NULL); 608 llassert(mCtrlShaderEnable != NULL);
623 llassert(mCtrlAvatarImpostors != NULL); 609 llassert(mCtrlAvatarImpostors != NULL);
624 llassert(mCtrlAvatarCloth != NULL); 610 llassert(mCtrlAvatarCloth != NULL);
625 llassert(mRadioLightingDetail2 != NULL); 611 llassert(mComboLightingDetail != NULL);
626 612
627 llassert(mRadioTerrainDetail != NULL); 613 llassert(mComboTerrainDetail != NULL);
628 llassert(mRadioReflectionDetail != NULL); 614 llassert(mComboReflectionDetail != NULL);
629 615
630 llassert(mMeshDetailText != NULL); 616 llassert(mMeshDetailText != NULL);
631 llassert(mShaderText != NULL); 617 llassert(mShaderText != NULL);
@@ -633,7 +619,7 @@ void LLPanelDisplay::setHiddenGraphicsState(bool isHidden)
633 llassert(mAvatarText != NULL); 619 llassert(mAvatarText != NULL);
634 llassert(mLightingText != NULL); 620 llassert(mLightingText != NULL);
635 llassert(mTerrainText != NULL); 621 llassert(mTerrainText != NULL);
636 llassert(mAvatarCountText != NULL); 622 llassert(mLimitsText != NULL);
637 623
638 // enable/disable the states 624 // enable/disable the states
639 mGraphicsBorder->setVisible(!isHidden); 625 mGraphicsBorder->setVisible(!isHidden);
@@ -668,10 +654,10 @@ void LLPanelDisplay::setHiddenGraphicsState(bool isHidden)
668 mCtrlShaderEnable->setVisible(!isHidden); 654 mCtrlShaderEnable->setVisible(!isHidden);
669 mCtrlAvatarImpostors->setVisible(!isHidden); 655 mCtrlAvatarImpostors->setVisible(!isHidden);
670 mCtrlAvatarCloth->setVisible(!isHidden); 656 mCtrlAvatarCloth->setVisible(!isHidden);
671 mRadioLightingDetail2->setVisible(!isHidden); 657 mComboLightingDetail->setVisible(!isHidden);
672 658
673 mRadioTerrainDetail->setVisible(!isHidden); 659 mComboTerrainDetail->setVisible(!isHidden);
674 mRadioReflectionDetail->setVisible(!isHidden); 660 mComboReflectionDetail->setVisible(!isHidden);
675 661
676 // text boxes 662 // text boxes
677 mShaderText->setVisible(!isHidden); 663 mShaderText->setVisible(!isHidden);
@@ -679,8 +665,7 @@ void LLPanelDisplay::setHiddenGraphicsState(bool isHidden)
679 mAvatarText->setVisible(!isHidden); 665 mAvatarText->setVisible(!isHidden);
680 mLightingText->setVisible(!isHidden); 666 mLightingText->setVisible(!isHidden);
681 mTerrainText->setVisible(!isHidden); 667 mTerrainText->setVisible(!isHidden);
682 mAvatarCountText->setVisible(!isHidden); 668 mLimitsText->setVisible(!isHidden);
683
684 mMeshDetailText->setVisible(!isHidden); 669 mMeshDetailText->setVisible(!isHidden);
685 670
686 mCtrlAvatarMaxVisible->setVisible(!isHidden); 671 mCtrlAvatarMaxVisible->setVisible(!isHidden);
@@ -719,8 +704,6 @@ void LLPanelDisplay::cancel()
719 gSavedSettings.setS32("RenderMaxPartCount", mParticleCount); 704 gSavedSettings.setS32("RenderMaxPartCount", mParticleCount);
720 gSavedSettings.setS32("RenderGlowResolutionPow", mPostProcess); 705 gSavedSettings.setS32("RenderGlowResolutionPow", mPostProcess);
721 706
722 gSavedSettings.setBOOL("EnableWindlightRemote", mWLControl);
723
724 gSavedSettings.setS32("RenderAvatarMaxVisible", mAvatarMaxVisible); 707 gSavedSettings.setS32("RenderAvatarMaxVisible", mAvatarMaxVisible);
725} 708}
726 709
@@ -992,5 +975,4 @@ void LLPanelDisplay::onImpostorsEnable(LLUICtrl* ctrl, void* user_data)
992 LLCheckBoxCtrl* checkbox = (LLCheckBoxCtrl*)ctrl; 975 LLCheckBoxCtrl* checkbox = (LLCheckBoxCtrl*)ctrl;
993 976
994 self->mCtrlAvatarMaxVisible->setEnabled(checkbox->getValue().asBoolean()); 977 self->mCtrlAvatarMaxVisible->setEnabled(checkbox->getValue().asBoolean());
995 self->mAvatarCountText->setEnabled(checkbox->getValue().asBoolean());
996} 978}
diff --git a/linden/indra/newview/llpaneldisplay.h b/linden/indra/newview/llpaneldisplay.h
index d7727e7..e64e9ba 100644
--- a/linden/indra/newview/llpaneldisplay.h
+++ b/linden/indra/newview/llpaneldisplay.h
@@ -113,14 +113,13 @@ protected:
113 LLCheckBoxCtrl *mCtrlShaderEnable; 113 LLCheckBoxCtrl *mCtrlShaderEnable;
114 LLCheckBoxCtrl *mCtrlAvatarImpostors; 114 LLCheckBoxCtrl *mCtrlAvatarImpostors;
115 LLCheckBoxCtrl *mCtrlAvatarCloth; 115 LLCheckBoxCtrl *mCtrlAvatarCloth;
116 LLRadioGroup *mRadioLightingDetail2; 116 LLComboBox *mComboLightingDetail;
117 117
118 LLRadioGroup *mRadioTerrainDetail; 118 LLComboBox *mComboTerrainDetail;
119 LLRadioGroup *mRadioReflectionDetail; 119 LLComboBox *mComboReflectionDetail;
120 120
121 LLTextBox *mAspectRatioLabel1; 121 LLTextBox *mAspectRatioLabel1;
122 LLTextBox *mDisplayResLabel; 122 LLTextBox *mDisplayResLabel;
123 LLTextEditor *mFullScreenInfo;
124 LLTextBox *mWindowSizeLabel; 123 LLTextBox *mWindowSizeLabel;
125 124
126 LLTextBox *mShaderText; 125 LLTextBox *mShaderText;
@@ -137,7 +136,7 @@ protected:
137 LLTextBox *mTerrainFactorText; 136 LLTextBox *mTerrainFactorText;
138 LLTextBox *mSkyFactorText; 137 LLTextBox *mSkyFactorText;
139 LLTextBox *mPostProcessText; 138 LLTextBox *mPostProcessText;
140 LLTextBox *mAvatarCountText; 139 LLTextBox *mLimitsText;
141 140
142 BOOL mFSAutoDetectAspect; 141 BOOL mFSAutoDetectAspect;
143 F32 mAspectRatio; 142 F32 mAspectRatio;
@@ -173,8 +172,6 @@ protected:
173 172
174 S32 mAvatarMaxVisible; 173 S32 mAvatarMaxVisible;
175 174
176 BOOL mWLControl;
177
178 static void setGraphicsSettings(LLControlGroup& group); 175 static void setGraphicsSettings(LLControlGroup& group);
179 static void createGroup(); 176 static void createGroup();
180 177
diff --git a/linden/indra/newview/llpanelgeneral.cpp b/linden/indra/newview/llpanelgeneral.cpp
index 70146ce..ac957ed 100644
--- a/linden/indra/newview/llpanelgeneral.cpp
+++ b/linden/indra/newview/llpanelgeneral.cpp
@@ -36,7 +36,7 @@
36#include "llpanelgeneral.h" 36#include "llpanelgeneral.h"
37 37
38// project includes 38// project includes
39#include "llcolorswatch.h" 39#include "llcheckboxctrl.h"
40#include "llcombobox.h" 40#include "llcombobox.h"
41#include "lluictrlfactory.h" 41#include "lluictrlfactory.h"
42#include "llurlsimstring.h" 42#include "llurlsimstring.h"
@@ -90,28 +90,25 @@ BOOL LLPanelGeneral::postBuild()
90 childSetValue("show_location_checkbox", gSavedSettings.getBOOL("ShowStartLocation")); 90 childSetValue("show_location_checkbox", gSavedSettings.getBOOL("ShowStartLocation"));
91 childSetValue("show_all_title_checkbox", gSavedSettings.getBOOL("RenderHideGroupTitleAll")); 91 childSetValue("show_all_title_checkbox", gSavedSettings.getBOOL("RenderHideGroupTitleAll"));
92 childSetValue("show_my_name_checkbox", gSavedSettings.getBOOL("RenderNameHideSelf")); 92 childSetValue("show_my_name_checkbox", gSavedSettings.getBOOL("RenderNameHideSelf"));
93 childSetValue("small_avatar_names_checkbox", gSavedSettings.getBOOL("SmallAvatarNames")); 93 childSetValue("large_avatar_names_checkbox", !gSavedSettings.getBOOL("SmallAvatarNames"));
94 childSetValue("highlight_friends_checkbox", gSavedSettings.getBOOL("HighlightFriends")); 94 childSetValue("highlight_friends_checkbox", gSavedSettings.getBOOL("HighlightFriends"));
95 childSetValue("show_my_title_checkbox", gSavedSettings.getBOOL("RenderHideGroupTitle")); 95 //childSetValue("show_my_title_checkbox", gSavedSettings.getBOOL("RenderHideGroupTitle")); -- MC
96 childSetValue("afk_timeout_spinner", gSavedSettings.getF32("AFKTimeout")); 96
97 childSetEnabled("afk_timeout_spinner", gSavedSettings.getBOOL("AllowIdleAFK"));
98 childSetValue("afk_timeout_spinner", llround(gSavedSettings.getF32("AFKTimeout") / 60)); // User enters minutes, we store as seconds -- MC
97 childSetValue("afk_timeout_checkbox", gSavedSettings.getBOOL("AllowIdleAFK")); 99 childSetValue("afk_timeout_checkbox", gSavedSettings.getBOOL("AllowIdleAFK"));
100 childSetCommitCallback("afk_timeout_checkbox", onCommitAFKCheckbox, this);
101
98 childSetValue("mini_map_notify_chat", gSavedSettings.getBOOL("MiniMapNotifyChatRange")); 102 childSetValue("mini_map_notify_chat", gSavedSettings.getBOOL("MiniMapNotifyChatRange"));
99 childSetValue("mini_map_notify_sim", gSavedSettings.getBOOL("MiniMapNotifySimRange")); 103 childSetValue("mini_map_notify_sim", gSavedSettings.getBOOL("MiniMapNotifySimRange"));
100 104
101// mDisplayNamesUsage = gSavedSettings.getU32("DisplayNamesUsage"); 105// mDisplayNamesUsage = gSavedSettings.getU32("DisplayNamesUsage");
102// mLegacyNamesForFriends = gSavedSettings.getBOOL("LegacyNamesForFriends"); 106// mLegacyNamesForFriends = gSavedSettings.getBOOL("LegacyNamesForFriends");
103 107
104 getChild<LLColorSwatchCtrl>("effect_color_swatch")->set(gSavedSettings.getColor4("EffectColor"));
105
106 childSetValue("ui_scale_slider", gSavedSettings.getF32("UIScaleFactor"));
107 childSetValue("ui_auto_scale", gSavedSettings.getBOOL("UIAutoScale"));
108
109 LLComboBox* time_combobox = getChild<LLComboBox>("time_combobox"); 108 LLComboBox* time_combobox = getChild<LLComboBox>("time_combobox");
110 time_combobox->setCurrentByIndex(gSavedSettings.getU32("TimeFormat")); 109 time_combobox->setCurrentByIndex(gSavedSettings.getU32("TimeFormat"));
111 110
112 childSetValue("language_combobox", gSavedSettings.getString("Language")); 111 childSetValue("language_combobox", gSavedSettings.getString("Language"));
113
114 childSetAction("reset_ui_size", onClickResetUISize, this);
115 112
116 // if we have no agent, we can't let them choose anything 113 // if we have no agent, we can't let them choose anything
117 // if we have an agent, then we only let them choose if they have a choice 114 // if we have an agent, then we only let them choose if they have a choice
@@ -166,16 +163,13 @@ void LLPanelGeneral::apply()
166 gSavedSettings.setBOOL("ShowStartLocation", childGetValue("show_location_checkbox")); 163 gSavedSettings.setBOOL("ShowStartLocation", childGetValue("show_location_checkbox"));
167 gSavedSettings.setBOOL("RenderHideGroupTitleAll", childGetValue("show_all_title_checkbox")); 164 gSavedSettings.setBOOL("RenderHideGroupTitleAll", childGetValue("show_all_title_checkbox"));
168 gSavedSettings.setBOOL("RenderNameHideSelf", childGetValue("show_my_name_checkbox")); 165 gSavedSettings.setBOOL("RenderNameHideSelf", childGetValue("show_my_name_checkbox"));
169 gSavedSettings.setBOOL("SmallAvatarNames", childGetValue("small_avatar_names_checkbox")); 166 gSavedSettings.setBOOL("SmallAvatarNames", !childGetValue("large_avatar_names_checkbox"));
170 gSavedSettings.setBOOL("HighlightFriends", childGetValue("highlight_friends_checkbox")); 167 gSavedSettings.setBOOL("HighlightFriends", childGetValue("highlight_friends_checkbox"));
171 gSavedSettings.setBOOL("RenderHideGroupTitle", childGetValue("show_my_title_checkbox")); 168 //gSavedSettings.setBOOL("RenderHideGroupTitle", childGetValue("show_my_title_checkbox")); -- MC
172 gSavedSettings.setF32("AFKTimeout", childGetValue("afk_timeout_spinner").asReal()); 169 gSavedSettings.setF32("AFKTimeout", 60 * childGetValue("afk_timeout_spinner").asReal()); // User enters minutes, we store as seconds -- MC
173 gSavedSettings.setBOOL("AllowIdleAFK", childGetValue("afk_timeout_checkbox")); 170 gSavedSettings.setBOOL("AllowIdleAFK", childGetValue("afk_timeout_checkbox"));
174 gSavedSettings.setBOOL("MiniMapNotifyChatRange", childGetValue("mini_map_notify_chat")); 171 gSavedSettings.setBOOL("MiniMapNotifyChatRange", childGetValue("mini_map_notify_chat"));
175 gSavedSettings.setBOOL("MiniMapNotifySimRange", childGetValue("mini_map_notify_sim")); 172 gSavedSettings.setBOOL("MiniMapNotifySimRange", childGetValue("mini_map_notify_sim"));
176 gSavedSettings.setColor4("EffectColor", childGetValue("effect_color_swatch"));
177 gSavedSettings.setF32("UIScaleFactor", childGetValue("ui_scale_slider").asReal());
178 gSavedSettings.setBOOL("UIAutoScale", childGetValue("ui_auto_scale"));
179 gSavedSettings.setString("Language", childGetValue("language_combobox")); 173 gSavedSettings.setString("Language", childGetValue("language_combobox"));
180 174
181 /* 175 /*
@@ -218,14 +212,6 @@ void LLPanelGeneral::cancel()
218} 212}
219 213
220// static 214// static
221void LLPanelGeneral::onClickResetUISize(void* user_data)
222{
223 LLPanelGeneral* self = (LLPanelGeneral*)user_data;
224 F32 def = gSavedSettings.getControl("UIScaleFactor")->getDefault().asReal();
225 self->childSetValue("ui_scale_slider", def);
226}
227
228// static
229void LLPanelGeneral::onClickGrid(void *) 215void LLPanelGeneral::onClickGrid(void *)
230{ 216{
231 FloaterGridManager::getInstance()->open(); 217 FloaterGridManager::getInstance()->open();
@@ -241,3 +227,14 @@ void LLPanelGeneral::onLocationChanged(LLUICtrl* ctrl, void* data)
241 self->getChild<LLComboBox>("default_location_combo")->setTextEntry(LLURLSimString::sInstance.mSimString); 227 self->getChild<LLComboBox>("default_location_combo")->setTextEntry(LLURLSimString::sInstance.mSimString);
242 } 228 }
243} 229}
230
231// static
232void LLPanelGeneral::onCommitAFKCheckbox(LLUICtrl* ctrl, void* data)
233{
234 LLPanelGeneral* self = (LLPanelGeneral*)data;
235 LLCheckBoxCtrl* check = (LLCheckBoxCtrl*)ctrl;
236
237 if (!self || !check) return;
238 self->childSetEnabled("afk_timeout_spinner", check->get());
239 self->childSetEnabled("minutes_textbox", check->get());
240}
diff --git a/linden/indra/newview/llpanelgeneral.h b/linden/indra/newview/llpanelgeneral.h
index 56cc3de..4080079 100644
--- a/linden/indra/newview/llpanelgeneral.h
+++ b/linden/indra/newview/llpanelgeneral.h
@@ -48,9 +48,9 @@ public:
48 void cancel(); 48 void cancel();
49 49
50private: 50private:
51 static void onClickResetUISize(void*);
52 static void onClickGrid(void*); 51 static void onClickGrid(void*);
53 static void onLocationChanged(LLUICtrl* ctrl, void* data); 52 static void onLocationChanged(LLUICtrl* ctrl, void* data);
53 static void onCommitAFKCheckbox(LLUICtrl* ctrl, void* data);
54 54
55 U32 mDisplayNamesUsage; 55 U32 mDisplayNamesUsage;
56 bool mLegacyNamesForFriends; 56 bool mLegacyNamesForFriends;
diff --git a/linden/indra/newview/llpanelinput.cpp b/linden/indra/newview/llpanelinput.cpp
index 32c4af3..9664b6f 100644
--- a/linden/indra/newview/llpanelinput.cpp
+++ b/linden/indra/newview/llpanelinput.cpp
@@ -31,7 +31,10 @@
31 */ 31 */
32 32
33#include "llviewerprecompiledheaders.h" 33#include "llviewerprecompiledheaders.h"
34
34#include "llpanelinput.h" 35#include "llpanelinput.h"
36
37#include "llcombobox.h"
35#include "lluictrlfactory.h" 38#include "lluictrlfactory.h"
36#include "llviewercamera.h" 39#include "llviewercamera.h"
37#include "llviewercontrol.h" 40#include "llviewercontrol.h"
@@ -60,7 +63,6 @@ BOOL LLPanelInput::postBuild()
60 mPreAdjustCameraOffsetScale = gSavedSettings.getF32("CameraOffsetScale"); 63 mPreAdjustCameraOffsetScale = gSavedSettings.getF32("CameraOffsetScale");
61 64
62 childSetValue("mouse_sensitivity", gSavedSettings.getF32("MouseSensitivity")); 65 childSetValue("mouse_sensitivity", gSavedSettings.getF32("MouseSensitivity"));
63 childSetValue("automatic_fly", gSavedSettings.getBOOL("AutomaticFly"));
64 childSetValue("invert_mouse", gSavedSettings.getBOOL("InvertMouse")); 66 childSetValue("invert_mouse", gSavedSettings.getBOOL("InvertMouse"));
65 childSetValue("edit_camera_movement", gSavedSettings.getBOOL("EditCameraMovement")); 67 childSetValue("edit_camera_movement", gSavedSettings.getBOOL("EditCameraMovement"));
66 childSetValue("appearance_camera_movement", gSavedSettings.getBOOL("AppearanceCameraMovement")); 68 childSetValue("appearance_camera_movement", gSavedSettings.getBOOL("AppearanceCameraMovement"));
@@ -75,6 +77,7 @@ BOOL LLPanelInput::postBuild()
75 fov_slider->setValue(LLViewerCamera::getInstance()->getView()); 77 fov_slider->setValue(LLViewerCamera::getInstance()->getView());
76 78
77 childSetValue("double_click_action", gSavedSettings.getString("DoubleClickAction")); 79 childSetValue("double_click_action", gSavedSettings.getString("DoubleClickAction"));
80 childSetCommitCallback("double_click_action", onCommitAction, this);
78 childSetValue("go_action", gSavedSettings.getString("GoAction")); 81 childSetValue("go_action", gSavedSettings.getString("GoAction"));
79 82
80 childSetValue("Disable camera constraints", gSavedSettings.getBOOL("DisableCameraConstraints")); 83 childSetValue("Disable camera constraints", gSavedSettings.getBOOL("DisableCameraConstraints"));
@@ -95,7 +98,6 @@ void LLPanelInput::apply()
95 mPreAdjustCameraOffsetScale = childGetValue("camera_offset_scale").asReal(); 98 mPreAdjustCameraOffsetScale = childGetValue("camera_offset_scale").asReal();
96 99
97 gSavedSettings.setF32("MouseSensitivity", childGetValue("mouse_sensitivity").asReal()); 100 gSavedSettings.setF32("MouseSensitivity", childGetValue("mouse_sensitivity").asReal());
98 gSavedSettings.setBOOL("AutomaticFly", childGetValue("automatic_fly"));
99 gSavedSettings.setBOOL("InvertMouse", childGetValue("invert_mouse")); 101 gSavedSettings.setBOOL("InvertMouse", childGetValue("invert_mouse"));
100 gSavedSettings.setBOOL("EditCameraMovement", childGetValue("edit_camera_movement")); 102 gSavedSettings.setBOOL("EditCameraMovement", childGetValue("edit_camera_movement"));
101 gSavedSettings.setBOOL("AppearanceCameraMovement", childGetValue("appearance_camera_movement")); 103 gSavedSettings.setBOOL("AppearanceCameraMovement", childGetValue("appearance_camera_movement"));
@@ -130,3 +132,14 @@ void LLPanelInput::onClickJoystickSetup(void* user_data)
130 } 132 }
131} 133}
132 134
135// static
136void LLPanelInput::onCommitAction(LLUICtrl* ctrl, void* user_data)
137{
138 LLPanelInput* self = (LLPanelInput*)user_data;
139 LLComboBox* combo = (LLComboBox*)ctrl;
140 if (self && combo)
141 {
142 self->childSetEnabled("go_action_label", combo->getSimple() == "Go");
143 self->childSetEnabled("go_action", combo->getSimple() == "Go");
144 }
145}
diff --git a/linden/indra/newview/llpanelinput.h b/linden/indra/newview/llpanelinput.h
index 9a2bebe..29bc04e 100644
--- a/linden/indra/newview/llpanelinput.h
+++ b/linden/indra/newview/llpanelinput.h
@@ -47,6 +47,8 @@ public:
47 47
48private: 48private:
49 static void onClickJoystickSetup(void* user_data); 49 static void onClickJoystickSetup(void* user_data);
50 static void onCommitAction(LLUICtrl* ctrl, void* user_data);
51
50 F32 mPreAdjustFOV; 52 F32 mPreAdjustFOV;
51 F32 mPreAdjustCameraOffsetScale; 53 F32 mPreAdjustCameraOffsetScale;
52}; 54};
diff --git a/linden/indra/newview/llpanelmsgs.cpp b/linden/indra/newview/llpanelmsgs.cpp
index 9e04070..572bcc3 100644
--- a/linden/indra/newview/llpanelmsgs.cpp
+++ b/linden/indra/newview/llpanelmsgs.cpp
@@ -70,6 +70,8 @@ BOOL LLPanelMsgs::postBuild()
70 childSetValue("notify_money_change_checkbox", gSavedSettings.getBOOL("NotifyMoneyChange")); 70 childSetValue("notify_money_change_checkbox", gSavedSettings.getBOOL("NotifyMoneyChange"));
71 childSetLabelArg("notify_money_change_checkbox", "[CURRENCY]", gHippoGridManager->getConnectedGrid()->getCurrencySymbol()); 71 childSetLabelArg("notify_money_change_checkbox", "[CURRENCY]", gHippoGridManager->getConnectedGrid()->getCurrencySymbol());
72 72
73 childSetValue("friends_online_notify_checkbox", gSavedSettings.getBOOL("ChatOnlineNotification"));
74
73 return TRUE; 75 return TRUE;
74} 76}
75 77
@@ -166,6 +168,8 @@ void LLPanelMsgs::apply()
166 gSavedSettings.setBOOL("ShowNewInventory", childGetValue("show_new_inventory")); 168 gSavedSettings.setBOOL("ShowNewInventory", childGetValue("show_new_inventory"));
167 gSavedSettings.setBOOL("ShowInInventory", childGetValue("show_in_inventory")); 169 gSavedSettings.setBOOL("ShowInInventory", childGetValue("show_in_inventory"));
168 gSavedSettings.setBOOL("NotifyMoneyChange", childGetValue("notify_money_change_checkbox")); 170 gSavedSettings.setBOOL("NotifyMoneyChange", childGetValue("notify_money_change_checkbox"));
171
172 gSavedSettings.setBOOL("ChatOnlineNotification", childGetValue("friends_online_notify_checkbox").asBoolean());
169} 173}
170 174
171void LLPanelMsgs::cancel() 175void LLPanelMsgs::cancel()
diff --git a/linden/indra/newview/llpanelnetwork.cpp b/linden/indra/newview/llpanelnetwork.cpp
index 3b866eb..b4ebe42 100644
--- a/linden/indra/newview/llpanelnetwork.cpp
+++ b/linden/indra/newview/llpanelnetwork.cpp
@@ -44,6 +44,30 @@
44#include "llviewercontrol.h" 44#include "llviewercontrol.h"
45#include "llviewerwindow.h" 45#include "llviewerwindow.h"
46 46
47// project includes
48#include "llcheckboxctrl.h"
49#include "hippogridmanager.h"
50#include "lluictrlfactory.h"
51#include "llviewercontrol.h"
52#include "llviewermedia.h"
53#include "llviewerwindow.h"
54#include "llpluginclassmedia.h"
55
56#include "hippogridmanager.h"
57#include "llpluginclassmedia.h"
58#include "llviewermedia.h"
59
60// helper functions for getting/freeing the web browser media
61// if creating/destroying these is too slow, we'll need to create
62// a static member and update all our static callbacks
63viewer_media_t get_web_media()
64{
65
66 viewer_media_t media_source = LLViewerMedia::newMediaImpl("", LLUUID::null, 0, 0, 0, 0, "text/html");
67
68 return media_source;
69}
70
47bool LLPanelNetwork::sSocksSettingsChanged; 71bool LLPanelNetwork::sSocksSettingsChanged;
48 72
49LLPanelNetwork::LLPanelNetwork() 73LLPanelNetwork::LLPanelNetwork()
@@ -54,16 +78,16 @@ LLPanelNetwork::LLPanelNetwork()
54BOOL LLPanelNetwork::postBuild() 78BOOL LLPanelNetwork::postBuild()
55{ 79{
56 std::string cache_location = gDirUtilp->getExpandedFilename(LL_PATH_CACHE, ""); 80 std::string cache_location = gDirUtilp->getExpandedFilename(LL_PATH_CACHE, "");
57 childSetText("cache_location", cache_location); 81 childSetText("disk_cache_location", cache_location);
58 82
59 childSetAction("clear_cache", onClickClearCache, this); 83 childSetAction("clear_disk_cache", onClickClearDiskCache, this);
60 childSetAction("set_cache", onClickSetCache, this); 84 childSetAction("set_disk_cache", onClickSetDiskCache, this);
61 childSetAction("reset_cache", onClickResetCache, this); 85 childSetAction("reset_disk_cache", onClickResetDiskCache, this);
62 86
63 childSetEnabled("connection_port", gSavedSettings.getBOOL("ConnectionPortEnabled")); 87 childSetEnabled("connection_port", gSavedSettings.getBOOL("ConnectionPortEnabled"));
64 childSetCommitCallback("connection_port_enabled", onCommitPort, this); 88 childSetCommitCallback("connection_port_enabled", onCommitPort, this);
65 89
66 childSetValue("cache_size", (F32)gSavedSettings.getU32("CacheSize")); 90 childSetValue("disk_cache_size", (F32)gSavedSettings.getU32("CacheSize"));
67 childSetValue("max_bandwidth", gSavedSettings.getF32("ThrottleBandwidthKBPS")); 91 childSetValue("max_bandwidth", gSavedSettings.getF32("ThrottleBandwidthKBPS"));
68 childSetValue("connection_port_enabled", gSavedSettings.getBOOL("ConnectionPortEnabled")); 92 childSetValue("connection_port_enabled", gSavedSettings.getBOOL("ConnectionPortEnabled"));
69 childSetValue("connection_port", (F32)gSavedSettings.getU32("ConnectionPort")); 93 childSetValue("connection_port", (F32)gSavedSettings.getU32("ConnectionPort"));
@@ -99,8 +123,48 @@ BOOL LLPanelNetwork::postBuild()
99 // Socks 5 settings, Set all controls and labels enabled state 123 // Socks 5 settings, Set all controls and labels enabled state
100 updateProxyEnabled(this, gSavedSettings.getBOOL("Socks5ProxyEnabled"), gSavedSettings.getString("Socks5AuthType")); 124 updateProxyEnabled(this, gSavedSettings.getBOOL("Socks5ProxyEnabled"), gSavedSettings.getString("Socks5AuthType"));
101 125
126 childSetEnabled("xmlrpc_proxy_editor", gSavedSettings.getBOOL("XMLRPCProxyEnabled"));
127 childSetEnabled("xmlrpc_proxy_port", gSavedSettings.getBOOL("XMLRPCProxyEnabled"));
128 childSetEnabled("xmlrpc_proxy_text_label", gSavedSettings.getBOOL("XMLRPCProxyEnabled"));
129
130 childSetValue("http_texture_check", gSavedSettings.getBOOL("ImagePipelineUseHTTP"));
131 childSetValue("speed_rez_check", gSavedSettings.getBOOL("SpeedRez"));
132 childSetValue("speed_rez_interval_spinner", (F32)gSavedSettings.getU32("SpeedRezInterval"));
133 childSetCommitCallback("speed_rez_check", onCommitSpeedRezCheckBox, this);
134
102 sSocksSettingsChanged = false; 135 sSocksSettingsChanged = false;
103 136
137 // formerly the Web panel -- MC
138 childSetAction("clear_web_cache", onClickClearWebCache, this);
139 childSetCommitCallback("web_proxy_enabled", onCommitWebProxyEnabled, this);
140
141 std::string value = gSavedSettings.getBOOL("UseExternalBrowser") ? "external" : "internal";
142 childSetValue("use_external_browser", value);
143
144 childSetValue("cookies_enabled", gSavedSettings.getBOOL("BrowserCookiesEnabled"));
145 childSetAction("clear_cookies", onClickClearCookies,this);
146
147 childSetValue("web_proxy_enabled", gSavedSettings.getBOOL("BrowserProxyEnabled"));
148 childSetValue("web_proxy_editor", gSavedSettings.getString("BrowserProxyAddress"));
149 childSetValue("web_proxy_port", gSavedSettings.getS32("BrowserProxyPort"));
150
151 if (gHippoGridManager->getConnectedGrid()->isSecondLife())
152 {
153 childSetValue("world_search_editor", gSavedSettings.getString("SearchURLQuery")) ;
154 }
155 else
156 {
157 childSetValue("world_search_editor", gSavedSettings.getString("SearchURLQueryOpenSim")) ;
158 }
159 childSetAction("world_search_reset_default", onClickSearchDefault, this);
160 childSetAction("world_search_clear", onClickSearchClear, this);
161
162 childSetEnabled("proxy_text_label", gSavedSettings.getBOOL("BrowserProxyEnabled"));
163 childSetEnabled("web_proxy_editor", gSavedSettings.getBOOL("BrowserProxyEnabled"));
164 childSetEnabled("web_proxy_port", gSavedSettings.getBOOL("BrowserProxyEnabled"));
165
166 refresh();
167
104 return TRUE; 168 return TRUE;
105} 169}
106 170
@@ -112,7 +176,7 @@ LLPanelNetwork::~LLPanelNetwork()
112 176
113void LLPanelNetwork::apply() 177void LLPanelNetwork::apply()
114{ 178{
115 gSavedSettings.setU32("CacheSize", childGetValue("cache_size").asInteger()); 179 gSavedSettings.setU32("CacheSize", childGetValue("disk_cache_size").asInteger());
116 gSavedSettings.setF32("ThrottleBandwidthKBPS", childGetValue("max_bandwidth").asReal()); 180 gSavedSettings.setF32("ThrottleBandwidthKBPS", childGetValue("max_bandwidth").asReal());
117 gSavedSettings.setBOOL("ConnectionPortEnabled", childGetValue("connection_port_enabled")); 181 gSavedSettings.setBOOL("ConnectionPortEnabled", childGetValue("connection_port_enabled"));
118 gSavedSettings.setU32("ConnectionPort", childGetValue("connection_port").asInteger()); 182 gSavedSettings.setU32("ConnectionPort", childGetValue("connection_port").asInteger());
@@ -130,6 +194,10 @@ void LLPanelNetwork::apply()
130 gSavedSettings.setString("Socks5Username", childGetValue("socks5_proxy_username")); 194 gSavedSettings.setString("Socks5Username", childGetValue("socks5_proxy_username"));
131 gSavedSettings.setString("Socks5Password", childGetValue("socks5_proxy_password")); 195 gSavedSettings.setString("Socks5Password", childGetValue("socks5_proxy_password"));
132 196
197 gSavedSettings.setBOOL("ImagePipelineUseHTTP", childGetValue("http_texture_check"));
198 gSavedSettings.setBOOL("SpeedRez", childGetValue("speed_rez_check"));
199 gSavedSettings.setU32("SpeedRezInterval", childGetValue("speed_rez_interval_spinner").asReal());
200
133 if (sSocksSettingsChanged) 201 if (sSocksSettingsChanged)
134 { 202 {
135 if (LLStartUp::getStartupState() != STATE_LOGIN_WAIT) 203 if (LLStartUp::getStartupState() != STATE_LOGIN_WAIT)
@@ -142,14 +210,62 @@ void LLPanelNetwork::apply()
142 LLSocks::getInstance()->updated(); 210 LLSocks::getInstance()->updated();
143 } 211 }
144 } 212 }
213
214 // formerly the Web panel -- MC
215 gSavedSettings.setBOOL("BrowserCookiesEnabled", childGetValue("cookies_enabled"));
216
217 bool proxy_enable = childGetValue("web_proxy_enabled");
218 std::string proxy_address = childGetValue("web_proxy_editor");
219 int proxy_port = childGetValue("web_proxy_port");
220 gSavedSettings.setBOOL("BrowserProxyEnabled", proxy_enable);
221 gSavedSettings.setString("BrowserProxyAddress", proxy_address);
222 gSavedSettings.setS32("BrowserProxyPort", proxy_port);
223 LLViewerMedia::setProxyConfig(proxy_enable, proxy_address, proxy_port);
224
225 if (gHippoGridManager->getConnectedGrid()->isSecondLife())
226 {
227 gSavedSettings.setString("SearchURLQuery", childGetValue("world_search_editor"));
228 }
229 else
230 {
231 gSavedSettings.setString("SearchURLQueryOpenSim", childGetValue("world_search_editor"));
232 }
233
234 bool value = childGetValue("use_external_browser").asString() == "external" ? true : false;
235 gSavedSettings.setBOOL("UseExternalBrowser", value);
236
237 viewer_media_t media_source = get_web_media();
238 if (media_source && media_source->hasMedia())
239 {
240 media_source->getMediaPlugin()->enable_cookies(childGetValue("cookies_enabled"));
241
242 bool proxy_enable = childGetValue("web_proxy_enabled");
243 std::string proxy_address = childGetValue("web_proxy_editor");
244 int proxy_port = childGetValue("web_proxy_port");
245 media_source->getMediaPlugin()->proxy_setup(proxy_enable, proxy_address, proxy_port);
246 }
145} 247}
146 248
147void LLPanelNetwork::cancel() 249void LLPanelNetwork::cancel()
148{ 250{
149} 251}
150 252
253void LLPanelNetwork::refresh()
254{
255 if (childGetValue("speed_rez_check").asBoolean())
256 {
257 childEnable("speed_rez_interval_spinner");
258 childEnable("speed_rez_seconds_text");
259 }
260 else
261 {
262 childDisable("speed_rez_interval_spinner");
263 childDisable("speed_rez_seconds_text");
264 }
265}
266
151// static 267// static
152void LLPanelNetwork::onClickClearCache(void*) 268void LLPanelNetwork::onClickClearDiskCache(void*)
153{ 269{
154 // flag client cache for clearing next time the client runs 270 // flag client cache for clearing next time the client runs
155 gSavedSettings.setBOOL("PurgeCacheOnNextStartup", TRUE); 271 gSavedSettings.setBOOL("PurgeCacheOnNextStartup", TRUE);
@@ -157,7 +273,7 @@ void LLPanelNetwork::onClickClearCache(void*)
157} 273}
158 274
159// static 275// static
160void LLPanelNetwork::onClickSetCache(void* user_data) 276void LLPanelNetwork::onClickSetDiskCache(void* user_data)
161{ 277{
162 LLPanelNetwork* self = (LLPanelNetwork*)user_data; 278 LLPanelNetwork* self = (LLPanelNetwork*)user_data;
163 279
@@ -173,19 +289,19 @@ void LLPanelNetwork::onClickSetCache(void* user_data)
173 std::string dir_name = picker.getDirName(); 289 std::string dir_name = picker.getDirName();
174 if (!dir_name.empty() && dir_name != cur_name) 290 if (!dir_name.empty() && dir_name != cur_name)
175 { 291 {
176 self->childSetText("cache_location", dir_name); 292 self->childSetText("disk_cache_location", dir_name);
177 LLNotifications::instance().add("CacheWillBeMoved"); 293 LLNotifications::instance().add("CacheWillBeMoved");
178 gSavedSettings.setString("NewCacheLocation", dir_name); 294 gSavedSettings.setString("NewCacheLocation", dir_name);
179 } 295 }
180 else 296 else
181 { 297 {
182 std::string cache_location = gDirUtilp->getCacheDir(); 298 std::string cache_location = gDirUtilp->getCacheDir();
183 self->childSetText("cache_location", cache_location); 299 self->childSetText("disk_cache_location", cache_location);
184 } 300 }
185} 301}
186 302
187// static 303// static
188void LLPanelNetwork::onClickResetCache(void* user_data) 304void LLPanelNetwork::onClickResetDiskCache(void* user_data)
189{ 305{
190 LLPanelNetwork* self = (LLPanelNetwork*)user_data; 306 LLPanelNetwork* self = (LLPanelNetwork*)user_data;
191 if (!gSavedSettings.getString("CacheLocation").empty()) 307 if (!gSavedSettings.getString("CacheLocation").empty())
@@ -194,7 +310,7 @@ void LLPanelNetwork::onClickResetCache(void* user_data)
194 LLNotifications::instance().add("CacheWillBeMoved"); 310 LLNotifications::instance().add("CacheWillBeMoved");
195 } 311 }
196 std::string cache_location = gDirUtilp->getCacheDir(true); 312 std::string cache_location = gDirUtilp->getCacheDir(true);
197 self->childSetText("cache_location", cache_location); 313 self->childSetText("disk_cache_location", cache_location);
198} 314}
199 315
200// static 316// static
@@ -300,3 +416,104 @@ void LLPanelNetwork::updateProxyEnabled(LLPanelNetwork * self, bool enabled, std
300 self->childSetEnabled("xmlrpc_proxy_port", !enabled); 416 self->childSetEnabled("xmlrpc_proxy_port", !enabled);
301 self->childSetEnabled("xmlrpc_proxy_text_label", !enabled); 417 self->childSetEnabled("xmlrpc_proxy_text_label", !enabled);
302} 418}
419
420// static
421void LLPanelNetwork::onClickClearWebCache(void*)
422{
423 LLNotifications::instance().add("ConfirmClearBrowserCache", LLSD(), LLSD(), callback_clear_browser_cache);
424}
425
426//static
427bool LLPanelNetwork::callback_clear_browser_cache(const LLSD& notification, const LLSD& response)
428{
429 S32 option = LLNotification::getSelectedOption(notification, response);
430 if ( option == 0 ) // YES
431 {
432 viewer_media_t media_source = get_web_media();
433 if (media_source && media_source->hasMedia())
434 media_source->getMediaPlugin()->clear_cache();
435 }
436 return false;
437}
438
439// static
440void LLPanelNetwork::onClickClearCookies(void*)
441{
442 LLNotifications::instance().add("ConfirmClearCookies", LLSD(), LLSD(), callback_clear_cookies);
443}
444
445//static
446bool LLPanelNetwork::callback_clear_cookies(const LLSD& notification, const LLSD& response)
447{
448 S32 option = LLNotification::getSelectedOption(notification, response);
449 if ( option == 0 ) // YES
450 {
451 viewer_media_t media_source = get_web_media();
452 if (media_source && media_source->hasMedia())
453 media_source->getMediaPlugin()->clear_cookies();
454 }
455 return false;
456}
457
458// static
459void LLPanelNetwork::onCommitCookies(LLUICtrl* ctrl, void* data)
460{
461 LLPanelNetwork* self = (LLPanelNetwork*)data;
462 LLCheckBoxCtrl* check = (LLCheckBoxCtrl*)ctrl;
463
464 if (!self || !check) return;
465
466 viewer_media_t media_source = get_web_media();
467 if (media_source && media_source->hasMedia())
468 media_source->getMediaPlugin()->enable_cookies(check->get());
469}
470
471// static
472void LLPanelNetwork::onCommitWebProxyEnabled(LLUICtrl* ctrl, void* data)
473{
474 LLPanelNetwork* self = (LLPanelNetwork*)data;
475 LLCheckBoxCtrl* check = (LLCheckBoxCtrl*)ctrl;
476
477 if (!self || !check) return;
478 self->childSetEnabled("web_proxy_editor", check->get());
479 self->childSetEnabled("web_proxy_port", check->get());
480 self->childSetEnabled("proxy_text_label", check->get());
481}
482
483// static
484void LLPanelNetwork::onClickSearchDefault(void* user_data)
485{
486 LLPanelNetwork* self = (LLPanelNetwork*)user_data;
487 LLControlVariable* controlp =
488 (gHippoGridManager->getConnectedGrid()->isSecondLife())
489 ?
490 gSavedSettings.getControl("SearchURLQuery")
491 :
492 gSavedSettings.getControl("SearchURLQueryOpenSim");
493
494 if (controlp)
495 {
496 self->childSetValue("world_search_editor",controlp->getDefault().asString()) ;
497 }
498 else
499 {
500 llwarns << "SearchURLQuery or SearchURLQueryOpenSim missing from settings.xml - thats bad!" << llendl;
501 }
502}
503
504// static
505void LLPanelNetwork::onClickSearchClear(void* user_data)
506{
507 LLPanelNetwork* self = (LLPanelNetwork*)user_data;
508 self->childSetValue("world_search_editor","") ;
509}
510
511//static
512void LLPanelNetwork::onCommitSpeedRezCheckBox(LLUICtrl* ctrl, void* user_data)
513{
514 LLPanelNetwork* self = (LLPanelNetwork*)user_data;
515 if (self)
516 {
517 self->refresh();
518 }
519}
diff --git a/linden/indra/newview/llpanelnetwork.h b/linden/indra/newview/llpanelnetwork.h
index 628f713..b8e5618 100644
--- a/linden/indra/newview/llpanelnetwork.h
+++ b/linden/indra/newview/llpanelnetwork.h
@@ -47,9 +47,13 @@ public:
47 void cancel(); 47 void cancel();
48 48
49private: 49private:
50 static void onClickClearCache(void*); 50 void refresh();
51 static void onClickSetCache(void*); 51
52 static void onClickResetCache(void*); 52 static void onCommitSpeedRezCheckBox(LLUICtrl* ctrl, void* user_data);
53
54 static void onClickClearDiskCache(void*);
55 static void onClickSetDiskCache(void*);
56 static void onClickResetDiskCache(void*);
53 static void onCommitPort(LLUICtrl* ctrl, void*); 57 static void onCommitPort(LLUICtrl* ctrl, void*);
54 static void onCommitXMLRPCProxyEnabled(LLUICtrl* ctrl, void* data); 58 static void onCommitXMLRPCProxyEnabled(LLUICtrl* ctrl, void* data);
55 static void onCommitSocks5ProxyEnabled(LLUICtrl* ctrl, void* data); 59 static void onCommitSocks5ProxyEnabled(LLUICtrl* ctrl, void* data);
@@ -60,6 +64,16 @@ private:
60 64
61 static bool sSocksSettingsChanged; 65 static bool sSocksSettingsChanged;
62 66
67 // formerly the web panel -- MC
68 static void onClickClearWebCache(void*);
69 static void onClickClearCookies(void*);
70 static void onClickSearchDefault(void* user_data);
71 static void onClickSearchClear(void* user_data);
72 static bool callback_clear_browser_cache(const LLSD& notification, const LLSD& response);
73 static bool callback_clear_cookies(const LLSD& notification, const LLSD& response);
74 static void onCommitCookies(LLUICtrl* ctrl, void* data);
75 static void onCommitWebProxyEnabled(LLUICtrl* ctrl, void* data);
76
63}; 77};
64 78
65#endif 79#endif
diff --git a/linden/indra/newview/llpanelweb.cpp b/linden/indra/newview/llpanelweb.cpp
deleted file mode 100644
index 93441dd..0000000
--- a/linden/indra/newview/llpanelweb.cpp
+++ /dev/null
@@ -1,234 +0,0 @@
1/**
2 * @file LLPanelWeb.cpp
3 * @brief Network preferences panel
4 *
5 * $LicenseInfo:firstyear=2001&license=viewergpl$
6 *
7 * Copyright (c) 2001-2009, Linden Research, Inc.
8 *
9 * Second Life Viewer Source Code
10 * The source code in this file ("Source Code") is provided by Linden Lab
11 * to you under the terms of the GNU General Public License, version 2.0
12 * ("GPL"), unless you have obtained a separate licensing agreement
13 * ("Other License"), formally executed by you and Linden Lab. Terms of
14 * the GPL can be found in doc/GPL-license.txt in this distribution, or
15 * online at http://secondlifegrid.net/programs/open_source/licensing/gplv2
16 *
17 * There are special exceptions to the terms and conditions of the GPL as
18 * it is applied to this Source Code. View the full text of the exception
19 * in the file doc/FLOSS-exception.txt in this software distribution, or
20 * online at
21 * http://secondlifegrid.net/programs/open_source/licensing/flossexception
22 *
23 * By copying, modifying or distributing this software, you acknowledge
24 * that you have read and understood your obligations described above,
25 * and agree to abide by those obligations.
26 *
27 * ALL LINDEN LAB SOURCE CODE IS PROVIDED "AS IS." LINDEN LAB MAKES NO
28 * WARRANTIES, EXPRESS, IMPLIED OR OTHERWISE, REGARDING ITS ACCURACY,
29 * COMPLETENESS OR PERFORMANCE.
30 * $/LicenseInfo$
31 */
32
33#include "llviewerprecompiledheaders.h"
34
35// file include
36#include "llpanelweb.h"
37
38// project includes
39#include "llcheckboxctrl.h"
40#include "hippogridmanager.h"
41#include "lluictrlfactory.h"
42#include "llviewercontrol.h"
43#include "llviewermedia.h"
44#include "llviewerwindow.h"
45#include "llpluginclassmedia.h"
46
47// helper functions for getting/freeing the web browser media
48// if creating/destroying these is too slow, we'll need to create
49// a static member and update all our static callbacks
50viewer_media_t get_web_media()
51{
52
53 viewer_media_t media_source = LLViewerMedia::newMediaImpl("", LLUUID::null, 0, 0, 0, 0, "text/html");
54
55 return media_source;
56}
57
58LLPanelWeb::LLPanelWeb()
59{
60 LLUICtrlFactory::getInstance()->buildPanel(this, "panel_preferences_web.xml");
61}
62
63BOOL LLPanelWeb::postBuild()
64{
65 childSetAction("clear_cache", onClickClearCache, this);
66 childSetCommitCallback("web_proxy_enabled", onCommitWebProxyEnabled, this);
67
68 std::string value = gSavedSettings.getBOOL("UseExternalBrowser") ? "external" : "internal";
69 childSetValue("use_external_browser", value);
70
71 childSetValue("cookies_enabled", gSavedSettings.getBOOL("BrowserCookiesEnabled"));
72 childSetAction("clear_cookies", onClickClearCookies,this);
73
74 childSetValue("web_proxy_enabled", gSavedSettings.getBOOL("BrowserProxyEnabled"));
75 childSetValue("web_proxy_editor", gSavedSettings.getString("BrowserProxyAddress"));
76 childSetValue("web_proxy_port", gSavedSettings.getS32("BrowserProxyPort"));
77
78 if (gHippoGridManager->getConnectedGrid()->isSecondLife())
79 {
80 childSetValue("world_search_editor", gSavedSettings.getString("SearchURLQuery")) ;
81 }
82 else
83 {
84 childSetValue("world_search_editor", gSavedSettings.getString("SearchURLQueryOpenSim")) ;
85 }
86 childSetAction("world_search_reset_default", onClickDefault, this);
87 childSetAction("world_search_clear", onClickClear, this);
88
89 childSetEnabled("proxy_text_label", gSavedSettings.getBOOL("BrowserProxyEnabled"));
90 childSetEnabled("web_proxy_editor", gSavedSettings.getBOOL("BrowserProxyEnabled"));
91 childSetEnabled("web_proxy_port", gSavedSettings.getBOOL("BrowserProxyEnabled"));
92
93 return TRUE;
94}
95
96
97
98LLPanelWeb::~LLPanelWeb()
99{
100 // Children all cleaned up by default view destructor.
101}
102
103void LLPanelWeb::apply()
104{
105 gSavedSettings.setBOOL("BrowserCookiesEnabled", childGetValue("cookies_enabled"));
106
107 bool proxy_enable = childGetValue("web_proxy_enabled");
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
115 if (gHippoGridManager->getConnectedGrid()->isSecondLife())
116 {
117 gSavedSettings.setString("SearchURLQuery", childGetValue("world_search_editor"));
118 }
119 else
120 {
121 gSavedSettings.setString("SearchURLQueryOpenSim", childGetValue("world_search_editor"));
122 }
123
124 bool value = childGetValue("use_external_browser").asString() == "external" ? true : false;
125 gSavedSettings.setBOOL("UseExternalBrowser", value);
126
127 viewer_media_t media_source = get_web_media();
128 if (media_source && media_source->hasMedia())
129 {
130 media_source->getMediaPlugin()->enable_cookies(childGetValue("cookies_enabled"));
131
132 bool proxy_enable = childGetValue("web_proxy_enabled");
133 std::string proxy_address = childGetValue("web_proxy_editor");
134 int proxy_port = childGetValue("web_proxy_port");
135 media_source->getMediaPlugin()->proxy_setup(proxy_enable, proxy_address, proxy_port);
136 }
137}
138
139void LLPanelWeb::cancel()
140{
141}
142
143// static
144void LLPanelWeb::onClickClearCache(void*)
145{
146 LLNotifications::instance().add("ConfirmClearBrowserCache", LLSD(), LLSD(), callback_clear_browser_cache);
147}
148
149//static
150bool LLPanelWeb::callback_clear_browser_cache(const LLSD& notification, const LLSD& response)
151{
152 S32 option = LLNotification::getSelectedOption(notification, response);
153 if ( option == 0 ) // YES
154 {
155 viewer_media_t media_source = get_web_media();
156 if (media_source && media_source->hasMedia())
157 media_source->getMediaPlugin()->clear_cache();
158 }
159 return false;
160}
161
162// static
163void LLPanelWeb::onClickClearCookies(void*)
164{
165 LLNotifications::instance().add("ConfirmClearCookies", LLSD(), LLSD(), callback_clear_cookies);
166}
167
168//static
169bool LLPanelWeb::callback_clear_cookies(const LLSD& notification, const LLSD& response)
170{
171 S32 option = LLNotification::getSelectedOption(notification, response);
172 if ( option == 0 ) // YES
173 {
174 viewer_media_t media_source = get_web_media();
175 if (media_source && media_source->hasMedia())
176 media_source->getMediaPlugin()->clear_cookies();
177 }
178 return false;
179}
180
181// static
182void LLPanelWeb::onCommitCookies(LLUICtrl* ctrl, void* data)
183{
184 LLPanelWeb* self = (LLPanelWeb*)data;
185 LLCheckBoxCtrl* check = (LLCheckBoxCtrl*)ctrl;
186
187 if (!self || !check) return;
188
189 viewer_media_t media_source = get_web_media();
190 if (media_source && media_source->hasMedia())
191 media_source->getMediaPlugin()->enable_cookies(check->get());
192}
193// static
194void LLPanelWeb::onCommitWebProxyEnabled(LLUICtrl* ctrl, void* data)
195{
196 LLPanelWeb* self = (LLPanelWeb*)data;
197 LLCheckBoxCtrl* check = (LLCheckBoxCtrl*)ctrl;
198
199 if (!self || !check) return;
200 self->childSetEnabled("web_proxy_editor", check->get());
201 self->childSetEnabled("web_proxy_port", check->get());
202 self->childSetEnabled("proxy_text_label", check->get());
203
204
205}
206
207// static
208void LLPanelWeb::onClickDefault(void* user_data)
209{
210 LLPanelWeb* self = (LLPanelWeb*)user_data;
211 LLControlVariable* controlp =
212 (gHippoGridManager->getConnectedGrid()->isSecondLife())
213 ?
214 gSavedSettings.getControl("SearchURLQuery")
215 :
216 gSavedSettings.getControl("SearchURLQueryOpenSim");
217
218 if (controlp)
219 {
220 self->childSetValue("world_search_editor",controlp->getDefault().asString()) ;
221 }
222 else
223 {
224 llwarns << "SearchURLQuery or SearchURLQueryOpenSim missing from settings.xml - thats bad!" << llendl;
225 }
226
227}
228
229// static
230void LLPanelWeb::onClickClear(void* user_data)
231{
232 LLPanelWeb* self = (LLPanelWeb*)user_data;
233 self->childSetValue("world_search_editor","") ;
234}
diff --git a/linden/indra/newview/llpanelweb.h b/linden/indra/newview/llpanelweb.h
deleted file mode 100644
index 3282827..0000000
--- a/linden/indra/newview/llpanelweb.h
+++ /dev/null
@@ -1,60 +0,0 @@
1/**
2 * @file llpanelweb.h
3 * @brief Web browser preferences panel
4 *
5 * $LicenseInfo:firstyear=2005&license=viewergpl$
6 *
7 * Copyright (c) 2005-2009, Linden Research, Inc.
8 *
9 * Second Life Viewer Source Code
10 * The source code in this file ("Source Code") is provided by Linden Lab
11 * to you under the terms of the GNU General Public License, version 2.0
12 * ("GPL"), unless you have obtained a separate licensing agreement
13 * ("Other License"), formally executed by you and Linden Lab. Terms of
14 * the GPL can be found in doc/GPL-license.txt in this distribution, or
15 * online at http://secondlifegrid.net/programs/open_source/licensing/gplv2
16 *
17 * There are special exceptions to the terms and conditions of the GPL as
18 * it is applied to this Source Code. View the full text of the exception
19 * in the file doc/FLOSS-exception.txt in this software distribution, or
20 * online at
21 * http://secondlifegrid.net/programs/open_source/licensing/flossexception
22 *
23 * By copying, modifying or distributing this software, you acknowledge
24 * that you have read and understood your obligations described above,
25 * and agree to abide by those obligations.
26 *
27 * ALL LINDEN LAB SOURCE CODE IS PROVIDED "AS IS." LINDEN LAB MAKES NO
28 * WARRANTIES, EXPRESS, IMPLIED OR OTHERWISE, REGARDING ITS ACCURACY,
29 * COMPLETENESS OR PERFORMANCE.
30 * $/LicenseInfo$
31 */
32
33#ifndef LL_LLPANELWEB_H
34#define LL_LLPANELWEB_H
35
36#include "llpanel.h"
37
38class LLPanelWeb : public LLPanel
39{
40public:
41 LLPanelWeb();
42 ~LLPanelWeb();
43
44 BOOL postBuild();
45
46 void apply();
47 void cancel();
48
49private:
50 static void onClickClearCache(void*);
51 static void onClickClearCookies(void*);
52 static void onClickDefault(void* user_data);
53 static void onClickClear(void* user_data);
54 static bool callback_clear_browser_cache(const LLSD& notification, const LLSD& response);
55 static bool callback_clear_cookies(const LLSD& notification, const LLSD& response);
56 static void onCommitCookies(LLUICtrl* ctrl, void* data);
57 static void onCommitWebProxyEnabled(LLUICtrl* ctrl, void* data);
58};
59
60#endif
diff --git a/linden/indra/newview/llprefsadvanced.cpp b/linden/indra/newview/llprefsadvanced.cpp
index f1b2428..a9500f7 100644
--- a/linden/indra/newview/llprefsadvanced.cpp
+++ b/linden/indra/newview/llprefsadvanced.cpp
@@ -32,14 +32,11 @@
32 32
33#include "llcombobox.h" 33#include "llcombobox.h"
34 34
35#include "floatercommandline.h"
36#include "llagent.h" 35#include "llagent.h"
37#include "llprefsadvanced.h" 36#include "llprefsadvanced.h"
38#include "llviewercontrol.h" 37#include "llviewercontrol.h"
39#include "llviewermenu.h" 38#include "llviewermenu.h"
40#include "llvoavatar.h" 39#include "llvoavatar.h"
41#include "lgghunspell_wrapper.h"
42#include "lggautocorrectfloater.h"
43#include "llcombobox.h" 40#include "llcombobox.h"
44#include "llcolorswatch.h" 41#include "llcolorswatch.h"
45#include "llstartup.h" 42#include "llstartup.h"
@@ -57,9 +54,6 @@ LLPrefsAdvanced::LLPrefsAdvanced()
57 sInstance = this; 54 sInstance = this;
58 55
59 childSetCommitCallback("speed_rez_check", onCommitCheckBox, this); 56 childSetCommitCallback("speed_rez_check", onCommitCheckBox, this);
60 childSetCommitCallback("command_line_check", onCommitCheckBox, this);
61
62 childSetAction("command_line_btn", onClickCommandLine, this);
63} 57}
64 58
65LLPrefsAdvanced::~LLPrefsAdvanced() 59LLPrefsAdvanced::~LLPrefsAdvanced()
@@ -68,17 +62,6 @@ LLPrefsAdvanced::~LLPrefsAdvanced()
68 sInstance = NULL; 62 sInstance = NULL;
69} 63}
70 64
71void LLPrefsAdvanced::initHelpBtn(const std::string& name, const std::string& xml_alert)
72{
73 childSetAction(name, onClickHelp, new std::string(xml_alert));
74}
75
76void LLPrefsAdvanced::onClickHelp(void* data)
77{
78 std::string* xml_alert = (std::string*)data;
79 LLNotifications::instance().add(*xml_alert);
80}
81
82BOOL LLPrefsAdvanced::postBuild() 65BOOL LLPrefsAdvanced::postBuild()
83{ 66{
84 childSetValue("disable_log_screen_check", gSavedSettings.getBOOL("DisableLoginLogoutScreens")); 67 childSetValue("disable_log_screen_check", gSavedSettings.getBOOL("DisableLoginLogoutScreens"));
@@ -86,23 +69,15 @@ BOOL LLPrefsAdvanced::postBuild()
86 69
87 static BOOL* sShowClientNameTag = rebind_llcontrol<BOOL>("ShowClientNameTag", &gSavedSettings, true); 70 static BOOL* sShowClientNameTag = rebind_llcontrol<BOOL>("ShowClientNameTag", &gSavedSettings, true);
88 childSetValue("client_name_tag_check", (*sShowClientNameTag)); 71 childSetValue("client_name_tag_check", (*sShowClientNameTag));
89 static BOOL* sShowClientColor = rebind_llcontrol<BOOL>("ShowClientColor", &gSavedSettings, true);
90 childSetValue("client_name_color_check", (*sShowClientColor));
91 childSetValue("client_name_hover_check", gSavedSettings.getBOOL("ShowClientNameHoverTip")); 72 childSetValue("client_name_hover_check", gSavedSettings.getBOOL("ShowClientNameHoverTip"));
92 childSetValue("client_name_tag_broadcast_check", gSavedSettings.getBOOL("ShowMyClientTagToOthers")); 73 childSetValue("client_name_tag_broadcast_check", gSavedSettings.getBOOL("ShowMyClientTagToOthers"));
93 getChild<LLColorSwatchCtrl>("client_tag_color")->set(gSavedSettings.getColor4("ImprudenceTagColor"));
94 mClientTagColor = gSavedSettings.getColor4("ImprudenceTagColor");
95 74
96 childSetValue("http_texture_check", gSavedSettings.getBOOL("ImagePipelineUseHTTP"));
97 childSetValue("speed_rez_check", gSavedSettings.getBOOL("SpeedRez"));
98 childSetValue("speed_rez_interval_spinner", (F32)gSavedSettings.getU32("SpeedRezInterval"));
99 childSetValue("appearance_anim_check", gSavedSettings.getBOOL("AppearanceAnimate")); 75 childSetValue("appearance_anim_check", gSavedSettings.getBOOL("AppearanceAnimate"));
100 childSetValue("legacy_pie_menu_checkbox", gSavedSettings.getBOOL("LegacyPieEnabled")); 76 childSetValue("legacy_pie_menu_checkbox", gSavedSettings.getBOOL("LegacyPieEnabled"));
101 childSetValue("language_is_public", gSavedSettings.getBOOL("LanguageIsPublic")); 77 childSetValue("language_is_public", gSavedSettings.getBOOL("LanguageIsPublic"));
102 childSetValue("allow_mupose", gSavedSettings.getBOOL("AllowMUpose")); 78 childSetValue("allow_mupose", gSavedSettings.getBOOL("AllowMUpose"));
103 childSetValue("auto_close_ooc", gSavedSettings.getBOOL("AutoCloseOOC")); 79 childSetValue("auto_close_ooc", gSavedSettings.getBOOL("AutoCloseOOC"));
104 childSetValue("shadows_check", gSavedSettings.getBOOL("ShadowsEnabled")); 80 childSetValue("shadows_check", gSavedSettings.getBOOL("ShadowsEnabled"));
105 childSetValue("command_line_check", gSavedSettings.getBOOL("CmdLineChatbarEnabled"));
106 81
107 childSetValue("lightshare_combo", 82 childSetValue("lightshare_combo",
108 LLSD((S32)gSavedSettings.getU32("LightShareAllowed"))); 83 LLSD((S32)gSavedSettings.getU32("LightShareAllowed")));
@@ -110,19 +85,20 @@ BOOL LLPrefsAdvanced::postBuild()
110 LLComboBox* crash_behavior_combobox = getChild<LLComboBox>("crash_behavior_combobox"); 85 LLComboBox* crash_behavior_combobox = getChild<LLComboBox>("crash_behavior_combobox");
111 crash_behavior_combobox->setCurrentByIndex(gCrashSettings.getS32(CRASH_BEHAVIOR_SETTING)); 86 crash_behavior_combobox->setCurrentByIndex(gCrashSettings.getS32(CRASH_BEHAVIOR_SETTING));
112 87
113 getChild<LLComboBox>("EmeraldSpellBase")->setCommitCallback(onSpellBaseComboBoxCommit);
114 getChild<LLButton>("EmSpell_EditCustom")->setClickedCallback(onSpellEditCustom, this);
115 getChild<LLButton>("EmSpell_GetMore")->setClickedCallback(onSpellGetMore, this);
116 getChild<LLButton>("EmSpell_Add")->setClickedCallback(onSpellAdd, this);
117 getChild<LLButton>("EmSpell_Remove")->setClickedCallback(onSpellRemove, this);
118
119 getChild<LLButton>("ac_button")->setClickedCallback(onAutoCorrectButton,this);
120 initHelpBtn("EmeraldHelp_SpellCheck", "EmeraldHelp_SpellCheck");
121
122 getChild<LLButton>("reset_cloud_this_account")->setClickedCallback(onResetThisCloudButton,this); 88 getChild<LLButton>("reset_cloud_this_account")->setClickedCallback(onResetThisCloudButton,this);
123 getChild<LLButton>("save_cloud_this_account")->setClickedCallback(onSaveThisCloudButton,this); 89 getChild<LLButton>("save_cloud_this_account")->setClickedCallback(onSaveThisCloudButton,this);
124 getChild<LLButton>("save_cloud_any_account")->setClickedCallback(onSaveAnyoneCloudButton,this); 90 getChild<LLButton>("save_cloud_any_account")->setClickedCallback(onSaveAnyoneCloudButton,this);
125 91
92 childSetValue("automatic_fly", gSavedSettings.getBOOL("AutomaticFly"));
93
94 static BOOL* sEnableWindlightRemote = rebind_llcontrol<BOOL>("EnableWindlightRemote", &gSavedSettings, true);
95 childSetValue("toggle_windlight_control", (*sEnableWindlightRemote));
96 mWLControl = (*sEnableWindlightRemote);
97
98 childSetValue("script_errors_as_chat", gSavedSettings.getBOOL("ScriptErrorsAsChat"));
99 childSetValue("show_timestamps_check", gSavedSettings.getBOOL("ShowTimestamps"));
100 childSetValue("arrow_keys_move_avatar_check", gSavedSettings.getBOOL("ArrowKeysMoveAvatar"));
101
126 refresh(); 102 refresh();
127 103
128 return TRUE; 104 return TRUE;
@@ -133,18 +109,11 @@ void LLPrefsAdvanced::apply()
133 gSavedSettings.setBOOL("DisableLoginLogoutScreens", childGetValue("disable_log_screen_check")); 109 gSavedSettings.setBOOL("DisableLoginLogoutScreens", childGetValue("disable_log_screen_check"));
134 gSavedSettings.setBOOL("DisableTeleportScreens", childGetValue("disable_tp_screen_check")); 110 gSavedSettings.setBOOL("DisableTeleportScreens", childGetValue("disable_tp_screen_check"));
135 gSavedSettings.setBOOL("ShowClientNameTag", childGetValue("client_name_tag_check")); 111 gSavedSettings.setBOOL("ShowClientNameTag", childGetValue("client_name_tag_check"));
136 gSavedSettings.setBOOL("ShowClientColor", childGetValue("client_name_color_check"));
137 gSavedSettings.setBOOL("ShowClientNameHoverTip", childGetValue("client_name_hover_check")); 112 gSavedSettings.setBOOL("ShowClientNameHoverTip", childGetValue("client_name_hover_check"));
138 gSavedSettings.setColor4("ImprudenceTagColor", getChild<LLColorSwatchCtrl>("client_tag_color")->get());
139 mClientTagColor = getChild<LLColorSwatchCtrl>("client_tag_color")->get();
140 113
141 gSavedSettings.setBOOL("ImagePipelineUseHTTP", childGetValue("http_texture_check"));
142 gSavedSettings.setBOOL("SpeedRez", childGetValue("speed_rez_check"));
143 gSavedSettings.setU32("SpeedRezInterval", childGetValue("speed_rez_interval_spinner").asReal());
144 gSavedSettings.setBOOL("AppearanceAnimate", childGetValue("appearance_anim_check")); 114 gSavedSettings.setBOOL("AppearanceAnimate", childGetValue("appearance_anim_check"));
145 gSavedSettings.setBOOL("LanguageIsPublic", childGetValue("language_is_public")); 115 gSavedSettings.setBOOL("LanguageIsPublic", childGetValue("language_is_public"));
146 gSavedSettings.setBOOL("AllowMUpose", childGetValue("allow_mupose")); 116
147 gSavedSettings.setBOOL("AutoCloseOOC", childGetValue("auto_close_ooc"));
148 gSavedSettings.setU32("LightShareAllowed", 117 gSavedSettings.setU32("LightShareAllowed",
149 (U32)childGetValue("lightshare_combo").asInteger()); 118 (U32)childGetValue("lightshare_combo").asInteger());
150 119
@@ -210,8 +179,6 @@ void LLPrefsAdvanced::apply()
210 build_pie_menus(); 179 build_pie_menus();
211 } 180 }
212 181
213 gSavedSettings.setBOOL("CmdLineChatbarEnabled", childGetValue("command_line_check").asBoolean());
214
215 LLComboBox* crash_behavior_combobox = getChild<LLComboBox>("crash_behavior_combobox"); 182 LLComboBox* crash_behavior_combobox = getChild<LLComboBox>("crash_behavior_combobox");
216 gCrashSettings.setS32(CRASH_BEHAVIOR_SETTING, crash_behavior_combobox->getCurrentIndex()); 183 gCrashSettings.setS32(CRASH_BEHAVIOR_SETTING, crash_behavior_combobox->getCurrentIndex());
217 184
@@ -219,79 +186,34 @@ void LLPrefsAdvanced::apply()
219 { 186 {
220 onSaveThisCloudButton(NULL); 187 onSaveThisCloudButton(NULL);
221 } 188 }
189
190 gSavedSettings.setBOOL("AutomaticFly", childGetValue("automatic_fly"));
191
192 // windlight remote
193 static BOOL* sEnableWindlightRemote = rebind_llcontrol<BOOL>("EnableWindlightRemote", &gSavedSettings, true);
194 mWLControl = (*sEnableWindlightRemote);
195
196 gSavedSettings.setBOOL("AllowMUpose", childGetValue("allow_mupose"));
197 gSavedSettings.setBOOL("AutoCloseOOC", childGetValue("auto_close_ooc"));
198 gSavedSettings.setBOOL("ArrowKeysMoveAvatar", childGetValue("arrow_keys_move_avatar_check"));
199 gSavedSettings.setBOOL("ScriptErrorsAsChat", childGetValue("script_errors_as_chat"));
200 gSavedSettings.setBOOL("ShowTimestamps", childGetValue("show_timestamps_check"));
222} 201}
223 202
224void LLPrefsAdvanced::cancel() 203void LLPrefsAdvanced::cancel()
225{ 204{
226 gSavedSettings.setColor4("ImprudenceTagColor", mClientTagColor);
227// llwarns << "cancel" << llendl; 205// llwarns << "cancel" << llendl;
228// cool - "ok" is also cancel 206// cool - "ok" is also cancel
229// LLVOAvatar::sCloud.mPartData.mStartColor = mCloudStartColor; 207// LLVOAvatar::sCloud.mPartData.mStartColor = mCloudStartColor;
230// LLVOAvatar::sCloud.mPartData.mEndColor = mCloudEndColor; 208// LLVOAvatar::sCloud.mPartData.mEndColor = mCloudEndColor;
209
210 gSavedSettings.setBOOL("EnableWindlightRemote", mWLControl);
231} 211}
232 212
233void LLPrefsAdvanced::refresh() 213void LLPrefsAdvanced::refresh()
234{ 214{
235 if (childGetValue("speed_rez_check").asBoolean())
236 {
237 childEnable("speed_rez_interval_spinner");
238 childEnable("speed_rez_seconds_text");
239 }
240 else
241 {
242 childDisable("speed_rez_interval_spinner");
243 childDisable("speed_rez_seconds_text");
244 }
245
246 if (childGetValue("command_line_check").asBoolean())
247 {
248 childEnable("command_line_btn");
249 }
250 else
251 {
252 childDisable("command_line_btn");
253 }
254
255 LLComboBox* comboBox = getChild<LLComboBox>("EmeraldSpellBase");
256 if (comboBox != NULL)
257 {
258 comboBox->removeall();
259 std::vector<std::string> names = glggHunSpell->getDicts();
260 for (int i = 0; i < (int)names.size(); i++)
261 {
262 comboBox->add(names[i]);
263 }
264 comboBox->setSimple(gSavedSettings.getString("EmeraldSpellBase"));
265 }
266 comboBox = getChild<LLComboBox>("EmSpell_Avail");
267 if (comboBox != NULL)
268 {
269 LLSD selected = comboBox->getSelectedValue();
270 comboBox->removeall();
271 std::vector<std::string> names = glggHunSpell->getAvailDicts();
272 for (int i = 0; i < (int)names.size(); i++)
273 {
274 comboBox->add(names[i]);
275 }
276 comboBox->selectByValue(selected);
277 }
278 comboBox = getChild<LLComboBox>("EmSpell_Installed");
279 if (comboBox != NULL)
280 {
281 LLSD selected = comboBox->getSelectedValue();
282 comboBox->removeall();
283 std::vector<std::string> names = glggHunSpell->getInstalledDicts();
284 for (int i = 0; i < (int)names.size(); i++)
285 {
286 comboBox->add(names[i]);
287 }
288 comboBox->selectByValue(selected);
289 }
290
291
292 bool is_logged_in = LLStartUp::isLoggedIn(); 215 bool is_logged_in = LLStartUp::isLoggedIn();
293 setParticleControls(is_logged_in); 216 setParticleControls(is_logged_in);
294
295} 217}
296 218
297void LLPrefsAdvanced::draw() 219void LLPrefsAdvanced::draw()
@@ -363,65 +285,10 @@ void LLPrefsAdvanced::setParticleControls(bool is_logged_in)
363void LLPrefsAdvanced::onCommitCheckBox(LLUICtrl* ctrl, void* user_data) 285void LLPrefsAdvanced::onCommitCheckBox(LLUICtrl* ctrl, void* user_data)
364{ 286{
365 LLPrefsAdvanced* self = (LLPrefsAdvanced*)user_data; 287 LLPrefsAdvanced* self = (LLPrefsAdvanced*)user_data;
366 self->refresh(); 288 if (self)
367}
368
369void LLPrefsAdvanced::onSpellAdd(void* data)
370{
371 LLPrefsAdvanced* panel = (LLPrefsAdvanced*)data;
372 if(panel)
373 { 289 {
374 glggHunSpell->addButton(panel->childGetValue("EmSpell_Avail").asString()); 290 self->refresh();
375 } 291 }
376 panel->refresh();
377}
378
379void LLPrefsAdvanced::onSpellRemove(void* data)
380{
381 LLPrefsAdvanced* panel = (LLPrefsAdvanced*)data;
382 if(panel)
383 {
384 glggHunSpell->removeButton(panel->childGetValue("EmSpell_Installed").asString());
385 }
386 panel->refresh();
387}
388
389void LLPrefsAdvanced::onSpellGetMore(void* data)
390{
391 glggHunSpell->getMoreButton(data);
392}
393
394void LLPrefsAdvanced::onSpellEditCustom(void* data)
395{
396 glggHunSpell->editCustomButton();
397}
398
399void LLPrefsAdvanced::onSpellBaseComboBoxCommit(LLUICtrl* ctrl, void* userdata)
400{
401
402 LLComboBox* box = (LLComboBox*)ctrl;
403 if (box)
404 {
405 glggHunSpell->newDictSelection(box->getValue().asString());
406 //LLPanelEmerald* panel = (LLPanelEmerald*)userdata;//box->getParent();
407 if (sInstance)
408 {
409 sInstance->refresh();
410 }
411 }
412 //LLPanelEmerald* panel = (LLPanelEmerald*)userdata;
413 //if(panel)panel->refresh();
414}
415
416void LLPrefsAdvanced::onAutoCorrectButton(void * data)
417{
418 lggAutoCorrectFloaterStart::show(TRUE,data);
419}
420
421void LLPrefsAdvanced::onClickCommandLine(void* data)
422{
423 FloaterCommandLine::getInstance()->open();
424 FloaterCommandLine::getInstance()->center();
425} 292}
426 293
427void LLPrefsAdvanced::onResetThisCloudButton(void * data) 294void LLPrefsAdvanced::onResetThisCloudButton(void * data)
diff --git a/linden/indra/newview/llprefsadvanced.h b/linden/indra/newview/llprefsadvanced.h
index e4febcc..b863db3 100644
--- a/linden/indra/newview/llprefsadvanced.h
+++ b/linden/indra/newview/llprefsadvanced.h
@@ -51,30 +51,19 @@ private:
51 static LLPrefsAdvanced* sInstance; 51 static LLPrefsAdvanced* sInstance;
52 52
53 static void onCommitCheckBox(LLUICtrl* ctrl, void* user_data); 53 static void onCommitCheckBox(LLUICtrl* ctrl, void* user_data);
54 static void onClickCommandLine(void* data);
55
56 static void onSpellAdd(void* data);
57 static void onSpellRemove(void* data);
58 static void onSpellGetMore(void* data);
59 static void onSpellEditCustom(void* data);
60 static void onSpellBaseComboBoxCommit(LLUICtrl* ctrl, void* userdata);
61 static void onAutoCorrectButton(void * data);
62 static void onResetThisCloudButton(void * data); 54 static void onResetThisCloudButton(void * data);
63 static void onSaveThisCloudButton(void * data); 55 static void onSaveThisCloudButton(void * data);
64 static void onSaveAnyoneCloudButton(void * data); 56 static void onSaveAnyoneCloudButton(void * data);
65 57
66 LLColor4 mClientTagColor;
67
68protected: 58protected:
69 void setParticleControls(bool is_logged_in); 59 void setParticleControls(bool is_logged_in);
70 void initHelpBtn(const std::string& name, const std::string& xml_alert);
71 static void onClickHelp(void* data);
72 60
73private: 61private:
74 bool mWasLoggedIn; 62 bool mWasLoggedIn;
75 LLColor4 mCloudStartColor; 63 LLColor4 mCloudStartColor;
76 LLColor4 mCloudEndColor; 64 LLColor4 mCloudEndColor;
77 LLUUID mCloudTextureID; 65 LLUUID mCloudTextureID;
66 BOOL mWLControl;
78}; 67};
79 68
80#endif // LLPREFSADVANCED_H 69#endif // LLPREFSADVANCED_H
diff --git a/linden/indra/newview/llprefschat.cpp b/linden/indra/newview/llprefschat.cpp
index 5f74a25..9490ba2 100644
--- a/linden/indra/newview/llprefschat.cpp
+++ b/linden/indra/newview/llprefschat.cpp
@@ -33,13 +33,20 @@
33 33
34#include "llviewerprecompiledheaders.h" 34#include "llviewerprecompiledheaders.h"
35 35
36#include "llcombobox.h"
37#include "llpanel.h"
38#include "llstylemap.h"
39#include "lluictrlfactory.h"
40
41#include "floatercommandline.h"
42#include "llagent.h"
36#include "llchatbar.h" 43#include "llchatbar.h"
37#include "llfloaterchat.h" 44#include "llfloaterchat.h"
45#include "lgghunspell_wrapper.h"
46#include "lggautocorrectfloater.h"
38#include "llprefschat.h" 47#include "llprefschat.h"
39#include "llviewercontrol.h" 48#include "llviewercontrol.h"
40#include "lluictrlfactory.h" 49#include "llviewermessage.h"
41#include "llradiogroup.h"
42#include "llstylemap.h"
43 50
44class LLPrefsChatImpl : public LLPanel 51class LLPrefsChatImpl : public LLPanel
45{ 52{
@@ -47,44 +54,53 @@ public:
47 LLPrefsChatImpl(); 54 LLPrefsChatImpl();
48 /*virtual*/ ~LLPrefsChatImpl(){}; 55 /*virtual*/ ~LLPrefsChatImpl(){};
49 56
57 /*virtual*/ BOOL postBuild();
58
50 void apply(); 59 void apply();
51 void cancel(); 60 void cancel();
61 void refresh();
62 void setPersonalInfo(bool im_via_email, const std::string& email);
63 void initHelpBtn(const std::string& name, const std::string& xml_alert);
64
65 static void onAutoCorrectButton(void * data);
66 static void onClickHelp(void* data);
67 static void onClickCommandLine(void* data);
68 static void onCommitCheckBox(LLUICtrl* ctrl, void* user_data);
69 static void onSpellAdd(void* data);
70 static void onSpellRemove(void* data);
71 static void onSpellGetMore(void* data);
72 static void onSpellEditCustom(void* data);
73 static void onSpellBaseComboBoxCommit(LLUICtrl* ctrl, void* userdata);
74
75protected:
76 bool mOriginalIMViaEmail;
77 bool mGotPersonalInfo;
52 78
53private: 79private:
54 void refreshValues(); 80 bool mChatChannel;
55 S32 mChatSize;
56 F32 mChatPersist;
57 S32 mChatMaxLines;
58 BOOL mChatFullWidth;
59 BOOL mCloseChatOnReturn;
60 BOOL mArrowKeysMoveAvatar;
61 BOOL mShowTimestamps;
62 BOOL mPlayTypingAnim;
63 BOOL mChatBubbles;
64 BOOL mLocalChatBubbles;
65 BOOL mScriptErrorAsChat;
66 BOOL mChatChannel;
67 F32 mConsoleOpacity;
68 F32 mBubbleOpacity;
69 std::string mTranslateLanguage;
70 BOOL mTranslateChat;
71}; 81};
72 82
73LLPrefsChatImpl::LLPrefsChatImpl() 83LLPrefsChatImpl::LLPrefsChatImpl()
74 : LLPanel(std::string("Chat Panel")) 84 : LLPanel(std::string("Chat Panel")),
85 mChatChannel(false),
86 mOriginalIMViaEmail(false),
87 mGotPersonalInfo(false)
75{ 88{
76 refreshValues(); // initialize member data from saved settings
77
78 LLUICtrlFactory::getInstance()->buildPanel(this, "panel_preferences_chat.xml"); 89 LLUICtrlFactory::getInstance()->buildPanel(this, "panel_preferences_chat.xml");
90}
91
92BOOL LLPrefsChatImpl::postBuild()
93{
94 requires("send_im_to_email");
95 childSetLabelArg("send_im_to_email", "[EMAIL]", getString("log_in_to_change"));
96
97 // Don't enable these until we get personal data
98 childSetEnabled("send_im_to_email", false);
79 99
80 getChild<LLRadioGroup>("chat_font_size")->setSelectedIndex(gSavedSettings.getS32("ChatFontSize")); 100 getChild<LLComboBox>("chat_font_size")->setValue(gSavedSettings.getS32("ChatFontSize"));
81 childSetValue("fade_chat_time", gSavedSettings.getF32("ChatPersistTime")); 101 childSetValue("fade_chat_time", gSavedSettings.getF32("ChatPersistTime"));
82 childSetValue("max_chat_count", gSavedSettings.getS32("ConsoleMaxLines")); 102 childSetValue("max_chat_count", gSavedSettings.getS32("ConsoleMaxLines"));
83 103
84 childSetValue("arrow_keys_move_avatar_check", gSavedSettings.getBOOL("ArrowKeysMoveAvatar"));
85 childSetValue("show_timestamps_check", gSavedSettings.getBOOL("ChatShowTimestamps"));
86 childSetValue("script_errors_as_chat", gSavedSettings.getBOOL("ScriptErrorsAsChat"));
87
88 childSetValue("bubble_text_chat", gSavedSettings.getBOOL("UseChatBubbles")); 104 childSetValue("bubble_text_chat", gSavedSettings.getBOOL("UseChatBubbles"));
89 childSetValue("local_bubble_text_chat", gSavedSettings.getBOOL("UseLocalChatWithBubbles")); 105 childSetValue("local_bubble_text_chat", gSavedSettings.getBOOL("UseLocalChatWithBubbles"));
90 childSetValue("chat_full_width_check", gSavedSettings.getBOOL("ChatFullWidth")); 106 childSetValue("chat_full_width_check", gSavedSettings.getBOOL("ChatFullWidth"));
@@ -95,59 +111,89 @@ LLPrefsChatImpl::LLPrefsChatImpl()
95 childSetValue("bubble_chat_opacity", gSavedSettings.getF32("ChatBubbleOpacity")); 111 childSetValue("bubble_chat_opacity", gSavedSettings.getF32("ChatBubbleOpacity"));
96 childSetValue("translate_language_combobox", gSavedSettings.getString("TranslateLanguage")); 112 childSetValue("translate_language_combobox", gSavedSettings.getString("TranslateLanguage"));
97 childSetValue("translate_chat", gSavedSettings.getBOOL("TranslateChat")); 113 childSetValue("translate_chat", gSavedSettings.getBOOL("TranslateChat"));
98}
99 114
100void LLPrefsChatImpl::refreshValues()
101{
102 //set values
103 mChatSize = gSavedSettings.getS32("ChatFontSize");
104 mChatPersist = gSavedSettings.getF32("ChatPersistTime");
105 mChatMaxLines = gSavedSettings.getS32("ConsoleMaxLines");
106 mArrowKeysMoveAvatar = gSavedSettings.getBOOL("ArrowKeysMoveAvatar");
107 mShowTimestamps = gSavedSettings.getBOOL("ChatShowTimestamps");
108 mScriptErrorAsChat = gSavedSettings.getBOOL("ScriptErrorsAsChat");
109 mChatBubbles = gSavedSettings.getBOOL("UseChatBubbles");
110 mLocalChatBubbles = gSavedSettings.getBOOL("UseLocalChatWithBubbles");
111 mChatFullWidth = gSavedSettings.getBOOL("ChatFullWidth");
112 mCloseChatOnReturn = gSavedSettings.getBOOL("CloseChatOnReturn");
113 mPlayTypingAnim = gSavedSettings.getBOOL("PlayTypingAnim");
114 mChatChannel = gSavedSettings.getBOOL("ChatChannelSelect"); 115 mChatChannel = gSavedSettings.getBOOL("ChatChannelSelect");
115 mConsoleOpacity = gSavedSettings.getF32("ConsoleBackgroundOpacity"); 116
116 mTranslateLanguage = gSavedSettings.getString("TranslateLanguage"); 117 childSetValue("command_line_check", gSavedSettings.getBOOL("CmdLineChatbarEnabled"));
117 mTranslateChat = gSavedSettings.getBOOL("TranslateChat"); 118 childSetCommitCallback("command_line_check", onCommitCheckBox, this);
118 static F32* sChatBubbleOpacity = rebind_llcontrol<F32>("ChatBubbleOpacity", &gSavedSettings, true); 119 childSetAction("command_line_btn", onClickCommandLine, this);
119 mBubbleOpacity = *sChatBubbleOpacity; 120
121 getChild<LLComboBox>("EmeraldSpellBase")->setCommitCallback(onSpellBaseComboBoxCommit);
122 getChild<LLButton>("EmSpell_EditCustom")->setClickedCallback(onSpellEditCustom, this);
123 getChild<LLButton>("EmSpell_GetMore")->setClickedCallback(onSpellGetMore, this);
124 getChild<LLButton>("EmSpell_Add")->setClickedCallback(onSpellAdd, this);
125 getChild<LLButton>("EmSpell_Remove")->setClickedCallback(onSpellRemove, this);
126
127 getChild<LLButton>("ac_button")->setClickedCallback(onAutoCorrectButton, this);
128 initHelpBtn("EmeraldHelp_SpellCheck", "EmeraldHelp_SpellCheck");
129
130 childSetValue("include_im_in_chat_console", gSavedSettings.getBOOL("IMInChatConsole"));
131 childSetValue("include_im_in_chat_history", gSavedSettings.getBOOL("IMInChatHistory"));
132 childSetValue("vertical-imtabs-toggle", gSavedSettings.getBOOL("VerticalIMTabs"));
133
134 refresh();
135
136 return TRUE;
137}
138
139void LLPrefsChatImpl::refresh()
140{
141 if (childGetValue("command_line_check").asBoolean())
142 {
143 childEnable("command_line_btn");
144 }
145 else
146 {
147 childDisable("command_line_btn");
148 }
149
150 LLComboBox* comboBox = getChild<LLComboBox>("EmeraldSpellBase");
151 if (comboBox != NULL)
152 {
153 comboBox->removeall();
154 std::vector<std::string> names = glggHunSpell->getDicts();
155 for (int i = 0; i < (int)names.size(); i++)
156 {
157 comboBox->add(names[i]);
158 }
159 comboBox->setSimple(gSavedSettings.getString("EmeraldSpellBase"));
160 }
161 comboBox = getChild<LLComboBox>("EmSpell_Avail");
162 if (comboBox != NULL)
163 {
164 LLSD selected = comboBox->getSelectedValue();
165 comboBox->removeall();
166 std::vector<std::string> names = glggHunSpell->getAvailDicts();
167 for (int i = 0; i < (int)names.size(); i++)
168 {
169 comboBox->add(names[i]);
170 }
171 comboBox->selectByValue(selected);
172 }
173 comboBox = getChild<LLComboBox>("EmSpell_Installed");
174 if (comboBox != NULL)
175 {
176 LLSD selected = comboBox->getSelectedValue();
177 comboBox->removeall();
178 std::vector<std::string> names = glggHunSpell->getInstalledDicts();
179 for (int i = 0; i < (int)names.size(); i++)
180 {
181 comboBox->add(names[i]);
182 }
183 comboBox->selectByValue(selected);
184 }
120} 185}
121 186
122void LLPrefsChatImpl::cancel() 187void LLPrefsChatImpl::cancel()
123{ 188{
124 gSavedSettings.setS32("ChatFontSize", mChatSize);
125 gSavedSettings.setF32("ChatPersistTime", mChatPersist);
126 gSavedSettings.setS32("ConsoleMaxLines", mChatMaxLines);
127 gSavedSettings.setBOOL("ArrowKeysMoveAvatar", mArrowKeysMoveAvatar);
128 gSavedSettings.setBOOL("ChatShowTimestamps", mShowTimestamps);
129 gSavedSettings.setBOOL("ScriptErrorsAsChat", mScriptErrorAsChat);
130 gSavedSettings.setBOOL("UseChatBubbles", mChatBubbles);
131 gSavedSettings.setBOOL("UseLocalChatWithBubbles", mLocalChatBubbles);
132 gSavedSettings.setBOOL("ChatFullWidth", mChatFullWidth);
133 gSavedSettings.setBOOL("CloseChatOnReturn", mCloseChatOnReturn);
134 gSavedSettings.setBOOL("PlayTypingAnim", mPlayTypingAnim);
135 gSavedSettings.setBOOL("ChatChannelSelect", mChatChannel);
136 gSavedSettings.setF32("ConsoleBackgroundOpacity", mConsoleOpacity);
137 gSavedSettings.setF32("ChatBubbleOpacity", mBubbleOpacity);
138 gSavedSettings.setString("TranslateLanguage", mTranslateLanguage);
139 gSavedSettings.setBOOL("TranslateChat", mTranslateChat);
140} 189}
141 190
142void LLPrefsChatImpl::apply() 191void LLPrefsChatImpl::apply()
143{ 192{
144 gSavedSettings.setS32("ChatFontSize", getChild<LLRadioGroup>("chat_font_size")->getSelectedIndex()); 193 gSavedSettings.setS32("ChatFontSize", getChild<LLComboBox>("chat_font_size")->getValue().asInteger());
145 gSavedSettings.setF32("ChatPersistTime", childGetValue("fade_chat_time").asReal()); 194 gSavedSettings.setF32("ChatPersistTime", childGetValue("fade_chat_time").asReal());
146 gSavedSettings.setS32("ConsoleMaxLines", childGetValue("max_chat_count")); 195 gSavedSettings.setS32("ConsoleMaxLines", childGetValue("max_chat_count"));
147 196
148 gSavedSettings.setBOOL("ArrowKeysMoveAvatar", childGetValue("arrow_keys_move_avatar_check"));
149 gSavedSettings.setBOOL("ChatShowTimestamps", childGetValue("show_timestamps_check"));
150 gSavedSettings.setBOOL("ScriptErrorsAsChat", childGetValue("script_errors_as_chat"));
151 gSavedSettings.setBOOL("UseChatBubbles", childGetValue("bubble_text_chat")); 197 gSavedSettings.setBOOL("UseChatBubbles", childGetValue("bubble_text_chat"));
152 gSavedSettings.setBOOL("UseLocalChatWithBubbles", childGetValue("local_bubble_text_chat")); 198 gSavedSettings.setBOOL("UseLocalChatWithBubbles", childGetValue("local_bubble_text_chat"));
153 gSavedSettings.setBOOL("ChatFullWidth", childGetValue("chat_full_width_check")); 199 gSavedSettings.setBOOL("ChatFullWidth", childGetValue("chat_full_width_check"));
@@ -160,7 +206,7 @@ void LLPrefsChatImpl::apply()
160 gSavedSettings.setString("TranslateLanguage", childGetValue("translate_language_combobox")); 206 gSavedSettings.setString("TranslateLanguage", childGetValue("translate_language_combobox"));
161 gSavedSettings.setBOOL("TranslateChat", childGetValue("translate_chat")); 207 gSavedSettings.setBOOL("TranslateChat", childGetValue("translate_chat"));
162 208
163 BOOL chan_check = childGetValue("toggle_channel_control"); 209 bool chan_check = childGetValue("toggle_channel_control");
164 gSavedSettings.setBOOL("ChatChannelSelect", chan_check); 210 gSavedSettings.setBOOL("ChatChannelSelect", chan_check);
165 if (mChatChannel != chan_check) 211 if (mChatChannel != chan_check)
166 { 212 {
@@ -172,7 +218,138 @@ void LLPrefsChatImpl::apply()
172 mChatChannel = chan_check; 218 mChatChannel = chan_check;
173 } 219 }
174 220
175 refreshValues(); // member values become the official values and cancel becomes a no-op. 221 gSavedSettings.setBOOL("CmdLineChatbarEnabled", childGetValue("command_line_check").asBoolean());
222
223 gSavedSettings.setBOOL("VerticalIMTabs", childGetValue("vertical-imtabs-toggle").asBoolean());
224 gSavedSettings.setBOOL("IMInChatConsole", childGetValue("include_im_in_chat_console").asBoolean());
225 gSavedSettings.setBOOL("IMInChatHistory", childGetValue("include_im_in_chat_history").asBoolean());
226
227 if (mGotPersonalInfo)
228 {
229 bool new_im_via_email = childGetValue("send_im_to_email").asBoolean();
230
231 if (new_im_via_email != mOriginalIMViaEmail)
232 {
233 LLMessageSystem* msg = gMessageSystem;
234 msg->newMessageFast(_PREHASH_UpdateUserInfo);
235 msg->nextBlockFast(_PREHASH_AgentData);
236 msg->addUUIDFast(_PREHASH_AgentID, gAgent.getID());
237 msg->addUUIDFast(_PREHASH_SessionID, gAgent.getSessionID());
238 msg->nextBlockFast(_PREHASH_UserData);
239 msg->addBOOLFast(_PREHASH_IMViaEMail, new_im_via_email);
240 gAgent.sendReliableMessage();
241 }
242 }
243
244 // Spell checking prefs aren't here because Emerald never supported the cancel button. We should fix this -- MC
245}
246
247// Enable and set the value of settings recieved from the sim in AgentInfoReply
248void LLPrefsChatImpl::setPersonalInfo(bool im_via_email, const std::string& email)
249{
250 mGotPersonalInfo = true;
251 mOriginalIMViaEmail = im_via_email;
252
253 childEnable("send_im_to_email");
254 childSetValue("send_im_to_email", im_via_email);
255
256 // Truncate the e-mail address if it's too long (to prevent going off
257 // the edge of the dialog).
258 std::string display_email(email);
259 if(display_email.size() > 30)
260 {
261 display_email.resize(30);
262 display_email += "...";
263 }
264 else if (display_email.empty())
265 {
266 display_email = getString("default_email_used");
267 }
268 childSetLabelArg("send_im_to_email", "[EMAIL]", display_email);
269}
270
271// static
272void LLPrefsChatImpl::onSpellAdd(void* data)
273{
274 LLPrefsChatImpl* panel = (LLPrefsChatImpl*)data;
275 if (panel)
276 {
277 glggHunSpell->addButton(panel->childGetValue("EmSpell_Avail").asString());
278 panel->refresh();
279 }
280}
281
282// static
283void LLPrefsChatImpl::onSpellRemove(void* data)
284{
285 LLPrefsChatImpl* panel = (LLPrefsChatImpl*)data;
286 if (panel)
287 {
288 glggHunSpell->removeButton(panel->childGetValue("EmSpell_Installed").asString());
289 panel->refresh();
290 }
291}
292
293// static
294void LLPrefsChatImpl::onSpellGetMore(void* data)
295{
296 glggHunSpell->getMoreButton(data);
297}
298
299// static
300void LLPrefsChatImpl::onSpellEditCustom(void* data)
301{
302 glggHunSpell->editCustomButton();
303}
304
305// static
306void LLPrefsChatImpl::onSpellBaseComboBoxCommit(LLUICtrl* ctrl, void* userdata)
307{
308 LLComboBox* box = (LLComboBox*)ctrl;
309 if (box)
310 {
311 glggHunSpell->newDictSelection(box->getValue().asString());
312 }
313 LLPrefsChatImpl* panel = (LLPrefsChatImpl*)userdata;
314 if (panel)
315 {
316 panel->refresh();
317 }
318}
319
320// static
321void LLPrefsChatImpl::onAutoCorrectButton(void * data)
322{
323 lggAutoCorrectFloaterStart::show(TRUE,data);
324}
325
326// static
327void LLPrefsChatImpl::onClickCommandLine(void* data)
328{
329 FloaterCommandLine::getInstance()->open();
330 FloaterCommandLine::getInstance()->center();
331}
332
333//static
334void LLPrefsChatImpl::onCommitCheckBox(LLUICtrl* ctrl, void* user_data)
335{
336 LLPrefsChatImpl* self = (LLPrefsChatImpl*)user_data;
337 if (self)
338 {
339 self->refresh();
340 }
341}
342
343void LLPrefsChatImpl::initHelpBtn(const std::string& name, const std::string& xml_alert)
344{
345 childSetAction(name, onClickHelp, new std::string(xml_alert));
346}
347
348// static
349void LLPrefsChatImpl::onClickHelp(void* data)
350{
351 std::string* xml_alert = (std::string*)data;
352 LLNotifications::instance().add(*xml_alert);
176} 353}
177 354
178//--------------------------------------------------------------------------- 355//---------------------------------------------------------------------------
@@ -197,6 +374,11 @@ void LLPrefsChat::cancel()
197 impl.cancel(); 374 impl.cancel();
198} 375}
199 376
377void LLPrefsChat::setPersonalInfo(bool im_via_email, const std::string& email)
378{
379 impl.setPersonalInfo(im_via_email, email);
380}
381
200LLPanel* LLPrefsChat::getPanel() 382LLPanel* LLPrefsChat::getPanel()
201{ 383{
202 return &impl; 384 return &impl;
diff --git a/linden/indra/newview/llprefschat.h b/linden/indra/newview/llprefschat.h
index 86718a8..64bfb36 100644
--- a/linden/indra/newview/llprefschat.h
+++ b/linden/indra/newview/llprefschat.h
@@ -44,6 +44,7 @@ public:
44 44
45 void apply(); 45 void apply();
46 void cancel(); 46 void cancel();
47 void setPersonalInfo(bool im_via_email, const std::string& email);
47 48
48 LLPanel* getPanel(); 49 LLPanel* getPanel();
49 50
diff --git a/linden/indra/newview/llprefscolors.cpp b/linden/indra/newview/llprefscolors.cpp
index b0bc345..0b4caf5 100644
--- a/linden/indra/newview/llprefscolors.cpp
+++ b/linden/indra/newview/llprefscolors.cpp
@@ -80,6 +80,12 @@ BOOL LLPrefsColors::postBuild()
80 childSetCommitCallback("HighlightOwnNameInChat", onCommitCheckSelfName, this); 80 childSetCommitCallback("HighlightOwnNameInChat", onCommitCheckSelfName, this);
81 childSetCommitCallback("HighlightFriendsChat", onCommitCheckFriends, this); 81 childSetCommitCallback("HighlightFriendsChat", onCommitCheckFriends, this);
82 82
83 getChild<LLColorSwatchCtrl>("effect_color_swatch")->set(gSavedSettings.getColor4("EffectColor"));
84
85 getChild<LLColorSwatchCtrl>("client_tag_color")->set(gSavedSettings.getColor4("ImprudenceTagColor"));
86 static BOOL* sShowClientColor = rebind_llcontrol<BOOL>("ShowClientColor", &gSavedSettings, true);
87 childSetValue("client_name_color_check", (*sShowClientColor));
88
83 return TRUE; 89 return TRUE;
84} 90}
85 91
@@ -96,6 +102,8 @@ void LLPrefsColors::refreshColors()
96 mHTMLLinkColor = gSavedSettings.getColor4("HTMLLinkColor"); 102 mHTMLLinkColor = gSavedSettings.getColor4("HTMLLinkColor");
97 mFriendsChatColor = gSavedSettings.getColor4("FriendsChatColor"); 103 mFriendsChatColor = gSavedSettings.getColor4("FriendsChatColor");
98 mOwnNameChatColor = gSavedSettings.getColor4("OwnNameChatColor"); 104 mOwnNameChatColor = gSavedSettings.getColor4("OwnNameChatColor");
105 mEffectColor = gSavedSettings.getColor4("EffectColor");
106 mClientTagColor = gSavedSettings.getColor4("ImprudenceTagColor");
99} 107}
100 108
101// static 109// static
@@ -113,9 +121,6 @@ void LLPrefsColors::updateSelfCheck()
113 childSetEnabled("nick01", highlight_names_enabled); 121 childSetEnabled("nick01", highlight_names_enabled);
114 childSetEnabled("nick02", highlight_names_enabled); 122 childSetEnabled("nick02", highlight_names_enabled);
115 childSetEnabled("nick03", highlight_names_enabled); 123 childSetEnabled("nick03", highlight_names_enabled);
116 childSetEnabled("nick01_text", highlight_names_enabled);
117 childSetEnabled("nick02_text", highlight_names_enabled);
118 childSetEnabled("nick03_text", highlight_names_enabled);
119} 124}
120 125
121// static 126// static
@@ -130,6 +135,18 @@ void LLPrefsColors::updateFriendsCheck()
130 getChild<LLColorSwatchCtrl>("FriendsChatColor")->setEnabled(childGetValue("HighlightFriendsChat")); 135 getChild<LLColorSwatchCtrl>("FriendsChatColor")->setEnabled(childGetValue("HighlightFriendsChat"));
131} 136}
132 137
138// static
139void LLPrefsColors::onCommitCheckClient(LLUICtrl* ctrl, void* userdata)
140{
141 LLPrefsColors* self = (LLPrefsColors*)userdata;
142 self->updateClientCheck();
143}
144
145void LLPrefsColors::updateClientCheck()
146{
147 getChild<LLColorSwatchCtrl>("client_tag_color")->setEnabled(childGetValue("client_name_color_checkt"));
148}
149
133void LLPrefsColors::cancel() 150void LLPrefsColors::cancel()
134{ 151{
135 gSavedSettings.setColor4("SystemChatColor", mSystemChatColor); 152 gSavedSettings.setColor4("SystemChatColor", mSystemChatColor);
@@ -143,6 +160,8 @@ void LLPrefsColors::cancel()
143 gSavedSettings.setColor4("HTMLLinkColor", mHTMLLinkColor); 160 gSavedSettings.setColor4("HTMLLinkColor", mHTMLLinkColor);
144 gSavedSettings.setColor4("FriendsChatColor", mFriendsChatColor); 161 gSavedSettings.setColor4("FriendsChatColor", mFriendsChatColor);
145 gSavedSettings.setColor4("OwnNameChatColor", mOwnNameChatColor); 162 gSavedSettings.setColor4("OwnNameChatColor", mOwnNameChatColor);
163 gSavedSettings.setColor4("EffectColor", mEffectColor);
164 gSavedSettings.setColor4("ImprudenceTagColor", mClientTagColor);
146} 165}
147 166
148void LLPrefsColors::apply() 167void LLPrefsColors::apply()
@@ -177,5 +196,10 @@ void LLPrefsColors::apply()
177 boost::trim(nick03); 196 boost::trim(nick03);
178 gSavedSettings.setString("HighlightNickname03", nick03); 197 gSavedSettings.setString("HighlightNickname03", nick03);
179 198
199 gSavedSettings.setColor4("EffectColor", childGetValue("effect_color_swatch"));
200
201 gSavedSettings.setBOOL("ShowClientColor", childGetValue("client_name_color_check"));
202 gSavedSettings.setColor4("ImprudenceTagColor", getChild<LLColorSwatchCtrl>("client_tag_color")->get());
203
180 refreshColors(); // member values become the official values and cancel becomes a no-op. 204 refreshColors(); // member values become the official values and cancel becomes a no-op.
181} 205}
diff --git a/linden/indra/newview/llprefscolors.h b/linden/indra/newview/llprefscolors.h
index 70bda89..d580add 100644
--- a/linden/indra/newview/llprefscolors.h
+++ b/linden/indra/newview/llprefscolors.h
@@ -47,9 +47,11 @@ public:
47private: 47private:
48 static void onCommitCheckSelfName(LLUICtrl* ctrl, void* userdata); 48 static void onCommitCheckSelfName(LLUICtrl* ctrl, void* userdata);
49 static void onCommitCheckFriends(LLUICtrl* ctrl, void* userdata); 49 static void onCommitCheckFriends(LLUICtrl* ctrl, void* userdata);
50 static void onCommitCheckClient(LLUICtrl* ctrl, void* userdata);
50 void refreshColors(); 51 void refreshColors();
51 void updateFriendsCheck(); 52 void updateFriendsCheck();
52 void updateSelfCheck(); 53 void updateSelfCheck();
54 void updateClientCheck();
53 55
54 LLColor4 mSystemChatColor; 56 LLColor4 mSystemChatColor;
55 LLColor4 mUserChatColor; 57 LLColor4 mUserChatColor;
@@ -62,6 +64,8 @@ private:
62 LLColor4 mHTMLLinkColor; 64 LLColor4 mHTMLLinkColor;
63 LLColor4 mFriendsChatColor; 65 LLColor4 mFriendsChatColor;
64 LLColor4 mOwnNameChatColor; 66 LLColor4 mOwnNameChatColor;
67 LLColor4 mEffectColor;
68 LLColor4 mClientTagColor;
65}; 69};
66 70
67#endif //LLPREFSCOLORS_H 71#endif //LLPREFSCOLORS_H
diff --git a/linden/indra/newview/llprefsim.cpp b/linden/indra/newview/llprefsim.cpp
index 33d9701..47b5d8b 100644
--- a/linden/indra/newview/llprefsim.cpp
+++ b/linden/indra/newview/llprefsim.cpp
@@ -65,7 +65,7 @@ public:
65 65
66 void apply(); 66 void apply();
67 void cancel(); 67 void cancel();
68 void setPersonalInfo(const std::string& visibility, bool im_via_email, const std::string& email); 68 void setPersonalInfo(const std::string& visibility);
69 void preparePerAccountPrefs(bool enable); 69 void preparePerAccountPrefs(bool enable);
70 void enableHistory(); 70 void enableHistory();
71 71
@@ -78,7 +78,6 @@ protected:
78 78
79 bool mGotPersonalInfo; 79 bool mGotPersonalInfo;
80 bool mGotPerAccountSettings; 80 bool mGotPerAccountSettings;
81 bool mOriginalIMViaEmail;
82 81
83 bool mOriginalHideOnlineStatus; 82 bool mOriginalHideOnlineStatus;
84 std::string mDirectoryVisibility; 83 std::string mDirectoryVisibility;
@@ -89,7 +88,6 @@ LLPrefsIMImpl::LLPrefsIMImpl()
89 : LLPanel(std::string("IM Prefs Panel")), 88 : LLPanel(std::string("IM Prefs Panel")),
90 mGotPersonalInfo(false), 89 mGotPersonalInfo(false),
91 mGotPerAccountSettings(false), 90 mGotPerAccountSettings(false),
92 mOriginalIMViaEmail(false),
93 mOriginalHideOnlineStatus(false) 91 mOriginalHideOnlineStatus(false)
94{ 92{
95 LLUICtrlFactory::getInstance()->buildPanel(this, "panel_preferences_im.xml"); 93 LLUICtrlFactory::getInstance()->buildPanel(this, "panel_preferences_im.xml");
@@ -102,29 +100,14 @@ void LLPrefsIMImpl::cancel()
102BOOL LLPrefsIMImpl::postBuild() 100BOOL LLPrefsIMImpl::postBuild()
103{ 101{
104 requires("online_visibility"); 102 requires("online_visibility");
105 requires("send_im_to_email"); 103
106 if (!checkRequirements()) 104 if (!checkRequirements())
107 { 105 {
108 return FALSE; 106 return FALSE;
109 } 107 }
110 108
111 childSetLabelArg("send_im_to_email", "[EMAIL]", getString("log_in_to_change")); 109 // Don't enable this until we get personal data
112
113 // Don't enable these until we get personal data
114 childSetEnabled("online_visibility", false); 110 childSetEnabled("online_visibility", false);
115 childSetEnabled("send_im_to_email", false);
116
117 // These are safe to enable
118 childSetEnabled("include_im_in_chat_console", true);
119 childSetEnabled("include_im_in_chat_history", true);
120 childSetEnabled("show_timestamps_check", true);
121 childSetEnabled("friends_online_notify_checkbox", true);
122 childSetEnabled("vertical-imtabs-toggle", true);
123 childSetValue("include_im_in_chat_console", gSavedSettings.getBOOL("IMInChatConsole"));
124 childSetValue("include_im_in_chat_history", gSavedSettings.getBOOL("IMInChatHistory"));
125 childSetValue("show_timestamps_check", gSavedSettings.getBOOL("IMShowTimestamps"));
126 childSetValue("friends_online_notify_checkbox", gSavedSettings.getBOOL("ChatOnlineNotification"));
127 childSetValue("vertical-imtabs-toggle", gSavedSettings.getBOOL("VerticalIMTabs"));
128 111
129 childSetAction("log_path_button", onClickLogPath, this); 112 childSetAction("log_path_button", onClickLogPath, this);
130 childSetCommitCallback("log_chat",onCommitLogging,this); 113 childSetCommitCallback("log_chat",onCommitLogging,this);
@@ -191,11 +174,9 @@ void LLPrefsIMImpl::apply()
191 174
192 if (mGotPersonalInfo) 175 if (mGotPersonalInfo)
193 { 176 {
194 bool new_im_via_email = childGetValue("send_im_to_email").asBoolean();
195 bool new_hide_online = childGetValue("online_visibility").asBoolean(); 177 bool new_hide_online = childGetValue("online_visibility").asBoolean();
196 178
197 if((new_im_via_email != mOriginalIMViaEmail) 179 if (new_hide_online != mOriginalHideOnlineStatus)
198 ||(new_hide_online != mOriginalHideOnlineStatus))
199 { 180 {
200 LLMessageSystem* msg = gMessageSystem; 181 LLMessageSystem* msg = gMessageSystem;
201 msg->newMessageFast(_PREHASH_UpdateUserInfo); 182 msg->newMessageFast(_PREHASH_UpdateUserInfo);
@@ -203,7 +184,7 @@ void LLPrefsIMImpl::apply()
203 msg->addUUIDFast(_PREHASH_AgentID, gAgent.getID()); 184 msg->addUUIDFast(_PREHASH_AgentID, gAgent.getID());
204 msg->addUUIDFast(_PREHASH_SessionID, gAgent.getSessionID()); 185 msg->addUUIDFast(_PREHASH_SessionID, gAgent.getSessionID());
205 msg->nextBlockFast(_PREHASH_UserData); 186 msg->nextBlockFast(_PREHASH_UserData);
206 msg->addBOOLFast(_PREHASH_IMViaEMail, new_im_via_email); 187 //msg->addBOOLFast(_PREHASH_IMViaEMail, new_im_via_email);
207 // This hack is because we are representing several different 188 // This hack is because we are representing several different
208 // possible strings with a single checkbox. Since most users 189 // possible strings with a single checkbox. Since most users
209 // can only select between 2 values, we represent it as a 190 // can only select between 2 values, we represent it as a
@@ -220,19 +201,12 @@ void LLPrefsIMImpl::apply()
220 gAgent.sendReliableMessage(); 201 gAgent.sendReliableMessage();
221 } 202 }
222 } 203 }
223
224 gSavedSettings.setBOOL("VerticalIMTabs", childGetValue("vertical-imtabs-toggle").asBoolean());
225 gSavedSettings.setBOOL("IMInChatConsole", childGetValue("include_im_in_chat_console").asBoolean());
226 gSavedSettings.setBOOL("IMInChatHistory", childGetValue("include_im_in_chat_history").asBoolean());
227 gSavedSettings.setBOOL("IMShowTimestamps", childGetValue("show_timestamps_check").asBoolean());
228 gSavedSettings.setBOOL("ChatOnlineNotification", childGetValue("friends_online_notify_checkbox").asBoolean());
229} 204}
230 205
231// Enable and set the value of settings recieved from the sim in AgentInfoReply 206// Enable and set the value of settings recieved from the sim in AgentInfoReply
232void LLPrefsIMImpl::setPersonalInfo(const std::string& visibility, bool im_via_email, const std::string& email) 207void LLPrefsIMImpl::setPersonalInfo(const std::string& visibility)
233{ 208{
234 mGotPersonalInfo = true; 209 mGotPersonalInfo = true;
235 mOriginalIMViaEmail = im_via_email;
236 mDirectoryVisibility = visibility; 210 mDirectoryVisibility = visibility;
237 211
238 if(visibility == VISIBILITY_DEFAULT) 212 if(visibility == VISIBILITY_DEFAULT)
@@ -252,22 +226,6 @@ void LLPrefsIMImpl::setPersonalInfo(const std::string& visibility, bool im_via_e
252 226
253 childSetValue("online_visibility", mOriginalHideOnlineStatus); 227 childSetValue("online_visibility", mOriginalHideOnlineStatus);
254 childSetLabelArg("online_visibility", "[DIR_VIS]", mDirectoryVisibility); 228 childSetLabelArg("online_visibility", "[DIR_VIS]", mDirectoryVisibility);
255 childEnable("send_im_to_email");
256 childSetValue("send_im_to_email", im_via_email);
257
258 // Truncate the e-mail address if it's too long (to prevent going off
259 // the edge of the dialog).
260 std::string display_email(email);
261 if(display_email.size() > 30)
262 {
263 display_email.resize(30);
264 display_email += "...";
265 }
266 else if (display_email.empty())
267 {
268 display_email = getString("default_email_used");
269 }
270 childSetLabelArg("send_im_to_email", "[EMAIL]", display_email);
271} 229}
272 230
273// Enable and set the value of settings that need an account name 231// Enable and set the value of settings that need an account name
@@ -373,9 +331,9 @@ void LLPrefsIM::cancel()
373 impl.cancel(); 331 impl.cancel();
374} 332}
375 333
376void LLPrefsIM::setPersonalInfo(const std::string& visibility, bool im_via_email, const std::string& email) 334void LLPrefsIM::setPersonalInfo(const std::string& visibility)
377{ 335{
378 impl.setPersonalInfo(visibility, im_via_email, email); 336 impl.setPersonalInfo(visibility);
379} 337}
380 338
381void LLPrefsIM::preparePerAccountPrefs(bool enable) 339void LLPrefsIM::preparePerAccountPrefs(bool enable)
diff --git a/linden/indra/newview/llprefsim.h b/linden/indra/newview/llprefsim.h
index acf9b0f..054e4c7 100644
--- a/linden/indra/newview/llprefsim.h
+++ b/linden/indra/newview/llprefsim.h
@@ -45,7 +45,7 @@ public:
45 45
46 void apply(); 46 void apply();
47 void cancel(); 47 void cancel();
48 void setPersonalInfo(const std::string& visibility, bool im_via_email, const std::string& email); 48 void setPersonalInfo(const std::string& visibility);
49 void preparePerAccountPrefs(bool enable); 49 void preparePerAccountPrefs(bool enable);
50 50
51 LLPanel* getPanel(); 51 LLPanel* getPanel();
diff --git a/linden/indra/newview/llprefsvoice.cpp b/linden/indra/newview/llprefsvoice.cpp
index fe5446b..0e8e816 100644
--- a/linden/indra/newview/llprefsvoice.cpp
+++ b/linden/indra/newview/llprefsvoice.cpp
@@ -189,6 +189,8 @@ void LLPrefsVoice::onCommitEnableVoiceChat(LLUICtrl* ctrl, void* user_data)
189 self->childSetEnabled("push_to_talk_label", enable); 189 self->childSetEnabled("push_to_talk_label", enable);
190 self->childSetEnabled("voice_call_friends_only_check", enable); 190 self->childSetEnabled("voice_call_friends_only_check", enable);
191 self->childSetEnabled("auto_disengage_mic_check", enable); 191 self->childSetEnabled("auto_disengage_mic_check", enable);
192 self->childSetEnabled("privacy_heading", enable);
193 self->childSetEnabled("push_to_talk_heading", enable);
192 self->childSetEnabled("push_to_talk_toggle_check", enable); 194 self->childSetEnabled("push_to_talk_toggle_check", enable);
193 self->childSetEnabled("ear_location", enable); 195 self->childSetEnabled("ear_location", enable);
194 self->childSetEnabled("set_voice_hotkey_button", enable); 196 self->childSetEnabled("set_voice_hotkey_button", enable);
diff --git a/linden/indra/newview/llstartup.cpp b/linden/indra/newview/llstartup.cpp
index b05e36d..083a082 100644
--- a/linden/indra/newview/llstartup.cpp
+++ b/linden/indra/newview/llstartup.cpp
@@ -1884,8 +1884,7 @@ bool idle_startup()
1884 tmp = LLUserAuth::getInstance()->getResponse("max-agent-groups"); 1884 tmp = LLUserAuth::getInstance()->getResponse("max-agent-groups");
1885 if (!tmp.empty()) gHippoGridManager->getConnectedGrid()->setMaxAgentGroups(atoi(tmp.c_str())); 1885 if (!tmp.empty()) gHippoGridManager->getConnectedGrid()->setMaxAgentGroups(atoi(tmp.c_str()));
1886 1886
1887 tmp = LLUserAuth::getInstance()->getResponse("VoiceConnector"); 1887
1888 if (!tmp.empty()) gHippoGridManager->getConnectedGrid()->setVoiceConnector(tmp);
1889 gHippoGridManager->saveFile(); 1888 gHippoGridManager->saveFile();
1890 gHippoLimits->setLimits(); 1889 gHippoLimits->setLimits();
1891 1890
@@ -1931,8 +1930,7 @@ bool idle_startup()
1931 } 1930 }
1932 // else llwarns << "MapServerURL empty"<< llendl; 1931 // else llwarns << "MapServerURL empty"<< llendl;
1933 1932
1934 // Pass the user information to the voice chat server interface. 1933
1935 gVoiceClient->userAuthorized(firstname, lastname, gAgentID);
1936 } 1934 }
1937 else // if(successful_login) 1935 else // if(successful_login)
1938 { 1936 {
@@ -2065,6 +2063,7 @@ bool idle_startup()
2065 LL_DEBUGS("AppInitStartupState") << "STATE_SEED_CAP_GRANTED" << LL_ENDL; 2063 LL_DEBUGS("AppInitStartupState") << "STATE_SEED_CAP_GRANTED" << LL_ENDL;
2066 update_texture_fetch(); 2064 update_texture_fetch();
2067 2065
2066
2068 if ( gViewerWindow != NULL) 2067 if ( gViewerWindow != NULL)
2069 { // This isn't the first logon attempt, so show the UI 2068 { // This isn't the first logon attempt, so show the UI
2070 gViewerWindow->setNormalControlsVisible( TRUE ); 2069 gViewerWindow->setNormalControlsVisible( TRUE );
@@ -2123,6 +2122,9 @@ bool idle_startup()
2123 // 2122 //
2124 LL_INFOS("AppInit") << "Initializing communications..." << LL_ENDL; 2123 LL_INFOS("AppInit") << "Initializing communications..." << LL_ENDL;
2125 2124
2125 // Pass the user information to the voice chat server interface.
2126 gVoiceClient->userAuthorized(firstname, lastname, gAgentID);
2127
2126 // register callbacks for messages. . . do this after initial handshake to make sure that we don't catch any unwanted 2128 // register callbacks for messages. . . do this after initial handshake to make sure that we don't catch any unwanted
2127 register_viewer_callbacks(gMessageSystem); 2129 register_viewer_callbacks(gMessageSystem);
2128 2130
@@ -2142,7 +2144,7 @@ bool idle_startup()
2142 gCacheName->addObserver(callback_cache_name); 2144 gCacheName->addObserver(callback_cache_name);
2143 2145
2144 // Load stored cache if possible 2146 // Load stored cache if possible
2145 LLAppViewer::instance()->loadNameCache(); 2147 LLAppViewer::instance()->loadNameCache();
2146 2148
2147 // Start cache in not-running state until we figure out if we have 2149 // Start cache in not-running state until we figure out if we have
2148 // capabilities for display name lookup 2150 // capabilities for display name lookup
diff --git a/linden/indra/newview/lltexturefetch.cpp b/linden/indra/newview/lltexturefetch.cpp
index ab867a6..bdad2b8 100644
--- a/linden/indra/newview/lltexturefetch.cpp
+++ b/linden/indra/newview/lltexturefetch.cpp
@@ -874,15 +874,6 @@ bool LLTextureFetchWorker::doWork(S32 param)
874 } 874 }
875 } 875 }
876 876
877 // *TODO: remove this hack when not needed anymore
878 S32 buggy_range_fudge = 0;
879 if (LLTextureFetch::hasBuggyHTTPRange())
880 {
881 buggy_range_fudge = 1;
882 resetFormattedData(); // discard any previous data we had
883 cur_size = 0 ;
884 }
885
886 mRequestedSize = mDesiredSize; 877 mRequestedSize = mDesiredSize;
887 mRequestedDiscard = mDesiredDiscard; 878 mRequestedDiscard = mDesiredDiscard;
888 mRequestedSize -= cur_size; 879 mRequestedSize -= cur_size;
@@ -898,7 +889,7 @@ bool LLTextureFetchWorker::doWork(S32 param)
898 mGetReason.clear(); 889 mGetReason.clear();
899 LL_DEBUGS("TextureFetch") << "HTTP GET: " << mID << " Offset: " << offset 890 LL_DEBUGS("TextureFetch") << "HTTP GET: " << mID << " Offset: " << offset
900 << " Bytes: " << mRequestedSize 891 << " Bytes: " << mRequestedSize
901 << " Range: " << offset << "-" << offset+mRequestedSize-1+buggy_range_fudge 892 << " Range: " << offset << "-" << offset+mRequestedSize-1
902 << " Bandwidth(kbps): " << mFetcher->getTextureBandwidth() << "/" << max_bandwidth 893 << " Bandwidth(kbps): " << mFetcher->getTextureBandwidth() << "/" << max_bandwidth
903 << LL_ENDL; 894 << LL_ENDL;
904 setPriority(LLWorkerThread::PRIORITY_LOW | mWorkPriority); 895 setPriority(LLWorkerThread::PRIORITY_LOW | mWorkPriority);
@@ -908,7 +899,7 @@ bool LLTextureFetchWorker::doWork(S32 param)
908 // Will call callbackHttpGet when curl request completes 899 // Will call callbackHttpGet when curl request completes
909 std::vector<std::string> headers; 900 std::vector<std::string> headers;
910 headers.push_back("Accept: image/x-j2c"); 901 headers.push_back("Accept: image/x-j2c");
911 res = mFetcher->mCurlGetRequest->getByteRange(mUrl, headers, offset, mRequestedSize + buggy_range_fudge, 902 res = mFetcher->mCurlGetRequest->getByteRange(mUrl, headers, offset, mRequestedSize,
912 new HTTPGetResponder(mFetcher, mID, LLTimer::getTotalTime(), mRequestedSize, offset)); 903 new HTTPGetResponder(mFetcher, mID, LLTimer::getTotalTime(), mRequestedSize, offset));
913 } 904 }
914 if (!res) 905 if (!res)
@@ -2279,45 +2270,3 @@ void LLTextureFetch::dump()
2279 << llendl; 2270 << llendl;
2280 } 2271 }
2281} 2272}
2282
2283// This tries to detect if the sim has this bug:
2284// http://opensimulator.org/mantis/view.php?id=5081
2285//
2286// *TODO: This is a *HACK and may not work if the grid is heterogenous.
2287// Remove it once OpenSim versions in the wild are > 0.7.0.2!
2288#include "hippogridmanager.h"
2289#include <boost/regex.hpp>
2290//static
2291bool LLTextureFetch::hasBuggyHTTPRange()
2292{
2293 static std::string s_version;
2294 static bool buggy = false;
2295 if ((s_version != gLastVersionChannel) && !gLastVersionChannel.empty())
2296 {
2297 s_version = gLastVersionChannel;
2298 buggy = false;
2299 if (gHippoGridManager->getConnectedGrid()->getPlatform() == HippoGridInfo::PLATFORM_OPENSIM)
2300 {
2301 std::string ver_string;
2302 try
2303 {
2304 const boost::regex re(".*OpenSim.*?([0-9.]+).+");
2305 ver_string = regex_replace(s_version, re, "\\1", boost::match_default);
2306 }
2307 catch(std::runtime_error)
2308 {
2309 ver_string = "0.0";
2310 }
2311 LLStringUtil::replaceChar(ver_string, '.', '0');
2312 ver_string = "0." + ver_string;
2313 F64 version = atof(ver_string.c_str());
2314 // we look for "0.6.8" < version < "0.7.0.3"
2315 if ((version > 0.00608) && (version < 0.0070003))
2316 {
2317 buggy = true;
2318 llwarns << "Setting buggy http ranges mode for current sim, because we're on " << s_version << llendl;
2319 }
2320 }
2321 }
2322 return buggy;
2323}
diff --git a/linden/indra/newview/lltexturefetch.h b/linden/indra/newview/lltexturefetch.h
index 5fa2d1c..6c6bb52 100644
--- a/linden/indra/newview/lltexturefetch.h
+++ b/linden/indra/newview/lltexturefetch.h
@@ -86,8 +86,6 @@ public:
86 86
87 LLTextureInfo* getTextureInfo() { return &mTextureInfo; } 87 LLTextureInfo* getTextureInfo() { return &mTextureInfo; }
88 88
89 static bool hasBuggyHTTPRange(); // *TODO: remove this *HACK once buggy OpenSim versions are gone
90
91protected: 89protected:
92 void addToNetworkQueue(LLTextureFetchWorker* worker); 90 void addToNetworkQueue(LLTextureFetchWorker* worker);
93 void removeFromNetworkQueue(LLTextureFetchWorker* worker, bool cancel); 91 void removeFromNetworkQueue(LLTextureFetchWorker* worker, bool cancel);
diff --git a/linden/indra/newview/llviewerimagelist.cpp b/linden/indra/newview/llviewerimagelist.cpp
index 039896f..de92903 100644
--- a/linden/indra/newview/llviewerimagelist.cpp
+++ b/linden/indra/newview/llviewerimagelist.cpp
@@ -193,6 +193,13 @@ void LLViewerImageList::doPreloadImages()
193 mImagePreloads.insert(image); 193 mImagePreloads.insert(image);
194 } 194 }
195 195
196 // Preload default unrezzad avatar cloud
197 image = getImageFromFile("cloud-particle.j2c",MIPMAP_YES,IMMEDIATE_YES,0,0,DEFAULT_UNREZZED_AVATAR_PARTICLE);
198 if (image)
199 {
200 image->setAddressMode(LLTexUnit::TAM_WRAP);
201 mImagePreloads.insert(image);
202 }
196} 203}
197 204
198static std::string get_texture_list_name() 205static std::string get_texture_list_name()
diff --git a/linden/indra/newview/llviewermedia.cpp b/linden/indra/newview/llviewermedia.cpp
index 89d7b1f..dbb6f62 100644
--- a/linden/indra/newview/llviewermedia.cpp
+++ b/linden/indra/newview/llviewermedia.cpp
@@ -547,6 +547,13 @@ LLPluginClassMedia* LLViewerMediaImpl::newSourceFromMediaType(std::string media_
547 547
548 if (media_source->init(launcher_name, plugin_name, gSavedSettings.getBOOL("PluginAttachDebuggerToPlugins"))) 548 if (media_source->init(launcher_name, plugin_name, gSavedSettings.getBOOL("PluginAttachDebuggerToPlugins")))
549 { 549 {
550 #if LL_WINDOWS
551 if (gSavedSettings.getBOOL("ShowConsoleWindow"))
552 {
553 media_source->showConsole();
554 }
555 #endif
556
550 return media_source; 557 return media_source;
551 } 558 }
552 else 559 else
diff --git a/linden/indra/newview/llviewermedia_streamingaudio.cpp b/linden/indra/newview/llviewermedia_streamingaudio.cpp
index 6a4dd0f..f02870b 100644
--- a/linden/indra/newview/llviewermedia_streamingaudio.cpp
+++ b/linden/indra/newview/llviewermedia_streamingaudio.cpp
@@ -96,7 +96,7 @@ void LLStreamingAudio_MediaPlugins::stop()
96 { 96 {
97 mMediaPlugin->stop(); 97 mMediaPlugin->stop();
98 } 98 }
99 99 llinfos << "Stopping internet stream." << llendl;
100 mURL.clear(); 100 mURL.clear();
101} 101}
102 102
diff --git a/linden/indra/newview/llvoavatar.cpp b/linden/indra/newview/llvoavatar.cpp
index ed51a24..b044309 100644
--- a/linden/indra/newview/llvoavatar.cpp
+++ b/linden/indra/newview/llvoavatar.cpp
@@ -1525,7 +1525,7 @@ void LLVOAvatar::loadCloud(const std::string& filename, LLPartSysData& particle
1525 if(particles.mPartImageID.isNull() || default_id == particles.mPartImageID) 1525 if(particles.mPartImageID.isNull() || default_id == particles.mPartImageID)
1526 { 1526 {
1527 LLViewerImage* cloud_image = 1527 LLViewerImage* cloud_image =
1528 gImageList.getImageFromFile("cloud-particle.j2c", MIPMAP_YES, IMMEDIATE_YES, 0, 0, default_id); 1528 gImageList.getImage(default_id);
1529 particles.mPartImageID = cloud_image->getID(); 1529 particles.mPartImageID = cloud_image->getID();
1530 } 1530 }
1531} 1531}
diff --git a/linden/indra/newview/llvoavatar.h b/linden/indra/newview/llvoavatar.h
index 4d08bf0..b9e4d17 100644
--- a/linden/indra/newview/llvoavatar.h
+++ b/linden/indra/newview/llvoavatar.h
@@ -231,6 +231,7 @@ public:
231 231
232 BOOL isVisible(); 232 BOOL isVisible();
233 BOOL isSelf() const { return mIsSelf; } 233 BOOL isSelf() const { return mIsSelf; }
234 bool isBuilt() const { return mIsBuilt; }
234 BOOL isCulled() const { return mCulled; } 235 BOOL isCulled() const { return mCulled; }
235 236
236public: 237public:
diff --git a/linden/indra/newview/llvoiceclient.cpp b/linden/indra/newview/llvoiceclient.cpp
index 2266aab..115f6e8 100644
--- a/linden/indra/newview/llvoiceclient.cpp
+++ b/linden/indra/newview/llvoiceclient.cpp
@@ -139,22 +139,23 @@ class LLViewerVoiceAccountProvisionResponder :
139 public LLHTTPClient::Responder 139 public LLHTTPClient::Responder
140{ 140{
141public: 141public:
142 LLViewerVoiceAccountProvisionResponder(int retries) 142 LLViewerVoiceAccountProvisionResponder(int retries, LLUUID response_id)
143 { 143 {
144 mRetries = retries; 144 mRetries = retries;
145 mResponseID = response_id;
145 } 146 }
146 147
147 virtual void error(U32 status, const std::string& reason) 148 virtual void error(U32 status, const std::string& reason)
148 { 149 {
149 if ( mRetries > 0 ) 150 if ( mRetries > 0 )
150 { 151 {
151 LL_WARNS("Voice") << "ProvisionVoiceAccountRequest returned an error, retrying. status = " << status << ", reason = \"" << reason << "\"" << LL_ENDL; 152 LL_DEBUGS("VoiceCaps") << "ProvisionVoiceAccountRequest returned an error, retrying. status = " << status << ", reason = \"" << reason << "\"" << LL_ENDL;
152 if ( gVoiceClient ) gVoiceClient->requestVoiceAccountProvision( 153 if ( gVoiceClient ) gVoiceClient->requestVoiceAccountProvision(
153 mRetries - 1); 154 mRetries - 1);
154 } 155 }
155 else 156 else
156 { 157 {
157 LL_WARNS("Voice") << "ProvisionVoiceAccountRequest returned an error, too many retries (giving up). status = " << status << ", reason = \"" << reason << "\"" << LL_ENDL; 158 LL_DEBUGS("VoiceCaps") << "ProvisionVoiceAccountRequest returned an error, too many retries (giving up). status = " << status << ", reason = \"" << reason << "\"" << LL_ENDL;
158 if ( gVoiceClient ) gVoiceClient->giveUp(); 159 if ( gVoiceClient ) gVoiceClient->giveUp();
159 } 160 }
160 } 161 }
@@ -166,7 +167,7 @@ public:
166 std::string voice_sip_uri_hostname; 167 std::string voice_sip_uri_hostname;
167 std::string voice_account_server_uri; 168 std::string voice_account_server_uri;
168 169
169 LL_DEBUGS("Voice") << "ProvisionVoiceAccountRequest response:" << ll_pretty_print_sd(content) << LL_ENDL; 170 LL_DEBUGS("VoiceCaps") << "ProvisionVoiceAccountRequest response:" << ll_pretty_print_sd(content) << LL_ENDL;
170 171
171 if(content.has("voice_sip_uri_hostname")) 172 if(content.has("voice_sip_uri_hostname"))
172 voice_sip_uri_hostname = content["voice_sip_uri_hostname"].asString(); 173 voice_sip_uri_hostname = content["voice_sip_uri_hostname"].asString();
@@ -179,12 +180,14 @@ public:
179 content["username"].asString(), 180 content["username"].asString(),
180 content["password"].asString(), 181 content["password"].asString(),
181 voice_sip_uri_hostname, 182 voice_sip_uri_hostname,
182 voice_account_server_uri); 183 voice_account_server_uri,
184 mResponseID);
183 } 185 }
184 } 186 }
185 187
186private: 188private:
187 int mRetries; 189 int mRetries;
190 LLUUID mResponseID;
188}; 191};
189 192
190/** 193/**
@@ -364,7 +367,7 @@ LLIOPipe::EStatus LLVivoxProtocolParser::process_impl(
364 // If this message isn't set to be squelched, output the raw XML received. 367 // If this message isn't set to be squelched, output the raw XML received.
365 if(!squelchDebugOutput) 368 if(!squelchDebugOutput)
366 { 369 {
367 LL_DEBUGS("Voice") << "parsing: " << mInput.substr(start, delim - start) << LL_ENDL; 370 LL_DEBUGS("VivoxProtocolParser") << "parsing: " << mInput.substr(start, delim - start) << LL_ENDL;
368 } 371 }
369 372
370 start = delim + 3; 373 start = delim + 3;
@@ -378,7 +381,7 @@ LLIOPipe::EStatus LLVivoxProtocolParser::process_impl(
378 if(!gVoiceClient->mConnected) 381 if(!gVoiceClient->mConnected)
379 { 382 {
380 // If voice has been disabled, we just want to close the socket. This does so. 383 // If voice has been disabled, we just want to close the socket. This does so.
381 LL_INFOS("Voice") << "returning STATUS_STOP" << LL_ENDL; 384 LL_INFOS("VivoxProtocolParser") << "returning STATUS_STOP" << LL_ENDL;
382 return STATUS_STOP; 385 return STATUS_STOP;
383 } 386 }
384 387
@@ -1008,12 +1011,13 @@ static LLVoiceClientFriendsObserver *friendslist_listener = NULL;
1008class LLVoiceClientCapResponder : public LLHTTPClient::Responder 1011class LLVoiceClientCapResponder : public LLHTTPClient::Responder
1009{ 1012{
1010public: 1013public:
1011 LLVoiceClientCapResponder(void){}; 1014 LLVoiceClientCapResponder(LLUUID response_id):mResponseID(response_id) {};
1012 1015
1013 virtual void error(U32 status, const std::string& reason); // called with bad status codes 1016 virtual void error(U32 status, const std::string& reason); // called with bad status codes
1014 virtual void result(const LLSD& content); 1017 virtual void result(const LLSD& content);
1015 1018
1016private: 1019private:
1020 LLUUID mResponseID;
1017}; 1021};
1018 1022
1019void LLVoiceClientCapResponder::error(U32 status, const std::string& reason) 1023void LLVoiceClientCapResponder::error(U32 status, const std::string& reason)
@@ -1027,7 +1031,7 @@ void LLVoiceClientCapResponder::result(const LLSD& content)
1027{ 1031{
1028 LLSD::map_const_iterator iter; 1032 LLSD::map_const_iterator iter;
1029 1033
1030 LL_DEBUGS("Voice") << "ParcelVoiceInfoRequest response:" << ll_pretty_print_sd(content) << LL_ENDL; 1034 LL_DEBUGS("VoiceCaps") << "ParcelVoiceInfoRequest response:\n" << ll_pretty_print_sd(content) << LL_ENDL;
1031 1035
1032 if ( content.has("voice_credentials") ) 1036 if ( content.has("voice_credentials") )
1033 { 1037 {
@@ -1045,7 +1049,7 @@ void LLVoiceClientCapResponder::result(const LLSD& content)
1045 voice_credentials["channel_credentials"].asString(); 1049 voice_credentials["channel_credentials"].asString();
1046 } 1050 }
1047 1051
1048 gVoiceClient->setSpatialChannel(uri, credentials); 1052 gVoiceClient->setSpatialChannel(uri, credentials, mResponseID);
1049 } 1053 }
1050} 1054}
1051 1055
@@ -1126,6 +1130,8 @@ LLVoiceClient::LLVoiceClient()
1126 mAudioSessionChanged = false; 1130 mAudioSessionChanged = false;
1127 1131
1128 // Initial dirty state 1132 // Initial dirty state
1133 mAccountActive = false;
1134 mVAPRequested = false;
1129 mSpatialCoordsDirty = false; 1135 mSpatialCoordsDirty = false;
1130 mPTTDirty = true; 1136 mPTTDirty = true;
1131 mFriendsListDirty = true; 1137 mFriendsListDirty = true;
@@ -1347,6 +1353,7 @@ void LLVoiceClient::userAuthorized(const std::string& firstName, const std::stri
1347 sConnectingToAgni = LLViewerLogin::getInstance()->isInProductionGrid(); 1353 sConnectingToAgni = LLViewerLogin::getInstance()->isInProductionGrid();
1348 1354
1349 mAccountName = nameFromID(agentID); 1355 mAccountName = nameFromID(agentID);
1356 mAccountActive = true;
1350} 1357}
1351 1358
1352void LLVoiceClient::requestVoiceAccountProvision(S32 retries) 1359void LLVoiceClient::requestVoiceAccountProvision(S32 retries)
@@ -1357,12 +1364,21 @@ void LLVoiceClient::requestVoiceAccountProvision(S32 retries)
1357 gAgent.getRegion()->getCapability( 1364 gAgent.getRegion()->getCapability(
1358 "ProvisionVoiceAccountRequest"); 1365 "ProvisionVoiceAccountRequest");
1359 1366
1360 if ( url == "" ) return; 1367 if ( url.empty() )
1368 {
1369 mVAPRequested = false;
1370 mAccountActive = false;
1371 setState(stateDisableCleanup);
1372 }
1373
1374 LL_DEBUGS("VoiceCaps") << "Got ProvisionVoiceAccountRequest capability: "
1375 << url << llendl;
1361 1376
1377 mVAPCapResponseID.generate();
1362 LLHTTPClient::post( 1378 LLHTTPClient::post(
1363 url, 1379 url,
1364 LLSD(), 1380 LLSD(),
1365 new LLViewerVoiceAccountProvisionResponder(retries)); 1381 new LLViewerVoiceAccountProvisionResponder(retries, mVAPCapResponseID));
1366 } 1382 }
1367} 1383}
1368 1384
@@ -1370,11 +1386,44 @@ void LLVoiceClient::login(
1370 const std::string& account_name, 1386 const std::string& account_name,
1371 const std::string& password, 1387 const std::string& password,
1372 const std::string& voice_sip_uri_hostname, 1388 const std::string& voice_sip_uri_hostname,
1373 const std::string& voice_account_server_uri) 1389 const std::string& voice_account_server_uri,
1390 const LLUUID& response_id)
1374{ 1391{
1392 if(response_id != mVAPCapResponseID) return;
1393
1394 std::string new_scheme;
1395 std::string old_scheme;
1396 if(!voice_account_server_uri.empty())
1397 {
1398 new_scheme = voice_account_server_uri.substr(0, voice_account_server_uri.find("://"));
1399 }
1400 if(!mDaemonScheme.empty())
1401 {
1402 old_scheme = mDaemonScheme;
1403 }
1404 else
1405 {
1406 old_scheme = new_scheme;
1407 }
1408
1375 mVoiceSIPURIHostName = voice_sip_uri_hostname; 1409 mVoiceSIPURIHostName = voice_sip_uri_hostname;
1376 mVoiceAccountServerURI = voice_account_server_uri; 1410 mVoiceAccountServerURI = voice_account_server_uri;
1377 1411
1412
1413 LL_DEBUGS("VoiceCaps") << "new_scheme: \"" << new_scheme << "\""
1414 << "\nold_scheme: \"" << old_scheme << "\""
1415 << "\ngateway running: " << ( isGatewayRunning() ? "true" : "false" ) << llendl;
1416 if(!isGatewayRunning() )
1417 {
1418 loadDaemon(new_scheme);
1419 }
1420 else if(old_scheme != new_scheme)
1421 {
1422 mAccountActive = true;
1423 setState(stateDisableCleanup);
1424 }
1425
1426
1378 if(!mAccountHandle.empty()) 1427 if(!mAccountHandle.empty())
1379 { 1428 {
1380 // Already logged in. 1429 // Already logged in.
@@ -1432,6 +1481,183 @@ void LLVoiceClient::login(
1432 } 1481 }
1433} 1482}
1434 1483
1484void LLVoiceClient::loadDaemon(const std::string& scheme)
1485{
1486
1487 // Launch the voice daemon
1488
1489
1490 // *FIX:Mani - Using the executable dir instead
1491 // of mAppRODataDir, the working directory from which the app
1492 // is launched.
1493 //std::string exe_path = gDirUtilp->getAppRODataDir();
1494 std::string exe_path = gDirUtilp->getExecutableDir();
1495 exe_path += gDirUtilp->getDirDelimiter();
1496
1497#if LL_DARWIN
1498 exe_path += "../Resources/";
1499#endif
1500
1501 //exe_path += gSavedSettings.getString("VoiceModule");
1502 llwarns << "Scheme: " << scheme << llendl;
1503
1504 std::string module;
1505 if (scheme == "tcp")
1506 {
1507
1508 module = gSavedSettings.getString("VoiceModuleMumble").empty() ?
1509 "mumble" : gSavedSettings.getString("VoiceModuleMumble");
1510 }
1511 else
1512 {
1513 module = gSavedSettings.getString("VoiceModuleVivox").empty() ?
1514 "SLVoice" : gSavedSettings.getString("VoiceModuleVivox");
1515 }
1516
1517 size_t pos_to_tst = module.find_last_of("/\\");
1518 if( pos_to_tst != std::string::npos )
1519 {
1520 module = module.substr(pos_to_tst+1);
1521 }
1522
1523#if LL_WINDOWS
1524 std::string extension = ".exe";
1525 if ( module.rfind(extension) != module.length()-extension.length())
1526 {
1527 module.append(extension);
1528 }
1529#endif
1530
1531 exe_path.append(module);
1532
1533 // See if the vivox executable exists
1534 llstat s;
1535 if(!LLFile::stat(exe_path, &s))
1536 {
1537 // vivox executable exists. Build the command line and launch the daemon.
1538 // SLIM SDK: these arguments are no longer necessary.
1539 // std::string args = " -p tcp -h -c";
1540 std::string args;
1541 std::string cmd;
1542 std::string loglevel = gSavedSettings.getString("VivoxDebugLevel");
1543
1544 if(loglevel.empty())
1545 {
1546 loglevel = "-1"; // turn logging off completely
1547 }
1548
1549 args += " -ll ";
1550 args += loglevel;
1551
1552 llwarns << "Voice loaded from: " << exe_path << " " << args << LL_ENDL;
1553
1554#if LL_WINDOWS
1555 PROCESS_INFORMATION pinfo;
1556 STARTUPINFOA sinfo;
1557 memset(&sinfo, 0, sizeof(sinfo));
1558 std::string exe_dir = gDirUtilp->getAppRODataDir();
1559
1560
1561 // So retarded. Windows requires that the second parameter to CreateProcessA be a writable (non-const) string...
1562 char *args2 = new char[args.size() + 1];
1563 strcpy(args2, args.c_str());
1564
1565 if(!CreateProcessA(exe_path.c_str(), args2, NULL, NULL, FALSE, 0, NULL, exe_dir.c_str(), &sinfo, &pinfo))
1566 {
1567 // DWORD dwErr = GetLastError();
1568 }
1569 else
1570 {
1571 // foo = pinfo.dwProcessId; // get your pid here if you want to use it later on
1572 // CloseHandle(pinfo.hProcess); // stops leaks - nothing else
1573 sGatewayHandle = pinfo.hProcess;
1574 CloseHandle(pinfo.hThread); // stops leaks - nothing else
1575 }
1576
1577 delete[] args2;
1578#else // LL_WINDOWS
1579 // This should be the same for mac and linux
1580 {
1581 std::vector<std::string> arglist;
1582 arglist.push_back(exe_path);
1583
1584 // Split the argument string into separate strings for each argument
1585 typedef boost::tokenizer<boost::char_separator<char> > tokenizer;
1586 boost::char_separator<char> sep(" ");
1587 tokenizer tokens(args, sep);
1588 tokenizer::iterator token_iter;
1589
1590 for(token_iter = tokens.begin(); token_iter != tokens.end(); ++token_iter)
1591 {
1592 arglist.push_back(*token_iter);
1593 }
1594
1595 // create an argv vector for the child process
1596 char **fakeargv = new char*[arglist.size() + 1];
1597 int i;
1598 for(i=0; i < arglist.size(); i++)
1599 fakeargv[i] = const_cast<char*>(arglist[i].c_str());
1600
1601 fakeargv[i] = NULL;
1602
1603 fflush(NULL); // flush all buffers before the child inherits them
1604 pid_t id = vfork();
1605 if(id == 0)
1606 {
1607 // child
1608 execv(exe_path.c_str(), fakeargv);
1609
1610 // If we reach this point, the exec failed.
1611 // Use _exit() instead of exit() per the vfork man page.
1612 _exit(0);
1613 }
1614
1615 // parent
1616 delete[] fakeargv;
1617 sGatewayPID = id;
1618
1619 }
1620
1621#endif // LL_WINDOWS
1622
1623 mDaemonScheme = scheme;
1624 mDaemonHost = LLHost(gSavedSettings.getString("VoiceHost").c_str(), gSavedSettings.getU32("VoicePort"));
1625
1626 // Dirty the states we'll need to sync with the daemon when it comes up.
1627 mPTTDirty = true;
1628 mMicVolumeDirty = true;
1629 mSpeakerVolumeDirty = true;
1630 mSpeakerMuteDirty = true;
1631 // These only need to be set if they're not default (i.e. empty string).
1632 mCaptureDeviceDirty = !mCaptureDevice.empty();
1633 mRenderDeviceDirty = !mRenderDevice.empty();
1634
1635 mMainSessionGroupHandle.clear();
1636
1637 // kick in
1638
1639 mUpdateTimer.start();
1640 mUpdateTimer.setTimerExpirySec(CONNECT_THROTTLE_SECONDS);
1641
1642 setState(stateDaemonLaunched);
1643
1644 //trigger parcel changed in the state engine
1645 mCurrentRegionName.append("kick in");
1646
1647
1648 }
1649 else
1650 {
1651 LL_WARNS("Voice") << exe_path << " not found." << LL_ENDL;
1652 mAccountActive = false;
1653 setState(stateDisableCleanup);
1654 }
1655
1656 // we are done, re-allow ProvisionVoiceAccountRequest
1657 mVAPRequested = false;
1658}
1659
1660
1435void LLVoiceClient::idle(void* user_data) 1661void LLVoiceClient::idle(void* user_data)
1436{ 1662{
1437 LLVoiceClient* self = (LLVoiceClient*)user_data; 1663 LLVoiceClient* self = (LLVoiceClient*)user_data;
@@ -1537,11 +1763,20 @@ void LLVoiceClient::start()
1537 1763
1538void LLVoiceClient::stateMachine() 1764void LLVoiceClient::stateMachine()
1539{ 1765{
1766 if( stateJail == getState())
1767 {
1768 return;
1769 }
1770
1771 if(gSavedSettings.getBOOL("CmdLineDisableVoice"))
1772 {
1773 // Voice is locked out, we must not launch the vivox daemon.
1774 setState(stateJail);
1775 }
1540 1776
1541 // Disable voice as long as the viewer is disconnected from the sim (login/relog) 1777 // Disable voice as long as the viewer is disconnected from the sim (login/relog)
1542 setVoiceEnabled(!gDisconnected 1778 setVoiceEnabled(!gDisconnected
1543 && gSavedSettings.getBOOL("EnableVoiceChat") 1779 && gSavedSettings.getBOOL("EnableVoiceChat") );
1544 && !gSavedSettings.getBOOL("CmdLineDisableVoice") );
1545 1780
1546 if(mVoiceEnabled) 1781 if(mVoiceEnabled)
1547 { 1782 {
@@ -1560,12 +1795,8 @@ void LLVoiceClient::stateMachine()
1560 { 1795 {
1561 // if voice was turned off after the daemon was launched but before we could connect to it, we may need to issue a kill. 1796 // if voice was turned off after the daemon was launched but before we could connect to it, we may need to issue a kill.
1562 LL_WARNS("Voice") << "Disabling voice before connection to daemon, terminating." << LL_ENDL; 1797 LL_WARNS("Voice") << "Disabling voice before connection to daemon, terminating." << LL_ENDL;
1563 killGateway();
1564 } 1798 }
1565 1799
1566 logout();
1567 connectorShutdown();
1568
1569 setState(stateDisableCleanup); 1800 setState(stateDisableCleanup);
1570 } 1801 }
1571 } 1802 }
@@ -1580,42 +1811,23 @@ void LLVoiceClient::stateMachine()
1580 { 1811 {
1581 S32 parcelLocalID = parcel->getLocalID(); 1812 S32 parcelLocalID = parcel->getLocalID();
1582 std::string regionName = region->getName(); 1813 std::string regionName = region->getName();
1583 std::string capURI = region->getCapability("ParcelVoiceInfoRequest"); 1814
1584
1585// LL_DEBUGS("Voice") << "Region name = \"" << regionName << "\", parcel local ID = " << parcelLocalID << ", cap URI = \"" << capURI << "\"" << LL_ENDL;
1586 1815
1587 // The region name starts out empty and gets filled in later. 1816 // The region name starts out empty and gets filled in later.
1588 // Also, the cap gets filled in a short time after the region cross, but a little too late for our purposes. 1817 // Also, the cap gets filled in a short time after the region cross, but a little too late for our purposes.
1589 // If either is empty, wait for the next time around. 1818 // If either is empty, wait for the next time around.
1590 if(!regionName.empty()) 1819 if(/*getState() >= stateNoChannel &&*/ !regionName.empty())
1591 { 1820 {
1592 if(!capURI.empty()) 1821
1593 { 1822 if((parcelLocalID != mCurrentParcelLocalID) || (regionName != mCurrentRegionName))
1594 if((parcelLocalID != mCurrentParcelLocalID) || (regionName != mCurrentRegionName))
1595 {
1596 // We have changed parcels. Initiate a parcel channel lookup.
1597 mCurrentParcelLocalID = parcelLocalID;
1598 mCurrentRegionName = regionName;
1599
1600 parcelChanged();
1601 }
1602 }
1603 else
1604 { 1823 {
1605 static int count = 0; 1824 // We have changed parcels. Initiate a parcel channel lookup.
1606 static int count2 = 0; 1825 mCurrentParcelLocalID = parcelLocalID;
1607 static int num = 1; 1826 mCurrentRegionName = regionName;
1608 ++count; 1827
1609 if (count % num == 0) 1828 parcelChanged();
1610 {
1611 LL_DEBUGS("Voice") << "region doesn't have ParcelVoiceInfoRequest capability. This is normal for a short time after teleporting, but bad if it persists for very long (" << count << ")." << LL_ENDL;
1612 if (num < 1000 && ++count2 == 10)
1613 {
1614 num *= 10;
1615 count2 = 0;
1616 }
1617 }
1618 } 1829 }
1830
1619 } 1831 }
1620 } 1832 }
1621 } 1833 }
@@ -1624,22 +1836,34 @@ void LLVoiceClient::stateMachine()
1624 { 1836 {
1625 //MARK: stateDisableCleanup 1837 //MARK: stateDisableCleanup
1626 case stateDisableCleanup: 1838 case stateDisableCleanup:
1627 // Clean up and reset everything. 1839 // Clean up and reset everything.
1840
1841 mVAPCapResponseID.setNull();
1842 mPIRCapResponseID.setNull();
1843
1844 if(isGatewayRunning())
1845 {
1846 killGateway();
1847 }
1848 logoutSendMessage();
1849 mConnected = false;
1850
1851
1628 closeSocket(); 1852 closeSocket();
1629 deleteAllSessions(); 1853 deleteAllSessions();
1630 deleteAllBuddies(); 1854 deleteAllBuddies();
1631 1855
1632 mConnectorHandle.clear(); 1856 mConnectorHandle.clear();
1633 mAccountHandle.clear(); 1857 mAccountHandle.clear();
1634 mAccountPassword.clear(); 1858 mAccountPassword.clear();
1635 mVoiceAccountServerURI.clear(); 1859 mVoiceAccountServerURI.clear();
1636 1860 mVAPRequested = false;
1637 setState(stateDisabled); 1861 setState(stateDisabled);
1638 break; 1862 break;
1639 1863
1640 //MARK: stateDisabled 1864 //MARK: stateDisabled
1641 case stateDisabled: 1865 case stateDisabled:
1642 if(mTuningMode || (mVoiceEnabled && !mAccountName.empty())) 1866 if(mTuningMode || (mVoiceEnabled && mAccountActive && !mAccountName.empty()))
1643 { 1867 {
1644 setState(stateStart); 1868 setState(stateStart);
1645 } 1869 }
@@ -1647,165 +1871,26 @@ void LLVoiceClient::stateMachine()
1647 1871
1648 //MARK: stateStart 1872 //MARK: stateStart
1649 case stateStart: 1873 case stateStart:
1650 if(gSavedSettings.getBOOL("CmdLineDisableVoice")) 1874 {
1875 bool have_region = (NULL != gAgent.getRegion() );
1876 if(mVoiceEnabled && !mVAPRequested && !mAccountName.empty() && have_region)
1651 { 1877 {
1652 // Voice is locked out, we must not launch the vivox daemon. 1878 mVAPRequested = true;
1653 setState(stateJail); 1879 requestVoiceAccountProvision();
1654 } 1880 }
1655 else if(!isGatewayRunning()) 1881 } break;
1656 {
1657 if(true)
1658 {
1659 // Launch the voice daemon
1660
1661 // *FIX:Mani - Using the executable dir instead
1662 // of mAppRODataDir, the working directory from which the app
1663 // is launched.
1664 //std::string exe_path = gDirUtilp->getAppRODataDir();
1665 std::string exe_path = gDirUtilp->getExecutableDir();
1666 exe_path += gDirUtilp->getDirDelimiter();
1667#if LL_DARWIN
1668 exe_path += "../Resources/";
1669#endif
1670 exe_path += gSavedSettings.getString("VoiceModule");
1671#if LL_WINDOWS
1672 exe_path += ".exe";
1673#endif
1674 // See if the vivox executable exists
1675 llstat s;
1676 if(!LLFile::stat(exe_path, &s))
1677 {
1678 // vivox executable exists. Build the command line and launch the daemon.
1679 // SLIM SDK: these arguments are no longer necessary.
1680// std::string args = " -p tcp -h -c";
1681 std::string args;
1682 std::string cmd;
1683 std::string loglevel = gSavedSettings.getString("VivoxDebugLevel");
1684
1685 if(loglevel.empty())
1686 {
1687 loglevel = "-1"; // turn logging off completely
1688 }
1689
1690 args += " -ll ";
1691 args += loglevel;
1692
1693 LL_DEBUGS("Voice") << "Args for SLVoice: " << args << LL_ENDL;
1694
1695#if LL_WINDOWS
1696 PROCESS_INFORMATION pinfo;
1697 STARTUPINFOA sinfo;
1698 memset(&sinfo, 0, sizeof(sinfo));
1699 std::string exe_dir = gDirUtilp->getAppRODataDir();
1700 cmd = gSavedSettings.getString("VoiceModule");
1701 cmd += ".exe";
1702 cmd += args;
1703
1704 // So retarded. Windows requires that the second parameter to CreateProcessA be a writable (non-const) string...
1705 char *args2 = new char[args.size() + 1];
1706 strcpy(args2, args.c_str());
1707
1708 if(!CreateProcessA(exe_path.c_str(), args2, NULL, NULL, FALSE, 0, NULL, exe_dir.c_str(), &sinfo, &pinfo))
1709 {
1710// DWORD dwErr = GetLastError();
1711 }
1712 else
1713 {
1714 // foo = pinfo.dwProcessId; // get your pid here if you want to use it later on
1715 // CloseHandle(pinfo.hProcess); // stops leaks - nothing else
1716 sGatewayHandle = pinfo.hProcess;
1717 CloseHandle(pinfo.hThread); // stops leaks - nothing else
1718 }
1719
1720 delete[] args2;
1721#else // LL_WINDOWS
1722 // This should be the same for mac and linux
1723 {
1724 std::vector<std::string> arglist;
1725 arglist.push_back(exe_path);
1726
1727 // Split the argument string into separate strings for each argument
1728 typedef boost::tokenizer<boost::char_separator<char> > tokenizer;
1729 boost::char_separator<char> sep(" ");
1730 tokenizer tokens(args, sep);
1731 tokenizer::iterator token_iter;
1732
1733 for(token_iter = tokens.begin(); token_iter != tokens.end(); ++token_iter)
1734 {
1735 arglist.push_back(*token_iter);
1736 }
1737
1738 // create an argv vector for the child process
1739 char **fakeargv = new char*[arglist.size() + 1];
1740 int i;
1741 for(i=0; i < arglist.size(); i++)
1742 fakeargv[i] = const_cast<char*>(arglist[i].c_str());
1743
1744 fakeargv[i] = NULL;
1745
1746 fflush(NULL); // flush all buffers before the child inherits them
1747 pid_t id = vfork();
1748 if(id == 0)
1749 {
1750 // child
1751 execv(exe_path.c_str(), fakeargv);
1752
1753 // If we reach this point, the exec failed.
1754 // Use _exit() instead of exit() per the vfork man page.
1755 _exit(0);
1756 }
1757
1758 // parent
1759 delete[] fakeargv;
1760 sGatewayPID = id;
1761 }
1762#endif // LL_WINDOWS
1763 mDaemonHost = LLHost(gSavedSettings.getString("VoiceHost").c_str(), gSavedSettings.getU32("VoicePort"));
1764 }
1765 else
1766 {
1767 LL_WARNS("Voice") << exe_path << " not found." << LL_ENDL;
1768 mVoiceEnabled = false;
1769 }
1770 }
1771 else
1772 {
1773 // SLIM SDK: port changed from 44124 to 44125.
1774 // We can connect to a client gateway running on another host. This is useful for testing.
1775 // To do this, launch the gateway on a nearby host like this:
1776 // vivox-gw.exe -p tcp -i 0.0.0.0:44125
1777 // and put that host's IP address here.
1778 mDaemonHost = LLHost(gSavedSettings.getString("VoiceHost"), gSavedSettings.getU32("VoicePort"));
1779 }
1780
1781 mUpdateTimer.start();
1782 mUpdateTimer.setTimerExpirySec(CONNECT_THROTTLE_SECONDS);
1783
1784 setState(stateDaemonLaunched);
1785
1786 // Dirty the states we'll need to sync with the daemon when it comes up.
1787 mPTTDirty = true;
1788 mMicVolumeDirty = true;
1789 mSpeakerVolumeDirty = true;
1790 mSpeakerMuteDirty = true;
1791 // These only need to be set if they're not default (i.e. empty string).
1792 mCaptureDeviceDirty = !mCaptureDevice.empty();
1793 mRenderDeviceDirty = !mRenderDevice.empty();
1794
1795 mMainSessionGroupHandle.clear();
1796 }
1797 break;
1798 1882
1799 //MARK: stateDaemonLaunched 1883 //MARK: stateDaemonLaunched
1800 case stateDaemonLaunched: 1884 case stateDaemonLaunched:
1801 if(mUpdateTimer.hasExpired()) 1885 if(mUpdateTimer.hasExpired())
1802 { 1886 {
1803 LL_DEBUGS("Voice") << "Connecting to vivox daemon" << LL_ENDL; 1887
1804
1805 mUpdateTimer.setTimerExpirySec(CONNECT_THROTTLE_SECONDS); 1888 mUpdateTimer.setTimerExpirySec(CONNECT_THROTTLE_SECONDS);
1806 1889
1807 if(!mSocket) 1890 if(!mSocket)
1808 { 1891 {
1892 LL_DEBUGS("VoiceDaemon") << "Connecting to voice daemon. Protocol: "
1893 << mDaemonScheme << LL_ENDL;
1809 mSocket = LLSocket::create(LLSocket::STREAM_TCP); 1894 mSocket = LLSocket::create(LLSocket::STREAM_TCP);
1810 } 1895 }
1811 1896
@@ -1817,6 +1902,7 @@ void LLVoiceClient::stateMachine()
1817 else 1902 else
1818 { 1903 {
1819 // If the connect failed, the socket may have been put into a bad state. Delete it. 1904 // If the connect failed, the socket may have been put into a bad state. Delete it.
1905 LL_DEBUGS("VoiceDaemon") << "voice daemon not ready yet, retrying" << LL_ENDL;
1820 closeSocket(); 1906 closeSocket();
1821 } 1907 }
1822 } 1908 }
@@ -1871,24 +1957,16 @@ void LLVoiceClient::stateMachine()
1871 } 1957 }
1872 else if(!mAccountName.empty() && mVoiceEnabled) 1958 else if(!mAccountName.empty() && mVoiceEnabled)
1873 { 1959 {
1874 LLViewerRegion *region = gAgent.getRegion(); 1960 if ( mAccountPassword.empty() )
1875
1876 if(region)
1877 { 1961 {
1878 if ( region->getCapability("ProvisionVoiceAccountRequest") != "" ) 1962 requestVoiceAccountProvision();
1879 { 1963 }
1880 if ( mAccountPassword.empty() ) 1964 else
1881 { 1965 {
1882 requestVoiceAccountProvision(); 1966 setState(stateConnectorStart);
1883 }
1884 setState(stateConnectorStart);
1885 }
1886 else
1887 {
1888 LL_DEBUGS("Voice") << "region doesn't have ProvisionVoiceAccountRequest capability!" << LL_ENDL;
1889 }
1890 } 1967 }
1891 } 1968 }
1969
1892 break; 1970 break;
1893 1971
1894 //MARK: stateMicTuningStart 1972 //MARK: stateMicTuningStart
@@ -2025,7 +2103,8 @@ void LLVoiceClient::stateMachine()
2025 if(mLoginRetryCount > MAX_LOGIN_RETRIES) 2103 if(mLoginRetryCount > MAX_LOGIN_RETRIES)
2026 { 2104 {
2027 LL_WARNS("Voice") << "too many login retries, giving up." << LL_ENDL; 2105 LL_WARNS("Voice") << "too many login retries, giving up." << LL_ENDL;
2028 setState(stateLoginFailed); 2106 mAccountActive = false;
2107 setState(stateDisableCleanup);
2029 } 2108 }
2030 else 2109 else
2031 { 2110 {
@@ -2569,7 +2648,7 @@ void LLVoiceClient::sessionGroupCreateSendMessage()
2569 2648
2570void LLVoiceClient::sessionCreateSendMessage(sessionState *session, bool startAudio, bool startText) 2649void LLVoiceClient::sessionCreateSendMessage(sessionState *session, bool startAudio, bool startText)
2571{ 2650{
2572 LL_DEBUGS("Voice") << "requesting create: " << session->mSIPURI << LL_ENDL; 2651 LL_DEBUGS("VoiceSession") << "requesting create: " << session->mSIPURI << LL_ENDL;
2573 2652
2574 session->mCreateInProgress = true; 2653 session->mCreateInProgress = true;
2575 if(startAudio) 2654 if(startAudio)
@@ -2605,7 +2684,7 @@ void LLVoiceClient::sessionCreateSendMessage(sessionState *session, bool startAu
2605 2684
2606void LLVoiceClient::sessionGroupAddSessionSendMessage(sessionState *session, bool startAudio, bool startText) 2685void LLVoiceClient::sessionGroupAddSessionSendMessage(sessionState *session, bool startAudio, bool startText)
2607{ 2686{
2608 LL_DEBUGS("Voice") << "requesting create: " << session->mSIPURI << LL_ENDL; 2687 LL_DEBUGS("VoiceSession") << "requesting create: " << session->mSIPURI << LL_ENDL;
2609 2688
2610 session->mCreateInProgress = true; 2689 session->mCreateInProgress = true;
2611 if(startAudio) 2690 if(startAudio)
@@ -2642,7 +2721,7 @@ void LLVoiceClient::sessionGroupAddSessionSendMessage(sessionState *session, boo
2642 2721
2643void LLVoiceClient::sessionMediaConnectSendMessage(sessionState *session) 2722void LLVoiceClient::sessionMediaConnectSendMessage(sessionState *session)
2644{ 2723{
2645 LL_DEBUGS("Voice") << "connecting audio to session handle: " << session->mHandle << LL_ENDL; 2724 LL_DEBUGS("VoiceSession") << "connecting audio to session handle: " << session->mHandle << LL_ENDL;
2646 2725
2647 session->mMediaConnectInProgress = true; 2726 session->mMediaConnectInProgress = true;
2648 2727
@@ -2660,7 +2739,7 @@ void LLVoiceClient::sessionMediaConnectSendMessage(sessionState *session)
2660 2739
2661void LLVoiceClient::sessionTextConnectSendMessage(sessionState *session) 2740void LLVoiceClient::sessionTextConnectSendMessage(sessionState *session)
2662{ 2741{
2663 LL_DEBUGS("Voice") << "connecting text to session handle: " << session->mHandle << LL_ENDL; 2742 LL_DEBUGS("VoiceSession") << "connecting text to session handle: " << session->mHandle << LL_ENDL;
2664 2743
2665 std::ostringstream stream; 2744 std::ostringstream stream;
2666 2745
@@ -2689,7 +2768,7 @@ void LLVoiceClient::leaveAudioSession()
2689{ 2768{
2690 if(mAudioSession) 2769 if(mAudioSession)
2691 { 2770 {
2692 LL_DEBUGS("Voice") << "leaving session: " << mAudioSession->mSIPURI << LL_ENDL; 2771 LL_DEBUGS("VoiceSession") << "leaving session: " << mAudioSession->mSIPURI << LL_ENDL;
2693 2772
2694 switch(getState()) 2773 switch(getState())
2695 { 2774 {
@@ -2724,7 +2803,7 @@ void LLVoiceClient::leaveAudioSession()
2724 } 2803 }
2725 else 2804 else
2726 { 2805 {
2727 LL_WARNS("Voice") << "called with no session handle" << LL_ENDL; 2806 LL_WARNS("VoiceSession") << "called with no session handle" << LL_ENDL;
2728 setState(stateSessionTerminated); 2807 setState(stateSessionTerminated);
2729 } 2808 }
2730 break; 2809 break;
@@ -2734,13 +2813,13 @@ void LLVoiceClient::leaveAudioSession()
2734 break; 2813 break;
2735 2814
2736 default: 2815 default:
2737 LL_WARNS("Voice") << "called from unknown state" << LL_ENDL; 2816 LL_WARNS("VoiceSession") << "called from unknown state" << LL_ENDL;
2738 break; 2817 break;
2739 } 2818 }
2740 } 2819 }
2741 else 2820 else
2742 { 2821 {
2743 LL_WARNS("Voice") << "called with no active session" << LL_ENDL; 2822 LL_WARNS("VoiceSession") << "called with no active session" << LL_ENDL;
2744 setState(stateSessionTerminated); 2823 setState(stateSessionTerminated);
2745 } 2824 }
2746} 2825}
@@ -2749,7 +2828,7 @@ void LLVoiceClient::sessionTerminateSendMessage(sessionState *session)
2749{ 2828{
2750 std::ostringstream stream; 2829 std::ostringstream stream;
2751 2830
2752 LL_DEBUGS("Voice") << "Sending Session.Terminate with handle " << session->mHandle << LL_ENDL; 2831 LL_DEBUGS("VoiceSession") << "Sending Session.Terminate with handle " << session->mHandle << LL_ENDL;
2753 stream 2832 stream
2754 << "<Request requestId=\"" << mCommandCookie++ << "\" action=\"Session.Terminate.1\">" 2833 << "<Request requestId=\"" << mCommandCookie++ << "\" action=\"Session.Terminate.1\">"
2755 << "<SessionHandle>" << session->mHandle << "</SessionHandle>" 2834 << "<SessionHandle>" << session->mHandle << "</SessionHandle>"
@@ -2762,7 +2841,7 @@ void LLVoiceClient::sessionGroupTerminateSendMessage(sessionState *session)
2762{ 2841{
2763 std::ostringstream stream; 2842 std::ostringstream stream;
2764 2843
2765 LL_DEBUGS("Voice") << "Sending SessionGroup.Terminate with handle " << session->mGroupHandle << LL_ENDL; 2844 LL_DEBUGS("VoiceSession") << "Sending SessionGroup.Terminate with handle " << session->mGroupHandle << LL_ENDL;
2766 stream 2845 stream
2767 << "<Request requestId=\"" << mCommandCookie++ << "\" action=\"SessionGroup.Terminate.1\">" 2846 << "<Request requestId=\"" << mCommandCookie++ << "\" action=\"SessionGroup.Terminate.1\">"
2768 << "<SessionGroupHandle>" << session->mGroupHandle << "</SessionGroupHandle>" 2847 << "<SessionGroupHandle>" << session->mGroupHandle << "</SessionGroupHandle>"
@@ -2775,7 +2854,7 @@ void LLVoiceClient::sessionMediaDisconnectSendMessage(sessionState *session)
2775{ 2854{
2776 std::ostringstream stream; 2855 std::ostringstream stream;
2777 2856
2778 LL_DEBUGS("Voice") << "Sending Session.MediaDisconnect with handle " << session->mHandle << LL_ENDL; 2857 LL_DEBUGS("VoiceSession") << "Sending Session.MediaDisconnect with handle " << session->mHandle << LL_ENDL;
2779 stream 2858 stream
2780 << "<Request requestId=\"" << mCommandCookie++ << "\" action=\"Session.MediaDisconnect.1\">" 2859 << "<Request requestId=\"" << mCommandCookie++ << "\" action=\"Session.MediaDisconnect.1\">"
2781 << "<SessionGroupHandle>" << session->mGroupHandle << "</SessionGroupHandle>" 2860 << "<SessionGroupHandle>" << session->mGroupHandle << "</SessionGroupHandle>"
@@ -2791,7 +2870,7 @@ void LLVoiceClient::sessionTextDisconnectSendMessage(sessionState *session)
2791{ 2870{
2792 std::ostringstream stream; 2871 std::ostringstream stream;
2793 2872
2794 LL_DEBUGS("Voice") << "Sending Session.TextDisconnect with handle " << session->mHandle << LL_ENDL; 2873 LL_DEBUGS("VoiceSession") << "Sending Session.TextDisconnect with handle " << session->mHandle << LL_ENDL;
2795 stream 2874 stream
2796 << "<Request requestId=\"" << mCommandCookie++ << "\" action=\"Session.TextDisconnect.1\">" 2875 << "<Request requestId=\"" << mCommandCookie++ << "\" action=\"Session.TextDisconnect.1\">"
2797 << "<SessionGroupHandle>" << session->mGroupHandle << "</SessionGroupHandle>" 2876 << "<SessionGroupHandle>" << session->mGroupHandle << "</SessionGroupHandle>"
@@ -2823,13 +2902,13 @@ void LLVoiceClient::getRenderDevicesSendMessage()
2823 2902
2824void LLVoiceClient::clearCaptureDevices() 2903void LLVoiceClient::clearCaptureDevices()
2825{ 2904{
2826 LL_DEBUGS("Voice") << "called" << LL_ENDL; 2905 LL_DEBUGS("VoiceDevice") << "called" << LL_ENDL;
2827 mCaptureDevices.clear(); 2906 mCaptureDevices.clear();
2828} 2907}
2829 2908
2830void LLVoiceClient::addCaptureDevice(const std::string& name) 2909void LLVoiceClient::addCaptureDevice(const std::string& name)
2831{ 2910{
2832 LL_DEBUGS("Voice") << name << LL_ENDL; 2911 LL_DEBUGS("VoiceDevice") << name << LL_ENDL;
2833 2912
2834 mCaptureDevices.push_back(name); 2913 mCaptureDevices.push_back(name);
2835} 2914}
@@ -2861,13 +2940,13 @@ void LLVoiceClient::setCaptureDevice(const std::string& name)
2861 2940
2862void LLVoiceClient::clearRenderDevices() 2941void LLVoiceClient::clearRenderDevices()
2863{ 2942{
2864 LL_DEBUGS("Voice") << "called" << LL_ENDL; 2943 LL_DEBUGS("VoiceDevice") << "called" << LL_ENDL;
2865 mRenderDevices.clear(); 2944 mRenderDevices.clear();
2866} 2945}
2867 2946
2868void LLVoiceClient::addRenderDevice(const std::string& name) 2947void LLVoiceClient::addRenderDevice(const std::string& name)
2869{ 2948{
2870 LL_DEBUGS("Voice") << name << LL_ENDL; 2949 LL_DEBUGS("VoiceDevice") << name << LL_ENDL;
2871 mRenderDevices.push_back(name); 2950 mRenderDevices.push_back(name);
2872} 2951}
2873 2952
@@ -2951,7 +3030,7 @@ void LLVoiceClient::tuningRenderStopSendMessage()
2951 3030
2952void LLVoiceClient::tuningCaptureStartSendMessage(int duration) 3031void LLVoiceClient::tuningCaptureStartSendMessage(int duration)
2953{ 3032{
2954 LL_DEBUGS("Voice") << "sending CaptureAudioStart" << LL_ENDL; 3033 LL_DEBUGS("VoiceDevice") << "sending CaptureAudioStart" << LL_ENDL;
2955 3034
2956 std::ostringstream stream; 3035 std::ostringstream stream;
2957 stream 3036 stream
@@ -2964,7 +3043,7 @@ void LLVoiceClient::tuningCaptureStartSendMessage(int duration)
2964 3043
2965void LLVoiceClient::tuningCaptureStopSendMessage() 3044void LLVoiceClient::tuningCaptureStopSendMessage()
2966{ 3045{
2967 LL_DEBUGS("Voice") << "sending CaptureAudioStop" << LL_ENDL; 3046 LL_DEBUGS("VoiceDevice") << "sending CaptureAudioStop" << LL_ENDL;
2968 3047
2969 std::ostringstream stream; 3048 std::ostringstream stream;
2970 stream 3049 stream
@@ -3038,12 +3117,8 @@ void LLVoiceClient::daemonDied()
3038 3117
3039void LLVoiceClient::giveUp() 3118void LLVoiceClient::giveUp()
3040{ 3119{
3041 // All has failed. Clean up and stop trying. 3120 mAccountActive = false;
3042 closeSocket(); 3121 setState(stateDisableCleanup);
3043 deleteAllSessions();
3044 deleteAllBuddies();
3045
3046 setState(stateJail);
3047} 3122}
3048 3123
3049static void oldSDKTransform (LLVector3 &left, LLVector3 &up, LLVector3 &at, LLVector3d &pos, LLVector3 &vel) 3124static void oldSDKTransform (LLVector3 &left, LLVector3 &up, LLVector3 &at, LLVector3d &pos, LLVector3 &vel)
@@ -3378,7 +3453,7 @@ void LLVoiceClient::buildSetCaptureDevice(std::ostringstream &stream)
3378{ 3453{
3379 if(mCaptureDeviceDirty) 3454 if(mCaptureDeviceDirty)
3380 { 3455 {
3381 LL_DEBUGS("Voice") << "Setting input device = \"" << mCaptureDevice << "\"" << LL_ENDL; 3456 LL_DEBUGS("VoiceDevice") << "Setting input device = \"" << mCaptureDevice << "\"" << LL_ENDL;
3382 3457
3383 stream 3458 stream
3384 << "<Request requestId=\"" << mCommandCookie++ << "\" action=\"Aux.SetCaptureDevice.1\">" 3459 << "<Request requestId=\"" << mCommandCookie++ << "\" action=\"Aux.SetCaptureDevice.1\">"
@@ -4099,29 +4174,29 @@ void LLVoiceClient::reapSession(sessionState *session)
4099 { 4174 {
4100 if(!session->mHandle.empty()) 4175 if(!session->mHandle.empty())
4101 { 4176 {
4102 LL_DEBUGS("Voice") << "NOT deleting session " << session->mSIPURI << " (non-null session handle)" << LL_ENDL; 4177 LL_DEBUGS("VoiceSession") << "NOT deleting session " << session->mSIPURI << " (non-null session handle)" << LL_ENDL;
4103 } 4178 }
4104 else if(session->mCreateInProgress) 4179 else if(session->mCreateInProgress)
4105 { 4180 {
4106 LL_DEBUGS("Voice") << "NOT deleting session " << session->mSIPURI << " (create in progress)" << LL_ENDL; 4181 LL_DEBUGS("VoiceSession") << "NOT deleting session " << session->mSIPURI << " (create in progress)" << LL_ENDL;
4107 } 4182 }
4108 else if(session->mMediaConnectInProgress) 4183 else if(session->mMediaConnectInProgress)
4109 { 4184 {
4110 LL_DEBUGS("Voice") << "NOT deleting session " << session->mSIPURI << " (connect in progress)" << LL_ENDL; 4185 LL_DEBUGS("VoiceSession") << "NOT deleting session " << session->mSIPURI << " (connect in progress)" << LL_ENDL;
4111 } 4186 }
4112 else if(session == mAudioSession) 4187 else if(session == mAudioSession)
4113 { 4188 {
4114 LL_DEBUGS("Voice") << "NOT deleting session " << session->mSIPURI << " (it's the current session)" << LL_ENDL; 4189 LL_DEBUGS("VoiceSession") << "NOT deleting session " << session->mSIPURI << " (it's the current session)" << LL_ENDL;
4115 } 4190 }
4116 else if(session == mNextAudioSession) 4191 else if(session == mNextAudioSession)
4117 { 4192 {
4118 LL_DEBUGS("Voice") << "NOT deleting session " << session->mSIPURI << " (it's the next session)" << LL_ENDL; 4193 LL_DEBUGS("VoiceSession") << "NOT deleting session " << session->mSIPURI << " (it's the next session)" << LL_ENDL;
4119 } 4194 }
4120 else 4195 else
4121 { 4196 {
4122 // TODO: Question: Should we check for queued text messages here? 4197 // TODO: Question: Should we check for queued text messages here?
4123 // We don't have a reason to keep tracking this session, so just delete it. 4198 // We don't have a reason to keep tracking this session, so just delete it.
4124 LL_DEBUGS("Voice") << "deleting session " << session->mSIPURI << LL_ENDL; 4199 LL_DEBUGS("VoiceSession") << "deleting session " << session->mSIPURI << LL_ENDL;
4125 deleteSession(session); 4200 deleteSession(session);
4126 session = NULL; 4201 session = NULL;
4127 } 4202 }
@@ -4179,17 +4254,17 @@ void LLVoiceClient::leftAudioSession(
4179 case stateJoinSessionFailed: 4254 case stateJoinSessionFailed:
4180 case stateJoinSessionFailedWaiting: 4255 case stateJoinSessionFailedWaiting:
4181 // normal transition 4256 // normal transition
4182 LL_DEBUGS("Voice") << "left session " << session->mHandle << " in state " << state2string(getState()) << LL_ENDL; 4257 LL_DEBUGS("VoiceSession") << "left session " << session->mHandle << " in state " << state2string(getState()) << LL_ENDL;
4183 setState(stateSessionTerminated); 4258 setState(stateSessionTerminated);
4184 break; 4259 break;
4185 4260
4186 case stateSessionTerminated: 4261 case stateSessionTerminated:
4187 // this will happen sometimes -- there are cases where we send the terminate and then go straight to this state. 4262 // this will happen sometimes -- there are cases where we send the terminate and then go straight to this state.
4188 LL_WARNS("Voice") << "left session " << session->mHandle << " in state " << state2string(getState()) << LL_ENDL; 4263 LL_WARNS("VoiceSession") << "left session " << session->mHandle << " in state " << state2string(getState()) << LL_ENDL;
4189 break; 4264 break;
4190 4265
4191 default: 4266 default:
4192 LL_WARNS("Voice") << "unexpected SessionStateChangeEvent (left session) in state " << state2string(getState()) << LL_ENDL; 4267 LL_WARNS("VoiceSession") << "unexpected SessionStateChangeEvent (left session) in state " << state2string(getState()) << LL_ENDL;
4193 setState(stateSessionTerminated); 4268 setState(stateSessionTerminated);
4194 break; 4269 break;
4195 } 4270 }
@@ -4249,7 +4324,7 @@ void LLVoiceClient::mediaStreamUpdatedEvent(
4249{ 4324{
4250 sessionState *session = findSession(sessionHandle); 4325 sessionState *session = findSession(sessionHandle);
4251 4326
4252 LL_DEBUGS("Voice") << "session " << sessionHandle << ", status code " << statusCode << ", string \"" << statusString << "\"" << LL_ENDL; 4327 LL_DEBUGS("VoiceSession") << "session " << sessionHandle << ", status code " << statusCode << ", string \"" << statusString << "\"" << LL_ENDL;
4253 4328
4254 if(session) 4329 if(session)
4255 { 4330 {
@@ -4314,7 +4389,7 @@ void LLVoiceClient::mediaStreamUpdatedEvent(
4314 } 4389 }
4315 else 4390 else
4316 { 4391 {
4317 LL_WARNS("Voice") << "session " << sessionHandle << "not found"<< LL_ENDL; 4392 LL_WARNS("VoiceSession") << "session " << sessionHandle << "not found"<< LL_ENDL;
4318 } 4393 }
4319} 4394}
4320 4395
@@ -4435,7 +4510,7 @@ void LLVoiceClient::participantRemovedEvent(
4435 } 4510 }
4436 else 4511 else
4437 { 4512 {
4438 LL_DEBUGS("Voice") << "unknown session " << sessionHandle << LL_ENDL; 4513 LL_DEBUGS("VoiceSession") << "unknown session " << sessionHandle << LL_ENDL;
4439 } 4514 }
4440} 4515}
4441 4516
@@ -4479,7 +4554,7 @@ void LLVoiceClient::participantUpdatedEvent(
4479 } 4554 }
4480 else 4555 else
4481 { 4556 {
4482 LL_WARNS("Voice") << "unknown session " << sessionHandle << LL_ENDL; 4557 LL_WARNS("VoiceSession") << "unknown session " << sessionHandle << LL_ENDL;
4483 } 4558 }
4484} 4559}
4485 4560
@@ -5058,22 +5133,34 @@ LLVoiceClient::participantState* LLVoiceClient::findParticipantByID(const LLUUID
5058 5133
5059void LLVoiceClient::parcelChanged() 5134void LLVoiceClient::parcelChanged()
5060{ 5135{
5061 if(getState() >= stateNoChannel) 5136 if( (getState() >= stateNoChannel) && !inNonSpatialChannel() )
5062 { 5137 {
5063 // If the user is logged in, start a channel lookup. 5138 // If the user is logged in, start a channel lookup,
5064 LL_DEBUGS("Voice") << "sending ParcelVoiceInfoRequest (" << mCurrentRegionName << ", " << mCurrentParcelLocalID << ")" << LL_ENDL; 5139 // but not if already in a private call/conference.
5140 mAccountActive = true;
5065 5141
5066 std::string url = gAgent.getRegion()->getCapability("ParcelVoiceInfoRequest"); 5142 std::string url = gAgent.getRegion()->getCapability("ParcelVoiceInfoRequest");
5067 LLSD data; 5143 LL_DEBUGS("VoiceCaps") << "sending ParcelVoiceInfoRequest (" << mCurrentRegionName << ", " << mCurrentParcelLocalID << ")" << " cap url:" << url << LL_ENDL;
5068 LLHTTPClient::post( 5144 if(! url.empty() )
5069 url, 5145 {
5070 data, 5146 mPIRCapResponseID.generate();
5071 new LLVoiceClientCapResponder); 5147 LLSD data;
5148 LLHTTPClient::post(
5149 url,
5150 data,
5151 new LLVoiceClientCapResponder(mPIRCapResponseID));
5152 }
5153 else
5154 {
5155 mAccountActive = false;
5156 setState(stateDisableCleanup);
5157 }
5072 } 5158 }
5073 else 5159 else
5074 { 5160 {
5161 mAccountActive = true;
5075 // The transition to stateNoChannel needs to kick this off again. 5162 // The transition to stateNoChannel needs to kick this off again.
5076 LL_WARNS("Voice") << "not logged in yet, deferring" << LL_ENDL; 5163 LL_DEBUGS("Voice") << "not logged in yet, deferring" << LL_ENDL;
5077 } 5164 }
5078} 5165}
5079 5166
@@ -5086,12 +5173,40 @@ void LLVoiceClient::switchChannel(
5086{ 5173{
5087 bool needsSwitch = false; 5174 bool needsSwitch = false;
5088 5175
5089 LL_DEBUGS("Voice") 5176 LL_DEBUGS("VoiceSession")
5090 << "called in state " << state2string(getState()) 5177 << "Switch channel called in state " << state2string(getState())
5091 << " with uri \"" << uri << "\"" 5178 << " with uri \"" << uri << "\""
5092 << (spatial?", spatial is true":", spatial is false") 5179 << (spatial?", spatial is true":", spatial is false")
5093 << LL_ENDL; 5180 << LL_ENDL;
5094 5181
5182 size_t new_uri_find_sip = std::string::npos;
5183 size_t old_uri_find_sip = std::string::npos;
5184 if(!uri.empty())
5185 {
5186 new_uri_find_sip = uri.find("sip:");
5187 }
5188
5189 if( mNextAudioSession
5190 && !( mNextAudioSession->mSIPURI.empty() )
5191 && (mNextAudioSession->mSIPURI != uri) )
5192 {
5193 old_uri_find_sip = mNextAudioSession->mSIPURI.find("sip:");
5194 }
5195 else
5196 {
5197
5198 // just logged in or voice disabled land in SL,
5199 // anyway right daemon is already up
5200 old_uri_find_sip = new_uri_find_sip;
5201 }
5202
5203 if(old_uri_find_sip != new_uri_find_sip)
5204 {
5205 mAccountActive = true;
5206 setState(stateDisableCleanup);
5207 return;
5208 }
5209
5095 switch(getState()) 5210 switch(getState())
5096 { 5211 {
5097 case stateJoinSessionFailed: 5212 case stateJoinSessionFailed:
@@ -5148,7 +5263,7 @@ void LLVoiceClient::switchChannel(
5148 if(uri.empty()) 5263 if(uri.empty())
5149 { 5264 {
5150 // Leave any channel we may be in 5265 // Leave any channel we may be in
5151 LL_DEBUGS("Voice") << "leaving channel" << LL_ENDL; 5266 LL_DEBUGS("VoiceSession") << "leaving channel" << LL_ENDL;
5152 5267
5153 sessionState *oldSession = mNextAudioSession; 5268 sessionState *oldSession = mNextAudioSession;
5154 mNextAudioSession = NULL; 5269 mNextAudioSession = NULL;
@@ -5160,7 +5275,7 @@ void LLVoiceClient::switchChannel(
5160 } 5275 }
5161 else 5276 else
5162 { 5277 {
5163 LL_DEBUGS("Voice") << "switching to channel " << uri << LL_ENDL; 5278 LL_DEBUGS("VoiceSession") << "switching to channel " << uri << LL_ENDL;
5164 5279
5165 mNextAudioSession = addSession(uri); 5280 mNextAudioSession = addSession(uri);
5166 mNextAudioSession->mHash = hash; 5281 mNextAudioSession->mHash = hash;
@@ -5205,8 +5320,14 @@ void LLVoiceClient::setNonSpatialChannel(
5205 5320
5206void LLVoiceClient::setSpatialChannel( 5321void LLVoiceClient::setSpatialChannel(
5207 const std::string &uri, 5322 const std::string &uri,
5208 const std::string &credentials) 5323 const std::string &credentials,
5324 const LLUUID& response_id)
5209{ 5325{
5326 if (response_id != mPIRCapResponseID)
5327 {
5328 return;
5329 }
5330
5210 mSpatialSessionURI = uri; 5331 mSpatialSessionURI = uri;
5211 mSpatialSessionCredentials = credentials; 5332 mSpatialSessionCredentials = credentials;
5212 mAreaVoiceDisabled = mSpatialSessionURI.empty(); 5333 mAreaVoiceDisabled = mSpatialSessionURI.empty();
@@ -5282,7 +5403,7 @@ bool LLVoiceClient::sendTextMessage(const LLUUID& participant_id, const std::str
5282 } 5403 }
5283 else 5404 else
5284 { 5405 {
5285 LL_DEBUGS("Voice") << "Session not found for participant ID " << participant_id << LL_ENDL; 5406 LL_DEBUGS("VoiceSession") << "Session not found for participant ID " << participant_id << LL_ENDL;
5286 } 5407 }
5287 5408
5288 return result; 5409 return result;
@@ -5331,7 +5452,7 @@ void LLVoiceClient::endUserIMSession(const LLUUID &uuid)
5331 } 5452 }
5332 else 5453 else
5333 { 5454 {
5334 LL_DEBUGS("Voice") << "Session not found for participant ID " << uuid << LL_ENDL; 5455 LL_DEBUGS("VoiceSession") << "Session not found for participant ID " << uuid << LL_ENDL;
5335 } 5456 }
5336} 5457}
5337 5458
@@ -5452,7 +5573,7 @@ void LLVoiceClient::declineInvite(std::string &sessionHandle)
5452 5573
5453void LLVoiceClient::leaveNonSpatialChannel() 5574void LLVoiceClient::leaveNonSpatialChannel()
5454{ 5575{
5455 LL_DEBUGS("Voice") 5576 LL_DEBUGS("VoiceSession")
5456 << "called in state " << state2string(getState()) 5577 << "called in state " << state2string(getState())
5457 << LL_ENDL; 5578 << LL_ENDL;
5458 5579
@@ -5644,6 +5765,18 @@ bool LLVoiceClient::inSpatialChannel(void)
5644 return result; 5765 return result;
5645} 5766}
5646 5767
5768bool LLVoiceClient::inNonSpatialChannel(void)
5769{
5770 bool result = false;
5771
5772 if(mAudioSession)
5773 result = !(mAudioSession->mIsSpatial);
5774 if(mNextAudioSession)
5775 result |= !(mNextAudioSession->mIsSpatial);
5776
5777 return result;
5778}
5779
5647std::string LLVoiceClient::getAudioSessionURI() 5780std::string LLVoiceClient::getAudioSessionURI()
5648{ 5781{
5649 std::string result; 5782 std::string result;
@@ -6397,7 +6530,7 @@ LLVoiceClient::sessionState *LLVoiceClient::addSession(const std::string &uri, c
6397 { 6530 {
6398 // No existing session found. 6531 // No existing session found.
6399 6532
6400 LL_DEBUGS("Voice") << "adding new session: handle " << handle << " URI " << uri << LL_ENDL; 6533 LL_DEBUGS("VoiceSession") << "adding new session: handle " << handle << " URI " << uri << LL_ENDL;
6401 result = new sessionState(); 6534 result = new sessionState();
6402 result->mSIPURI = uri; 6535 result->mSIPURI = uri;
6403 result->mHandle = handle; 6536 result->mHandle = handle;
@@ -6416,7 +6549,7 @@ LLVoiceClient::sessionState *LLVoiceClient::addSession(const std::string &uri, c
6416 if(uri != result->mSIPURI) 6549 if(uri != result->mSIPURI)
6417 { 6550 {
6418 // TODO: Should this be an internal error? 6551 // TODO: Should this be an internal error?
6419 LL_DEBUGS("Voice") << "changing uri from " << result->mSIPURI << " to " << uri << LL_ENDL; 6552 LL_DEBUGS("VoiceSession") << "changing uri from " << result->mSIPURI << " to " << uri << LL_ENDL;
6420 setSessionURI(result, uri); 6553 setSessionURI(result, uri);
6421 } 6554 }
6422 6555
@@ -6425,17 +6558,17 @@ LLVoiceClient::sessionState *LLVoiceClient::addSession(const std::string &uri, c
6425 if(handle.empty()) 6558 if(handle.empty())
6426 { 6559 {
6427 // There's at least one race condition where where addSession was clearing an existing session handle, which caused things to break. 6560 // There's at least one race condition where where addSession was clearing an existing session handle, which caused things to break.
6428 LL_DEBUGS("Voice") << "NOT clearing handle " << result->mHandle << LL_ENDL; 6561 LL_DEBUGS("VoiceSession") << "NOT clearing handle " << result->mHandle << LL_ENDL;
6429 } 6562 }
6430 else 6563 else
6431 { 6564 {
6432 // TODO: Should this be an internal error? 6565 // TODO: Should this be an internal error?
6433 LL_DEBUGS("Voice") << "changing handle from " << result->mHandle << " to " << handle << LL_ENDL; 6566 LL_DEBUGS("VoiceSession") << "changing handle from " << result->mHandle << " to " << handle << LL_ENDL;
6434 setSessionHandle(result, handle); 6567 setSessionHandle(result, handle);
6435 } 6568 }
6436 } 6569 }
6437 6570
6438 LL_DEBUGS("Voice") << "returning existing session: handle " << handle << " URI " << uri << LL_ENDL; 6571 LL_DEBUGS("VoiceSession") << "returning existing session: handle " << handle << " URI " << uri << LL_ENDL;
6439 } 6572 }
6440 6573
6441 verifySessionState(); 6574 verifySessionState();
@@ -6455,14 +6588,14 @@ void LLVoiceClient::setSessionHandle(sessionState *session, const std::string &h
6455 { 6588 {
6456 if(iter->second != session) 6589 if(iter->second != session)
6457 { 6590 {
6458 LL_ERRS("Voice") << "Internal error: session mismatch!" << LL_ENDL; 6591 LL_ERRS("VoiceSession") << "Internal error: session mismatch!" << LL_ENDL;
6459 } 6592 }
6460 6593
6461 mSessionsByHandle.erase(iter); 6594 mSessionsByHandle.erase(iter);
6462 } 6595 }
6463 else 6596 else
6464 { 6597 {
6465 LL_ERRS("Voice") << "Internal error: session handle not found in map!" << LL_ENDL; 6598 LL_ERRS("VoiceSession") << "Internal error: session handle not found in map!" << LL_ENDL;
6466 } 6599 }
6467 } 6600 }
6468 6601
@@ -6494,7 +6627,7 @@ void LLVoiceClient::deleteSession(sessionState *session)
6494 { 6627 {
6495 if(iter->second != session) 6628 if(iter->second != session)
6496 { 6629 {
6497 LL_ERRS("Voice") << "Internal error: session mismatch" << LL_ENDL; 6630 LL_ERRS("VoiceSession") << "Internal error: session mismatch" << LL_ENDL;
6498 } 6631 }
6499 mSessionsByHandle.erase(iter); 6632 mSessionsByHandle.erase(iter);
6500 } 6633 }
@@ -6525,7 +6658,7 @@ void LLVoiceClient::deleteSession(sessionState *session)
6525 6658
6526void LLVoiceClient::deleteAllSessions() 6659void LLVoiceClient::deleteAllSessions()
6527{ 6660{
6528 LL_DEBUGS("Voice") << "called" << LL_ENDL; 6661 LL_DEBUGS("VoiceSession") << "called" << LL_ENDL;
6529 6662
6530 while(!mSessions.empty()) 6663 while(!mSessions.empty())
6531 { 6664 {
@@ -6534,20 +6667,20 @@ void LLVoiceClient::deleteAllSessions()
6534 6667
6535 if(!mSessionsByHandle.empty()) 6668 if(!mSessionsByHandle.empty())
6536 { 6669 {
6537 LL_ERRS("Voice") << "Internal error: empty session map, non-empty handle map" << LL_ENDL; 6670 LL_ERRS("VoiceSession") << "Internal error: empty session map, non-empty handle map" << LL_ENDL;
6538 } 6671 }
6539} 6672}
6540 6673
6541void LLVoiceClient::verifySessionState(void) 6674void LLVoiceClient::verifySessionState(void)
6542{ 6675{
6543 // This is mostly intended for debugging problems with session state management. 6676 // This is mostly intended for debugging problems with session state management.
6544 LL_DEBUGS("Voice") << "Total session count: " << mSessions.size() << " , session handle map size: " << mSessionsByHandle.size() << LL_ENDL; 6677 LL_DEBUGS("VoiceSession") << "Total session count: " << mSessions.size() << " , session handle map size: " << mSessionsByHandle.size() << LL_ENDL;
6545 6678
6546 for(sessionIterator iter = sessionsBegin(); iter != sessionsEnd(); iter++) 6679 for(sessionIterator iter = sessionsBegin(); iter != sessionsEnd(); iter++)
6547 { 6680 {
6548 sessionState *session = *iter; 6681 sessionState *session = *iter;
6549 6682
6550 LL_DEBUGS("Voice") << "session " << session << ": handle " << session->mHandle << ", URI " << session->mSIPURI << LL_ENDL; 6683 LL_DEBUGS("VoiceSession") << "session " << session << ": handle " << session->mHandle << ", URI " << session->mSIPURI << LL_ENDL;
6551 6684
6552 if(!session->mHandle.empty()) 6685 if(!session->mHandle.empty())
6553 { 6686 {
@@ -6555,13 +6688,13 @@ void LLVoiceClient::verifySessionState(void)
6555 sessionMap::iterator i2 = mSessionsByHandle.find(&(session->mHandle)); 6688 sessionMap::iterator i2 = mSessionsByHandle.find(&(session->mHandle));
6556 if(i2 == mSessionsByHandle.end()) 6689 if(i2 == mSessionsByHandle.end())
6557 { 6690 {
6558 LL_ERRS("Voice") << "internal error (handle " << session->mHandle << " not found in session map)" << LL_ENDL; 6691 LL_ERRS("VoiceSession") << "internal error (handle " << session->mHandle << " not found in session map)" << LL_ENDL;
6559 } 6692 }
6560 else 6693 else
6561 { 6694 {
6562 if(i2->second != session) 6695 if(i2->second != session)
6563 { 6696 {
6564 LL_ERRS("Voice") << "internal error (handle " << session->mHandle << " in session map points to another session)" << LL_ENDL; 6697 LL_ERRS("VoiceSession") << "internal error (handle " << session->mHandle << " in session map points to another session)" << LL_ENDL;
6565 } 6698 }
6566 } 6699 }
6567 } 6700 }
@@ -6574,13 +6707,13 @@ void LLVoiceClient::verifySessionState(void)
6574 sessionIterator i2 = mSessions.find(session); 6707 sessionIterator i2 = mSessions.find(session);
6575 if(i2 == mSessions.end()) 6708 if(i2 == mSessions.end())
6576 { 6709 {
6577 LL_ERRS("Voice") << "internal error (session for handle " << session->mHandle << " not found in session map)" << LL_ENDL; 6710 LL_ERRS("VoiceSession") << "internal error (session for handle " << session->mHandle << " not found in session map)" << LL_ENDL;
6578 } 6711 }
6579 else 6712 else
6580 { 6713 {
6581 if(session->mHandle != (*i2)->mHandle) 6714 if(session->mHandle != (*i2)->mHandle)
6582 { 6715 {
6583 LL_ERRS("Voice") << "internal error (session for handle " << session->mHandle << " points to session with different handle " << (*i2)->mHandle << ")" << LL_ENDL; 6716 LL_ERRS("VoiceSession") << "internal error (session for handle " << session->mHandle << " points to session with different handle " << (*i2)->mHandle << ")" << LL_ENDL;
6584 } 6717 }
6585 } 6718 }
6586 } 6719 }
@@ -7010,6 +7143,8 @@ class LLViewerParcelVoiceInfo : public LLHTTPNode
7010 { 7143 {
7011 LLSD body = input["body"]; 7144 LLSD body = input["body"];
7012 7145
7146 LL_DEBUGS("VoiceCaps") << "ParcelVoiceInfo response: "
7147 << ll_pretty_print_sd(input) << LL_ENDL;
7013 //body has "region_name" (str), "parcel_local_id"(int), 7148 //body has "region_name" (str), "parcel_local_id"(int),
7014 //"voice_credentials" (map). 7149 //"voice_credentials" (map).
7015 7150
@@ -7036,7 +7171,10 @@ class LLViewerParcelVoiceInfo : public LLHTTPNode
7036 voice_credentials["channel_credentials"].asString(); 7171 voice_credentials["channel_credentials"].asString();
7037 } 7172 }
7038 7173
7039 gVoiceClient->setSpatialChannel(uri, credentials); 7174 LLUUID response_id;
7175 response_id.generate();
7176 gVoiceClient->setPIRCapResponseID(response_id);
7177 gVoiceClient->setSpatialChannel(uri, credentials, response_id);
7040 } 7178 }
7041 } 7179 }
7042 } 7180 }
@@ -7050,10 +7188,13 @@ class LLViewerRequiredVoiceVersion : public LLHTTPNode
7050 const LLSD& context, 7188 const LLSD& context,
7051 const LLSD& input) const 7189 const LLSD& input) const
7052 { 7190 {
7191
7053 //You received this messsage (most likely on region cross or 7192 //You received this messsage (most likely on region cross or
7054 //teleport) 7193 //teleport)
7055 if ( input.has("body") && input["body"].has("major_version") ) 7194 if ( input.has("body") && input["body"].has("major_version") )
7056 { 7195 {
7196 LL_DEBUGS("VoiceCaps") << "RequiredVoiceVersion response: "
7197 << ll_pretty_print_sd(input)<< LL_ENDL;
7057 int major_voice_version = 7198 int major_voice_version =
7058 input["body"]["major_version"].asInteger(); 7199 input["body"]["major_version"].asInteger();
7059// int minor_voice_version = 7200// int minor_voice_version =
diff --git a/linden/indra/newview/llvoiceclient.h b/linden/indra/newview/llvoiceclient.h
index 9ef3be9..fb59b4e 100644
--- a/linden/indra/newview/llvoiceclient.h
+++ b/linden/indra/newview/llvoiceclient.h
@@ -424,11 +424,15 @@ static void updatePosition(void);
424 const std::string& account_name, 424 const std::string& account_name,
425 const std::string& password, 425 const std::string& password,
426 const std::string& voice_sip_uri_hostname, 426 const std::string& voice_sip_uri_hostname,
427 const std::string& voice_account_server_uri); 427 const std::string& voice_account_server_uri,
428 const LLUUID& response_id);
429
428 void loginSendMessage(); 430 void loginSendMessage();
429 void logout(); 431 void logout();
430 void logoutSendMessage(); 432 void logoutSendMessage();
431 433
434 void loadDaemon(const std::string& scheme);
435
432 void accountListBlockRulesSendMessage(); 436 void accountListBlockRulesSendMessage();
433 void accountListAutoAcceptRulesSendMessage(); 437 void accountListAutoAcceptRulesSendMessage();
434 438
@@ -474,7 +478,8 @@ static void updatePosition(void);
474 const std::string &credentials); 478 const std::string &credentials);
475 void setSpatialChannel( 479 void setSpatialChannel(
476 const std::string &uri, 480 const std::string &uri,
477 const std::string &credentials); 481 const std::string &credentials,
482 const LLUUID& response_id);
478 // start a voice session with the specified user 483 // start a voice session with the specified user
479 void callUser(const LLUUID &uuid); 484 void callUser(const LLUUID &uuid);
480 485
@@ -519,7 +524,7 @@ static void updatePosition(void);
519 524
520 void close(); 525 void close();
521 void start(); 526 void start();
522 527 void setPIRCapResponseID(const LLUUID& response_id){ mPIRCapResponseID = response_id; }
523 private: 528 private:
524 529
525 // internal state for a simple state machine. This is used to deal with the asynchronous nature of some of the messages. 530 // internal state for a simple state machine. This is used to deal with the asynchronous nature of some of the messages.
@@ -595,7 +600,13 @@ static void updatePosition(void);
595 std::string mAccountDisplayName; 600 std::string mAccountDisplayName;
596 std::string mAccountFirstName; 601 std::string mAccountFirstName;
597 std::string mAccountLastName; 602 std::string mAccountLastName;
598 603
604 bool mAccountActive;
605 bool mVAPRequested;
606 std::string mDaemonScheme;
607 LLUUID mVAPCapResponseID;
608 LLUUID mPIRCapResponseID;
609
599 bool mTuningMode; 610 bool mTuningMode;
600 float mTuningEnergy; 611 float mTuningEnergy;
601 std::string mTuningAudioFile; 612 std::string mTuningAudioFile;
@@ -667,6 +678,7 @@ static std::string displayNameFromAvatar(LLVOAvatar *avatar);
667static std::string nameFromsipURI(const std::string &uri); 678static std::string nameFromsipURI(const std::string &uri);
668 679
669 bool inSpatialChannel(void); 680 bool inSpatialChannel(void);
681 bool inNonSpatialChannel(void);
670 std::string getAudioSessionURI(); 682 std::string getAudioSessionURI();
671 std::string getAudioSessionHandle(); 683 std::string getAudioSessionHandle();
672 684
diff --git a/linden/indra/newview/llvovolume.cpp b/linden/indra/newview/llvovolume.cpp
index 4a53d4e..8d5bfb4 100644
--- a/linden/indra/newview/llvovolume.cpp
+++ b/linden/indra/newview/llvovolume.cpp
@@ -93,7 +93,6 @@ LLVOVolume::LLVOVolume(const LLUUID &id, const LLPCode pcode, LLViewerRegion *re
93 mRelativeXformInvTrans.setIdentity(); 93 mRelativeXformInvTrans.setIdentity();
94 94
95 mLOD = MIN_LOD; 95 mLOD = MIN_LOD;
96 mSculptLevel = -2;
97 mTextureAnimp = NULL; 96 mTextureAnimp = NULL;
98 mVObjRadius = LLVector3(1,1,0.5f).length(); 97 mVObjRadius = LLVector3(1,1,0.5f).length();
99 mNumFaces = 0; 98 mNumFaces = 0;
@@ -507,9 +506,8 @@ void LLVOVolume::updateTextureVirtualSize()
507 506
508 if (isSculpted()) 507 if (isSculpted())
509 { 508 {
510 LLSculptParams *sculpt_params = (LLSculptParams *)getParameterEntry(LLNetworkData::PARAMS_SCULPT); 509 updateSculptTexture();
511 LLUUID id = sculpt_params->getSculptTexture(); 510
512 mSculptTexture = gImageList.getImage(id);
513 if (mSculptTexture.notNull()) 511 if (mSculptTexture.notNull())
514 { 512 {
515 mSculptTexture->setBoostLevel(llmax((S32)mSculptTexture->getBoostLevel(), 513 mSculptTexture->setBoostLevel(llmax((S32)mSculptTexture->getBoostLevel(),
@@ -532,14 +530,14 @@ void LLVOVolume::updateTextureVirtualSize()
532 } 530 }
533 } 531 }
534 532
535 S32 texture_discard = mSculptTexture->getCachedRawImageLevel(); //try to match the texture 533 S32 texture_discard = mSculptTexture->getDiscardLevel(); //try to match the texture
536 S32 current_discard = mSculptLevel; 534 S32 current_discard = getVolume() ? getVolume()->getSculptLevel() : -2;
537 535
538 if (texture_discard >= 0 && //texture has some data available 536 if (texture_discard >= 0 && //texture has some data available
539 (texture_discard < current_discard || //texture has more data than last rebuild 537 (texture_discard < current_discard || //texture has more data than last rebuild
540 current_discard < 0)) //no previous rebuild 538 current_discard < 0)) //no previous rebuild
541 { 539 {
542 markForUpdate(FALSE); 540 gPipeline.markRebuild(mDrawable, LLDrawable::REBUILD_VOLUME, FALSE);
543 mSculptChanged = TRUE; 541 mSculptChanged = TRUE;
544 } 542 }
545 543
@@ -687,19 +685,17 @@ BOOL LLVOVolume::setVolume(const LLVolumeParams &volume_params, const S32 detail
687 mVolumeImpl->onSetVolume(volume_params, detail); 685 mVolumeImpl->onSetVolume(volume_params, detail);
688 } 686 }
689 687
688 updateSculptTexture();
690 if (isSculpted()) 689 if (isSculpted())
691 { 690 {
692 mSculptTexture = gImageList.getImage(volume_params.getSculptID());
693 if (mSculptTexture.notNull()) 691 if (mSculptTexture.notNull())
694 { 692 {
695 sculpt(); 693 sculpt();
696 mSculptLevel = getVolume()->getSculptLevel();
697 mSculptSurfaceArea = getVolume()->sculptGetSurfaceArea(); 694 mSculptSurfaceArea = getVolume()->sculptGetSurfaceArea();
698 } 695 }
699 } 696 }
700 else 697 else
701 { 698 {
702 mSculptTexture = NULL;
703 mSculptSurfaceArea = 0.0; 699 mSculptSurfaceArea = 0.0;
704 } 700 }
705 701
@@ -708,6 +704,38 @@ BOOL LLVOVolume::setVolume(const LLVolumeParams &volume_params, const S32 detail
708 return FALSE; 704 return FALSE;
709} 705}
710 706
707
708void LLVOVolume::updateSculptTexture()
709{
710 LLPointer<LLViewerImage> old_sculpt = mSculptTexture;
711 if (isSculpted())
712 {
713 LLSculptParams *sculpt_params = (LLSculptParams *)getParameterEntry(LLNetworkData::PARAMS_SCULPT);
714 LLUUID id = sculpt_params->getSculptTexture();
715 if (id.notNull())
716 {
717 mSculptTexture = gImageList.getImage(id);
718 }
719 }
720 else
721 {
722 mSculptTexture = NULL;
723 }
724
725 if (mSculptTexture != old_sculpt)
726 {
727 if (old_sculpt.notNull())
728 {
729 old_sculpt->removeVolume(this);
730 }
731 if (mSculptTexture.notNull())
732 {
733 mSculptTexture->addVolume(this);
734 }
735 }
736}
737
738
711// sculpt replaces generate() for sculpted surfaces 739// sculpt replaces generate() for sculpted surfaces
712void LLVOVolume::sculpt() 740void LLVOVolume::sculpt()
713{ 741{
@@ -718,7 +746,7 @@ void LLVOVolume::sculpt()
718 S8 sculpt_components = 0; 746 S8 sculpt_components = 0;
719 const U8* sculpt_data = NULL; 747 const U8* sculpt_data = NULL;
720 748
721 S32 discard_level = mSculptTexture->getCachedRawImageLevel() ; 749 S32 discard_level = mSculptTexture->getDiscardLevel() ;
722 LLImageRaw* raw_image = mSculptTexture->getCachedRawImage() ; 750 LLImageRaw* raw_image = mSculptTexture->getCachedRawImage() ;
723 751
724 S32 max_discard = mSculptTexture->getMaxDiscardLevel(); 752 S32 max_discard = mSculptTexture->getMaxDiscardLevel();
@@ -762,7 +790,7 @@ void LLVOVolume::sculpt()
762 } 790 }
763 getVolume()->sculpt(sculpt_width, sculpt_height, sculpt_components, sculpt_data, discard_level); 791 getVolume()->sculpt(sculpt_width, sculpt_height, sculpt_components, sculpt_data, discard_level);
764 792
765 /*//notify rebuild any other VOVolumes that reference this sculpty volume 793 //notify rebuild any other VOVolumes that reference this sculpty volume
766 for (S32 i = 0; i < mSculptTexture->getNumVolumes(); ++i) 794 for (S32 i = 0; i < mSculptTexture->getNumVolumes(); ++i)
767 { 795 {
768 LLVOVolume* volume = (*(mSculptTexture->getVolumeList()))[i]; 796 LLVOVolume* volume = (*(mSculptTexture->getVolumeList()))[i];
@@ -770,7 +798,7 @@ void LLVOVolume::sculpt()
770 { 798 {
771 gPipeline.markRebuild(volume->mDrawable, LLDrawable::REBUILD_GEOMETRY, FALSE); 799 gPipeline.markRebuild(volume->mDrawable, LLDrawable::REBUILD_GEOMETRY, FALSE);
772 } 800 }
773 }*/ 801 }
774 } 802 }
775} 803}
776 804
diff --git a/linden/indra/newview/llvovolume.h b/linden/indra/newview/llvovolume.h
index 7fba28c..2da1d7a 100644
--- a/linden/indra/newview/llvovolume.h
+++ b/linden/indra/newview/llvovolume.h
@@ -171,6 +171,7 @@ public:
171 void setTexture(const S32 face); 171 void setTexture(const S32 face);
172 S32 getIndexInTex() const {return mIndexInTex ;} 172 S32 getIndexInTex() const {return mIndexInTex ;}
173 /*virtual*/ BOOL setVolume(const LLVolumeParams &volume_params, const S32 detail, bool unique_volume = false); 173 /*virtual*/ BOOL setVolume(const LLVolumeParams &volume_params, const S32 detail, bool unique_volume = false);
174 void updateSculptTexture();
174 void setIndexInTex(S32 index) { mIndexInTex = index ;} 175 void setIndexInTex(S32 index) { mIndexInTex = index ;}
175 void sculpt(); 176 void sculpt();
176 void updateRelativeXform(); 177 void updateRelativeXform();
@@ -232,7 +233,6 @@ private:
232 LLFrameTimer mTextureUpdateTimer; 233 LLFrameTimer mTextureUpdateTimer;
233 S32 mLOD; 234 S32 mLOD;
234 BOOL mLODChanged; 235 BOOL mLODChanged;
235 S32 mSculptLevel;
236 BOOL mSculptChanged; 236 BOOL mSculptChanged;
237 LLMatrix4 mRelativeXform; 237 LLMatrix4 mRelativeXform;
238 LLMatrix3 mRelativeXformInvTrans; 238 LLMatrix3 mRelativeXformInvTrans;
@@ -240,7 +240,7 @@ private:
240 F32 mVObjRadius; 240 F32 mVObjRadius;
241 LLVolumeInterface *mVolumeImpl; 241 LLVolumeInterface *mVolumeImpl;
242 LLPointer<LLViewerImage> mSculptTexture; 242 LLPointer<LLViewerImage> mSculptTexture;
243 S32 mIndexInTex; 243 S32 mIndexInTex; // index of this volume in the texture's volume list
244 244
245 // statics 245 // statics
246public: 246public:
diff --git a/linden/indra/newview/primbackup.cpp b/linden/indra/newview/primbackup.cpp
index 7f050a0..613000a 100644
--- a/linden/indra/newview/primbackup.cpp
+++ b/linden/indra/newview/primbackup.cpp
@@ -625,6 +625,8 @@ void primbackup::export_next_texture()
625 625
626void primbackup::import_object(bool upload) 626void primbackup::import_object(bool upload)
627{ 627{
628
629
628 textures.clear(); 630 textures.clear();
629 assetmap.clear(); 631 assetmap.clear();
630 current_asset=LLUUID::null; 632 current_asset=LLUUID::null;
@@ -641,9 +643,21 @@ void primbackup::import_object(bool upload)
641 std::string file_name = file_picker.getFirstFile().c_str(); 643 std::string file_name = file_picker.getFirstFile().c_str();
642 folder = gDirUtilp->getDirName(file_name); 644 folder = gDirUtilp->getDirName(file_name);
643 645
644 llifstream import_file(file_name); 646 {
645 LLSDSerialize::fromXML(llsd, import_file); 647 LLSD import_llsd;
646 import_file.close(); 648 llifstream import_file(file_name);
649 S32 status;
650 status = LLSDSerialize::fromXML(import_llsd, import_file);
651 import_file.close();
652
653 if (LLSDParser::PARSE_FAILURE == status)
654 {
655 llwarns << "invalid xml file." << llendl;
656 return;
657 }
658
659 llsd = import_llsd;
660 }
647 661
648 show(); 662 show();
649 663
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 3b66fb8..a32a1c7 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
@@ -1,54 +1,166 @@
1<?xml version="1.0" encoding="utf-8" standalone="yes" ?> 1<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
2
3<!--
4ALL PREFS OPTIONS START AT 20px FROM LEFT, 10px FROM TOP
5
6USE bottom_delta BETWEEN OPTIONS IN A GROUP
7
8USE LINES BETWEEN GROUPS
9
10USE font-style="BOLD|SHADOW" FOR GROUP LABELS
11
12GROUP LABEL CONTENTS ARE INDENTED 30px
13
14USE left="270" FOR TABBING OPTIONS
15-->
16
2<panel border="true" bottom="-409" enabled="true" follows="left|top|right|bottom" 17<panel border="true" bottom="-409" enabled="true" follows="left|top|right|bottom"
3 height="408" label="Advanced" left="102" mouse_opaque="true" 18 height="408" label="Advanced" left="102" mouse_opaque="true"
4 name="advanced_panel" width="517"> 19 name="advanced_panel" width="517">
5 <!-- Start organizing these when we get enough of 'em - MC --> 20
21
6 <tab_container label="Page 2" bottom="0" height="450" left="0" mouse_opaque="false" 22 <tab_container label="Page 2" bottom="0" height="450" left="0" mouse_opaque="false"
7 name="tab2" tab_min_width="50" tab_position="top" width="495" bg_opaque_color="0,0,0,0.0"> 23 name="tab2" tab_min_width="50" tab_position="top" width="495" bg_opaque_color="0,0,0,0.0">
24
8 25
9 <panel border="true" bottom="-409" enabled="true" follows="left|top|right|bottom" 26 <panel border="true" bottom="-409" enabled="true" follows="left|top|right|bottom"
10 height="408" label="Main" left="102" mouse_opaque="true" 27 height="408" label="Main" left="102" mouse_opaque="true"
11 name="main_panel" width="517"> 28 name="main_panel" width="517">
12 <check_box bottom="-30" enabled="true" 29
30
31 <text type="string" length="1" bg_visible="false" border_drop_shadow_visible="false" border_visible="false"
32 bottom="-20" drop_shadow_visible="true" enabled="true" follows="left|top" font-style="BOLD|SHADOW"
33 font="SansSerifSmall" h_pad="0" halign="left" height="10" left="20"
34 mouse_opaque="true" name="textbox" v_pad="0" width="394">
35 User Interface:
36 </text>
37
38 <check_box bottom_delta="-25" enabled="true"
13 follows="left|top" font="SansSerifSmall" height="16" 39 follows="left|top" font="SansSerifSmall" height="16"
14 initial_value="false" label="Disable login/logout screens" left="12" 40 initial_value="false" label="Disable login/logout screens" left_delta="30"
15 mouse_opaque="true" name="disable_log_screen_check" radio_style="false" 41 mouse_opaque="true" name="disable_log_screen_check" radio_style="false"
16 width="217" /> 42 width="217" />
17 <check_box bottom_delta="-18" enabled="true" follows="left|top" 43 <check_box bottom_delta="0" enabled="true" follows="left|top"
18 font="SansSerifSmall" height="16" initial_value="false" 44 font="SansSerifSmall" height="16" initial_value="false"
19 label="Disable teleport screen" left="12" mouse_opaque="true" 45 label="Disable teleport screen" left="270" mouse_opaque="true"
20 name="disable_tp_screen_check" radio_style="false" width="217" /> 46 name="disable_tp_screen_check" radio_style="false" width="217" />
47 <check_box bottom_delta="-18" enabled="true" follows="left|top"
48 font="SansSerifSmall" height="16" initial_value="false"
49 label="Show WindLight toolbar" left="50" mouse_opaque="true"
50 name="toggle_windlight_control" radio_style="false" width="237"
51 control_name="EnableWindlightRemote" />
52 <check_box bottom_delta="-18" enabled="true"
53 follows="left|top" font="SansSerifSmall" height="16" initial_value="false"
54 label="Use legacy pie menus" left_delta="0"
55 mouse_opaque="true" name="legacy_pie_menu_checkbox" radio_style="false"
56 width="256" />
57
58
59 <view_border bevel_style="none" border_thickness="1" bottom_delta="-15" follows="left|top"
60 height="1" left="55" name="border" width="380" />
61
62
63 <text type="string" length="1" bg_visible="false" border_drop_shadow_visible="false" border_visible="false"
64 bottom_delta="-18" drop_shadow_visible="true" enabled="true" follows="left|top" font-style="BOLD|SHADOW"
65 font="SansSerifSmall" h_pad="0" halign="left" height="10" left="20"
66 mouse_opaque="true" name="textbox" v_pad="0" width="394">
67 Avatar:
68 </text>
69
21 <check_box bottom_delta="-25" enabled="true" follows="left|top" 70 <check_box bottom_delta="-25" enabled="true" follows="left|top"
22 font="SansSerifSmall" height="16" initial_value="false" 71 font="SansSerifSmall" height="16" initial_value="false"
23 label="Show client names in nametags" left="12" mouse_opaque="true" 72 label="Show client names in nametags" left_delta="30" mouse_opaque="true"
24 name="client_name_tag_check" radio_style="false" width="160" /> 73 name="client_name_tag_check" radio_style="false" width="160" />
25 <check_box bottom_delta="-18" enabled="true" follows="left|top" 74 <check_box bottom_delta="0" enabled="true" follows="left|top"
26 font="SansSerifSmall" height="16" initial_value="false" 75 font="SansSerifSmall" height="16" initial_value="false"
27 label="Show client names in hovertip" left_delta="0" mouse_opaque="true" 76 label="Show client names in hovertip" left="270" mouse_opaque="true"
28 name="client_name_hover_check" radio_style="false" width="160" /> 77 name="client_name_hover_check" radio_style="false" width="160" />
29 <check_box bottom_delta="-18" enabled="true" follows="left|top" 78 <check_box bottom_delta="-18" enabled="true" follows="left|top"
30 font="SansSerifSmall" height="16" initial_value="false" 79 font="SansSerifSmall" height="16" initial_value="false"
31 label="Show your client name to others" left_delta="0" mouse_opaque="true" 80 label="Show your client name to others" left="50" mouse_opaque="true"
32 name="client_name_tag_broadcast_check" radio_style="false" width="217" /> 81 name="client_name_tag_broadcast_check" radio_style="false" width="217" />
33 <color_swatch border_color="0.45098 0.517647 0.607843 1" bottom="-122"
34 can_apply_immediately="true" color="0.79 0.44 0.88 1"
35 enabled="true" follows="left|top"
36 height="65" label="Imprudence" left="250" mouse_opaque="true"
37 name="client_tag_color" width="65" />
38 <check_box bottom_delta="-18" enabled="true" follows="left|top" 82 <check_box bottom_delta="-18" enabled="true" follows="left|top"
39 font="SansSerifSmall" height="16" initial_value="false" 83 font="SansSerifSmall" height="16" initial_value="false"
40 label="Show client names with color" left_delta="0" mouse_opaque="true" 84 tool_tip="Toggle editing animation and standing up when entering appearance mode"
41 name="client_name_color_check" radio_style="false" width="160" /> 85 label="Animate avatar when editing appearance" left_delta="0" mouse_opaque="true"
86 name="appearance_anim_check" radio_style="false" width="217" />
87 <check_box bottom_delta="-18" control_name="HeadFollowsMouse" enabled="true"
88 follows="left|top" font="SansSerifSmall" height="16"
89 label="Head follows mouse" tooltip="If your avatars head follows your mouse movements" left_delta="0"
90 mouse_opaque="true" name="head_follows_mouse_checkbox" radio_style="false"
91 width="256" />
92 <check_box bottom_delta="-18" enabled="true"
93 follows="left|top" font="SansSerifSmall" height="16" hidden="false"
94 initial_value="false" label="Share language with objects" left_delta="0"
95 mouse_opaque="true" name="language_is_public"
96 radio_style="false" tool_tip="This lets in-world objects know your preferred language."
97 width="256" />
98 <check_box bottom_delta="-18" enabled="true" follows="left|top"
99 font="SansSerifSmall" height="16" label="Fly/land on holding up/down"
100 left_delta="0" mouse_opaque="true" name="automatic_fly" radio_style="false"
101 width="178" />
102 <check_box bottom_delta="-18" enabled="true"
103 follows="left|top" font="SansSerifSmall" height="16" initial_value="false"
104 label="Arrow keys always move avatar when chatting" left_delta="0"
105 mouse_opaque="true" name="arrow_keys_move_avatar_check" radio_style="false"
106 width="237" />
107
108
109 <view_border bevel_style="none" border_thickness="1" bottom_delta="-15" follows="left|top"
110 height="1" left="55" name="border" width="380" />
111
112
113 <text type="string" length="1" bg_visible="false" border_drop_shadow_visible="false" border_visible="false"
114 bottom_delta="-18" drop_shadow_visible="true" enabled="true" follows="left|top" font-style="BOLD|SHADOW"
115 font="SansSerifSmall" h_pad="0" halign="left" height="10" left="20"
116 mouse_opaque="true" name="textbox" v_pad="0" width="394">
117 Chat:
118 </text>
119
120 <check_box bottom_delta="-25" control_name="ScriptErrorsAsChat" enabled="true"
121 follows="left|top" font="SansSerifSmall" height="16" initial_value="false"
122 label="Show script errors and warnings as regular chat" left_delta="30"
123 mouse_opaque="true" name="script_errors_as_chat" radio_style="false"
124 width="275" />
125 <check_box bottom_delta="-18" enabled="true" follows="left|top"
126 font="SansSerifSmall" height="16" initial_value="false"
127 label="Show timestamps with messages" left_delta="0" mouse_opaque="true"
128 name="show_timestamps_check" radio_style="false" width="237" />
129 <check_box bottom_delta="-18" enabled="true"
130 follows="left|top" font="SansSerifSmall" height="16" hidden="false"
131 initial_value="false" label="Use MU* pose style chat and IM" left_delta="0"
132 mouse_opaque="true" name="allow_mupose"
133 radio_style="false" tool_tip="Use MU* pose style in chat and IM (with ':' as a synonymous to '/me ')."
134 width="256" />
135 <check_box bottom_delta="0" enabled="true"
136 follows="left|top" font="SansSerifSmall" height="16" hidden="false"
137 initial_value="false" label="Auto-close OOC (( )) chat" left="270"
138 mouse_opaque="true" name="auto_close_ooc"
139 radio_style="false" tool_tip="Auto-close OOC chat (i.e. add )) if not found and (( was used)."
140 width="256" />
141
142
143 <view_border bevel_style="none" border_thickness="1" bottom_delta="-15" follows="left|top"
144 height="1" left="55" name="border" width="380" />
145
146
147 <text type="string" length="1" bg_visible="false" border_drop_shadow_visible="false" border_visible="false"
148 bottom_delta="-18" drop_shadow_visible="true" enabled="true" follows="left|top" font-style="BOLD|SHADOW"
149 font="SansSerifSmall" h_pad="0" halign="left" height="10" left="20"
150 mouse_opaque="true" name="textbox" v_pad="0" width="394">
151 World:
152 </text>
153
42 <check_box bottom_delta="-25" enabled="true" follows="left|top" 154 <check_box bottom_delta="-25" enabled="true" follows="left|top"
43 font="SansSerifSmall" height="16" initial_value="false" 155 font="SansSerifSmall" height="16" initial_value="false"
44 label="Enable shadows (WARNING: unstable and requires Ultra graphics)" left="12" mouse_opaque="true" 156 label="Enable shadows (WARNING: unstable and requires Ultra graphics)" left_delta="30" mouse_opaque="true"
45 name="shadows_check" radio_style="false" width="217" /> 157 name="shadows_check" radio_style="false" width="217" />
46 <text bottom_delta="-25" left="16" height="15" width="300" 158 <text bottom_delta="-25" left_delta="0" height="15" width="300"
47 follows="top|left"> 159 follows="top|left">
48 Allow region WindLight settings (LightShare): 160 Allow region WindLight settings (LightShare):
49 </text> 161 </text>
50 <combo_box name="lightshare_combo" 162 <combo_box name="lightshare_combo"
51 bottom_delta="-2" left_delta="250" height="18" width="135" 163 bottom_delta="-2" left="275" height="18" width="160"
52 allow_text_entry="false" follows="left|top"> 164 allow_text_entry="false" follows="left|top">
53 <combo_item type="string" name="never" value="0"> 165 <combo_item type="string" name="never" value="0">
54 Never 166 Never
@@ -60,62 +172,6 @@
60 Always 172 Always
61 </combo_item> 173 </combo_item>
62 </combo_box> 174 </combo_box>
63 <check_box bottom_delta="-25" enabled="true" follows="left|top"
64 font="SansSerifSmall" height="16" initial_value="false"
65 label="Use HTTP texture fetching (experimental)" left="12" mouse_opaque="true"
66 name="http_texture_check" radio_style="false" width="217" />
67 <check_box bottom_delta="-18" enabled="true" follows="left|top"
68 font="SansSerifSmall" height="16" initial_value="false"
69 label="Increase rez speed via draw distance stepping" left="12" mouse_opaque="true"
70 name="speed_rez_check" radio_style="false" width="217" />
71 <spinner bottom_delta="-18" decimal_digits="0"
72 tool_tip="Interval in seconds between each draw distance increment"
73 follows="left|top" height="16" increment="1" initial_val="12"
74 label="Step interval every:" label_width="105" left_delta="20" max_val="20"
75 min_val="1" mouse_opaque="true" name="speed_rez_interval_spinner" width="145" />
76 <text bottom_delta="0" follows="top|left" height="15" left_delta="150"
77 name="speed_rez_seconds_text" width="115">
78 seconds
79 </text>
80 <check_box bottom_delta="-25" enabled="true" follows="left|top"
81 font="SansSerifSmall" height="16" initial_value="false"
82 tool_tip="Toggle editing animation and standing up when entering appearance mode"
83 label="Animate avatar when editing appearance" left="12" mouse_opaque="true"
84 name="appearance_anim_check" radio_style="false" width="217" />
85 <check_box bottom_delta="-25" control_name="HeadFollowsMouse" enabled="true"
86 follows="left|top" font="SansSerifSmall" height="16"
87 label="Head follows mouse" tooltip="If your avatars head follows your mouse movements" left="12"
88 mouse_opaque="true" name="head_follows_mouse_checkbox" radio_style="false"
89 width="256" />
90 <check_box bottom_delta="-25" enabled="true"
91 follows="left|top" font="SansSerifSmall" height="16" initial_value="false"
92 label="Use legacy pie menus" left="12"
93 mouse_opaque="true" name="legacy_pie_menu_checkbox" radio_style="false"
94 width="256" />
95 <check_box bottom_delta="-25" enabled="true"
96 follows="left|top" font="SansSerifSmall" height="16" hidden="false"
97 initial_value="false" label="Share language with objects" left="12"
98 mouse_opaque="true" name="language_is_public"
99 radio_style="false" tool_tip="This lets in-world objects know your preferred language."
100 width="256" />
101 <check_box bottom_delta="-25" enabled="true"
102 follows="left|top" font="SansSerifSmall" height="16" hidden="false"
103 initial_value="false" label="Use MU* pose style chat and IM" left="12"
104 mouse_opaque="true" name="allow_mupose"
105 radio_style="false" tool_tip="Use MU* pose style in chat and IM (with ':' as a synonymous to '/me ')."
106 width="256" />
107 <check_box bottom_delta="0" enabled="true"
108 follows="left|top" font="SansSerifSmall" height="16" hidden="false"
109 initial_value="false" label="Auto-close OOC (( )) chat" left_delta="250"
110 mouse_opaque="true" name="auto_close_ooc"
111 radio_style="false" tool_tip="Auto-close OOC chat (i.e. add )) if not found and (( was used)."
112 width="256" />
113 <check_box bottom_delta="-25" enabled="true" follows="left|top" font="SansSerifSmall" height="16"
114 initial_value="false" label="Use the chatbar as a command line" left="12"
115 mouse_opaque="true" name="command_line_check" radio_style="false" width="270"/>
116 <button bottom_delta="-20" follows="left|top" font="SansSerif" height="20" width="150"
117 label="Chatbar Commands" name="command_line_btn" left="12"
118 tool_tip="Set specific chatbar command line commands here" />
119 175
120 <!-- Uncomment when we start using the crash logger - MC --> 176 <!-- Uncomment when we start using the crash logger - MC -->
121 <!--<text type="string" length="1" bg_visible="false" border_drop_shadow_visible="false" border_visible="false" 177 <!--<text type="string" length="1" bg_visible="false" border_drop_shadow_visible="false" border_visible="false"
@@ -137,69 +193,33 @@
137 Never send 193 Never send
138 </combo_item> 194 </combo_item>
139 </combo_box>--> 195 </combo_box>-->
196
140 197
141 </panel> 198 </panel>
142 199
143 <panel border="true" bottom="-580" follows="left|top|right|bottom" height="525" label="SpellCheck" 200
144 left="1" mouse_opaque="true" name="SpellCheck" width="418"> 201 <panel border="true" bottom="-580" follows="left|top|right|bottom" height="525" label="Avatar Cloud"
145 <button bottom="-25" follows="left|top" font="SansSerifSmall" height="18" label="?"
146 name="EmeraldHelp_SpellCheck" tool_tip="Click here for help regarding the settings in this page."
147 right="490" width="18"/>
148 <check_box bottom="-25" enabled="true" follows="left|top" font="SansSerifSmall" height="16"
149 label="Show misspelled words in red" left="12" mouse_opaque="true" name="EmeraldSpellDisplay"
150 control_name="EmeraldSpellDisplay" width="126"/>
151 <text bottom_delta="-30" follows="left|top" font="SansSerifSmall" height="16" left="12"
152 name="EmSpell_txt1" width="512">
153 Current language (dictionary):
154 </text>
155 <combo_box allow_text_entry="false" bottom_delta="-20" left_delta="0" follows="left|top" height="18"
156 max_chars="200" mouse_opaque="true" name="EmeraldSpellBase" width="250"
157 control_name="EmeraldSpellBase" tool_tip=""/>
158 <text bottom_delta="-30" follows="left|top" font="SansSerifSmall" height="16" left="12"
159 name="EmSpell_txt3" width="512">
160 Downloaded languages (dictionaries):
161 </text>
162 <combo_box allow_text_entry="false" bottom_delta="-20" left_delta="0" follows="left|top" height="18"
163 max_chars="200" mouse_opaque="true" name="EmSpell_Avail" width="250"
164 control_name="EmSpell_Avail" tool_tip=""/>
165 <button bottom_delta="0" follows="left|top" font="SansSerifSmall" height="20" label="Install"
166 name="EmSpell_Add" tool_tip="" left_delta="255" width="80"/>
167 <button bottom_delta="-22" follows="left|top" font="SansSerifSmall" height="20" label="Download More..."
168 name="EmSpell_GetMore" tool_tip="Get more dictionaries availabe online" left="12" width="250"/>
169 <text bottom_delta="-30" follows="left|top" font="SansSerifSmall" height="16" left="12"
170 name="EmSpell_txt2" width="512">
171 Additional custom languages (dictionaries):
172 </text>
173 <combo_box allow_text_entry="false" bottom_delta="-20" left_delta="0" follows="left|top" height="18"
174 max_chars="200" mouse_opaque="true" name="EmSpell_Installed" width="250"
175 control_name="EmSpell_Installed" tool_tip=""/>
176 <button bottom_delta="0" follows="left|top" font="SansSerifSmall" height="20" label="Remove"
177 name="EmSpell_Remove" tool_tip="" left_delta="255" width="80"/>
178 <!--<button bottom_delta="-20" follows="left|top" font="SansSerifSmall" height="18" label="Edit Custom dictionary"
179 name="EmSpell_EditCustom" tool_tip="" left_delta="20" width="130"/>-->
180 <text bottom_delta="-30" follows="left|top" font="SansSerifSmall" height="16" left="12"
181 name="EmSpell_txt4" width="512">
182To use spellcheck, right-click a misspelled word
183(red or otherwise) and select its replacement
184 </text>
185 <button name="ac_button" label="AutoCorrect Options..." halign="center"
186 tool_tip="Modify the AutoCorrect word list and settings" left="12"
187 bottom_delta="-50" width="180" height="20" font="SansSerifSmall" follows="left|top"/>
188 </panel>
189 <panel border="true" bottom="-580" follows="left|top|right|bottom" height="525" label="Eye Candy"
190 left="1" mouse_opaque="true" filename="panel_particle_settings.xml" name="AvatarCloud" width="418"> 202 left="1" mouse_opaque="true" filename="panel_particle_settings.xml" name="AvatarCloud" width="418">
191 <text type="string" length="1" bg_visible="false" border_drop_shadow_visible="false" border_visible="false" 203
192 bottom_delta="-20" drop_shadow_visible="true" enabled="true" follows="left|top" 204
193 font="SansSerifSmall" h_pad="0" halign="left" height="10" left="10" 205 <text type="string" length="1" bg_visible="false" border_drop_shadow_visible="false" border_visible="false"
194 mouse_opaque="true" name="must_be_logged_in_textbox" v_pad="0" width="394"> 206 bottom_delta="-18" drop_shadow_visible="true" enabled="true" follows="left|top"
195 You must be logged in to change this 207 font="SansSerifSmall" h_pad="0" halign="left" height="10" left="10"
196 </text> 208 mouse_opaque="true" name="must_be_logged_in_textbox" v_pad="0" width="394">
197 <check_box bottom_delta="-4" control_name="PreviewAvatarAsCloud" enabled="true" 209 You must be logged in to change this
198 follows="left|top" font="SansSerifSmall" height="16" 210 </text>
199 label="Preview avatar as cloud" left="10" 211 <check_box bottom_delta="-4" control_name="PreviewAvatarAsCloud" enabled="true"
200 mouse_opaque="true" name="preview_cloud" 212 follows="left|top" font="SansSerifSmall" height="16"
201 radio_style="false" tool_tip="Preview avatar as cloud when already rezzed" 213 label="Preview avatar as cloud" left="10"
202 width="80" /> 214 mouse_opaque="true" name="preview_cloud"
215 radio_style="false" tool_tip="Preview avatar as cloud when already rezzed"
216 width="80" />
217
218
203 </panel> 219 </panel>
220
221
204 </tab_container> 222 </tab_container>
223
224
205</panel> 225</panel>
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 355d7e8..5a94d6a 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
@@ -1,93 +1,121 @@
1<?xml version="1.0" encoding="utf-8" standalone="yes" ?> 1<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
2
3<!--
4ALL PREFS OPTIONS START AT 20px FROM LEFT, 10px FROM TOP
5
6USE bottom_delta BETWEEN OPTIONS IN A GROUP
7
8USE LINES BETWEEN GROUPS
9
10USE font-style="BOLD|SHADOW" FOR GROUP LABELS
11
12GROUP LABEL CONTENTS ARE INDENTED 30px
13
14USE left="270" FOR TABBING OPTIONS
15-->
16
2<panel border="true" bottom="-409" enabled="true" follows="left|top|right|bottom" 17<panel border="true" bottom="-409" enabled="true" follows="left|top|right|bottom"
3 height="408" label="Audio &amp; Video" left="102" mouse_opaque="true" 18 height="408" label="Audio &amp; Video" left="102" mouse_opaque="true"
4 name="Media panel" width="517"> 19 name="Media panel" width="517">
20
21
5 <text type="string" length="1" bg_visible="false" border_drop_shadow_visible="false" border_visible="false" 22 <text type="string" length="1" bg_visible="false" border_drop_shadow_visible="false" border_visible="false"
6 bottom="-22" drop_shadow_visible="true" enabled="true" follows="left|top" 23 bottom="-22" drop_shadow_visible="true" enabled="true" follows="left|top" font-style="BOLD|SHADOW"
7 font="SansSerifSmall" h_pad="0" halign="left" height="12" left="10" 24 font="SansSerifSmall" h_pad="0" halign="left" height="12" left="20"
8 mouse_opaque="true" name="muting_text" v_pad="0" width="128"> 25 mouse_opaque="true" name="muting_text" v_pad="0" width="128">
9 Volume: 26 Volume:
10 </text> 27 </text>
11 <text type="string" length="1" bg_visible="false" border_drop_shadow_visible="false" border_visible="false" 28
12 bottom="-202" drop_shadow_visible="true" enabled="true" follows="left|top" 29 <panel border="true" bottom_delta="-180" enabled="true" filename="panel_audio.xml"
13 font="SansSerifSmall" h_pad="0" halign="left" height="12" left="10" 30 follows="left|top|right|bottom" height="180" label="Volume" left_delta="30"
14 mouse_opaque="true" name="streaming_prefs_text" v_pad="0" width="128">
15 Streaming:
16 </text>
17 <text type="string" length="1" bg_visible="false" border_drop_shadow_visible="false" border_visible="false"
18 bottom="-315" drop_shadow_visible="true" enabled="true" follows="left|top"
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">
21 Audio:
22 </text>
23 <panel border="true" bottom="-187" enabled="true" filename="panel_audio.xml"
24 follows="left|top|right|bottom" height="180" label="Volume" left="148"
25 mouse_opaque="true" name="Volume Panel" width="260" /> 31 mouse_opaque="true" name="Volume Panel" width="260" />
26 <check_box bottom="-205" control_name="AudioStreamingMusic" enabled="true" 32
33
34 <view_border bevel_style="none" border_thickness="1" bottom_delta="0" follows="left|top"
35 height="1" left="55" name="border" width="380" />
36
37
38 <text type="string" length="1" bg_visible="false" border_drop_shadow_visible="false" border_visible="false"
39 bottom_delta="-20" drop_shadow_visible="true" enabled="true" follows="left|top" font-style="BOLD|SHADOW"
40 font="SansSerifSmall" h_pad="0" halign="left" height="12" left="20"
41 mouse_opaque="true" name="streaming_prefs_text" v_pad="0" width="128">
42 Streaming:
43 </text>
44
45 <check_box bottom_delta="-25" control_name="AudioStreamingMusic" enabled="true"
27 follows="left|top" font="SansSerifSmall" height="16" initial_value="true" 46 follows="left|top" font="SansSerifSmall" height="16" initial_value="true"
28 label="Play streaming music when available (uses more bandwidth)" 47 label="Play streaming music when available (uses more bandwidth)"
29 left="142" mouse_opaque="true" name="streaming_music" radio_style="false" 48 left_delta="30" mouse_opaque="true" name="streaming_music" radio_style="false"
30 width="339" /> 49 width="339" />
31 <check_box bottom_delta="-20" control_name="ShowStreamTitle" enabled="true" 50 <check_box bottom_delta="-20" control_name="ShowStreamTitle" enabled="true"
32 follows="left|top" font="SansSerifSmall" height="16" initial_value="true" 51 follows="left|top" font="SansSerifSmall" height="16" initial_value="true"
33 label="Show stream info in chat" left="162" mouse_opaque="true" 52 label="Show stream info in chat" left_delta="30" mouse_opaque="true"
34 name="show_stream_title" radio_style="false" width="338" /> 53 name="show_stream_title" radio_style="false" width="338" />
35 <check_box bottom_delta="-20" control_name="AudioStreamingVideo" enabled="true" 54 <check_box bottom_delta="-20" control_name="AudioStreamingVideo" enabled="true"
36 follows="left|top" font="SansSerifSmall" height="16" initial_value="true" 55 follows="left|top" font="SansSerifSmall" height="16" initial_value="true"
37 label="Play Streaming Media When Available (uses more bandwidth)" 56 label="Play Streaming Media When Available (uses more bandwidth)"
38 left="142" mouse_opaque="true" name="streaming_video" radio_style="false" 57 left_delta="-30" mouse_opaque="true" name="streaming_video" radio_style="false"
39 width="338" /> 58 width="338" />
40 <check_box bottom_delta="-20" control_name="ParcelMediaAutoPlayEnable" enabled="true" 59 <check_box bottom_delta="-20" control_name="ParcelMediaAutoPlayEnable" enabled="true"
41 follows="left|top" font="SansSerifSmall" height="16" 60 follows="left|top" font="SansSerifSmall" height="16"
42 initial_value="true" label="Automatically play media" left="162" 61 initial_value="true" label="Automatically play media" left_delta="30"
43 mouse_opaque="true" name="auto_streaming_video" radio_style="false" 62 mouse_opaque="true" name="auto_streaming_video" radio_style="false"
44 width="338" /> 63 width="338" />
45 <check_box bottom_delta="-20" control_name="MediaOnAPrimUI" enabled="true" 64 <check_box bottom_delta="-20" control_name="MediaOnAPrimUI" enabled="true"
46 follows="left|top" font="SansSerifSmall" height="16" 65 follows="left|top" font="SansSerifSmall" height="16"
47 initial_value="true" label="Media helper widget" left="162" 66 initial_value="true" label="Media helper widget" left_delta="0"
48 mouse_opaque="true" name="media_helper_widget" radio_style="false" 67 mouse_opaque="true" name="media_helper_widget" radio_style="false"
49 width="338" /> 68 width="338" />
50 <check_box bottom_delta="-20" control_name="MediaEnableFilter" enabled="true" 69 <check_box bottom_delta="-20" control_name="MediaEnableFilter" enabled="true"
51 follows="left|top" font="SansSerifSmall" height="16" 70 follows="left|top" font="SansSerifSmall" height="16"
52 initial_value="true" label="Filter media URLs" left="142" 71 initial_value="true" label="Filter media URLs" left_delta="-30"
53 mouse_opaque="true" name="enable_media_filter" radio_style="false" 72 mouse_opaque="true" name="enable_media_filter" radio_style="false"
54 width="200" /> 73 width="200" />
55 <button name="show_media_filter" font="SansSerif" label="Media Filter Settings" halign="center" 74 <button name="show_media_filter" font="SansSerifSmall" label="Media Filter Settings" halign="center"
56 tool_tip="Edit settings and the blocked and allowed lists for the Media Filter." 75 tool_tip="Edit settings and the blocked and allowed lists for the Media Filter."
57 enabled="false" mouse_opaque="true" follows="top|right" 76 enabled="false" mouse_opaque="true" follows="left|top"
58 bottom_delta="-2" right="-15" height="20" width="180" /> 77 bottom_delta="-2" left="270" height="20" width="160" />
59 <check_box bottom_delta="-33" control_name="MuteWhenMinimized" enabled="true" 78
79
80 <view_border bevel_style="none" border_thickness="1" bottom_delta="-15" follows="left|top"
81 height="1" left="55" name="border" width="380" />
82
83
84 <text type="string" length="1" bg_visible="false" border_drop_shadow_visible="false" border_visible="false"
85 bottom_delta="-20" drop_shadow_visible="true" enabled="true" follows="left|top" font-style="BOLD|SHADOW"
86 font="SansSerifSmall" h_pad="0" halign="left" height="12" left="20"
87 mouse_opaque="true" name="audio_prefs_text" v_pad="0" width="128">
88 Audio:
89 </text>
90
91 <check_box bottom_delta="-25" control_name="MuteWhenMinimized" enabled="true"
60 follows="left|top" font="SansSerifSmall" height="16" initial_value="true" 92 follows="left|top" font="SansSerifSmall" height="16" initial_value="true"
61 label="Mute audio when window minimized" left="142" mouse_opaque="true" 93 label="Mute audio when minimized" left_delta="30" mouse_opaque="true"
62 name="mute_when_minimized" radio_style="false" width="215" /> 94 name="mute_when_minimized" radio_style="false" width="215" />
63 <spinner bottom_delta="-20" control_name="UISndMoneyChangeThreshold" decimal_digits="0" 95 <spinner bottom_delta="-20" control_name="UISndMoneyChangeThreshold" decimal_digits="0"
64 enabled="true" follows="left|top" height="16" increment="10" 96 enabled="true" follows="left|top" height="16" increment="10"
65 initial_val="10" label="[CURRENCY] change threshold:" label_width="158" left="148" 97 initial_val="10" label="[CURRENCY] sound threshhold:" label_width="138" left_delta="0"
66 max_val="10000" min_val="0" mouse_opaque="true" name="L$ Change Threshold" 98 max_val="10000" min_val="0" mouse_opaque="true" name="L$ Change Threshold"
67 width="212" /> 99 width="192" />
68 <spinner bottom_delta="-20" control_name="UISndHealthReductionThreshold" 100 <spinner bottom_delta="-20" control_name="UISndHealthReductionThreshold"
69 decimal_digits="0" enabled="true" follows="left|top" height="16" 101 decimal_digits="0" enabled="true" follows="left|top" height="16"
70 increment="10" initial_val="20" label="Health change threshold:" 102 increment="10" initial_val="20" label="Health sound threshold:"
71 label_width="158" left="148" max_val="10000" min_val="0" 103 label_width="138" left_delta="0" max_val="10000" min_val="0"
72 mouse_opaque="true" name="Health change threshold" width="212" /> 104 mouse_opaque="true" name="Health change threshold" width="192" />
73 <text type="string" length="1" bg_visible="false" border_drop_shadow_visible="false" border_visible="false" 105 <check_box bottom_delta="40" enabled="true" follows="left|top"
74 bottom_delta="-27" drop_shadow_visible="true" enabled="true" follows="left|top"
75 font="SansSerifSmall" h_pad="0" halign="left" height="12" left="10"
76 mouse_opaque="true" name="ambient_prefs_text" v_pad="0" width="128">
77 Ambient:
78 </text>
79 <check_box bottom_delta="-4" enabled="true" follows="left|top"
80 font="SansSerifSmall" height="16" initial_value="false" 106 font="SansSerifSmall" height="16" initial_value="false"
81 label="Enable wind generation" left="142" mouse_opaque="true" 107 label="Enable wind generation" left="270" mouse_opaque="true"
82 name="mute_wind_check" radio_style="false" width="217" /> 108 name="mute_wind_check" radio_style="false" width="217" />
83 <slider bottom_delta="-20" control_name="AudioLevelDoppler" edit_text="true" 109 <slider bottom_delta="-20" control_name="AudioLevelDoppler" edit_text="true"
84 enabled="true" follows="left|top" height="15" increment="0.1" 110 enabled="true" follows="left|top" height="15" increment="0.1"
85 initial_val="1" label="Doppler effect:" label_width="100" left="148" 111 initial_val="1" label="Doppler effect:" label_width="100" left_delta="0"
86 max_val="2" min_val="0" mouse_opaque="true" name="Doppler Effect" 112 max_val="2" min_val="0" mouse_opaque="true" name="Doppler Effect"
87 show_text="true" width="250" /> 113 show_text="true" width="200" />
88 <slider bottom_delta="-20" control_name="AudioLevelRolloff" edit_text="true" 114 <slider bottom_delta="-20" control_name="AudioLevelRolloff" edit_text="true"
89 enabled="true" follows="left|top" height="15" increment="0.1" 115 enabled="true" follows="left|top" height="15" increment="0.1"
90 initial_val="1" label="Rolloff factor:" label_width="100" left="148" 116 initial_val="1" label="Rolloff factor:" label_width="100" left_delta="0"
91 max_val="2" min_val="0" mouse_opaque="true" name="Rolloff Factor" 117 max_val="2" min_val="0" mouse_opaque="true" name="Rolloff Factor"
92 show_text="true" width="250" /> 118 show_text="true" width="200" />
119
120
93</panel> 121</panel>
diff --git a/linden/indra/newview/skins/default/xui/en-us/panel_preferences_chat.xml b/linden/indra/newview/skins/default/xui/en-us/panel_preferences_chat.xml
index 9ead3bf..0a2678f 100644
--- a/linden/indra/newview/skins/default/xui/en-us/panel_preferences_chat.xml
+++ b/linden/indra/newview/skins/default/xui/en-us/panel_preferences_chat.xml
@@ -1,196 +1,358 @@
1<?xml version="1.0" encoding="utf-8" standalone="yes" ?> 1<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
2
3<!--
4ALL PREFS OPTIONS START AT 20px FROM LEFT, 10px FROM TOP
5
6USE bottom_delta BETWEEN OPTIONS IN A GROUP
7
8USE LINES BETWEEN GROUPS
9
10USE font-style="BOLD|SHADOW" FOR GROUP LABELS
11
12GROUP LABEL CONTENTS ARE INDENTED 30px
13
14USE left="270" FOR TABBING OPTIONS
15-->
16
2<panel border="true" bottom="-409" enabled="true" follows="left|top|right|bottom" 17<panel border="true" bottom="-409" enabled="true" follows="left|top|right|bottom"
3 height="408" label="Chat" left="102" mouse_opaque="true" name="chat" 18 height="408" label="Chat" left="102" mouse_opaque="true" name="chat"
4 width="517"> 19 width="517">
5 <text type="string" length="1" bg_visible="false" border_drop_shadow_visible="false" border_visible="false" 20
6 bottom="-20" drop_shadow_visible="true" enabled="true" follows="left|top" 21 <tab_container bottom="0" height="450" left="0" mouse_opaque="false"
7 font="SansSerifSmall" h_pad="0" halign="left" height="10" left="12" 22 name="chattab2" tab_min_width="50" tab_position="top" width="495" bg_opaque_color="0,0,0,0.0">
8 mouse_opaque="false" name="text_box" v_pad="0" width="128"> 23
9 Font Size: 24
10 </text> 25 <!-- CHAT OPTIONS PANEL -->
11 <radio_group bottom="-40" draw_border="true" enabled="true" 26
12 follows="left|top" height="30" left="148" mouse_opaque="true" 27
13 name="chat_font_size" width="331"> 28 <panel border="true" bottom="-409" enabled="true" follows="left|top|right|bottom"
14 <radio_item type="string" length="1" bottom="-24" enabled="true" height="16" left="0" mouse_opaque="true" 29 height="408" label="Chat &amp; IMs" left="102" mouse_opaque="true"
15 name="radio" width="98"> 30 name="chat_panel" width="517">
16 Small 31
17 </radio_item> 32 <text type="string" length="1" bg_visible="false" border_drop_shadow_visible="false" border_visible="false"
18 <radio_item type="string" length="1" bottom="-24" enabled="true" height="16" left="110" mouse_opaque="true" 33 bottom="-20" drop_shadow_visible="true" enabled="true" follows="left|top" font-style="BOLD|SHADOW"
19 name="radio2" width="98"> 34 font="SansSerifSmall" h_pad="0" halign="left" height="10" left="20"
20 Medium 35 mouse_opaque="false" name="text_box" v_pad="0" width="128">
21 </radio_item> 36 Chat Text Size:
22 <radio_item type="string" length="1" bottom="-24" enabled="true" height="16" left="220" mouse_opaque="true" 37 </text>
23 name="radio3" width="98"> 38
24 Large 39 <combo_box allow_text_entry="false" bottom_delta="-25" enabled="true" follows="left|top"
25 </radio_item> 40 height="16" left_delta="30" max_chars="100" mouse_opaque="true"
26 </radio_group> 41 name="chat_font_size" width="160">
27 42 <combo_item type="string" length="1" enabled="true" name="0" value="0">
28 <text type="string" length="1" bg_visible="false" border_drop_shadow_visible="false" border_visible="false" 43 Small
29 bottom_delta="-40" drop_shadow_visible="true" enabled="true" follows="left|top" 44 </combo_item>
30 font="SansSerifSmall" h_pad="0" halign="left" height="10" left="12" 45 <combo_item type="string" length="1" enabled="true" name="1" value="1">
31 mouse_opaque="false" name="text_translate_chat" v_pad="0" width="128"> 46 Medium
32 Translate Chat: 47 </combo_item>
33 </text> 48 <combo_item type="string" length="1" enabled="true" name="2" value="2">
34 <check_box bottom_delta="-3" control_name="TranslateChat" enabled="true" follows="left|top" 49 Large
35 font="SansSerifSmall" height="16" initial_value="false" 50 </combo_item>
36 label="Use machine translation while chatting (powered by Google)" left="148" mouse_opaque="true" 51 </combo_box>
37 name="translate_chat" radio_style="false" width="237" /> 52
38 <text type="string" length="1" bg_visible="false" border_drop_shadow_visible="false" border_visible="false" 53
39 bottom_delta="-16" drop_shadow_visible="true" enabled="true" follows="left|top" 54 <view_border bevel_style="none" border_thickness="1" bottom_delta="-15" follows="left|top"
40 font="SansSerifSmall" h_pad="0" halign="left" height="10" left="149" 55 height="1" left="55" name="border" width="380" />
41 mouse_opaque="false" name="text_translate_chat" v_pad="0" width="160"> 56
42 Translate into this language: 57
43 </text> 58 <text type="string" length="1" bg_visible="false" border_drop_shadow_visible="false" border_visible="false"
44 <combo_box allow_text_entry="true" bottom_delta="-5" enabled="true" 59 bottom_delta="-20" drop_shadow_visible="true" enabled="true" follows="left|top" font-style="BOLD|SHADOW"
45 follows="left|top" height="16" left_delta="183" max_chars="135" 60 font="SansSerifSmall" h_pad="0" halign="left" height="10" left="20"
46 mouse_opaque="true" name="translate_language_combobox" width="146"> 61 mouse_opaque="false" name="text_box3" v_pad="0" width="135">
47 <combo_item type="string" length="1" enabled="true" name="System Default Language" value="default"> 62 Chat Console:
48 System Default 63 </text>
49 </combo_item> 64 <spinner bottom_delta="-25" control_name="ChatPersistTime" decimal_digits="0"
50 <combo_item type="string" length="1" enabled="true" name="English" value="en"> 65 enabled="true" follows="left|top" height="16" increment="1"
51 English 66 initial_val="10" label="Fade chat after" label_width="80" left_delta="30"
52 </combo_item> 67 max_val="60" min_val="2" mouse_opaque="true" name="fade_chat_time"
53 68 width="130" />
54 <!-- After "System Default" and "English", please keep the rest of these combo_items in alphabetical order by the first character in the string. --> 69 <text type="string" length="1" bg_visible="false" border_drop_shadow_visible="false" border_visible="false"
55 70 bottom_delta="6" drop_shadow_visible="true" enabled="true"
56 <combo_item type="string" length="1" enabled="true" name="Danish" value="da"> 71 follows="left|top" font="SansSerifSmall" h_pad="0" halign="left"
57 Dansk (Danish) 72 height="10" left_delta="135" mouse_opaque="false" name="text_box4" v_pad="0"
58 </combo_item> 73 width="80">
59 <combo_item type="string" length="1" enabled="true" name="Deutsch(German)" value="de"> 74 seconds and
60 Deutsch (German) 75 </text>
61 </combo_item> 76 <spinner bottom_delta="-6" decimal_digits="0"
62 <combo_item type="string" length="1" enabled="true" name="Spanish" value="es"> 77 enabled="true" follows="left|top" height="16" increment="1"
63 Español (Spanish) 78 initial_val="10" left_delta="82" max_val="50" min_val="1" mouse_opaque="true"
64 </combo_item> 79 name="max_chat_count" width="60" />
65 <combo_item type="string" length="1" enabled="true" name="French" value="fr"> 80 <text type="string" length="1" bg_visible="false" border_drop_shadow_visible="false" border_visible="false"
66 Français (French) 81 bottom_delta="6" drop_shadow_visible="true" enabled="true"
67 </combo_item> 82 follows="left|top" font="SansSerifSmall" h_pad="0" halign="left"
68 <combo_item type="string" length="1" enabled="true" name="Italian" value="it"> 83 height="10" left_delta="65" mouse_opaque="false" name="text_box5" v_pad="0"
69 Italiano (Italian) 84 width="60">
70 </combo_item> 85 lines
71 <combo_item type="string" length="1" enabled="true" name="Hungarian" value="hu"> 86 </text>
72 Magyar (Hungarian) 87
73 </combo_item> 88 <slider bottom_delta="-25" can_edit_text="false" control_name="ConsoleBackgroundOpacity"
74 <combo_item type="string" length="1" enabled="true" name="Dutch" value="nl"> 89 decimal_digits="3" enabled="true" follows="left|top" height="12"
75 Nederlands (Dutch) 90 increment="0.05" initial_val="1" label="Console opacity:" left="50" max_val="1"
76 </combo_item> 91 min_val="0" mouse_opaque="true" name="console_opacity" show_text="true"
77 <combo_item type="string" length="1" enabled="true" name="Polish" value="pl"> 92 value="0.4" width="200" />
78 Polski (Polish) 93 <check_box bottom_delta="-4" control_name="ChatFullWidth" enabled="true"
79 </combo_item> 94 follows="left|top" font="SansSerifSmall" height="16" initial_value="false"
80 <combo_item type="string" length="1" enabled="true" name="Portugese" value="pt"> 95 label="Full screen width (requires restart)" left="270"
81 Portugués (Portuguese) 96 mouse_opaque="true" name="chat_full_width_check" radio_style="false"
82 </combo_item> 97 width="239" />
83 <combo_item type="string" length="1" enabled="true" name="Russian" value="ru"> 98
84 Русский (Russian) 99
85 </combo_item> 100 <view_border bevel_style="none" border_thickness="1" bottom_delta="-15" follows="left|top"
86 <combo_item type="string" length="1" enabled="true" name="Turkish" value="tr"> 101 height="1" left="55" name="border" width="380" />
87 Türkçe (Turkish) 102
88 </combo_item> 103
89 <combo_item type="string" length="1" enabled="true" name="Ukrainian" value="uk"> 104 <text type="string" length="1" bg_visible="false" border_drop_shadow_visible="false" border_visible="false"
90 Українська (Ukrainian) 105 bottom_delta="-20" drop_shadow_visible="true" enabled="true" follows="left|top" font-style="BOLD|SHADOW"
91 </combo_item> 106 font="SansSerifSmall" h_pad="0" halign="left" height="10" left="20"
92 <combo_item type="string" length="1" enabled="true" name="Chinese" value="zh"> 107 mouse_opaque="false" name="text_box7" v_pad="0" width="128">
93 中文 (简体) (Chinese) 108 Chat Bubbles:
94 </combo_item> 109 </text>
95 <combo_item type="string" length="1" enabled="true" name="(Japanese)" value="ja"> 110
96 日本語 (Japanese) 111 <check_box bottom_delta="-25" control_name="UseChatBubbles" enabled="true" follows="left|top"
97 </combo_item> 112 font="SansSerifSmall" height="16" initial_value="false"
98 <combo_item type="string" length="1" enabled="true" name="(Korean)" value="ko"> 113 label="Show chat bubbles" left_delta="30" mouse_opaque="true"
99 한국어 (Korean) 114 name="bubble_text_chat" radio_style="false" width="237" />
100 </combo_item> 115 <check_box bottom_delta="-0" control_name="UseLocalChatBubbles" enabled="true" follows="left|top"
101 </combo_box> 116 font="SansSerifSmall" height="16" initial_value="false"
117 label="Show local chat and bubbles" left="270" mouse_opaque="true"
118 name="local_bubble_text_chat" radio_style="false" width="237" />
119 <slider bottom_delta="-20" can_edit_text="false" control_name="ChatBubbleOpacity"
120 decimal_digits="3" enabled="true" follows="left|top" height="12"
121 increment="0.05" initial_val="1" label="Bubble opacity:" left="50" max_val="1"
122 min_val="0" mouse_opaque="true" name="bubble_chat_opacity" show_text="true"
123 value="0.5" width="200" />
124
125
126 <view_border bevel_style="none" border_thickness="1" bottom_delta="-15" follows="left|top"
127 height="1" left="55" name="border" width="380" />
128
129
130 <text type="string" length="1" bg_visible="false" border_drop_shadow_visible="false" border_visible="false"
131 bottom_delta="-20" drop_shadow_visible="true" enabled="true" follows="left|top" font-style="BOLD|SHADOW"
132 font="SansSerifSmall" h_pad="0" halign="left" height="10" left="20"
133 mouse_opaque="false" name="text_box6" v_pad="0" width="135">
134 Chatbar:
135 </text>
136
137 <check_box bottom_delta="-25" enabled="true"
138 follows="left|top" font="SansSerifSmall" height="16" initial_value="false"
139 label="Close chatbar after hitting return" left_delta="30" mouse_opaque="true"
140 name="close_chat_on_return_check" radio_style="false" width="237" />
141 <check_box bottom_delta="0" enabled="true" follows="left|top"
142 font="SansSerifSmall" height="16" initial_value="false"
143 label="Show custom chat channel" left="270" mouse_opaque="true"
144 name="toggle_channel_control" radio_style="false" width="237" />
145 <check_box bottom_delta="-20" enabled="true"
146 follows="left|top" font="SansSerifSmall" height="16" initial_value="true"
147 label="Play typing animation when chatting" left="50" mouse_opaque="true"
148 name="play_typing_animation" radio_style="false" width="237" />
149 <check_box bottom_delta="-20" enabled="true" follows="left|top" font="SansSerifSmall" height="16"
150 initial_value="false" label="Use the chatbar as a command line" left="50"
151 mouse_opaque="true" name="command_line_check" radio_style="false" width="250"/>
152 <button bottom_delta="-2" follows="left|top" font="SansSerifSmall" height="20" width="160"
153 label="Chatbar Commands" name="command_line_btn" left="270"
154 tool_tip="Set specific chatbar command line commands here" />
155
156
157 <view_border bevel_style="none" border_thickness="1" bottom_delta="-15" follows="left|top"
158 height="1" left="55" name="border" width="380" />
159
160
161 <text type="string" length="1" bg_visible="false" border_drop_shadow_visible="false" border_visible="false"
162 bottom_delta="-20" drop_shadow_visible="true" enabled="true" follows="left|top" font-style="BOLD|SHADOW"
163 font="SansSerifSmall" h_pad="0" halign="left" height="10" left="20"
164 mouse_opaque="false" name="text_box6" v_pad="0" width="135">
165 Instant Messages:
166 </text>
167
168 <check_box bottom_delta="-25" enabled="true" follows="left|top" font="SansSerifSmall"
169 height="16" initial_value="false" label="Send offline IMs to email ([EMAIL])"
170 left_delta="30" mouse_opaque="true" name="send_im_to_email" radio_style="false"
171 width="350" />
172 <text type="string" length="1" bg_visible="false" border_drop_shadow_visible="false" border_visible="false"
173 bottom_delta="-14" drop_shadow_visible="true" enabled="true" follows="left|top"
174 font="SansSerifSmall" h_pad="0" halign="left" height="10" left_delta="0"
175 mouse_opaque="false" name="show_ims_label" v_pad="0" width="100">
176 Show IMs in:
177 </text>
178 <check_box bottom_delta="-6" enabled="true" follows="left|top"
179 font="SansSerifSmall" height="16" initial_value="false"
180 label="Main chat" left="150" mouse_opaque="true"
181 name="include_im_in_chat_console" radio_style="false" width="100" />
182 <check_box bottom_delta="0" enabled="true" follows="left|top"
183 font="SansSerifSmall" height="16" initial_value="false"
184 label="Local Chat window" left="270" mouse_opaque="true"
185 name="include_im_in_chat_history" radio_style="false" width="100" />
186 <check_box bottom_delta="-20" enabled="true"
187 follows="left|top" font="SansSerifSmall" height="16" initial_value="false"
188 label="Vertical IM tabs (requires restart)" left="50" mouse_opaque="true"
189 name="vertical-imtabs-toggle" radio_style="false" width="270" />
190
191
192 </panel>
193
194
195 <!-- SPELL CHECKING AND TRANSLATE PANEL -->
196
197
198 <panel border="true" bottom="-580" follows="left|top|right|bottom" height="525" label="Spell Checking &amp; Translate"
199 left="1" mouse_opaque="true" name="spell_check_tab" width="418">
200
201
202 <text type="string" length="1" bg_visible="false" border_drop_shadow_visible="false" border_visible="false"
203 bottom="-20" drop_shadow_visible="true" enabled="true" follows="left|top" font-style="BOLD|SHADOW"
204 font="SansSerifSmall" h_pad="0" halign="left" height="10" left="20"
205 mouse_opaque="false" name="text_box" v_pad="0" width="128">
206 Spell Checking:
207 </text>
208 <check_box bottom_delta="-25" enabled="true" follows="left|top" font="SansSerifSmall" height="16"
209 label="Enable spell checking" left_delta="30" mouse_opaque="true" name="EmeraldSpellDisplay"
210 control_name="EmeraldSpellDisplay" width="126"/>
211 <text bottom_delta="-20" follows="left|top" font="SansSerifSmall" height="16" left_delta="30"
212 name="EmSpell_txt4" width="512">
213 Right-click a misspelled/red-underlined word to correct
214 </text>
215
216 <text bottom_delta="-30" follows="left|top" font="SansSerifSmall" height="16" left_delta="-30"
217 name="EmSpell_txt1" width="512">
218 Current language (dictionary):
219 </text>
220 <combo_box allow_text_entry="false" bottom_delta="-20" left_delta="0" follows="left|top" height="18"
221 max_chars="200" mouse_opaque="true" name="EmeraldSpellBase" width="250"
222 control_name="EmeraldSpellBase" tool_tip=""/>
223
224 <text bottom_delta="-30" follows="left|top" font="SansSerifSmall" height="16" left_delta="0"
225 name="EmSpell_txt3" width="512">
226 Downloaded languages (dictionaries):
227 </text>
228 <combo_box allow_text_entry="false" bottom_delta="-20" left_delta="0" follows="left|top" height="18"
229 max_chars="200" mouse_opaque="true" name="EmSpell_Avail" width="250"
230 control_name="EmSpell_Avail" tool_tip=""/>
231
232 <button bottom_delta="0" follows="left|top" font="SansSerifSmall" height="20" label="Install"
233 name="EmSpell_Add" tool_tip="" left_delta="255" width="110"/>
234
235 <button bottom_delta="-22" follows="left|top" font="SansSerifSmall" height="20" label="Download More..."
236 name="EmSpell_GetMore" tool_tip="Get more dictionaries availabe online" left="50" width="250"/>
237
238 <text bottom_delta="-30" follows="left|top" font="SansSerifSmall" height="16" left_delta="0"
239 name="EmSpell_txt2" width="512">
240 Additional custom languages (dictionaries):
241 </text>
242 <combo_box allow_text_entry="false" bottom_delta="-20" left_delta="0" follows="left|top" height="18"
243 max_chars="200" mouse_opaque="true" name="EmSpell_Installed" width="250"
244 control_name="EmSpell_Installed" tool_tip=""/>
245
246 <button bottom_delta="0" follows="left|top" font="SansSerifSmall" height="20" label="Remove"
247 name="EmSpell_Remove" tool_tip="" left_delta="255" width="110"/>
248
249 <!--<button bottom_delta="-20" follows="left|top" font="SansSerifSmall" height="18" label="Edit Custom dictionary"
250 name="EmSpell_EditCustom" tool_tip="" left_delta="20" width="130"/>-->
251
252 <button name="ac_button" label="AutoCorrect..." halign="center"
253 tool_tip="Modify the AutoCorrect word list and settings" left="50"
254 bottom_delta="-40" width="160" height="20" font="SansSerifSmall" follows="left|top"/>
255
256
257 <view_border bevel_style="none" border_thickness="1" bottom_delta="-15" follows="left|top"
258 height="1" left="55" name="border" width="380" />
259
260
261 <text type="string" length="1" bg_visible="false" border_drop_shadow_visible="false" border_visible="false"
262 bottom_delta="-20" drop_shadow_visible="true" enabled="true" follows="left|top" font-style="BOLD|SHADOW"
263 font="SansSerifSmall" h_pad="0" halign="left" height="10" left="20"
264 mouse_opaque="false" name="text_box" v_pad="0" width="128">
265 Translate Chat:
266 </text>
267 <check_box bottom_delta="-25" control_name="TranslateChat" enabled="true" follows="left|top"
268 font="SansSerifSmall" height="16" initial_value="false"
269 label="Use machine translation while chatting (powered by Google)" left_delta="30" mouse_opaque="true"
270 name="translate_chat" radio_style="false" width="237" />
271
272 <text type="string" length="1" bg_visible="false" border_drop_shadow_visible="false" border_visible="false"
273 bottom_delta="-16" drop_shadow_visible="true" enabled="true" follows="left|top"
274 font="SansSerifSmall" h_pad="0" halign="left" height="10" left_delta="0"
275 mouse_opaque="false" name="text_translate_chat" v_pad="0" width="160">
276 Translate into this language:
277 </text>
278
279 <combo_box allow_text_entry="false" bottom_delta="-5" enabled="true"
280 follows="left|top" height="16" left="270" max_chars="135"
281 mouse_opaque="true" name="translate_language_combobox" width="160">
282 <combo_item type="string" length="1" enabled="true" name="System Default Language" value="default">
283 System Default
284 </combo_item>
285 <combo_item type="string" length="1" enabled="true" name="English" value="en">
286 English
287 </combo_item>
288
289 <!-- After "System Default" and "English", please keep the rest of these combo_items in alphabetical order by the first character in the string. -->
290
291 <combo_item type="string" length="1" enabled="true" name="Danish" value="da">
292 Dansk (Danish)
293 </combo_item>
294 <combo_item type="string" length="1" enabled="true" name="Deutsch(German)" value="de">
295 Deutsch (German)
296 </combo_item>
297 <combo_item type="string" length="1" enabled="true" name="Spanish" value="es">
298 Español (Spanish)
299 </combo_item>
300 <combo_item type="string" length="1" enabled="true" name="French" value="fr">
301 Français (French)
302 </combo_item>
303 <combo_item type="string" length="1" enabled="true" name="Italian" value="it">
304 Italiano (Italian)
305 </combo_item>
306 <combo_item type="string" length="1" enabled="true" name="Hungarian" value="hu">
307 Magyar (Hungarian)
308 </combo_item>
309 <combo_item type="string" length="1" enabled="true" name="Dutch" value="nl">
310 Nederlands (Dutch)
311 </combo_item>
312 <combo_item type="string" length="1" enabled="true" name="Polish" value="pl">
313 Polski (Polish)
314 </combo_item>
315 <combo_item type="string" length="1" enabled="true" name="Portugese" value="pt">
316 Portugués (Portuguese)
317 </combo_item>
318 <combo_item type="string" length="1" enabled="true" name="Russian" value="ru">
319 Русский (Russian)
320 </combo_item>
321 <combo_item type="string" length="1" enabled="true" name="Turkish" value="tr">
322 Türkçe (Turkish)
323 </combo_item>
324 <combo_item type="string" length="1" enabled="true" name="Ukrainian" value="uk">
325 Українська (Ukrainian)
326 </combo_item>
327 <combo_item type="string" length="1" enabled="true" name="Chinese" value="zh">
328 中文 (简体) (Chinese)
329 </combo_item>
330 <combo_item type="string" length="1" enabled="true" name="(Japanese)" value="ja">
331 日本語 (Japanese)
332 </combo_item>
333 <combo_item type="string" length="1" enabled="true" name="(Korean)" value="ko">
334 한국어 (Korean)
335 </combo_item>
336 </combo_box>
337
338
339 <button bottom="-20" follows="left|top" font="SansSerifSmall" height="18" label="?"
340 name="EmeraldHelp_SpellCheck" tool_tip="Click here for help regarding the settings in this page."
341 right="490" width="18"/>
342
343
344 </panel>
345
346
347 </tab_container>
348
102 349
103 <text type="string" length="1" bg_visible="false" border_drop_shadow_visible="false" border_visible="false" 350 <string name="log_in_to_change">
104 bottom_delta="-40" drop_shadow_visible="true" enabled="true" follows="left|top" 351 log in to change
105 font="SansSerifSmall" h_pad="0" halign="left" height="10" left="12" 352 </string>
106 mouse_opaque="false" name="text_box3" v_pad="0" width="135"> 353 <string name="default_email_used">
107 Chat Console: 354 using default address
108 </text> 355 </string>
109 <spinner bottom_delta="-8" control_name="ChatPersistTime" decimal_digits="0"
110 enabled="true" follows="left|top" height="16" increment="1"
111 initial_val="10" label="Fade chat after" label_width="80" left="148"
112 max_val="60" min_val="2" mouse_opaque="true" name="fade_chat_time"
113 width="130" />
114 <text type="string" length="1" bg_visible="false" border_drop_shadow_visible="false" border_visible="false"
115 bottom_delta="6" drop_shadow_visible="true" enabled="true"
116 follows="left|top" font="SansSerifSmall" h_pad="0" halign="left"
117 height="10" left="282" mouse_opaque="false" name="text_box4" v_pad="0"
118 width="80">
119 (seconds)
120 </text>
121 <spinner bottom_delta="-6" decimal_digits="0"
122 enabled="true" follows="left|top" height="16" increment="1"
123 initial_val="10" left="340" max_val="50" min_val="1" mouse_opaque="true"
124 name="max_chat_count" width="60" />
125 <text type="string" length="1" bg_visible="false" border_drop_shadow_visible="false" border_visible="false"
126 bottom_delta="6" drop_shadow_visible="true" enabled="true"
127 follows="left|top" font="SansSerifSmall" h_pad="0" halign="left"
128 height="10" left="405" mouse_opaque="false" name="text_box5" v_pad="0"
129 width="60">
130 (# lines)
131 </text>
132 <slider bottom_delta="-25" can_edit_text="false" control_name="ConsoleBackgroundOpacity"
133 decimal_digits="3" enabled="true" follows="left|top" height="12"
134 increment="0.05" initial_val="1" label="Console opacity:" left="148" max_val="1"
135 min_val="0" mouse_opaque="true" name="console_opacity" show_text="true"
136 value="0.4" width="225" />
137 <check_box bottom_delta="-25" control_name="ChatFullWidth" enabled="true"
138 follows="left|top" font="SansSerifSmall" height="16" initial_value="false"
139 label="Use full screen width (requires restart)" left="148"
140 mouse_opaque="true" name="chat_full_width_check" radio_style="false"
141 width="239" />
142
143 <text type="string" length="1" bg_visible="false" border_drop_shadow_visible="false" border_visible="false"
144 bottom_delta="-40" drop_shadow_visible="true" enabled="true" follows="left|top"
145 font="SansSerifSmall" h_pad="0" halign="left" height="10" left="12"
146 mouse_opaque="false" name="text_box7" v_pad="0" width="128">
147 Chat Bubbles:
148 </text>
149 <check_box bottom_delta="-8" control_name="UseChatBubbles" enabled="true" follows="left|top"
150 font="SansSerifSmall" height="16" initial_value="false"
151 label="Show chat bubbles" left="148" mouse_opaque="true"
152 name="bubble_text_chat" radio_style="false" width="237" />
153 <check_box bottom_delta="-0" control_name="UseLocalChatBubbles" enabled="true" follows="left|top"
154 font="SansSerifSmall" height="16" initial_value="false"
155 label="Show local chat and bubbles" left="288" mouse_opaque="true"
156 name="local_bubble_text_chat" radio_style="false" width="237" />
157 <slider bottom_delta="-20" can_edit_text="false" control_name="ChatBubbleOpacity"
158 decimal_digits="3" enabled="true" follows="left|top" height="12"
159 increment="0.05" initial_val="1" label="Bubble opacity:" left="148" max_val="1"
160 min_val="0" mouse_opaque="true" name="bubble_chat_opacity" show_text="true"
161 value="0.5" width="225" />
162 356
163 <text type="string" length="1" bg_visible="false" border_drop_shadow_visible="false" border_visible="false"
164 bottom_delta="-40" drop_shadow_visible="true" enabled="true" follows="left|top"
165 font="SansSerifSmall" h_pad="0" halign="left" height="10" left="12"
166 mouse_opaque="false" name="text_box6" v_pad="0" width="135">
167 Miscellaneous:
168 </text>
169 <check_box bottom_delta="-8" enabled="true"
170 follows="left|top" font="SansSerifSmall" height="16" initial_value="false"
171 label="Close chat bar after hitting return" left="148" mouse_opaque="true"
172 name="close_chat_on_return_check" radio_style="false" width="237" />
173 <check_box bottom_delta="-18" enabled="true"
174 follows="left|top" font="SansSerifSmall" height="16" initial_value="false"
175 label="Arrow keys always move avatar when chatting" left="148"
176 mouse_opaque="true" name="arrow_keys_move_avatar_check" radio_style="false"
177 width="237" />
178 <check_box bottom_delta="-18" enabled="true"
179 follows="left|top" font="SansSerifSmall" height="16" initial_value="false"
180 label="Show timestamps in Local Chat" left="148" mouse_opaque="true"
181 name="show_timestamps_check" radio_style="false" width="237" />
182 <check_box bottom_delta="-18" control_name="ScriptErrorsAsChat" enabled="true"
183 follows="left|top" font="SansSerifSmall" height="16" initial_value="false"
184 label="Show script errors and warnings as regular chat" left="148"
185 mouse_opaque="true" name="script_errors_as_chat" radio_style="false"
186 width="275" />
187 <check_box bottom_delta="-18" enabled="true"
188 follows="left|top" font="SansSerifSmall" height="16" initial_value="true"
189 label="Play typing animation when chatting" left="148" mouse_opaque="true"
190 name="play_typing_animation" radio_style="false" width="237" />
191 <check_box bottom_delta="-18" enabled="true" follows="left|top"
192 font="SansSerifSmall" height="16" initial_value="false"
193 label="Show custom chat channel" left="148" mouse_opaque="true"
194 name="toggle_channel_control" radio_style="false" width="237" />
195 357
196</panel> 358</panel>
diff --git a/linden/indra/newview/skins/default/xui/en-us/panel_preferences_colors.xml b/linden/indra/newview/skins/default/xui/en-us/panel_preferences_colors.xml
index 40a75a6..26aab9a 100644
--- a/linden/indra/newview/skins/default/xui/en-us/panel_preferences_colors.xml
+++ b/linden/indra/newview/skins/default/xui/en-us/panel_preferences_colors.xml
@@ -1,115 +1,152 @@
1<?xml version="1.0" encoding="utf-8" standalone="yes" ?> 1<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
2
3<!--
4ALL PREFS OPTIONS START AT 20px FROM LEFT, 10px FROM TOP
5
6USE bottom_delta BETWEEN OPTIONS IN A GROUP
7
8USE LINES BETWEEN GROUPS
9
10USE font-style="BOLD|SHADOW" FOR GROUP LABELS
11
12GROUP LABEL CONTENTS ARE INDENTED 30px
13
14USE left="270" FOR TABBING OPTIONS
15-->
16
2<panel border="true" bottom="-409" enabled="true" follows="left|top|right|bottom" 17<panel border="true" bottom="-409" enabled="true" follows="left|top|right|bottom"
3 height="408" label="Chat Colors" left="102" mouse_opaque="true" name="colors" 18 height="408" label="Colors" left="102" mouse_opaque="true" name="colors"
4 width="517"> 19 width="517">
20
21
22 <text type="string" length="1" bg_visible="false" border_drop_shadow_visible="false" border_visible="false"
23 bottom="-20" drop_shadow_visible="true" enabled="true" follows="left|top" font-style="BOLD|SHADOW"
24 font="SansSerifSmall" h_pad="0" halign="left" height="10" left="20"
25 mouse_opaque="true" name="effects_color_textbox" v_pad="0" width="394">
26 Selection Beam Color:
27 </text>
28
29 <color_swatch border_color="0.45098 0.517647 0.607843 1" bottom_delta="-80"
30 can_apply_immediately="false" color="1 1 1 1"
31 enabled="true" follows="left|top" height="65" label="" left="50"
32 mouse_opaque="true" name="effect_color_swatch"
33 tool_tip="Click to open Color Picker" width="65" />
34
35
36 <text type="string" length="1" bg_visible="false" border_drop_shadow_visible="false" border_visible="false"
37 bottom="-20" drop_shadow_visible="true" enabled="true" follows="left|top" font-style="BOLD|SHADOW"
38 font="SansSerifSmall" h_pad="0" halign="left" height="10" left="270"
39 mouse_opaque="true" name="effects_color_textbox" v_pad="0" width="394">
40 Client Tag Color:
41 </text>
42 <color_swatch border_color="0.45098 0.517647 0.607843 1" bottom_delta="-80"
43 can_apply_immediately="true" color="0.79 0.44 0.88 1"
44 enabled="true" follows="left|top"
45 height="65" label="Imprudence" left_delta="30" mouse_opaque="true"
46 name="client_tag_color" width="65" />
47 <check_box bottom_delta="45" enabled="true" follows="left|top"
48 font="SansSerifSmall" height="16" initial_value="false"
49 label="Color client tags" left_delta="76" mouse_opaque="true"
50 name="client_name_color_check" radio_style="false" width="160" />
51
52
53 <view_border bevel_style="none" border_thickness="1" bottom_delta="-60" follows="left|top"
54 height="1" left="55" name="border" width="380" />
55
56
5 <text type="string" length="1" bg_visible="false" border_drop_shadow_visible="false" border_visible="false" 57 <text type="string" length="1" bg_visible="false" border_drop_shadow_visible="false" border_visible="false"
6 bottom="-20" drop_shadow_visible="true" enabled="true" follows="left|top" 58 bottom_delta="-20" drop_shadow_visible="true" enabled="true" follows="left|top" font-style="BOLD|SHADOW"
7 font="SansSerifSmall" h_pad="0" halign="left" height="10" left="12" 59 font="SansSerifSmall" h_pad="0" halign="left" height="10" left="20"
8 mouse_opaque="false" name="text_box2" v_pad="0" width="128"> 60 mouse_opaque="false" name="text_box2" v_pad="0" width="128">
9 Chat Colors: 61 Chat:
10 </text> 62 </text>
11 <color_swatch border_color="0.45098 0.517647 0.607843 1" bottom="-75" 63
64 <color_swatch border_color="0.45098 0.517647 0.607843 1" bottom_delta="-80"
12 can_apply_immediately="true" color="1 1 1 1" control_name="UserChatColor" 65 can_apply_immediately="true" color="1 1 1 1" control_name="UserChatColor"
13 enabled="true" follows="left|top" height="65" label="Your chat" left="120" 66 enabled="true" follows="left|top" height="65" label="Your chat" left="50"
14 mouse_opaque="true" name="user" width="65" /> 67 mouse_opaque="true" name="user" width="65" />
15 <color_swatch border_color="0.45098 0.517647 0.607843 1" bottom="-75" 68 <color_swatch border_color="0.45098 0.517647 0.607843 1" bottom_delta="0"
16 can_apply_immediately="true" color="1 1 1 1" control_name="AgentChatColor" 69 can_apply_immediately="true" color="1 1 1 1" control_name="AgentChatColor"
17 enabled="true" follows="left|top" height="65" label="Others' chat" left_delta="76" 70 enabled="true" follows="left|top" height="65" label="Others' chat" left_delta="76"
18 mouse_opaque="true" name="agent" width="65" /> 71 mouse_opaque="true" name="agent" width="65" />
19 <color_swatch border_color="0.45098 0.517647 0.607843 1" bottom="-75" 72 <color_swatch border_color="0.45098 0.517647 0.607843 1" bottom_delta="0"
20 can_apply_immediately="true" color="0.6 0.6 1 1" 73 can_apply_immediately="true" color="0.6 0.6 1 1"
21 enabled="true" follows="left|top" height="65" label="IMs" left_delta="76" 74 enabled="true" follows="left|top" height="65" label="IMs" left_delta="76"
22 mouse_opaque="true" name="im" width="65" /> 75 mouse_opaque="true" name="im" width="65" />
23 <color_swatch border_color="0.45098 0.517647 0.607843 1" bottom="-75" 76 <color_swatch border_color="0.45098 0.517647 0.607843 1" bottom_delta="0"
24 can_apply_immediately="true" color="0.8 1 1 1" 77 can_apply_immediately="true" color="0.8 1 1 1"
25 enabled="true" follows="left|top" 78 enabled="true" follows="left|top"
26 height="65" label="System" left_delta="76" mouse_opaque="true" 79 height="65" label="System" left_delta="76" mouse_opaque="true"
27 name="system" width="65" /> 80 name="system" width="65" />
28 <color_swatch border_color="0.45098 0.517647 0.607843 1" bottom="-75" 81 <color_swatch border_color="0.45098 0.517647 0.607843 1" bottom_delta="0"
29 can_apply_immediately="true" color="0.82 0.82 0.99 1" 82 can_apply_immediately="true" color="0.82 0.82 0.99 1"
30 control_name="ScriptErrorColor" enabled="true" follows="left|top" 83 control_name="ScriptErrorColor" enabled="true" follows="left|top"
31 height="65" label="Script errors" left_delta="76" mouse_opaque="true" 84 height="65" label="Script errors" left_delta="76" mouse_opaque="true"
32 name="script_error" width="65" /> 85 name="script_error" width="65" />
33 <color_swatch border_color="0.45098 0.517647 0.607843 1" bottom="-146" 86
87 <color_swatch border_color="0.45098 0.517647 0.607843 1" bottom_delta="-70"
34 can_apply_immediately="true" color="0.7 0.9 0.7 1" 88 can_apply_immediately="true" color="0.7 0.9 0.7 1"
35 control_name="ObjectChatColor" enabled="true" follows="left|top" 89 control_name="ObjectChatColor" enabled="true" follows="left|top"
36 height="65" label="Object chat" left="120" mouse_opaque="true" 90 height="65" label="Object chat" left="50" mouse_opaque="true"
37 name="objects" width="65" /> 91 name="objects" width="65" />
38 <color_swatch border_color="0.45098 0.517647 0.607843 1" bottom="-146" 92 <color_swatch border_color="0.45098 0.517647 0.607843 1" bottom_delta="0"
39 can_apply_immediately="true" color="0.7 0.9 0.7 1" 93 can_apply_immediately="true" color="0.7 0.9 0.7 1"
40 control_name="ObjectIMColor" enabled="true" follows="left|top" 94 control_name="ObjectIMColor" enabled="true" follows="left|top"
41 height="65" label="Object IMs" left_delta="76" mouse_opaque="true" 95 height="65" label="Object IMs" left_delta="76" mouse_opaque="true"
42 name="object_ims" width="65" /> 96 name="object_ims" width="65" />
43 <color_swatch border_color="0.45098 0.517647 0.607843 1" bottom="-146" 97 <color_swatch border_color="0.45098 0.517647 0.607843 1" bottom_delta="0"
44 can_apply_immediately="true" color="0.7 0.9 0.7 1" 98 can_apply_immediately="true" color="0.7 0.9 0.7 1"
45 enabled="true" follows="left|top" 99 enabled="true" follows="left|top"
46 height="65" label="Owner chat" left_delta="76" mouse_opaque="true" name="owner" 100 height="65" label="Owner chat" left_delta="76" mouse_opaque="true" name="owner"
47 width="65" /> 101 width="65" />
48 <color_swatch border_color="0.45098 0.517647 0.607843 1" bottom="-146" 102 <color_swatch border_color="0.45098 0.517647 0.607843 1" bottom_delta="0"
49 can_apply_immediately="true" color="0 0 0 1" 103 can_apply_immediately="true" color="0 0 0 1"
50 enabled="true" follows="left|top" 104 enabled="true" follows="left|top"
51 height="65" label="Bubble chat" left_delta="76" mouse_opaque="true" 105 height="65" label="Bubble chat" left_delta="76" mouse_opaque="true"
52 name="background" width="65" /> 106 name="background" width="65" />
53 <color_swatch border_color="0.45098 0.517647 0.607843 1" bottom="-146" 107 <color_swatch border_color="0.45098 0.517647 0.607843 1" bottom_delta="0"
54 can_apply_immediately="true" color="0.6 0.6 1 1" 108 can_apply_immediately="true" color="0.6 0.6 1 1"
55 enabled="true" follows="left|top" height="65" 109 enabled="true" follows="left|top" height="65"
56 label="Links" left_delta="76" mouse_opaque="true" name="links" width="65" /> 110 label="Links" left_delta="76" mouse_opaque="true" name="links" width="65" />
111
112 <color_swatch border_color="0.45098 0.517647 0.607843 1" bottom_delta="-85"
113 can_apply_immediately="true" color="1 1 1 1" control_name="FriendsChatColor"
114 enabled="true" follows="left|top" height="65" label="Friends" left="50"
115 mouse_opaque="true" name="FriendsChatColor" width="65" />
116 <check_box bottom_delta="45" enabled="true" follows="left|top" font="SansSerifSmall" height="16"
117 initial_value="true" label="Highlight chat from friends" left_delta="76"
118 mouse_opaque="true" name="HighlightFriendsChat" radio_style="false" width="270"/>
57 119
58 <text type="string" length="1" bg_visible="false" border_drop_shadow_visible="false" border_visible="false" 120 <color_swatch border_color="0.45098 0.517647 0.607843 1" bottom_delta="-121"
59 bottom_delta="-30" drop_shadow_visible="true" enabled="true" follows="left|top" 121 can_apply_immediately="true" color="1 1 1 1" control_name="OwnNameChatColor"
60 font="SansSerifSmall" h_pad="0" halign="left" height="10" left="12" 122 enabled="true" follows="left|top" height="65" label="Your name" left="50"
61 mouse_opaque="false" name="text_box3" v_pad="0" width="128"> 123 mouse_opaque="true" name="OwnNameChatColor" width="65" />
62 Line Highlighting: 124 <check_box bottom_delta="45" enabled="true" follows="left|top"
63 </text> 125 font="SansSerifSmall" height="16" initial_value="true"
64 126 label="Highlight local chat containing your name and/or nicknames:" left_delta="76" mouse_opaque="true"
65 <check_box bottom_delta="-7" enabled="true" follows="left|top" font="SansSerifSmall" height="16" 127 name="HighlightOwnNameInChat" radio_style="false" width="217" />
66 initial_value="true" label="Highlight chat from friends" left="120"
67 mouse_opaque="true" name="HighlightFriendsChat" radio_style="false" width="270"/>
68 <color_swatch border_color="0.45098 0.517647 0.607843 1" bottom_delta="-70"
69 can_apply_immediately="true" color="1 1 1 1" control_name="FriendsChatColor"
70 enabled="true" follows="left|top" height="65" label="Friends" left_delta="20"
71 mouse_opaque="true" name="FriendsChatColor" width="65" />
72
73 <check_box bottom_delta="-25" enabled="true" follows="left|top"
74 font="SansSerifSmall" height="16" initial_value="true"
75 label="Highlight local chat containing your name" left="120" mouse_opaque="true"
76 name="HighlightOwnNameInChat" radio_style="false" width="217" />
77 <check_box bottom_delta="-20" enabled="true" follows="left|top" font="SansSerifSmall" height="16" 128 <check_box bottom_delta="-20" enabled="true" follows="left|top" font="SansSerifSmall" height="16"
78 initial_value="true" label="Highlight group chat containing your name" left_delta="0" 129 initial_value="true" label="Highlight group chat containing your name and/or nicknames:" left_delta="0"
79 mouse_opaque="true" name="HighlightOwnNameInIM" radio_style="false" width="270"/> 130 mouse_opaque="true" name="HighlightOwnNameInIM" radio_style="false" width="270"/>
80 <color_swatch border_color="0.45098 0.517647 0.607843 1" bottom_delta="-70"
81 can_apply_immediately="true" color="1 1 1 1" control_name="OwnNameChatColor"
82 enabled="true" follows="left|top" height="65" label="Your name" left_delta="20"
83 mouse_opaque="true" name="OwnNameChatColor" width="65" />
84 131
85 <text bottom_delta="-30" follows="left|top" font="SansSerifSmall" height="20" 132
86 left="140" name="nick01_text" width="150"> 133 <line_editor bevel_style="in" border_style="line" border_thickness="1" bottom_delta="-22"
87 Highlight nickname 1: 134 enabled="true" follows="left|top" font="SansSerif" label="Nickname 1"
88 </text> 135 handle_edit_keys_directly="true" height="18" left_delta="0"
89 <line_editor bevel_style="in" border_style="line" border_thickness="1" bottom_delta="3"
90 enabled="true" follows="left|top" font="SansSerif"
91 handle_edit_keys_directly="true" height="20" left_delta="125"
92 max_length="50" mouse_opaque="true" name="nick01" 136 max_length="50" mouse_opaque="true" name="nick01"
93 select_all_on_focus_received="true" width="160" word_wrap="false" /> 137 select_all_on_focus_received="true" width="110" word_wrap="false" />
94 138
95 <text bottom_delta="-25" follows="left|top" font="SansSerifSmall" height="20" 139 <line_editor bevel_style="in" border_style="line" border_thickness="1" bottom_delta="0"
96 left="140" name="nick02_text" width="150"> 140 enabled="true" follows="left|top" font="SansSerif" label="Nickname 2"
97 Highlight nickname 2: 141 handle_edit_keys_directly="true" height="18" left_delta="120"
98 </text>
99 <line_editor bevel_style="in" border_style="line" border_thickness="1" bottom_delta="3"
100 enabled="true" follows="left|top" font="SansSerif"
101 handle_edit_keys_directly="true" height="20" left_delta="125"
102 max_length="50" mouse_opaque="true" name="nick02" 142 max_length="50" mouse_opaque="true" name="nick02"
103 select_all_on_focus_received="true" width="160" word_wrap="false" /> 143 select_all_on_focus_received="true" width="110" word_wrap="false" />
104 144
105 <text bottom_delta="-25" follows="left|top" font="SansSerifSmall" height="20" 145 <line_editor bevel_style="in" border_style="line" border_thickness="1" bottom_delta="0"
106 left="140" name="nick03_text" width="150"> 146 enabled="true" follows="left|top" font="SansSerif" label="Nickname 3"
107 Highlight nickname 3: 147 handle_edit_keys_directly="true" height="18" left_delta="120"
108 </text>
109 <line_editor bevel_style="in" border_style="line" border_thickness="1" bottom_delta="3"
110 enabled="true" follows="left|top" font="SansSerif"
111 handle_edit_keys_directly="true" height="20" left_delta="125"
112 max_length="50" mouse_opaque="true" name="nick03" 148 max_length="50" mouse_opaque="true" name="nick03"
113 select_all_on_focus_received="true" width="160" word_wrap="false" /> 149 select_all_on_focus_received="true" width="110" word_wrap="false" />
150
114 151
115</panel> 152</panel>
diff --git a/linden/indra/newview/skins/default/xui/en-us/panel_preferences_fonts.xml b/linden/indra/newview/skins/default/xui/en-us/panel_preferences_fonts.xml
index c64ce9f..8488656 100644
--- a/linden/indra/newview/skins/default/xui/en-us/panel_preferences_fonts.xml
+++ b/linden/indra/newview/skins/default/xui/en-us/panel_preferences_fonts.xml
@@ -1,15 +1,35 @@
1<?xml version="1.0" encoding="utf-8" standalone="yes" ?> 1<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
2 2
3<panel name="font_panel" label="Fonts" 3<!--
4ALL PREFS OPTIONS START AT 20px FROM LEFT, 10px FROM TOP
5
6USE bottom_delta BETWEEN OPTIONS IN A GROUP
7
8USE LINES BETWEEN GROUPS
9
10USE font-style="BOLD|SHADOW" FOR GROUP LABELS
11
12GROUP LABEL CONTENTS ARE INDENTED 30px
13
14USE left="270" FOR TABBING OPTIONS
15-->
16
17<panel name="fonts_panel" label="Fonts"
4 bottom="-409" left="102" height="408" width="517" 18 bottom="-409" left="102" height="408" width="517"
5 border="true" follows="left|top|right|bottom"> 19 border="true" follows="left|top|right|bottom">
6 20
7 <text bottom="-25" left="10" height="15" width="300"> 21 <text type="string" length="1" bg_visible="false" border_drop_shadow_visible="false" border_visible="false"
8 User interface font (requires restart): 22 bottom="-22" drop_shadow_visible="true" enabled="true" follows="left|top"
23 font="SansSerifSmall" h_pad="0" halign="left" height="12" left="20"
24 mouse_opaque="true" name="fontselect" v_pad="0" width="128" font-style="BOLD|SHADOW">
25 Select UI Font:
26 </text>
27 <text font="SansSerifSmall" bottom="-22" left_delta="80" height="12" width="300">
28 (requires restart)
9 </text> 29 </text>
10 30
11 <radio_group name="fonts" draw_border="false" 31 <radio_group name="fonts" draw_border="false"
12 top="-30" left="20" bottom="0" right="-20" 32 top="-30" left="50" bottom="0" right="-20"
13 follows="top|left|bottom|right"> 33 follows="top|left|bottom|right">
14 34
15 <radio_item name="DroidSans" bottom="-20" left="0" height="20"> 35 <radio_item name="DroidSans" bottom="-20" left="0" height="20">
@@ -48,12 +68,37 @@
48 68
49 69
50 <spinner name="font_mult" label="Font size multiplier:" label_width="130" 70 <spinner name="font_mult" label="Font size multiplier:" label_width="130"
51 bottom="-280" left="20" height="16" width="180" follows="left|top" 71 bottom_delta="150" left="50" height="16" width="180" follows="left|top"
52 decimal_digits="2" increment="0.01" max_val="3.0" min_val="0.1" 72 decimal_digits="2" increment="0.01" max_val="3.0" min_val="0.1"
53 tool_tip="Multiply all font sizes by this amount." /> 73 tool_tip="Multiply all font sizes by this amount." />
54 74
55 <check_box name="font_round" follows="left|top" 75 <check_box name="font_round" follows="left|top"
56 bottom="-300" left="20" height="16" width="300" 76 bottom_delta="-20" left_delta="0" height="16" width="300"
57 label="Force integer font sizes (may fix blurry fonts)" /> 77 label="Force integer font sizes (may fix blurry fonts)" />
58 78
79
80 <view_border bevel_style="none" border_thickness="1" bottom_delta="-15" follows="left|top"
81 height="1" left="55" name="border" width="380" />
82
83
84 <text type="string" length="1" bg_visible="false" border_drop_shadow_visible="false" border_visible="false"
85 bottom_delta="-20" drop_shadow_visible="true" enabled="true" follows="left|top"
86 font="SansSerifSmall" h_pad="0" halign="left" height="12" left="20"
87 mouse_opaque="true" name="UI Size:" v_pad="0" width="128" font-style="BOLD|SHADOW">
88 UI Size:
89 </text>
90
91 <slider bottom_delta="22" can_edit_text="true" label_width="0" label=""
92 decimal_digits="3" enabled="true" height="16" increment="0.001"
93 initial_val="1" left="50" max_val="1.4" min_val="0.75" mouse_opaque="true"
94 name="ui_scale_slider" show_text="true" value="1" width="160" />
95 <button bottom_delta="-48" enabled="true" follows="left|top"
96 font="SansSerifSmall" halign="center" height="20" label="Reset to Default"
97 left="270" mouse_opaque="true"
98 name="reset_ui_size" scale_image="true" width="160" />
99 <check_box bottom_delta="-20" enabled="true" follows="left|top"
100 font="SansSerifSmall" height="16" initial_value="false"
101 label="Use resolution independent scale" left="50" mouse_opaque="true"
102 name="ui_auto_scale" radio_style="false" width="256" />
103
59</panel> 104</panel>
diff --git a/linden/indra/newview/skins/default/xui/en-us/panel_preferences_general.xml b/linden/indra/newview/skins/default/xui/en-us/panel_preferences_general.xml
index 8b354b4..e96def5 100644
--- a/linden/indra/newview/skins/default/xui/en-us/panel_preferences_general.xml
+++ b/linden/indra/newview/skins/default/xui/en-us/panel_preferences_general.xml
@@ -1,18 +1,35 @@
1<?xml version="1.0" encoding="utf-8" standalone="yes" ?> 1<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
2
3<!--
4ALL PREFS OPTIONS START AT 20px FROM LEFT, 10px FROM TOP
5
6USE bottom_delta BETWEEN OPTIONS IN A GROUP
7
8USE LINES BETWEEN GROUPS
9
10USE font-style="BOLD|SHADOW" FOR GROUP LABELS
11
12GROUP LABEL CONTENTS ARE INDENTED 30px
13
14USE left="270" FOR TABBING OPTIONS
15-->
16
2<panel border="true" bottom="-409" enabled="true" follows="left|top|right|bottom" 17<panel border="true" bottom="-409" enabled="true" follows="left|top|right|bottom"
3 height="408" label="General" left="102" mouse_opaque="true" 18 height="408" label="General" left="102" mouse_opaque="true"
4 name="general_panel" width="517"> 19 name="general_panel" width="517">
20
21
5 <text type="string" length="1" bg_visible="false" border_drop_shadow_visible="false" border_visible="false" 22 <text type="string" length="1" bg_visible="false" border_drop_shadow_visible="false" border_visible="false"
6 bottom="-20" drop_shadow_visible="true" enabled="true" follows="left|top" 23 bottom="-20" drop_shadow_visible="true" enabled="true" follows="left|top"
7 font="SansSerifSmall" h_pad="0" halign="left" height="10" left="10" 24 font="SansSerifSmall" h_pad="0" halign="left" height="10" left="20" font-style="BOLD|SHADOW"
8 mouse_opaque="true" name="start_location_textbox" v_pad="0" width="394"> 25 mouse_opaque="true" name="start_location_textbox" v_pad="0" width="394">
9 Start Location: 26 Default Start Location:
10 </text> 27 </text>
11 <string name="region_name_prompt"> 28 <string name="region_name_prompt">
12 &lt;Type region name&gt; 29 &lt;Type region name&gt;
13 </string> 30 </string>
14 <combo_box name="default_location_combo" 31 <combo_box name="default_location_combo"
15 bottom="-22" left="155" height="16" width="150" 32 bottom_delta="-25" left="50" height="16" width="160"
16 follows="left|top" font="SansSerifSmall" 33 follows="left|top" font="SansSerifSmall"
17 mouse_opaque="true" allow_text_entry="true" max_chars="128"> 34 mouse_opaque="true" allow_text_entry="true" max_chars="128">
18 <combo_item name="MyHome" value="My Home"> 35 <combo_item name="MyHome" value="My Home">
@@ -26,153 +43,122 @@
26 </combo_item> 43 </combo_item>
27 </combo_box> 44 </combo_box>
28 <button name="grid_btn" label="Grid Manager" 45 <button name="grid_btn" label="Grid Manager"
29 bottom_delta="-3" left="330" height="20" width="100" 46 bottom_delta="-3" left="270" height="20" width="160"
30 follows="left|top" font="SansSerifSmall" halign="center" 47 follows="left|top" font="SansSerifSmall" halign="center"
31 mouse_opaque="true" scale_image="TRUE" /> 48 mouse_opaque="true" scale_image="TRUE" />
32 <check_box bottom="-44" enabled="true" follows="left|top" 49 <check_box bottom_delta="-17" enabled="true" follows="left|top"
33 font="SansSerifSmall" height="16" initial_value="true" 50 font="SansSerifSmall" height="16" initial_value="true"
34 label="Show start location at login screen" left="151" mouse_opaque="true" 51 label="Show at login screen" left="50" mouse_opaque="true"
35 name="show_location_checkbox" radio_style="false" width="256" /> 52 name="show_location_checkbox" radio_style="false" width="256" />
53
54
55 <view_border bevel_style="none" border_thickness="1" bottom_delta="-15" follows="left|top"
56 height="1" left="55" name="border" width="380" />
57
58
36 <text type="string" length="1" bg_visible="false" border_drop_shadow_visible="false" border_visible="false" 59 <text type="string" length="1" bg_visible="false" border_drop_shadow_visible="false" border_visible="false"
37 bottom_delta="-24" drop_shadow_visible="true" enabled="true" follows="left|top" 60 bottom_delta="-20" drop_shadow_visible="true" enabled="true" follows="left|top"
38 font="SansSerifSmall" h_pad="0" halign="left" height="10" left="10" 61 font="SansSerifSmall" h_pad="0" halign="left" height="10" left="20" font-style="BOLD|SHADOW"
39 mouse_opaque="true" name="show_names_textbox" v_pad="0" width="394"> 62 mouse_opaque="true" name="show_names_textbox" v_pad="0" width="394">
40 Nametags: 63 Nametags:
41 </text> 64 </text>
42 <combo_box bottom_delta="0" follows="left|top" height="18" left="155" 65 <combo_box bottom_delta="-30" follows="left|top" height="18" left="50"
43 mouse_opaque="true" name="fade_out_combobox" width="146"> 66 mouse_opaque="true" name="fade_out_combobox" width="160">
44 <combo_item name="Never" value="Never"> 67 <combo_item name="Never" value="Never">
45 Never show 68 Never show nametags
46 </combo_item> 69 </combo_item>
47 <combo_item name="Show Temporarily" value="Show Temporarily"> 70 <combo_item name="Show Temporarily" value="Show Temporarily">
48 Temporarily show 71 Briefly show nametags
49 </combo_item> 72 </combo_item>
50 <combo_item name="Always" value="Always"> 73 <combo_item name="Always" value="Always">
51 Always show 74 Always show nametags
52 </combo_item> 75 </combo_item>
53 </combo_box> 76 </combo_box>
54 <check_box bottom_delta="0" follows="left|top" 77 <check_box bottom_delta="0" follows="left|top"
55 font="SansSerifSmall" height="16" initial_value="true" 78 font="SansSerifSmall" height="16" initial_value="false"
56 label="Small avatar names" left="330" name="small_avatar_names_checkbox" 79 label="Large nametags" left="270" name="large_avatar_names_checkbox"
57 width="200" /> 80 width="200" />
58 <check_box bottom_delta="-20" follows="left|top" 81 <check_box bottom_delta="-20" follows="left|top"
59 font="SansSerifSmall" height="16" initial_value="false" 82 font="SansSerifSmall" height="16" initial_value="false"
60 label="Hide my name on my screen" left="151" name="show_my_name_checkbox" 83 label="Hide my nametag" left="50" name="show_my_name_checkbox"
61 width="200" /> 84 width="200" />
62 85 <check_box bottom_delta="0" follows="left|top"
63 <check_box bottom_delta="-20" follows="left|top"
64 font="SansSerifSmall" height="16" initial_value="false" 86 font="SansSerifSmall" height="16" initial_value="false"
65 label="Highlight friends tags" left="151" name="highlight_friends_checkbox" 87 label="Bold my friends' nametags" left="270" name="highlight_friends_checkbox"
66 width="200" /> 88 width="200" />
67 <text type="string" length="1" bottom_delta="-24" follows="left|top" font="SansSerifSmall" h_pad="0" 89 <check_box bottom_delta="-20" follows="left|top"
68 halign="left" height="16" left="10" name="Display_Names_textbox" v_pad="0" 90 font="SansSerifSmall" height="16" initial_value="false"
69 width="394"> 91 label="Hide group titles in nametags" left="50" mouse_opaque="true"
92 name="show_all_title_checkbox" radio_style="false" width="256" />
93
94
95 <view_border bevel_style="none" border_thickness="1" bottom_delta="-15" follows="left|top"
96 height="1" left="55" name="border" width="380" />
97
98
99 <text type="string" length="1" bottom_delta="-20" follows="left|top" font="SansSerifSmall" h_pad="0"
100 halign="left" height="10" left="20" name="Display_Names_textbox" v_pad="0"
101 width="394" font-style="BOLD|SHADOW">
70 Display Names: 102 Display Names:
71 </text> 103 </text>
72 <radio_group name="displaynames" draw_border="false" 104 <radio_group name="displaynames" draw_border="false"
73 bottom_delta="0" left_delta="60" height="18" 105 bottom_delta="-30" left="50" height="18"
74 follows="top|left" 106 follows="top|left"
75 control_name="DisplayNamesUsage"> 107 control_name="DisplayNamesUsage">
76 <radio_item name="0" bottom_delta="-8" left_delta="40" height="18"> 108 <radio_item name="0" bottom_delta="-8" left="0" height="18">
77 Legacy Names 109 Show legacy names
78 </radio_item> 110 </radio_item>
79 <radio_item name="1" bottom_delta="0" left_delta="50" height="18"> 111 <radio_item name="1" bottom_delta="0" left_delta="70" height="18">
80 Display Names 112 Show display names
81 </radio_item> 113 </radio_item>
82 <radio_item name="2" bottom_delta="0" left_delta="50" height="18"> 114 <radio_item name="2" bottom_delta="0" left_delta="70" height="18">
83 Show Both 115 Show Both
84 </radio_item> 116 </radio_item>
85 </radio_group> 117 </radio_group>
86 <check_box bottom_delta="-20" follows="left|top" control_name="LegacyNamesForFriends" 118 <check_box bottom_delta="-17" follows="left|top" control_name="LegacyNamesForFriends"
87 font="SansSerifSmall" height="16" initial_value="false" 119 font="SansSerifSmall" height="16" initial_value="false"
88 label="Show legacy names for friends" left="151" name="legacy_friends_checkbox" 120 label="Show legacy names for friends" left="50" name="legacy_friends_checkbox"
89 width="200" /> 121 width="200" />
90 <text type="string" length="1" bottom_delta="-24" follows="left|top" font="SansSerifSmall" h_pad="0" 122
91 halign="left" height="16" left="10" name="group_titles_textbox" v_pad="0" 123
92 width="394"> 124 <view_border bevel_style="none" border_thickness="1" bottom_delta="-15" follows="left|top"
93 Group Titles: 125 height="1" left="55" name="border" width="380" />
94 </text> 126
95 <check_box bottom_delta="0" follows="left|top" 127
96 font="SansSerifSmall" height="16" initial_value="false"
97 label="Hide all group titles" left="151" mouse_opaque="true"
98 name="show_all_title_checkbox" radio_style="false" width="256" />
99 <check_box bottom_delta="0" follows="left|top"
100 font="SansSerifSmall" height="16" initial_value="false"
101 label="Hide my group title" left="330" name="show_my_title_checkbox"
102 radio_style="false" width="256" />
103 <text type="string" length="1" bg_visible="false" border_drop_shadow_visible="false" border_visible="false"
104 bottom_delta="-24" drop_shadow_visible="true" enabled="true" follows="left|top"
105 font="SansSerifSmall" h_pad="0" halign="left" height="10" left="10"
106 mouse_opaque="true" name="effects_color_textbox" v_pad="0" width="394">
107 Selection Beam Color:
108 </text>
109 <color_swatch border_color="0.45098 0.517647 0.607843 1" bottom_delta="-44"
110 can_apply_immediately="false" color="1 1 1 1"
111 enabled="true" follows="left|top" height="55" label="" left="153"
112 mouse_opaque="true" name="effect_color_swatch"
113 tool_tip="Click to open Color Picker" width="45" />
114 <text type="string" length="1" bg_visible="false" border_drop_shadow_visible="false" border_visible="false" 128 <text type="string" length="1" bg_visible="false" border_drop_shadow_visible="false" border_visible="false"
115 bottom_delta="-18" drop_shadow_visible="true" enabled="true" follows="left|top" 129 bottom_delta="-20" drop_shadow_visible="true" enabled="true" follows="left|top"
116 font="SansSerifSmall" h_pad="0" halign="left" height="12" left="10" 130 font="SansSerifSmall" h_pad="0" halign="left" height="10" left="20" font-style="BOLD|SHADOW"
117 mouse_opaque="true" name="UI Size:" v_pad="0" width="128"> 131 mouse_opaque="true" name="afk_textbox" v_pad="0" width="394">
118 UI Size: 132 Idle Away:
119 </text> 133 </text>
120 <slider bottom_delta="42" can_edit_text="true" 134 <check_box bottom_delta="-25" enabled="true" follows="left|top"
121 decimal_digits="3" enabled="true" height="16" increment="0.001" 135 font="SansSerifSmall" height="16" initial_value="false"
122 initial_val="1" left="148" max_val="1.4" min_val="0.75" mouse_opaque="true" 136 label="Go Away/AFK when idle after" left="50" mouse_opaque="true"
123 name="ui_scale_slider" show_text="true" value="1" width="220" /> 137 name="afk_timeout_checkbox" radio_style="false" width="256" />
124 <button bottom_delta="-48" enabled="true" follows="left|top" 138 <spinner bottom_delta="0" decimal_digits="0" enabled="true"
125 font="SansSerif" halign="center" height="22" label="Reset" 139 follows="left|top" height="16" increment="1" initial_val="5"
126 label_selected="Reset" left_delta="226" mouse_opaque="true" 140 label="" label_width="0" left="270" max_val="360"
127 name="reset_ui_size" scale_image="true" width="80" /> 141 min_val="1" mouse_opaque="true" name="afk_timeout_spinner" width="50" />
128 <check_box bottom_delta="-14" enabled="true" follows="left|top"
129 font="SansSerifSmall" height="16" initial_value="false"
130 label="Use resolution independent scale" left="151" mouse_opaque="true"
131 name="ui_auto_scale" radio_style="false" width="256" />
132 <spinner bottom_delta="-24" decimal_digits="0" enabled="true"
133 follows="left|top" height="16" increment="1" initial_val="300"
134 label="Away Timeout:" label_width="141" left="10" max_val="600"
135 min_val="30" mouse_opaque="true" name="afk_timeout_spinner" width="202" />
136 <text type="string" length="1" bg_visible="false" border_drop_shadow_visible="false" border_visible="false"
137 bottom_delta="6" drop_shadow_visible="true" enabled="true" follows="left|top"
138 font="SansSerifSmall" h_pad="0" halign="left" height="10" left="220"
139 mouse_opaque="true" name="seconds_textbox" v_pad="0" width="128">
140 seconds
141 </text>
142 <check_box bottom_delta="-5" enabled="true" follows="left|top"
143 font="SansSerifSmall" height="16" initial_value="false"
144 label="Go Away/AFK when idle" left="330" mouse_opaque="true"
145 name="afk_timeout_checkbox" radio_style="false" width="256" />
146 <text type="string" length="1" bg_visible="false" border_drop_shadow_visible="false" border_visible="false" 142 <text type="string" length="1" bg_visible="false" border_drop_shadow_visible="false" border_visible="false"
147 bottom_delta="-27" drop_shadow_visible="true" enabled="true" follows="left|top" 143 bottom_delta="5" drop_shadow_visible="true" enabled="true" follows="left|top"
148 font="SansSerifSmall" h_pad="0" halign="left" height="12" left="10" 144 font="SansSerifSmall" h_pad="0" halign="left" height="10" left_delta="55"
149 mouse_opaque="true" name="Mini-Map Notify:" v_pad="0" width="128"> 145 mouse_opaque="true" name="minutes_textbox" v_pad="0" width="128">
150 Mini-Map Notify: 146 minute(s)
151 </text> 147 </text>
152 <check_box bottom_delta="-4" enabled="true" 148
153 follows="left|top" font="SansSerifSmall" height="16" initial_value="false" 149
154 label="Entering chat range" left="151" 150 <view_border bevel_style="none" border_thickness="1" bottom_delta="-15" follows="left|top"
155 mouse_opaque="true" name="mini_map_notify_chat" radio_style="false" 151 height="1" left="55" name="border" width="380" />
156 width="256" /> 152
157 <check_box bottom_delta="0" enabled="true" 153
158 follows="left|top" font="SansSerifSmall" height="16" initial_value="false"
159 label="Entering sim" left="330"
160 mouse_opaque="true" name="mini_map_notify_sim" radio_style="false"
161 width="256" />
162 <text type="string" length="1" bg_visible="false" border_drop_shadow_visible="false" border_visible="false" 154 <text type="string" length="1" bg_visible="false" border_drop_shadow_visible="false" border_visible="false"
163 bottom_delta="-24" drop_shadow_visible="true" enabled="true" follows="left|top" 155 bottom_delta="-20" drop_shadow_visible="true" enabled="true" follows="left|top"
164 font="SansSerifSmall" h_pad="0" halign="left" height="10" left="10" 156 font="SansSerifSmall" h_pad="0" halign="left" height="10" left="20" font-style="BOLD|SHADOW"
165 mouse_opaque="true" name="maturity_desired_label" v_pad="0" width="394"> 157 mouse_opaque="true" name="maturity_desired_label" v_pad="0" width="394">
166 Rating: 158 Access Content Rated:
167 </text>
168 <text type="string" length="1" bg_visible="false" border_drop_shadow_visible="false" border_visible="false"
169 bottom_delta="0" drop_shadow_visible="true" enabled="true" follows="left|top"
170 font="SansSerifSmall" h_pad="0" halign="left" height="10" left="151"
171 mouse_opaque="true" name="maturity_desired_prompt" v_pad="0" width="394">
172 I want to access content rated:
173 </text> 159 </text>
174 <combo_box bottom_delta="-6" follows="left|top" height="18" left="315" 160 <combo_box bottom_delta="-25" follows="left|top" height="18" left="50"
175 mouse_opaque="true" name="maturity_desired_combobox" width="150"> 161 mouse_opaque="true" name="maturity_desired_combobox" width="160">
176 <combo_item name="Desired_Adult" value="42"> 162 <combo_item name="Desired_Adult" value="42">
177 PG, Mature and Adult 163 PG, Mature and Adult
178 </combo_item> 164 </combo_item>
@@ -185,100 +171,108 @@
185 </combo_box> 171 </combo_box>
186 <text type="string" length="1" bg_visible="false" border_drop_shadow_visible="false" border_visible="false" 172 <text type="string" length="1" bg_visible="false" border_drop_shadow_visible="false" border_visible="false"
187 bottom_delta="0" drop_shadow_visible="true" enabled="true" follows="left|top" 173 bottom_delta="0" drop_shadow_visible="true" enabled="true" follows="left|top"
188 font="SansSerifSmall" h_pad="0" halign="left" height="10" left="315" 174 font="SansSerifSmall" h_pad="0" halign="left" height="10" left="50"
189 mouse_opaque="true" name="maturity_desired_textbox" v_pad="0" width="150"> 175 mouse_opaque="true" name="maturity_desired_textbox" v_pad="0" width="160">
190 PG only 176 PG only
191 </text> 177 </text>
192 178
179
180 <view_border bevel_style="none" border_thickness="1" bottom_delta="-15" follows="left|top"
181 height="1" left="55" name="border" width="380" />
182
193 183
194 <text type="string" length="1" bg_visible="false" border_drop_shadow_visible="false" border_visible="false" 184 <text type="string" length="1" bg_visible="false" border_drop_shadow_visible="false" border_visible="false"
195 bottom_delta="-24" drop_shadow_visible="true" enabled="true" follows="left|top" 185 bottom_delta="-20" drop_shadow_visible="true" enabled="true" follows="left|top"
196 font="SansSerifSmall" h_pad="0" halign="left" height="18" left="10" 186 font="SansSerifSmall" h_pad="0" halign="left" height="10" left="20" font-style="BOLD|SHADOW"
197 mouse_opaque="true" name="time_textbox" v_pad="0" width="394">
198 Clock:
199 </text>
200 <combo_box allow_text_entry="false" bottom_delta="0" enabled="true" follows="left|top"
201 height="18" left="153" max_chars="20" mouse_opaque="true"
202 name="time_combobox" width="146">
203 <combo_item type="string" name="12HourTime" value="PST 12">
204 12-hour PST/PDT
205 </combo_item>
206 <combo_item type="string" name="24HourTime" value="PST 24">
207 24-hour PST/PDT
208 </combo_item>
209 <combo_item type="string" name="UTCTime" value="UTC">
210 UTC
211 </combo_item>
212 </combo_box>
213 <text type="string" length="1" bg_visible="false" border_drop_shadow_visible="false" border_visible="false"
214 bottom_delta="-24" drop_shadow_visible="true" enabled="true" follows="left|top"
215 font="SansSerifSmall" h_pad="0" halign="left" height="18" left="10"
216 mouse_opaque="true" name="language_textbox" v_pad="0" width="394"> 187 mouse_opaque="true" name="language_textbox" v_pad="0" width="394">
217 Language: 188 Language:
218 </text> 189 </text>
219 <combo_box allow_text_entry="false" bottom_delta="0" enabled="true" 190 <combo_box allow_text_entry="false" bottom_delta="-30" enabled="true"
220 follows="left|top" height="18" left="153" max_chars="135" 191 follows="left|top" height="18" left="50" max_chars="135"
221 mouse_opaque="true" name="language_combobox" width="146"> 192 mouse_opaque="true" name="language_combobox" width="160">
222 <combo_item type="string" length="1" enabled="true" name="System Default Language" value="default"> 193 <combo_item type="string" length="1" enabled="true" name="System Default Language" value="default">
223 System Default 194 System Default
224 </combo_item> 195 </combo_item>
225 <combo_item type="string" length="1" enabled="true" name="English" value="en-us"> 196 <combo_item type="string" length="1" enabled="true" name="English" value="en-us">
226 English 197 English
227 </combo_item> 198 </combo_item>
228 199
229 <!-- After "System Default" and "English", please keep the rest of these combo_items in alphabetical order by the first character in the string. --> 200 <!-- After "System Default" and "English", please keep the rest of these combo_items in alphabetical order by the first character in the string. -->
230 201
231 <combo_item type="string" length="1" enabled="true" name="Danish" value="da"> 202 <combo_item type="string" length="1" enabled="true" name="Danish" value="da">
232 Dansk (Danish) - Beta 203 Dansk (Danish) - Beta
233 </combo_item> 204 </combo_item>
234 <combo_item type="string" length="1" enabled="true" name="Deutsch(German)" value="de"> 205 <combo_item type="string" length="1" enabled="true" name="Deutsch(German)" value="de">
235 Deutsch (German) - Beta 206 Deutsch (German) - Beta
236 </combo_item> 207 </combo_item>
237 <combo_item type="string" length="1" enabled="true" name="Spanish" value="es"> 208 <combo_item type="string" length="1" enabled="true" name="Spanish" value="es">
238 Español (Spanish) - Beta 209 Español (Spanish) - Beta
239 </combo_item> 210 </combo_item>
240 <combo_item type="string" length="1" enabled="true" name="French" value="fr"> 211 <combo_item type="string" length="1" enabled="true" name="French" value="fr">
241 Français (French) - Beta 212 Français (French) - Beta
242 </combo_item> 213 </combo_item>
243 <combo_item type="string" length="1" enabled="true" name="Italian" value="it"> 214 <combo_item type="string" length="1" enabled="true" name="Italian" value="it">
244 Italiano (Italian) - Beta 215 Italiano (Italian) - Beta
245 </combo_item> 216 </combo_item>
246 <combo_item type="string" length="1" enabled="true" name="Hungarian" value="hu"> 217 <combo_item type="string" length="1" enabled="true" name="Hungarian" value="hu">
247 Magyar (Hungarian) - Beta 218 Magyar (Hungarian) - Beta
248 </combo_item> 219 </combo_item>
249 <combo_item type="string" length="1" enabled="true" name="Dutch" value="nl"> 220 <combo_item type="string" length="1" enabled="true" name="Dutch" value="nl">
250 Nederlands (Dutch) - Beta 221 Nederlands (Dutch) - Beta
251 </combo_item> 222 </combo_item>
252 <combo_item type="string" length="1" enabled="true" name="Polish" value="pl"> 223 <combo_item type="string" length="1" enabled="true" name="Polish" value="pl">
253 Polski (Polish) - Beta 224 Polski (Polish) - Beta
254 </combo_item> 225 </combo_item>
255 <combo_item type="string" length="1" enabled="true" name="Portugese" value="pt"> 226 <combo_item type="string" length="1" enabled="true" name="Portugese" value="pt">
256 Portugués (Portuguese) - Beta 227 Portugués (Portuguese) - Beta
257 </combo_item> 228 </combo_item>
258 <combo_item type="string" length="1" enabled="true" name="Russian" value="ru"> 229 <combo_item type="string" length="1" enabled="true" name="Russian" value="ru">
259 Русский (Russian) - Beta 230 Русский (Russian) - Beta
260 </combo_item> 231 </combo_item>
261 <combo_item type="string" length="1" enabled="true" name="Turkish" value="tr"> 232 <combo_item type="string" length="1" enabled="true" name="Turkish" value="tr">
262 Türkçe (Turkish) - Beta 233 Türkçe (Turkish) - Beta
263 </combo_item> 234 </combo_item>
264 <combo_item type="string" length="1" enabled="true" name="Ukrainian" value="uk"> 235 <combo_item type="string" length="1" enabled="true" name="Ukrainian" value="uk">
265 Українська (Ukrainian) - Beta 236 Українська (Ukrainian) - Beta
266 </combo_item> 237 </combo_item>
267 <combo_item type="string" length="1" enabled="true" name="Chinese" value="zh"> 238 <combo_item type="string" length="1" enabled="true" name="Chinese" value="zh">
268 中文 (简体) (Chinese) - Beta 239 中文 (简体) (Chinese) - Beta
269 </combo_item> 240 </combo_item>
270 <combo_item type="string" length="1" enabled="true" name="(Japanese)" value="ja"> 241 <combo_item type="string" length="1" enabled="true" name="(Japanese)" value="ja">
271 日本語 (Japanese) - Beta 242 日本語 (Japanese) - Beta
272 </combo_item> 243 </combo_item>
273 <combo_item type="string" length="1" enabled="true" name="(Korean)" value="ko"> 244 <combo_item type="string" length="1" enabled="true" name="(Korean)" value="ko">
274 한국어 (Korean) - Beta 245 한국어 (Korean) - Beta
275 </combo_item> 246 </combo_item>
276 </combo_box> 247 </combo_box>
277 <text type="string" length="1" bg_visible="false" border_drop_shadow_visible="false" border_visible="false" 248 <text type="string" length="1" bg_visible="false" border_drop_shadow_visible="false" border_visible="false"
278 bottom_delta="0" drop_shadow_visible="true" enabled="true" 249 bottom_delta="-20" drop_shadow_visible="true" enabled="true"
279 follows="left|top" font="SansSerifSmall" h_pad="0" halign="left" 250 follows="left|top" font="SansSerifSmall" h_pad="0" halign="left"
280 height="18" left_delta="150" mouse_opaque="true" name="language_textbox2" 251 height="18" left="50" mouse_opaque="true" name="language_textbox2"
281 v_pad="0" width="400"> 252 v_pad="0" width="380">
282 (requires restart for full effect) 253 (requires restart)
283 </text> 254 </text>
255
256
257 <text type="string" length="1" bg_visible="false" border_drop_shadow_visible="false" border_visible="false"
258 bottom_delta="50" drop_shadow_visible="true" enabled="true" follows="left|top"
259 font="SansSerifSmall" h_pad="0" halign="left" height="10" left="270" font-style="BOLD|SHADOW"
260 mouse_opaque="true" name="time_textbox" v_pad="0" width="394">
261 Inworld Clock:
262 </text>
263 <combo_box allow_text_entry="false" bottom_delta="-30" enabled="true" follows="left|top"
264 height="18" left="300" max_chars="20" mouse_opaque="true"
265 name="time_combobox" width="160">
266 <combo_item type="string" name="12HourTime" value="PST 12">
267 12-hour PST/PDT
268 </combo_item>
269 <combo_item type="string" name="24HourTime" value="PST 24">
270 24-hour PST/PDT
271 </combo_item>
272 <combo_item type="string" name="UTCTime" value="UTC">
273 UTC
274 </combo_item>
275 </combo_box>
276
277
284</panel> 278</panel>
diff --git a/linden/indra/newview/skins/default/xui/en-us/panel_preferences_graphics1.xml b/linden/indra/newview/skins/default/xui/en-us/panel_preferences_graphics1.xml
index 2ed0869..a5d1e7d 100644
--- a/linden/indra/newview/skins/default/xui/en-us/panel_preferences_graphics1.xml
+++ b/linden/indra/newview/skins/default/xui/en-us/panel_preferences_graphics1.xml
@@ -1,34 +1,56 @@
1<?xml version="1.0" encoding="utf-8" standalone="yes" ?> 1<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
2
3<!--
4ALL PREFS OPTIONS START AT 20px FROM LEFT, 10px FROM TOP
5
6USE bottom_delta BETWEEN OPTIONS IN A GROUP
7
8USE LINES BETWEEN GROUPS
9
10USE font-style="BOLD|SHADOW" FOR GROUP LABELS
11
12GROUP LABEL CONTENTS ARE INDENTED 30px
13
14USE left="270" FOR TABBING OPTIONS
15-->
16
2<panel border="true" bottom="-409" enabled="true" follows="left|top|right|bottom" 17<panel border="true" bottom="-409" enabled="true" follows="left|top|right|bottom"
3 height="408" label="Graphics" left="102" mouse_opaque="true" 18 height="408" label="Graphics" left="102" mouse_opaque="true"
4 name="Display panel" width="517"> 19 name="Display panel" width="517">
20
21
5 <button bottom="-22" follows="left|top" font="SansSerif" height="18" label="?" 22 <button bottom="-22" follows="left|top" font="SansSerif" height="18" label="?"
6 left="470" name="GraphicsPreferencesHelpButton" width="22" /> 23 left="470" name="GraphicsPreferencesHelpButton" width="22" />
7 <check_box bottom="-23" enabled="true" follows="left|top" font="SansSerifSmall" 24
25
26 <text type="string" length="1" bottom="-20" follows="left|top" font="SansSerifSmall" h_pad="0"
27 halign="left" height="10" left="20" name="Display_textbox" v_pad="0"
28 width="394" font-style="BOLD|SHADOW">
29 Display Mode:
30 </text>
31
32
33 <check_box bottom_delta="-25" enabled="true" follows="left|top" font="SansSerifSmall"
8 height="16" initial_value="false" 34 height="16" initial_value="false"
9 label="Run Imprudence in a window" left="10" mouse_opaque="true" 35 tool_tip="If unchecked, viewer will display full-screen when logged in"
36 label="Windowed mode" left_delta="30" mouse_opaque="true"
10 name="windowed mode" radio_style="false" width="100" /> 37 name="windowed mode" radio_style="false" width="100" />
11 <check_box bottom_delta="0" enabled="true" follows="left|top" 38
12 font="SansSerifSmall" height="16" initial_value="false"
13 label="Show WindLight toolbar" left="275" mouse_opaque="true"
14 name="toggle_windlight_control" radio_style="false" width="237"
15 control_name="EnableWindlightRemote" />
16 <text_editor type="string" length="1" allow_html="false" bg_readonly_color="0 0 0 0" bottom="-43"
17 embedded_items="false" enabled="false" follows="left|top"
18 font="SansSerifSmall" height="20" hide_border="true"
19 hide_scrollbar="true" left="10" max_length="65535" mouse_opaque="true"
20 name="FullScreenInfo" tab_stop="false" width="350" word_wrap="true">
21 If unchecked, viewer will display full-screen when logged in.
22 </text_editor>
23 <text type="string" length="1" bg_visible="false" border_drop_shadow_visible="false" border_visible="false" 39 <text type="string" length="1" bg_visible="false" border_drop_shadow_visible="false" border_visible="false"
24 bottom="-62" drop_shadow_visible="true" enabled="true" follows="left|top" 40 bottom_delta="-16" drop_shadow_visible="true" enabled="true" follows="left|top"
25 font="SansSerifSmall" h_pad="0" halign="left" height="12" left="10" 41 font="SansSerifSmall" h_pad="0" halign="left" height="10" left_delta="0"
26 mouse_opaque="true" name="WindowSizeLabel" v_pad="0" width="128"> 42 mouse_opaque="true" name="WindowSizeLabel" v_pad="0" width="128">
27 Window size: 43 Window size:
28 </text> 44 </text>
29 <combo_box allow_text_entry="false" bottom="-67" enabled="true" follows="left|top" 45 <text type="string" length="1" bg_visible="false" border_drop_shadow_visible="false" border_visible="false"
46 bottom_delta="0" drop_shadow_visible="true" enabled="true" follows="left|top"
47 font="SansSerifSmall" h_pad="0" halign="left" height="10" left_delta="0"
48 mouse_opaque="true" name="DisplayResLabel" v_pad="0" width="128">
49 Display resolution:
50 </text>
51 <combo_box allow_text_entry="false" bottom_delta="-4" enabled="true" follows="left|top"
30 height="18" left="185" max_chars="20" mouse_opaque="true" 52 height="18" left="185" max_chars="20" mouse_opaque="true"
31 name="windowsize combo" width="150"> 53 name="windowsize combo" width="160">
32 <combo_item type="string" length="1" enabled="true" name="800x600" value="800 x 600"> 54 <combo_item type="string" length="1" enabled="true" name="800x600" value="800 x 600">
33 800x600 55 800x600
34 </combo_item> 56 </combo_item>
@@ -51,25 +73,20 @@
51 1920x1080 (HD1080) 73 1920x1080 (HD1080)
52 </combo_item> 74 </combo_item>
53 </combo_box> 75 </combo_box>
54 <text type="string" length="1" bg_visible="false" border_drop_shadow_visible="false" border_visible="false" 76 <combo_box allow_text_entry="false" bottom_delta="0" enabled="true" follows="left|top"
55 bottom="-62" drop_shadow_visible="true" enabled="true" follows="left|top"
56 font="SansSerifSmall" h_pad="0" halign="left" height="12" left="10"
57 mouse_opaque="true" name="DisplayResLabel" v_pad="0" width="128">
58 Display resolution:
59 </text>
60 <combo_box allow_text_entry="false" bottom="-67" enabled="true" follows="left|top"
61 height="18" left="185" max_chars="20" mouse_opaque="true" 77 height="18" left="185" max_chars="20" mouse_opaque="true"
62 name="fullscreen combo" width="150" /> 78 name="fullscreen combo" width="160" />
79
63 <text type="string" length="1" bg_visible="false" border_drop_shadow_visible="false" border_visible="false" 80 <text type="string" length="1" bg_visible="false" border_drop_shadow_visible="false" border_visible="false"
64 bottom="-39" drop_shadow_visible="true" enabled="true" follows="left|top" 81 bottom_delta="-16" drop_shadow_visible="true" enabled="true" follows="left|top"
65 font="SansSerifSmall" h_pad="0" halign="left" height="12" 82 font="SansSerifSmall" h_pad="0" halign="left" height="12"
66 left="10" mouse_opaque="true" name="AspectRatioLabel1" 83 left="50" mouse_opaque="true" name="AspectRatioLabel1"
67 tool_tip="width / height" v_pad="0" width="160"> 84 tool_tip="width / height" v_pad="0" width="160">
68 Aspect ratio: 85 Aspect ratio:
69 </text> 86 </text>
70 <combo_box allow_text_entry="true" bottom="-43" enabled="true" follows="left|top" 87 <combo_box allow_text_entry="true" bottom_delta="-4" enabled="true" follows="left|top"
71 height="16" left="185" max_chars="100" mouse_opaque="true" 88 height="16" left="185" max_chars="100" mouse_opaque="true"
72 name="aspect_ratio" tool_tip="width / height" width="150"> 89 name="aspect_ratio" tool_tip="width / height" width="160">
73 <combo_item type="string" length="1" enabled="true" name="4:3(StandardCRT)" value="1.333333"> 90 <combo_item type="string" length="1" enabled="true" name="4:3(StandardCRT)" value="1.333333">
74 4:3 (Standard CRT) 91 4:3 (Standard CRT)
75 </combo_item> 92 </combo_item>
@@ -83,319 +100,316 @@
83 16:9 (Widescreen) 100 16:9 (Widescreen)
84 </combo_item> 101 </combo_item>
85 </combo_box> 102 </combo_box>
86 <check_box bottom="-44" control_name="FullScreenAutoDetectAspectRatio" enabled="true" 103 <check_box bottom_delta="-2" control_name="FullScreenAutoDetectAspectRatio" enabled="true"
87 follows="left|top" font="SansSerifSmall" height="16" initial_value="false" 104 follows="left|top" font="SansSerifSmall" height="16" initial_value="false"
88 label="Auto-detect ratio" left="358" mouse_opaque="true" 105 label="Auto-detect" left_delta="165" mouse_opaque="true"
89 name="aspect_auto_detect" radio_style="false" width="256" /> 106 name="aspect_auto_detect" radio_style="false" width="256" />
90 <text type="string" length="1" bg_visible="false" border_drop_shadow_visible="false" border_visible="false" 107
91 bottom="-85" drop_shadow_visible="true" enabled="true" follows="left|top" 108
92 font="SansSerifSmall" h_pad="0" halign="left" height="12" 109 <view_border bevel_style="none" border_thickness="1" bottom_delta="-15" follows="left|top"
93 left="10" mouse_opaque="true" name="HigherText" v_pad="0" width="80"> 110 height="1" left="55" name="border" width="380" />
94 Quality and 111
95 </text> 112
96 <text type="string" length="1" bg_visible="false" border_drop_shadow_visible="false" border_visible="false" 113 <text type="string" length="1" bottom_delta="-20" follows="left|top" font="SansSerifSmall" h_pad="0"
97 bottom_delta="-14" drop_shadow_visible="true" enabled="true" 114 halign="left" height="10" left="20" name="textbox" v_pad="0"
98 follows="left|top" font="SansSerifSmall" h_pad="0" halign="left" 115 width="394" font-style="BOLD|SHADOW">
99 height="12" left_delta="0" mouse_opaque="true" 116 Performance
100 name="QualityText" v_pad="0" width="95"> 117 </text>
101 performance: 118 <text type="string" length="1" bg_visible="false" border_drop_shadow_visible="false" border_visible="false"
102 </text> 119 bottom_delta="-22" drop_shadow_visible="true" enabled="true" follows="left|top"
103 <text type="string" length="1" bg_visible="false" border_drop_shadow_visible="false" border_visible="false"
104 bottom="-86" drop_shadow_visible="true" enabled="true" follows="left|top"
105 font="SansSerifSmall" h_pad="0" halign="left" height="12"
106 left="115" mouse_opaque="true" name="FasterText" v_pad="0" width="80">
107 Faster
108 </text>
109 <text type="string" length="1" bg_visible="false" border_drop_shadow_visible="false" border_visible="false"
110 bottom="-105" drop_shadow_visible="true" enabled="true" follows="left|top"
111 font="SansSerifSmall" h_pad="0" halign="left" height="12" 120 font="SansSerifSmall" h_pad="0" halign="left" height="12"
112 left="158" mouse_opaque="true" name="ShadersPrefText" v_pad="0" width="40"> 121 left="110" mouse_opaque="true" name="ShadersPrefText" v_pad="0" width="40">
113 Low 122 Low
114 </text> 123 </text>
115 <text type="string" length="1" bg_visible="false" border_drop_shadow_visible="false" border_visible="false" 124 <text type="string" length="1" bg_visible="false" border_drop_shadow_visible="false" border_visible="false"
116 bottom_delta="0" drop_shadow_visible="true" enabled="true" 125 bottom_delta="0" drop_shadow_visible="true" enabled="true"
117 follows="left|top" font="SansSerifSmall" h_pad="0" halign="left" 126 follows="left|top" font="SansSerifSmall" h_pad="0" halign="left"
118 height="12" left_delta="47" mouse_opaque="true" 127 height="12" left_delta="62" mouse_opaque="true"
119 name="ShadersPrefText2" v_pad="0" width="40"> 128 name="ShadersPrefText2" v_pad="0" width="40">
120 Mid 129 Mid
121 </text> 130 </text>
122 <text type="string" length="1" bg_visible="false" border_drop_shadow_visible="false" border_visible="false" 131 <text type="string" length="1" bg_visible="false" border_drop_shadow_visible="false" border_visible="false"
123 bottom_delta="0" drop_shadow_visible="true" enabled="true" 132 bottom_delta="0" drop_shadow_visible="true" enabled="true"
124 follows="left|top" font="SansSerifSmall" h_pad="0" halign="left" 133 follows="left|top" font="SansSerifSmall" h_pad="0" halign="left"
125 height="12" left_delta="47" mouse_opaque="true" 134 height="12" left_delta="62" mouse_opaque="true"
126 name="ShadersPrefText3" v_pad="0" width="40"> 135 name="ShadersPrefText3" v_pad="0" width="40">
127 High 136 High
128 </text> 137 </text>
129 <text type="string" length="1" bg_visible="false" border_drop_shadow_visible="false" border_visible="false" 138 <text type="string" length="1" bg_visible="false" border_drop_shadow_visible="false" border_visible="false"
130 bottom_delta="0" drop_shadow_visible="true" enabled="true" 139 bottom_delta="0" drop_shadow_visible="true" enabled="true"
131 follows="left|top" font="SansSerifSmall" h_pad="0" halign="left" 140 follows="left|top" font="SansSerifSmall" h_pad="0" halign="left"
132 height="12" left_delta="47" mouse_opaque="true" 141 height="12" left_delta="62" mouse_opaque="true"
133 name="ShadersPrefText4" v_pad="0" width="40"> 142 name="ShadersPrefText4" v_pad="0" width="40">
134 Ultra 143 Ultra
135 </text> 144 </text>
136 <text type="string" length="1" bg_visible="false" border_drop_shadow_visible="false" border_visible="false" 145 <icon bottom_delta="18" color="0.12 0.12 0.12 1.0" height="14" follows="left|top"
137 bottom="-80" drop_shadow_visible="true" enabled="true" follows="left|top" 146 image_name="rounded_square.tga" left="123" name="LowGraphicsDivet"
138 font="SansSerifSmall" h_pad="0" halign="left" height="12"
139 left="334" mouse_opaque="true" name="HigherText2" v_pad="0" width="80">
140 Higher
141 </text>
142 <text type="string" length="1" bg_visible="false" border_drop_shadow_visible="false" border_visible="false"
143 bottom_delta="-14" drop_shadow_visible="true" enabled="true"
144 follows="left|top" font="SansSerifSmall" h_pad="0" halign="left"
145 height="12" left_delta="0" mouse_opaque="true"
146 name="QualityText2" v_pad="0" width="95">
147 Quality
148 </text>
149 <icon bottom="-89" color="0.12 0.12 0.12 1.0" height="14" follows="left|top"
150 image_name="rounded_square.tga" left="173" name="LowGraphicsDivet"
151 width="2" /> 147 width="2" />
152 <icon bottom_delta="0" color="0.12 0.12 0.12 1.0" height="14" follows="left|top" 148 <icon bottom_delta="0" color="0.12 0.12 0.12 1.0" height="14" follows="left|top"
153 image_name="rounded_square.tga" left_delta="44" name="MidGraphicsDivet" 149 image_name="rounded_square.tga" left_delta="60" name="MidGraphicsDivet"
154 width="2" /> 150 width="2" />
155 <icon bottom_delta="0" color="0.12 0.12 0.12 1.0" height="14" follows="left|top" 151 <icon bottom_delta="0" color="0.12 0.12 0.12 1.0" height="14" follows="left|top"
156 image_name="rounded_square.tga" left_delta="44" name="HighGraphicsDivet" 152 image_name="rounded_square.tga" left_delta="61" name="HighGraphicsDivet"
157 width="2" /> 153 width="2" />
158 <icon bottom_delta="0" color="0.12 0.12 0.12 1.0" height="14" follows="left|top" 154 <icon bottom_delta="0" color="0.12 0.12 0.12 1.0" height="14" follows="left|top"
159 image_name="rounded_square.tga" left_delta="44" name="UltraGraphicsDivet" 155 image_name="rounded_square.tga" left_delta="61" name="UltraGraphicsDivet"
160 width="2" /> 156 width="2" />
161 <slider bottom="-90" can_edit_text="false" control_name="RenderQualityPerformance" 157 <slider bottom_delta="0" can_edit_text="false" control_name="RenderQualityPerformance"
162 decimal_digits="0" enabled="true" follows="left|top" height="16" 158 decimal_digits="0" enabled="true" follows="left|top" height="16"
163 increment="1" initial_val="0" label="" label_width="0" 159 increment="1" initial_val="0" label="" label_width="0"
164 left="165" max_val="3" min_val="0" mouse_opaque="true" 160 left="115" max_val="3" min_val="0" mouse_opaque="true"
165 name="QualityPerformanceSelection" show_text="false" width="150" /> 161 name="QualityPerformanceSelection" show_text="false" width="200" />
166 <check_box bottom="-91" control_name="RenderCustomSettings" enabled="true" 162 <text type="string" length="1" bg_visible="false" border_drop_shadow_visible="false" border_visible="false"
163 bottom_delta="2" drop_shadow_visible="true" enabled="true" follows="left|top" font-style="BOLD|SHADOW"
164 font="SansSerifSmall" h_pad="0" halign="left" height="12"
165 left="340" mouse_opaque="true" name="HigherText2" v_pad="0" width="200">
166 Graphics Quality
167 </text>
168
169
170 <check_box bottom_delta="-50" control_name="RenderCustomSettings" enabled="true"
167 follows="left|top" font="SansSerifSmall" height="16" 171 follows="left|top" font="SansSerifSmall" height="16"
168 initial_value="true" label="Custom" left="385" mouse_opaque="true" 172 initial_value="true" label="Advanced options" left="50" mouse_opaque="true"
169 name="CustomSettings" radio_style="false" width="256" /> 173 name="CustomSettings" radio_style="false" width="256" />
170 <view_border bevel_style="none" border_thickness="1" bottom="-415" follows="left|top" 174
171 height="300" left="5" name="GraphicsBorder" width="485" /> 175 <button bottom_delta="0" enabled="true" font="SansSerifSmall" halign="center" height="20"
172 <text type="string" length="1" bg_visible="false" border_drop_shadow_visible="false" border_visible="false" 176 label="Recommended Settings" left="210" mouse_opaque="true"
173 bottom="-130" drop_shadow_visible="true" enabled="true" follows="left|top" 177 name="Defaults" scale_image="true" width="160" follows="left|top" />
174 font="SansSerifSmall" h_pad="0" halign="left" height="12" 178 <button bottom_delta="0" enabled="true" font="SansSerifSmall" halign="center" height="20"
179 label="Hardware"
180 left_delta="165" mouse_opaque="true" name="GraphicsHardwareButton"
181 scale_image="true" width="110" follows="left|top" />
182
183
184 <text type="string" length="1" bg_visible="false" border_drop_shadow_visible="false" border_visible="false"
185 bottom_delta="-15" drop_shadow_visible="true" enabled="true" follows="left|top" font-style="BOLD|SHADOW"
186 font="SansSerifSmall" h_pad="0" halign="left" height="10"
175 left="10" mouse_opaque="true" name="ShadersText" v_pad="0" width="128"> 187 left="10" mouse_opaque="true" name="ShadersText" v_pad="0" width="128">
176 Shaders: 188 Shaders:
177 </text> 189 </text>
178 <check_box bottom="-153" control_name="RenderObjectBump" enabled="true" follows="left|top" 190 <check_box bottom_delta="-23" control_name="RenderObjectBump" enabled="true" follows="left|top"
179 font="SansSerifSmall" height="16" initial_value="true" 191 font="SansSerifSmall" height="16" initial_value="true"
180 label="Bump mapping and shiny" left="10" mouse_opaque="true" 192 label="Bump mapping and shiny" left_delta="10" mouse_opaque="true"
181 name="BumpShiny" radio_style="false" width="256" /> 193 name="BumpShiny" radio_style="false" width="256" />
182 <check_box bottom_delta="-17" control_name="VertexShaderEnable" enabled="true" 194 <check_box bottom_delta="-18" control_name="VertexShaderEnable" enabled="true"
183 follows="left|top" font="SansSerifSmall" height="16" 195 follows="left|top" font="SansSerifSmall" height="16"
184 initial_value="true" label="Basic shaders" left_delta="0" 196 initial_value="true" label="Basic shaders" left_delta="0"
185 mouse_opaque="true" name="BasicShaders" radio_style="false" 197 mouse_opaque="true" name="BasicShaders" radio_style="false"
186 tool_tip="Disabling this option may prevent some graphics card drivers from crashing." 198 tool_tip="Disabling this option may prevent some graphics card drivers from crashing."
187 width="315" /> 199 width="315" />
188 <check_box bottom_delta="-17" control_name="WindLightUseAtmosShaders" enabled="true" 200 <check_box bottom_delta="-18" control_name="WindLightUseAtmosShaders" enabled="true"
189 follows="left|top" font="SansSerifSmall" height="16" 201 follows="left|top" font="SansSerifSmall" height="16"
190 initial_value="true" label="Atmospheric shaders" left_delta="0" 202 initial_value="true" label="Atmospheric shaders" left_delta="0"
191 mouse_opaque="true" name="WindLightUseAtmosShaders" radio_style="false" 203 mouse_opaque="true" name="WindLightUseAtmosShaders" radio_style="false"
192 width="256" /> 204 width="256" />
193 <check_box bottom_delta="-17" control_name="RenderWaterReflections" enabled="true" 205 <check_box bottom_delta="-18" control_name="RenderWaterReflections" enabled="true"
194 follows="left|top" font="SansSerifSmall" height="16" 206 follows="left|top" font="SansSerifSmall" height="16"
195 initial_value="true" label="Water reflections" left_delta="0" 207 initial_value="true" label="Water reflections" left_delta="0"
196 mouse_opaque="true" name="Reflections" radio_style="false" width="256" /> 208 mouse_opaque="true" name="Reflections" radio_style="false" width="256" />
197 <text type="string" length="1" bg_visible="false" border_drop_shadow_visible="false" border_visible="false" 209
198 bottom="-223" drop_shadow_visible="true" enabled="true" follows="left|top" 210 <text type="string" length="1" bg_visible="false" border_drop_shadow_visible="false" border_visible="false"
199 font="SansSerifSmall" h_pad="0" halign="left" height="12" 211 bottom_delta="-20" drop_shadow_visible="true" enabled="true" follows="left|top" font-style="BOLD|SHADOW"
200 left="10" mouse_opaque="true" name="ReflectionDetailText" v_pad="0" 212 font="SansSerifSmall" h_pad="0" halign="left" height="10"
213 left_delta="-10" mouse_opaque="true" name="ReflectionDetailText" v_pad="0"
201 width="128"> 214 width="128">
202 Reflection Detail: 215 Water Reflections:
203 </text> 216 </text>
204 <radio_group bottom_delta="-73" control_name="RenderReflectionDetail" draw_border="false" 217 <combo_box allow_text_entry="false" bottom_delta="-23" enabled="true" follows="left|top"
205 enabled="true" follows="left|top" height="70" 218 height="16" left_delta="10" max_chars="100" mouse_opaque="true" control_name="RenderReflectionDetail"
206 left_delta="-2" mouse_opaque="true" name="ReflectionDetailRadio" 219 name="ReflectionDetailCombo" width="160">
207 width="321"> 220 <combo_item type="string" length="1" enabled="true" name="0" value="0">
208 <radio_item type="string" length="1" bottom="-19" enabled="true" follows="left|top" height="16" 221 Terrain and trees
209 left="3" mouse_opaque="true" name="0" width="315"> 222 </combo_item>
210 Terrain and trees 223 <combo_item type="string" length="1" enabled="true" name="1" value="1">
211 </radio_item> 224 All static objects
212 <radio_item type="string" length="1" bottom="-35" enabled="true" follows="left|top" height="16" 225 </combo_item>
213 left="3" mouse_opaque="true" name="1" width="315"> 226 <combo_item type="string" length="1" enabled="true" name="2" value="2">
214 All static objects 227 All avatars and objects
215 </radio_item> 228 </combo_item>
216 <radio_item type="string" length="1" bottom="-51" enabled="true" follows="left|top" height="16" 229 <combo_item type="string" length="1" enabled="true" name="3" value="3">
217 left="3" mouse_opaque="true" name="2" width="315"> 230 Everything
218 All avatars and objects 231 </combo_item>
219 </radio_item> 232 </combo_box>
220 <radio_item type="string" length="1" bottom="-67" enabled="true" follows="left|top" height="16" 233
221 left="3" mouse_opaque="true" name="3" width="315"> 234 <text type="string" length="1" bg_visible="false" border_drop_shadow_visible="false" border_visible="false"
222 Everything 235 bottom_delta="-25" drop_shadow_visible="true" enabled="true" follows="left|top" font-style="BOLD|SHADOW"
223 </radio_item> 236 font="SansSerifSmall" h_pad="0" halign="left" height="10" left_delta="-10"
224 </radio_group>
225 <text type="string" length="1" bg_visible="false" border_drop_shadow_visible="false" border_visible="false"
226 bottom="-313" drop_shadow_visible="true" enabled="true" follows="left|top"
227 font="SansSerifSmall" h_pad="0" halign="left" height="12" left="10"
228 mouse_opaque="true" name="AvatarRenderingText" v_pad="0" width="128"> 237 mouse_opaque="true" name="AvatarRenderingText" v_pad="0" width="128">
229 Avatar Rendering: 238 Avatar Rendering:
230 </text> 239 </text>
231 <check_box bottom_delta="-23" control_name="RenderUseImpostors" enabled="true" 240 <check_box bottom_delta="-23" control_name="RenderUseImpostors" enabled="true"
232 follows="left|top" font="SansSerifSmall" height="16" initial_value="true" 241 follows="left|top" font="SansSerifSmall" height="16" initial_value="true"
233 label="Avatar impostors" left_delta="0" mouse_opaque="true" 242 label="Avatar impostors" left_delta="10" mouse_opaque="true"
234 name="AvatarImpostors" radio_style="false" width="256" /> 243 name="AvatarImpostors" radio_style="false" width="256" />
235 <check_box bottom_delta="-17" control_name="RenderAvatarVP" enabled="true" 244 <check_box bottom_delta="-18" control_name="RenderAvatarVP" enabled="true"
236 follows="left|top" font="SansSerifSmall" height="16" initial_value="true" 245 follows="left|top" font="SansSerifSmall" height="16" initial_value="true"
237 label="Hardware skinning" left_delta="0" mouse_opaque="true" 246 label="Hardware skinning" left_delta="0" mouse_opaque="true"
238 name="AvatarVertexProgram" radio_style="false" width="256" /> 247 name="AvatarVertexProgram" radio_style="false" width="256" />
239 <check_box bottom_delta="-17" control_name="RenderAvatarCloth" enabled="true" 248 <check_box bottom_delta="-18" control_name="RenderAvatarCloth" enabled="true"
240 follows="left|top" font="SansSerifSmall" height="16" initial_value="true" 249 follows="left|top" font="SansSerifSmall" height="16" initial_value="true"
241 label="Avatar cloth" left_delta="0" mouse_opaque="true" name="AvatarCloth" 250 label="Avatar cloth" left_delta="0" mouse_opaque="true" name="AvatarCloth"
242 radio_style="false" width="256" /> 251 radio_style="false" width="256" />
252
253
254 <text type="string" length="1" bg_visible="false" border_drop_shadow_visible="false" border_visible="false"
255 bottom_delta="-27" drop_shadow_visible="true" enabled="true" follows="left|top" font-style="BOLD|SHADOW"
256 font="SansSerifSmall" h_pad="0" halign="left" height="10" left_delta="-10"
257 mouse_opaque="true" name="TerrainDetailText" v_pad="0" width="128">
258 Terrain Detail:
259 </text>
260 <combo_box allow_text_entry="false" bottom_delta="-23" enabled="true" follows="left|top"
261 height="16" left_delta="10" max_chars="100" mouse_opaque="true" control_name="RenderTerrainDetail"
262 name="TerrainDetailCombo" width="160">
263 <combo_item type="string" length="1" enabled="true" name="0" value="0">
264 Low
265 </combo_item>
266 <combo_item type="string" length="1" enabled="true" name="1" value="1">
267 High
268 </combo_item>
269 </combo_box>
270
271
243 <text type="string" length="1" bg_visible="false" border_drop_shadow_visible="false" border_visible="false" 272 <text type="string" length="1" bg_visible="false" border_drop_shadow_visible="false" border_visible="false"
244 bottom_delta="-20" drop_shadow_visible="true" enabled="true" follows="left|top" 273 bottom="-190" drop_shadow_visible="true" enabled="true" follows="left|top" font-style="BOLD|SHADOW"
245 font="SansSerifSmall" h_pad="0" halign="left" height="12" left_delta="0" 274 font="SansSerifSmall" h_pad="0" halign="left" height="10"
246 mouse_opaque="true" name="AvatarCountText" v_pad="0" width="128"> 275 left="210" mouse_opaque="true" name="LimitsText" v_pad="0" width="128">
247 Max. non-imposters: 276 Limits:
248 </text> 277 </text>
249 <slider bottom_delta="-20" can_edit_text="true" control_name="RenderAvatarMaxVisible" 278 <slider bottom_delta="-23" can_edit_text="true" control_name="RenderFarClip"
250 decimal_digits="0" enabled="true" follows="left|top" height="16"
251 increment="1" initial_val="35" label=""
252 label_width="0" left_delta="0" max_val="50" min_val="0" mouse_opaque="true"
253 name="AvatarMaxVisible" show_text="true" width="100" />
254 <slider bottom="-135" can_edit_text="true" control_name="RenderFarClip"
255 decimal_digits="0" enabled="true" follows="left|top" height="16" 279 decimal_digits="0" enabled="true" follows="left|top" height="16"
256 increment="4" initial_val="160" label="Draw distance (meters):" 280 increment="4" initial_val="160" label="Draw distance (meters):"
257 label_width="140" left="215" max_val="1024" min_val="32" mouse_opaque="true" 281 label_width="140" left_delta="10" max_val="1024" min_val="32" mouse_opaque="true"
258 name="DrawDistance" show_text="true" width="262" /> 282 name="DrawDistance" show_text="true" width="262" />
259 <slider bottom_delta="-20" can_edit_text="true" control_name="RenderMaxPartCount" 283 <slider bottom_delta="-18" can_edit_text="true" control_name="RenderMaxPartCount"
260 decimal_digits="0" enabled="true" follows="left|top" height="16" 284 decimal_digits="0" enabled="true" follows="left|top" height="16"
261 increment="256" initial_val="4096" 285 increment="256" initial_val="4096"
262 label="Max. particle count:" label_width="140" left_delta="0" 286 label="Max. particle count:" label_width="140" left_delta="0"
263 max_val="8192" min_val="0" mouse_opaque="true" name="MaxParticleCount" 287 max_val="8192" min_val="0" mouse_opaque="true" name="MaxParticleCount"
264 show_text="true" width="262" /> 288 show_text="true" width="262" />
265 <slider bottom_delta="-20" can_edit_text="false" control_name="RenderGlowResolutionPow" 289 <slider bottom_delta="-18" can_edit_text="true" control_name="RenderAvatarMaxVisible"
290 decimal_digits="0" enabled="true" follows="left|top" height="16"
291 increment="1" initial_val="35" label="Max. non-imposters:"
292 label_width="140" left_delta="0" max_val="50" min_val="0" mouse_opaque="true"
293 name="AvatarMaxVisible" show_text="true" width="250" />
294 <slider bottom_delta="-18" can_edit_text="false" control_name="RenderGlowResolutionPow"
266 decimal_digits="0" enabled="true" follows="left|top" height="16" 295 decimal_digits="0" enabled="true" follows="left|top" height="16"
267 increment="1" initial_val="8" label="Post process quality:" 296 increment="1" initial_val="8" label="Post process quality:"
268 label_width="140" left_delta="0" max_val="9" min_val="8" 297 label_width="140" left_delta="0" max_val="9" min_val="8"
269 mouse_opaque="true" name="RenderPostProcess" show_text="false" width="223" /> 298 mouse_opaque="true" name="RenderPostProcess" show_text="false" width="223" />
270 <text type="string" length="1" bg_visible="false" border_drop_shadow_visible="false" border_visible="false" 299
271 bottom_delta="-17" drop_shadow_visible="true" enabled="true" 300
301 <text type="string" length="1" bg_visible="false" border_drop_shadow_visible="false" border_visible="false"
302 bottom_delta="-20" drop_shadow_visible="true" enabled="true" font-style="BOLD|SHADOW"
272 follows="left|top" font="SansSerifSmall" h_pad="0" halign="left" 303 follows="left|top" font="SansSerifSmall" h_pad="0" halign="left"
273 height="12" left="215" mouse_opaque="true" name="MeshDetailText" v_pad="0" 304 height="12" left_delta="0" mouse_opaque="true" name="MeshDetailText" v_pad="0"
274 width="128"> 305 width="128">
275 Mesh Detail: 306 Mesh Detail:
276 </text> 307 </text>
277 <slider bottom_delta="-22" can_edit_text="false" control_name="RenderVolumeLODFactor" 308 <slider bottom_delta="-23" can_edit_text="false" control_name="RenderVolumeLODFactor"
278 decimal_digits="3" enabled="true" follows="left|top" height="16" 309 decimal_digits="3" enabled="true" follows="left|top" height="16"
279 increment="0.125" initial_val="160" label=" Objects:" 310 increment="0.125" initial_val="160" label=" Objects:"
280 label_width="140" left_delta="0" max_val="4" min_val="0" 311 label_width="140" left_delta="0" max_val="4" min_val="0"
281 mouse_opaque="true" name="ObjectMeshDetail" show_text="false" width="223" /> 312 mouse_opaque="true" name="ObjectMeshDetail" show_text="false" width="223" />
282 <slider bottom_delta="-20" can_edit_text="false" control_name="RenderFlexTimeFactor" 313 <slider bottom_delta="-18" can_edit_text="false" control_name="RenderFlexTimeFactor"
283 decimal_digits="3" enabled="true" follows="left|top" height="16" 314 decimal_digits="3" enabled="true" follows="left|top" height="16"
284 increment="0.1" initial_val="160" label=" Flexiprims:" 315 increment="0.1" initial_val="160" label=" Flexiprims:"
285 label_width="140" left_delta="0" max_val="1" min_val="0" 316 label_width="140" left_delta="0" max_val="1" min_val="0"
286 mouse_opaque="true" name="FlexibleMeshDetail" show_text="false" width="223" /> 317 mouse_opaque="true" name="FlexibleMeshDetail" show_text="false" width="223" />
287 <slider bottom_delta="-20" can_edit_text="false" control_name="RenderTreeLODFactor" 318 <slider bottom_delta="-18" can_edit_text="false" control_name="RenderTreeLODFactor"
288 decimal_digits="3" enabled="true" follows="left|top" height="16" 319 decimal_digits="3" enabled="true" follows="left|top" height="16"
289 increment="0.125" initial_val="160" label=" Trees:" 320 increment="0.125" initial_val="160" label=" Trees:"
290 label_width="140" left_delta="0" max_val="1" min_val="0" 321 label_width="140" left_delta="0" max_val="1" min_val="0"
291 mouse_opaque="true" name="TreeMeshDetail" show_text="false" width="223" /> 322 mouse_opaque="true" name="TreeMeshDetail" show_text="false" width="223" />
292 <slider bottom_delta="-20" can_edit_text="false" control_name="RenderAvatarLODFactor" 323 <slider bottom_delta="-18" can_edit_text="false" control_name="RenderAvatarLODFactor"
293 decimal_digits="3" enabled="true" follows="left|top" height="16" 324 decimal_digits="3" enabled="true" follows="left|top" height="16"
294 increment="0.125" initial_val="160" label=" Avatars:" 325 increment="0.125" initial_val="160" label=" Avatars:"
295 label_width="140" left_delta="0" max_val="1" min_val="0" 326 label_width="140" left_delta="0" max_val="1" min_val="0"
296 mouse_opaque="true" name="AvatarMeshDetail" show_text="false" width="223" /> 327 mouse_opaque="true" name="AvatarMeshDetail" show_text="false" width="223" />
297 <slider bottom_delta="-20" can_edit_text="false" control_name="RenderTerrainLODFactor" 328 <slider bottom_delta="-18" can_edit_text="false" control_name="RenderTerrainLODFactor"
298 decimal_digits="3" enabled="true" follows="left|top" height="16" 329 decimal_digits="3" enabled="true" follows="left|top" height="16"
299 increment="0.125" initial_val="160" label=" Terrain:" 330 increment="0.125" initial_val="160" label=" Terrain:"
300 label_width="140" left_delta="0" max_val="2" min_val="1" 331 label_width="140" left_delta="0" max_val="2" min_val="1"
301 mouse_opaque="true" name="TerrainMeshDetail" show_text="false" width="223" /> 332 mouse_opaque="true" name="TerrainMeshDetail" show_text="false" width="223" />
302 <slider bottom_delta="-20" can_edit_text="false" control_name="WLSkyDetail" 333 <slider bottom_delta="-18" can_edit_text="false" control_name="WLSkyDetail"
303 decimal_digits="0" enabled="true" follows="left|top" height="16" 334 decimal_digits="0" enabled="true" follows="left|top" height="16"
304 increment="8" initial_val="160" label=" Sky:" 335 increment="8" initial_val="160" label=" Sky:"
305 label_width="140" left_delta="0" max_val="128" min_val="16" 336 label_width="140" left_delta="0" max_val="128" min_val="16"
306 mouse_opaque="true" name="SkyMeshDetail" show_text="false" width="223" /> 337 mouse_opaque="true" name="SkyMeshDetail" show_text="false" width="223" />
307 <text type="string" length="1" bg_visible="false" border_drop_shadow_visible="false" border_visible="false" 338
308 bottom="-172" drop_shadow_visible="true" enabled="true" follows="left|top" 339
340 <text type="string" length="1" bg_visible="false" border_drop_shadow_visible="false" border_visible="false"
341 bottom="-266" drop_shadow_visible="true" enabled="true" follows="left|top"
309 font="SansSerifSmall" h_pad="0" halign="left" height="12" 342 font="SansSerifSmall" h_pad="0" halign="left" height="12"
310 left="444" mouse_opaque="true" name="PostProcessText" v_pad="0" width="128"> 343 left="444" mouse_opaque="true" name="PostProcessText" v_pad="0" width="128">
311 Low 344 Low
312 </text> 345 </text>
313 <text type="string" length="1" bg_visible="false" border_drop_shadow_visible="false" border_visible="false" 346 <text type="string" length="1" bg_visible="false" border_drop_shadow_visible="false" border_visible="false"
314 bottom="-210" drop_shadow_visible="true" enabled="true" follows="left|top" 347 bottom_delta="-44" drop_shadow_visible="true" enabled="true" follows="left|top"
315 font="SansSerifSmall" h_pad="0" halign="left" height="12" 348 font="SansSerifSmall" h_pad="0" halign="left" height="12"
316 left="444" mouse_opaque="true" name="ObjectMeshDetailText" v_pad="0" 349 left="444" mouse_opaque="true" name="ObjectMeshDetailText" v_pad="0"
317 width="128"> 350 width="128">
318 Low 351 Low
319 </text> 352 </text>
320 <text type="string" length="1" bg_visible="false" border_drop_shadow_visible="false" border_visible="false" 353 <text type="string" length="1" bg_visible="false" border_drop_shadow_visible="false" border_visible="false"
321 bottom_delta="-20" drop_shadow_visible="true" enabled="true" 354 bottom_delta="-18" drop_shadow_visible="true" enabled="true"
322 follows="left|top" font="SansSerifSmall" h_pad="0" halign="left" 355 follows="left|top" font="SansSerifSmall" h_pad="0" halign="left"
323 height="12" left_delta="0" mouse_opaque="true" 356 height="12" left_delta="0" mouse_opaque="true"
324 name="FlexibleMeshDetailText" v_pad="0" width="128"> 357 name="FlexibleMeshDetailText" v_pad="0" width="128">
325 Low 358 Low
326 </text> 359 </text>
327 <text type="string" length="1" bg_visible="false" border_drop_shadow_visible="false" border_visible="false" 360 <text type="string" length="1" bg_visible="false" border_drop_shadow_visible="false" border_visible="false"
328 bottom_delta="-20" drop_shadow_visible="true" enabled="true" 361 bottom_delta="-18" drop_shadow_visible="true" enabled="true"
329 follows="left|top" font="SansSerifSmall" h_pad="0" halign="left" 362 follows="left|top" font="SansSerifSmall" h_pad="0" halign="left"
330 height="12" left_delta="0" mouse_opaque="true" 363 height="12" left_delta="0" mouse_opaque="true"
331 name="TreeMeshDetailText" v_pad="0" width="128"> 364 name="TreeMeshDetailText" v_pad="0" width="128">
332 Low 365 Low
333 </text> 366 </text>
334 <text type="string" length="1" bg_visible="false" border_drop_shadow_visible="false" border_visible="false" 367 <text type="string" length="1" bg_visible="false" border_drop_shadow_visible="false" border_visible="false"
335 bottom_delta="-20" drop_shadow_visible="true" enabled="true" 368 bottom_delta="-18" drop_shadow_visible="true" enabled="true"
336 follows="left|top" font="SansSerifSmall" h_pad="0" halign="left" 369 follows="left|top" font="SansSerifSmall" h_pad="0" halign="left"
337 height="12" left_delta="0" mouse_opaque="true" 370 height="12" left_delta="0" mouse_opaque="true"
338 name="AvatarMeshDetailText" v_pad="0" width="128"> 371 name="AvatarMeshDetailText" v_pad="0" width="128">
339 Low 372 Low
340 </text> 373 </text>
341 <text type="string" length="1" bg_visible="false" border_drop_shadow_visible="false" border_visible="false" 374 <text type="string" length="1" bg_visible="false" border_drop_shadow_visible="false" border_visible="false"
342 bottom_delta="-20" drop_shadow_visible="true" enabled="true" 375 bottom_delta="-18" drop_shadow_visible="true" enabled="true"
343 follows="left|top" font="SansSerifSmall" h_pad="0" halign="left" 376 follows="left|top" font="SansSerifSmall" h_pad="0" halign="left"
344 height="12" left_delta="0" mouse_opaque="true" 377 height="12" left_delta="0" mouse_opaque="true"
345 name="TerrainMeshDetailText" v_pad="0" width="128"> 378 name="TerrainMeshDetailText" v_pad="0" width="128">
346 Low 379 Low
347 </text> 380 </text>
348 <text type="string" length="1" bg_visible="false" border_drop_shadow_visible="false" border_visible="false" 381 <text type="string" length="1" bg_visible="false" border_drop_shadow_visible="false" border_visible="false"
349 bottom_delta="-20" drop_shadow_visible="true" enabled="true" 382 bottom_delta="-18" drop_shadow_visible="true" enabled="true"
350 follows="left|top" font="SansSerifSmall" h_pad="0" halign="left" 383 follows="left|top" font="SansSerifSmall" h_pad="0" halign="left"
351 height="12" left_delta="0" mouse_opaque="true" 384 height="12" left_delta="0" mouse_opaque="true"
352 name="SkyMeshDetailText" v_pad="0" width="128"> 385 name="SkyMeshDetailText" v_pad="0" width="128">
353 Low 386 Low
354 </text> 387 </text>
355 <text type="string" length="1" bg_visible="false" border_drop_shadow_visible="false" border_visible="false" 388
356 bottom="-331" drop_shadow_visible="true" enabled="true" follows="left|top" 389
390 <text type="string" length="1" bg_visible="false" border_drop_shadow_visible="false" border_visible="false"
391 bottom_delta="-20" drop_shadow_visible="true" enabled="true" follows="left|top" font-style="BOLD|SHADOW"
357 font="SansSerifSmall" h_pad="0" halign="left" height="12" 392 font="SansSerifSmall" h_pad="0" halign="left" height="12"
358 left="210" mouse_opaque="true" name="LightingDetailText" v_pad="0" 393 left="210" mouse_opaque="true" name="LightingDetailText" v_pad="0"
359 width="128"> 394 width="128">
360 Lighting Detail: 395 Lighting Detail:
361 </text> 396 </text>
362 <radio_group bottom_delta="-43" control_name="RenderLightingDetail" draw_border="false" 397 <combo_box allow_text_entry="false" bottom_delta="-23" enabled="true" follows="left|top"
363 enabled="true" follows="left|top" height="38" left_delta="0" 398 height="16" left_delta="10" max_chars="100" mouse_opaque="true" control_name="RenderLightingDetail"
364 mouse_opaque="true" name="LightingDetailRadio" width="321"> 399 name="LightingDetailCombo" width="160">
365 <radio_item type="string" length="1" bottom="-19" enabled="true" follows="left|top" height="16" 400 <combo_item type="string" length="1" enabled="true" name="0" value="0">
366 left="3" mouse_opaque="true" name="SunMoon" width="156"> 401 Sun and moon only
367 Sun and moon only 402 </combo_item>
368 </radio_item> 403 <combo_item type="string" length="1" enabled="true" name="1" value="1">
369 <radio_item type="string" length="1" bottom="-35" enabled="true" follows="left|top" height="16" 404 Nearby local lights
370 left="3" mouse_opaque="true" name="LocalLights" width="156"> 405 </combo_item>
371 Nearby local lights 406 </combo_box>
372 </radio_item> 407
373 </radio_group> 408
374 <text type="string" length="1" bg_visible="false" border_drop_shadow_visible="false" border_visible="false" 409 <view_border bevel_style="none" border_thickness="1" bottom="-448" follows="left|top"
375 bottom="-331" drop_shadow_visible="true" enabled="true" follows="left|top" 410 height="271" left="5" name="GraphicsBorder" width="488" />
376 font="SansSerifSmall" h_pad="0" halign="left" height="12" left="360" 411
377 mouse_opaque="true" name="TerrainDetailText" v_pad="0" width="128"> 412
378 Terrain Detail:
379 </text>
380 <radio_group bottom_delta="-43" control_name="RenderTerrainDetail" draw_border="false"
381 enabled="true" follows="left|top" height="38" left_delta="0"
382 mouse_opaque="true" name="TerrainDetailRadio" width="321">
383 <radio_item type="string" length="1" bottom="-19" enabled="true" follows="left|top" height="16"
384 left="3" mouse_opaque="true" name="0" width="315">
385 Low
386 </radio_item>
387 <radio_item type="string" length="1" bottom="-35" enabled="true" follows="left|top" height="16"
388 left="3" mouse_opaque="true" name="2" width="315">
389 High
390 </radio_item>
391 </radio_group>
392 <button bottom="4" enabled="true" font="SansSerif" halign="center" height="20"
393 label="Recommended Settings" left="130" mouse_opaque="true"
394 name="Defaults" scale_image="true" width="170" follows="left|bottom" />
395 <button bottom="4" enabled="true" font="SansSerif" halign="center" height="20"
396 label="Hardware Options" label_selected="Hardware Options"
397 left="310" mouse_opaque="true" name="GraphicsHardwareButton"
398 scale_image="true" width="170" follows="left|bottom" />
399 <string name="resolution_format"> 413 <string name="resolution_format">
400 [RES_X] x [RES_Y] 414 [RES_X] x [RES_Y]
401 </string> 415 </string>
diff --git a/linden/indra/newview/skins/default/xui/en-us/panel_preferences_im.xml b/linden/indra/newview/skins/default/xui/en-us/panel_preferences_im.xml
index fe17e7a..dd3e183 100644
--- a/linden/indra/newview/skins/default/xui/en-us/panel_preferences_im.xml
+++ b/linden/indra/newview/skins/default/xui/en-us/panel_preferences_im.xml
@@ -1,114 +1,108 @@
1<?xml version="1.0" encoding="utf-8" standalone="yes" ?> 1<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
2
3<!--
4ALL PREFS OPTIONS START AT 20px FROM LEFT, 10px FROM TOP
5
6USE bottom_delta BETWEEN OPTIONS IN A GROUP
7
8USE LINES BETWEEN GROUPS
9
10USE font-style="BOLD|SHADOW" FOR GROUP LABELS
11
12GROUP LABEL CONTENTS ARE INDENTED 30px
13
14USE left="270" FOR TABBING OPTIONS
15-->
16
2<panel border="true" bottom="-409" enabled="true" follows="left|top|right|bottom" 17<panel border="true" bottom="-409" enabled="true" follows="left|top|right|bottom"
3 height="408" label="IMs &amp; Logging" left="102" mouse_opaque="true" name="im" 18 height="408" label="Logging &amp; Privacy" left="102" mouse_opaque="true" name="im"
4 width="517"> 19 width="517">
20
21
5 <text type="string" length="1" bg_visible="false" border_drop_shadow_visible="false" border_visible="false" 22 <text type="string" length="1" bg_visible="false" border_drop_shadow_visible="false" border_visible="false"
6 bottom="-20" drop_shadow_visible="true" enabled="true" follows="left|top" 23 bottom="-20" drop_shadow_visible="true" enabled="true" follows="left|top" font-style="BOLD|SHADOW"
7 font="SansSerifSmall" h_pad="0" halign="left" height="10" left="12" 24 font="SansSerifSmall" h_pad="0" halign="left" height="10" left="20"
8 mouse_opaque="false" name="text_box" v_pad="0" width="128"> 25 mouse_opaque="false" name="text_box" v_pad="0" width="128">
9 My Online Status: 26 Logging:
10 </text> 27 </text>
11 <check_box bottom="-25" enabled="true" follows="left|top" font="SansSerifSmall" 28
12 height="16" initial_value="false" 29 <check_box bottom_delta="-25" enabled="true"
13 label="Only my Friends and Groups can see when I am online"
14 left="148" mouse_opaque="true" name="online_visibility" radio_style="false"
15 width="350" />
16 <text type="string" length="1" bg_visible="false" border_drop_shadow_visible="false" border_visible="false"
17 bottom="-40" drop_shadow_visible="true" enabled="true" follows="left|top"
18 font="SansSerifSmall" h_pad="0" halign="left" height="10" left="12"
19 mouse_opaque="false" name="text_box2" v_pad="0" width="128">
20 IM Options:
21 </text>
22 <string name="log_in_to_change">
23 log in to change
24 </string>
25 <string name="default_email_used">
26 using default address
27 </string>
28 <check_box bottom="-45" enabled="true" follows="left|top" font="SansSerifSmall"
29 height="16" initial_value="false" label="Send IM to email ([EMAIL])"
30 left="148" mouse_opaque="true" name="send_im_to_email" radio_style="false"
31 width="350" />
32 <text type="string" length="1" bg_visible="false" border_drop_shadow_visible="false" border_visible="false"
33 bottom="-59" drop_shadow_visible="true" enabled="true" follows="left|top"
34 font="SansSerifSmall" h_pad="0" halign="left" height="10" left="148"
35 mouse_opaque="false" name="show_ims_label" v_pad="0" width="100">
36 Show IMs in:
37 </text>
38 <check_box bottom="-65" enabled="true" follows="left|top"
39 font="SansSerifSmall" height="16" initial_value="false"
40 label="Main chat" left="248" mouse_opaque="true"
41 name="include_im_in_chat_console" radio_style="false" width="100" />
42 <check_box bottom="-65" enabled="true" follows="left|top"
43 font="SansSerifSmall" height="16" initial_value="false"
44 label="Local Chat window" left="348" mouse_opaque="true"
45 name="include_im_in_chat_history" radio_style="false" width="100" />
46 <check_box bottom="-85" enabled="true" follows="left|top"
47 font="SansSerifSmall" height="16" initial_value="false"
48 label="Show timestamps in IM" left="148" mouse_opaque="true"
49 name="show_timestamps_check" radio_style="false" width="237" />
50 <check_box bottom="-105" enabled="true"
51 follows="left|top" font="SansSerifSmall" height="16" 30 follows="left|top" font="SansSerifSmall" height="16"
52 initial_value="false" label="Show online Friend notifications" left="148" 31 initial_value="false" label="Save a log of IM on my computer" left_delta="30"
53 mouse_opaque="true" name="friends_online_notify_checkbox" 32 mouse_opaque="true" name="log_instant_messages" radio_style="false"
54 radio_style="false" width="256" /> 33 width="237" />
55 <check_box bottom_delta="-20" enabled="true"
56 follows="left|top" font="SansSerifSmall" height="16" initial_value="false"
57 label="Vertical IM tabs (requires restart)" left_delta="0" mouse_opaque="true"
58 name="vertical-imtabs-toggle" radio_style="false" width="270" />
59 <text type="string" length="1" bg_visible="false" border_drop_shadow_visible="false" border_visible="false"
60 bottom_delta="-20" drop_shadow_visible="true" enabled="true" follows="left|top"
61 font="SansSerifSmall" h_pad="0" halign="left" height="10" left="12"
62 mouse_opaque="false" name="text_box3" v_pad="0" width="128">
63 Busy Mode Response:
64 </text>
65 <text_editor type="string" length="1" bottom_delta="-60" embedded_items="false" enabled="true" follows="left|top"
66 font="SansSerifSmall" height="70" left="148" max_length="255"
67 mouse_opaque="true" name="busy_response" width="330" word_wrap="true" spell_check="true" />
68 <button bottom_delta="-25" follows="top|right" height="22" label="IM Response Options"
69 left="164" name="busy_adv_btn" tool_tip="Instant message Auto-Response options"
70 width="180" />
71 <text type="string" length="1" bg_visible="false" border_drop_shadow_visible="false" border_visible="false"
72 bottom_delta="-23" drop_shadow_visible="true" enabled="true" follows="left|top"
73 font="SansSerifSmall" h_pad="0" halign="left" height="10" left="12"
74 mouse_opaque="false" name="text_box4" v_pad="0" width="128">
75 Logging Options:
76 </text>
77 <check_box bottom_delta="-7" enabled="true"
78 follows="left|top" font="SansSerifSmall" height="16"
79 initial_value="false" label="Save a log of IM on my computer" left="148"
80 mouse_opaque="true" name="log_instant_messages" radio_style="false"
81 width="237" />
82 <check_box bottom_delta="-20" enabled="true" 34 <check_box bottom_delta="-20" enabled="true"
83 follows="left|top" font="SansSerifSmall" height="16" 35 follows="left|top" font="SansSerifSmall" height="16"
84 initial_value="false" label="Show timestamps in IM log" left="168" 36 initial_value="false" label="Show timestamps in IM log" left_delta="30"
85 mouse_opaque="true" name="log_instant_messages_timestamp" radio_style="false" 37 mouse_opaque="true" name="log_instant_messages_timestamp" radio_style="false"
86 width="217" /> 38 width="217" />
87 <check_box bottom_delta="-20" enabled="true" follows="left|top" 39 <check_box bottom_delta="-20" enabled="true" follows="left|top"
88 font="SansSerifSmall" height="16" initial_value="false" 40 font="SansSerifSmall" height="16" initial_value="false"
89 label="Show the end of last IM conversation" left="168" mouse_opaque="true" 41 label="Show the end of last IM conversation" left_delta="0" mouse_opaque="true"
90 name="log_show_history" radio_style="false" width="217" /> 42 name="log_show_history" radio_style="false" width="217" />
91 <check_box bottom_delta="-20" enabled="true" follows="left|top" 43 <check_box bottom_delta="-20" enabled="true" follows="left|top"
92 font="SansSerifSmall" height="16" initial_value="false" label="Save a log of Local Chat on my computer" 44 font="SansSerifSmall" height="16" initial_value="false" label="Save a log of Local Chat on my computer"
93 left="148" mouse_opaque="true" name="log_chat" radio_style="false" 45 left_delta="-30" mouse_opaque="true" name="log_chat" radio_style="false"
94 width="237" /> 46 width="237" />
95 <check_box bottom_delta="-20" enabled="true" follows="left|top" 47 <check_box bottom_delta="-20" enabled="true" follows="left|top"
96 font="SansSerifSmall" height="16" initial_value="false" 48 font="SansSerifSmall" height="16" initial_value="false"
97 label="Show timestamps in Local Chat log" left="168" mouse_opaque="true" 49 label="Show timestamps in Local Chat log" left_delta="30" mouse_opaque="true"
98 name="log_chat_timestamp" radio_style="false" width="217" /> 50 name="log_chat_timestamp" radio_style="false" width="217" />
99 <check_box bottom_delta="-20" enabled="true" follows="left|top" 51 <check_box bottom_delta="-20" enabled="true" follows="left|top"
100 font="SansSerifSmall" height="16" initial_value="false" 52 font="SansSerifSmall" height="16" initial_value="false"
101 label="Show incoming IM in Local Chat log" left="168" mouse_opaque="true" 53 label="Show incoming IM in Local Chat log" left_delta="0" mouse_opaque="true"
102 name="log_chat_IM" radio_style="false" width="217" /> 54 name="log_chat_IM" radio_style="false" width="217" />
103 <check_box bottom_delta="-20" enabled="true" follows="left|top" 55 <check_box bottom_delta="-20" enabled="true" follows="left|top"
104 font="SansSerifSmall" height="16" initial_value="false" 56 font="SansSerifSmall" height="16" initial_value="false"
105 label="Include date with timestamps" left="148" mouse_opaque="true" 57 label="Include date with timestamps" left_delta="-30" mouse_opaque="true"
106 name="log_date_timestamp" radio_style="false" width="237" /> 58 name="log_date_timestamp" radio_style="false" width="237" />
107 <button bottom_delta="-22" follows="left|top" font="SansSerif" halign="center" 59 <text type="string" length="1" bg_visible="false" border_drop_shadow_visible="false" border_visible="false"
108 height="20" label="Change Path" label_selected="Change Path" left="148" 60 bottom_delta="-20" drop_shadow_visible="true" enabled="true" follows="left|top"
109 mouse_opaque="true" name="log_path_button" width="96" /> 61 font="SansSerifSmall" h_pad="0" halign="left" height="10" left_delta="0"
110 <line_editor border_drop_shadow_visible="false" border_visible="false" bottom_delta="1" 62 mouse_opaque="false" name="text_box" v_pad="0" width="128">
111 drop_shadow_visible="true" enabled="false" follows="top|left|right" 63 Log location:
112 font="SansSerifSmall" halign="right" height="19" left="248" 64 </text>
113 max_length="254" mouse_opaque="false" name="log_path_string" right="-20" /> 65 <line_editor border_drop_shadow_visible="false" border_visible="false" bottom_delta="-25"
66 drop_shadow_visible="true" enabled="false" follows="top|left|right" width="395"
67 font="SansSerifSmall" halign="right" height="19" left_delta="0"
68 max_length="254" mouse_opaque="false" name="log_path_string" />
69 <button bottom_delta="-25" follows="left|top" font="SansSerifSmall" halign="center"
70 height="20" label="Change Location" label_selected="Change Path" left_delta="0"
71 mouse_opaque="true" name="log_path_button" width="160" />
72
73
74
75 <view_border bevel_style="none" border_thickness="1" bottom_delta="-15" follows="left|top"
76 height="1" left="55" name="border" width="380" />
77
78
79 <text type="string" length="1" bg_visible="false" border_drop_shadow_visible="false" border_visible="false"
80 bottom_delta="-20" drop_shadow_visible="true" enabled="true" follows="left|top" font-style="BOLD|SHADOW"
81 font="SansSerifSmall" h_pad="0" halign="left" height="10" left="20"
82 mouse_opaque="false" name="text_box" v_pad="0" width="128">
83 Privacy:
84 </text>
85 <check_box bottom_delta="-25" enabled="true" follows="left|top" font="SansSerifSmall"
86 height="16" initial_value="false"
87 label="Only my Friends and Groups can see when I am online"
88 left_delta="30" mouse_opaque="true" name="online_visibility" radio_style="false"
89 width="350" />
90 <text type="string" length="1" bg_visible="false" border_drop_shadow_visible="false" border_visible="false"
91 bottom_delta="-20" drop_shadow_visible="true" enabled="true" follows="left|top"
92 font="SansSerifSmall" h_pad="0" halign="left" height="10" left_delta="0"
93 mouse_opaque="false" name="text_box3" v_pad="0" width="128">
94 Busy Mode Response:
95 </text>
96 <text_editor type="string" length="1" bottom_delta="-75" embedded_items="false" enabled="true" follows="left|top"
97 font="SansSerifSmall" height="70" left_delta="0" max_length="255"
98 mouse_opaque="true" name="busy_response" width="330" word_wrap="true" spell_check="true" />
99 <button bottom_delta="-30" follows="top|left" height="20" label="Auto-Response Options"
100 left_delta="0" name="busy_adv_btn" tool_tip="Instant message Auto-Response options"
101 width="160" font="SansSerifSmall" />
102
103 <string name="log_in_to_change">
104 log in to change
105 </string>
106
107
114</panel> 108</panel>
diff --git a/linden/indra/newview/skins/default/xui/en-us/panel_preferences_input.xml b/linden/indra/newview/skins/default/xui/en-us/panel_preferences_input.xml
index 70c8464..5713933 100644
--- a/linden/indra/newview/skins/default/xui/en-us/panel_preferences_input.xml
+++ b/linden/indra/newview/skins/default/xui/en-us/panel_preferences_input.xml
@@ -1,152 +1,180 @@
1<?xml version="1.0" encoding="utf-8" standalone="yes" ?> 1<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
2
3<!--
4ALL PREFS OPTIONS START AT 20px FROM LEFT, 10px FROM TOP
5
6USE bottom_delta BETWEEN OPTIONS IN A GROUP
7
8USE LINES BETWEEN GROUPS
9
10USE font-style="BOLD|SHADOW" FOR GROUP LABELS
11
12GROUP LABEL CONTENTS ARE INDENTED 30px
13
14USE left="270" FOR TABBING OPTIONS
15-->
16
2<panel border="true" bottom="-409" enabled="true" follows="left|top|right|bottom" 17<panel border="true" bottom="-409" enabled="true" follows="left|top|right|bottom"
3 height="408" label="Input &amp; Camera" left="102" mouse_opaque="true" 18 height="408" label="Input &amp; Camera" left="102" mouse_opaque="true"
4 name="Input panel" width="517"> 19 name="Input panel" width="517">
20
21
22 <text name="double_click_action_label" font-style="BOLD|SHADOW"
23 bottom="-26" left="20" height="16" width="200"
24 follows="left|top" font="SansSerifSmall" mouse_opaque="true">
25 Double-Click Action:
26 </text>
27
28 <combo_box name="double_click_action"
29 bottom_delta="-25" left_delta="30" height="18" width="160"
30 follows="left|top" mouse_opaque="true">
31 <combo_item name="None" value="None">
32 No action
33 </combo_item>
34 <combo_item name="Go" value="Go">
35 Autopilot
36 </combo_item>
37 </combo_box>
38
39 <text name="go_action_label"
40 bottom_delta="-25" left_delta="0" height="18" width="200"
41 follows="left|top" font="SansSerifSmall" mouse_opaque="true">
42 Autopilot:
43 </text>
44
45 <combo_box name="go_action"
46 bottom_delta="0" left_delta="70" height="18" width="90"
47 follows="left|top" mouse_opaque="true">
48 <combo_item name="Move" value="Move">
49 Move
50 </combo_item>
51 <combo_item name="Teleport" value="Teleport">
52 Teleport
53 </combo_item>
54 </combo_box>
55
56
57 <view_border bevel_style="none" border_thickness="1" bottom_delta="-15" follows="left|top"
58 height="1" left="55" name="border" width="380" />
59
60
5 <text type="string" length="1" bg_visible="false" border_drop_shadow_visible="false" border_visible="false" 61 <text type="string" length="1" bg_visible="false" border_drop_shadow_visible="false" border_visible="false"
6 bottom="-20" drop_shadow_visible="true" enabled="true" follows="left|top" 62 bottom_delta="-20" drop_shadow_visible="true" enabled="true" follows="left|top" font-style="BOLD|SHADOW"
7 font="SansSerifSmall" h_pad="0" halign="left" height="10" left="10" 63 font="SansSerifSmall" h_pad="0" halign="left" height="10" left="20"
8 mouse_opaque="true" name=" Mouselook Options:" v_pad="0" width="266"> 64 mouse_opaque="true" name=" Mouselook Options:" v_pad="0" width="266">
9 Mouselook: 65 Mouselook:
10 </text> 66 </text>
11 <text type="string" length="1" bg_visible="false" border_drop_shadow_visible="false" border_visible="false" 67 <text type="string" length="1" bg_visible="false" border_drop_shadow_visible="false" border_visible="false"
12 bottom="-20" drop_shadow_visible="true" enabled="true" follows="left|top" 68 bottom_delta="-20" drop_shadow_visible="true" enabled="true" follows="left|top"
13 font="SansSerifSmall" h_pad="0" halign="left" height="10" left="148" 69 font="SansSerifSmall" h_pad="0" halign="left" height="10" left="50"
14 mouse_opaque="true" name=" Mouse Sensitivity:" v_pad="0" width="128"> 70 mouse_opaque="true" name=" Mouse Sensitivity:" v_pad="0" width="128">
15 Mouse sensitivity: 71 Mouse sensitivity:
16 </text> 72 </text>
17 <slider_bar bottom="-26" enabled="true" follows="left|top" 73 <slider_bar bottom_delta="-6" enabled="true" follows="left|top"
18 height="16" increment="0.25" initial_val="2" left="276" max_val="15" 74 height="16" increment="0.25" initial_val="2" left_delta="98" max_val="15"
19 min_val="0" mouse_opaque="true" name="mouse_sensitivity" width="128" /> 75 min_val="0" mouse_opaque="true" name="mouse_sensitivity" width="88" />
20 <check_box bottom_delta="-18" enabled="true" follows="left|top" 76 <check_box bottom_delta="0" enabled="true" follows="left|top"
21 font="SansSerifSmall" height="16" label="Invert mouse" left="148" 77 font="SansSerifSmall" height="16" label="Invert mouse" left="270"
22 mouse_opaque="true" name="invert_mouse" radio_style="false" width="128" /> 78 mouse_opaque="true" name="invert_mouse" radio_style="false" width="128" />
23 <check_box bottom_delta="-18" enabled="true" 79 <check_box bottom_delta="-20" enabled="true"
24 follows="left|top" font="SansSerifSmall" height="16" initial_value="false" 80 follows="left|top" font="SansSerifSmall" height="16" initial_value="false"
25 label="Show avatar in mouselook" left="148" mouse_opaque="true" name="first_person_avatar_visible" 81 label="Show my avatar in mouselook" left_delta="0" mouse_opaque="true" name="first_person_avatar_visible"
26 radio_style="false" width="256" /> 82 radio_style="false" width="256" />
83
84
85 <view_border bevel_style="none" border_thickness="1" bottom_delta="-15" follows="left|top"
86 height="1" left="55" name="border" width="380" />
87
88
27 <text type="string" length="1" bg_visible="false" border_drop_shadow_visible="false" border_visible="false" 89 <text type="string" length="1" bg_visible="false" border_drop_shadow_visible="false" border_visible="false"
28 bottom_delta="-30" drop_shadow_visible="true" enabled="true" follows="left|top" 90 bottom_delta="-20" drop_shadow_visible="true" enabled="true" follows="left|top"
29 font="SansSerifSmall" h_pad="0" halign="left" height="10" left="10" 91 font="SansSerifSmall" h_pad="0" halign="left" height="10" left="20" font-style="BOLD|SHADOW"
30 mouse_opaque="true" name=" Auto Fly Options:" v_pad="0" width="266"> 92 mouse_opaque="true" name="text2" v_pad="0" width="128">
31 Auto-Fly: 93 Joystick:
32 </text> 94 </text>
33 <check_box bottom_delta="-6" enabled="true" follows="left|top" 95 <button bottom_delta="-25" follows="left|top" font="SansSerifSmall" height="20"
34 font="SansSerifSmall" height="16" label="Fly/land on holding up/down" 96 label="Joystick Setup" left="50" mouse_opaque="true"
35 left="148" mouse_opaque="true" name="automatic_fly" radio_style="false" 97 name="joystick_setup_button" width="160" />
36 width="178" /> 98
99
100 <view_border bevel_style="none" border_thickness="1" bottom_delta="-15" follows="left|top"
101 height="1" left="55" name="border" width="380" />
102
103
37 <text type="string" length="1" bg_visible="false" border_drop_shadow_visible="false" border_visible="false" 104 <text type="string" length="1" bg_visible="false" border_drop_shadow_visible="false" border_visible="false"
38 bottom_delta="-30" drop_shadow_visible="true" enabled="true" follows="left|top" 105 bottom_delta="-20" drop_shadow_visible="true" enabled="true" follows="left|top" font-style="BOLD|SHADOW"
39 font="SansSerifSmall" h_pad="0" halign="left" height="10" left="10" 106 font="SansSerifSmall" h_pad="0" halign="left" height="10" left="20"
40 mouse_opaque="true" name=" Camera Options:" v_pad="0" width="266"> 107 mouse_opaque="true" name="Camera Options:" v_pad="0" width="266">
41 Default Camera: 108 Camera:
42 </text> 109 </text>
110 <check_box bottom_delta="-25" enabled="true"
111 follows="left|top" font="SansSerifSmall" height="16" initial_value="false"
112 label="Automatic edit camera movement" left="50" mouse_opaque="true"
113 name="edit_camera_movement" radio_style="false"
114 tool_tip="Use automatic camera positioning when entering and exiting edit mode"
115 width="201" />
116 <check_box bottom_delta="-20" enabled="true"
117 follows="left|top" font="SansSerifSmall" height="16" initial_value="false"
118 label="Automatic appearance camera movement" left_delta="0" mouse_opaque="true"
119 name="appearance_camera_movement" radio_style="false"
120 tool_tip="Use automatic camera positioning while in edit mode" width="242" />
121 <check_box bottom_delta="-20" enabled="true"
122 follows="left|top" font="SansSerifSmall" height="16" initial_value="false"
123 label="Disable camera constraints" left_delta="0" mouse_opaque="true"
124 name="Disable camera constraints" radio_style="false"
125 tool_tip="Disables camera limits such as distance and terrain" width="242" />
126 <check_box bottom_delta="-20" enabled="true"
127 follows="left|top" font="SansSerifSmall" height="16" initial_value="false"
128 label="Disable minimum zoom distance" left_delta="30" mouse_opaque="true"
129 name="disable_min_zoom_check" radio_style="false"
130 tool_tip="Disables minimum zoom distance for prims and avatars" width="242" />
131
132
43 <text type="string" length="1" bg_visible="false" border_drop_shadow_visible="false" border_visible="false" 133 <text type="string" length="1" bg_visible="false" border_drop_shadow_visible="false" border_visible="false"
44 bottom_delta="0" drop_shadow_visible="true" enabled="true" follows="left|top" 134 bottom_delta="-30" drop_shadow_visible="true" enabled="true" follows="left|top"
45 font="SansSerifSmall" h_pad="0" halign="left" height="10" left="148" 135 font="SansSerifSmall" h_pad="0" halign="left" height="10" left="50"
46 mouse_opaque="true" name="camera_fov_label" v_pad="0" width="128"> 136 mouse_opaque="true" name="camera_fov_label" v_pad="0" width="128">
47 Camera view angle: 137 View angle:
48 </text> 138 </text>
49 <slider bottom_delta="-6" can_edit_text="true" 139 <slider bottom_delta="-6" can_edit_text="true"
50 decimal_digits="2" enabled="true" follows="left|top" width="128" height="16" 140 decimal_digits="2" enabled="true" follows="left|top" width="100" height="16"
51 increment=".025" initial_val="1.57" left="276" max_val="2.97" min_val=".17" 141 increment=".025" initial_val="1.57" left_delta="98" max_val="2.97" min_val=".17"
52 mouse_opaque="true" name="camera_fov" show_text="false" value="60" /> 142 mouse_opaque="true" name="camera_fov" show_text="false" value="60" />
143
53 <text type="string" length="1" bg_visible="false" border_drop_shadow_visible="false" border_visible="false" 144 <text type="string" length="1" bg_visible="false" border_drop_shadow_visible="false" border_visible="false"
54 bottom_delta="-18" drop_shadow_visible="true" enabled="true" follows="left|top" 145 bottom_delta="-18" drop_shadow_visible="true" enabled="true" follows="left|top"
55 font="SansSerifSmall" h_pad="0" halign="left" height="10" left="148" 146 font="SansSerifSmall" h_pad="0" halign="left" height="10" left="50"
56 mouse_opaque="true" name="Camera Follow Distance:" v_pad="0" width="128"> 147 mouse_opaque="true" name="Camera Follow Distance:" v_pad="0" width="128">
57 Camera follow distance: 148 Follow distance:
58 </text> 149 </text>
59 <slider bottom_delta="-6" can_edit_text="true" control_name="CameraOffsetScale" 150 <slider bottom_delta="-6" can_edit_text="true" control_name="CameraOffsetScale"
60 decimal_digits="2" enabled="true" follows="left|top" height="16" 151 decimal_digits="2" enabled="true" follows="left|top" height="16"
61 increment=".025" initial_val="1" left="276" min_val=".5" max_val="3" 152 increment=".025" initial_val="1" left_delta="98" min_val=".5" max_val="3"
62 mouse_opaque="true" name="camera_offset_scale" show_text="false" value="1" 153 mouse_opaque="true" name="camera_offset_scale" show_text="false" value="1"
63 width="128" /> 154 width="100" />
155
64 <text type="string" length="1" bg_visible="false" border_drop_shadow_visible="false" border_visible="false" 156 <text type="string" length="1" bg_visible="false" border_drop_shadow_visible="false" border_visible="false"
65 bottom_delta="-18" drop_shadow_visible="true" enabled="true" follows="left|top" 157 bottom_delta="-18" drop_shadow_visible="true" enabled="true" follows="left|top"
66 font="SansSerifSmall" h_pad="0" halign="left" height="10" left="148" 158 font="SansSerifSmall" h_pad="0" halign="left" height="10" left="50"
67 mouse_opaque="true" name="Camera Transition Time:" v_pad="0" width="128"> 159 mouse_opaque="true" name="Camera Transition Time:" v_pad="0" width="128">
68 Camera transition time: 160 Transition time:
69 </text> 161 </text>
70 <slider bottom_delta="-6" can_edit_text="true" decimal_digits="1" 162 <slider bottom_delta="-6" can_edit_text="true" decimal_digits="1"
71 enabled="true" follows="left|top" height="16" increment="0.1" 163 enabled="true" follows="left|top" height="16" increment="0.1"
72 initial_val="0.4" left="276" max_val="4" min_val="0" mouse_opaque="true" 164 initial_val="0.4" left_delta="98" max_val="4" min_val="0" mouse_opaque="true"
73 name="zoom_time" show_text="false" value="2" width="128" /> 165 name="zoom_time" show_text="false" value="2" width="100" />
166
74 <text type="string" length="1" bg_visible="false" border_drop_shadow_visible="false" border_visible="false" 167 <text type="string" length="1" bg_visible="false" border_drop_shadow_visible="false" border_visible="false"
75 bottom_delta="-18" drop_shadow_visible="true" enabled="true" follows="left|top" 168 bottom_delta="-18" drop_shadow_visible="true" enabled="true" follows="left|top"
76 font="SansSerifSmall" h_pad="0" halign="left" height="10" left="148" 169 font="SansSerifSmall" h_pad="0" halign="left" height="10" left="50"
77 mouse_opaque="true" name="Camera Smoothing:" v_pad="0" width="128"> 170 mouse_opaque="true" name="Camera Smoothing:" v_pad="0" width="128">
78 Camera smoothing: 171 Smoothing:
79 </text> 172 </text>
80 <slider bottom_delta="-6" can_edit_text="true" 173 <slider bottom_delta="-6" can_edit_text="true"
81 decimal_digits="1" enabled="true" follows="left|top" height="16" 174 decimal_digits="1" enabled="true" follows="left|top" height="16"
82 increment="0.1" initial_val="1" left="276" max_val="9" min_val="0" 175 increment="0.1" initial_val="1" left_delta="98" max_val="9" min_val="0"
83 mouse_opaque="true" name="camera_position_smoothing" show_text="false" value="2" 176 mouse_opaque="true" name="camera_position_smoothing" show_text="false" value="2"
84 width="128" /> 177 width="100" />
85 <check_box bottom_delta="-24" enabled="true"
86 follows="left|top" font="SansSerifSmall" height="16" initial_value="false"
87 label="Automatic edit camera movement" left="148" mouse_opaque="true"
88 name="edit_camera_movement" radio_style="false"
89 tool_tip="Use automatic camera positioning when entering and exiting edit mode"
90 width="201" />
91 <check_box bottom_delta="-18" enabled="true"
92 follows="left|top" font="SansSerifSmall" height="16" initial_value="false"
93 label="Automatic appearance camera movement" left="148" mouse_opaque="true"
94 name="appearance_camera_movement" radio_style="false"
95 tool_tip="Use automatic camera positioning while in edit mode" width="242" />
96 <check_box bottom_delta="-18" enabled="true"
97 follows="left|top" font="SansSerifSmall" height="16" initial_value="false"
98 label="Disable camera constraints" left="148" mouse_opaque="true"
99 name="Disable camera constraints" radio_style="false"
100 tool_tip="Disables camera limits such as distance and terrain" width="242" />
101 <check_box bottom_delta="-18" enabled="true"
102 follows="left|top" font="SansSerifSmall" height="16" initial_value="false"
103 label="Disable minimum zoom distance" left="168" mouse_opaque="true"
104 name="disable_min_zoom_check" radio_style="false"
105 tool_tip="Disables minimum zoom distance for prims and avatars" width="242" />
106 <text type="string" length="1" bg_visible="false" border_drop_shadow_visible="false" border_visible="false"
107 bottom_delta="-32" drop_shadow_visible="true" enabled="true" follows="left|top"
108 font="SansSerifSmall" h_pad="0" halign="left" height="12" left="10"
109 mouse_opaque="true" name="text2" v_pad="0" width="128">
110 Joystick:
111 </text>
112 <button bottom_delta="-4" follows="left|top" font="SansSerif" height="20"
113 label="Joystick Setup" left="148" mouse_opaque="true"
114 name="joystick_setup_button" width="155" />
115
116
117 <text name="double_click_action_label"
118 bottom_delta="-35" left="10" height="18" width="200"
119 follows="left|top" font="SansSerifSmall" mouse_opaque="true">
120 Double-Click Action:
121 </text>
122
123 <combo_box name="double_click_action"
124 bottom_delta="0" left_delta="138" height="18" width="150"
125 follows="left|top" mouse_opaque="true">
126 <combo_item name="None" value="None">
127 None
128 </combo_item>
129 <combo_item name="Go" value="Go">
130 Autopilot
131 </combo_item>
132 </combo_box>
133
134 178
135 <text name="go_action_label"
136 bottom_delta="-20" left="10" height="18" width="200"
137 follows="left|top" font="SansSerifSmall" mouse_opaque="true">
138 Autopilot Style:
139 </text>
140
141 <combo_box name="go_action"
142 bottom_delta="0" left_delta="138" height="18" width="150"
143 follows="left|top" mouse_opaque="true">
144 <combo_item name="Move" value="Move">
145 Move
146 </combo_item>
147 <combo_item name="Teleport" value="Teleport">
148 Teleport
149 </combo_item>
150 </combo_box>
151 179
152</panel> 180</panel>
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 7d6bb4a..976e7a8 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
@@ -1,178 +1,434 @@
1<?xml version="1.0" encoding="utf-8" standalone="yes" ?> 1<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
2
3<!--
4ALL PREFS OPTIONS START AT 20px FROM LEFT, 10px FROM TOP
5
6USE bottom_delta BETWEEN OPTIONS IN A GROUP
7
8USE LINES BETWEEN GROUPS
9
10USE font-style="BOLD|SHADOW" FOR GROUP LABELS
11
12GROUP LABEL CONTENTS ARE INDENTED 30px
13
14USE left="270" FOR TABBING OPTIONS
15-->
16
2<panel border="true" bottom="-409" enabled="true" follows="left|top|right|bottom" 17<panel border="true" bottom="-409" enabled="true" follows="left|top|right|bottom"
3 height="408" label="Network" left="102" mouse_opaque="true" name="network" 18 height="408" label="Network" left="102" mouse_opaque="true" name="network"
4 width="517"> 19 width="517">
5 <text type="string" length="1" bg_visible="false" border_drop_shadow_visible="false" border_visible="false" 20
6 bottom="-20" drop_shadow_visible="true" enabled="true" follows="left|top" 21
7 font="SansSerifSmall" h_pad="0" halign="left" height="10" left="12" 22 <tab_container bottom="0" height="450" left="0" mouse_opaque="false"
8 mouse_opaque="false" name="text_box" v_pad="0" width="200"> 23 name="networktab2" tab_min_width="50" tab_position="top" width="495" bg_opaque_color="0,0,0,0.0">
9 Maximum bandwidth: 24
10 </text> 25
11 <slider bottom_delta="-25" can_edit_text="true" control_name="ThrottleBandwidthKBPS" 26 <!-- BANDWIDTH SETTINGS PANEL -->
12 decimal_digits="0" enabled="true" follows="left|top" height="15" 27
13 increment="10" initial_val="1000" left_delta="0" max_val="5000" min_val="50" 28
14 mouse_opaque="true" name="max_bandwidth" show_text="true" value="1000" 29 <panel border="true" bottom="-409" enabled="true" follows="left|top|right|bottom"
15 width="180" /> 30 height="408" label="Performance" left="102" mouse_opaque="true"
16 <text type="string" length="1" bg_visible="false" border_drop_shadow_visible="false" border_visible="false" 31 name="bandwidth_panel" width="517">
17 bottom_delta="4" drop_shadow_visible="true" enabled="true" 32
18 follows="left|top" font="SansSerifSmall" h_pad="0" halign="left" 33
19 height="10" left_delta="186" mouse_opaque="false" name="text_box2" 34 <text type="string" length="1" bg_visible="false" border_drop_shadow_visible="false" border_visible="false"
20 v_pad="0" width="200"> 35 bottom="-20" drop_shadow_visible="true" enabled="true" follows="left|top" font-style="BOLD|SHADOW"
21 kbps (kilobits per second) 36 font="SansSerifSmall" h_pad="0" halign="left" height="10" left="20"
22 </text> 37 mouse_opaque="false" name="text_box" v_pad="0" width="200">
23 <text type="string" length="1" bg_visible="false" border_drop_shadow_visible="false" border_visible="false" 38 Maximum Viewer Bandwidth:
24 bottom_delta="-25" drop_shadow_visible="true" enabled="true" 39 </text>
25 follows="left|top" font="SansSerifSmall" h_pad="0" halign="left" 40 <text type="string" length="1" bg_visible="false" border_drop_shadow_visible="false" border_visible="false"
26 height="10" left="12" mouse_opaque="false" name="cache_size_label_l" 41 bottom_delta="-25" drop_shadow_visible="true" enabled="true"
27 v_pad="0" width="200"> 42 follows="left|top" font="SansSerifSmall" h_pad="0" halign="left"
28 Disk cache size (MB): 43 height="10" left="50" mouse_opaque="false" name="cache_size_label_l"
29 </text> 44 v_pad="0" width="200">
30 <slider bottom_delta="-25" can_edit_text="true" control_name="CacheSize" 45 Speed:
31 decimal_digits="0" enabled="true" follows="left|top" height="15" 46 </text>
32 increment="10" initial_val="50" left_delta="0" max_val="1000" min_val="10" 47 <slider bottom_delta="-4" can_edit_text="true" control_name="ThrottleBandwidthKBPS"
33 mouse_opaque="true" name="cache_size" show_text="true" width="180" /> 48 decimal_digits="0" enabled="true" follows="left|top" height="15"
34 <button bottom_delta="-4" enabled="true" follows="left|top" 49 increment="10" initial_val="1000" left_delta="50" max_val="5000" min_val="50"
35 font="SansSerif" halign="center" height="22" label="Clear Disk Cache" left="340" 50 mouse_opaque="true" name="max_bandwidth" show_text="true" value="1000"
36 left_delta="186" mouse_opaque="true" name="clear_cache" scale_image="true" 51 width="160" />
37 width="150" /> 52 <text type="string" length="1" bg_visible="false" border_drop_shadow_visible="false" border_visible="false"
38 <text type="string" length="1" bg_visible="false" border_drop_shadow_visible="false" border_visible="false" 53 bottom_delta="4" drop_shadow_visible="true" enabled="true"
39 bottom_delta="-17" drop_shadow_visible="true" enabled="true" 54 follows="left|top" font="SansSerifSmall" h_pad="0" halign="left"
40 follows="left|top" font="SansSerifSmall" h_pad="0" halign="left" 55 height="10" left_delta="166" mouse_opaque="false" name="text_box2"
41 height="10" left="12" mouse_opaque="false" name="cache_location_label" 56 v_pad="0" width="200">
42 v_pad="0" width="200"> 57 kbps (kilobits per second)
43 Disk cache location: 58 </text>
44 </text> 59
45 <line_editor bevel_style="in" border_style="line" border_thickness="1" bottom_delta="-28" 60
46 enabled="false" follows="left|top" font="SansSerif" 61 <view_border bevel_style="none" border_thickness="1" bottom_delta="-15" follows="left|top"
47 handle_edit_keys_directly="true" height="20" left_delta="0" 62 height="1" left="55" name="border" width="380" />
48 max_length="4096" mouse_opaque="true" name="cache_location" 63
49 select_all_on_focus_received="false" width="470" word_wrap="false" /> 64
50 <button bottom_delta="-25" enabled="true" follows="left|top" font="SansSerif" 65 <text type="string" length="1" bg_visible="false" border_drop_shadow_visible="false" border_visible="false"
51 halign="center" height="22" label="Set" label_selected="Set" left_delta="0" 66 bottom_delta="-20" drop_shadow_visible="true" enabled="true" follows="left|top" font-style="BOLD|SHADOW"
52 mouse_opaque="true" name="set_cache" scale_image="true" width="100" /> 67 font="SansSerifSmall" h_pad="0" halign="left" height="10" left="20"
53 <button bottom="-105" bottom_delta="0" enabled="true" follows="left|top" 68 mouse_opaque="false" name="text_box" v_pad="0" width="200">
54 font="SansSerif" halign="center" height="22" label="Reset" 69 Texture Fetching:
55 label_selected="Set" left_delta="103" mouse_opaque="true" 70 </text>
56 name="reset_cache" scale_image="true" width="100" /> 71
57 <check_box bottom="-173" bottom_delta="-25" control_name="ConnectionPortEnabled" 72 <check_box bottom_delta="-25" enabled="true" follows="left|top"
58 enabled="true" follows="left|top" font="SansSerifSmall" height="16" 73 font="SansSerifSmall" height="16" initial_value="false"
59 initial_value="false" label="Enable custom outgoing port" left="12" 74 label="Use HTTP texture fetching (experimental)" left="50" mouse_opaque="true"
60 mouse_opaque="true" name="connection_port_enabled" radio_style="false" 75 name="http_texture_check" radio_style="false" width="217" />
61 tool_tip="Enables custom port for outgoing connections" 76
62 width="256" /> 77 <check_box bottom_delta="-25" enabled="true" follows="left|top"
63 <spinner bottom="-193" bottom_delta="-20" control_name="ConnectionPort" 78 font="SansSerifSmall" height="16" initial_value="false"
64 decimal_digits="0" enabled="true" follows="left|top" height="16" 79 label="Increase rez speed via draw distance stepping" left_delta="0" mouse_opaque="true"
65 increment="1" initial_val="13000" label="Port number:" label_width="75" 80 name="speed_rez_check" radio_style="false" width="217" />
66 left_delta="20" max_val="13050" min_val="13000" mouse_opaque="true" 81 <spinner bottom_delta="-20" decimal_digits="0"
67 name="connection_port" width="140" /> 82 tool_tip="Interval in seconds between each draw distance increment"
68 83 follows="left|top" height="16" increment="1" initial_val="12"
69 <!-- XMLRPC PROXY --> 84 label="Step interval every:" label_width="105" left_delta="30" max_val="20"
70 85 min_val="1" mouse_opaque="true" name="speed_rez_interval_spinner" width="145" />
71 <check_box bottom_delta="-25" enabled="true" 86 <text bottom_delta="0" follows="top|left" height="15" left_delta="150"
72 follows="left|top" font="SansSerifSmall" height="16" initial_value="false" 87 name="speed_rez_seconds_text" width="115">
73 label="Enable XMLRPC proxy (Login, Land, and Money purchases)" left="15" mouse_opaque="true" 88 seconds
74 name="xmlrpc_proxy_enabled" radio_style="false" width="300" /> 89 </text>
75 <text type="string" length="1" bg_visible="false" border_drop_shadow_visible="false" border_visible="false" 90
76 bottom_delta="-18" drop_shadow_visible="true" enabled="true" 91
77 follows="left|top" font="SansSerifSmall" h_pad="0" halign="left" 92 <view_border bevel_style="none" border_thickness="1" bottom_delta="-15" follows="left|top"
78 height="10" left_delta="20" mouse_opaque="false" name="xmlrpc_proxy_text_label" 93 height="1" left="55" name="border" width="380" />
79 v_pad="0" width="128"> 94
80 Address: 95
81 </text> 96 <text type="string" length="1" bg_visible="false" border_drop_shadow_visible="false" border_visible="false"
82 <line_editor bottom_delta="-8" enabled="true" follows="left|top" font="SansSerif" 97 bottom_delta="-20" drop_shadow_visible="true" enabled="true" follows="left|top" font-style="BOLD|SHADOW"
83 height="20" left="112" name="xmlrpc_proxy_editor" 98 font="SansSerifSmall" h_pad="0" halign="left" height="10" left="20"
84 tool_tip="The name or IP address of the proxy you would like to use" 99 mouse_opaque="false" name="text_box" v_pad="0" width="200">
85 width="200" /> 100 Disk Cache:
86 <spinner bottom_delta="-20" decimal_digits="0" 101 </text>
87 enabled="true" follows="left|top" height="16" increment="1" 102
88 initial_val="80" label="Port number:" label_width="75" left="35" 103 <text type="string" length="1" bg_visible="false" border_drop_shadow_visible="false" border_visible="false"
89 max_val="65535" min_val="10" mouse_opaque="true" name="xmlrpc_proxy_port" 104 bottom_delta="-25" drop_shadow_visible="true" enabled="true"
90 width="140" /> 105 follows="left|top" font="SansSerifSmall" h_pad="0" halign="left"
91 106 height="10" left="50" mouse_opaque="false" name="cache_size_label_l"
92 <!-- SOCKS 5 PROXY --> 107 v_pad="0" width="200">
93 108 Size:
94 <check_box bottom_delta="-24" enabled="true" 109 </text>
95 follows="left|top" font="SansSerifSmall" height="16" initial_value="false" 110 <slider bottom_delta="-4" can_edit_text="true" control_name="CacheSize"
96 label="Enable SOCKS 5 proxy" left="15" mouse_opaque="true" 111 decimal_digits="0" enabled="true" follows="left|top" height="15"
97 name="socks5_proxy_enabled" radio_style="false" width="256" /> 112 increment="10" initial_val="50" left_delta="50" max_val="1000" min_val="10"
98 <text type="string" length="1" bg_visible="false" border_drop_shadow_visible="false" border_visible="false" 113 mouse_opaque="true" name="disk_cache_size" show_text="true" width="160" />
99 bottom_delta="-18" drop_shadow_visible="true" enabled="true" 114 <text type="string" length="1" bg_visible="false" border_drop_shadow_visible="false" border_visible="false"
100 follows="left|top" font="SansSerifSmall" h_pad="0" halign="left" 115 bottom_delta="4" drop_shadow_visible="true" enabled="true"
101 height="10" left="35" mouse_opaque="false" name="socks5_host_label" 116 follows="left|top" font="SansSerifSmall" h_pad="0" halign="left"
102 v_pad="0" width="128"> 117 height="10" left_delta="166" mouse_opaque="false" name="cache_size_label_l"
103 SOCKS 5 host: 118 v_pad="0" width="200">
104 </text> 119 megabytes
105 <line_editor bottom_delta="-6" enabled="true" follows="left|top" font="SansSerif" 120 </text>
106 height="20" left="113" name="socks5_proxy_host" 121
107 tool_tip="The name or IP address of the SOCKS5 proxy you would like to use" 122 <button bottom_delta="-30" enabled="true" follows="left|top"
108 width="200" /> 123 font="SansSerifSmall" halign="center" height="20" label="Clear Disk Cache"
109 <spinner bottom_delta="-20" decimal_digits="0" 124 left="50" mouse_opaque="true" name="clear_disk_cache" scale_image="true"
110 enabled="true" follows="left|top" height="16" increment="1" 125 width="160" />
111 initial_val="80" label="Port number:" label_width="75" left="35" 126
112 max_val="65535" min_val="10" mouse_opaque="true" name="socks5_proxy_port" 127 <text type="string" length="1" bg_visible="false" border_drop_shadow_visible="false" border_visible="false"
113 width="140" /> 128 bottom_delta="-25" drop_shadow_visible="true" enabled="true"
114 <text type="string" length="1" bg_visible="false" border_drop_shadow_visible="false" border_visible="false" 129 follows="left|top" font="SansSerifSmall" h_pad="0" halign="left"
115 bottom_delta="-20" drop_shadow_visible="true" enabled="true" 130 height="10" left="50" mouse_opaque="false" name="cache_location_label"
116 follows="left|top" font="SansSerifSmall" h_pad="0" halign="left" 131 v_pad="0" width="200">
117 height="10" left="35" mouse_opaque="false" name="socks5_auth_label" 132 Location:
118 v_pad="0" width="128"> 133 </text>
119 SOCKS 5 authentication: 134 <line_editor bevel_style="in" border_style="line" border_thickness="1" bottom_delta="-25"
120 </text> 135 enabled="false" follows="left|top" font="SansSerif"
121 <radio_group bottom_delta="-6" draw_border="false" follows="left|top" height="20" left="35" 136 handle_edit_keys_directly="true" height="20" left_delta="0"
122 name="socks5_auth" width="420"> 137 max_length="4096" mouse_opaque="true" name="disk_cache_location"
123 <radio_item bottom="0" height="20" left_delta="80" name="None" width="50" 138 select_all_on_focus_received="false" width="395" word_wrap="false" />
124 tool_tip="No authentication"> 139 <button bottom_delta="-25" enabled="true" follows="left|top" font="SansSerifSmall"
125 None 140 halign="center" height="20" label="Change Location" left_delta="0"
126 </radio_item> 141 mouse_opaque="true" name="set_disk_cache" scale_image="true" width="160" />
127 <radio_item bottom="0" height="20" left_delta="50" name="UserPass" width="50" 142 <button bottom_delta="0" enabled="true" follows="left|top"
128 tool_tip="Username / Password authentication"> 143 font="SansSerifSmall" halign="center" height="20" label="Reset to Default"
129 Username / Password 144 left_delta="165" mouse_opaque="true"
130 </radio_item> 145 name="reset_disk_cache" scale_image="true" width="160" />
131 </radio_group> 146
132 <text type="string" length="1" bg_visible="false" border_drop_shadow_visible="false" border_visible="false" 147
133 bottom_delta="-16" drop_shadow_visible="true" enabled="true" 148 </panel>
134 follows="left|top" font="SansSerifSmall" h_pad="0" halign="left" 149
135 height="10" left="122" mouse_opaque="false" name="socks5_username_label" 150
136 v_pad="0" width="128"> 151 <!-- PROXY SETTINGS PANEL -->
137 Username: 152
138 </text> 153
139 <line_editor bottom_delta="-8" enabled="true" follows="left|top" font="SansSerif" 154 <panel border="true" bottom="-580" follows="left|top|right|bottom" height="525" label="Proxy Settings"
140 height="20" left="200" name="socks5_proxy_username" 155 left="1" mouse_opaque="true" name="proxies" width="418">
141 tool_tip="Username for the Socks5 proxy" 156
142 width="200" /> 157
143 158 <!-- XMLRPC PROXY -->
144 <text type="string" length="1" bg_visible="false" border_drop_shadow_visible="false" border_visible="false" 159
145 bottom_delta="-14" drop_shadow_visible="true" enabled="true" 160
146 follows="left|top" font="SansSerifSmall" h_pad="0" halign="left" 161 <text type="string" length="1" bg_visible="false" border_drop_shadow_visible="false" border_visible="false"
147 height="10" left="122" mouse_opaque="false" name="socks5_password_label" 162 bottom_delta="-20" drop_shadow_visible="true" enabled="true" follows="left|top" font-style="BOLD|SHADOW"
148 v_pad="0" width="128"> 163 font="SansSerifSmall" h_pad="0" halign="left" height="10" left="20"
149 Password: 164 mouse_opaque="false" name="text_box" v_pad="0" width="200">
150 </text> 165 XMLRPC:
151 <line_editor bottom_delta="-8" enabled="true" follows="left|top" font="SansSerif" 166 </text>
152 height="20" left="200" name="socks5_proxy_password" 167
153 tool_tip="Password for the Socks5 proxy" 168 <check_box bottom_delta="-25" enabled="true"
154 width="200" /> 169 follows="left|top" font="SansSerifSmall" height="16" initial_value="false"
155 170 label="Enable XMLRPC proxy (Login, Land, and Money purchases)" left="50" mouse_opaque="true"
156 <text type="string" length="1" bg_visible="false" border_drop_shadow_visible="false" border_visible="false" 171 name="xmlrpc_proxy_enabled" radio_style="false" width="300" />
157 bottom_delta="-20" drop_shadow_visible="true" enabled="true" 172
158 follows="left|top" font="SansSerifSmall" h_pad="0" halign="left" 173 <text type="string" length="1" bg_visible="false" border_drop_shadow_visible="false" border_visible="false"
159 height="10" left="35" mouse_opaque="false" name="http_proxy_label" 174 bottom_delta="-18" drop_shadow_visible="true" enabled="true"
160 v_pad="0" width="128"> 175 follows="left|top" font="SansSerifSmall" h_pad="0" halign="left"
161 HTTP proxy: 176 height="10" left_delta="30" mouse_opaque="false" name="xmlrpc_proxy_text_label"
162 </text> 177 v_pad="0" width="128">
163 <radio_group bottom_delta="-8" draw_border="false" follows="left|top" height="20" left="35" 178 Address:
164 name="socks5_http_proxy_type" width="380" > 179 </text>
165 <radio_item height="20" bottom="0" left="100" name="None" width="50" 180 <line_editor bottom_delta="-8" enabled="true" follows="left|top" font="SansSerif"
166 tool_tip="No HTTP proxy"> 181 height="20" left_delta="50" name="xmlrpc_proxy_editor"
167 None 182 tool_tip="The name or IP address of the proxy you would like to use"
168 </radio_item> 183 width="200" />
169 <radio_item height="20" bottom="0" left="170" name="Socks" width="50" 184 <spinner bottom_delta="-20" decimal_digits="0"
170 tool_tip="Use Socks for HTTP proxy"> 185 enabled="true" follows="left|top" height="16" increment="1"
171 SOCKS 5 186 initial_val="80" label="Port number:" label_width="75" left_delta="-50"
172 </radio_item> 187 max_val="65535" min_val="10" mouse_opaque="true" name="xmlrpc_proxy_port"
173 <radio_item height="20" bottom="0" left="250" name="Web" width="50" 188 width="140" />
174 tool_tip="Use web proxy for HTTP proxy"> 189
175 Web 190
176 </radio_item> 191 <view_border bevel_style="none" border_thickness="1" bottom_delta="-15" follows="left|top"
177 </radio_group> 192 height="1" left="55" name="border" width="380" />
193
194
195 <!-- SOCKS 5 PROXY -->
196
197
198 <text type="string" length="1" bg_visible="false" border_drop_shadow_visible="false" border_visible="false"
199 bottom_delta="-20" drop_shadow_visible="true" enabled="true" follows="left|top" font-style="BOLD|SHADOW"
200 font="SansSerifSmall" h_pad="0" halign="left" height="10" left="20"
201 mouse_opaque="false" name="text_box" v_pad="0" width="200">
202 SOCKS 5:
203 </text>
204
205 <check_box bottom_delta="-25" enabled="true"
206 follows="left|top" font="SansSerifSmall" height="16" initial_value="false"
207 label="Enable SOCKS 5 proxy" left="50" mouse_opaque="true"
208 name="socks5_proxy_enabled" radio_style="false" width="256" />
209
210 <text type="string" length="1" bg_visible="false" border_drop_shadow_visible="false" border_visible="false"
211 bottom_delta="-18" drop_shadow_visible="true" enabled="true"
212 follows="left|top" font="SansSerifSmall" h_pad="0" halign="left"
213 height="10" left_delta="30" mouse_opaque="false" name="socks5_host_label"
214 v_pad="0" width="128">
215 SOCKS 5 host:
216 </text>
217 <line_editor bottom_delta="-6" enabled="true" follows="left|top" font="SansSerif"
218 height="20" left_delta="80" name="socks5_proxy_host"
219 tool_tip="The name or IP address of the SOCKS5 proxy you would like to use"
220 width="200" />
221 <spinner bottom_delta="-20" decimal_digits="0"
222 enabled="true" follows="left|top" height="16" increment="1"
223 initial_val="80" label="Port number:" label_width="78" left_delta="-80"
224 max_val="65535" min_val="10" mouse_opaque="true" name="socks5_proxy_port"
225 width="140" />
226
227 <text type="string" length="1" bg_visible="false" border_drop_shadow_visible="false" border_visible="false"
228 bottom_delta="-20" drop_shadow_visible="true" enabled="true"
229 follows="left|top" font="SansSerifSmall" h_pad="0" halign="left"
230 height="10" left_delta="0" mouse_opaque="false" name="socks5_auth_label"
231 v_pad="0" width="128">
232 SOCKS 5 authentication:
233 </text>
234 <radio_group bottom_delta="-6" draw_border="false" follows="left|top" height="20" left_delta="0"
235 name="socks5_auth" width="420">
236 <radio_item bottom="0" height="20" left_delta="80" name="None" width="50"
237 tool_tip="No authentication">
238 None
239 </radio_item>
240 <radio_item bottom="0" height="20" left_delta="50" name="UserPass" width="50"
241 tool_tip="Username / Password authentication">
242 Username / Password
243 </radio_item>
244 </radio_group>
245
246 <text type="string" length="1" bg_visible="false" border_drop_shadow_visible="false" border_visible="false"
247 bottom_delta="-16" drop_shadow_visible="true" enabled="true"
248 follows="left|top" font="SansSerifSmall" h_pad="0" halign="left"
249 height="10" left="122" mouse_opaque="false" name="socks5_username_label"
250 v_pad="0" width="128">
251 Username:
252 </text>
253 <line_editor bottom_delta="-8" enabled="true" follows="left|top" font="SansSerif"
254 height="20" left="200" name="socks5_proxy_username"
255 tool_tip="Username for the Socks5 proxy"
256 width="200" />
257
258 <text type="string" length="1" bg_visible="false" border_drop_shadow_visible="false" border_visible="false"
259 bottom_delta="-14" drop_shadow_visible="true" enabled="true"
260 follows="left|top" font="SansSerifSmall" h_pad="0" halign="left"
261 height="10" left="122" mouse_opaque="false" name="socks5_password_label"
262 v_pad="0" width="128">
263 Password:
264 </text>
265 <line_editor bottom_delta="-8" enabled="true" follows="left|top" font="SansSerif"
266 height="20" left="200" name="socks5_proxy_password"
267 tool_tip="Password for the Socks5 proxy"
268 width="200" />
269
270
271 <view_border bevel_style="none" border_thickness="1" bottom_delta="-15" follows="left|top"
272 height="1" left="55" name="border" width="380" />
273
274
275 <text type="string" length="1" bg_visible="false" border_drop_shadow_visible="false" border_visible="false"
276 bottom_delta="-20" drop_shadow_visible="true" enabled="true" font-style="BOLD|SHADOW"
277 follows="left|top" font="SansSerifSmall" h_pad="0" halign="left"
278 height="10" left="20" mouse_opaque="false" name="http_proxy_label"
279 v_pad="0" width="128">
280 HTTP Textures Proxy:
281 </text>
282 <radio_group bottom_delta="-25" draw_border="false" follows="left|top" height="20" left="50"
283 name="socks5_http_proxy_type" width="380" >
284 <radio_item height="20" bottom="0" left="50" name="None" width="50"
285 tool_tip="No HTTP proxy">
286 None
287 </radio_item>
288 <radio_item height="20" bottom="0" left="160" name="Socks" width="50"
289 tool_tip="Use Socks for HTTP proxy">
290 SOCKS 5
291 </radio_item>
292 <radio_item height="20" bottom="0" left="270" name="Web" width="50"
293 tool_tip="Use web proxy for HTTP proxy">
294 Web
295 </radio_item>
296 </radio_group>
297
298
299 <view_border bevel_style="none" border_thickness="1" bottom_delta="-15" follows="left|top"
300 height="1" left="55" name="border" width="380" />
301
302
303 <text type="string" length="1" bg_visible="false" border_drop_shadow_visible="false" border_visible="false"
304 bottom_delta="-20" drop_shadow_visible="true" enabled="true" font-style="BOLD|SHADOW"
305 follows="left|top" font="SansSerifSmall" h_pad="0" halign="left"
306 height="10" left="20" mouse_opaque="false" name="port_label"
307 v_pad="0" width="128">
308 Ougoing Connections:
309 </text>
310 <check_box bottom_delta="-25" control_name="ConnectionPortEnabled"
311 enabled="true" follows="left|top" font="SansSerifSmall" height="16"
312 initial_value="false" label="Enable custom outgoing port" left_delta="30"
313 mouse_opaque="true" name="connection_port_enabled" radio_style="false"
314 tool_tip="Enables custom port for outgoing connections"
315 width="256" />
316 <spinner bottom_delta="-20" control_name="ConnectionPort"
317 decimal_digits="0" enabled="true" follows="left|top" height="16"
318 increment="1" initial_val="13000" label="Port number:" label_width="75"
319 left_delta="30" max_val="13050" min_val="13000" mouse_opaque="true"
320 name="connection_port" width="140" />
321
322
323 </panel>
324
325
326 <!-- WEB BROWSER PANEL -->
327
328
329 <panel border="true" bottom="-580" follows="left|top|right|bottom" height="525" label="Web Browser"
330 left="1" mouse_opaque="true" name="web_browser" width="418">
331
332
333 <text type="string" length="1" bg_visible="false" border_drop_shadow_visible="false" border_visible="false"
334 bottom="-20" drop_shadow_visible="true" enabled="true" font-style="BOLD|SHADOW"
335 follows="left|top" font="SansSerifSmall" h_pad="0" halign="left"
336 height="10" left="20" mouse_opaque="false" name="open_links_label"
337 v_pad="0" width="128">
338 Open Links In:
339 </text>
340
341 <radio_group bottom_delta="-45" draw_border="false" follows="top|left" height="40" left="50"
342 name="use_external_browser" width="480">
343 <radio_item bottom="-20" height="20" left="0" name="external" width="480"
344 tool_tip="Use the default system web browser for help, web links, etc. Not recommended if running full screen.">
345 My external browser (Firefox, Safari, Internet Explorer, etc.)
346 </radio_item>
347 <radio_item bottom="-40" height="20" left="0" name="internal" width="480"
348 tool_tip="Use the internal browser for help, web links, etc. This browser opens as a new window inside Second Life.">
349 Imprudence's internal browser
350 </radio_item>
351 </radio_group>
352
353
354 <view_border bevel_style="none" border_thickness="1" bottom_delta="-15" follows="left|top"
355 height="1" left="55" name="border" width="380" />
356
357
358 <text type="string" length="1" bg_visible="false" border_drop_shadow_visible="false" border_visible="false"
359 bottom_delta="-20" drop_shadow_visible="true" enabled="true" font-style="BOLD|SHADOW"
360 follows="left|top" font="SansSerifSmall" h_pad="0" halign="left"
361 height="10" left="20" mouse_opaque="false" name="internal_browser_label"
362 v_pad="0" width="128">
363 Internal Browser:
364 </text>
365
366 <button bottom_delta="-30" enabled="true" follows="left|top" font="SansSerifSmall"
367 halign="center" height="20" label="Clear Internal Browser Cache" left_delta="30"
368 mouse_opaque="true" name="clear_web_cache" scale_image="true" width="320" />
369
370 <check_box bottom_delta="-35" enabled="true" follows="left|top"
371 font="SansSerifSmall" height="16" initial_value="false"
372 label="Accept cookies while using internal browser" left_delta="0" mouse_opaque="true"
373 tool_top="Allows the internal browser to accept cookies from websites"
374 name="cookies_enabled" radio_style="false" width="256" />
375 <button bottom_delta="-25" enabled="true" follows="left|top" font="SansSerifSmall"
376 halign="center" height="20" label="Clear Cookies" left_delta="30"
377 tool_tip="Clear Cookies"
378 mouse_opaque="true" name="clear_ookies" scale_image="true" width="160" />
379
380 <check_box bottom_delta="-35" enabled="true"
381 follows="left|top" font="SansSerifSmall" height="16" initial_value="false"
382 label="Enable proxy for internal browser" left="50" mouse_opaque="true"
383 name="web_proxy_enabled" radio_style="false" width="256" />
384
385 <text type="string" length="1" bg_visible="false" border_drop_shadow_visible="false" border_visible="false"
386 bottom_delta="-18" drop_shadow_visible="true" enabled="true"
387 follows="left|top" font="SansSerifSmall" h_pad="0" halign="left"
388 height="10" left_delta="30" mouse_opaque="false" name="proxy_text_label"
389 v_pad="0" width="128">
390 Address:
391 </text>
392 <line_editor bottom_delta="-8" enabled="true" follows="left|top" font="SansSerif"
393 height="20" left_delta="50" name="web_proxy_editor"
394 tool_tip="The name or IP address of the proxy you would like to use"
395 width="200" />
396 <spinner bottom_delta="-20" decimal_digits="0"
397 enabled="true" follows="left|top" height="16" increment="1"
398 initial_val="80" label="Port number:" label_width="75" left_delta="-50"
399 max_val="12000" min_val="10" mouse_opaque="true" name="web_proxy_port"
400 width="140" />
401
402
403 <view_border bevel_style="none" border_thickness="1" bottom_delta="-15" follows="left|top"
404 height="1" left="55" name="border" width="380" />
405
406
407 <text type="string" length="1" bg_visible="false" border_drop_shadow_visible="false" border_visible="false"
408 bottom_delta="-20" drop_shadow_visible="true" enabled="true" font-style="BOLD|SHADOW"
409 follows="left|top" font="SansSerifSmall" h_pad="0" halign="left"
410 height="10" left="20" mouse_opaque="false" name="search_url_label"
411 v_pad="0" width="200">
412 Custom All (Web) Search URL:
413 </text>
414
415 <line_editor bottom_delta="-25" enabled="true" follows="left|top"
416 font="SansSerifSmall" height="18" left_delta="30" name="world_search_editor"
417 tool_tip="Address of the world search engine you would like to use"
418 width="395" />
419 <button bottom_delta="-22" enabled="true" follows="left|top" font="SansSerifSmall"
420 halign="center" height="20" label="Clear" left_delta="0"
421 tool_tip="clear field"
422 mouse_opaque="true" name="world_search_clear" scale_image="true" width="160" />
423 <button bottom_delta="0" enabled="true" follows="left|top" font="SansSerifSmall"
424 halign="center" height="20" label="Reset to Default" left_delta="165"
425 mouse_opaque="true" name="world_search_reset_default" scale_image="true" width="160" />
426
427
428 </panel>
429
430
431 </tab_container>
432
433
178</panel> 434</panel>
diff --git a/linden/indra/newview/skins/default/xui/en-us/panel_preferences_popups.xml b/linden/indra/newview/skins/default/xui/en-us/panel_preferences_popups.xml
index 2168137..aa3857c 100644
--- a/linden/indra/newview/skins/default/xui/en-us/panel_preferences_popups.xml
+++ b/linden/indra/newview/skins/default/xui/en-us/panel_preferences_popups.xml
@@ -1,47 +1,117 @@
1<?xml version="1.0" encoding="utf-8" standalone="yes" ?> 1<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
2<panel border="true" bottom="0" height="500" label="Popups" left="0" name="popups" 2
3 title="Popups" width="400"> 3<!--
4 <text bottom="-20" follows="top|left" left="15" width="300" name="dont_show_label"> 4ALL PREFS OPTIONS START AT 20px FROM LEFT, 10px FROM TOP
5 Hide These Popups: 5
6 </text> 6USE bottom_delta BETWEEN OPTIONS IN A GROUP
7 <scroll_list follows="top|left" height="88" left="15" name="disabled_popups" width="480" /> 7
8 <button follows="top|left" height="20" label="Enable This Popup" left="15" 8USE LINES BETWEEN GROUPS
9 name="enable_popup" width="175" /> 9
10 <button follows="top|left" height="20" label="Enable All Popups" left="200" 10USE font-style="BOLD|SHADOW" FOR GROUP LABELS
11 name="reset_dialogs_btn" 11
12GROUP LABEL CONTENTS ARE INDENTED 30px
13
14USE left="270" FOR TABBING OPTIONS
15-->
16
17<panel border="true" bottom="-409" height="408" label="Notifications" left="0" name="popups"
18 title="Notifications" width="400">
19
20
21 <text type="string" length="1" bg_visible="false" border_drop_shadow_visible="false" border_visible="false"
22 bottom="-22" drop_shadow_visible="true" enabled="true" follows="left|top"
23 font="SansSerifSmall" h_pad="0" halign="left" height="12" left="20"
24 mouse_opaque="true" name="hidetext" v_pad="0" width="200" font-style="BOLD|SHADOW">
25 Hide These Notifications:
26 </text>
27
28 <scroll_list follows="top|left" height="88" left="50" name="disabled_popups" width="420"/>
29
30 <button follows="top|left" height="20" label="Enable This" left="50" bottom_delta="-22"
31 name="enable_popup" width="160" font="SansSerifSmall" />
32 <button follows="top|left" height="20" label="Enable All" left="270"
33 name="reset_dialogs_btn" font="SansSerifSmall"
12 tool_tip="Enable all of the optional popups and &apos;first time use&apos; notifications." 34 tool_tip="Enable all of the optional popups and &apos;first time use&apos; notifications."
13 width="175" bottom_delta="0" /> 35 width="160" bottom_delta="0" />
14 <text follows="top|left" left="15" width="128" name="show_label" bottom_delta="-24"> 36
15 Show These Popups: 37
16 </text> 38 <text type="string" length="1" bg_visible="false" border_drop_shadow_visible="false" border_visible="false"
17 <scroll_list follows="top|left" height="88" left="15" name="enabled_popups" width="480" /> 39 bottom_delta="-25" drop_shadow_visible="true" enabled="true" follows="left|top"
18 <button bottom_delta="-24" follows="top|left" height="20" 40 font="SansSerifSmall" h_pad="0" halign="left" height="12" left="20"
19 label="Disable All Popups" left="200" 41 mouse_opaque="true" name="showtext" v_pad="0" width="200" font-style="BOLD|SHADOW">
20 name="skip_dialogs_btn" 42 Show These Notifications:
43 </text>
44
45 <scroll_list follows="top|left" height="88" left="50" name="enabled_popups" width="420" />
46
47 <button bottom_delta="-22" follows="top|left" height="20"
48 label="Disable All" left="270"
49 name="skip_dialogs_btn" font="SansSerifSmall"
21 tool_tip="Disable all of the optional popups and &apos;first time use&apos; notifications." 50 tool_tip="Disable all of the optional popups and &apos;first time use&apos; notifications."
22 width="175" /> 51 width="160" />
52
53
54 <view_border bevel_style="none" border_thickness="1" bottom_delta="-15" follows="left|top"
55 height="1" left="55" name="border" width="380" />
56
57
23 <text type="string" length="1" bg_visible="false" border_drop_shadow_visible="false" border_visible="false" 58 <text type="string" length="1" bg_visible="false" border_drop_shadow_visible="false" border_visible="false"
24 bottom_delta="-24" drop_shadow_visible="true" enabled="true" 59 bottom_delta="-20" drop_shadow_visible="true" enabled="true" font-style="BOLD|SHADOW"
25 follows="left|top" font="SansSerifSmall" h_pad="0" halign="left" 60 follows="left|top" font="SansSerifSmall" h_pad="0" halign="left"
26 height="10" left="15" mouse_opaque="false" name="text_box2" v_pad="0" 61 height="10" left="20" mouse_opaque="false" name="text_box2" v_pad="0"
27 width="270"> 62 width="270">
28 Offers of Notecards, Textures and Landmarks: 63 Inventory Offers:
29 </text> 64 </text>
30 <check_box bottom_delta="-25" enabled="true" 65 <check_box bottom_delta="-25" enabled="true"
31 follows="left|top" font="SansSerifSmall" height="16" initial_value="false" 66 follows="left|top" font="SansSerifSmall" height="16" initial_value="false"
32 label="Automatically accept" left="40" mouse_opaque="true" 67 label="Automatically accept" left="50" mouse_opaque="true"
33 name="accept_new_inventory" radio_style="false" width="270" /> 68 name="accept_new_inventory" radio_style="false" width="270" />
34 <check_box bottom_delta="-20" enabled="true" 69 <check_box bottom_delta="-20" enabled="true"
35 follows="left|top" font="SansSerifSmall" height="16" initial_value="true" 70 follows="left|top" font="SansSerifSmall" height="16" initial_value="true"
36 label="Automatically view after accepting" left="40" mouse_opaque="true" 71 label="Automatically view Notecards, Textures and Landmarks after accepting" left_delta="0" mouse_opaque="true"
37 name="show_new_inventory" radio_style="false" width="270" /> 72 name="show_new_inventory" radio_style="false" width="270" />
38 <check_box bottom_delta="-20" enabled="true" 73 <check_box bottom_delta="-20" enabled="true"
39 follows="left|top" font="SansSerifSmall" height="16" initial_value="true" 74 follows="left|top" font="SansSerifSmall" height="16" initial_value="true"
40 label="Automatically show newly accepted objects in inventory" left="40" mouse_opaque="true" 75 label="Automatically show newly accepted objects in inventory" left_delta="0" mouse_opaque="true"
41 name="show_in_inventory" radio_style="false" width="270" /> 76 name="show_in_inventory" radio_style="false" width="270" />
42 <check_box bottom_delta="-30" enabled="true" 77
78
79 <view_border bevel_style="none" border_thickness="1" bottom_delta="-15" follows="left|top"
80 height="1" left="55" name="border" width="380" />
81
82
83 <text type="string" length="1" bg_visible="false" border_drop_shadow_visible="false" border_visible="false"
84 bottom_delta="-20" drop_shadow_visible="true" enabled="true" follows="left|top"
85 font="SansSerifSmall" h_pad="0" halign="left" height="12" left="20" font-style="BOLD|SHADOW"
86 mouse_opaque="true" name="radar_text" v_pad="0" width="128">
87 Chat Notifications:
88 </text>
89 <text type="string" length="1" bg_visible="false" border_drop_shadow_visible="false" border_visible="false"
90 bottom_delta="-16" drop_shadow_visible="true" enabled="true" follows="left|top"
91 font="SansSerifSmall" h_pad="0" halign="left" height="10" left="50"
92 mouse_opaque="true" name="radar_text" v_pad="0" width="128">
93 When an avatar enters:
94 </text>
95 <check_box bottom_delta="-6" enabled="true"
96 follows="left|top" font="SansSerifSmall" height="16" initial_value="false"
97 label="Chat range" left="270"
98 mouse_opaque="true" name="mini_map_notify_chat" radio_style="false"
99 width="256" />
100 <check_box bottom_delta="0" enabled="true"
101 follows="left|top" font="SansSerifSmall" height="16" initial_value="false"
102 label="Current sim" left="390"
103 mouse_opaque="true" name="mini_map_notify_sim" radio_style="false"
104 width="256" />
105
106 <check_box bottom_delta="-20" enabled="true"
107 follows="left|top" font="SansSerifSmall" height="16"
108 initial_value="false" label="When Friends come online" left="50"
109 mouse_opaque="true" name="friends_online_notify_checkbox"
110 radio_style="false" width="256" />
111 <check_box bottom_delta="0" enabled="true"
43 follows="left|top" font="SansSerifSmall" height="16" initial_value="false" 112 follows="left|top" font="SansSerifSmall" height="16" initial_value="false"
44 label="Notify when [CURRENCY] spent or received" left="15" 113 label="When [CURRENCY] spent or received" left="270"
45 mouse_opaque="true" name="notify_money_change_checkbox" radio_style="false" 114 mouse_opaque="true" name="notify_money_change_checkbox" radio_style="false"
46 width="256" /> 115 width="256" />
116
47</panel> 117</panel>
diff --git a/linden/indra/newview/skins/default/xui/en-us/panel_preferences_skins.xml b/linden/indra/newview/skins/default/xui/en-us/panel_preferences_skins.xml
index 58a2989..eb1dc79 100644
--- a/linden/indra/newview/skins/default/xui/en-us/panel_preferences_skins.xml
+++ b/linden/indra/newview/skins/default/xui/en-us/panel_preferences_skins.xml
@@ -1,14 +1,39 @@
1<?xml version="1.0" encoding="utf-8" standalone="yes" ?> 1<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
2
3<!--
4ALL PREFS OPTIONS START AT 20px FROM LEFT, 10px FROM TOP
5
6USE bottom_delta BETWEEN OPTIONS IN A GROUP
7
8USE LINES BETWEEN GROUPS
9
10USE font-style="BOLD|SHADOW" FOR GROUP LABELS
11
12GROUP LABEL CONTENTS ARE INDENTED 30px
13
14USE left="270" FOR TABBING OPTIONS
15-->
16
2<panel border="true" bottom="-409" enabled="true" follows="left|top|right|bottom" 17<panel border="true" bottom="-409" enabled="true" follows="left|top|right|bottom"
3 height="408" label="Skins" left="102" mouse_opaque="true" 18 height="408" label="Skins" left="102" mouse_opaque="true"
4 name="Skins panel" width="517"> 19 name="Skins panel" width="517">
20
21
5 <text type="string" length="1" bg_visible="false" border_drop_shadow_visible="false" border_visible="false" 22 <text type="string" length="1" bg_visible="false" border_drop_shadow_visible="false" border_visible="false"
6 bottom="-22" drop_shadow_visible="true" enabled="true" follows="left|top" 23 bottom="-22" drop_shadow_visible="true" enabled="true" follows="left|top" font-style="BOLD|SHADOW"
7 font="SansSerifSmall" h_pad="0" halign="left" height="12" left="10" 24 font="SansSerifSmall" h_pad="0" halign="left" height="12" left="20"
8 mouse_opaque="true" name="muting_text" v_pad="0" width="500"> 25 mouse_opaque="true" name="muting_text" v_pad="0" width="500">
9 Select a skin (requires restart). (Please see the skin folders for information and credits) 26 Select Skin:
10 </text> 27 </text>
11 <radio_group bottom="0" draw_border="false" follows="top|left" height="380" left="12" 28
29 <text type="string" length="1" bg_visible="false" border_drop_shadow_visible="false" border_visible="false"
30 bottom="-22" drop_shadow_visible="true" enabled="true" follows="left|top"
31 font="SansSerifSmall" h_pad="0" halign="left" height="12" left_delta="80"
32 mouse_opaque="true" name="muting_text" v_pad="0" width="500">
33 (requires restart). See skin folder for credits
34 </text>
35
36 <radio_group bottom="0" draw_border="false" follows="top|left" height="380" left="50"
12 name="skin_selection" width="480"> 37 name="skin_selection" width="480">
13 <radio_item bottom="-20" height="20" left="0" name="default" width="480"> 38 <radio_item bottom="-20" height="20" left="0" name="default" width="480">
14 Default 39 Default
@@ -40,24 +65,24 @@
40 scale_image="true" label="" image_selected="skin_thumbnail_gemini.png" 65 scale_image="true" label="" image_selected="skin_thumbnail_gemini.png"
41 image_hover_selected="skin_thumbnail_gemini.png" image_unselected="skin_thumbnail_gemini.png" 66 image_hover_selected="skin_thumbnail_gemini.png" image_unselected="skin_thumbnail_gemini.png"
42 image_hover_unselected="skin_thumbnail_gemini.png" follows="left|top" /> 67 image_hover_unselected="skin_thumbnail_gemini.png" follows="left|top" />
43 <text name="skin_current_text" 68 <text name="skin_current_text" font-style="BOLD|SHADOW"
44 left="10" bottom="5" halign="left" height="12" 69 left="20" bottom="5" halign="left" height="12"
45 follows="left|bottom" h_pad="0" v_pad="0" 70 follows="left|bottom" h_pad="0" v_pad="0"
46 bg_visible="false" drop_shadow_visible="true" 71 bg_visible="false" drop_shadow_visible="true"
47 border_visible="false" border_drop_shadow_visible="false" 72 border_visible="false" border_drop_shadow_visible="false"
48 font="SansSerif" mouse_opaque="true"> 73 font="SansSerifSmall" mouse_opaque="true">
49 Other Skin Name: 74 Custom Skin Name:
50 </text> 75 </text>
51 <line_editor name="skin_current_edit" 76 <line_editor name="skin_current_edit"
52 bottom_delta="0" left_delta="120" height="20" width="120" 77 bottom_delta="-2" left_delta="110" height="18" width="160"
53 follows="left|bottom" font="SansSerif" 78 follows="left|bottom" font="SansSerif"
54 bevel_style="in" border_style="line" border_thickness="1" 79 bevel_style="in" border_style="line" border_thickness="1"
55 max_length="31" mouse_opaque="true" 80 max_length="31" mouse_opaque="true"
56 handle_edit_keys_directly="true" 81 handle_edit_keys_directly="true"
57 select_all_on_focus_received="true" /> 82 select_all_on_focus_received="true" />
58 <button name="save_skin" label="Save" 83 <button name="save_skin" label="Save"
59 bottom_delta="-2" left_delta="120" height="24" width="90" 84 bottom_delta="-2" left_delta="165" height="20" width="110"
60 follows="left|center" font="SansSerif" halign="center" 85 follows="left|center" font="SansSerifSmall" halign="center"
61 mouse_opaque="true" scale_image="TRUE" /> 86 mouse_opaque="true" scale_image="TRUE" />
62</panel> 87</panel>
63 88
diff --git a/linden/indra/newview/skins/default/xui/en-us/panel_preferences_voice.xml b/linden/indra/newview/skins/default/xui/en-us/panel_preferences_voice.xml
index b4939ca..d9c3f5e 100644
--- a/linden/indra/newview/skins/default/xui/en-us/panel_preferences_voice.xml
+++ b/linden/indra/newview/skins/default/xui/en-us/panel_preferences_voice.xml
@@ -1,20 +1,39 @@
1<?xml version="1.0" encoding="utf-8" standalone="yes" ?> 1<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
2<panel border="true" bottom="-409" enabled="true" follows="left|top|right|bottom" 2
3 height="408" label="Voice" left="102" mouse_opaque="true" name="chat" 3<!--
4ALL PREFS OPTIONS START AT 20px FROM LEFT, 10px FROM TOP
5
6USE bottom_delta BETWEEN OPTIONS IN A GROUP
7
8USE LINES BETWEEN GROUPS
9
10USE font-style="BOLD|SHADOW" FOR GROUP LABELS
11
12GROUP LABEL CONTENTS ARE INDENTED 30px
13
14USE left="270" FOR TABBING OPTIONS
15-->
16
17<panel border="true" bottom="-20" enabled="true" follows="left|top|right|bottom"
18 height="408" label="Voice" left="102" mouse_opaque="true" name="voice_chat"
4 width="517"> 19 width="517">
5 <text_editor type="string" length="1" allow_html="false" bg_readonly_color="0 0 0 0" bottom_delta="-26" 20
6 embedded_items="false" enabled="false" follows="left|top" 21
7 font="SansSerifSmall" height="20" hide_border="true" hide_scrollbar="true" 22 <text_editor type="string" length="1" allow_html="false" bg_readonly_color="0 0 0 0" bottom="-30"
8 left_delta="8" max_length="65535" mouse_opaque="true" 23 embedded_items="false" enabled="false" follows="left|top"
9 name="voice_unavailable" tab_stop="false" width="450" word_wrap="true"> 24 font="SansSerifSmall" height="20" hide_border="true" hide_scrollbar="true"
10 Voice Chat Is Not Available 25 left="20" max_length="65535" mouse_opaque="true"
11 </text_editor> 26 name="voice_unavailable" tab_stop="false" width="450" word_wrap="true">
12 <check_box bottom_delta="0" enabled="true" 27 Voice Chat Is Not Available
13 follows="left|top" font="SansSerifSmall" height="16" initial_value="false" 28 </text_editor>
14 label="Enable voice chat" left="8" mouse_opaque="true" 29 <check_box bottom="-26" enabled="true"
15 name="enable_voice_check" radio_style="false" width="200" /> 30 follows="left|top" font="SansSerifSmall" height="16" initial_value="false"
31 label="Enable voice chat" left="20" mouse_opaque="true"
32 name="enable_voice_check" radio_style="false" width="200" />
33
34
16 <radio_group bottom_delta="-40" draw_border="false" follows="left|top" height="40" 35 <radio_group bottom_delta="-40" draw_border="false" follows="left|top" height="40"
17 left_delta="20" name="ear_location" width="364"> 36 left_delta="30" name="ear_location" width="364">
18 <radio_item type="string" length="1" bottom="-19" follows="left|top" height="16" left="3" name="0" width="315"> 37 <radio_item type="string" length="1" bottom="-19" follows="left|top" height="16" left="3" name="0" width="315">
19 Hear Voice Chat from camera position. 38 Hear Voice Chat from camera position.
20 </radio_item> 39 </radio_item>
@@ -22,17 +41,19 @@
22 Hear Voice Chat from avatar position. 41 Hear Voice Chat from avatar position.
23 </radio_item> 42 </radio_item>
24 </radio_group> 43 </radio_group>
25 <text type="string" length="1" allow_html="false" bg_readonly_color="0 0 0 0" bottom_delta="-20" 44
26 embedded_items="false" enabled="true" follows="left|top" 45
46 <text type="string" length="1" allow_html="false" bg_readonly_color="0 0 0 0" bottom_delta="-30"
47 embedded_items="false" enabled="true" follows="left|top" font-style="BOLD|SHADOW"
27 font="SansSerifSmall" height="16" hide_border="true" hide_scrollbar="true" 48 font="SansSerifSmall" height="16" hide_border="true" hide_scrollbar="true"
28 left_delta="0" max_length="65535" mouse_opaque="true" 49 left="20" max_length="65535" mouse_opaque="true"
29 name="push_to_talk_heading" width="445" word_wrap="true"> 50 name="push_to_talk_heading" width="445" word_wrap="true">
30 Push To Talk: 51 Push To Talk:
31 </text> 52 </text>
32 <text_editor type="string" length="1" allow_html="false" bg_readonly_color="0 0 0 0" bottom_delta="-60" 53 <text_editor type="string" length="1" allow_html="false" bg_readonly_color="0 0 0 0" bottom_delta="-60"
33 embedded_items="false" enabled="false" follows="left|top" 54 embedded_items="false" enabled="false" follows="left|top"
34 font="SansSerifSmall" height="65" hide_border="true" hide_scrollbar="true" 55 font="SansSerifSmall" height="65" hide_border="true" hide_scrollbar="true"
35 left_delta="20" max_length="65535" mouse_opaque="true" 56 left_delta="30" max_length="65535" mouse_opaque="true"
36 name="voice_chat_description" tab_stop="false" width="465" word_wrap="true"> 57 name="voice_chat_description" tab_stop="false" width="465" word_wrap="true">
37 Push-to-Talk mode lets you control when your voice is transmitted. When in toggle mode, press and release the push-to-talk trigger to switch your microphone on and off. When not in toggle mode, the microphone is active only when the trigger is held down. 58 Push-to-Talk mode lets you control when your voice is transmitted. When in toggle mode, press and release the push-to-talk trigger to switch your microphone on and off. When not in toggle mode, the microphone is active only when the trigger is held down.
38 </text_editor> 59 </text_editor>
@@ -51,34 +72,38 @@
51 drop_shadow_visible="true" enabled="false" 72 drop_shadow_visible="true" enabled="false"
52 follows="top|left" font="SansSerifSmall" halign="right" height="19" 73 follows="top|left" font="SansSerifSmall" halign="right" height="19"
53 left_delta="0" max_length="254" mouse_opaque="false" name="modifier_combo" 74 left_delta="0" max_length="254" mouse_opaque="false" name="modifier_combo"
54 width="280" /> 75 width="320" />
55 <button bottom_delta="-25" follows="left|top" font="SansSerif" halign="center" 76 <button bottom_delta="-25" follows="left|top" font="SansSerifSmall" halign="center"
56 height="20" label="Set Key" left_delta="0" mouse_opaque="true" 77 height="20" label="Set Key" left_delta="0" mouse_opaque="true"
57 name="set_voice_hotkey_button" width="115" /> 78 name="set_voice_hotkey_button" width="160" />
58 <button bottom_delta="0" follows="left|top" font="SansSerif" halign="center" height="20" 79 <button bottom_delta="0" follows="left|top" font="SansSerifSmall" halign="center" height="20"
59 label="Middle Mouse Button" left_delta="120" mouse_opaque="true" 80 label="Reset to Default" left_delta="165" mouse_opaque="true"
60 name="set_voice_middlemouse_button" width="160" /> 81 name="set_voice_middlemouse_button" width="160" />
61 <text allow_html="false" bg_readonly_color="0 0 0 0" bottom_delta="-25" 82
62 embedded_items="false" enabled="true" follows="left|top" height="16" 83
63 left="28" name="privacy_heading" width="445"> 84 <text allow_html="false" bg_readonly_color="0 0 0 0" bottom_delta="-30" font="SansSerifSmall"
85 embedded_items="false" enabled="true" follows="left|top" height="16" font-style="BOLD|SHADOW"
86 left="30" name="privacy_heading" width="445">
64 Privacy: 87 Privacy:
65 </text> 88 </text>
66 <check_box bottom_delta="-20" enabled="true" 89 <check_box bottom_delta="-20" enabled="true"
67 follows="left|top" font="SansSerifSmall" height="16" initial_value="false" 90 follows="left|top" font="SansSerifSmall" height="16" initial_value="false"
68 label="Only accept voice calls from people on My Friends list" 91 label="Only accept calls from my friends"
69 left_delta="20" mouse_opaque="true" name="voice_call_friends_only_check" 92 left_delta="30" mouse_opaque="true" name="voice_call_friends_only_check"
70 radio_style="false" width="200" /> 93 radio_style="false" width="200" />
71 <check_box bottom_delta="-18" enabled="true" 94 <check_box bottom_delta="-18" enabled="true"
72 follows="left|top" font="SansSerifSmall" height="16" initial_value="false" 95 follows="left|top" font="SansSerifSmall" height="16" initial_value="false"
73 label="Switch off microphone when ending IM calls" 96 label="Switch off microphone when ending calls"
74 mouse_opaque="true" name="auto_disengage_mic_check" 97 mouse_opaque="true" name="auto_disengage_mic_check"
75 radio_style="false" width="200" /> 98 radio_style="false" width="200" />
76 <button bottom_delta="-40" follows="left|top" font="SansSerif" height="20" 99
77 label="Device Settings" left="28" mouse_opaque="true" 100
78 name="device_settings_btn" width="155" /> 101 <button bottom_delta="-40" follows="left|top" font="SansSerifSmall" height="20"
79 <button bottom_delta="0" follows="left|top" font="SansSerif" halign="center" height="20" 102 label="Device Settings" left="30" mouse_opaque="true"
80 label="Reconnect to Voice" left_delta="160" mouse_opaque="true" 103 name="device_settings_btn" width="160" />
81 name="reset_voice" width="160" /> 104 <button bottom_delta="0" follows="left|top" font="SansSerifSmall" halign="center" height="20"
105 label="Reconnect to Voice" left_delta="160" mouse_opaque="true"
106 name="reset_voice" width="160" />
82 <text_editor type="string" length="1" allow_html="false" bg_readonly_color="0 0 0 0" bottom_delta="-32" 107 <text_editor type="string" length="1" allow_html="false" bg_readonly_color="0 0 0 0" bottom_delta="-32"
83 embedded_items="false" enabled="false" follows="left|top" 108 embedded_items="false" enabled="false" follows="left|top"
84 font="SansSerifSmall" height="35" hide_border="true" hide_scrollbar="true" 109 font="SansSerifSmall" height="35" hide_border="true" hide_scrollbar="true"
@@ -86,4 +111,6 @@
86 name="device_settings_text" tab_stop="false" width="450" word_wrap="true"> 111 name="device_settings_text" tab_stop="false" width="450" word_wrap="true">
87 NOTE: Running the Device Settings will temporarily disconnect you from Voice Chat, and changes you make will be immediately applied. 112 NOTE: Running the Device Settings will temporarily disconnect you from Voice Chat, and changes you make will be immediately applied.
88 </text_editor> 113 </text_editor>
114
115
89</panel> 116</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
deleted file mode 100644
index 7de8ef7..0000000
--- a/linden/indra/newview/skins/default/xui/en-us/panel_preferences_web.xml
+++ /dev/null
@@ -1,68 +0,0 @@
1<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
2<panel border="true" bottom="-409" enabled="true" follows="left|top|right|bottom"
3 height="408" label="Web Browser" left="102" mouse_opaque="true" name="web"
4 width="517">
5 <radio_group bottom="-45" draw_border="false" follows="top|left" height="40" left="12"
6 name="use_external_browser" width="480">
7 <radio_item bottom="-20" height="20" left="0" name="external" width="480"
8 tool_tip="Use the default system web browser for help, web links, etc. Not recommended if running full screen.">
9 Use external web browser (Firefox, Safari, Internet Explorer)
10 </radio_item>
11 <radio_item bottom="-40" height="20" left="0" name="internal" width="480"
12 tool_tip="Use the built-in web browser for help, web links, etc. This browser opens as a new window inside Second Life.">
13 Use built-in web browser
14 </radio_item>
15 </radio_group>
16 <button bottom_delta="-30" enabled="true" follows="left|top" font="SansSerif"
17 halign="center" height="22" label="Clear Built-In Browser Cache" left="35"
18 mouse_opaque="true" name="clear_cache" scale_image="true" width="250" />
19 <check_box bottom_delta="-35" enabled="true" follows="left|top"
20 font="SansSerifSmall" height="16" initial_value="false"
21 label="Accept cookies while using built-in web browser" left="15" mouse_opaque="true"
22 tool_top="Allows the built-in web browser to accept cookies from websites"
23 name="cookies_enabled" radio_style="false" width="256" />
24 <button bottom_delta="-25" enabled="true" follows="left|top" font="SansSerif"
25 halign="center" height="20" label="Clear Cookies" left_delta="20"
26 tool_tip="Clear Cookies"
27 mouse_opaque="true" name="clear_ookies" scale_image="true" width="110" />
28 <check_box bottom_delta="-35" enabled="true"
29 follows="left|top" font="SansSerifSmall" height="16" initial_value="false"
30 label="Enable proxy for built-in web browser" left="15" mouse_opaque="true"
31 name="web_proxy_enabled" radio_style="false" width="256" />
32 <text type="string" length="1" bg_visible="false" border_drop_shadow_visible="false" border_visible="false"
33 bottom_delta="-18" drop_shadow_visible="true" enabled="true"
34 follows="left|top" font="SansSerifSmall" h_pad="0" halign="left"
35 height="10" left_delta="20" mouse_opaque="false" name="proxy_text_label"
36 v_pad="0" width="128">
37 Address:
38 </text>
39 <line_editor bottom_delta="-8" enabled="true" follows="left|top" font="SansSerif"
40 height="20" left="112" name="web_proxy_editor"
41 tool_tip="The name or IP address of the proxy you would like to use"
42 width="200" />
43 <spinner bottom_delta="-20" decimal_digits="0"
44 enabled="true" follows="left|top" height="16" increment="1"
45 initial_val="80" label="Port number:" label_width="75" left="35"
46 max_val="12000" min_val="10" mouse_opaque="true" name="web_proxy_port"
47 width="140" />
48 <text type="string" length="1" bg_visible="false" border_drop_shadow_visible="false" border_visible="false"
49 bottom_delta="-30" drop_shadow_visible="true" enabled="true"
50 follows="left|top" font="SansSerifSmall" h_pad="0" halign="left"
51 height="10" left="15" mouse_opaque="false" name="cache_size_label_l"
52 v_pad="0" width="200">
53 Custom All (web) search tab URL:
54 </text>
55 <line_editor bottom_delta="-25" enabled="true" follows="left|top"
56 font="SansSerifSmall" height="18" left="15" name="world_search_editor"
57 tool_tip="Address of the world search engine you would like to use"
58 width="400" />
59 <button bottom_delta="-22" enabled="true" follows="left|top" font="SansSerif"
60 halign="center" height="20" label="Reset" left="15"
61 tool_tip="Reset to default"
62 mouse_opaque="true" name="world_search_reset_default" scale_image="true" width="80" />
63 <button bottom_delta="0" enabled="true" follows="left|top" font="SansSerif"
64 halign="center" height="20" label="Clear" left_delta="85"
65 tool_tip="clear field"
66 mouse_opaque="true" name="world_search_clear" scale_image="true" width="80" />
67
68</panel>