aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/linden
diff options
context:
space:
mode:
Diffstat (limited to 'linden')
-rw-r--r--linden/indra/llui/lltexteditor.cpp9
-rw-r--r--linden/indra/lscript/lscript_library/lscript_library.cpp9
-rw-r--r--linden/indra/newview/CMakeLists.txt9
-rw-r--r--linden/indra/newview/app_settings/ao_template.ini103
-rw-r--r--linden/indra/newview/app_settings/keywords.ini55
-rw-r--r--linden/indra/newview/app_settings/settings.xml167
-rw-r--r--linden/indra/newview/app_settings/settings_per_account.xml585
-rw-r--r--linden/indra/newview/floaterao.cpp1439
-rw-r--r--linden/indra/newview/floaterao.h129
-rw-r--r--linden/indra/newview/floaterbusy.cpp225
-rw-r--r--linden/indra/newview/floaterbusy.h88
-rw-r--r--linden/indra/newview/llagent.cpp13
-rw-r--r--linden/indra/newview/llappviewer.cpp43
-rw-r--r--linden/indra/newview/llchatbar.cpp1
-rw-r--r--linden/indra/newview/llcompilequeue.cpp4
-rw-r--r--linden/indra/newview/llconsole.cpp1
-rw-r--r--linden/indra/newview/llfirstuse.cpp11
-rw-r--r--linden/indra/newview/llfirstuse.h1
-rw-r--r--linden/indra/newview/llfloaterabout.cpp3
-rw-r--r--linden/indra/newview/llfloaterbuildoptions.cpp292
-rw-r--r--linden/indra/newview/llfloaterbuildoptions.h30
-rw-r--r--linden/indra/newview/llfloaterbulkpermission.cpp2
-rw-r--r--linden/indra/newview/llfloaterpreference.cpp15
-rw-r--r--linden/indra/newview/llfloaterpreference.h2
-rw-r--r--linden/indra/newview/llfloaterstats.cpp3
-rw-r--r--linden/indra/newview/llinventoryview.cpp24
-rw-r--r--linden/indra/newview/llinventoryview.h2
-rw-r--r--linden/indra/newview/llmanip.cpp86
-rw-r--r--linden/indra/newview/llmanip.h13
-rw-r--r--linden/indra/newview/llmaniprotate.cpp1
-rw-r--r--linden/indra/newview/lloverlaybar.cpp1
-rw-r--r--linden/indra/newview/llprefsadvanced.cpp97
-rw-r--r--linden/indra/newview/llprefsadvanced.h50
-rw-r--r--linden/indra/newview/llprefsim.cpp12
-rw-r--r--linden/indra/newview/llpreviewnotecard.h3
-rw-r--r--linden/indra/newview/llstartup.cpp31
-rw-r--r--linden/indra/newview/lltooldraganddrop.cpp26
-rw-r--r--linden/indra/newview/lltoolplacer.cpp44
-rw-r--r--linden/indra/newview/llviewerdisplay.cpp64
-rw-r--r--linden/indra/newview/llviewermenu.cpp23
-rw-r--r--linden/indra/newview/llviewermessage.cpp281
-rw-r--r--linden/indra/newview/llviewerobjectlist.cpp81
-rw-r--r--linden/indra/newview/llviewerwindow.cpp1
-rw-r--r--linden/indra/newview/llvoavatar.cpp28
-rw-r--r--linden/indra/newview/llwaterparammanager.cpp1
-rw-r--r--linden/indra/newview/llxmlrpctransaction.cpp13
-rw-r--r--linden/indra/newview/primbackup.cpp7
-rw-r--r--linden/indra/newview/skins/default/xui/de/floater_ao.xml95
-rw-r--r--linden/indra/newview/skins/default/xui/en-us/floater_ao.xml242
-rw-r--r--linden/indra/newview/skins/default/xui/en-us/floater_build_options.xml180
-rw-r--r--linden/indra/newview/skins/default/xui/en-us/floater_busy.xml93
-rw-r--r--linden/indra/newview/skins/default/xui/en-us/floater_image_preview.xml12
-rw-r--r--linden/indra/newview/skins/default/xui/en-us/floater_tools.xml6
-rw-r--r--linden/indra/newview/skins/default/xui/en-us/menu_viewer.xml6
-rw-r--r--linden/indra/newview/skins/default/xui/en-us/notifications.xml14
-rw-r--r--linden/indra/newview/skins/default/xui/en-us/panel_avatar.xml4
-rw-r--r--linden/indra/newview/skins/default/xui/en-us/panel_preferences_advanced.xml25
-rw-r--r--linden/indra/newview/skins/default/xui/en-us/panel_preferences_im.xml7
-rw-r--r--linden/indra/newview/skins/default/xui/es/panel_avatar.xml420
-rw-r--r--linden/indra/newview/skins/default/xui/it/panel_avatar.xml2
-rw-r--r--linden/indra/newview/skins/default/xui/pt/panel_avatar.xml424
61 files changed, 5135 insertions, 523 deletions
diff --git a/linden/indra/llui/lltexteditor.cpp b/linden/indra/llui/lltexteditor.cpp
index b0229be..c4f839b 100644
--- a/linden/indra/llui/lltexteditor.cpp
+++ b/linden/indra/llui/lltexteditor.cpp
@@ -751,7 +751,14 @@ S32 LLTextEditor::getLineStart( S32 line ) const
751 S32 segoffset = mLineStartList[line].mOffset; 751 S32 segoffset = mLineStartList[line].mOffset;
752 LLTextSegment* seg = mSegments[segidx]; 752 LLTextSegment* seg = mSegments[segidx];
753 S32 res = seg->getStart() + segoffset; 753 S32 res = seg->getStart() + segoffset;
754 if (res > seg->getEnd()) llerrs << "wtf" << llendl; 754 if (res > seg->getEnd())
755 {
756 //llerrs << "wtf" << llendl;
757 // This happens when creating a new notecard using the AO on certain opensims.
758 // Play it safe instead of bringing down the viewer - MC
759 llwarns << "BAD JOOJOO! Text length (" << res << ") greater than text end (" << seg->getEnd() << "). Setting line start to " << seg->getEnd() << llendl;
760 res = seg->getEnd();
761 }
755 return res; 762 return res;
756} 763}
757 764
diff --git a/linden/indra/lscript/lscript_library/lscript_library.cpp b/linden/indra/lscript/lscript_library/lscript_library.cpp
index 0342c97..7fa7b70 100644
--- a/linden/indra/lscript/lscript_library/lscript_library.cpp
+++ b/linden/indra/lscript/lscript_library/lscript_library.cpp
@@ -458,6 +458,15 @@ void LLScriptLibrary::init()
458 addFunction(new LLScriptLibraryFunction(10.f, 0.f, dummy_func, "llHTTPResponse", NULL, "kis", "llHTTPResponse(key id, integer status, string body)\nResponds to request id with status and body.")); 458 addFunction(new LLScriptLibraryFunction(10.f, 0.f, dummy_func, "llHTTPResponse", NULL, "kis", "llHTTPResponse(key id, integer status, string body)\nResponds to request id with status and body."));
459 addFunction(new LLScriptLibraryFunction(10.f, 0.f, dummy_func, "llGetHTTPHeader", "s", "ks", "string llGetHTTPHeader(key id, string header)\nGet the value for header for request id.")); 459 addFunction(new LLScriptLibraryFunction(10.f, 0.f, dummy_func, "llGetHTTPHeader", "s", "ks", "string llGetHTTPHeader(key id, string header)\nGet the value for header for request id."));
460 460
461 // Prim media functions and those added in SL server 1.38 -- MC
462 addFunction(new LLScriptLibraryFunction(10.f, 1.0f, dummy_func, "llSetPrimMediaParams", "i", "il", "llSetPrimMediaParams(integer face, list params)\nSets the media params for a particular face on an object. If media is not already on this object, add it.\nList is a set of name/value pairs in no particular order. Params not specified are unchanged, or if new media is added then set to the default specified.\nThe possible names are below, along with the types of values and what they mean."));
463 addFunction(new LLScriptLibraryFunction(10.f, 1.0f, dummy_func, "llGetPrimMediaParams", "l", "il", "list llGetPrimMediaParams(integer face, list params)\nReturns the media params for a particular face on an object, given the desired list of names, in the order requested.\n(Returns an empty list if no media exists on the face.)"));
464 addFunction(new LLScriptLibraryFunction(10.f, 1.0f, dummy_func, "llClearPrimMedia", "i", "i", "llClearPrimMedia(integer face)\nClears (deletes) the media and all params from the given face."));
465 addFunction(new LLScriptLibraryFunction(10.f, 0.f, dummy_func, "llSetLinkPrimitiveParamsFast", NULL, "il", "llSetLinkPrimitiveParamsFast(integer linknumber, list rules);\nIdentical to llSetLinkPrimitiveParams except with no script delay."));
466 addFunction(new LLScriptLibraryFunction(10.f, 0.f, dummy_func, "llGetLinkPrimitiveParams", NULL, "il", "list llGetLinkPrimitiveParams(integer link, list params)\nSimilar to llGetPrimitiveParams except works for any prim in the link set and with no script delay."));
467 addFunction(new LLScriptLibraryFunction(10.f, 0.f, dummy_func, "llLinkParticleSystem", NULL, "il", "llLinkParticleSystem(integer link, list params)\nSimilar to llParticleSystem except works for any prim in the link set."));
468 addFunction(new LLScriptLibraryFunction(10.f, 0.f, dummy_func, "llSetLinkTextureAnim", NULL, "iiiiifff", "llSetLinkTextureAnim(integer link, integer mode, integer face, integer sizex, integer sizey, float start, float length, float rate);\nSimilar to llSetTextureAnim except works for any prim in the link set"));
469
461 // energy, sleep, dummy_func, name, return type, parameters, help text, gods-only 470 // energy, sleep, dummy_func, name, return type, parameters, help text, gods-only
462 471
463 // IF YOU ADD NEW SCRIPT CALLS, YOU MUST PUT THEM AT THE END OF THIS LIST. 472 // IF YOU ADD NEW SCRIPT CALLS, YOU MUST PUT THEM AT THE END OF THIS LIST.
diff --git a/linden/indra/newview/CMakeLists.txt b/linden/indra/newview/CMakeLists.txt
index 514811d..1af5e9e 100644
--- a/linden/indra/newview/CMakeLists.txt
+++ b/linden/indra/newview/CMakeLists.txt
@@ -66,6 +66,8 @@ include_directories(
66 66
67set(viewer_SOURCE_FILES 67set(viewer_SOURCE_FILES
68 emeraldboobutils.cpp 68 emeraldboobutils.cpp
69 floaterao.cpp
70 floaterbusy.cpp
69 floaterlogin.cpp 71 floaterlogin.cpp
70 hippoGridManager.cpp 72 hippoGridManager.cpp
71 hippoLimits.cpp 73 hippoLimits.cpp
@@ -309,6 +311,7 @@ set(viewer_SOURCE_FILES
309 llpatchvertexarray.cpp 311 llpatchvertexarray.cpp
310 llpolymesh.cpp 312 llpolymesh.cpp
311 llpolymorph.cpp 313 llpolymorph.cpp
314 llprefsadvanced.cpp
312 llprefschat.cpp 315 llprefschat.cpp
313 llprefsim.cpp 316 llprefsim.cpp
314 llprefsvoice.cpp 317 llprefsvoice.cpp
@@ -488,6 +491,8 @@ set(viewer_HEADER_FILES
488 CMakeLists.txt 491 CMakeLists.txt
489 ViewerInstall.cmake 492 ViewerInstall.cmake
490 emeraldboobutils.h 493 emeraldboobutils.h
494 floaterao.h
495 floaterbusy.h
491 floaterlogin.h 496 floaterlogin.h
492 hippoGridManager.h 497 hippoGridManager.h
493 hippoLimits.h 498 hippoLimits.h
@@ -733,6 +738,7 @@ set(viewer_HEADER_FILES
733 llpatchvertexarray.h 738 llpatchvertexarray.h
734 llpolymesh.h 739 llpolymesh.h
735 llpolymorph.h 740 llpolymorph.h
741 llprefsadvanced.h
736 llprefschat.h 742 llprefschat.h
737 llprefsim.h 743 llprefsim.h
738 llprefsvoice.h 744 llprefsvoice.h
@@ -1082,6 +1088,7 @@ set(viewer_XUI_FILES
1082 skins/default/xui/en-us/floater_active_speakers.xml 1088 skins/default/xui/en-us/floater_active_speakers.xml
1083 skins/default/xui/en-us/floater_animation_list.xml 1089 skins/default/xui/en-us/floater_animation_list.xml
1084 skins/default/xui/en-us/floater_animation_preview.xml 1090 skins/default/xui/en-us/floater_animation_preview.xml
1091 skins/default/xui/en-us/floater_ao.xml
1085 skins/default/xui/en-us/floater_asset_browser.xml 1092 skins/default/xui/en-us/floater_asset_browser.xml
1086 skins/default/xui/en-us/floater_auction.xml 1093 skins/default/xui/en-us/floater_auction.xml
1087 skins/default/xui/en-us/floater_audio_volume.xml 1094 skins/default/xui/en-us/floater_audio_volume.xml
@@ -1091,6 +1098,7 @@ set(viewer_XUI_FILES
1091 skins/default/xui/en-us/floater_build_options.xml 1098 skins/default/xui/en-us/floater_build_options.xml
1092 skins/default/xui/en-us/floater_bulk_perms.xml 1099 skins/default/xui/en-us/floater_bulk_perms.xml
1093 skins/default/xui/en-us/floater_bumps.xml 1100 skins/default/xui/en-us/floater_bumps.xml
1101 skins/default/xui/en-us/floater_busy.xml
1094 skins/default/xui/en-us/floater_buy_contents.xml 1102 skins/default/xui/en-us/floater_buy_contents.xml
1095 skins/default/xui/en-us/floater_buy_currency.xml 1103 skins/default/xui/en-us/floater_buy_currency.xml
1096 skins/default/xui/en-us/floater_buy_land.xml 1104 skins/default/xui/en-us/floater_buy_land.xml
@@ -1241,6 +1249,7 @@ set(viewer_XUI_FILES
1241 skins/default/xui/en-us/panel_overlaybar.xml 1249 skins/default/xui/en-us/panel_overlaybar.xml
1242 skins/default/xui/en-us/panel_place_small.xml 1250 skins/default/xui/en-us/panel_place_small.xml
1243 skins/default/xui/en-us/panel_place.xml 1251 skins/default/xui/en-us/panel_place.xml
1252 skins/default/xui/en-us/panel_preferences_advanced.xml
1244 skins/default/xui/en-us/panel_preferences_audio.xml 1253 skins/default/xui/en-us/panel_preferences_audio.xml
1245 skins/default/xui/en-us/panel_preferences_chat.xml 1254 skins/default/xui/en-us/panel_preferences_chat.xml
1246 skins/default/xui/en-us/panel_preferences_general.xml 1255 skins/default/xui/en-us/panel_preferences_general.xml
diff --git a/linden/indra/newview/app_settings/ao_template.ini b/linden/indra/newview/app_settings/ao_template.ini
new file mode 100644
index 0000000..03f02e3
--- /dev/null
+++ b/linden/indra/newview/app_settings/ao_template.ini
@@ -0,0 +1,103 @@
1############################################################
2############################################################
3##
4## IMPRUDENCE AO TEMPLATE
5##
6############################################################
7##
8## INSTRUCTIONS:
9##
10## 1. Detach any AO you are currently wearing or it will interfere.
11##
12## 2. Place all of the animations you want ot use into a folder in your inventory.
13##
14## 3. Place the notecard for the AO in the *SAME* folder.
15##
16## 4. Find the line that matches the animation you're changing.
17## For example, if you're adding a walk animation,
18## find the line that starts with [ Walking ]
19##
20## If the notecard already has walking animations, the line will look something like this:
21## [ Walking ]SexyWalk1|SexyWalk2
22##
23## 5. Type the name of the new animation at the end of this line.
24## If the line already contains some animations, type '|' before
25## typing the animation name. Once you're done, the line should look like this:
26## [ Walking ]NewWalkAnim
27## or
28## [ Walking ]SexyWalk1|SexyWalk2|NewWalkAnim
29##
30## 6. Once you're done, save the notecard.
31##
32## 7. Open the client AO window (CTRL-SHIFT-O) then drag the notecard onto the indicated spot.
33##
34## 8. Press the "Reload" button in the AO.
35##
36############################################################
37
38############################################################
39############################################################
40##
41## LIST YOUR ANIMATIONS HERE
42##
43############################################################
44############################################################
45
46
47[ Standing ]
48[ Walking ]
49[ Sitting ]
50[ Sitting On Ground ]
51[ Crouching ]
52[ Crouch Walking ]
53[ Landing ]
54[ Standing Up ]
55[ Falling ]
56[ Flying Down ]
57[ Flying Up ]
58[ Flying ]
59[ Flying Slow ]
60[ Hovering ]
61[ Jumping ]
62[ Pre Jumping ]
63[ Running ]
64[ Turning Right ]
65[ Turning Left ]
66[ Floating ]
67[ Swimming Forward ]
68[ Swimming Up ]
69[ Swimming Down ]
70
71
72#############################################################
73#############################################################
74##
75## FOR ADVANCED USERS ONLY
76##
77#############################################################
78##
79## Lines starting with a # are treated as comments and ignored. Blank lines are ignored. Valid lines look like this:
80##
81## [ Walking ]SexyWalk1|SexyWalk2|SexyWalk3
82##
83## The token (in this case, [ Walking ] - note the spaces inside the [ ]) identifies the animation to be overridden. The rest is a list of
84## animations, separated by the '|' (pipe) character. You can specify multiple animations for Stands, Walks, Sits, and GroundSits.
85## Multiple animations on any other line are invalid. You can list as many animations as you want.
86##
87## You can repeat tokens, so you can split the Stands up across multiple lines. Use the [ Standing ] token in each line, and
88## the viewer will add the animation lists together.
89##
90## Each 'animation name' can be a comma-separated list of animations, which will be played together. For example:
91## [ Walking ]SexyWalk1UpperBody,SexyWalk1LowerBody|SexyWalk2|SexyWalk3
92##
93## Note the ',' between SexyWalk1UpperBody and SexyWalk1LowerBody - this tells AO to treat these as a single
94## 'animation' and play them together. The '|' between this 'animation' and SexyWalk2 tells AO to treat SexyWalk2 and
95## SexyWalk3 as separate walk animations. You can use this to layer animations on top of each other.
96##
97## Do not add any spaces around animation names!!!
98##
99## If you have read and understood these instructions, feel free to delete these lines.
100##
101## Imprudence's AO notecard system is based on the ZHAO-II HUD by Second Life resident Ziggy Puff.
102##
103############################################################ \ No newline at end of file
diff --git a/linden/indra/newview/app_settings/keywords.ini b/linden/indra/newview/app_settings/keywords.ini
index 18af407..b0851ef 100644
--- a/linden/indra/newview/app_settings/keywords.ini
+++ b/linden/indra/newview/app_settings/keywords.ini
@@ -40,14 +40,14 @@ not_at_rot_target not_at_rot_target():Result of LLRotTarget library function cal
40money money(key id, integer amount):Triggered when L$ is given to task 40money money(key id, integer amount):Triggered when L$ is given to task
41email email(string time, string address, string subj, string message, integer num_left):Triggered when task receives email 41email email(string time, string address, string subj, string message, integer num_left):Triggered when task receives email
42run_time_permissions run_time_permissions(integer perm):Triggered when an agent grants run time permissions to task 42run_time_permissions run_time_permissions(integer perm):Triggered when an agent grants run time permissions to task
43attach attach(key id):Triggered when an agent attaches or detaches from agent 43attach attach(key id):Triggered when task attaches or detaches from agent
44dataserver dataserver(key queryid, string data):Triggered when task receives asynchronous data 44dataserver dataserver(key queryid, string data):Triggered when task receives asynchronous data
45moving_start moving_start():Triggered when task begins moving 45moving_start moving_start():Triggered when task begins moving
46moving_end moving_end():Triggered when task stops moving 46moving_end moving_end():Triggered when task stops moving
47on_rez on_rez(integer start_param):Triggered when task is rezed in from inventory or another task 47on_rez on_rez(integer start_param):Triggered when task is rezed in from inventory or another task
48object_rez object_rez(key id):Triggered when task rezes in another task 48object_rez object_rez(key id):Triggered when task rezes in another task
49link_message link_message(integer sender_num, integer num, string str, key id):Triggered when task receives a link message via LLMessageLinked library function call 49link_message link_message(integer sender_num, integer num, string str, key id):Triggered when task receives a link message via LLMessageLinked library function call
50changed changed( integer change ):Triggered various event change the task:(test change with CHANGED_INVENTORY, CHANGED_COLOR, CHANGED_SHAPE, CHANGED_SCALE, CHANGED_TEXTURE, CHANGED_LINK, CHANGED_ALLOWED_DROP, CHANGED_OWNER, CHANGED_REGION, CHANGED_TELEPORT) 50changed changed( integer change ):Triggered various event change the task:(test change with CHANGED_INVENTORY, CHANGED_COLOR, CHANGED_SHAPE, CHANGED_SCALE, CHANGED_TEXTURE, CHANGED_LINK, CHANGED_ALLOWED_DROP, CHANGED_OWNER, CHANGED_REGION, CHANGED_TELEPORT, CHANGED_REGION_START, CHANGED_MEDIA)
51remote_data remote_data(integer event_type, key channel, key message_id, string sender,integer idata, string sdata):Triggered by various XML-RPC calls (event_type will be one of REMOTE_DATA_CHANNEL, REMOTE_DATA_REQUEST, REMOTE_DATA_REPLY) 51remote_data remote_data(integer event_type, key channel, key message_id, string sender,integer idata, string sdata):Triggered by various XML-RPC calls (event_type will be one of REMOTE_DATA_CHANNEL, REMOTE_DATA_REQUEST, REMOTE_DATA_REPLY)
52http_response http_response(key request_id, integer status, list metadata, string body):Triggered when task receives a response to one of its llHTTPRequests 52http_response http_response(key request_id, integer status, list metadata, string body):Triggered when task receives a response to one of its llHTTPRequests
53http_request http_request(key id, string method, string body):Triggered when task receives an http request against a public URL 53http_request http_request(key id, string method, string body):Triggered when task receives an http request against a public URL
@@ -108,6 +108,7 @@ AGENT_TYPING Returned by llGetAgentInfo if the Agent is typing
108AGENT_CROUCHING Returned by llGetAgentInfo if the Agent is crouching 108AGENT_CROUCHING Returned by llGetAgentInfo if the Agent is crouching
109AGENT_BUSY Returned by llGetAgentInfo if the Agent is busy 109AGENT_BUSY Returned by llGetAgentInfo if the Agent is busy
110AGENT_ALWAYS_RUN Returned by llGetAgentInfo if the Agent has 'Always Run' enabled 110AGENT_ALWAYS_RUN Returned by llGetAgentInfo if the Agent has 'Always Run' enabled
111AGENT_AUTOPILOT Returned by llGetAgentInfo if the Agent is under autopilot control
111 112
112PSYS_PART_FLAGS 113PSYS_PART_FLAGS
113PSYS_PART_START_COLOR 114PSYS_PART_START_COLOR
@@ -319,6 +320,7 @@ CHANGED_OWNER Parameter of changed event handler used to indicate change to tas
319CHANGED_REGION Parameter of changed event handler used to indicate the region has changed 320CHANGED_REGION Parameter of changed event handler used to indicate the region has changed
320CHANGED_TELEPORT Parameter of changed event handler used to indicate teleport has completed 321CHANGED_TELEPORT Parameter of changed event handler used to indicate teleport has completed
321CHANGED_REGION_START Parameter of changed event handler used to indicate the region has been restarted 322CHANGED_REGION_START Parameter of changed event handler used to indicate the region has been restarted
323CHANGED_MEDIA Parameter of changed event handler used to indicate that media has changed on a face of the task
322 324
323TYPE_INTEGER Indicates that the list entry is holding an integer 325TYPE_INTEGER Indicates that the list entry is holding an integer
324TYPE_FLOAT Indicates that the list entry is holding an float 326TYPE_FLOAT Indicates that the list entry is holding an float
@@ -351,6 +353,8 @@ PRIM_BUMP_SHINY Followed by an integer face, one of PRIM_SHINY_NONE, PRIM_SHINY
351PRIM_FULLBRIGHT Followed by an integer face, and TRUE or FALSE 353PRIM_FULLBRIGHT Followed by an integer face, and TRUE or FALSE
352PRIM_TEXGEN Followed by an integer face, and one of PRIM_TEXGEN_DEFAULT or PRIM_TEXGEN_PLANAR 354PRIM_TEXGEN Followed by an integer face, and one of PRIM_TEXGEN_DEFAULT or PRIM_TEXGEN_PLANAR
353PRIM_GLOW Followed by an integer face, and a float from 0.0 to 1.0 specifying glow amount 355PRIM_GLOW Followed by an integer face, and a float from 0.0 to 1.0 specifying glow amount
356PRIM_NAME Sets/Shows the primitive name
357PRIM_TEXT Sets/Shows the primitive desc
354 358
355PRIM_TYPE_BOX Followed by integer hole shape, vector cut, float hollow, vector twist,:vector top size, and vector top shear 359PRIM_TYPE_BOX Followed by integer hole shape, vector cut, float hollow, vector twist,:vector top size, and vector top shear
356PRIM_TYPE_CYLINDER Followed by integer hole shape, vector cut, float hollow, vector twist,:vector top size, and vector top shear 360PRIM_TYPE_CYLINDER Followed by integer hole shape, vector cut, float hollow, vector twist,:vector top size, and vector top shear
@@ -508,17 +512,59 @@ CLICK_ACTION_PAY Used with llSetClickAction to set pay as the default act
508CLICK_ACTION_OPEN Used with llSetClickAction to set open as the default action when object is clicked 512CLICK_ACTION_OPEN Used with llSetClickAction to set open as the default action when object is clicked
509CLICK_ACTION_PLAY Used with llSetClickAction to set play as the default action when object is clicked 513CLICK_ACTION_PLAY Used with llSetClickAction to set play as the default action when object is clicked
510CLICK_ACTION_OPEN_MEDIA Used with llSetClickAction to set open-media as the default action when object is clicked 514CLICK_ACTION_OPEN_MEDIA Used with llSetClickAction to set open-media as the default action when object is clicked
515CLICK_ACTION_ZOOM Used with llSetClickAction to set zoom in as the default action when object is clicked
511 516
512TOUCH_INVALID_TEXCOORD Value returned by llDetectedTouchUV() and llDetectedTouchST() when the touch position is not valid. 517TOUCH_INVALID_TEXCOORD Value returned by llDetectedTouchUV() and llDetectedTouchST() when the touch position is not valid.
513TOUCH_INVALID_VECTOR Value returned by llDetectedTouchPos(), llDetectedTouchNormal(), and llDetectedTouchBinormal() when the touch position is not valid. 518TOUCH_INVALID_VECTOR Value returned by llDetectedTouchPos(), llDetectedTouchNormal(), and llDetectedTouchBinormal() when the touch position is not valid.
514TOUCH_INVALID_FACE Value returned by llDetectedTouchFace() when the touch position is not valid. 519TOUCH_INVALID_FACE Value returned by llDetectedTouchFace() when the touch position is not valid.
515 520
521PRIM_MEDIA_ALT_IMAGE_ENABLE Used with ll{Get,Set}PrimMediaParams to enable the default alt image for media
522PRIM_MEDIA_CONTROLS Used with ll{Get,Set}PrimMediaParams to determine the controls shown for media
523PRIM_MEDIA_CURRENT_URL Used with ll{Get,Set}PrimMediaParams to navigate/access the current URL
524PRIM_MEDIA_HOME_URL Used with ll{Get,Set}PrimMediaParams to access the home URL
525PRIM_MEDIA_AUTO_LOOP Used with ll{Get,Set}PrimMediaParams to determine if media should auto-loop (if applicable)
526PRIM_MEDIA_AUTO_PLAY Used with ll{Get,Set}PrimMediaParams to determine if media should start playing as soon as it is created
527PRIM_MEDIA_AUTO_SCALE Used with ll{Get,Set}PrimMediaParams to determine if media should scale to fit the face it is on
528PRIM_MEDIA_AUTO_ZOOM Used with ll{Get,Set}PrimMediaParams to determine if the user would zoom in when viewing media
529PRIM_MEDIA_FIRST_CLICK_INTERACT Used with ll{Get,Set}PrimMediaParams to determine whether the user interacts with media or not when she first clicks it (versus selection)
530PRIM_MEDIA_WIDTH_PIXELS Used with ll{Get,Set}PrimMediaParams to access the media's width in pixels
531PRIM_MEDIA_HEIGHT_PIXELS Used with ll{Get,Set}PrimMediaParams to access the media's height in pixels
532PRIM_MEDIA_WHITELIST_ENABLE Used with ll{Get,Set}PrimMediaParams to determine if the domain whitelist is enabled
533PRIM_MEDIA_WHITELIST Used with ll{Get,Set}PrimMediaParams to access the media's list of allowable URL prefixes to navigate to
534PRIM_MEDIA_PERMS_INTERACT Used with ll{Get,Set}PrimMediaParams to determine the permissions for who can interact with the media
535PRIM_MEDIA_PERMS_CONTROL Used with ll{Get,Set}PrimMediaParams to determine the permissions for who has controls
536PRIM_MEDIA_PARAM_MAX The value of the largest media param
537
538PRIM_MEDIA_CONTROLS_STANDARD Used with ll{Get,Set}PrimMediaParams, a PRIM_MEDIA_CONTROLS value meaning "standard controls"
539PRIM_MEDIA_CONTROLS_MINI Used with ll{Get,Set}PrimMediaParams, a PRIM_MEDIA_CONTROLS value meaning "mini controls"
540
541PRIM_MEDIA_PERM_NONE Used with ll{Get,Set}PrimMediaParams, a PRIM_MEDIA_PERMS_INTERACT or PRIM_MEDIA_PERMS_CONTROL bit, no permissions
542PRIM_MEDIA_PERM_OWNER Used with ll{Get,Set}PrimMediaParams, a PRIM_MEDIA_PERMS_INTERACT or PRIM_MEDIA_PERMS_CONTROL bit, owner permissions
543PRIM_MEDIA_PERM_GROUP Used with ll{Get,Set}PrimMediaParams, a PRIM_MEDIA_PERMS_INTERACT or PRIM_MEDIA_PERMS_CONTROL bit, group permissions
544PRIM_MEDIA_PERM_ANYONE Used with ll{Get,Set}PrimMediaParams, a PRIM_MEDIA_PERMS_INTERACT or PRIM_MEDIA_PERMS_CONTROL bit, anyone has permissions
545
546PRIM_MEDIA_MAX_URL_LENGTH Used with ll{Get,Set}PrimMediaParams, the maximum length of PRIM_MEDIA_CURRENT_URL or PRIM_MEDIA_HOME_URL
547PRIM_MEDIA_MAX_WHITELIST_SIZE Used with ll{Get,Set}PrimMediaParams, the maximum length, in bytes, of PRIM_MEDIA_WHITELIST
548PRIM_MEDIA_MAX_WHITELIST_COUNT Used with ll{Get,Set}PrimMediaParams, the maximum number of items allowed in PRIM_MEDIA_WHITELIST
549PRIM_MEDIA_MAX_WIDTH_PIXELS Used with ll{Get,Set}PrimMediaParams, the maximum width allowed in PRIM_MEDIA_WIDTH_PIXELS
550PRIM_MEDIA_MAX_HEIGHT_PIXELS Used with ll{Get,Set}PrimMediaParams, the maximum width allowed in PRIM_MEDIA_HEIGHT_PIXELS
551
552STATUS_OK Result of function call was success
553STATUS_MALFORMED_PARAMS Function was called with malformed params
554STATUS_TYPE_MISMATCH Argument(s) passed to function had a type mismatch
555STATUS_BOUNDS_ERROR Argument(s) passed to function had a bounds error
556STATUS_NOT_FOUND Object or other item was not found
557STATUS_NOT_SUPPORTED Feature not supported
558STATUS_INTERNAL_ERROR An internal error occurred
559STATUS_WHITELIST_FAILED URL failed to pass whitelist
560
516# string constants 561# string constants
517[word .1, .3, .5] 562[word .1, .3, .5]
518NULL_KEY Indicates an empty key 563NULL_KEY Indicates an empty key
519EOF Indicates the last line of a notecard was read 564EOF Indicates the last line of a notecard was read
520TEXTURE_BLANK UUID for the "Blank" texture 565TEXTURE_BLANK UUID for the "Blank" texture
521TEXTURE_DEFAULT UUID for the "Default Media" texture 566TEXTURE_DEFAULT Alias for TEXTURE_PLYWOOD
567TEXTURE_MEDIA UUID for the "Default Media" texture
522TEXTURE_PLYWOOD UUID for the default "Plywood" texture 568TEXTURE_PLYWOOD UUID for the default "Plywood" texture
523TEXTURE_TRANSPARENT UUID for the "White - Transparent" texture 569TEXTURE_TRANSPARENT UUID for the "White - Transparent" texture
524 570
@@ -539,6 +585,7 @@ SQRT2 1.4142135623730950488016887242097
539ZERO_VECTOR <0.0, 0.0, 0.0> 585ZERO_VECTOR <0.0, 0.0, 0.0>
540ZERO_ROTATION <0.0, 0.0, 0.0, 1.0> 586ZERO_ROTATION <0.0, 0.0, 0.0, 1.0>
541 587
588
542# flow control keywords 589# flow control keywords
543[word 0, 0, .8] 590[word 0, 0, .8]
544for for loop:for (initializer; test; iteration):{: statements:} 591for for loop:for (initializer; test; iteration):{: statements:}
@@ -563,4 +610,4 @@ return Leave current function or event handler
563[two_sided_delimiter_esc 0, .2, 0] 610[two_sided_delimiter_esc 0, .2, 0]
564" " String literal 611" " String literal
565 612
566#functions are supplied by the program now. \ No newline at end of file 613#functions are supplied by the program now.
diff --git a/linden/indra/newview/app_settings/settings.xml b/linden/indra/newview/app_settings/settings.xml
index 852369f..6643e43 100644
--- a/linden/indra/newview/app_settings/settings.xml
+++ b/linden/indra/newview/app_settings/settings.xml
@@ -1,6 +1,160 @@
1<?xml version="1.0" ?> 1<?xml version="1.0" ?>
2<llsd> 2<llsd>
3<map> 3<map>
4
5 <!-- Imprudence-specific settings -->
6
7 <key>AppearanceForceStand</key>
8 <map>
9 <key>Comment</key>
10 <string>Unsit avatar when entering appearance mode?</string>
11 <key>Persist</key>
12 <integer>1</integer>
13 <key>Type</key>
14 <string>Boolean</string>
15 <key>Value</key>
16 <integer>1</integer>
17 </map>
18 <key>DisableLoginLogoutScreens</key>
19 <map>
20 <key>Comment</key>
21 <string>Disable login/logout screen progress bar screens</string>
22 <key>Persist</key>
23 <integer>1</integer>
24 <key>Type</key>
25 <string>Boolean</string>
26 <key>Value</key>
27 <integer>0</integer>
28 </map>
29 <key>DisableTeleportScreens</key>
30 <map>
31 <key>Comment</key>
32 <string>Disable teleport screens</string>
33 <key>Persist</key>
34 <integer>1</integer>
35 <key>Type</key>
36 <string>Boolean</string>
37 <key>Value</key>
38 <integer>0</integer>
39 </map>
40 <key>RezWithLandGroup</key>
41 <map>
42 <key>Comment</key>
43 <string>Attempts to rez objects in the lands group if you're apart of it</string>
44 <key>Persist</key>
45 <integer>1</integer>
46 <key>Type</key>
47 <string>Boolean</string>
48 <key>Value</key>
49 <integer>0</integer>
50 </map>
51 <key>ShadowsEnabled</key>
52 <map>
53 <key>Comment</key>
54 <string>Whether or not shadows have been enabled (does not actually toggle them)</string>
55 <key>Persist</key>
56 <integer>1</integer>
57 <key>Type</key>
58 <string>Boolean</string>
59 <key>Value</key>
60 <integer>0</integer>
61 </map>
62 <key>ShowStatusBarInMouselook</key>
63 <map>
64 <key>Comment</key>
65 <string>Display statistics window when entering mouselook (requires restart).</string>
66 <key>Persist</key>
67 <integer>1</integer>
68 <key>Type</key>
69 <string>Boolean</string>
70 <key>Value</key>
71 <integer>1</integer>
72 </map>
73
74 <!-- Begin: AO-->
75
76 <key>AOEnabled</key>
77 <map>
78 <key>Comment</key>
79 <string>Turn on Animation Overrider</string>
80 <key>Persist</key>
81 <integer>1</integer>
82 <key>Type</key>
83 <string>Boolean</string>
84 <key>Value</key>
85 <integer>0</integer>
86 </map>
87 <key>AOAdvanced</key>
88 <map>
89 <key>Comment</key>
90 <string>Advanced options</string>
91 <key>Persist</key>
92 <integer>0</integer>
93 <key>Type</key>
94 <string>Boolean</string>
95 <key>Value</key>
96 <integer>0</integer>
97 </map>
98 <key>AOSitsEnabled</key>
99 <map>
100 <key>Comment</key>
101 <string>Overrides sit animations.</string>
102 <key>Persist</key>
103 <integer>1</integer>
104 <key>Type</key>
105 <string>Boolean</string>
106 <key>Value</key>
107 <integer>1</integer>
108 </map>
109 <key>AONoStandsInMouselook</key>
110 <map>
111 <key>Comment</key>
112 <string>Disables stand anims during mouselook</string>
113 <key>Persist</key>
114 <integer>1</integer>
115 <key>Type</key>
116 <string>Boolean</string>
117 <key>Value</key>
118 <integer>1</integer>
119 </map>
120 <key>AOStandInterval</key>
121 <map>
122 <key>Comment</key>
123 <string>AO stand time in seconds</string>
124 <key>Persist</key>
125 <integer>1</integer>
126 <key>Type</key>
127 <string>F32</string>
128 <key>Value</key>
129 <real>20</real>
130 </map>
131 <key>AOStandRandomize</key>
132 <map>
133 <key>Comment</key>
134 <string>Randomize stand anims</string>
135 <key>Persist</key>
136 <integer>1</integer>
137 <key>Type</key>
138 <string>Boolean</string>
139 <key>Value</key>
140 <integer>0</integer>
141 </map>
142 <key>AORect</key>
143 <map>
144 <key>Comment</key>
145 <string>Rectangle for AO window</string>
146 <key>Persist</key>
147 <integer>1</integer>
148 <key>Type</key>
149 <string>Rect</string>
150 <key>Value</key>
151 <array>
152 <integer>0</integer>
153 <integer>100</integer>
154 <integer>100</integer>
155 <integer>100</integer>
156 </array>
157 </map>
4 158
5<!-- Begin: Client Name Tag --> 159<!-- Begin: Client Name Tag -->
6 160
@@ -5063,7 +5217,7 @@
5063 <key>Type</key> 5217 <key>Type</key>
5064 <string>Boolean</string> 5218 <string>Boolean</string>
5065 <key>Value</key> 5219 <key>Value</key>
5066 <integer>0</integer> 5220 <integer>1</integer>
5067 </map> 5221 </map>
5068 <key>GridSubdivision</key> 5222 <key>GridSubdivision</key>
5069 <map> 5223 <map>
@@ -12177,6 +12331,17 @@
12177 <key>Value</key> 12331 <key>Value</key>
12178 <integer>1</integer> 12332 <integer>1</integer>
12179 </map> 12333 </map>
12334 <key>WarnFirstAO</key>
12335 <map>
12336 <key>Comment</key>
12337 <string>Enables FirstAO warning dialog</string>
12338 <key>Persist</key>
12339 <integer>1</integer>
12340 <key>Type</key>
12341 <string>Boolean</string>
12342 <key>Value</key>
12343 <integer>1</integer>
12344 </map>
12180 <key>WarnFirstAppearance</key> 12345 <key>WarnFirstAppearance</key>
12181 <map> 12346 <map>
12182 <key>Comment</key> 12347 <key>Comment</key>
diff --git a/linden/indra/newview/app_settings/settings_per_account.xml b/linden/indra/newview/app_settings/settings_per_account.xml
index 59caac4..e965fe6 100644
--- a/linden/indra/newview/app_settings/settings_per_account.xml
+++ b/linden/indra/newview/app_settings/settings_per_account.xml
@@ -1,5 +1,590 @@
1<llsd> 1<llsd>
2 <map> 2 <map>
3
4 <!-- Imprudence-specific settings -->
5
6 <key>InventoryPreviousCount</key>
7 <map>
8 <key>Comment</key>
9 <string>Used to keep track of the number of items in inventory when fetching for progress reasons. DO NOT EDIT.</string>
10 <key>Persist</key>
11 <integer>1</integer>
12 <key>Type</key>
13 <string>S32</string>
14 <key>Value</key>
15 <integer>-1</integer>
16 </map>
17 <key>InventorySearchType</key>
18 <map>
19 <key>Comment</key>
20 <string>Controls what type of inventory search we perform.</string>
21 <key>Persist</key>
22 <integer>0</integer>
23 <key>Type</key>
24 <string>U32</string>
25 <key>Value</key>
26 <integer>0</integer>
27 </map>
28 <key>InventoryPartialSearch</key>
29 <map>
30 <key>Comment</key>
31 <string>Toggles whether to search using partial search filters on normal (name, desc, creator) searches.</string>
32 <key>Persist</key>
33 <integer>0</integer>
34 <key>Type</key>
35 <string>Boolean</string>
36 <key>Value</key>
37 <integer>0</integer>
38 </map>
39
40 <!-- Begin AO -->
41
42 <key>AOConfigNotecardID</key>
43 <map>
44 <key>Comment</key>
45 <string>InventoryItemID of the AO config notecard</string>
46 <key>Persist</key>
47 <integer>1</integer>
48 <key>Type</key>
49 <string>String</string>
50 <key>Value</key>
51 <string></string>
52 </map>
53 <key>AODefaultWalk</key>
54 <map>
55 <key>Comment</key>
56 <string>Default walk anim</string>
57 <key>Persist</key>
58 <integer>1</integer>
59 <key>Type</key>
60 <string>String</string>
61 <key>Value</key>
62 <string></string>
63 </map>
64 <key>AODefaultSit</key>
65 <map>
66 <key>Comment</key>
67 <string>Default sit anim</string>
68 <key>Persist</key>
69 <integer>1</integer>
70 <key>Type</key>
71 <string>String</string>
72 <key>Value</key>
73 <string></string>
74 </map>
75 <key>AODefaultRun</key>
76 <map>
77 <key>Comment</key>
78 <string>Default run anim</string>
79 <key>Persist</key>
80 <integer>1</integer>
81 <key>Type</key>
82 <string>String</string>
83 <key>Value</key>
84 <string></string>
85 </map>
86 <key>AODefaultJump</key>
87 <map>
88 <key>Comment</key>
89 <string>Default jump anim</string>
90 <key>Persist</key>
91 <integer>1</integer>
92 <key>Type</key>
93 <string>String</string>
94 <key>Value</key>
95 <string></string>
96 </map>
97 <key>AODefaultGroundSit</key>
98 <map>
99 <key>Comment</key>
100 <string>Default groundsit anim</string>
101 <key>Persist</key>
102 <integer>1</integer>
103 <key>Type</key>
104 <string>String</string>
105 <key>Value</key>
106 <string></string>
107 </map>
108 <key>AODefaultCrouch</key>
109 <map>
110 <key>Comment</key>
111 <string>Default crouch anim</string>
112 <key>Persist</key>
113 <integer>1</integer>
114 <key>Type</key>
115 <string>String</string>
116 <key>Value</key>
117 <string></string>
118 </map>
119 <key>AODefaultCrouchWalk</key>
120 <map>
121 <key>Comment</key>
122 <string>Default crouchwalk anim</string>
123 <key>Persist</key>
124 <integer>1</integer>
125 <key>Type</key>
126 <string>String</string>
127 <key>Value</key>
128 <string></string>
129 </map>
130 <key>AODefaultFall</key>
131 <map>
132 <key>Comment</key>
133 <string>Default fall anim</string>
134 <key>Persist</key>
135 <integer>1</integer>
136 <key>Type</key>
137 <string>String</string>
138 <key>Value</key>
139 <string></string>
140 </map>
141 <key>AODefaultHover</key>
142 <map>
143 <key>Comment</key>
144 <string>Default hover anim</string>
145 <key>Persist</key>
146 <integer>1</integer>
147 <key>Type</key>
148 <string>String</string>
149 <key>Value</key>
150 <string></string>
151 </map>
152 <key>AODefaultFly</key>
153 <map>
154 <key>Comment</key>
155 <string>Default fly anim</string>
156 <key>Persist</key>
157 <integer>1</integer>
158 <key>Type</key>
159 <string>String</string>
160 <key>Value</key>
161 <string></string>
162 </map>
163 <key>AODefaultFlySlow</key>
164 <map>
165 <key>Comment</key>
166 <string>Default flyslow anim</string>
167 <key>Persist</key>
168 <integer>1</integer>
169 <key>Type</key>
170 <string>String</string>
171 <key>Value</key>
172 <string></string>
173 </map>
174 <key>AODefaultFlyUp</key>
175 <map>
176 <key>Comment</key>
177 <string>Default flyup anim</string>
178 <key>Persist</key>
179 <integer>1</integer>
180 <key>Type</key>
181 <string>String</string>
182 <key>Value</key>
183 <string></string>
184 </map>
185 <key>AODefaultFlyDown</key>
186 <map>
187 <key>Comment</key>
188 <string>Default flydown anim</string>
189 <key>Persist</key>
190 <integer>1</integer>
191 <key>Type</key>
192 <string>String</string>
193 <key>Value</key>
194 <string></string>
195 </map>
196 <key>AODefaultLand</key>
197 <map>
198 <key>Comment</key>
199 <string>Default land anim</string>
200 <key>Persist</key>
201 <integer>1</integer>
202 <key>Type</key>
203 <string>String</string>
204 <key>Value</key>
205 <string></string>
206 </map>
207 <key>AODefaultStandUp</key>
208 <map>
209 <key>Comment</key>
210 <string>Default standup anim</string>
211 <key>Persist</key>
212 <integer>1</integer>
213 <key>Type</key>
214 <string>String</string>
215 <key>Value</key>
216 <string></string>
217 </map>
218 <key>AODefaultPreJump</key>
219 <map>
220 <key>Comment</key>
221 <string>Default prejump anim</string>
222 <key>Persist</key>
223 <integer>1</integer>
224 <key>Type</key>
225 <string>String</string>
226 <key>Value</key>
227 <string></string>
228 </map>
229
230 <!-- End AO -->
231
232 <!-- Begin build -->
233
234 <key>BuildPrefs_Xsize</key>
235 <map>
236 <key>Comment</key>
237 <string>Default Size For New Objects to be created X</string>
238 <key>Persist</key>
239 <integer>1</integer>
240 <key>Type</key>
241 <string>F32</string>
242 <key>Value</key>
243 <real>0.5</real>
244 </map>
245 <key>BuildPrefs_Ysize</key>
246 <map>
247 <key>Comment</key>
248 <string>Default Size For New Objects to be created Y</string>
249 <key>Persist</key>
250 <integer>1</integer>
251 <key>Type</key>
252 <string>F32</string>
253 <key>Value</key>
254 <real>0.5</real>
255 </map>
256 <key>BuildPrefs_Zsize</key>
257 <map>
258 <key>Comment</key>
259 <string>Default Size For New Objects to be created Z</string>
260 <key>Persist</key>
261 <integer>1</integer>
262 <key>Type</key>
263 <string>F32</string>
264 <key>Value</key>
265 <real>0.5</real>
266 </map>
267 <key>BuildPrefs_Phantom</key>
268 <map>
269 <key>Comment</key>
270 <string>Default Setting For New Objects to be created, phantom flag</string>
271 <key>Persist</key>
272 <integer>1</integer>
273 <key>Type</key>
274 <string>Boolean</string>
275 <key>Value</key>
276 <integer>0</integer>
277 </map>
278 <key>BuildPrefs_Temporary</key>
279 <map>
280 <key>Comment</key>
281 <string>Default Setting For New Objects to be created, temp flag</string>
282 <key>Persist</key>
283 <integer>1</integer>
284 <key>Type</key>
285 <string>Boolean</string>
286 <key>Value</key>
287 <integer>0</integer>
288 </map>
289 <key>BuildPrefs_Physical</key>
290 <map>
291 <key>Comment</key>
292 <string>Default Setting For New Objects to be created, physical flag</string>
293 <key>Persist</key>
294 <integer>1</integer>
295 <key>Type</key>
296 <string>Boolean</string>
297 <key>Value</key>
298 <integer>0</integer>
299 </map>
300 <key>BuildPrefs_EmbedItem</key>
301 <map>
302 <key>Comment</key>
303 <string>Whether to add item to objects</string>
304 <key>Persist</key>
305 <integer>1</integer>
306 <key>Type</key>
307 <string>Boolean</string>
308 <key>Value</key>
309 <integer>1</integer>
310 </map>
311 <key>BuildPrefs_Material</key>
312 <map>
313 <key>Comment</key>
314 <string>Default Setting For New Objects to be created, physical flag</string>
315 <key>Persist</key>
316 <integer>1</integer>
317 <key>Type</key>
318 <string>String</string>
319 <key>Value</key>
320 <string>Wood</string>
321 </map>
322 <key>BuildPrefs_Color</key>
323 <map>
324 <key>Comment</key>
325 <string>Color of new objects textures</string>
326 <key>Persist</key>
327 <integer>1</integer>
328 <key>Type</key>
329 <string>Color4</string>
330 <key>Value</key>
331 <array>
332 <real>1.0</real>
333 <real>1.0</real>
334 <real>1.0</real>
335 <real>1.0</real>
336 </array>
337 </map>
338 <key>BuildPrefs_Texture</key>
339 <map>
340 <key>Comment</key>
341 <string>Texture used as 'Default' for new object created</string>
342 <key>Persist</key>
343 <integer>1</integer>
344 <key>Type</key>
345 <string>String</string>
346 <key>Value</key>
347 <string>89556747-24cb-43ed-920b-47caed15465f</string>
348 </map>
349 <key>BuildPrefs_Item</key>
350 <map>
351 <key>Comment</key>
352 <string>item added to new object created</string>
353 <key>Persist</key>
354 <integer>1</integer>
355 <key>Type</key>
356 <string>String</string>
357 <key>Value</key>
358 <string></string>
359 </map>
360 <key>BuildPrefs_Alpha</key>
361 <map>
362 <key>Comment</key>
363 <string>Default Alpha For New Objects to be created</string>
364 <key>Persist</key>
365 <integer>1</integer>
366 <key>Type</key>
367 <string>F32</string>
368 <key>Value</key>
369 <real>0.0</real>
370 </map>
371 <key>BuildPrefs_Glow</key>
372 <map>
373 <key>Comment</key>
374 <string>Default Glow For New Objects to be created</string>
375 <key>Persist</key>
376 <integer>1</integer>
377 <key>Type</key>
378 <string>F32</string>
379 <key>Value</key>
380 <real>0.0</real>
381 </map>
382 <key>BuildPrefs_FullBright</key>
383 <map>
384 <key>Comment</key>
385 <string>Default Setting For New Objects to be created, whether textures are full bright</string>
386 <key>Persist</key>
387 <integer>1</integer>
388 <key>Type</key>
389 <string>Boolean</string>
390 <key>Value</key>
391 <integer>0</integer>
392 </map>
393 <key>BuildPrefs_Shiny</key>
394 <map>
395 <key>Comment</key>
396 <string>Shiny level used as 'Default' for new objects created</string>
397 <key>Persist</key>
398 <integer>1</integer>
399 <key>Type</key>
400 <string>String</string>
401 <key>Value</key>
402 <string>None</string>
403 </map>
404 <key>BuildPrefs_PivotX</key>
405 <map>
406 <key>Comment</key>
407 <string>Pivot point on the X axis</string>
408 <key>Persist</key>
409 <integer>1</integer>
410 <key>Type</key>
411 <string>F32</string>
412 <key>Value</key>
413 <real>50</real>
414 </map>
415 <key>BuildPrefs_PivotY</key>
416 <map>
417 <key>Comment</key>
418 <string>Pivot point on the Y axis</string>
419 <key>Persist</key>
420 <integer>1</integer>
421 <key>Type</key>
422 <string>F32</string>
423 <key>Value</key>
424 <real>50</real>
425 </map>
426 <key>BuildPrefs_PivotZ</key>
427 <map>
428 <key>Comment</key>
429 <string>Pivot point on the Z axis</string>
430 <key>Persist</key>
431 <integer>1</integer>
432 <key>Type</key>
433 <string>F32</string>
434 <key>Value</key>
435 <real>50</real>
436 </map>
437 <key>BuildPrefs_PivotIsPercent</key>
438 <map>
439 <key>Comment</key>
440 <string>Consider the Pivot points values as a percentage</string>
441 <key>Persist</key>
442 <integer>1</integer>
443 <key>Type</key>
444 <string>Boolean</string>
445 <key>Value</key>
446 <integer>1</integer>
447 </map>
448 <key>BuildPrefs_ActualRoot</key>
449 <map>
450 <key>Comment</key>
451 <string>Show the axis on the actual root of a linkset instead of mass center</string>
452 <key>Persist</key>
453 <integer>1</integer>
454 <key>Type</key>
455 <string>Boolean</string>
456 <key>Value</key>
457 <integer>0</integer>
458 </map>
459
460 <!-- End build-->
461
462 <!-- Begin IM auto-response -->
463
464 <key>InstantMessageResponseFriends</key>
465 <map>
466 <key>Comment</key>
467 <string>Whether to auto-respond to non-friends</string>
468 <key>Persist</key>
469 <integer>1</integer>
470 <key>Type</key>
471 <string>Boolean</string>
472 <key>Value</key>
473 <integer>0</integer>
474 </map>
475 <key>InstantMessageResponseMuted</key>
476 <map>
477 <key>Comment</key>
478 <string>Whether to auto-respond to muted people</string>
479 <key>Persist</key>
480 <integer>1</integer>
481 <key>Type</key>
482 <string>Boolean</string>
483 <key>Value</key>
484 <integer>0</integer>
485 </map>
486 <key>InstantMessageResponseAnyone</key>
487 <map>
488 <key>Comment</key>
489 <string>Whether to auto-respond to anyone</string>
490 <key>Persist</key>
491 <integer>1</integer>
492 <key>Type</key>
493 <string>Boolean</string>
494 <key>Value</key>
495 <integer>0</integer>
496 </map>
497 <key>InstantMessageShowResponded</key>
498 <map>
499 <key>Comment</key>
500 <string>Whether to hide IMs entirely from those you have chosen to send autoresponses</string>
501 <key>Persist</key>
502 <integer>1</integer>
503 <key>Type</key>
504 <string>Boolean</string>
505 <key>Value</key>
506 <integer>0</integer>
507 </map>
508 <key>InstantMessageShowOnTyping</key>
509 <map>
510 <key>Comment</key>
511 <string>Whether to perform the autorespond the moment they begin to type instead of waiting for a actual message</string>
512 <key>Persist</key>
513 <integer>1</integer>
514 <key>Type</key>
515 <string>Boolean</string>
516 <key>Value</key>
517 <integer>0</integer>
518 </map>
519 <key>InstantMessageResponseRepeat</key>
520 <map>
521 <key>Comment</key>
522 <string>Whether to keep on resending the autoresponse every line they send</string>
523 <key>Persist</key>
524 <integer>1</integer>
525 <key>Type</key>
526 <string>Boolean</string>
527 <key>Value</key>
528 <integer>0</integer>
529 </map>
530 <key>InstantMessageResponseItem</key>
531 <map>
532 <key>Comment</key>
533 <string>Whether to send a item along with the autoresponse</string>
534 <key>Persist</key>
535 <integer>1</integer>
536 <key>Type</key>
537 <string>Boolean</string>
538 <key>Value</key>
539 <integer>0</integer>
540 </map>
541 <key>InstantMessageResponse</key>
542 <map>
543 <key>Comment</key>
544 <string>Auto response to instant messages</string>
545 <key>Persist</key>
546 <integer>1</integer>
547 <key>Type</key>
548 <string>String</string>
549 <key>Value</key>
550 <string>This is an autoresponse!</string>
551 </map>
552 <key>InstantMessageResponseItemData</key>
553 <map>
554 <key>Comment</key>
555 <string>UUID</string>
556 <key>Persist</key>
557 <integer>1</integer>
558 <key>Type</key>
559 <string>String</string>
560 <key>Value</key>
561 <string></string>
562 </map>
563 <key>InstantMessageAnnounceIncoming</key>
564 <map>
565 <key>Comment</key>
566 <string>Open a new IM tab when another person begins typing to you and announce that they are doing so.</string>
567 <key>Persist</key>
568 <integer>1</integer>
569 <key>Type</key>
570 <string>Boolean</string>
571 <key>Value</key>
572 <integer>0</integer>
573 </map>
574 <key>InstantMessageAnnounceStealFocus</key>
575 <map>
576 <key>Comment</key>
577 <string>Steal focus when opening new IM tab due to other person begins first typing this session</string>
578 <key>Persist</key>
579 <integer>1</integer>
580 <key>Type</key>
581 <string>Boolean</string>
582 <key>Value</key>
583 <integer>1</integer>
584 </map>
585
586 <!-- End IM auto-response -->
587
3 <key>RLVaLoginLastLocation</key> 588 <key>RLVaLoginLastLocation</key>
4 <map> 589 <map>
5 <key>Comment</key> 590 <key>Comment</key>
diff --git a/linden/indra/newview/floaterao.cpp b/linden/indra/newview/floaterao.cpp
new file mode 100644
index 0000000..b084189
--- /dev/null
+++ b/linden/indra/newview/floaterao.cpp
@@ -0,0 +1,1439 @@
1/**
2 * @file llfloaterao.cpp
3 * @brief clientside animation overrider
4 * by Skills Hak
5 */
6
7#include "llviewerprecompiledheaders.h"
8
9#include "floaterao.h"
10
11#include "llagent.h"
12#include "llvoavatar.h"
13#include "llanimationstates.h"
14#include "lluictrlfactory.h"
15#include "llinventoryview.h"
16#include "llstartup.h"
17#include "llpreviewnotecard.h"
18#include "llviewertexteditor.h"
19#include "llcheckboxctrl.h"
20#include "llcombobox.h"
21#include "llspinctrl.h"
22// Uncomment and use instead if we ever add the chatbar as a command line - MC
23//#include "chatbar_as_cmdline.h"
24#include "llfloaterchat.h"
25#include "llfirstuse.h"
26
27#include "llinventory.h"
28#include "llinventoryview.h"
29#include "roles_constants.h"
30#include "llviewerregion.h"
31
32#include "llpanelinventory.h"
33#include "llinventorybridge.h"
34
35#include "llboost.h"
36#include <boost/regex.hpp>
37
38// Uncomment and use instead if we ever add the chatbar as a command line - MC
39//void cmdline_printchat(std::string message);
40void cmdline_printchat(std::string message)
41{
42 LLChat chat;
43 chat.mText = message;
44 chat.mSourceType = CHAT_SOURCE_SYSTEM;
45 LLFloaterChat::addChat(chat, FALSE, FALSE);
46}
47
48
49class AONotecardCallback : public LLInventoryCallback
50{
51public:
52 AONotecardCallback(std::string &filename)
53 {
54 mFileName = filename;
55 }
56
57 void fire(const LLUUID &inv_item)
58 {
59 if (!mFileName.empty())
60 {
61 LLPreviewNotecard* nc;
62 nc = (LLPreviewNotecard*)LLPreview::find(inv_item);
63 if(nc)
64 {
65 nc->open();
66 LLTextEditor *text = nc->getEditor();
67 if (text)
68 {
69 text->setText(LLStringUtil::null);
70 text->makePristine();
71
72 std::ifstream file(mFileName.c_str());
73
74 std::string line;
75 while (!file.eof())
76 {
77 getline(file, line);
78 line = line + "\n";
79 text->insertText(line);
80 }
81 file.close();
82
83 nc->saveIfNeeded();
84 }
85 }
86 }
87 }
88
89private:
90 std::string mFileName;
91};
92
93
94// -------------------------------------------------------
95
96AOStandTimer* mAOStandTimer;
97
98AOStandTimer::AOStandTimer() : LLEventTimer( gSavedSettings.getF32("AOStandInterval") )
99{
100 AOStandTimer::tick();
101}
102AOStandTimer::~AOStandTimer()
103{
104// llinfos << "dead" << llendl;
105}
106void AOStandTimer::reset()
107{
108 mPeriod = gSavedSettings.getF32("AOStandInterval");
109 mEventTimer.reset();
110// llinfos << "reset" << llendl;
111}
112BOOL AOStandTimer::tick()
113{
114 LLFloaterAO::stand_iterator++;
115// llinfos << "tick" << llendl;
116 LLFloaterAO::ChangeStand();
117 return FALSE;
118// return LLFloaterAO::ChangeStand(); //timer is always active now ..
119}
120
121// -------------------------------------------------------
122
123AOInvTimer::AOInvTimer() : LLEventTimer( (F32)1.0 )
124{
125}
126AOInvTimer::~AOInvTimer()
127{
128}
129BOOL AOInvTimer::tick()
130{
131 if (!(gSavedSettings.getBOOL("AOEnabled"))) return TRUE;
132 if(LLStartUp::getStartupState() >= STATE_INVENTORY_SEND)
133 {
134 if(gInventory.isEverythingFetched())
135 {
136// cmdline_printchat("Inventory fetched, loading AO.");
137 LLFloaterAO::init();
138 return TRUE;
139 }
140 }
141 return FALSE;
142}
143// NC DROP -------------------------------------------------------
144
145class AONoteCardDropTarget : public LLView
146{
147public:
148 AONoteCardDropTarget(const std::string& name, const LLRect& rect, void (*callback)(LLViewerInventoryItem*));
149 ~AONoteCardDropTarget();
150
151 void doDrop(EDragAndDropType cargo_type, void* cargo_data);
152
153 //
154 // LLView functionality
155 virtual BOOL handleDragAndDrop(S32 x, S32 y, MASK mask, BOOL drop,
156 EDragAndDropType cargo_type,
157 void* cargo_data,
158 EAcceptance* accept,
159 std::string& tooltip_msg);
160protected:
161 void (*mDownCallback)(LLViewerInventoryItem*);
162};
163
164
165AONoteCardDropTarget::AONoteCardDropTarget(const std::string& name, const LLRect& rect,
166 void (*callback)(LLViewerInventoryItem*)) :
167 LLView(name, rect, NOT_MOUSE_OPAQUE, FOLLOWS_ALL),
168 mDownCallback(callback)
169{
170}
171
172AONoteCardDropTarget::~AONoteCardDropTarget()
173{
174}
175
176void AONoteCardDropTarget::doDrop(EDragAndDropType cargo_type, void* cargo_data)
177{
178// llinfos << "AONoteCardDropTarget::doDrop()" << llendl;
179}
180
181BOOL AONoteCardDropTarget::handleDragAndDrop(S32 x, S32 y, MASK mask, BOOL drop,
182 EDragAndDropType cargo_type,
183 void* cargo_data,
184 EAcceptance* accept,
185 std::string& tooltip_msg)
186{
187 BOOL handled = FALSE;
188 if(getParent())
189 {
190 handled = TRUE;
191 LLViewerInventoryItem* inv_item = (LLViewerInventoryItem*)cargo_data;
192 if(gInventory.getItem(inv_item->getUUID()))
193 {
194 *accept = ACCEPT_YES_COPY_SINGLE;
195 if(drop)
196 {
197 mDownCallback(inv_item);
198 }
199 }
200 else
201 {
202 *accept = ACCEPT_NO;
203 }
204 }
205 return handled;
206}
207
208AONoteCardDropTarget * LLFloaterAO::mAOItemDropTarget;
209
210
211// STUFF -------------------------------------------------------
212
213int LLFloaterAO::mAnimationState = 0;
214int LLFloaterAO::stand_iterator = 0;
215
216LLUUID LLFloaterAO::invfolderid = LLUUID::null;
217LLUUID LLFloaterAO::mCurrentStandId = LLUUID::null;
218
219LLComboBox* mcomboBox_stands;
220LLComboBox* mcomboBox_walks;
221LLComboBox* mcomboBox_runs;
222LLComboBox* mcomboBox_jumps;
223LLComboBox* mcomboBox_sits;
224LLComboBox* mcomboBox_gsits;
225LLComboBox* mcomboBox_crouchs;
226LLComboBox* mcomboBox_cwalks;
227LLComboBox* mcomboBox_falls;
228LLComboBox* mcomboBox_hovers;
229LLComboBox* mcomboBox_flys;
230LLComboBox* mcomboBox_flyslows;
231LLComboBox* mcomboBox_flyups;
232LLComboBox* mcomboBox_flydowns;
233LLComboBox* mcomboBox_lands;
234LLComboBox* mcomboBox_standups;
235LLComboBox* mcomboBox_prejumps;
236
237struct struct_overrides
238{
239 LLUUID orig_id;
240 LLUUID ao_id;
241 int state;
242};
243std::vector<struct_overrides> mAOOverrides;
244
245struct struct_stands
246{
247 LLUUID ao_id;
248 std::string anim_name;
249};
250std::vector<struct_stands> mAOStands;
251
252struct struct_tokens
253{
254 std::string token;
255 int state;
256};
257std::vector<struct_tokens> mAOTokens;
258
259LLFloaterAO* LLFloaterAO::sInstance = NULL;
260
261LLFloaterAO::LLFloaterAO()
262:LLFloater(std::string("floater_ao"))
263{
264// init();
265 llassert_always(sInstance == NULL);
266 LLUICtrlFactory::getInstance()->buildFloater(this, "floater_ao.xml");
267 sInstance = this;
268}
269
270LLFloaterAO::~LLFloaterAO()
271{
272 sInstance=NULL;
273 mcomboBox_stands = 0;
274 mcomboBox_walks = 0;
275 mcomboBox_runs = 0;
276 mcomboBox_jumps = 0;
277 mcomboBox_sits = 0;
278 mcomboBox_gsits = 0;
279 mcomboBox_crouchs = 0;
280 mcomboBox_cwalks = 0;
281 mcomboBox_falls = 0;
282 mcomboBox_hovers = 0;
283 mcomboBox_flys = 0;
284 mcomboBox_flyslows = 0;
285 mcomboBox_flyups = 0;
286 mcomboBox_flydowns = 0;
287 mcomboBox_lands = 0;
288 mcomboBox_standups = 0;
289 mcomboBox_prejumps = 0;
290 delete mAOItemDropTarget;
291 mAOItemDropTarget = NULL;
292// llinfos << "floater destroyed" << llendl;
293}
294
295void LLFloaterAO::show(void*)
296{
297 if (!sInstance)
298 {
299 sInstance = new LLFloaterAO();
300 updateLayout(sInstance);
301 init();
302
303 sInstance->open();
304 }
305 else
306 {
307 sInstance->close();
308 }
309 LLFirstUse::useAO();
310}
311
312bool LLFloaterAO::getInstance()
313{
314 if (sInstance)
315 return true;
316 else
317 return false;
318}
319
320BOOL LLFloaterAO::postBuild()
321{
322 LLView *target_view = getChild<LLView>("ao_notecard");
323 if(target_view)
324 {
325 if (mAOItemDropTarget)
326 {
327 delete mAOItemDropTarget;
328 }
329 mAOItemDropTarget = new AONoteCardDropTarget("drop target", target_view->getRect(), AOItemDrop);//, mAvatarID);
330 addChild(mAOItemDropTarget);
331 }
332 if(LLStartUp::getStartupState() == STATE_STARTED)
333 {
334 LLUUID itemidimport = (LLUUID)gSavedPerAccountSettings.getString("AOConfigNotecardID");
335 LLViewerInventoryItem* itemimport = gInventory.getItem(itemidimport);
336 if(itemimport)
337 {
338 childSetValue("ao_nc_text","Currently set to: "+itemimport->getName());
339 }
340 else if(itemidimport.isNull())
341 {
342 childSetValue("ao_nc_text","Currently not set");
343 }
344 else
345 {
346 childSetValue("ao_nc_text","Currently set to a item not on this account");
347 }
348 }
349 else
350 {
351 childSetValue("ao_nc_text","Not logged in");
352 }
353 childSetAction("more_btn", onClickMore, this);
354 childSetAction("less_btn", onClickLess, this);
355
356 childSetAction("reloadcard",onClickReloadCard,this);
357 childSetAction("opencard",onClickOpenCard,this);
358 childSetAction("newcard",onClickNewCard,this);
359 childSetAction("prevstand",onClickPrevStand,this);
360 childSetAction("nextstand",onClickNextStand,this);
361 childSetCommitCallback("AOEnabled",onClickToggleAO);
362 childSetCommitCallback("AOSitsEnabled",onClickToggleSits);
363 childSetCommitCallback("standtime",onSpinnerCommit);
364 mcomboBox_stands = getChild<LLComboBox>("stands");
365 mcomboBox_walks = getChild<LLComboBox>("walks");
366 mcomboBox_runs = getChild<LLComboBox>("runs");
367 mcomboBox_jumps = getChild<LLComboBox>("jumps");
368 mcomboBox_sits = getChild<LLComboBox>("sits");
369 mcomboBox_gsits = getChild<LLComboBox>("gsits");
370 mcomboBox_crouchs = getChild<LLComboBox>("crouchs");
371 mcomboBox_cwalks = getChild<LLComboBox>("cwalks");
372 mcomboBox_falls = getChild<LLComboBox>("falls");
373 mcomboBox_hovers = getChild<LLComboBox>("hovers");
374 mcomboBox_flys = getChild<LLComboBox>("flys");
375 mcomboBox_flyslows = getChild<LLComboBox>("flyslows");
376 mcomboBox_flyups = getChild<LLComboBox>("flyups");
377 mcomboBox_flydowns = getChild<LLComboBox>("flydowns");
378 mcomboBox_lands = getChild<LLComboBox>("lands");
379 mcomboBox_standups = getChild<LLComboBox>("standups");
380 mcomboBox_prejumps = getChild<LLComboBox>("prejumps");
381 getChild<LLComboBox>("stands")->setCommitCallback(onComboBoxCommit);
382 getChild<LLComboBox>("walks")->setCommitCallback(onComboBoxCommit);
383 getChild<LLComboBox>("runs")->setCommitCallback(onComboBoxCommit);
384 getChild<LLComboBox>("jumps")->setCommitCallback(onComboBoxCommit);
385 getChild<LLComboBox>("sits")->setCommitCallback(onComboBoxCommit);
386 getChild<LLComboBox>("gsits")->setCommitCallback(onComboBoxCommit);
387 getChild<LLComboBox>("crouchs")->setCommitCallback(onComboBoxCommit);
388 getChild<LLComboBox>("cwalks")->setCommitCallback(onComboBoxCommit);
389 getChild<LLComboBox>("falls")->setCommitCallback(onComboBoxCommit);
390 getChild<LLComboBox>("hovers")->setCommitCallback(onComboBoxCommit);
391 getChild<LLComboBox>("flys")->setCommitCallback(onComboBoxCommit);
392 getChild<LLComboBox>("flyslows")->setCommitCallback(onComboBoxCommit);
393 getChild<LLComboBox>("flyups")->setCommitCallback(onComboBoxCommit);
394 getChild<LLComboBox>("flydowns")->setCommitCallback(onComboBoxCommit);
395 getChild<LLComboBox>("lands")->setCommitCallback(onComboBoxCommit);
396 getChild<LLComboBox>("standups")->setCommitCallback(onComboBoxCommit);
397 getChild<LLComboBox>("prejumps")->setCommitCallback(onComboBoxCommit);
398
399 return TRUE;
400}
401
402void LLFloaterAO::onSpinnerCommit(LLUICtrl* ctrl, void* userdata)
403{
404 LLSpinCtrl* spin = (LLSpinCtrl*) ctrl;
405 if(spin)
406 {
407 if (spin->getName() == "standtime")
408 {
409 if (mAOStandTimer) mAOStandTimer->reset();
410 }
411 }
412}
413
414void LLFloaterAO::onComboBoxCommit(LLUICtrl* ctrl, void* userdata)
415{
416 LLComboBox* box = (LLComboBox*)ctrl;
417 if(box)
418 {
419 if (box->getName() == "stands")
420 {
421 stand_iterator = box->getCurrentIndex();
422 cmdline_printchat(llformat("Changing stand to %s.",mAOStands[stand_iterator].anim_name.c_str()));
423 ChangeStand();
424 }
425 else
426 {
427 int state = STATE_AGENT_IDLE;
428 std::string stranim = box->getValue().asString();
429// llinfos << "state " << (gAgent.getAvatarObject()->mIsSitting) << " - " << getAnimationState() << llendl;
430 if (box->getName() == "walks")
431 {
432 gAgent.sendAnimationRequest(GetAnimID(ANIM_AGENT_WALK), ANIM_REQUEST_STOP);
433 gSavedPerAccountSettings.setString("AODefaultWalk",stranim);
434 state = STATE_AGENT_WALK;
435 }
436 else if (box->getName() == "runs")
437 {
438 gAgent.sendAnimationRequest(GetAnimID(ANIM_AGENT_RUN), ANIM_REQUEST_STOP);
439 gSavedPerAccountSettings.setString("AODefaultRun",stranim);
440 state = STATE_AGENT_RUN;
441 }
442 else if (box->getName() == "jumps")
443 {
444 gAgent.sendAnimationRequest(GetAnimID(ANIM_AGENT_JUMP), ANIM_REQUEST_STOP);
445 gSavedPerAccountSettings.setString("AODefaultJump",stranim);
446 state = STATE_AGENT_JUMP;
447 }
448 else if (box->getName() == "sits")
449 {
450 if (gAgent.getAvatarObject() && (gSavedSettings.getBOOL("AOEnabled")) && (gSavedSettings.getBOOL("AOSitsEnabled")))
451 {
452 if ((gAgent.getAvatarObject()->mIsSitting) && (getAnimationState() == STATE_AGENT_SIT))
453 {
454// llinfos << "sitting " << GetAnimID(ANIM_AGENT_SIT) << " " << getAssetIDByName(stranim) << llendl;
455 gAgent.sendAnimationRequest(GetAnimID(ANIM_AGENT_SIT), ANIM_REQUEST_STOP);
456 gAgent.sendAnimationRequest(getAssetIDByName(stranim), ANIM_REQUEST_START);
457 }
458 }
459 gSavedPerAccountSettings.setString("AODefaultSit",stranim);
460 state = STATE_AGENT_SIT;
461 }
462 else if (box->getName() == "gsits")
463 {
464// llinfos << "gsitting " << GetAnimID(ANIM_AGENT_SIT_GROUND) << " " << getAssetIDByName(stranim) << llendl;
465 if (gAgent.getAvatarObject())
466 {
467 if ((gAgent.getAvatarObject()->mIsSitting) && (getAnimationState() == STATE_AGENT_GROUNDSIT))
468 {
469// llinfos << "gsitting " << GetAnimID(ANIM_AGENT_SIT_GROUND) << " " << getAssetIDByName(stranim) << llendl;
470 gAgent.sendAnimationRequest(GetAnimID(ANIM_AGENT_SIT_GROUND), ANIM_REQUEST_STOP);
471 gAgent.sendAnimationRequest(getAssetIDByName(stranim), ANIM_REQUEST_START);
472 }
473 }
474 gSavedPerAccountSettings.setString("AODefaultGroundSit",stranim);
475 state = STATE_AGENT_GROUNDSIT;
476 }
477 else if (box->getName() == "crouchs")
478 {
479 gAgent.sendAnimationRequest(GetAnimID(ANIM_AGENT_CROUCH), ANIM_REQUEST_STOP);
480 gSavedPerAccountSettings.setString("AODefaultCrouch",stranim);
481 state = STATE_AGENT_CROUCH;
482 }
483 else if (box->getName() == "cwalks")
484 {
485 gAgent.sendAnimationRequest(GetAnimID(ANIM_AGENT_CROUCHWALK), ANIM_REQUEST_STOP);
486 gSavedPerAccountSettings.setString("AODefaultCrouchWalk",stranim);
487 state = STATE_AGENT_CROUCHWALK;
488 }
489 else if (box->getName() == "falls")
490 {
491 gAgent.sendAnimationRequest(GetAnimID(ANIM_AGENT_FALLDOWN), ANIM_REQUEST_STOP);
492 gSavedPerAccountSettings.setString("AODefaultFall",stranim);
493 state = STATE_AGENT_FALLDOWN;
494 }
495 else if (box->getName() == "hovers")
496 {
497 gAgent.sendAnimationRequest(GetAnimID(ANIM_AGENT_HOVER), ANIM_REQUEST_STOP);
498 gSavedPerAccountSettings.setString("AODefaultHover",stranim);
499 state = STATE_AGENT_HOVER;
500 }
501 else if (box->getName() == "flys")
502 {
503 gAgent.sendAnimationRequest(GetAnimID(ANIM_AGENT_FLY), ANIM_REQUEST_STOP);
504 gSavedPerAccountSettings.setString("AODefaultFly",stranim);
505 state = STATE_AGENT_FLY;
506 }
507 else if (box->getName() == "flyslows")
508 {
509 gAgent.sendAnimationRequest(GetAnimID(ANIM_AGENT_FLYSLOW), ANIM_REQUEST_STOP);
510 gSavedPerAccountSettings.setString("AODefaultFlySlow",stranim);
511 state = STATE_AGENT_FLYSLOW;
512 }
513 else if (box->getName() == "flyups")
514 {
515 gAgent.sendAnimationRequest(GetAnimID(ANIM_AGENT_HOVER_UP), ANIM_REQUEST_STOP);
516 gSavedPerAccountSettings.setString("AODefaultFlyUp",stranim);
517 state = STATE_AGENT_HOVER_UP;
518 }
519 else if (box->getName() == "flydowns")
520 {
521 gAgent.sendAnimationRequest(GetAnimID(ANIM_AGENT_HOVER_DOWN), ANIM_REQUEST_STOP);
522 gSavedPerAccountSettings.setString("AODefaultFlyDown",stranim);
523 state = STATE_AGENT_HOVER_DOWN;
524 }
525 else if (box->getName() == "lands")
526 {
527 gAgent.sendAnimationRequest(GetAnimID(ANIM_AGENT_LAND), ANIM_REQUEST_STOP);
528 gSavedPerAccountSettings.setString("AODefaultLand",stranim);
529 state = STATE_AGENT_LAND;
530 }
531 else if (box->getName() == "standups")
532 {
533 gAgent.sendAnimationRequest(GetAnimID(ANIM_AGENT_STAND), ANIM_REQUEST_STOP);
534 gSavedPerAccountSettings.setString("AODefaultStandUp",stranim);
535 state = STATE_AGENT_STAND;
536 }
537 else if (box->getName() == "prejumps")
538 {
539 gAgent.sendAnimationRequest(GetAnimID(ANIM_AGENT_PRE_JUMP), ANIM_REQUEST_STOP);
540 gSavedPerAccountSettings.setString("AODefaultPreJump",stranim);
541 state = STATE_AGENT_PRE_JUMP;
542 }
543 for (std::vector<struct_overrides>::iterator iter = mAOOverrides.begin(); iter != mAOOverrides.end(); ++iter)
544 {
545 if (state == iter->state)
546 {
547 iter->ao_id = getAssetIDByName(stranim);
548 }
549 }
550 }
551 }
552}
553
554void LLFloaterAO::updateLayout(LLFloaterAO* floater)
555{
556 if (floater)
557 {
558 BOOL advanced = gSavedSettings.getBOOL( "AOAdvanced");
559 if (advanced)
560 {
561 floater->reshape(610,380); //view->getRect().getWidth(), view->getUIWinHeightLong());
562 }
563 else
564 {
565 floater->reshape(200,380); //view->getRect().getWidth(), view->getUIWinHeightShort());
566 }
567
568 floater->childSetVisible("more_btn", !advanced);
569 floater->childSetVisible("less_btn", advanced);
570
571 floater->childSetVisible("tabcontainer", advanced);
572 floater->childSetVisible("tabdefaultanims", advanced);
573
574 floater->childSetVisible("textdefaultwalk", advanced);
575 floater->childSetVisible("textdefaultrun", advanced);
576 floater->childSetVisible("textdefaultjump", advanced);
577 floater->childSetVisible("textdefaultsit", advanced);
578 floater->childSetVisible("textdefaultgsit", advanced);
579 floater->childSetVisible("textdefaultcrouch", advanced);
580 floater->childSetVisible("textdefaultcrouchwalk", advanced);
581 floater->childSetVisible("textdefaultfall", advanced);
582 floater->childSetVisible("textdefaulthover", advanced);
583 floater->childSetVisible("textdefaultfly", advanced);
584 floater->childSetVisible("textdefaultflyslow", advanced);
585 floater->childSetVisible("textdefaultflyup", advanced);
586 floater->childSetVisible("textdefaultflydown", advanced);
587 floater->childSetVisible("textdefaultland", advanced);
588 floater->childSetVisible("textdefaultstandup", advanced);
589 floater->childSetVisible("textdefaultprejump", advanced);
590
591
592 floater->childSetVisible("walks", advanced);
593 floater->childSetVisible("runs", advanced);
594 floater->childSetVisible("jumps", advanced);
595 floater->childSetVisible("sits", advanced);
596 floater->childSetVisible("gsits", advanced);
597 floater->childSetVisible("crouchs", advanced);
598 floater->childSetVisible("crouchwalks", advanced);
599 floater->childSetVisible("falls", advanced);
600 floater->childSetVisible("hovers", advanced);
601 floater->childSetVisible("flys", advanced);
602 floater->childSetVisible("flyslows", advanced);
603 floater->childSetVisible("flyups", advanced);
604 floater->childSetVisible("flydowns", advanced);
605 floater->childSetVisible("lands", advanced);
606 floater->childSetVisible("standups", advanced);
607 floater->childSetVisible("prejumps", advanced);
608 }
609}
610
611void LLFloaterAO::init()
612{
613 mAOStands.clear();
614 mAOTokens.clear();
615 mAOOverrides.clear();
616
617 struct_tokens tokenloader;
618 tokenloader.token =
619 tokenloader.token = "[ Sitting On Ground ]"; tokenloader.state = STATE_AGENT_GROUNDSIT; mAOTokens.push_back(tokenloader); // 0
620 tokenloader.token = "[ Sitting ]"; tokenloader.state = STATE_AGENT_SIT; mAOTokens.push_back(tokenloader); // 1
621 tokenloader.token = "[ Crouching ]"; tokenloader.state = STATE_AGENT_CROUCH; mAOTokens.push_back(tokenloader); // 3
622 tokenloader.token = "[ Crouch Walking ]"; tokenloader.state = STATE_AGENT_CROUCHWALK; mAOTokens.push_back(tokenloader); // 4
623 tokenloader.token = "[ Standing Up ]"; tokenloader.state = STATE_AGENT_STANDUP; mAOTokens.push_back(tokenloader); // 6
624 tokenloader.token = "[ Falling ]"; tokenloader.state = STATE_AGENT_FALLDOWN; mAOTokens.push_back(tokenloader); // 7
625 tokenloader.token = "[ Flying Down ]"; tokenloader.state = STATE_AGENT_HOVER_DOWN; mAOTokens.push_back(tokenloader); // 8
626 tokenloader.token = "[ Flying Up ]"; tokenloader.state = STATE_AGENT_HOVER_UP; mAOTokens.push_back(tokenloader); // 9
627 tokenloader.token = "[ Flying Slow ]"; tokenloader.state = STATE_AGENT_FLYSLOW; mAOTokens.push_back(tokenloader); // 10
628 tokenloader.token = "[ Flying ]"; tokenloader.state = STATE_AGENT_FLY; mAOTokens.push_back(tokenloader); // 11
629 tokenloader.token = "[ Hovering ]"; tokenloader.state = STATE_AGENT_HOVER; mAOTokens.push_back(tokenloader); // 12
630 tokenloader.token = "[ Jumping ]"; tokenloader.state = STATE_AGENT_JUMP; mAOTokens.push_back(tokenloader); // 13
631 tokenloader.token = "[ Pre Jumping ]"; tokenloader.state = STATE_AGENT_PRE_JUMP; mAOTokens.push_back(tokenloader); // 14
632 tokenloader.token = "[ Running ]"; tokenloader.state = STATE_AGENT_RUN; mAOTokens.push_back(tokenloader); // 15
633 tokenloader.token = "[ Turning Right ]"; tokenloader.state = STATE_AGENT_TURNRIGHT; mAOTokens.push_back(tokenloader); // 16
634 tokenloader.token = "[ Turning Left ]"; tokenloader.state = STATE_AGENT_TURNLEFT; mAOTokens.push_back(tokenloader); // 17
635 tokenloader.token = "[ Walking ]"; tokenloader.state = STATE_AGENT_WALK; mAOTokens.push_back(tokenloader); // 18
636 tokenloader.token = "[ Landing ]"; tokenloader.state = STATE_AGENT_LAND; mAOTokens.push_back(tokenloader); // 19
637 tokenloader.token = "[ Standing ]"; tokenloader.state = STATE_AGENT_STAND; mAOTokens.push_back(tokenloader); // 20
638 tokenloader.token = "[ Swimming Down ]"; tokenloader.state = 999; mAOTokens.push_back(tokenloader); // 21
639 tokenloader.token = "[ Swimming Up ]"; tokenloader.state = 999; mAOTokens.push_back(tokenloader); // 22
640 tokenloader.token = "[ Swimming Forward ]"; tokenloader.state = 999; mAOTokens.push_back(tokenloader); // 23
641 tokenloader.token = "[ Floating ]"; tokenloader.state = 999; mAOTokens.push_back(tokenloader); // 24
642
643 struct_overrides overrideloader;
644 overrideloader.orig_id = ANIM_AGENT_WALK; overrideloader.ao_id = LLUUID::null; overrideloader.state = STATE_AGENT_WALK; mAOOverrides.push_back(overrideloader);
645 overrideloader.orig_id = ANIM_AGENT_RUN; overrideloader.ao_id = LLUUID::null; overrideloader.state = STATE_AGENT_RUN; mAOOverrides.push_back(overrideloader);
646 overrideloader.orig_id = ANIM_AGENT_PRE_JUMP; overrideloader.ao_id = LLUUID::null; overrideloader.state = STATE_AGENT_PRE_JUMP; mAOOverrides.push_back(overrideloader);
647 overrideloader.orig_id = ANIM_AGENT_JUMP; overrideloader.ao_id = LLUUID::null; overrideloader.state = STATE_AGENT_JUMP; mAOOverrides.push_back(overrideloader);
648 overrideloader.orig_id = ANIM_AGENT_TURNLEFT; overrideloader.ao_id = LLUUID::null; overrideloader.state = STATE_AGENT_TURNLEFT; mAOOverrides.push_back(overrideloader);
649 overrideloader.orig_id = ANIM_AGENT_TURNRIGHT; overrideloader.ao_id = LLUUID::null; overrideloader.state = STATE_AGENT_TURNRIGHT; mAOOverrides.push_back(overrideloader);
650
651 overrideloader.orig_id = ANIM_AGENT_SIT; overrideloader.ao_id = LLUUID::null; overrideloader.state = STATE_AGENT_SIT; mAOOverrides.push_back(overrideloader);
652 overrideloader.orig_id = ANIM_AGENT_SIT_FEMALE; overrideloader.ao_id = LLUUID::null; overrideloader.state = STATE_AGENT_SIT; mAOOverrides.push_back(overrideloader);
653 overrideloader.orig_id = ANIM_AGENT_SIT_GENERIC; overrideloader.ao_id = LLUUID::null; overrideloader.state = STATE_AGENT_SIT; mAOOverrides.push_back(overrideloader);
654 overrideloader.orig_id = ANIM_AGENT_SIT_GROUND; overrideloader.ao_id = LLUUID::null; overrideloader.state = STATE_AGENT_GROUNDSIT; mAOOverrides.push_back(overrideloader);
655 overrideloader.orig_id = ANIM_AGENT_SIT_GROUND_CONSTRAINED; overrideloader.ao_id = LLUUID::null; overrideloader.state = STATE_AGENT_GROUNDSIT; mAOOverrides.push_back(overrideloader);
656
657 overrideloader.orig_id = ANIM_AGENT_HOVER; overrideloader.ao_id = LLUUID::null; overrideloader.state = STATE_AGENT_HOVER; mAOOverrides.push_back(overrideloader);
658 overrideloader.orig_id = ANIM_AGENT_HOVER_DOWN; overrideloader.ao_id = LLUUID::null; overrideloader.state = STATE_AGENT_HOVER_DOWN; mAOOverrides.push_back(overrideloader);
659 overrideloader.orig_id = ANIM_AGENT_HOVER_UP; overrideloader.ao_id = LLUUID::null; overrideloader.state = STATE_AGENT_HOVER_UP; mAOOverrides.push_back(overrideloader);
660
661 overrideloader.orig_id = ANIM_AGENT_CROUCH; overrideloader.ao_id = LLUUID::null; overrideloader.state = STATE_AGENT_CROUCH; mAOOverrides.push_back(overrideloader);
662 overrideloader.orig_id = ANIM_AGENT_CROUCHWALK; overrideloader.ao_id = LLUUID::null; overrideloader.state = STATE_AGENT_CROUCHWALK; mAOOverrides.push_back(overrideloader);
663
664 overrideloader.orig_id = ANIM_AGENT_FALLDOWN; overrideloader.ao_id = LLUUID::null; overrideloader.state = STATE_AGENT_FALLDOWN; mAOOverrides.push_back(overrideloader);
665 overrideloader.orig_id = ANIM_AGENT_STANDUP; overrideloader.ao_id = LLUUID::null; overrideloader.state = STATE_AGENT_STANDUP; mAOOverrides.push_back(overrideloader);
666 overrideloader.orig_id = ANIM_AGENT_LAND; overrideloader.ao_id = LLUUID::null; overrideloader.state = STATE_AGENT_LAND; mAOOverrides.push_back(overrideloader);
667
668 overrideloader.orig_id = ANIM_AGENT_FLY; overrideloader.ao_id = LLUUID::null; overrideloader.state = STATE_AGENT_FLY; mAOOverrides.push_back(overrideloader);
669 overrideloader.orig_id = ANIM_AGENT_FLYSLOW; overrideloader.ao_id = LLUUID::null; overrideloader.state = STATE_AGENT_FLYSLOW; mAOOverrides.push_back(overrideloader);
670
671 BOOL success = TRUE;
672
673 if(LLStartUp::getStartupState() >= STATE_INVENTORY_SEND)
674 {
675 if(gInventory.isEverythingFetched())
676 {
677 LLUUID configncitem = (LLUUID)gSavedPerAccountSettings.getString("AOConfigNotecardID");
678 if (configncitem.notNull())
679 {
680 success = FALSE;
681 const LLInventoryItem* item = gInventory.getItem(configncitem);
682 if(item)
683 {
684 if (gAgent.allowOperation(PERM_COPY, item->getPermissions(),GP_OBJECT_MANIPULATE) || gAgent.isGodlike())
685 {
686 if(!item->getAssetUUID().isNull())
687 {
688 LLUUID* new_uuid = new LLUUID(configncitem);
689 LLHost source_sim = LLHost::invalid;
690 invfolderid = item->getParentUUID();
691 gAssetStorage->getInvItemAsset(source_sim,
692 gAgent.getID(),
693 gAgent.getSessionID(),
694 item->getPermissions().getOwner(),
695 LLUUID::null,
696 item->getUUID(),
697 item->getAssetUUID(),
698 item->getType(),
699 &onNotecardLoadComplete,
700 (void*)new_uuid,
701 TRUE);
702 success = TRUE;
703 }
704 }
705 }
706 }
707 }
708 }
709
710 if (!success)
711 {
712 cmdline_printchat("Could not read the specified Config Notecard");
713 }
714
715// mAnimationState = 0;
716// mCurrentStandId = LLUUID::null;
717// setAnimationState(STATE_AGENT_IDLE);
718
719}
720
721void LLFloaterAO::onClickMore(void* data)
722{
723 gSavedSettings.setBOOL( "AOAdvanced", TRUE );
724 updateLayout(sInstance);
725}
726void LLFloaterAO::onClickLess(void* data)
727{
728 gSavedSettings.setBOOL( "AOAdvanced", FALSE );
729 updateLayout(sInstance);
730}
731
732void LLFloaterAO::onClickToggleAO(LLUICtrl *, void*)
733{
734 run();
735}
736
737void LLFloaterAO::onClickToggleSits(LLUICtrl *, void*)
738{
739 run();
740}
741
742
743void LLFloaterAO::run()
744{
745 setAnimationState(STATE_AGENT_IDLE); // reset state
746 int state = getAnimationState(); // check if sitting or hovering
747 if ((state == STATE_AGENT_IDLE) || (state == STATE_AGENT_STAND))
748 {
749 if (gSavedSettings.getBOOL("AOEnabled"))
750 {
751 if (mAOStandTimer)
752 {
753 mAOStandTimer->reset();
754 ChangeStand();
755 }
756 else
757 {
758 mAOStandTimer = new AOStandTimer();
759 }
760 }
761 else
762 {
763 stopMotion(getCurrentStandId(), FALSE, TRUE); //stop stand first then set state
764 setAnimationState(STATE_AGENT_IDLE);
765 }
766 }
767 else
768 {
769 if (state == STATE_AGENT_SIT) gAgent.sendAnimationRequest(GetAnimIDFromState(state), (gSavedSettings.getBOOL("AOEnabled") && gSavedSettings.getBOOL("AOSitsEnabled")) ? ANIM_REQUEST_START : ANIM_REQUEST_STOP);
770 else gAgent.sendAnimationRequest(GetAnimIDFromState(state), gSavedSettings.getBOOL("AOEnabled") ? ANIM_REQUEST_START : ANIM_REQUEST_STOP);
771 }
772}
773
774int LLFloaterAO::getAnimationState()
775{
776 if (gAgent.getAvatarObject())
777 {
778 if (gAgent.getAvatarObject()->mIsSitting) setAnimationState(STATE_AGENT_SIT);
779 else if (gAgent.getFlying()) setAnimationState(STATE_AGENT_HOVER);
780 }
781 return mAnimationState;
782}
783
784void LLFloaterAO::setAnimationState(const int state)
785{
786 mAnimationState = state;
787}
788
789LLUUID LLFloaterAO::getCurrentStandId()
790{
791 return mCurrentStandId;
792}
793
794void LLFloaterAO::setCurrentStandId(const LLUUID& id)
795{
796 mCurrentStandId = id;
797}
798
799void LLFloaterAO::AOItemDrop(LLViewerInventoryItem* item)
800{
801 gSavedPerAccountSettings.setString("AOConfigNotecardID", item->getUUID().asString());
802 sInstance->childSetValue("ao_nc_text","Currently set to: "+item->getName());
803}
804
805LLUUID LLFloaterAO::GetAnimID(const LLUUID& id)
806{
807 for (std::vector<struct_overrides>::iterator iter = mAOOverrides.begin(); iter != mAOOverrides.end(); ++iter)
808 {
809 if (iter->orig_id == id) return iter->ao_id;
810 }
811 return LLUUID::null;
812}
813
814int LLFloaterAO::GetStateFromAnimID(const LLUUID& id)
815{
816 for (std::vector<struct_overrides>::iterator iter = mAOOverrides.begin(); iter != mAOOverrides.end(); ++iter)
817 {
818 if (iter->orig_id == id) return iter->state;
819 }
820 return STATE_AGENT_IDLE;
821}
822
823LLUUID LLFloaterAO::GetAnimIDFromState(const int state)
824{
825 for (std::vector<struct_overrides>::iterator iter = mAOOverrides.begin(); iter != mAOOverrides.end(); ++iter)
826 {
827 if (iter->state == state) return iter->ao_id;
828 }
829 return LLUUID::null;
830}
831
832int LLFloaterAO::GetStateFromToken(std::string strtoken)
833{
834 for (std::vector<struct_tokens>::iterator iter = mAOTokens.begin(); iter != mAOTokens.end(); ++iter)
835 {
836 if (iter->token == strtoken) return iter->state;
837 }
838 return STATE_AGENT_IDLE;
839}
840
841void LLFloaterAO::onClickPrevStand(void* user_data)
842{
843 if (!(mAOStands.size() > 0)) return;
844 stand_iterator=stand_iterator-1;
845 if (stand_iterator < 0) stand_iterator = int( mAOStands.size()-stand_iterator);
846 if (stand_iterator > int( mAOStands.size()-1)) stand_iterator = 0;
847 cmdline_printchat(llformat("Changing stand to %s.",mAOStands[stand_iterator].anim_name.c_str()));
848 ChangeStand();
849}
850
851void LLFloaterAO::onClickNextStand(void* user_data)
852{
853 if (!(mAOStands.size() > 0)) return;
854 stand_iterator=stand_iterator+1;
855 if (stand_iterator < 0) stand_iterator = int( mAOStands.size()-stand_iterator);
856 if (stand_iterator > int( mAOStands.size()-1)) stand_iterator = 0;
857 cmdline_printchat(llformat("Changing stand to %s.",mAOStands[stand_iterator].anim_name.c_str()));
858 ChangeStand();
859}
860
861BOOL LLFloaterAO::ChangeStand()
862{
863 if (gSavedSettings.getBOOL("AOEnabled"))
864 {
865 if (gAgent.getAvatarObject())
866 {
867 if (gSavedSettings.getBOOL("AONoStandsInMouselook") && gAgent.cameraMouselook()) return FALSE;
868
869 if (gAgent.getAvatarObject()->mIsSitting)
870 {
871// stopMotion(getCurrentStandId(), FALSE, TRUE); //stop stand first then set state
872// if (getAnimationState() != STATE_AGENT_GROUNDSIT) setAnimationState(STATE_AGENT_SIT);
873// setCurrentStandId(LLUUID::null);
874 return FALSE;
875 }
876 }
877 if ((getAnimationState() == STATE_AGENT_IDLE) || (getAnimationState() == STATE_AGENT_STAND))// stands have lowest priority
878 {
879 if (!(mAOStands.size() > 0)) return TRUE;
880 if (gSavedSettings.getBOOL("AOStandRandomize"))
881 {
882 stand_iterator = ll_rand(mAOStands.size()-1);
883 }
884 if (stand_iterator < 0) stand_iterator = int( mAOStands.size()-stand_iterator);
885 if (stand_iterator > int( mAOStands.size()-1)) stand_iterator = 0;
886
887 int stand_iterator_previous = stand_iterator -1;
888
889 if (stand_iterator_previous < 0) stand_iterator_previous = int( mAOStands.size()-1);
890
891 if (mAOStands[stand_iterator].ao_id.notNull())
892 {
893 stopMotion(getCurrentStandId(), FALSE, TRUE); //stop stand first then set state
894 startMotion(mAOStands[stand_iterator].ao_id, 0, TRUE);
895
896 setAnimationState(STATE_AGENT_STAND);
897 setCurrentStandId(mAOStands[stand_iterator].ao_id);
898 if ((sInstance)&&(mcomboBox_stands)) mcomboBox_stands->selectNthItem(stand_iterator);
899// llinfos << "changing stand to " << mAOStands[stand_iterator].anim_name << llendl;
900 return FALSE;
901 }
902 }
903 }
904 else
905 {
906 stopMotion(getCurrentStandId(), FALSE, TRUE);
907 return TRUE; //stop if ao is off
908 }
909 return TRUE;
910}
911
912
913BOOL LLFloaterAO::startMotion(const LLUUID& id, F32 time_offset, BOOL stand)
914{
915 if (stand)
916 {
917 if (id.notNull())
918 {
919 BOOL sitting = FALSE;
920 if (gAgent.getAvatarObject())
921 {
922 sitting = gAgent.getAvatarObject()->mIsSitting;
923 }
924 if (sitting) return FALSE;
925 gAgent.sendAnimationRequest(id, ANIM_REQUEST_START);
926 return TRUE;
927 }
928 }
929 else
930 {
931 if (GetAnimID(id).notNull() && gSavedSettings.getBOOL("AOEnabled"))
932 {
933 stopMotion(getCurrentStandId(), FALSE, TRUE); //stop stand first then set state
934 setAnimationState(GetStateFromAnimID(id));
935
936// llinfos << " state " << getAnimationState() << " start anim " << id << " overriding with " << GetAnimID(id) << llendl;
937 if ((GetStateFromAnimID(id) == STATE_AGENT_SIT) && !(gSavedSettings.getBOOL("AOSitsEnabled"))) return TRUE;
938 gAgent.sendAnimationRequest(GetAnimID(id), ANIM_REQUEST_START);
939 return TRUE;
940 }
941 }
942 return FALSE;
943}
944
945BOOL LLFloaterAO::stopMotion(const LLUUID& id, BOOL stop_immediate, BOOL stand)
946{
947 if (stand)
948 {
949 setAnimationState(STATE_AGENT_IDLE);
950 gAgent.sendAnimationRequest(id, ANIM_REQUEST_STOP);
951 return TRUE;
952 }
953 else
954 {
955 if (GetAnimID(id).notNull() && gSavedSettings.getBOOL("AOEnabled"))
956 {
957// llinfos << " state " << getAnimationState() << "/" << GetStateFromAnimID(id) << "(now 0) stop anim " << id << " overriding with " << GetAnimID(id) << llendl;
958 if (getAnimationState() == GetStateFromAnimID(id))
959 {
960 setAnimationState(STATE_AGENT_IDLE);
961 }
962 ChangeStand(); // startMotion(getCurrentStandId(), 0, TRUE);
963 gAgent.sendAnimationRequest(GetAnimID(id), ANIM_REQUEST_STOP);
964 return TRUE;
965 }
966 }
967 return FALSE;
968}
969
970void LLFloaterAO::onClickReloadCard(void* user_data)
971{
972 if(gInventory.isEverythingFetched())
973 {
974 LLFloaterAO::init();
975 }
976}
977
978void LLFloaterAO::onClickOpenCard(void* user_data)
979{
980 if(gInventory.isEverythingFetched())
981 {
982 LLUUID configncitem = (LLUUID)gSavedPerAccountSettings.getString("AOConfigNotecardID");
983 if (configncitem.notNull())
984 {
985 const LLInventoryItem* item = gInventory.getItem(configncitem);
986 if(item)
987 {
988 if (gAgent.allowOperation(PERM_COPY, item->getPermissions(),GP_OBJECT_MANIPULATE) || gAgent.isGodlike())
989 {
990 if(!item->getAssetUUID().isNull())
991 open_notecard((LLViewerInventoryItem*)item, std::string("Note: ") + item->getName(), LLUUID::null, FALSE);
992 // open_notecard((LLViewerInventoryItem*)item, std::string("Note: ") + item->getName(), LLUUID::null, FALSE, LLUUID::null, FALSE);
993 }
994 }
995 }
996 }
997}
998
999void LLFloaterAO::onClickNewCard(void* user_data)
1000{
1001 // load the template file from app_settings/ao_template.ini then
1002 // create a new properly-formatted notecard in the user's inventory
1003 std::string ao_template = gDirUtilp->getExpandedFilename(LL_PATH_APP_SETTINGS, "ao_template.ini");
1004 if (!ao_template.empty())
1005 {
1006 LLPointer<LLInventoryCallback> cb = new AONotecardCallback(ao_template);
1007 create_inventory_item(gAgent.getID(), gAgent.getSessionID(),
1008 LLUUID::null, LLTransactionID::tnull, "New AO Notecard",
1009 "Drop this notecard in your AO window to use", LLAssetType::AT_NOTECARD,
1010 LLInventoryType::IT_NOTECARD, NOT_WEARABLE, PERM_ALL, cb);
1011 }
1012 else
1013 {
1014 llwarns << "Can't find ao_template.ini in app_settings!" << llendl;
1015 }
1016}
1017
1018struct AOAssetInfo
1019{
1020 std::string path;
1021 std::string name;
1022};
1023
1024void LLFloaterAO::onNotecardLoadComplete(LLVFS *vfs,const LLUUID& asset_uuid,LLAssetType::EType type,void* user_data, S32 status, LLExtStat ext_status)
1025{
1026 if(status == LL_ERR_NOERR)
1027 {
1028 S32 size = vfs->getSize(asset_uuid, type);
1029 U8* buffer = new U8[size];
1030 vfs->getData(asset_uuid, type, buffer, 0, size);
1031
1032 if(type == LLAssetType::AT_NOTECARD)
1033 {
1034 LLViewerTextEditor* edit = new LLViewerTextEditor("",LLRect(0,0,0,0),S32_MAX,"");
1035 if(edit->importBuffer((char*)buffer, (S32)size))
1036 {
1037 llinfos << "ao nc decode success" << llendl;
1038 std::string card = edit->getText();
1039 edit->die();
1040
1041 if (mcomboBox_stands)
1042 {
1043 mcomboBox_stands->clear();
1044 mcomboBox_stands->removeall();
1045 }
1046 if (mcomboBox_walks) mcomboBox_walks->clear();
1047 if (mcomboBox_runs) mcomboBox_runs->clear();
1048 if (mcomboBox_jumps) mcomboBox_jumps->clear();
1049 if (mcomboBox_sits) mcomboBox_sits->clear();
1050 if (mcomboBox_gsits) mcomboBox_gsits->clear();
1051 if (mcomboBox_crouchs) mcomboBox_cwalks->clear();
1052 if (mcomboBox_cwalks) mcomboBox_cwalks->clear();
1053 if (mcomboBox_falls) mcomboBox_falls->clear();
1054 if (mcomboBox_hovers) mcomboBox_hovers->clear();
1055 if (mcomboBox_flys) mcomboBox_flys->clear();
1056 if (mcomboBox_flyslows) mcomboBox_flyslows->clear();
1057 if (mcomboBox_flyups) mcomboBox_flyups->clear();
1058 if (mcomboBox_flydowns) mcomboBox_flydowns->clear();
1059 if (mcomboBox_lands) mcomboBox_lands->clear();
1060 if (mcomboBox_standups) mcomboBox_standups->clear();
1061 if (mcomboBox_prejumps) mcomboBox_prejumps->clear();
1062
1063
1064 struct_stands loader;
1065
1066 typedef boost::tokenizer<boost::char_separator<char> > tokenizer;
1067 boost::char_separator<char> sep("\n");
1068 tokenizer tokline(card, sep);
1069
1070 for (tokenizer::iterator line = tokline.begin(); line != tokline.end(); ++line)
1071 {
1072// llinfos << *line << llendl;
1073 std::string strline(*line);
1074// llinfos << "uncommented line: " << strline << llendl;
1075
1076 boost::regex type("^(\\s*)(\\[ )(.*)( \\])");
1077 boost::smatch what;
1078 if (boost::regex_search(strline, what, type))
1079 {
1080// llinfos << "type: " << what[0] << llendl;
1081// llinfos << "anims in type: " << boost::regex_replace(strline, type, "") << llendl;
1082
1083 boost::char_separator<char> sep("|,");
1084 std::string stranimnames(boost::regex_replace(strline, type, ""));
1085 tokenizer tokanimnames(stranimnames, sep);
1086 for (tokenizer::iterator anim = tokanimnames.begin(); anim != tokanimnames.end(); ++anim)
1087 {
1088 std::string strtoken(what[0]);
1089 std::string stranim(*anim);
1090 LLUUID animid(getAssetIDByName(stranim));
1091
1092// llinfos << invfolderid.asString().c_str() << llendl;
1093// llinfos << "anim: " << stranim.c_str() << " assetid: " << animid << llendl;
1094 if (!(animid.notNull()))
1095 {
1096 cmdline_printchat(llformat("Warning: animation '%s' could not be found (Section: %s).",stranim.c_str(),strtoken.c_str()));
1097 }
1098 else
1099 {
1100 switch(GetStateFromToken(strtoken.c_str()))
1101 {
1102 case STATE_AGENT_STAND:
1103 loader.ao_id = animid; loader.anim_name = stranim.c_str(); mAOStands.push_back(loader);
1104 if(mcomboBox_stands != NULL) mcomboBox_stands->add(stranim.c_str(), ADD_BOTTOM, TRUE);
1105 break;
1106 case STATE_AGENT_WALK:
1107 {
1108 if (sInstance && (mcomboBox_walks != NULL))
1109 {
1110 //llinfos << "1 anim: " << stranim.c_str() << " assetid: " << animid << llendl;
1111 if (!(mcomboBox_walks->selectByValue(stranim.c_str()))) mcomboBox_walks->add(stranim.c_str(), ADD_BOTTOM, TRUE); //check if exist
1112 }
1113 }
1114 break;
1115 case STATE_AGENT_RUN:
1116 {
1117 if (sInstance && (mcomboBox_runs != NULL))
1118 {
1119 if (!(mcomboBox_runs->selectByValue(stranim.c_str()))) mcomboBox_runs->add(stranim.c_str(), ADD_BOTTOM, TRUE); //check if exist
1120 }
1121 }
1122 break;
1123 case STATE_AGENT_JUMP:
1124 {
1125 if (sInstance && (mcomboBox_jumps != NULL))
1126 {
1127 if (!(mcomboBox_jumps->selectByValue(stranim.c_str()))) mcomboBox_jumps->add(stranim.c_str(), ADD_BOTTOM, TRUE); //check if exist
1128 }
1129 }
1130 break;
1131 case STATE_AGENT_SIT:
1132 {
1133 if (sInstance && (mcomboBox_sits != NULL))
1134 {
1135 if (!(mcomboBox_sits->selectByValue(stranim.c_str()))) mcomboBox_sits->add(stranim.c_str(), ADD_BOTTOM, TRUE); //check if exist
1136 }
1137 }
1138 break;
1139 case STATE_AGENT_GROUNDSIT:
1140 {
1141 if (sInstance && (mcomboBox_gsits != NULL))
1142 {
1143 if (!(mcomboBox_gsits->selectByValue(stranim.c_str()))) mcomboBox_gsits->add(stranim.c_str(), ADD_BOTTOM, TRUE); //check if exist
1144 }
1145 }
1146 break;
1147 case STATE_AGENT_CROUCH:
1148 {
1149 if (sInstance && (mcomboBox_crouchs != NULL))
1150 {
1151 if (!(mcomboBox_crouchs->selectByValue(stranim.c_str()))) mcomboBox_crouchs->add(stranim.c_str(), ADD_BOTTOM, TRUE); //check if exist
1152 }
1153 }
1154 break;
1155 case STATE_AGENT_CROUCHWALK:
1156 {
1157 if (sInstance && (mcomboBox_cwalks != NULL))
1158 {
1159 if (!(mcomboBox_cwalks->selectByValue(stranim.c_str()))) mcomboBox_cwalks->add(stranim.c_str(), ADD_BOTTOM, TRUE); //check if exist
1160 }
1161 }
1162 break;
1163 case STATE_AGENT_FALLDOWN:
1164 {
1165 if (sInstance && (mcomboBox_falls != NULL))
1166 {
1167 if (!(mcomboBox_falls->selectByValue(stranim.c_str()))) mcomboBox_falls->add(stranim.c_str(), ADD_BOTTOM, TRUE); //check if exist
1168 }
1169 }
1170 break;
1171 case STATE_AGENT_HOVER:
1172 {
1173 if (sInstance && (mcomboBox_hovers != NULL))
1174 {
1175 if (!(mcomboBox_hovers->selectByValue(stranim.c_str()))) mcomboBox_hovers->add(stranim.c_str(), ADD_BOTTOM, TRUE); //check if exist
1176 }
1177 }
1178 break;
1179 case STATE_AGENT_FLY:
1180 {
1181 if (sInstance && (mcomboBox_flys != NULL))
1182 {
1183 if (!(mcomboBox_flys->selectByValue(stranim.c_str()))) mcomboBox_flys->add(stranim.c_str(), ADD_BOTTOM, TRUE); //check if exist
1184 }
1185 }
1186 break;
1187 case STATE_AGENT_FLYSLOW:
1188 {
1189 if (sInstance && (mcomboBox_flyslows != NULL))
1190 {
1191 if (!(mcomboBox_flyslows->selectByValue(stranim.c_str()))) mcomboBox_flyslows->add(stranim.c_str(), ADD_BOTTOM, TRUE); //check if exist
1192 }
1193 }
1194 break;
1195 case STATE_AGENT_HOVER_UP:
1196 {
1197 if (sInstance && (mcomboBox_flyups != NULL))
1198 {
1199 if (!(mcomboBox_flyups->selectByValue(stranim.c_str()))) mcomboBox_flyups->add(stranim.c_str(), ADD_BOTTOM, TRUE); //check if exist
1200 }
1201 }
1202 break;
1203 case STATE_AGENT_HOVER_DOWN:
1204 {
1205 if (sInstance && (mcomboBox_flydowns != NULL))
1206 {
1207 if (!(mcomboBox_flydowns->selectByValue(stranim.c_str()))) mcomboBox_flydowns->add(stranim.c_str(), ADD_BOTTOM, TRUE); //check if exist
1208 }
1209 }
1210 break;
1211 case STATE_AGENT_LAND:
1212 {
1213 if (sInstance && (mcomboBox_lands != NULL))
1214 {
1215 if (!(mcomboBox_lands->selectByValue(stranim.c_str()))) mcomboBox_lands->add(stranim.c_str(), ADD_BOTTOM, TRUE); //check if exist
1216 }
1217 }
1218 break;
1219 case STATE_AGENT_STANDUP:
1220 {
1221 if (sInstance && (mcomboBox_standups != NULL))
1222 {
1223 if (!(mcomboBox_standups->selectByValue(stranim.c_str()))) mcomboBox_standups->add(stranim.c_str(), ADD_BOTTOM, TRUE); //check if exist
1224 }
1225 }
1226 break;
1227 case STATE_AGENT_PRE_JUMP:
1228 {
1229 if (sInstance && (mcomboBox_prejumps != NULL))
1230 {
1231 if (!(mcomboBox_prejumps->selectByValue(stranim.c_str()))) mcomboBox_prejumps->add(stranim.c_str(), ADD_BOTTOM, TRUE); //check if exist
1232 }
1233 }
1234 break;
1235 }
1236 for (std::vector<struct_overrides>::iterator iter = mAOOverrides.begin(); iter != mAOOverrides.end(); ++iter)
1237 {
1238 if (GetStateFromToken(strtoken.c_str()) == iter->state)
1239 {
1240 iter->ao_id = animid;
1241 }
1242 }
1243 }
1244 }
1245 }
1246 }
1247 llinfos << "ao nc read sucess" << llendl;
1248
1249 for (std::vector<struct_overrides>::iterator iter = mAOOverrides.begin(); iter != mAOOverrides.end(); ++iter)
1250 {
1251 switch(iter->state)
1252 {
1253
1254 case STATE_AGENT_WALK:
1255 {
1256 std::string defaultanim = gSavedPerAccountSettings.getString("AODefaultWalk");
1257 SetDefault(mcomboBox_walks,iter->ao_id,defaultanim);
1258 if (getAssetIDByName(defaultanim) != LLUUID::null) iter->ao_id = getAssetIDByName(defaultanim);
1259 }
1260 break;
1261 case STATE_AGENT_RUN:
1262 {
1263 std::string defaultanim = gSavedPerAccountSettings.getString("AODefaultRun");
1264 SetDefault(mcomboBox_runs,iter->ao_id,defaultanim);
1265 if (getAssetIDByName(defaultanim) != LLUUID::null) iter->ao_id = getAssetIDByName(defaultanim);
1266 }
1267 break;
1268 case STATE_AGENT_JUMP:
1269 {
1270 std::string defaultanim = gSavedPerAccountSettings.getString("AODefaultJump");
1271 SetDefault(mcomboBox_jumps,iter->ao_id,defaultanim);
1272 if (getAssetIDByName(defaultanim) != LLUUID::null) iter->ao_id = getAssetIDByName(defaultanim);
1273 }
1274 break;
1275 case STATE_AGENT_SIT:
1276 {
1277 std::string defaultanim = gSavedPerAccountSettings.getString("AODefaultSit");
1278 SetDefault(mcomboBox_sits,iter->ao_id,defaultanim);
1279 if (getAssetIDByName(defaultanim) != LLUUID::null) iter->ao_id = getAssetIDByName(defaultanim);
1280 }
1281 break;
1282 case STATE_AGENT_CROUCH:
1283 {
1284 std::string defaultanim = gSavedPerAccountSettings.getString("AODefaultCrouch");
1285 SetDefault(mcomboBox_crouchs,iter->ao_id,defaultanim);
1286 if (getAssetIDByName(defaultanim) != LLUUID::null) iter->ao_id = getAssetIDByName(defaultanim);
1287 }
1288 break;
1289 case STATE_AGENT_GROUNDSIT:
1290 {
1291 std::string defaultanim = gSavedPerAccountSettings.getString("AODefaultGroundSit");
1292 SetDefault(mcomboBox_gsits,iter->ao_id,defaultanim);
1293 if (getAssetIDByName(defaultanim) != LLUUID::null) iter->ao_id = getAssetIDByName(defaultanim);
1294 }
1295 break;
1296 case STATE_AGENT_CROUCHWALK:
1297 {
1298 std::string defaultanim = gSavedPerAccountSettings.getString("AODefaultCrouchWalk");
1299 SetDefault(mcomboBox_cwalks,iter->ao_id,defaultanim);
1300 if (getAssetIDByName(defaultanim) != LLUUID::null) iter->ao_id = getAssetIDByName(defaultanim);
1301 }
1302 break;
1303 case STATE_AGENT_FALLDOWN:
1304 {
1305 std::string defaultanim = gSavedPerAccountSettings.getString("AODefaultFall");
1306 SetDefault(mcomboBox_falls,iter->ao_id,defaultanim);
1307 if (getAssetIDByName(defaultanim) != LLUUID::null) iter->ao_id = getAssetIDByName(defaultanim);
1308 }
1309 break;
1310 case STATE_AGENT_HOVER:
1311 {
1312 std::string defaultanim = gSavedPerAccountSettings.getString("AODefaultHover");
1313 SetDefault(mcomboBox_hovers,iter->ao_id,defaultanim);
1314 if (getAssetIDByName(defaultanim) != LLUUID::null) iter->ao_id = getAssetIDByName(defaultanim);
1315 }
1316 break;
1317 case STATE_AGENT_FLY:
1318 {
1319 std::string defaultanim = gSavedPerAccountSettings.getString("AODefaultFly");
1320 SetDefault(mcomboBox_flys,iter->ao_id,defaultanim);
1321 if (getAssetIDByName(defaultanim) != LLUUID::null) iter->ao_id = getAssetIDByName(defaultanim);
1322 }
1323 break;
1324 case STATE_AGENT_HOVER_UP:
1325 {
1326 std::string defaultanim = gSavedPerAccountSettings.getString("AODefaultFlyUp");
1327 SetDefault(mcomboBox_flyups,iter->ao_id,defaultanim);
1328 if (getAssetIDByName(defaultanim) != LLUUID::null) iter->ao_id = getAssetIDByName(defaultanim);
1329 }
1330 break;
1331 case STATE_AGENT_FLYSLOW:
1332 {
1333 std::string defaultanim = gSavedPerAccountSettings.getString("AODefaultFlySlow");
1334 SetDefault(mcomboBox_flyslows,iter->ao_id,defaultanim);
1335 if (getAssetIDByName(defaultanim) != LLUUID::null) iter->ao_id = getAssetIDByName(defaultanim);
1336 }
1337 break;
1338 case STATE_AGENT_HOVER_DOWN:
1339 {
1340 std::string defaultanim = gSavedPerAccountSettings.getString("AODefaultFlyDown");
1341 SetDefault(mcomboBox_flydowns,iter->ao_id,defaultanim);
1342 if (getAssetIDByName(defaultanim) != LLUUID::null) iter->ao_id = getAssetIDByName(defaultanim);
1343 }
1344 break;
1345 case STATE_AGENT_LAND:
1346 {
1347 std::string defaultanim = gSavedPerAccountSettings.getString("AODefaultLand");
1348 SetDefault(mcomboBox_lands,iter->ao_id,defaultanim);
1349 if (getAssetIDByName(defaultanim) != LLUUID::null) iter->ao_id = getAssetIDByName(defaultanim);
1350 }
1351 break;
1352 case STATE_AGENT_STANDUP:
1353 {
1354 std::string defaultanim = gSavedPerAccountSettings.getString("AODefaultStandUp");
1355 SetDefault(mcomboBox_standups,iter->ao_id,defaultanim);
1356 if (getAssetIDByName(defaultanim) != LLUUID::null) iter->ao_id = getAssetIDByName(defaultanim);
1357 }
1358 break;
1359 case STATE_AGENT_PRE_JUMP:
1360 {
1361 std::string defaultanim = gSavedPerAccountSettings.getString("AODefaultPreJump");
1362 SetDefault(mcomboBox_prejumps,iter->ao_id,defaultanim);
1363 if (getAssetIDByName(defaultanim) != LLUUID::null) iter->ao_id = getAssetIDByName(defaultanim);
1364 }
1365 break;
1366 }
1367 }
1368 run();
1369 }
1370 else
1371 {
1372 llinfos << "ao nc decode error" << llendl;
1373 }
1374 }
1375 }
1376 else
1377 {
1378 llinfos << "ao nc read error" << llendl;
1379 }
1380}
1381
1382BOOL LLFloaterAO::SetDefault(void* userdata, LLUUID ao_id, std::string defaultanim)
1383{
1384 if (sInstance && (userdata))
1385 {
1386 LLComboBox *box = (LLComboBox *) userdata;
1387 if (LLUUID::null == ao_id)
1388 {
1389 box->clear();
1390 box->removeall();
1391 }
1392 else
1393 {
1394 box->selectByValue(defaultanim);
1395 }
1396 }
1397 return TRUE;
1398}
1399
1400class ObjectNameMatches : public LLInventoryCollectFunctor
1401{
1402public:
1403 ObjectNameMatches(std::string name)
1404 {
1405 sName = name;
1406 }
1407 virtual ~ObjectNameMatches() {}
1408 virtual bool operator()(LLInventoryCategory* cat,
1409 LLInventoryItem* item)
1410 {
1411 if(item)
1412 {
1413 if (item->getParentUUID() == LLFloaterAO::invfolderid)
1414 {
1415 return (item->getName() == sName);
1416 }
1417 return false;
1418 }
1419 return false;
1420 }
1421private:
1422 std::string sName;
1423};
1424
1425const LLUUID& LLFloaterAO::getAssetIDByName(const std::string& name)
1426{
1427 if (name.empty() || !(gInventory.isEverythingFetched())) return LLUUID::null;
1428
1429 LLViewerInventoryCategory::cat_array_t cats;
1430 LLViewerInventoryItem::item_array_t items;
1431 ObjectNameMatches objectnamematches(name);
1432 gInventory.collectDescendentsIf(LLUUID::null,cats,items,FALSE,objectnamematches);
1433
1434 if (items.count())
1435 {
1436 return items[0]->getAssetUUID();
1437 }
1438 return LLUUID::null;
1439};
diff --git a/linden/indra/newview/floaterao.h b/linden/indra/newview/floaterao.h
new file mode 100644
index 0000000..204717f
--- /dev/null
+++ b/linden/indra/newview/floaterao.h
@@ -0,0 +1,129 @@
1
2#ifndef LL_LLFLOATERAO_H
3#define LL_LLFLOATERAO_H
4
5#include "llfloater.h"
6#include "llviewercontrol.h"
7#include "llagent.h"
8
9
10class AONoteCardDropTarget;
11
12const int STATE_AGENT_IDLE = 0;
13const int STATE_AGENT_WALK = 1;
14const int STATE_AGENT_RUN = 2;
15const int STATE_AGENT_STAND = 3;
16
17const int STATE_AGENT_PRE_JUMP = 4;
18const int STATE_AGENT_JUMP = 5;
19const int STATE_AGENT_TURNLEFT = 6;
20const int STATE_AGENT_TURNRIGHT = 7;
21
22const int STATE_AGENT_SIT = 8;
23const int STATE_AGENT_GROUNDSIT = 9;
24
25const int STATE_AGENT_HOVER = 10;
26const int STATE_AGENT_HOVER_DOWN = 11;
27const int STATE_AGENT_HOVER_UP = 12;
28
29const int STATE_AGENT_CROUCH = 13;
30const int STATE_AGENT_CROUCHWALK = 14;
31const int STATE_AGENT_FALLDOWN = 15;
32const int STATE_AGENT_STANDUP = 16;
33const int STATE_AGENT_LAND = 17;
34
35const int STATE_AGENT_FLY = 18;
36const int STATE_AGENT_FLYSLOW = 19;
37
38
39
40
41
42class AOStandTimer : public LLEventTimer
43{
44public:
45 AOStandTimer();
46 ~AOStandTimer();
47 virtual BOOL tick();
48 virtual void reset();
49};
50
51class AOInvTimer : public LLEventTimer
52{
53public:
54 AOInvTimer();
55 ~AOInvTimer();
56 BOOL tick();
57};
58
59class LLFloaterAO : public LLFloater
60{
61public:
62
63 LLFloaterAO();
64 virtual BOOL postBuild();
65 virtual ~LLFloaterAO();
66
67 static void show(void*);
68 static void init();
69
70 static void onClickToggleAO(LLUICtrl *, void*);
71 static void onClickToggleSits(LLUICtrl *, void*);
72 static void run();
73 static void updateLayout(LLFloaterAO* floater);
74
75 static BOOL loadAnims();
76
77 static int getAnimationState();
78 static void setAnimationState(int state);
79 static void setStates(const LLUUID& id, BOOL start);
80
81 static LLUUID getCurrentStandId();
82 static void setCurrentStandId(const LLUUID& id);
83 static int stand_iterator;
84 static BOOL ChangeStand();
85
86 static BOOL startMotion(const LLUUID& id, F32 time_offset = 0.f, BOOL stand = FALSE);
87 static BOOL stopMotion(const LLUUID& id, BOOL stop_immediate, BOOL stand = FALSE);
88
89 static LLUUID GetAnimID(const LLUUID& id);
90
91 static int GetStateFromAnimID(const LLUUID& id);
92 static LLUUID GetAnimIDFromState(const int state);
93 static int GetStateFromToken(std::string strtoken);
94
95 static void onClickLess(void* data) ;
96 static void onClickMore(void* data) ;
97
98 static void onClickPrevStand(void* userdata);
99 static void onClickNextStand(void* userdata);
100 static void onClickReloadCard(void* userdata);
101 static void onClickOpenCard(void* userdata);
102 static void onClickNewCard(void* userdata);
103
104 static LLUUID invfolderid;
105 static const LLUUID& getAssetIDByName(const std::string& name);
106
107 static bool getInstance();
108
109private:
110
111 static LLFloaterAO* sInstance;
112 static int mAnimationState;
113 static LLUUID mCurrentStandId;
114
115 static AONoteCardDropTarget* mAOItemDropTarget;
116 static void AOItemDrop(LLViewerInventoryItem* item);
117 static void onSpinnerCommit(LLUICtrl* ctrl, void* userdata);
118 static void onComboBoxCommit(LLUICtrl* ctrl, void* userdata);
119 static BOOL SetDefault(void *userdata, LLUUID ao_id, std::string defaultanim);
120
121 BOOL mDirty;
122
123protected:
124
125 static void onNotecardLoadComplete(LLVFS *vfs,const LLUUID& asset_uuid,LLAssetType::EType type,void* user_data, S32 status, LLExtStat ext_status);
126
127};
128
129#endif \ No newline at end of file
diff --git a/linden/indra/newview/floaterbusy.cpp b/linden/indra/newview/floaterbusy.cpp
new file mode 100644
index 0000000..9188ae1
--- /dev/null
+++ b/linden/indra/newview/floaterbusy.cpp
@@ -0,0 +1,225 @@
1/**
2* @file floaterbusy.cpp
3* @brief Custom busy mode settings for Imprudence
4*
5* $LicenseInfo:firstyear=2009&license=viewergpl$
6*
7* Copyright (c) 2010, McCabe Maxsted
8*
9* Imprudence Viewer Source Code
10* The source code in this file ("Source Code") is provided to you
11* under the terms of the GNU General Public License, version 2.0
12* ("GPL"). Terms of the GPL can be found in doc/GPL-license.txt in
13* this distribution, or online at
14* http://secondlifegrid.net/programs/open_source/licensing/gplv2
15*
16* There are special exceptions to the terms and conditions of the GPL as
17* it is applied to this Source Code. View the full text of the exception
18* in the file doc/FLOSS-exception.txt in this software distribution, or
19* online at http://secondlifegrid.net/programs/open_source/licensing/flossexception
20*
21* By copying, modifying or distributing this software, you acknowledge
22* that you have read and understood your obligations described above,
23* and agree to abide by those obligations.
24*
25* ALL SOURCE CODE IS PROVIDED "AS IS." THE AUTHOR MAKES NO
26* WARRANTIES, EXPRESS, IMPLIED OR OTHERWISE, REGARDING ITS ACCURACY,
27* COMPLETENESS OR PERFORMANCE.
28* $/LicenseInfo$
29*/
30
31#include "llviewerprecompiledheaders.h"
32
33#include "floaterbusy.h"
34
35#include "llinventorymodel.h"
36#include "llstartup.h"
37#include "lltexteditor.h"
38#include "lluictrlfactory.h"
39#include "llviewercontrol.h"
40#include "llviewerinventory.h"
41
42////////begin drop utility/////////////
43//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
44// Class InvDropTarget
45//
46// This handy class is a simple way to drop something on another
47// view. It handles drop events, always setting itself to the size of
48// its parent.
49//
50// altered to support a callback so i can slap it in things and it just return the item to a func of my choice
51//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
52
53InvDropTarget::InvDropTarget(const std::string& name, const LLRect& rect,
54 void (*callback)(LLViewerInventoryItem*)) :
55 LLView(name, rect, NOT_MOUSE_OPAQUE, FOLLOWS_ALL),
56 mDownCallback(callback)
57{
58}
59
60InvDropTarget::~InvDropTarget()
61{
62}
63
64void InvDropTarget::doDrop(EDragAndDropType cargo_type, void* cargo_data)
65{
66 llinfos << "InvDropTarget::doDrop()" << llendl;
67}
68
69BOOL InvDropTarget::handleDragAndDrop(S32 x, S32 y, MASK mask, BOOL drop,
70 EDragAndDropType cargo_type,
71 void* cargo_data,
72 EAcceptance* accept,
73 std::string& tooltip_msg)
74{
75 BOOL handled = FALSE;
76 if (getParent())
77 {
78 handled = TRUE;
79 // check the type
80 //switch(cargo_type)
81 //{
82 //case DAD_ANIMATION:
83 //{
84 LLViewerInventoryItem* inv_item = (LLViewerInventoryItem*)cargo_data;
85 if (gInventory.getItem(inv_item->getUUID()))
86 {
87 *accept = ACCEPT_YES_COPY_SINGLE;
88 if (drop)
89 {
90 //printchat("accepted");
91 mDownCallback(inv_item);
92 }
93 }
94 else
95 {
96 *accept = ACCEPT_NO;
97 }
98 // break;
99 //}
100 //default:
101 // *accept = ACCEPT_NO;
102 // break;
103 //}
104 }
105 return handled;
106}
107////////end drop utility///////////////
108
109// static
110InvDropTarget * FloaterBusy::mObjectDropTarget;
111
112FloaterBusy::FloaterBusy(const LLSD& seed) : LLFloater("floater_busy")
113{
114 LLUICtrlFactory::getInstance()->buildFloater(this, "floater_busy.xml");
115}
116
117BOOL FloaterBusy::postBuild()
118{
119 childSetAction("btn_ok", onClickOK, this);
120 childSetAction("btn_cancel", onClickCancel, this);
121
122 LLView *target_view = getChild<LLView>("im_give_drop_target_rect");
123 if (target_view)
124 {
125 if (mObjectDropTarget)//shouldn't happen
126 {
127 delete mObjectDropTarget;
128 }
129 mObjectDropTarget = new InvDropTarget("drop target", target_view->getRect(), IMAutoResponseItemDrop);//, mAvatarID);
130 addChild(mObjectDropTarget);
131 }
132
133 if (LLStartUp::getStartupState() == STATE_STARTED)
134 {
135 LLUUID itemid = (LLUUID)gSavedPerAccountSettings.getString("InstantMessageResponseItemData");
136 LLViewerInventoryItem* item = gInventory.getItem(itemid);
137
138 if (item)
139 {
140 childSetValue("im_give_disp_rect_txt","Currently set to: "+item->getName());
141 }
142 else if (itemid.isNull())
143 {
144 childSetValue("im_give_disp_rect_txt","Currently not set");
145 }
146 else
147 {
148 childSetValue("im_give_disp_rect_txt","Currently set to a item not on this account");
149 }
150 }
151 else
152 {
153 childSetValue("im_give_disp_rect_txt","Not logged in");
154 }
155
156 LLWString auto_response = utf8str_to_wstring( gSavedPerAccountSettings.getString("InstantMessageResponse") );
157 LLWStringUtil::replaceChar(auto_response, '^', '\n');
158 LLWStringUtil::replaceChar(auto_response, '%', ' ');
159 childSetText("im_response", wstring_to_utf8str(auto_response));
160
161 childSetValue("InstantMessageResponseFriends", gSavedPerAccountSettings.getBOOL("InstantMessageResponseFriends"));
162 childSetValue("InstantMessageResponseMuted", gSavedPerAccountSettings.getBOOL("InstantMessageResponseMuted"));
163 childSetValue("InstantMessageResponseAnyone", gSavedPerAccountSettings.getBOOL("InstantMessageResponseAnyone"));
164 childSetValue("InstantMessageShowResponded", gSavedPerAccountSettings.getBOOL("InstantMessageShowResponded"));
165 childSetValue("InstantMessageShowOnTyping", gSavedPerAccountSettings.getBOOL("InstantMessageShowOnTyping"));
166 childSetValue("InstantMessageResponseRepeat", gSavedPerAccountSettings.getBOOL("InstantMessageResponseRepeat" ));
167 childSetValue("InstantMessageResponseItem", gSavedPerAccountSettings.getBOOL("InstantMessageResponseItem"));
168 childSetValue("InstantMessageAnnounceIncoming", gSavedPerAccountSettings.getBOOL("InstantMessageAnnounceIncoming"));
169 childSetValue("InstantMessageAnnounceStealFocus", gSavedPerAccountSettings.getBOOL("InstantMessageAnnounceStealFocus"));
170
171 return TRUE;
172}
173
174FloaterBusy::~FloaterBusy()
175{
176 delete mObjectDropTarget;
177 mObjectDropTarget = NULL;
178}
179
180void FloaterBusy::IMAutoResponseItemDrop(LLViewerInventoryItem* item)
181{
182 gSavedPerAccountSettings.setString("InstantMessageResponseItemData", item->getUUID().asString());
183 FloaterBusy::getInstance()->childSetValue("im_give_disp_rect_txt","Currently set to: "+item->getName());
184}
185
186// static
187void FloaterBusy::onClickOK(void* userdata)
188{
189 FloaterBusy* self = (FloaterBusy*)userdata;
190 self->apply();
191 self->close();
192}
193
194// static
195void FloaterBusy::onClickCancel(void* userdata)
196{
197 FloaterBusy* self = (FloaterBusy*)userdata;
198 self->cancel();
199}
200
201void FloaterBusy::cancel()
202{
203 close();
204}
205
206void FloaterBusy::apply()
207{
208 LLTextEditor* im = getChild<LLTextEditor>("im_response");
209 LLWString im_response;
210 if (im) im_response = im->getWText();
211 LLWStringUtil::replaceTabsWithSpaces(im_response, 4);
212 LLWStringUtil::replaceChar(im_response, '\n', '^');
213 LLWStringUtil::replaceChar(im_response, ' ', '%');
214 gSavedPerAccountSettings.setString("InstantMessageResponse", std::string(wstring_to_utf8str(im_response)));
215 gSavedPerAccountSettings.setBOOL("InstantMessageResponseMuted", childGetValue("InstantMessageResponseMuted").asBoolean());
216 gSavedPerAccountSettings.setBOOL("InstantMessageResponseFriends", childGetValue("InstantMessageResponseFriends").asBoolean());
217 gSavedPerAccountSettings.setBOOL("InstantMessageResponseMuted", childGetValue("InstantMessageResponseMuted").asBoolean());
218 gSavedPerAccountSettings.setBOOL("InstantMessageResponseAnyone", childGetValue("InstantMessageResponseAnyone").asBoolean());
219 gSavedPerAccountSettings.setBOOL("InstantMessageShowResponded", childGetValue("InstantMessageShowResponded").asBoolean());
220 gSavedPerAccountSettings.setBOOL("InstantMessageShowOnTyping", childGetValue("InstantMessageShowOnTyping").asBoolean());
221 gSavedPerAccountSettings.setBOOL("InstantMessageResponseRepeat", childGetValue("InstantMessageResponseRepeat").asBoolean());
222 gSavedPerAccountSettings.setBOOL("InstantMessageResponseItem", childGetValue("InstantMessageResponseItem").asBoolean());
223 gSavedPerAccountSettings.setBOOL("InstantMessageAnnounceIncoming", childGetValue("InstantMessageAnnounceIncoming").asBoolean());
224 gSavedPerAccountSettings.setBOOL("InstantMessageAnnounceStealFocus", childGetValue("InstantMessageAnnounceStealFocus").asBoolean());
225}
diff --git a/linden/indra/newview/floaterbusy.h b/linden/indra/newview/floaterbusy.h
new file mode 100644
index 0000000..821d00d
--- /dev/null
+++ b/linden/indra/newview/floaterbusy.h
@@ -0,0 +1,88 @@
1/**
2* @file floaterbusy.h
3* @brief Custom busy mode settings for Imprudence
4*
5* $LicenseInfo:firstyear=2009&license=viewergpl$
6*
7* Copyright (c) 2010, McCabe Maxsted
8*
9* Imprudence Viewer Source Code
10* The source code in this file ("Source Code") is provided to you
11* under the terms of the GNU General Public License, version 2.0
12* ("GPL"). Terms of the GPL can be found in doc/GPL-license.txt in
13* this distribution, or online at
14* http://secondlifegrid.net/programs/open_source/licensing/gplv2
15*
16* There are special exceptions to the terms and conditions of the GPL as
17* it is applied to this Source Code. View the full text of the exception
18* in the file doc/FLOSS-exception.txt in this software distribution, or
19* online at http://secondlifegrid.net/programs/open_source/licensing/flossexception
20*
21* By copying, modifying or distributing this software, you acknowledge
22* that you have read and understood your obligations described above,
23* and agree to abide by those obligations.
24*
25* ALL SOURCE CODE IS PROVIDED "AS IS." THE AUTHOR MAKES NO
26* WARRANTIES, EXPRESS, IMPLIED OR OTHERWISE, REGARDING ITS ACCURACY,
27* COMPLETENESS OR PERFORMANCE.
28* $/LicenseInfo$
29*/
30
31#ifndef FLOATERBUSY_H
32#define FLOATERBUSY_H
33
34#include "llfloater.h"
35
36class LLViewerInventoryItem;
37
38////////begin drop utility/////////////
39//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
40// Class InvDropTarget
41//
42// This handy class is a simple way to drop something on another
43// view. It handles drop events, always setting itself to the size of
44// its parent.
45//
46// altered to support a callback so i can slap it in things and it just return the item to a func of my choice
47//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
48class InvDropTarget : public LLView
49{
50public:
51 InvDropTarget(const std::string& name, const LLRect& rect, void (*callback)(LLViewerInventoryItem*));
52 ~InvDropTarget();
53
54 void doDrop(EDragAndDropType cargo_type, void* cargo_data);
55
56 //
57 // LLView functionality
58 virtual BOOL handleDragAndDrop(S32 x, S32 y, MASK mask, BOOL drop,
59 EDragAndDropType cargo_type,
60 void* cargo_data,
61 EAcceptance* accept,
62 std::string& tooltip_msg);
63protected:
64 void (*mDownCallback)(LLViewerInventoryItem*);
65};
66////////end drop utility///////////////
67
68class FloaterBusy : public LLFloater, public LLFloaterSingleton<FloaterBusy>
69{
70public:
71 FloaterBusy(const LLSD& seed);
72 virtual ~FloaterBusy();
73
74 BOOL postBuild();
75
76 void apply();
77 void cancel();
78
79private:
80 static InvDropTarget* mObjectDropTarget;
81
82 static void onClickOK(void* userdata);
83 static void onClickCancel(void* userdata);
84
85 static void IMAutoResponseItemDrop(LLViewerInventoryItem* item);
86};
87
88#endif FLOATERBUSY_H
diff --git a/linden/indra/newview/llagent.cpp b/linden/indra/newview/llagent.cpp
index 0a1bd98..8c455a5 100644
--- a/linden/indra/newview/llagent.cpp
+++ b/linden/indra/newview/llagent.cpp
@@ -67,6 +67,7 @@
67#include "llface.h" 67#include "llface.h"
68#include "llfirstuse.h" 68#include "llfirstuse.h"
69#include "llfloater.h" 69#include "llfloater.h"
70#include "floaterao.h"
70#include "llfloateractivespeakers.h" 71#include "llfloateractivespeakers.h"
71#include "llfloateravatarinfo.h" 72#include "llfloateravatarinfo.h"
72#include "llfloaterbuildoptions.h" 73#include "llfloaterbuildoptions.h"
@@ -79,6 +80,7 @@
79#include "llfloatermap.h" 80#include "llfloatermap.h"
80#include "llfloatermute.h" 81#include "llfloatermute.h"
81#include "llfloatersnapshot.h" 82#include "llfloatersnapshot.h"
83#include "llfloaterstats.h"
82#include "llfloatertools.h" 84#include "llfloatertools.h"
83#include "llfloaterworldmap.h" 85#include "llfloaterworldmap.h"
84#include "llgroupmgr.h" 86#include "llgroupmgr.h"
@@ -2874,6 +2876,10 @@ static const LLFloaterView::skip_list_t& get_skip_list()
2874{ 2876{
2875 static LLFloaterView::skip_list_t skip_list; 2877 static LLFloaterView::skip_list_t skip_list;
2876 skip_list.insert(LLFloaterMap::getInstance()); 2878 skip_list.insert(LLFloaterMap::getInstance());
2879 if(gSavedSettings.getBOOL("ShowStatusBarInMouselook"))
2880 {
2881 skip_list.insert(LLFloaterStats::getInstance());
2882 }
2877 return skip_list; 2883 return skip_list;
2878} 2884}
2879 2885
@@ -4069,6 +4075,7 @@ void LLAgent::changeCameraToMouselook(BOOL animate)
4069 if( mCameraMode != CAMERA_MODE_MOUSELOOK ) 4075 if( mCameraMode != CAMERA_MODE_MOUSELOOK )
4070 { 4076 {
4071 gFocusMgr.setKeyboardFocus( NULL ); 4077 gFocusMgr.setKeyboardFocus( NULL );
4078 if (gSavedSettings.getBOOL("AONoStandsInMouselook")) LLFloaterAO::stopMotion(LLFloaterAO::getCurrentStandId(), FALSE,TRUE);
4072 4079
4073 mLastCameraMode = mCameraMode; 4080 mLastCameraMode = mCameraMode;
4074 mCameraMode = CAMERA_MODE_MOUSELOOK; 4081 mCameraMode = CAMERA_MODE_MOUSELOOK;
@@ -4276,13 +4283,15 @@ void LLAgent::changeCameraToCustomizeAvatar(BOOL avatar_animate, BOOL camera_ani
4276 } 4283 }
4277 4284
4278// [RLVa:KB] - Checked: 2009-07-10 (RLVa-1.0.0g) 4285// [RLVa:KB] - Checked: 2009-07-10 (RLVa-1.0.0g)
4286 if(gSavedSettings.getBOOL("AppearanceForceStand"))
4279 if ( (gRlvHandler.hasBehaviour(RLV_BHVR_UNSIT)) && (mAvatarObject.notNull()) && (mAvatarObject->mIsSitting) ) 4287 if ( (gRlvHandler.hasBehaviour(RLV_BHVR_UNSIT)) && (mAvatarObject.notNull()) && (mAvatarObject->mIsSitting) )
4280 { 4288 {
4281 return; 4289 return;
4282 } 4290 }
4283// [/RLVa:KB] 4291// [/RLVa:KB]
4284 4292
4285 setControlFlags(AGENT_CONTROL_STAND_UP); // force stand up 4293 if(gSavedSettings.getBOOL("AppearanceForceStand"))
4294 setControlFlags(AGENT_CONTROL_STAND_UP); // force stand up
4286 gViewerWindow->getWindow()->resetBusyCount(); 4295 gViewerWindow->getWindow()->resetBusyCount();
4287 4296
4288 if (gFaceEditToolset) 4297 if (gFaceEditToolset)
@@ -6030,7 +6039,7 @@ bool LLAgent::teleportCore(bool is_local)
6030 if(TELEPORT_NONE != mTeleportState) 6039 if(TELEPORT_NONE != mTeleportState)
6031 { 6040 {
6032 llwarns << "Attempt to teleport when already teleporting." << llendl; 6041 llwarns << "Attempt to teleport when already teleporting." << llendl;
6033 return false; 6042 //return false; //This seems to fix getting stuck in TPs in the first place. --Liny
6034 } 6043 }
6035 6044
6036#if 0 6045#if 0
diff --git a/linden/indra/newview/llappviewer.cpp b/linden/indra/newview/llappviewer.cpp
index 7aa3a05..a0700a9 100644
--- a/linden/indra/newview/llappviewer.cpp
+++ b/linden/indra/newview/llappviewer.cpp
@@ -51,6 +51,7 @@
51#include "llimpanel.h" 51#include "llimpanel.h"
52#include "llmimetypes.h" 52#include "llmimetypes.h"
53#include "llstartup.h" 53#include "llstartup.h"
54#include "llfloaterchat.h"
54#include "llfocusmgr.h" 55#include "llfocusmgr.h"
55#include "llviewerjoystick.h" 56#include "llviewerjoystick.h"
56#include "llfloaterjoystick.h" 57#include "llfloaterjoystick.h"
@@ -1757,6 +1758,7 @@ bool LLAppViewer::initConfiguration()
1757 LLFirstUse::addConfigVariable("FirstTeleport"); 1758 LLFirstUse::addConfigVariable("FirstTeleport");
1758 LLFirstUse::addConfigVariable("FirstOverrideKeys"); 1759 LLFirstUse::addConfigVariable("FirstOverrideKeys");
1759 LLFirstUse::addConfigVariable("FirstAttach"); 1760 LLFirstUse::addConfigVariable("FirstAttach");
1761 LLFirstUse::addConfigVariable("FirstAO");
1760 LLFirstUse::addConfigVariable("FirstAppearance"); 1762 LLFirstUse::addConfigVariable("FirstAppearance");
1761 LLFirstUse::addConfigVariable("FirstInventory"); 1763 LLFirstUse::addConfigVariable("FirstInventory");
1762 LLFirstUse::addConfigVariable("FirstSandbox"); 1764 LLFirstUse::addConfigVariable("FirstSandbox");
@@ -3673,13 +3675,28 @@ void LLAppViewer::idleShutdown()
3673 && !logoutRequestSent()) 3675 && !logoutRequestSent())
3674 { 3676 {
3675 static S32 total_uploads = 0; 3677 static S32 total_uploads = 0;
3678 static bool saving_msg = true;
3676 // Sometimes total upload count can change during logout. 3679 // Sometimes total upload count can change during logout.
3677 total_uploads = llmax(total_uploads, pending_uploads); 3680 total_uploads = llmax(total_uploads, pending_uploads);
3678 gViewerWindow->setShowProgress(TRUE); 3681 if (gSavedSettings.getBOOL("DisableLoginLogoutScreens"))
3679 S32 finished_uploads = total_uploads - pending_uploads; 3682 {
3680 F32 percent = 100.f * finished_uploads / total_uploads; 3683 if (saving_msg)
3681 gViewerWindow->setProgressPercent(percent); 3684 {
3682 gViewerWindow->setProgressString("Saving final data..."); 3685 LLChat chat;
3686 chat.mText = "Saving final data...";
3687 chat.mSourceType = CHAT_SOURCE_SYSTEM;
3688 LLFloaterChat::addChat(chat);
3689 saving_msg = false;
3690 }
3691 }
3692 else
3693 {
3694 gViewerWindow->setShowProgress(TRUE);
3695 S32 finished_uploads = total_uploads - pending_uploads;
3696 F32 percent = 100.f * finished_uploads / total_uploads;
3697 gViewerWindow->setProgressPercent(percent);
3698 gViewerWindow->setProgressString("Saving final data...");
3699 }
3683 return; 3700 return;
3684 } 3701 }
3685 3702
@@ -3689,9 +3706,19 @@ void LLAppViewer::idleShutdown()
3689 sendLogoutRequest(); 3706 sendLogoutRequest();
3690 3707
3691 // Wait for a LogoutReply message 3708 // Wait for a LogoutReply message
3692 gViewerWindow->setShowProgress(TRUE); 3709 if (gSavedSettings.getBOOL("DisableLoginLogoutScreens"))
3693 gViewerWindow->setProgressPercent(100.f); 3710 {
3694 gViewerWindow->setProgressString("Logging out..."); 3711 LLChat chat;
3712 chat.mText = "Logging out...";
3713 chat.mSourceType = CHAT_SOURCE_SYSTEM;
3714 LLFloaterChat::addChat(chat);
3715 }
3716 else
3717 {
3718 gViewerWindow->setShowProgress(TRUE);
3719 gViewerWindow->setProgressPercent(100.f);
3720 gViewerWindow->setProgressString("Logging out...");
3721 }
3695 return; 3722 return;
3696 } 3723 }
3697 3724
diff --git a/linden/indra/newview/llchatbar.cpp b/linden/indra/newview/llchatbar.cpp
index 1146c44..8401138 100644
--- a/linden/indra/newview/llchatbar.cpp
+++ b/linden/indra/newview/llchatbar.cpp
@@ -67,7 +67,6 @@
67#include "llinventorymodel.h" 67#include "llinventorymodel.h"
68#include "llmultigesture.h" 68#include "llmultigesture.h"
69#include "llui.h" 69#include "llui.h"
70#include "llviewermenu.h"
71#include "lluictrlfactory.h" 70#include "lluictrlfactory.h"
72 71
73 72
diff --git a/linden/indra/newview/llcompilequeue.cpp b/linden/indra/newview/llcompilequeue.cpp
index 0f60ad5..ed18a10 100644
--- a/linden/indra/newview/llcompilequeue.cpp
+++ b/linden/indra/newview/llcompilequeue.cpp
@@ -52,8 +52,6 @@
52#include "llviewerregion.h" 52#include "llviewerregion.h"
53#include "lscript_rt_interface.h" 53#include "lscript_rt_interface.h"
54#include "llviewercontrol.h" 54#include "llviewercontrol.h"
55#include "llviewerobject.h"
56#include "llviewerregion.h"
57#include "llresmgr.h" 55#include "llresmgr.h"
58#include "llbutton.h" 56#include "llbutton.h"
59#include "lldir.h" 57#include "lldir.h"
@@ -62,8 +60,6 @@
62#include "lluictrlfactory.h" 60#include "lluictrlfactory.h"
63#include "llselectmgr.h" 61#include "llselectmgr.h"
64 62
65#include "llselectmgr.h"
66
67///---------------------------------------------------------------------------- 63///----------------------------------------------------------------------------
68/// Local function declarations, constants, enums, and typedefs 64/// Local function declarations, constants, enums, and typedefs
69///---------------------------------------------------------------------------- 65///----------------------------------------------------------------------------
diff --git a/linden/indra/newview/llconsole.cpp b/linden/indra/newview/llconsole.cpp
index 74943a5..2379da3 100644
--- a/linden/indra/newview/llconsole.cpp
+++ b/linden/indra/newview/llconsole.cpp
@@ -35,7 +35,6 @@
35#include "llconsole.h" 35#include "llconsole.h"
36 36
37// linden library includes 37// linden library includes
38#include "llmath.h"
39#include "llviewercontrol.h" 38#include "llviewercontrol.h"
40#include "llcriticaldamp.h" 39#include "llcriticaldamp.h"
41#include "llfontgl.h" 40#include "llfontgl.h"
diff --git a/linden/indra/newview/llfirstuse.cpp b/linden/indra/newview/llfirstuse.cpp
index 877e586..bc982af 100644
--- a/linden/indra/newview/llfirstuse.cpp
+++ b/linden/indra/newview/llfirstuse.cpp
@@ -214,6 +214,17 @@ void LLFirstUse::useAttach()
214} 214}
215 215
216// static 216// static
217void LLFirstUse::useAO()
218{
219 if (gSavedSettings.getWarning("FirstAO"))
220 {
221 gSavedSettings.setWarning("FirstAO", FALSE);
222
223 LLNotifications::instance().add("FirstAO");
224 }
225}
226
227// static
217void LLFirstUse::useAppearance() 228void LLFirstUse::useAppearance()
218{ 229{
219 if (gSavedSettings.getWarning("FirstAppearance")) 230 if (gSavedSettings.getWarning("FirstAppearance"))
diff --git a/linden/indra/newview/llfirstuse.h b/linden/indra/newview/llfirstuse.h
index e327984..6467734 100644
--- a/linden/indra/newview/llfirstuse.h
+++ b/linden/indra/newview/llfirstuse.h
@@ -104,6 +104,7 @@ public:
104 static void useTeleport(); 104 static void useTeleport();
105 static void useOverrideKeys(); 105 static void useOverrideKeys();
106 static void useAttach(); 106 static void useAttach();
107 static void useAO();
107 static void useAppearance(); 108 static void useAppearance();
108 static void useInventory(); 109 static void useInventory();
109 static void useSandbox(); 110 static void useSandbox();
diff --git a/linden/indra/newview/llfloaterabout.cpp b/linden/indra/newview/llfloaterabout.cpp
index 686353b..772428e 100644
--- a/linden/indra/newview/llfloaterabout.cpp
+++ b/linden/indra/newview/llfloaterabout.cpp
@@ -44,6 +44,7 @@
44#include "llimagej2c.h" 44#include "llimagej2c.h"
45#include "audioengine.h" 45#include "audioengine.h"
46 46
47#include "hippoGridManager.h"
47#include "llviewertexteditor.h" 48#include "llviewertexteditor.h"
48#include "llviewercontrol.h" 49#include "llviewercontrol.h"
49#include "llagent.h" 50#include "llagent.h"
@@ -128,6 +129,8 @@ LLFloaterAbout::LLFloaterAbout()
128 129
129 std::string support; 130 std::string support;
130 support.append("\n\n"); 131 support.append("\n\n");
132 support.append("Grid: " + gHippoGridManager->getConnectedGrid()->getGridName()
133 + " (" + gHippoGridManager->getConnectedGrid()->getGridNick() + ")\n\n");
131 134
132#if LL_MSVC 135#if LL_MSVC
133 support.append(llformat("Built with MSVC version %d\n\n", _MSC_VER)); 136 support.append(llformat("Built with MSVC version %d\n\n", _MSC_VER));
diff --git a/linden/indra/newview/llfloaterbuildoptions.cpp b/linden/indra/newview/llfloaterbuildoptions.cpp
index 3cd35db..372b1df 100644
--- a/linden/indra/newview/llfloaterbuildoptions.cpp
+++ b/linden/indra/newview/llfloaterbuildoptions.cpp
@@ -4,7 +4,8 @@
4 * 4 *
5 * $LicenseInfo:firstyear=2002&license=viewergpl$ 5 * $LicenseInfo:firstyear=2002&license=viewergpl$
6 * 6 *
7 * Copyright (c) 2002-2009, Linden Research, Inc. 7 * Copyright (c) 2002-2009, Linden Research, Inc.,
8 * 2010, McCabe Maxsted
8 * 9 *
9 * Second Life Viewer Source Code 10 * Second Life Viewer Source Code
10 * The source code in this file ("Source Code") is provided by Linden Lab 11 * The source code in this file ("Source Code") is provided by Linden Lab
@@ -38,28 +39,38 @@
38#include "llviewerprecompiledheaders.h" 39#include "llviewerprecompiledheaders.h"
39 40
40#include "llfloaterbuildoptions.h" 41#include "llfloaterbuildoptions.h"
41#include "lluictrlfactory.h"
42 42
43// library includes 43// library includes
44#include "llfontgl.h" 44#include "llfontgl.h"
45#include "llcheckboxctrl.h" 45#include "llcheckboxctrl.h"
46#include "llcombobox.h"
46#include "llspinctrl.h" 47#include "llspinctrl.h"
47#include "llsliderctrl.h" 48#include "llsliderctrl.h"
49#include "lltexturectrl.h"
50#include "lluictrlfactory.h"
48 51
49// newview includes 52// newview includes
53#include "llcolorswatch.h"
54#include "llinventorymodel.h"
50#include "llresmgr.h" 55#include "llresmgr.h"
56#include "llstartup.h" // not really necessary here, but just in case
51#include "llviewercontrol.h" 57#include "llviewercontrol.h"
58#include "llviewerinventory.h"
59#include "floaterbusy.h" // class InvDropTarget
52 60
53// 61//
54// Globals 62// Globals
55// 63//
56LLFloaterBuildOptions *LLFloaterBuildOptions::sInstance = NULL; 64LLFloaterBuildOptions *LLFloaterBuildOptions::sInstance = NULL;
65InvDropTarget * LLFloaterBuildOptions::sBuildObjectDropTarget;
57 66
58// 67//
59// Methods 68// Methods
60// 69//
61LLFloaterBuildOptions::LLFloaterBuildOptions( ) 70LLFloaterBuildOptions::LLFloaterBuildOptions()
62: LLFloater(std::string("build options floater")) 71: LLFloater(std::string("build options floater")),
72mBuildItemUUID(NULL),
73mBuildTextureUUID(NULL)
63{ 74{
64 sInstance = this; 75 sInstance = this;
65} 76}
@@ -67,6 +78,74 @@ LLFloaterBuildOptions::LLFloaterBuildOptions( )
67LLFloaterBuildOptions::~LLFloaterBuildOptions() 78LLFloaterBuildOptions::~LLFloaterBuildOptions()
68{ 79{
69 sInstance = NULL; 80 sInstance = NULL;
81 delete sBuildObjectDropTarget;
82 sBuildObjectDropTarget = NULL;
83}
84
85BOOL LLFloaterBuildOptions::postBuild()
86{
87 childSetAction("btn_ok", onClickOK, this);
88 childSetAction("btn_apply", onClickApply, this);
89 childSetAction("btn_cancel", onClickCancel, this);
90 childSetAction("btn_clear", onClickClear, this);
91 childSetAction("btn_reset", onClickReset, this);
92
93 getChild<LLComboBox>("material")->setSimple(gSavedPerAccountSettings.getString("BuildPrefs_Material"));
94 getChild<LLComboBox>("combobox shininess")->setSimple(gSavedPerAccountSettings.getString("BuildPrefs_Shiny"));
95
96 childSetValue("BuildPrefsActualRoot_toggle", gSavedPerAccountSettings.getBOOL("BuildPrefs_ActualRoot") );
97 childSetValue("PivotPercToggle", gSavedPerAccountSettings.getBOOL("BuildPrefs_PivotIsPercent") );
98 childSetValue("FBToggle", gSavedPerAccountSettings.getBOOL("BuildPrefs_FullBright") );
99 childSetValue("BuildPrefsEmbedItem", gSavedPerAccountSettings.getBOOL("BuildPrefs_EmbedItem") );
100 childSetValue("PhysicalToggle", gSavedPerAccountSettings.getBOOL("BuildPrefs_Physical") );
101 childSetValue("TemporaryToggle", gSavedPerAccountSettings.getBOOL("BuildPrefs_Temporary") );
102 childSetValue("PhantomToggle", gSavedPerAccountSettings.getBOOL("BuildPrefs_Phantom") );
103
104 childSetValue("Z pos", gSavedPerAccountSettings.getF32("BuildPrefs_PivotZ") );
105 childSetValue("Y pos", gSavedPerAccountSettings.getF32("BuildPrefs_PivotY") );
106 childSetValue("X pos", gSavedPerAccountSettings.getF32("BuildPrefs_PivotX") );
107 childSetValue("glow", gSavedPerAccountSettings.getF32("BuildPrefs_Glow") );
108 childSetValue("alpha", gSavedPerAccountSettings.getF32("BuildPrefs_Alpha") );
109 childSetValue("Z size", gSavedPerAccountSettings.getF32("BuildPrefs_Zsize") );
110 childSetValue("Y size", gSavedPerAccountSettings.getF32("BuildPrefs_Ysize") );
111 childSetValue("X size", gSavedPerAccountSettings.getF32("BuildPrefs_Xsize") );
112
113 getChild<LLColorSwatchCtrl>("colorswatch")->set(gSavedPerAccountSettings.getColor4("BuildPrefs_Color"), TRUE );
114 getChild<LLTextureCtrl>("texture control")->setImageAssetID(LLUUID(gSavedPerAccountSettings.getString("BuildPrefs_Texture")));
115
116 childSetValue("BuildPrefsRenderHighlight_toggle", gSavedSettings.getBOOL("RenderHighlightSelections") );
117 childSetValue("grouplandrez", gSavedSettings.getBOOL("RezWithLandGroup") );
118 childSetValue("GridSubUnit", gSavedSettings.getBOOL("GridSubUnit") );
119 childSetValue("GridCrossSection", gSavedSettings.getBOOL("GridCrossSections") );
120
121 childSetValue("GridResolution", gSavedSettings.getF32("GridResolution") );
122 childSetValue("GridDrawSize", gSavedSettings.getF32("GridDrawSize") );
123 childSetValue("GridOpacity", gSavedSettings.getF32("GridOpacity") );
124
125 getChild<LLComboBox>("material")->setCommitCallback(onComboBoxCommit);
126 getChild<LLComboBox>("combobox shininess")->setCommitCallback(onComboBoxCommit);
127
128 getChild<LLTextureCtrl>("texture control")->setDefaultImageAssetID(LLUUID("89556747-24cb-43ed-920b-47caed15465f"));
129 getChild<LLTextureCtrl>("texture control")->setCommitCallback(onTexturePickerCommit);
130 getChild<LLTextureCtrl>("texture control")->setCallbackUserData(this);
131
132 LLView *target_view = getChild<LLView>("build_item_add_disp_rect");
133 if (target_view)
134 {
135 if (sBuildObjectDropTarget)
136 {
137 delete sBuildObjectDropTarget;
138 }
139 sBuildObjectDropTarget = new InvDropTarget("build drop target", target_view->getRect(),BuildAutoResponseItemDrop);
140 addChild(sBuildObjectDropTarget);
141 }
142
143 mBuildItemUUID = (LLUUID)gSavedPerAccountSettings.getString("BuildPrefs_Item");
144 mBuildTextureUUID = (LLUUID)gSavedPerAccountSettings.getString("BuildPrefs_Texture");
145
146 refreshItem(); // Refresh the item UI bits after everything's loaded -- MC
147
148 return TRUE;
70} 149}
71 150
72// static 151// static
@@ -95,3 +174,208 @@ BOOL LLFloaterBuildOptions::visible(void*)
95{ 174{
96 return (sInstance != NULL); 175 return (sInstance != NULL);
97} 176}
177
178// static
179void LLFloaterBuildOptions::BuildAutoResponseItemDrop(LLViewerInventoryItem* item)
180{
181 LLFloaterBuildOptions::getInstance()->setItem(item->getUUID());
182 LLFloaterBuildOptions::getInstance()->refreshItem();
183 /*LLFloaterBuildOptions::getInstance()->childSetValue("build_item_add_disp_rect_txt", "Currently set to: "+item->getName());
184 gSavedPerAccountSettings.setString("BuildPrefs_Item", item->getUUID().asString());*/
185}
186
187// static
188void LLFloaterBuildOptions::onComboBoxCommit(LLUICtrl* ctrl, void* userdata)
189{
190 LLComboBox* box = (LLComboBox*)ctrl;
191 if(box)
192 {
193 gSavedPerAccountSettings.setString(box->getControlName(), box->getValue().asString());
194 }
195}
196
197// static
198void LLFloaterBuildOptions::onTexturePickerCommit(LLUICtrl* ctrl, void* userdata)
199{
200 LLFloaterBuildOptions* self = (LLFloaterBuildOptions*)userdata;
201
202 LLTextureCtrl* image_ctrl = (LLTextureCtrl*)ctrl;
203 if(image_ctrl)
204 {
205 self->setTexture(image_ctrl->getImageAssetID());
206 /*gSavedPerAccountSettings.setString("BuildPrefs_Texture", image_ctrl->getImageAssetID().asString());*/
207 }
208}
209
210// static
211void LLFloaterBuildOptions::onClickOK(void* userdata)
212{
213 LLFloaterBuildOptions* self = (LLFloaterBuildOptions*)userdata;
214 self->apply();
215 self->close();
216}
217
218// static
219void LLFloaterBuildOptions::onClickApply(void* userdata)
220{
221 LLFloaterBuildOptions* self = (LLFloaterBuildOptions*)userdata;
222 self->apply();
223}
224
225// static
226void LLFloaterBuildOptions::onClickCancel(void* userdata)
227{
228 LLFloaterBuildOptions* self = (LLFloaterBuildOptions*)userdata;
229 self->cancel();
230}
231
232// static
233void LLFloaterBuildOptions::onClickClear(void* userdata)
234{
235 // Clear the inventory item
236 LLFloaterBuildOptions* self = (LLFloaterBuildOptions*)userdata;
237 //gSavedPerAccountSettings.setString("BuildPrefs_Item", LLUUID::null);
238 //gSavedPerAccountSettings.getControl("BuildPrefs_Item")->resetToDefault(false);
239
240 self->setItem(LLUUID::null);
241 self->refreshItem();
242}
243
244// static
245void LLFloaterBuildOptions::onClickReset(void* userdata)
246{
247 // Reset to defaults
248 LLFloaterBuildOptions* self = (LLFloaterBuildOptions*)userdata;
249 self->reset();
250 self->refresh();
251}
252
253void LLFloaterBuildOptions::apply()
254{
255 gSavedPerAccountSettings.setBOOL("BuildPrefs_ActualRoot", childGetValue("BuildPrefsActualRoot_toggle").asBoolean() );
256 gSavedPerAccountSettings.setBOOL("BuildPrefs_PivotIsPercent", childGetValue("PivotPercToggle").asBoolean() );
257 gSavedPerAccountSettings.setBOOL("BuildPrefs_FullBright", childGetValue("FBToggle").asBoolean() );
258 gSavedPerAccountSettings.setBOOL("BuildPrefs_EmbedItem", childGetValue("BuildPrefsEmbedItem").asBoolean() );
259 gSavedPerAccountSettings.setBOOL("BuildPrefs_Physical", childGetValue("PhysicalToggle").asBoolean() );
260 gSavedPerAccountSettings.setBOOL("BuildPrefs_Temporary", childGetValue("TemporaryToggle").asBoolean() );
261 gSavedPerAccountSettings.setBOOL("BuildPrefs_Phantom", childGetValue("PhantomToggle").asBoolean() );
262
263 gSavedPerAccountSettings.setF32("BuildPrefs_PivotZ", childGetValue("Z pos").asReal() );
264 gSavedPerAccountSettings.setF32("BuildPrefs_PivotY", childGetValue("Y pos").asReal() );
265 gSavedPerAccountSettings.setF32("BuildPrefs_PivotX", childGetValue("X pos").asReal() );
266 gSavedPerAccountSettings.setF32("BuildPrefs_Glow", childGetValue("glow").asReal() );
267 gSavedPerAccountSettings.setF32("BuildPrefs_Alpha", childGetValue("alpha").asReal() );
268 gSavedPerAccountSettings.setF32("BuildPrefs_Zsize", childGetValue("Z size").asReal() );
269 gSavedPerAccountSettings.setF32("BuildPrefs_Ysize", childGetValue("Y size").asReal() );
270 gSavedPerAccountSettings.setF32("BuildPrefs_Xsize", childGetValue("X size").asReal() );
271
272 gSavedPerAccountSettings.setString("BuildPrefs_Shiny", getChild<LLComboBox>("combobox shininess")->getValue().asString() );
273 gSavedPerAccountSettings.setString("BuildPrefs_Material", getChild<LLComboBox>("material")->getValue().asString() );
274
275 gSavedPerAccountSettings.setColor4("BuildPrefs_Color", getChild<LLColorSwatchCtrl>("colorswatch")->get());
276
277 if (mBuildItemUUID != LLSD(gSavedPerAccountSettings.getString("BuildPrefs_Item")) )
278 {
279 gSavedPerAccountSettings.setString("BuildPrefs_Item", mBuildItemUUID.asString() );
280 }
281
282 if (mBuildTextureUUID != LLSD(gSavedPerAccountSettings.getString("BuildPrefs_Texture")) )
283 {
284 gSavedPerAccountSettings.setString("BuildPrefs_Texture", mBuildTextureUUID.asString() );
285 }
286
287 gSavedSettings.setBOOL("RenderHighlightSelections", childGetValue("BuildPrefsRenderHighlight_toggle").asBoolean() );
288 gSavedSettings.setBOOL("RezWithLandGroup", childGetValue("grouplandrez").asBoolean() );
289 gSavedSettings.setBOOL("GridSubUnit", childGetValue("GridSubUnit").asBoolean() );
290 gSavedSettings.setBOOL("GridCrossSections", childGetValue("GridCrossSection").asBoolean() );
291
292 gSavedSettings.setF32("GridResolution", childGetValue("GridResolution").asReal() );
293 gSavedSettings.setF32("GridDrawSize", childGetValue("GridDrawSize").asReal() );
294 gSavedSettings.setF32("GridOpacity", childGetValue("GridOpacity").asReal() );
295}
296
297void LLFloaterBuildOptions::cancel()
298{
299 close();
300}
301
302void LLFloaterBuildOptions::reset()
303{
304 getChild<LLComboBox>("material")->setSimple(gSavedPerAccountSettings.getControl("BuildPrefs_Material")->getDefault().asString() );
305 getChild<LLComboBox>("combobox shininess")->setSimple(gSavedPerAccountSettings.getControl("BuildPrefs_Shiny")->getDefault().asString() );
306
307 childSetValue("BuildPrefsActualRoot_toggle", gSavedPerAccountSettings.getControl("BuildPrefs_ActualRoot")->getDefault() );
308 childSetValue("PivotPercToggle", gSavedPerAccountSettings.getControl("BuildPrefs_PivotIsPercent")->getDefault() );
309 childSetValue("FBToggle", gSavedPerAccountSettings.getControl("BuildPrefs_FullBright")->getDefault() );
310 childSetValue("BuildPrefsEmbedItem", gSavedPerAccountSettings.getControl("BuildPrefs_EmbedItem")->getDefault() );
311 childSetValue("PhysicalToggle", gSavedPerAccountSettings.getControl("BuildPrefs_Physical")->getDefault() );
312 childSetValue("TemporaryToggle", gSavedPerAccountSettings.getControl("BuildPrefs_Temporary")->getDefault() );
313 childSetValue("PhantomToggle", gSavedPerAccountSettings.getControl("BuildPrefs_Phantom")->getDefault() );
314
315 childSetValue("Z pos", gSavedPerAccountSettings.getControl("BuildPrefs_PivotZ")->getDefault() );
316 childSetValue("Y pos", gSavedPerAccountSettings.getControl("BuildPrefs_PivotY")->getDefault() );
317 childSetValue("X pos", gSavedPerAccountSettings.getControl("BuildPrefs_PivotX")->getDefault() );
318 childSetValue("glow", gSavedPerAccountSettings.getControl("BuildPrefs_Glow")->getDefault() );
319 childSetValue("alpha", gSavedPerAccountSettings.getControl("BuildPrefs_Alpha")->getDefault() );
320 childSetValue("Z size", gSavedPerAccountSettings.getControl("BuildPrefs_Zsize")->getDefault() );
321 childSetValue("Y size", gSavedPerAccountSettings.getControl("BuildPrefs_Ysize")->getDefault() );
322 childSetValue("X size", gSavedPerAccountSettings.getControl("BuildPrefs_Xsize")->getDefault() );
323
324 getChild<LLColorSwatchCtrl>("colorswatch")->set(gSavedPerAccountSettings.getControl("BuildPrefs_Color")->getDefault(), TRUE);
325 getChild<LLTextureCtrl>("texture control")->setImageAssetID(LLUUID(gSavedPerAccountSettings.getControl("BuildPrefs_Texture")->getDefault()) );
326
327 mBuildItemUUID = (LLUUID)gSavedPerAccountSettings.getControl("BuildPrefs_Item")->getDefault();
328 mBuildTextureUUID = (LLUUID)gSavedPerAccountSettings.getControl("BuildPrefs_Texture")->getDefault();
329
330 childSetValue("BuildPrefsRenderHighlight_toggle", gSavedSettings.getControl("RenderHighlightSelections")->getDefault() );
331 childSetValue("grouplandrez", gSavedSettings.getControl("RezWithLandGroup")->getDefault() );
332 childSetValue("GridSubUnit", gSavedSettings.getControl("GridSubUnit")->getDefault() );
333 childSetValue("GridCrossSection", gSavedSettings.getControl("GridCrossSections")->getDefault() );
334
335 childSetValue("GridResolution", gSavedSettings.getControl("GridResolution")->getDefault() );
336 childSetValue("GridDrawSize", gSavedSettings.getControl("GridDrawSize")->getDefault() );
337 childSetValue("GridOpacity", gSavedSettings.getControl("GridOpacity")->getDefault() );
338}
339
340void LLFloaterBuildOptions::refresh()
341{
342
343}
344
345void LLFloaterBuildOptions::setItem(const LLUUID& item)
346{
347 mBuildItemUUID = item;
348}
349
350void LLFloaterBuildOptions::setTexture(const LLUUID& texture)
351{
352 mBuildTextureUUID = texture;
353}
354
355void LLFloaterBuildOptions::refreshItem()
356{
357 if (LLStartUp::getStartupState() == STATE_STARTED)
358 {
359 if (mBuildItemUUID.isNull())
360 {
361 childSetValue("build_item_add_disp_rect_txt", "Currently not set");
362 }
363 else
364 {
365 LLViewerInventoryItem* item = gInventory.getItem(mBuildItemUUID);
366 if (item)
367 {
368 childSetValue("build_item_add_disp_rect_txt", "Currently set to: "+item->getName());
369 }
370
371 else
372 {
373 childSetValue("build_item_add_disp_rect_txt", "Currently set to a item not on this account");
374 }
375 }
376 }
377 else
378 {
379 childSetValue("build_item_add_disp_rect_txt", "Not logged in");
380 }
381}
diff --git a/linden/indra/newview/llfloaterbuildoptions.h b/linden/indra/newview/llfloaterbuildoptions.h
index e030b06..c776055 100644
--- a/linden/indra/newview/llfloaterbuildoptions.h
+++ b/linden/indra/newview/llfloaterbuildoptions.h
@@ -5,6 +5,7 @@
5 * $LicenseInfo:firstyear=2002&license=viewergpl$ 5 * $LicenseInfo:firstyear=2002&license=viewergpl$
6 * 6 *
7 * Copyright (c) 2002-2009, Linden Research, Inc. 7 * Copyright (c) 2002-2009, Linden Research, Inc.
8 * 2010, McCabe Maxsted
8 * 9 *
9 * Second Life Viewer Source Code 10 * Second Life Viewer Source Code
10 * The source code in this file ("Source Code") is provided by Linden Lab 11 * The source code in this file ("Source Code") is provided by Linden Lab
@@ -40,6 +41,8 @@
40 41
41#include "llfloater.h" 42#include "llfloater.h"
42 43
44class InvDropTarget;
45class LLViewerInventoryItem;
43 46
44class LLFloaterBuildOptions 47class LLFloaterBuildOptions
45: public LLFloater 48: public LLFloater
@@ -49,12 +52,39 @@ protected:
49 ~LLFloaterBuildOptions(); 52 ~LLFloaterBuildOptions();
50 53
51public: 54public:
55 BOOL postBuild();
56
52 static void show(void*); 57 static void show(void*);
53 static LLFloaterBuildOptions* getInstance(); 58 static LLFloaterBuildOptions* getInstance();
54 static BOOL visible(void*); 59 static BOOL visible(void*);
55 60
61 void apply();
62 void cancel();
63 void refresh();
64 void reset();
65
66 void setItem(const LLUUID& item);
67 void setTexture(const LLUUID& texture);
68
56protected: 69protected:
57 static LLFloaterBuildOptions* sInstance; 70 static LLFloaterBuildOptions* sInstance;
71
72private:
73 static InvDropTarget* sBuildObjectDropTarget;
74 LLUUID mBuildItemUUID;
75 LLUUID mBuildTextureUUID;
76
77 static void onTexturePickerCommit(LLUICtrl* ctrl, void* userdata);
78 static void onComboBoxCommit(LLUICtrl* ctrl, void* userdata);
79 static void BuildAutoResponseItemDrop(LLViewerInventoryItem* item);
80
81 static void onClickOK(void* userdata);
82 static void onClickApply(void* userdata);
83 static void onClickCancel(void* userdata);
84 static void onClickClear(void* userdata);
85 static void onClickReset(void* userdata);
86
87 void refreshItem();
58}; 88};
59 89
60#endif 90#endif
diff --git a/linden/indra/newview/llfloaterbulkpermission.cpp b/linden/indra/newview/llfloaterbulkpermission.cpp
index 6721661..b5cf2d7 100644
--- a/linden/indra/newview/llfloaterbulkpermission.cpp
+++ b/linden/indra/newview/llfloaterbulkpermission.cpp
@@ -43,8 +43,6 @@
43#include "llviewerregion.h" 43#include "llviewerregion.h"
44#include "lscript_rt_interface.h" 44#include "lscript_rt_interface.h"
45#include "llviewercontrol.h" 45#include "llviewercontrol.h"
46#include "llviewerobject.h"
47#include "llviewerregion.h"
48#include "llresmgr.h" 46#include "llresmgr.h"
49#include "llbutton.h" 47#include "llbutton.h"
50#include "lldir.h" 48#include "lldir.h"
diff --git a/linden/indra/newview/llfloaterpreference.cpp b/linden/indra/newview/llfloaterpreference.cpp
index 17a59cc..c468a5e 100644
--- a/linden/indra/newview/llfloaterpreference.cpp
+++ b/linden/indra/newview/llfloaterpreference.cpp
@@ -62,6 +62,7 @@
62#include "llpanelmsgs.h" 62#include "llpanelmsgs.h"
63#include "llpanelweb.h" 63#include "llpanelweb.h"
64#include "llpanelskins.h" 64#include "llpanelskins.h"
65#include "llprefsadvanced.h"
65#include "llprefschat.h" 66#include "llprefschat.h"
66#include "llprefsvoice.h" 67#include "llprefsvoice.h"
67#include "llprefsim.h" 68#include "llprefsim.h"
@@ -132,7 +133,8 @@ LLPreferenceCore::LLPreferenceCore(LLTabContainer* tab_container, LLButton * def
132 mAudioPanel(NULL), 133 mAudioPanel(NULL),
133 mMsgPanel(NULL), 134 mMsgPanel(NULL),
134 mSkinsPanel(NULL), 135 mSkinsPanel(NULL),
135 mLCDPanel(NULL) 136 mLCDPanel(NULL),
137 mPrefsAdvanced(NULL)
136{ 138{
137 mGeneralPanel = new LLPanelGeneral(); 139 mGeneralPanel = new LLPanelGeneral();
138 mTabContainer->addTabPanel(mGeneralPanel, mGeneralPanel->getLabel(), FALSE, onTabChanged, mTabContainer); 140 mTabContainer->addTabPanel(mGeneralPanel, mGeneralPanel->getLabel(), FALSE, onTabChanged, mTabContainer);
@@ -192,6 +194,10 @@ LLPreferenceCore::LLPreferenceCore(LLTabContainer* tab_container, LLButton * def
192 mTabContainer->addTabPanel(mSkinsPanel, mSkinsPanel->getLabel(), FALSE, onTabChanged, mTabContainer); 194 mTabContainer->addTabPanel(mSkinsPanel, mSkinsPanel->getLabel(), FALSE, onTabChanged, mTabContainer);
193 mSkinsPanel->setDefaultBtn(default_btn); 195 mSkinsPanel->setDefaultBtn(default_btn);
194 196
197 mPrefsAdvanced = new LLPrefsAdvanced();
198 mTabContainer->addTabPanel(mPrefsAdvanced, mPrefsAdvanced->getLabel(), FALSE, onTabChanged, mTabContainer);
199 mPrefsAdvanced->setDefaultBtn(default_btn);
200
195 if (!mTabContainer->selectTab(gSavedSettings.getS32("LastPrefTab"))) 201 if (!mTabContainer->selectTab(gSavedSettings.getS32("LastPrefTab")))
196 { 202 {
197 mTabContainer->selectFirstTab(); 203 mTabContainer->selectFirstTab();
@@ -251,6 +257,11 @@ LLPreferenceCore::~LLPreferenceCore()
251 delete mSkinsPanel; 257 delete mSkinsPanel;
252 mSkinsPanel = NULL; 258 mSkinsPanel = NULL;
253 } 259 }
260 if (mPrefsAdvanced)
261 {
262 delete mPrefsAdvanced;
263 mPrefsAdvanced = NULL;
264 }
254 265
255} 266}
256 267
@@ -267,6 +278,7 @@ void LLPreferenceCore::apply()
267 mPrefsIM->apply(); 278 mPrefsIM->apply();
268 mMsgPanel->apply(); 279 mMsgPanel->apply();
269 mSkinsPanel->apply(); 280 mSkinsPanel->apply();
281 mPrefsAdvanced->apply();
270 282
271 // hardware menu apply 283 // hardware menu apply
272 LLFloaterHardwareSettings::instance()->apply(); 284 LLFloaterHardwareSettings::instance()->apply();
@@ -295,6 +307,7 @@ void LLPreferenceCore::cancel()
295 mPrefsIM->cancel(); 307 mPrefsIM->cancel();
296 mMsgPanel->cancel(); 308 mMsgPanel->cancel();
297 mSkinsPanel->cancel(); 309 mSkinsPanel->cancel();
310 mPrefsAdvanced->cancel();
298 311
299 // cancel hardware menu 312 // cancel hardware menu
300 LLFloaterHardwareSettings::instance()->cancel(); 313 LLFloaterHardwareSettings::instance()->cancel();
diff --git a/linden/indra/newview/llfloaterpreference.h b/linden/indra/newview/llfloaterpreference.h
index f48696f..894d242 100644
--- a/linden/indra/newview/llfloaterpreference.h
+++ b/linden/indra/newview/llfloaterpreference.h
@@ -56,6 +56,7 @@ class LLPrefsVoice;
56class LLPrefsIM; 56class LLPrefsIM;
57class LLPanelMsgs; 57class LLPanelMsgs;
58class LLPanelSkins; 58class LLPanelSkins;
59class LLPrefsAdvanced;
59class LLScrollListCtrl; 60class LLScrollListCtrl;
60 61
61class LLPreferenceCore 62class LLPreferenceCore
@@ -92,6 +93,7 @@ private:
92 LLPanelWeb *mWebPanel; 93 LLPanelWeb *mWebPanel;
93 LLPanelMsgs *mMsgPanel; 94 LLPanelMsgs *mMsgPanel;
94 LLPanelLCD *mLCDPanel; 95 LLPanelLCD *mLCDPanel;
96 LLPrefsAdvanced *mPrefsAdvanced;
95}; 97};
96 98
97// Floater to control preferences (display, audio, bandwidth, general. 99// Floater to control preferences (display, audio, bandwidth, general.
diff --git a/linden/indra/newview/llfloaterstats.cpp b/linden/indra/newview/llfloaterstats.cpp
index 3ecdb80..38b2871 100644
--- a/linden/indra/newview/llfloaterstats.cpp
+++ b/linden/indra/newview/llfloaterstats.cpp
@@ -476,7 +476,8 @@ void LLFloaterStats::buildStats()
476 476
477 stat_barp = sim_time_viewp->addStat("Script Time", &(LLViewerStats::getInstance()->mSimScriptMsec), "DebugStatModeSimScriptMsec"); 477 stat_barp = sim_time_viewp->addStat("Script Time", &(LLViewerStats::getInstance()->mSimScriptMsec), "DebugStatModeSimScriptMsec");
478 stat_barp->setUnitLabel("ms"); 478 stat_barp->setUnitLabel("ms");
479 stat_barp->mPrecision = 1; 479 //Chalice - Enhanced Script Time precision
480 stat_barp->mPrecision = 3;
480 stat_barp->mMinBar = 0.f; 481 stat_barp->mMinBar = 0.f;
481 stat_barp->mMaxBar = 40.f; 482 stat_barp->mMaxBar = 40.f;
482 stat_barp->mTickSpacing = 10.f; 483 stat_barp->mTickSpacing = 10.f;
diff --git a/linden/indra/newview/llinventoryview.cpp b/linden/indra/newview/llinventoryview.cpp
index 97df7a3..aee67b4 100644
--- a/linden/indra/newview/llinventoryview.cpp
+++ b/linden/indra/newview/llinventoryview.cpp
@@ -593,6 +593,9 @@ void LLInventoryView::init(LLInventoryModel* inventory)
593 593
594 } 594 }
595 595
596 //Initialize item count - rkeast
597 mItemCount = gSavedPerAccountSettings.getS32("InventoryPreviousCount");
598
596 599
597 mSearchEditor = getChild<LLSearchEditor>("inventory search editor"); 600 mSearchEditor = getChild<LLSearchEditor>("inventory search editor");
598 if (mSearchEditor) 601 if (mSearchEditor)
@@ -848,7 +851,26 @@ void LLInventoryView::changed(U32 mask)
848 LLLocale locale(LLLocale::USER_LOCALE); 851 LLLocale locale(LLLocale::USER_LOCALE);
849 std::string item_count_string; 852 std::string item_count_string;
850 LLResMgr::getInstance()->getIntegerString(item_count_string, gInventory.getItemCount()); 853 LLResMgr::getInstance()->getIntegerString(item_count_string, gInventory.getItemCount());
851 title << " (Fetched " << item_count_string << " items...)"; 854
855 //Displays a progress indication for loading the inventory, but not if it hasn't been loaded before on this PC, or we load more than expected - rkeast
856 if(mItemCount == -1)
857 {
858 title << " (Fetched " << item_count_string << " items...)";
859 }
860 else
861 {
862 S32 remaining = mItemCount - gInventory.getItemCount();
863 std::string total_items;
864 std::string items_remaining;
865 LLResMgr::getInstance()->getIntegerString(total_items, mItemCount);
866 LLResMgr::getInstance()->getIntegerString(items_remaining, remaining);
867 if(remaining < 0) title << " (Fetched " << item_count_string << " items...)";
868 else title << " (Fetched " << item_count_string << " items of ~" << total_items << " - ~" << items_remaining << " remaining...)";
869 }
870 }
871 else
872 {
873 gSavedPerAccountSettings.setS32("InventoryPreviousCount", gInventory.getItemCount());
852 } 874 }
853 title << mFilterText; 875 title << mFilterText;
854 setTitle(title.str()); 876 setTitle(title.str());
diff --git a/linden/indra/newview/llinventoryview.h b/linden/indra/newview/llinventoryview.h
index 0c525c3..495a340 100644
--- a/linden/indra/newview/llinventoryview.h
+++ b/linden/indra/newview/llinventoryview.h
@@ -308,6 +308,8 @@ protected:
308 308
309 std::string mFilterText; 309 std::string mFilterText;
310 310
311 S32 mItemCount;
312
311 313
312 // This container is used to hold all active inventory views. This 314 // This container is used to hold all active inventory views. This
313 // is here to support the inventory toggle show button. 315 // is here to support the inventory toggle show button.
diff --git a/linden/indra/newview/llmanip.cpp b/linden/indra/newview/llmanip.cpp
index 53c74aa..45550fc 100644
--- a/linden/indra/newview/llmanip.cpp
+++ b/linden/indra/newview/llmanip.cpp
@@ -69,7 +69,11 @@ S32 LLManip::sMaxTimesShowHelpText = 5;
69F32 LLManip::sGridMaxSubdivisionLevel = 32.f; 69F32 LLManip::sGridMaxSubdivisionLevel = 32.f;
70F32 LLManip::sGridMinSubdivisionLevel = 1.f; 70F32 LLManip::sGridMinSubdivisionLevel = 1.f;
71LLVector2 LLManip::sTickLabelSpacing(60.f, 25.f); 71LLVector2 LLManip::sTickLabelSpacing(60.f, 25.f);
72 72bool LLManip::sActualRoot = false;// going to set these up in the main entry
73bool LLManip::sPivotPerc = false;
74F32 LLManip::sPivotX = 0.f;
75F32 LLManip::sPivotY = 0.f;
76F32 LLManip::sPivotZ = 0.f;
73 77
74//static 78//static
75void LLManip::rebuild(LLViewerObject* vobj) 79void LLManip::rebuild(LLViewerObject* vobj)
@@ -100,8 +104,48 @@ LLManip::LLManip( const std::string& name, LLToolComposite* composite )
100 mHighlightedPart(LL_NO_PART), 104 mHighlightedPart(LL_NO_PART),
101 mManipPart(LL_NO_PART) 105 mManipPart(LL_NO_PART)
102{ 106{
103} 107 initPivot();
104 108
109 gSavedPerAccountSettings.getControl("BuildPrefs_ActualRoot")->getSignal()->connect(&updateActualRoot);
110 gSavedPerAccountSettings.getControl("BuildPrefs_PivotIsPercent")->getSignal()->connect(&updatePivotIsPercent);
111 gSavedPerAccountSettings.getControl("BuildPrefs_PivotX")->getSignal()->connect(&updatePivotX);
112 gSavedPerAccountSettings.getControl("BuildPrefs_PivotY")->getSignal()->connect(&updatePivotY);
113 gSavedPerAccountSettings.getControl("BuildPrefs_PivotZ")->getSignal()->connect(&updatePivotZ);
114}
115//static
116void LLManip::initPivot()
117{
118 sActualRoot = (bool)gSavedPerAccountSettings.getBOOL("BuildPrefs_ActualRoot");
119 sPivotPerc = (bool)gSavedPerAccountSettings.getBOOL("BuildPrefs_PivotIsPercent");
120 sPivotX = gSavedPerAccountSettings.getF32("BuildPrefs_PivotX");
121 sPivotY = gSavedPerAccountSettings.getF32("BuildPrefs_PivotY");
122 sPivotZ = gSavedPerAccountSettings.getF32("BuildPrefs_PivotZ");
123}
124//static
125void LLManip::updateActualRoot(const LLSD &data)
126{
127 sActualRoot = (bool)data.asBoolean();
128}
129//static
130void LLManip::updatePivotIsPercent(const LLSD &data)
131{
132 sPivotPerc = (bool)data.asBoolean();
133}
134//static
135void LLManip::updatePivotX(const LLSD &data)
136{
137 sPivotX = (F32)data.asReal();
138}
139//static
140void LLManip::updatePivotY(const LLSD &data)
141{
142 sPivotY = (F32)data.asReal();
143}
144//static
145void LLManip::updatePivotZ(const LLSD &data)
146{
147 sPivotZ = (F32)data.asReal();
148}
105void LLManip::getManipNormal(LLViewerObject* object, EManipPart manip, LLVector3 &normal) 149void LLManip::getManipNormal(LLViewerObject* object, EManipPart manip, LLVector3 &normal)
106{ 150{
107 LLVector3 grid_origin; 151 LLVector3 grid_origin;
@@ -351,11 +395,43 @@ LLVector3 LLManip::getSavedPivotPoint() const
351 395
352LLVector3 LLManip::getPivotPoint() 396LLVector3 LLManip::getPivotPoint()
353{ 397{
354 if (mObjectSelection->getFirstObject() && mObjectSelection->getObjectCount() == 1 && mObjectSelection->getSelectType() != SELECT_TYPE_HUD) 398 LLVector3 pos;
399 LLVector3 scale;
400 LLQuaternion rot;// = mObjectSelection->getFirstObject()->getRotation();
401 if (mObjectSelection->getFirstRootObject(TRUE) && (mObjectSelection->getObjectCount() == 1 || sActualRoot) && mObjectSelection->getSelectType() != SELECT_TYPE_HUD)
402 {
403 pos = mObjectSelection->getFirstRootObject(TRUE)->getPivotPositionAgent();
404 scale = mObjectSelection->getFirstRootObject(TRUE)->getScale();
405 rot = mObjectSelection->getFirstRootObject(TRUE)->getRotation();
406 }else
407 {
408 pos = LLSelectMgr::getInstance()->getBBoxOfSelection().getCenterAgent();
409 scale = LLSelectMgr::getInstance()->getBBoxOfSelection().getExtentLocal();
410 rot = LLSelectMgr::getInstance()->getBBoxOfSelection().getRotation();
411 }
412 if(sPivotPerc)
413 {
414
415 LLVector3 add(
416 (-scale[VX]*0.5) + (scale[VX]*(sPivotX*0.01)),
417 (-scale[VY]*0.5) + (scale[VY]*(sPivotY*0.01)),
418 (-scale[VZ]*0.5) + (scale[VZ]*(sPivotZ*0.01)));
419 add = add * rot;
420 pos = pos + add;
421 }else
355 { 422 {
356 return mObjectSelection->getFirstObject()->getPivotPositionAgent(); 423 //pos[VX] = pos[VX] + gSavedPerAccountSettings.getF32("BuildPrefs_PivotX");
424 //pos[VY] = pos[VY] + gSavedPerAccountSettings.getF32("BuildPrefs_PivotY");
425 //pos[VZ] = pos[VZ] + gSavedPerAccountSettings.getF32("BuildPrefs_PivotZ");
426 LLVector3 add(
427 sPivotX,
428 sPivotY,
429 sPivotZ);
430 add = add * rot;
431 pos = pos + add;
357 } 432 }
358 return LLSelectMgr::getInstance()->getBBoxOfSelection().getCenterAgent(); 433 //pos = pos * rot;
434 return pos;
359} 435}
360 436
361 437
diff --git a/linden/indra/newview/llmanip.h b/linden/indra/newview/llmanip.h
index cdf6a36..38672fe 100644
--- a/linden/indra/newview/llmanip.h
+++ b/linden/indra/newview/llmanip.h
@@ -151,6 +151,13 @@ protected:
151 BOOL getMousePointOnPlaneAgent(LLVector3& point, S32 x, S32 y, LLVector3 origin, LLVector3 normal); 151 BOOL getMousePointOnPlaneAgent(LLVector3& point, S32 x, S32 y, LLVector3 origin, LLVector3 normal);
152 BOOL nearestPointOnLineFromMouse( S32 x, S32 y, const LLVector3& b1, const LLVector3& b2, F32 &a_param, F32 &b_param ); 152 BOOL nearestPointOnLineFromMouse( S32 x, S32 y, const LLVector3& b1, const LLVector3& b2, F32 &a_param, F32 &b_param );
153 LLColor4 setupSnapGuideRenderPass(S32 pass); 153 LLColor4 setupSnapGuideRenderPass(S32 pass);
154private:
155 static void initPivot();
156 static void updateActualRoot(const LLSD &data);
157 static void updatePivotIsPercent(const LLSD &data);
158 static void updatePivotX(const LLSD &data);
159 static void updatePivotY(const LLSD &data);
160 static void updatePivotZ(const LLSD &data);
154protected: 161protected:
155 LLFrameTimer mHelpTextTimer; 162 LLFrameTimer mHelpTextTimer;
156 BOOL mInSnapRegime; 163 BOOL mInSnapRegime;
@@ -165,6 +172,12 @@ protected:
165 static F32 sGridMaxSubdivisionLevel; 172 static F32 sGridMaxSubdivisionLevel;
166 static F32 sGridMinSubdivisionLevel; 173 static F32 sGridMinSubdivisionLevel;
167 static LLVector2 sTickLabelSpacing; 174 static LLVector2 sTickLabelSpacing;
175
176 static bool sActualRoot;
177 static bool sPivotPerc;
178 static F32 sPivotX;
179 static F32 sPivotY;
180 static F32 sPivotZ;
168}; 181};
169 182
170 183
diff --git a/linden/indra/newview/llmaniprotate.cpp b/linden/indra/newview/llmaniprotate.cpp
index 8b0484b..ad7399e 100644
--- a/linden/indra/newview/llmaniprotate.cpp
+++ b/linden/indra/newview/llmaniprotate.cpp
@@ -57,7 +57,6 @@
57#include "llvoavatar.h" 57#include "llvoavatar.h"
58#include "llviewercamera.h" 58#include "llviewercamera.h"
59#include "llviewerobject.h" 59#include "llviewerobject.h"
60#include "llviewerobject.h"
61#include "llviewerwindow.h" 60#include "llviewerwindow.h"
62#include "llworld.h" 61#include "llworld.h"
63#include "pipeline.h" 62#include "pipeline.h"
diff --git a/linden/indra/newview/lloverlaybar.cpp b/linden/indra/newview/lloverlaybar.cpp
index 599d736..9f3776f 100644
--- a/linden/indra/newview/lloverlaybar.cpp
+++ b/linden/indra/newview/lloverlaybar.cpp
@@ -55,7 +55,6 @@
55#include "llviewerjoystick.h" 55#include "llviewerjoystick.h"
56#include "llviewermedia.h" 56#include "llviewermedia.h"
57#include "llviewermenu.h" // handle_reset_view() 57#include "llviewermenu.h" // handle_reset_view()
58#include "llviewermedia.h"
59#include "llviewerparcelmedia.h" 58#include "llviewerparcelmedia.h"
60#include "llviewerparcelmgr.h" 59#include "llviewerparcelmgr.h"
61#include "lluictrlfactory.h" 60#include "lluictrlfactory.h"
diff --git a/linden/indra/newview/llprefsadvanced.cpp b/linden/indra/newview/llprefsadvanced.cpp
new file mode 100644
index 0000000..88f066c
--- /dev/null
+++ b/linden/indra/newview/llprefsadvanced.cpp
@@ -0,0 +1,97 @@
1/**
2* @file llprefsadvanced.cpp
3* @brief Advanced preferences options for Imprudence
4*
5* $LicenseInfo:firstyear=2009&license=viewergpl$
6*
7* Copyright (c) 2010, McCabe Maxsted
8*
9* Imprudence Viewer Source Code
10* The source code in this file ("Source Code") is provided to you
11* under the terms of the GNU General Public License, version 2.0
12* ("GPL"). Terms of the GPL can be found in doc/GPL-license.txt in
13* this distribution, or online at
14* http://secondlifegrid.net/programs/open_source/licensing/gplv2
15*
16* There are special exceptions to the terms and conditions of the GPL as
17* it is applied to this Source Code. View the full text of the exception
18* in the file doc/FLOSS-exception.txt in this software distribution, or
19* online at http://secondlifegrid.net/programs/open_source/licensing/flossexception
20*
21* By copying, modifying or distributing this software, you acknowledge
22* that you have read and understood your obligations described above,
23* and agree to abide by those obligations.
24*
25* ALL SOURCE CODE IS PROVIDED "AS IS." THE AUTHOR MAKES NO
26* WARRANTIES, EXPRESS, IMPLIED OR OTHERWISE, REGARDING ITS ACCURACY,
27* COMPLETENESS OR PERFORMANCE.
28* $/LicenseInfo$
29*/
30
31#include "llviewerprecompiledheaders.h"
32
33#include "llprefsadvanced.h"
34#include "llviewercontrol.h"
35
36#include "lluictrlfactory.h"
37
38LLPrefsAdvanced::LLPrefsAdvanced()
39{
40 LLUICtrlFactory::getInstance()->buildPanel(this, "panel_preferences_advanced.xml");
41}
42
43LLPrefsAdvanced::~LLPrefsAdvanced()
44{
45 // Children all cleaned up by default view destructor.
46}
47
48BOOL LLPrefsAdvanced::postBuild()
49{
50 childSetValue("disable_log_screen_check", gSavedSettings.getBOOL("DisableLoginLogoutScreens"));
51 childSetValue("disable_tp_screen_check", gSavedSettings.getBOOL("DisableTeleportScreens"));
52 childSetValue("client_name_tag_check", gSavedSettings.getBOOL("ClothingLayerProtection"));
53
54 return TRUE;
55}
56
57void LLPrefsAdvanced::apply()
58{
59 gSavedSettings.setBOOL("DisableLoginLogoutScreens", childGetValue("disable_log_screen_check"));
60 gSavedSettings.setBOOL("DisableTeleportScreens", childGetValue("disable_tp_screen_check"));
61 gSavedSettings.setBOOL("ClothingLayerProtection", childGetValue("client_name_tag_check"));
62
63 // This is bad bad BAD UI from Emerald, I know.
64 // If anyone wants to do this better, please do -- MC
65 if ( childGetValue("shadows_check").asBoolean() )
66 {
67 if ( (gSavedSettings.getU32("RenderQualityPerformance") < 3) // Make sure we have everything enabled
68 || !gSavedSettings.getBOOL("WindLightUseAtmosShaders")
69 || !gSavedSettings.getBOOL("VertexShaderEnable") )
70 {
71 childSetValue("shadows_check", FALSE);
72 LLNotifications::instance().add("NoShadows");
73 llwarns << "Attempting to enable shadow rendering while graphics settings less than Ultra or shaders are missing!" << llendl;
74 }
75 else if ( (gSavedSettings.getBOOL("WindLightUseAtmosShaders") // If we do, toggle shadows in the correct order
76 && gSavedSettings.getBOOL("VertexShaderEnable")) )
77 {
78 gSavedSettings.setBOOL("RenderUseFBO", childGetValue("shadows_check").asBoolean());
79 gSavedSettings.setBOOL("RenderDeferred", childGetValue("shadows_check").asBoolean());
80 llinfos << "Shadow rendering enabled" << llendl;
81 }
82 }
83 else if (!childGetValue("shadows_check").asBoolean())
84 {
85 if (gSavedSettings.getBOOL("RenderDeferred"))
86 {
87 gSavedSettings.setBOOL("RenderDeferred", childGetValue("shadows_check").asBoolean());
88 gSavedSettings.setBOOL("RenderUseFBO", childGetValue("shadows_check").asBoolean());
89 llinfos << "Shadow rendering disabled" << llendl;
90 }
91 }
92 gSavedSettings.setBOOL("ShadowsEnabled", childGetValue("shadows_check").asBoolean());
93}
94
95void LLPrefsAdvanced::cancel()
96{
97}
diff --git a/linden/indra/newview/llprefsadvanced.h b/linden/indra/newview/llprefsadvanced.h
new file mode 100644
index 0000000..382156e
--- /dev/null
+++ b/linden/indra/newview/llprefsadvanced.h
@@ -0,0 +1,50 @@
1/**
2* @file llprefsadvanced.h
3* @brief Advanced preferences options for Imprudence
4*
5* $LicenseInfo:firstyear=2009&license=viewergpl$
6*
7* Copyright (c) 2010, McCabe Maxsted
8*
9* Imprudence Viewer Source Code
10* The source code in this file ("Source Code") is provided to you
11* under the terms of the GNU General Public License, version 2.0
12* ("GPL"). Terms of the GPL can be found in doc/GPL-license.txt in
13* this distribution, or online at
14* http://secondlifegrid.net/programs/open_source/licensing/gplv2
15*
16* There are special exceptions to the terms and conditions of the GPL as
17* it is applied to this Source Code. View the full text of the exception
18* in the file doc/FLOSS-exception.txt in this software distribution, or
19* online at http://secondlifegrid.net/programs/open_source/licensing/flossexception
20*
21* By copying, modifying or distributing this software, you acknowledge
22* that you have read and understood your obligations described above,
23* and agree to abide by those obligations.
24*
25* ALL SOURCE CODE IS PROVIDED "AS IS." THE AUTHOR MAKES NO
26* WARRANTIES, EXPRESS, IMPLIED OR OTHERWISE, REGARDING ITS ACCURACY,
27* COMPLETENESS OR PERFORMANCE.
28* $/LicenseInfo$
29*/
30
31#ifndef LLPREFSADVANCED_H
32#define LLPREFSADVANCED_H
33
34#include "llpanel.h"
35
36class LLPrefsAdvanced : public LLPanel
37{
38public:
39 LLPrefsAdvanced();
40 ~LLPrefsAdvanced();
41
42 BOOL postBuild();
43
44 void apply();
45 void cancel();
46
47private:
48};
49
50#endif // LLPREFSADVANCED_H
diff --git a/linden/indra/newview/llprefsim.cpp b/linden/indra/newview/llprefsim.cpp
index 0c06122..045139c 100644
--- a/linden/indra/newview/llprefsim.cpp
+++ b/linden/indra/newview/llprefsim.cpp
@@ -35,6 +35,7 @@
35 35
36#include "llprefsim.h" 36#include "llprefsim.h"
37 37
38#include "floaterbusy.h"
38#include "llpanel.h" 39#include "llpanel.h"
39#include "llcheckboxctrl.h" 40#include "llcheckboxctrl.h"
40#include "llstring.h" 41#include "llstring.h"
@@ -65,6 +66,8 @@ public:
65 static void onClickLogPath(void* user_data); 66 static void onClickLogPath(void* user_data);
66 static void onCommitLogging(LLUICtrl* ctrl, void* user_data); 67 static void onCommitLogging(LLUICtrl* ctrl, void* user_data);
67 68
69 static void onClickBusyAdvanced(void* user_data);
70
68protected: 71protected:
69 72
70 bool mGotPersonalInfo; 73 bool mGotPersonalInfo;
@@ -136,6 +139,8 @@ BOOL LLPrefsIMImpl::postBuild()
136 childSetAction("log_path_button", onClickLogPath, this); 139 childSetAction("log_path_button", onClickLogPath, this);
137 childSetCommitCallback("log_chat",onCommitLogging,this); 140 childSetCommitCallback("log_chat",onCommitLogging,this);
138 childSetCommitCallback("log_instant_messages",onCommitLogging,this); 141 childSetCommitCallback("log_instant_messages",onCommitLogging,this);
142
143 childSetAction("busy_adv_btn", onClickBusyAdvanced, this);
139 144
140 return TRUE; 145 return TRUE;
141} 146}
@@ -287,6 +292,13 @@ void LLPrefsIMImpl::setPersonalInfo(const std::string& visibility, bool im_via_e
287 292
288 293
289// static 294// static
295void LLPrefsIMImpl::onClickBusyAdvanced(void* user_data)
296{
297 FloaterBusy::getInstance()->open();
298 FloaterBusy::getInstance()->center();
299}
300
301// static
290void LLPrefsIMImpl::onClickLogPath(void* user_data) 302void LLPrefsIMImpl::onClickLogPath(void* user_data)
291{ 303{
292 LLPrefsIMImpl* self=(LLPrefsIMImpl*)user_data; 304 LLPrefsIMImpl* self=(LLPrefsIMImpl*)user_data;
diff --git a/linden/indra/newview/llpreviewnotecard.h b/linden/indra/newview/llpreviewnotecard.h
index 75d1a50..a879fec 100644
--- a/linden/indra/newview/llpreviewnotecard.h
+++ b/linden/indra/newview/llpreviewnotecard.h
@@ -87,10 +87,11 @@ public:
87 void refreshFromInventory(); 87 void refreshFromInventory();
88 88
89 LLTextEditor* getEditor(); 89 LLTextEditor* getEditor();
90
91 bool saveIfNeeded(LLInventoryItem* copyitem = NULL);
90protected: 92protected:
91 93
92 virtual void loadAsset(); 94 virtual void loadAsset();
93 bool saveIfNeeded(LLInventoryItem* copyitem = NULL);
94 95
95 static LLPreviewNotecard* getInstance(const LLUUID& uuid); 96 static LLPreviewNotecard* getInstance(const LLUUID& uuid);
96 97
diff --git a/linden/indra/newview/llstartup.cpp b/linden/indra/newview/llstartup.cpp
index ef25fb8..9073874 100644
--- a/linden/indra/newview/llstartup.cpp
+++ b/linden/indra/newview/llstartup.cpp
@@ -1019,7 +1019,7 @@ bool idle_startup()
1019 } 1019 }
1020 1020
1021 // Display the startup progress bar. 1021 // Display the startup progress bar.
1022 gViewerWindow->setShowProgress(TRUE); 1022 gViewerWindow->setShowProgress(!gSavedSettings.getBOOL("DisableLoginLogoutScreens"));
1023 gViewerWindow->setProgressCancelButtonVisible(TRUE, std::string("Quit")); // *TODO: Translate 1023 gViewerWindow->setProgressCancelButtonVisible(TRUE, std::string("Quit")); // *TODO: Translate
1024 1024
1025 // Poke the VFS, which could potentially block for a while if 1025 // Poke the VFS, which could potentially block for a while if
@@ -2927,13 +2927,34 @@ bool first_run_dialog_callback(const LLSD& notification, const LLSD& response)
2927} 2927}
2928 2928
2929 2929
2930 2930std::string last_d;
2931void set_startup_status(const F32 frac, const std::string& string, const std::string& msg) 2931void set_startup_status(const F32 frac, const std::string& string, const std::string& msg)
2932{ 2932{
2933 gViewerWindow->setProgressPercent(frac*100); 2933 if(gSavedSettings.getBOOL("DisableLoginLogoutScreens"))
2934 gViewerWindow->setProgressString(string); 2934 {
2935 std::string new_d = string;
2936 if(new_d != last_d)
2937 {
2938 last_d = new_d;
2939 LLChat chat;
2940 chat.mText = new_d;
2941 chat.mSourceType = CHAT_SOURCE_SYSTEM;
2942 LLFloaterChat::addChat(chat);
2943 if(new_d == LLTrans::getString("LoginWaitingForRegionHandshake"))
2944 {
2945 chat.mText = "MOTD: "+msg;
2946 chat.mSourceType = CHAT_SOURCE_SYSTEM;
2947 LLFloaterChat::addChat(chat);
2948 }
2949 }
2950 }
2951 else
2952 {
2953 gViewerWindow->setProgressPercent(frac*100);
2954 gViewerWindow->setProgressString(string);
2935 2955
2936 gViewerWindow->setProgressMessage(msg); 2956 gViewerWindow->setProgressMessage(msg);
2957 }
2937} 2958}
2938 2959
2939bool login_alert_status(const LLSD& notification, const LLSD& response) 2960bool login_alert_status(const LLSD& notification, const LLSD& response)
diff --git a/linden/indra/newview/lltooldraganddrop.cpp b/linden/indra/newview/lltooldraganddrop.cpp
index aa5bfad..a3ed16b 100644
--- a/linden/indra/newview/lltooldraganddrop.cpp
+++ b/linden/indra/newview/lltooldraganddrop.cpp
@@ -69,6 +69,9 @@
69#include "object_flags.h" 69#include "object_flags.h"
70#include "llimview.h" 70#include "llimview.h"
71 71
72#include "llparcel.h" // RezWithLandGroup
73#include "llviewerparcelmgr.h" // RezWithLandGroup
74
72 75
73// MAX ITEMS is based on (sizeof(uuid)+2) * count must be < MTUBYTES 76// MAX ITEMS is based on (sizeof(uuid)+2) * count must be < MTUBYTES
74// or 18 * count < 1200 => count < 1200/18 => 66. I've cut it down a 77// or 18 * count < 1200 => count < 1200/18 => 66. I've cut it down a
@@ -1357,6 +1360,29 @@ void LLToolDragAndDrop::dropObject(LLViewerObject* raycast_target,
1357 msg->addUUIDFast(_PREHASH_SessionID, gAgent.getSessionID()); 1360 msg->addUUIDFast(_PREHASH_SessionID, gAgent.getSessionID());
1358 msg->addUUIDFast(_PREHASH_GroupID, gAgent.getGroupID()); 1361 msg->addUUIDFast(_PREHASH_GroupID, gAgent.getGroupID());
1359 1362
1363 // RezWithLandGroup 2009-05, If avatar is in land group/land owner group,
1364 //it rezzes it with it to prevent autoreturn/whatever...
1365 if ( gSavedSettings.getBOOL("RezWithLandGroup") )
1366 {
1367 LLParcel *parcel = LLViewerParcelMgr::getInstance()->getAgentParcel();
1368 if ( gAgent.isInGroup(parcel->getGroupID()) )
1369 {
1370 msg->addUUIDFast(_PREHASH_GroupID, parcel->getGroupID());
1371 }
1372 else if ( gAgent.isInGroup(parcel->getOwnerID()) )
1373 {
1374 msg->addUUIDFast(_PREHASH_GroupID, parcel->getOwnerID());
1375 }
1376 else
1377 {
1378 msg->addUUIDFast(_PREHASH_GroupID, gAgent.getGroupID());
1379 }
1380 }
1381 else
1382 {
1383 msg->addUUIDFast(_PREHASH_GroupID, gAgent.getGroupID());
1384 }
1385
1360 msg->nextBlock("RezData"); 1386 msg->nextBlock("RezData");
1361 // if it's being rezzed from task inventory, we need to enable 1387 // if it's being rezzed from task inventory, we need to enable
1362 // saving it back into the task inventory. 1388 // saving it back into the task inventory.
diff --git a/linden/indra/newview/lltoolplacer.cpp b/linden/indra/newview/lltoolplacer.cpp
index 84e0203..18793c5 100644
--- a/linden/indra/newview/lltoolplacer.cpp
+++ b/linden/indra/newview/lltoolplacer.cpp
@@ -65,6 +65,9 @@
65#include "llviewercamera.h" 65#include "llviewercamera.h"
66#include "llviewerstats.h" 66#include "llviewerstats.h"
67 67
68#include "llparcel.h" // RezWithLandGroup
69#include "llviewerparcelmgr.h" // RezWithLandGroup
70
68const LLVector3 DEFAULT_OBJECT_SCALE(0.5f, 0.5f, 0.5f); 71const LLVector3 DEFAULT_OBJECT_SCALE(0.5f, 0.5f, 0.5f);
69 72
70//static 73//static
@@ -213,8 +216,22 @@ BOOL LLToolPlacer::addObject( LLPCode pcode, S32 x, S32 y, U8 use_physics )
213 216
214 // Set params for new object based on its PCode. 217 // Set params for new object based on its PCode.
215 LLQuaternion rotation; 218 LLQuaternion rotation;
216 LLVector3 scale = DEFAULT_OBJECT_SCALE; 219 LLVector3 scale = LLVector3(
220 gSavedPerAccountSettings.getF32("BuildPrefs_Xsize"),
221 gSavedPerAccountSettings.getF32("BuildPrefs_Ysize"),
222 gSavedPerAccountSettings.getF32("BuildPrefs_Zsize"));
223
217 U8 material = LL_MCODE_WOOD; 224 U8 material = LL_MCODE_WOOD;
225 if(gSavedPerAccountSettings.getString("BuildPrefs_Material")== "Stone") material = LL_MCODE_STONE;
226 if(gSavedPerAccountSettings.getString("BuildPrefs_Material")== "Metal") material = LL_MCODE_METAL;
227 if(gSavedPerAccountSettings.getString("BuildPrefs_Material")== "Wood") material = LL_MCODE_WOOD;
228 if(gSavedPerAccountSettings.getString("BuildPrefs_Material")== "Flesh") material = LL_MCODE_FLESH;
229 if(gSavedPerAccountSettings.getString("BuildPrefs_Material")== "Rubber") material = LL_MCODE_RUBBER;
230 if(gSavedPerAccountSettings.getString("BuildPrefs_Material")== "Plastic") material = LL_MCODE_PLASTIC;
231
232
233
234
218 BOOL create_selected = FALSE; 235 BOOL create_selected = FALSE;
219 LLVolumeParams volume_params; 236 LLVolumeParams volume_params;
220 237
@@ -255,12 +272,33 @@ BOOL LLToolPlacer::addObject( LLPCode pcode, S32 x, S32 y, U8 use_physics )
255 gMessageSystem->nextBlockFast(_PREHASH_AgentData); 272 gMessageSystem->nextBlockFast(_PREHASH_AgentData);
256 gMessageSystem->addUUIDFast(_PREHASH_AgentID, gAgent.getID()); 273 gMessageSystem->addUUIDFast(_PREHASH_AgentID, gAgent.getID());
257 gMessageSystem->addUUIDFast(_PREHASH_SessionID, gAgent.getSessionID()); 274 gMessageSystem->addUUIDFast(_PREHASH_SessionID, gAgent.getSessionID());
258 gMessageSystem->addUUIDFast(_PREHASH_GroupID, gAgent.getGroupID()); 275 // RezWithLandGroup 2009-05, If avatar is in land group/land owner group,
276 // it rezzes it with it to prevent autoreturn/whatever
277 if ( gSavedSettings.getBOOL("RezWithLandGroup") )
278 {
279 LLParcel *parcel = LLViewerParcelMgr::getInstance()->getAgentParcel();
280 if ( gAgent.isInGroup(parcel->getGroupID()) )
281 {
282 gMessageSystem->addUUIDFast(_PREHASH_GroupID, parcel->getGroupID());
283 }
284 else if ( gAgent.isInGroup(parcel->getOwnerID()) )
285 {
286 gMessageSystem->addUUIDFast(_PREHASH_GroupID, parcel->getOwnerID());
287 }
288 else
289 {
290 gMessageSystem->addUUIDFast(_PREHASH_GroupID, gAgent.getGroupID());
291 }
292 }
293 else
294 {
295 gMessageSystem->addUUIDFast(_PREHASH_GroupID, gAgent.getGroupID());
296 }
259 gMessageSystem->nextBlockFast(_PREHASH_ObjectData); 297 gMessageSystem->nextBlockFast(_PREHASH_ObjectData);
260 gMessageSystem->addU8Fast(_PREHASH_Material, material); 298 gMessageSystem->addU8Fast(_PREHASH_Material, material);
261 299
262 U32 flags = 0; // not selected 300 U32 flags = 0; // not selected
263 if (use_physics) 301 if (use_physics || gSavedPerAccountSettings.getBOOL("BuildPrefs_Physical"))
264 { 302 {
265 flags |= FLAGS_USE_PHYSICS; 303 flags |= FLAGS_USE_PHYSICS;
266 } 304 }
diff --git a/linden/indra/newview/llviewerdisplay.cpp b/linden/indra/newview/llviewerdisplay.cpp
index 28d048b..ad186d5 100644
--- a/linden/indra/newview/llviewerdisplay.cpp
+++ b/linden/indra/newview/llviewerdisplay.cpp
@@ -46,6 +46,7 @@
46#include "lldrawpoolalpha.h" 46#include "lldrawpoolalpha.h"
47#include "llfeaturemanager.h" 47#include "llfeaturemanager.h"
48#include "llfirstuse.h" 48#include "llfirstuse.h"
49#include "llfloaterchat.h"
49#include "llframestats.h" 50#include "llframestats.h"
50#include "llhudmanager.h" 51#include "llhudmanager.h"
51#include "llimagebmp.h" 52#include "llimagebmp.h"
@@ -69,7 +70,6 @@
69#include "pipeline.h" 70#include "pipeline.h"
70#include "llspatialpartition.h" 71#include "llspatialpartition.h"
71#include "llappviewer.h" 72#include "llappviewer.h"
72#include "llstartup.h"
73#include "llviewershadermgr.h" 73#include "llviewershadermgr.h"
74#include "llfasttimer.h" 74#include "llfasttimer.h"
75#include "llfloatertools.h" 75#include "llfloatertools.h"
@@ -116,6 +116,8 @@ void render_ui_2d();
116void render_disconnected_background(); 116void render_disconnected_background();
117void render_hud_elements(); 117void render_hud_elements();
118 118
119void display_teleport_chat(const LLAgent::ETeleportState tp_state, const std::string& msg);
120
119void display_startup() 121void display_startup()
120{ 122{
121 if ( !gViewerWindow->getActive() 123 if ( !gViewerWindow->getActive()
@@ -348,7 +350,10 @@ void display(BOOL rebuild, F32 zoom_factor, int subfield, BOOL for_snapshot)
348 // Transition to REQUESTED. Viewer has sent some kind 350 // Transition to REQUESTED. Viewer has sent some kind
349 // of TeleportRequest to the source simulator 351 // of TeleportRequest to the source simulator
350 gTeleportDisplayTimer.reset(); 352 gTeleportDisplayTimer.reset();
351 gViewerWindow->setShowProgress(TRUE); 353 if (!gSavedSettings.getBOOL("DisableTeleportScreens"))
354 {
355 gViewerWindow->setShowProgress(TRUE);
356 }
352 gViewerWindow->setProgressPercent(0); 357 gViewerWindow->setProgressPercent(0);
353 gAgent.setTeleportState( LLAgent::TELEPORT_REQUESTED ); 358 gAgent.setTeleportState( LLAgent::TELEPORT_REQUESTED );
354 gAgent.setTeleportMessage( 359 gAgent.setTeleportMessage(
@@ -358,13 +363,28 @@ void display(BOOL rebuild, F32 zoom_factor, int subfield, BOOL for_snapshot)
358 case LLAgent::TELEPORT_REQUESTED: 363 case LLAgent::TELEPORT_REQUESTED:
359 // Waiting for source simulator to respond 364 // Waiting for source simulator to respond
360 gViewerWindow->setProgressPercent( llmin(teleport_percent, 37.5f) ); 365 gViewerWindow->setProgressPercent( llmin(teleport_percent, 37.5f) );
361 gViewerWindow->setProgressString(message); 366 gTeleportDisplayTimer.reset();
367 if (!gSavedSettings.getBOOL("DisableTeleportScreens"))
368 {
369 gViewerWindow->setProgressString(message);
370 }
371 else
372 {
373 display_teleport_chat(LLAgent::TELEPORT_REQUESTED, message);
374 }
362 break; 375 break;
363 376
364 case LLAgent::TELEPORT_MOVING: 377 case LLAgent::TELEPORT_MOVING:
365 // Viewer has received destination location from source simulator 378 // Viewer has received destination location from source simulator
366 gViewerWindow->setProgressPercent( llmin(teleport_percent, 75.f) ); 379 gViewerWindow->setProgressPercent( llmin(teleport_percent, 75.f) );
367 gViewerWindow->setProgressString(message); 380 if (!gSavedSettings.getBOOL("DisableTeleportScreens"))
381 {
382 gViewerWindow->setProgressString(message);
383 }
384 else
385 {
386 display_teleport_chat(LLAgent::TELEPORT_MOVING, message);
387 }
368 break; 388 break;
369 389
370 case LLAgent::TELEPORT_START_ARRIVAL: 390 case LLAgent::TELEPORT_START_ARRIVAL:
@@ -376,14 +396,21 @@ void display(BOOL rebuild, F32 zoom_factor, int subfield, BOOL for_snapshot)
376 gAgent.setTeleportMessage( 396 gAgent.setTeleportMessage(
377 LLAgent::sTeleportProgressMessages["arriving"]); 397 LLAgent::sTeleportProgressMessages["arriving"]);
378 gImageList.mForceResetTextureStats = TRUE; 398 gImageList.mForceResetTextureStats = TRUE;
379 gAgent.resetView(TRUE, TRUE); 399 if (!gSavedSettings.getBOOL("DisableTeleportScreens"))
400 {
401 gAgent.resetView(TRUE, TRUE);
402 }
403 else
404 {
405 //display_teleport_chat(LLAgent::TELEPORT_MOVING, LLAgent::sTeleportProgressMessages["arriving"]);
406 }
380 break; 407 break;
381 408
382 case LLAgent::TELEPORT_ARRIVING: 409 case LLAgent::TELEPORT_ARRIVING:
383 // Make the user wait while content "pre-caches" 410 // Make the user wait while content "pre-caches"
384 { 411 {
385 F32 arrival_fraction = (gTeleportArrivalTimer.getElapsedTimeF32() / TELEPORT_ARRIVAL_DELAY); 412 F32 arrival_fraction = (gTeleportArrivalTimer.getElapsedTimeF32() / TELEPORT_ARRIVAL_DELAY);
386 if( arrival_fraction > 1.f ) 413 if( arrival_fraction > 1.f || gSavedSettings.getBOOL("DisableTeleportScreens"))
387 { 414 {
388 arrival_fraction = 1.f; 415 arrival_fraction = 1.f;
389 LLFirstUse::useTeleport(); 416 LLFirstUse::useTeleport();
@@ -391,7 +418,14 @@ void display(BOOL rebuild, F32 zoom_factor, int subfield, BOOL for_snapshot)
391 } 418 }
392 gViewerWindow->setProgressCancelButtonVisible(FALSE, std::string("Cancel")); //TODO: Translate 419 gViewerWindow->setProgressCancelButtonVisible(FALSE, std::string("Cancel")); //TODO: Translate
393 gViewerWindow->setProgressPercent( arrival_fraction * 25.f + 75.f); 420 gViewerWindow->setProgressPercent( arrival_fraction * 25.f + 75.f);
394 gViewerWindow->setProgressString(message); 421 if ( !gSavedSettings.getBOOL("DisableTeleportScreens") )
422 {
423 gViewerWindow->setProgressString(message);
424 }
425 else
426 {
427 display_teleport_chat(LLAgent::TELEPORT_ARRIVING, message);
428 }
395 } 429 }
396 break; 430 break;
397 431
@@ -1358,3 +1392,19 @@ void display_cleanup()
1358{ 1392{
1359 gDisconnectedImagep = NULL; 1393 gDisconnectedImagep = NULL;
1360} 1394}
1395
1396static LLAgent::ETeleportState old_tp_state = LLAgent::TELEPORT_NONE;
1397void display_teleport_chat(const LLAgent::ETeleportState tp_state, const std::string& msg)
1398{
1399 // Display different messages as the teleport progresses.
1400 // Some are fetched from the sim, others are hardcoded -- MC
1401
1402 LLAgent::ETeleportState new_tp_state = tp_state;
1403 if (old_tp_state != new_tp_state)
1404 {
1405 LLChat chat (msg);
1406 chat.mSourceType = CHAT_SOURCE_SYSTEM;
1407 LLFloaterChat::addChat(chat, FALSE, FALSE);
1408 old_tp_state = new_tp_state;
1409 }
1410}
diff --git a/linden/indra/newview/llviewermenu.cpp b/linden/indra/newview/llviewermenu.cpp
index 41c3578..9d06853 100644
--- a/linden/indra/newview/llviewermenu.cpp
+++ b/linden/indra/newview/llviewermenu.cpp
@@ -81,6 +81,7 @@
81#include "llface.h" 81#include "llface.h"
82#include "llfirstuse.h" 82#include "llfirstuse.h"
83#include "llfloater.h" 83#include "llfloater.h"
84#include "floaterao.h"
84#include "llfloaterabout.h" 85#include "llfloaterabout.h"
85#include "llfloaterbuycurrency.h" 86#include "llfloaterbuycurrency.h"
86#include "llfloateractivespeakers.h" 87#include "llfloateractivespeakers.h"
@@ -8601,6 +8602,26 @@ class LLAdvancedTogglePhantom: public view_listener_t
8601 8602
8602}; 8603};
8603 8604
8605
8606class LLViewToggleAO : public view_listener_t
8607{
8608 bool handleEvent(LLPointer<LLEvent> event, const LLSD& userdata)
8609 {
8610 LLFloaterAO::show(NULL);
8611 return true;
8612 }
8613};
8614
8615class LLViewCheckAO: public view_listener_t
8616{
8617 bool handleEvent(LLPointer<LLEvent> event, const LLSD& userdata)
8618 {
8619 gMenuHolder->findControl(userdata["control"].asString())->setValue(LLFloaterAO::getInstance());
8620 return true;
8621 }
8622};
8623
8624
8604class LLAdvancedCheckPhantom: public view_listener_t 8625class LLAdvancedCheckPhantom: public view_listener_t
8605{ 8626{
8606 bool handleEvent(LLPointer<LLEvent> event, const LLSD& userdata) 8627 bool handleEvent(LLPointer<LLEvent> event, const LLSD& userdata)
@@ -10725,6 +10746,7 @@ void initialize_menus()
10725 addMenu(new LLZoomer(1/1.2f), "View.ZoomIn"); 10746 addMenu(new LLZoomer(1/1.2f), "View.ZoomIn");
10726 addMenu(new LLZoomer(DEFAULT_FIELD_OF_VIEW, false), "View.ZoomDefault"); 10747 addMenu(new LLZoomer(DEFAULT_FIELD_OF_VIEW, false), "View.ZoomDefault");
10727 addMenu(new LLViewFullscreen(), "View.Fullscreen"); 10748 addMenu(new LLViewFullscreen(), "View.Fullscreen");
10749 addMenu(new LLViewToggleAO(), "View.ToggleAO");
10728 addMenu(new LLViewToggleAdvanced(), "View.ToggleAdvanced"); 10750 addMenu(new LLViewToggleAdvanced(), "View.ToggleAdvanced");
10729 10751
10730 addMenu(new LLViewEnableMouselook(), "View.EnableMouselook"); 10752 addMenu(new LLViewEnableMouselook(), "View.EnableMouselook");
@@ -10737,6 +10759,7 @@ void initialize_menus()
10737 addMenu(new LLViewCheckHighlightTransparent(), "View.CheckHighlightTransparent"); 10759 addMenu(new LLViewCheckHighlightTransparent(), "View.CheckHighlightTransparent");
10738 addMenu(new LLViewCheckRenderType(), "View.CheckRenderType"); 10760 addMenu(new LLViewCheckRenderType(), "View.CheckRenderType");
10739 addMenu(new LLViewCheckHUDAttachments(), "View.CheckHUDAttachments"); 10761 addMenu(new LLViewCheckHUDAttachments(), "View.CheckHUDAttachments");
10762 addMenu(new LLViewCheckAO(), "View.CheckAO");
10740 addMenu(new LLViewCheckAdvanced(), "View.CheckAdvanced"); 10763 addMenu(new LLViewCheckAdvanced(), "View.CheckAdvanced");
10741 10764
10742 // World menu 10765 // World menu
diff --git a/linden/indra/newview/llviewermessage.cpp b/linden/indra/newview/llviewermessage.cpp
index afd8503..6dfd9fb 100644
--- a/linden/indra/newview/llviewermessage.cpp
+++ b/linden/indra/newview/llviewermessage.cpp
@@ -141,6 +141,7 @@
141#include "hippoLimits.h" 141#include "hippoLimits.h"
142 142
143#include <boost/tokenizer.hpp> 143#include <boost/tokenizer.hpp>
144#include <boost/regex.hpp> // Boost Reg Expresions
144 145
145#if LL_WINDOWS // For Windows specific error handler 146#if LL_WINDOWS // For Windows specific error handler
146#include "llwindebug.h" // For the invalid message handler 147#include "llwindebug.h" // For the invalid message handler
@@ -1481,6 +1482,8 @@ void process_improved_im(LLMessageSystem *msg, void **user_data)
1481 BOOL is_muted = LLMuteList::getInstance()->isMuted(from_id, name, LLMute::flagTextChat); 1482 BOOL is_muted = LLMuteList::getInstance()->isMuted(from_id, name, LLMute::flagTextChat);
1482 BOOL is_linden = LLMuteList::getInstance()->isLinden(name); 1483 BOOL is_linden = LLMuteList::getInstance()->isLinden(name);
1483 BOOL is_owned_by_me = FALSE; 1484 BOOL is_owned_by_me = FALSE;
1485
1486 LLUUID computed_session_id = LLIMMgr::computeSessionID(dialog,from_id);
1484 1487
1485 chat.mMuted = is_muted && !is_linden; 1488 chat.mMuted = is_muted && !is_linden;
1486 chat.mFromID = from_id; 1489 chat.mFromID = from_id;
@@ -1504,12 +1507,259 @@ void process_improved_im(LLMessageSystem *msg, void **user_data)
1504 message_offset = 3; 1507 message_offset = 3;
1505 } 1508 }
1506 1509
1510 if(dialog == IM_TYPING_START
1511 || dialog == IM_NOTHING_SPECIAL
1512 || dialog == IM_TYPING_STOP
1513 || dialog == IM_BUSY_AUTO_RESPONSE)
1514 {
1515
1516 if(session_id != computed_session_id)
1517 {
1518 session_id = computed_session_id;
1519 /*if(!gIMMgr->hasSession(correct_session))
1520 {
1521 //LLUUID sess = gIMMgr->addSession(name, dialog, from_id);
1522 LLUUID sess = gIMMgr->addSession(name, IM_NOTHING_SPECIAL, from_id);
1523 make_ui_sound("UISndNewIncomingIMSession");
1524 gIMMgr->addMessage(
1525 sess,
1526 from_id,
1527 SYSTEM_FROM,
1528 "Invalid session id used by "+name+", corrected.",
1529 LLStringUtil::null,
1530 IM_NOTHING_SPECIAL,
1531 parent_estate_id,
1532 region_id,
1533 position,
1534 false);
1535 }*/
1536 }
1537 }
1538 /*if(dialog == IM_NOTHING_SPECIAL)
1539 {
1540 LLVOAvatar* avatarp = find_avatar(from_id);
1541 if(avatarp)
1542 {
1543 if(avatarp->mCheckingCryolife < 2 && avatarp->mIsCryolife == FALSE)
1544 {
1545 boost::regex re(
1546 ".* \\d+\\.\\d+\\.\\d+ \\(\\d+\\) \\w{3,5} \\d+ \\d+ \\d+:\\d+:\\d+ \\(.*\\) <.+,.+,.+>:.+"
1547 , boost::regex_constants::icase);
1548 if(boost::regex_match(message,re))
1549 {
1550 //llinfos << "CryoLife user detected " << from_id.asString() << llendl;
1551 avatarp->mCheckingCryolife = 2;
1552 avatarp->mIsCryolife = TRUE;
1553 LLVector3 root_pos_last = avatarp->mRoot.getWorldPosition();
1554 avatarp->idleUpdateNameTag(root_pos_last);
1555 return;
1556 }
1557 else
1558 {
1559 llinfos << "CryoLife user not detected " << from_id.asString() << llendl;
1560 }
1561 }
1562 }
1563 }*/
1564 bool typing_init = false;
1565 if( dialog == IM_TYPING_START && !is_muted )
1566 {
1567 if(!gIMMgr->hasSession(computed_session_id) && gSavedPerAccountSettings.getBOOL("InstantMessageAnnounceIncoming"))
1568 {
1569 typing_init = true;
1570 if( gSavedPerAccountSettings.getBOOL("InstantMessageAnnounceStealFocus") )
1571 {
1572 /*LLUUID sess =*/ gIMMgr->addSession(name, IM_NOTHING_SPECIAL, from_id);
1573 make_ui_sound("UISndNewIncomingIMSession");
1574 }
1575 gIMMgr->addMessage(
1576 computed_session_id,
1577 from_id,
1578 name,
1579 llformat("You sense a disturbance in the force... (%s is typing)",name.c_str()),
1580 name,
1581 IM_NOTHING_SPECIAL,
1582 parent_estate_id,
1583 region_id,
1584 position,
1585 false);
1586 }
1587 }
1588
1589 bool is_auto_response = false;
1590 if(dialog == IM_NOTHING_SPECIAL) {
1591 // detect auto responses from GreenLife and compatible viewers
1592 is_auto_response = ( message.substr(0, 21) == "/me (auto-response): " );
1593 }
1594
1595 bool do_auto_response = false;
1596 if( gSavedPerAccountSettings.getBOOL("InstantMessageResponseAnyone" ) )
1597 do_auto_response = true;
1598
1599 // odd name for auto respond to non-friends
1600 if( gSavedPerAccountSettings.getBOOL("InstantMessageResponseFriends") &&
1601 LLAvatarTracker::instance().getBuddyInfo(from_id) == NULL )
1602 do_auto_response = true;
1603
1604 if( is_muted && !gSavedPerAccountSettings.getBOOL("InstantMessageResponseMuted") )
1605 do_auto_response = false;
1606
1607 if( offline != IM_ONLINE )
1608 do_auto_response = false;
1609
1610 if( is_auto_response )
1611 do_auto_response = false;
1612
1613 // handle cases where IM_NOTHING_SPECIAL is not an IM
1614 if( name == SYSTEM_FROM ||
1615 from_id.isNull() ||
1616 to_id.isNull() )
1617 do_auto_response = false;
1618
1619// if( do_auto_response )
1620// [RLVa:KB] - Alternate: Emerald-370
1621 // Emerald specific: auto-response should be blocked if the avie is RLV @sendim=n restricted and the recipient is not an exception
1622 if ( (do_auto_response) && ( (!gRlvHandler.hasBehaviour(RLV_BHVR_SENDIM)) || (gRlvHandler.isException(RLV_BHVR_SENDIM, from_id)) ) )
1623// [/RLVa:KB]
1624 {
1625 if((dialog == IM_NOTHING_SPECIAL && !is_auto_response) ||
1626 (dialog == IM_TYPING_START && gSavedPerAccountSettings.getBOOL("InstantMessageShowOnTyping"))
1627 )
1628 {
1629 BOOL has = gIMMgr->hasSession(computed_session_id);
1630 if(!has || gSavedPerAccountSettings.getBOOL("InstantMessageResponseRepeat") || typing_init)
1631 {
1632 BOOL show = !gSavedPerAccountSettings.getBOOL("InstantMessageShowResponded");
1633 if(!has && show)
1634 {
1635 gIMMgr->addSession(name, IM_NOTHING_SPECIAL, from_id);
1636 }
1637 if(show)
1638 {
1639 gIMMgr->addMessage(
1640 computed_session_id,
1641 from_id,
1642 SYSTEM_FROM,
1643 llformat("Autoresponse sent to %s.",name.c_str()),
1644 LLStringUtil::null,
1645 IM_NOTHING_SPECIAL,
1646 parent_estate_id,
1647 region_id,
1648 position,
1649 false);
1650 }
1651 std::string my_name;
1652 gAgent.buildFullname(my_name);
1653
1654 //<-- Personalized Autoresponse by Madgeek
1655 std::string autoresponse = gSavedPerAccountSettings.getText("InstantMessageResponse");
1656 //Define Wildcards
1657 std::string fname_wildcard = "#f";
1658 std::string lname_wildcard = "#l";
1659 std::string time_wildcard = "#t";
1660 //Extract Name
1661 std::string f_name, l_name;
1662 std::istringstream inname(name);
1663 inname >> f_name >> l_name;
1664 //Generate a Timestamp
1665 time_t rawtime;
1666 time(&rawtime);
1667 char * timestamp_chars;
1668 timestamp_chars = asctime(localtime(&rawtime));
1669 std::string timestamp;
1670 timestamp.assign(timestamp_chars);
1671 timestamp = timestamp.substr(0, timestamp.find('\n'));
1672 //Handle Replacements
1673 size_t found = autoresponse.find(fname_wildcard);
1674 while(found != std::string::npos)
1675 {
1676 autoresponse.replace(found, 2, f_name);
1677 found = autoresponse.find(fname_wildcard);
1678 }
1679 found = autoresponse.find(lname_wildcard);
1680 while(found != std::string::npos)
1681 {
1682 autoresponse.replace(found, 2, l_name);
1683 found = autoresponse.find(lname_wildcard);
1684 }
1685 found = autoresponse.find(time_wildcard);
1686 while(found != std::string::npos)
1687 {
1688 autoresponse.replace(found, 2, timestamp);
1689 found = autoresponse.find(time_wildcard);
1690 }
1691 //--> Personalized Autoresponse
1692
1693 if(gSavedPerAccountSettings.getBOOL("InstantMessageResponseRepeat") && has && !typing_init) {
1694 // send as busy auto response instead to prevent endless repeating replies
1695 // when other end is a bot or broken client that answers to every usual IM
1696 // reasoning for this decision can be found in RFC2812 3.3.2 Notices
1697 // where PRIVMSG can be seen as IM_NOTHING_SPECIAL and NOTICE can be seen as
1698 // IM_BUSY_AUTO_RESPONSE. The assumption here is that no existing client
1699 // responds to IM_BUSY_AUTO_RESPONSE. --TS
1700 std::string response = autoresponse;
1701 pack_instant_message(
1702 gMessageSystem,
1703 gAgent.getID(),
1704 FALSE,
1705 gAgent.getSessionID(),
1706 from_id,
1707 my_name,
1708 response,
1709 IM_OFFLINE,
1710 IM_BUSY_AUTO_RESPONSE,
1711 session_id);
1712 } else {
1713 std::string response = "/me (auto-response): "+autoresponse;
1714 pack_instant_message(
1715 gMessageSystem,
1716 gAgent.getID(),
1717 FALSE,
1718 gAgent.getSessionID(),
1719 from_id,
1720 my_name,
1721 response,
1722 IM_OFFLINE,
1723 IM_NOTHING_SPECIAL,
1724 session_id);
1725 }
1726 gAgent.sendReliableMessage();
1727 if(gSavedPerAccountSettings.getBOOL("InstantMessageResponseItem") && (!has || typing_init))
1728 {
1729 LLUUID itemid = (LLUUID)gSavedPerAccountSettings.getString("InstantMessageResponseItemData");
1730 LLViewerInventoryItem* item = gInventory.getItem(itemid);
1731 if(item)
1732 {
1733 //childSetValue("im_give_disp_rect_txt","Currently set to: "+item->getName());
1734 if(show)
1735 {
1736 gIMMgr->addMessage(
1737 computed_session_id,
1738 from_id,
1739 SYSTEM_FROM,
1740 llformat("Sent %s auto-response item \"%s\"",name.c_str(),item->getName().c_str()),
1741 LLStringUtil::null,
1742 IM_NOTHING_SPECIAL,
1743 parent_estate_id,
1744 region_id,
1745 position,
1746 false);
1747 }
1748 LLToolDragAndDrop::giveInventory(from_id, item);
1749 }
1750 }
1751 //InstantMessageResponseItem<
1752
1753 }
1754 }
1755 }
1756
1507 LLSD args; 1757 LLSD args;
1508 switch(dialog) 1758 switch(dialog)
1509 { 1759 {
1510 case IM_CONSOLE_AND_CHAT_HISTORY: 1760 case IM_CONSOLE_AND_CHAT_HISTORY:
1511 // These are used for system messages, hence don't need the name, 1761 // These are used for system messages, hence don't need the name,
1512 // as it is always "Second Life". 1762 // as it is always "Imprudence".
1513 // *TODO:translate 1763 // *TODO:translate
1514 args["MESSAGE"] = message; 1764 args["MESSAGE"] = message;
1515 1765
@@ -2026,6 +2276,22 @@ void process_improved_im(LLMessageSystem *msg, void **user_data)
2026 chat.mFromID = from_id ^ gAgent.getSessionID(); 2276 chat.mFromID = from_id ^ gAgent.getSessionID();
2027 } 2277 }
2028 2278
2279 std::string tempname = name;
2280
2281 size_t found = tempname.find(" ");
2282 while(found != std::string::npos)
2283 {
2284 tempname.replace(found, 1, "");
2285 found = tempname.find(" ");
2286 }
2287
2288 if (tempname.length() < 1)
2289 {
2290 name = ">>";
2291 chat.mFromName = name;
2292
2293 }
2294
2029 std::ostringstream link; 2295 std::ostringstream link;
2030 link << "secondlife:///app/objectim/" << session_id 2296 link << "secondlife:///app/objectim/" << session_id
2031 << LLURI::mapToQueryString(query_string); 2297 << LLURI::mapToQueryString(query_string);
@@ -2423,7 +2689,7 @@ void process_chat_from_simulator(LLMessageSystem *msg, void **user_data)
2423 2689
2424 if (tempname.length() < 1) 2690 if (tempname.length() < 1)
2425 { 2691 {
2426 from_name = "no name"; 2692 from_name = ">>";
2427 chat.mFromName = from_name; 2693 chat.mFromName = from_name;
2428 } 2694 }
2429 2695
@@ -3077,9 +3343,18 @@ void process_agent_movement_complete(LLMessageSystem* msg, void**)
3077// if (avatarp) 3343// if (avatarp)
3078 { 3344 {
3079 // Chat the "back" SLURL. (DEV-4907) 3345 // Chat the "back" SLURL. (DEV-4907)
3346 // Show this in the console if DisableTeleportScreens is true
3347 // Why? Because it's nifty, that's why -- MC
3080 LLChat chat("Teleport completed from " + gAgent.getTeleportSourceSLURL()); 3348 LLChat chat("Teleport completed from " + gAgent.getTeleportSourceSLURL());
3081 chat.mSourceType = CHAT_SOURCE_SYSTEM; 3349 chat.mSourceType = CHAT_SOURCE_SYSTEM;
3082 LLFloaterChat::addChatHistory(chat); 3350 if (gSavedSettings.getBOOL("DisableTeleportScreens"))
3351 {
3352 LLFloaterChat::addChat(chat, FALSE, FALSE);
3353 }
3354 else
3355 {
3356 LLFloaterChat::addChatHistory(chat);
3357 }
3083 3358
3084 // Set the new position 3359 // Set the new position
3085 avatarp->setPositionAgent(agent_pos); 3360 avatarp->setPositionAgent(agent_pos);
diff --git a/linden/indra/newview/llviewerobjectlist.cpp b/linden/indra/newview/llviewerobjectlist.cpp
index 21a9252..a251d17 100644
--- a/linden/indra/newview/llviewerobjectlist.cpp
+++ b/linden/indra/newview/llviewerobjectlist.cpp
@@ -60,6 +60,7 @@
60#include "llresmgr.h" 60#include "llresmgr.h"
61#include "llviewerregion.h" 61#include "llviewerregion.h"
62#include "llviewerstats.h" 62#include "llviewerstats.h"
63#include "lltooldraganddrop.h"
63#include "lltoolmgr.h" 64#include "lltoolmgr.h"
64#include "lltoolpie.h" 65#include "lltoolpie.h"
65#include "llkeyboard.h" 66#include "llkeyboard.h"
@@ -96,6 +97,7 @@ U32 LLViewerObjectList::sSimulatorMachineIndex = 1; // Not zero deliberatel
96LLMap<U64, U32> LLViewerObjectList::sIPAndPortToIndex; 97LLMap<U64, U32> LLViewerObjectList::sIPAndPortToIndex;
97std::map<U64, LLUUID> LLViewerObjectList::sIndexAndLocalIDToUUID; 98std::map<U64, LLUUID> LLViewerObjectList::sIndexAndLocalIDToUUID;
98 99
100
99LLViewerObjectList::LLViewerObjectList() 101LLViewerObjectList::LLViewerObjectList()
100{ 102{
101 mNumVisCulled = 0; 103 mNumVisCulled = 0;
@@ -256,6 +258,85 @@ void LLViewerObjectList::processUpdateCore(LLViewerObject* objectp,
256 // (from gPipeline.addObject) 258 // (from gPipeline.addObject)
257 // so that the drawable parent is set properly 259 // so that the drawable parent is set properly
258 findOrphans(objectp, msg->getSenderIP(), msg->getSenderPort()); 260 findOrphans(objectp, msg->getSenderIP(), msg->getSenderPort());
261
262 // Apply custom settings not set in llmanip and lltoolplacer here.
263 // Don't check for permissions in case opensim ever implements
264 // default prim permission support serverside -- MC
265 if (objectp
266 && just_created
267 && objectp->permYouOwner()
268 && objectp->mCreateSelected)
269 {
270 LLMessageSystem* msg = gMessageSystem;
271 msg->newMessageFast(_PREHASH_ObjectImage);
272 msg->nextBlockFast(_PREHASH_AgentData);
273 msg->addUUIDFast(_PREHASH_AgentID, gAgent.getID());
274 msg->addUUIDFast(_PREHASH_SessionID, gAgent.getSessionID());
275 msg->nextBlockFast(_PREHASH_ObjectData);
276 msg->addU32Fast(_PREHASH_ObjectLocalID, (U32)(objectp->mLocalID));
277 msg->addStringFast(_PREHASH_MediaURL, NULL);
278
279 LLPrimitive obj;
280 obj.setNumTEs(U8(10));
281 S32 shinnyLevel = 0;
282 if(gSavedPerAccountSettings.getString("BuildPrefs_Shiny")== "None") shinnyLevel = 0;
283 if(gSavedPerAccountSettings.getString("BuildPrefs_Shiny")== "Low") shinnyLevel = 1;
284 if(gSavedPerAccountSettings.getString("BuildPrefs_Shiny")== "Medium") shinnyLevel = 2;
285 if(gSavedPerAccountSettings.getString("BuildPrefs_Shiny")== "High") shinnyLevel = 3;
286
287 for (int i = 0; i < 10; i++)
288 {
289 // I'm assuming this is because there's no good workaround for setting the default
290 // box texture manually without restarting? -- MC
291 LLTextureEntry tex = LLTextureEntry(LLUUID(gSavedPerAccountSettings.getString("BuildPrefs_Texture")));
292 tex.setColor(gSavedPerAccountSettings.getColor4("BuildPrefs_Color"));
293 tex.setAlpha(1.0 - ((gSavedPerAccountSettings.getF32("BuildPrefs_Alpha")) / 100.0));
294 tex.setGlow(gSavedPerAccountSettings.getF32("BuildPrefs_Glow"));
295 if(gSavedPerAccountSettings.getBOOL("BuildPrefs_FullBright"))
296 {
297 tex.setFullbright(TEM_FULLBRIGHT_MASK);
298 }
299
300 tex.setShiny((U8) shinnyLevel & TEM_SHINY_MASK);
301
302 obj.setTE(U8(i), tex);
303 }
304
305 obj.packTEMessage(gMessageSystem);
306
307 msg->sendReliable(gAgent.getRegion()->getHost());
308
309 msg->newMessage("ObjectFlagUpdate");
310 msg->nextBlockFast(_PREHASH_AgentData);
311 msg->addUUIDFast(_PREHASH_AgentID, gAgent.getID() );
312 msg->addUUIDFast(_PREHASH_SessionID, gAgent.getSessionID());
313 msg->addU32Fast(_PREHASH_ObjectLocalID, (U32)(objectp->mLocalID) );
314 msg->addBOOLFast(_PREHASH_UsePhysics, gSavedPerAccountSettings.getBOOL("BuildPrefs_Physical"));
315 msg->addBOOL("IsTemporary", gSavedPerAccountSettings.getBOOL("BuildPrefs_Temporary"));
316 msg->addBOOL("IsPhantom", gSavedPerAccountSettings.getBOOL("BuildPrefs_Phantom") );
317 msg->addBOOL("CastsShadows", true );
318 msg->sendReliable(gAgent.getRegion()->getHost());
319
320 if(gSavedPerAccountSettings.getBOOL("BuildPrefs_EmbedItem"))
321 {
322 LLViewerInventoryItem* item = (LLViewerInventoryItem*)gInventory.getItem((LLUUID)gSavedPerAccountSettings.getString("BuildPrefs_Item"));
323 if(item)
324 {
325 if(item->getType()==LLAssetType::AT_LSL_TEXT)
326 {
327 LLToolDragAndDrop::dropScript(objectp,
328 item,
329 TRUE,
330 LLToolDragAndDrop::SOURCE_AGENT,
331 gAgent.getID());
332 }else
333 {
334 LLToolDragAndDrop::dropInventory(objectp,item,LLToolDragAndDrop::SOURCE_AGENT,gAgent.getID());
335 }
336 }
337 //llinfos << "SENDING CUBE TEXTURE.." << llendl;
338 }
339 }
259 340
260 // If we're just wandering around, don't create new objects selected. 341 // If we're just wandering around, don't create new objects selected.
261 if (just_created 342 if (just_created
diff --git a/linden/indra/newview/llviewerwindow.cpp b/linden/indra/newview/llviewerwindow.cpp
index 3d884ad..36f1a70 100644
--- a/linden/indra/newview/llviewerwindow.cpp
+++ b/linden/indra/newview/llviewerwindow.cpp
@@ -70,7 +70,6 @@
70#include "object_flags.h" 70#include "object_flags.h"
71#include "lltimer.h" 71#include "lltimer.h"
72#include "timing.h" 72#include "timing.h"
73#include "llviewermenu.h"
74 73
75// newview includes 74// newview includes
76#include "llagent.h" 75#include "llagent.h"
diff --git a/linden/indra/newview/llvoavatar.cpp b/linden/indra/newview/llvoavatar.cpp
index 2a1462f..0f1e2a3 100644
--- a/linden/indra/newview/llvoavatar.cpp
+++ b/linden/indra/newview/llvoavatar.cpp
@@ -46,6 +46,7 @@
46#include "lldriverparam.h" 46#include "lldriverparam.h"
47#include "lleditingmotion.h" 47#include "lleditingmotion.h"
48#include "llemote.h" 48#include "llemote.h"
49#include "floaterao.h"
49#include "llfirstuse.h" 50#include "llfirstuse.h"
50#include "llheadrotmotion.h" 51#include "llheadrotmotion.h"
51#include "llhudeffecttrail.h" 52#include "llhudeffecttrail.h"
@@ -5211,6 +5212,14 @@ void LLVOAvatar::processAnimationStateChanges()
5211 // playing, but not signaled, so stop 5212 // playing, but not signaled, so stop
5212 if (found_anim == mSignaledAnimations.end()) 5213 if (found_anim == mSignaledAnimations.end())
5213 { 5214 {
5215 if (mIsSelf)
5216 {
5217 if ((gSavedSettings.getBOOL("AOEnabled")) && LLFloaterAO::stopMotion(anim_it->first, FALSE)) // if the AO replaced this anim serverside then stop it serverside
5218 {
5219// return TRUE; //no local stop needed
5220 }
5221 }
5222
5214 processSingleAnimationStateChange(anim_it->first, FALSE); 5223 processSingleAnimationStateChange(anim_it->first, FALSE);
5215 mPlayingAnimations.erase(anim_it++); 5224 mPlayingAnimations.erase(anim_it++);
5216 continue; 5225 continue;
@@ -5229,6 +5238,19 @@ void LLVOAvatar::processAnimationStateChanges()
5229 { 5238 {
5230 if (processSingleAnimationStateChange(anim_it->first, TRUE)) 5239 if (processSingleAnimationStateChange(anim_it->first, TRUE))
5231 { 5240 {
5241
5242 if (mIsSelf) // AO is only for ME
5243 {
5244 if (gSavedSettings.getBOOL("AOEnabled"))
5245 {
5246 if (LLFloaterAO::startMotion(anim_it->first, 0,FALSE)) // AO overrides the anim if needed
5247 {
5248// return TRUE; // not playing it locally
5249 }
5250 }
5251 }
5252
5253
5232 mPlayingAnimations[anim_it->first] = anim_it->second; 5254 mPlayingAnimations[anim_it->first] = anim_it->second;
5233 ++anim_it; 5255 ++anim_it;
5234 continue; 5256 continue;
@@ -5426,6 +5448,11 @@ void LLVOAvatar::stopMotionFromSource(const LLUUID& source_id)
5426//----------------------------------------------------------------------------- 5448//-----------------------------------------------------------------------------
5427LLVector3 LLVOAvatar::getVolumePos(S32 joint_index, LLVector3& volume_offset) 5449LLVector3 LLVOAvatar::getVolumePos(S32 joint_index, LLVector3& volume_offset)
5428{ 5450{
5451 if(joint_index < 0)
5452 {
5453 return LLVector3::zero;
5454 }
5455
5429 if (joint_index > mNumCollisionVolumes) 5456 if (joint_index > mNumCollisionVolumes)
5430 { 5457 {
5431 return LLVector3::zero; 5458 return LLVector3::zero;
@@ -6614,6 +6641,7 @@ void LLVOAvatar::sitOnObject(LLViewerObject *sit_object)
6614 6641
6615 gPipeline.markMoved(mDrawable, TRUE); 6642 gPipeline.markMoved(mDrawable, TRUE);
6616 mIsSitting = TRUE; 6643 mIsSitting = TRUE;
6644 LLFloaterAO::ChangeStand();
6617// [RLVa:KB] - Checked: 2009-07-08 (RLVa-1.0.0e) | Added: RLVa-0.2.1d 6645// [RLVa:KB] - Checked: 2009-07-08 (RLVa-1.0.0e) | Added: RLVa-0.2.1d
6618 #ifdef RLV_EXTENSION_STARTLOCATION 6646 #ifdef RLV_EXTENSION_STARTLOCATION
6619 if (rlv_handler_t::isEnabled()) 6647 if (rlv_handler_t::isEnabled())
diff --git a/linden/indra/newview/llwaterparammanager.cpp b/linden/indra/newview/llwaterparammanager.cpp
index 50e4077..67fd977 100644
--- a/linden/indra/newview/llwaterparammanager.cpp
+++ b/linden/indra/newview/llwaterparammanager.cpp
@@ -43,7 +43,6 @@
43#include "llspinctrl.h" 43#include "llspinctrl.h"
44#include "llcheckboxctrl.h" 44#include "llcheckboxctrl.h"
45#include "lluictrlfactory.h" 45#include "lluictrlfactory.h"
46#include "llviewercontrol.h"
47#include "llviewercamera.h" 46#include "llviewercamera.h"
48#include "llcombobox.h" 47#include "llcombobox.h"
49#include "lllineeditor.h" 48#include "lllineeditor.h"
diff --git a/linden/indra/newview/llxmlrpctransaction.cpp b/linden/indra/newview/llxmlrpctransaction.cpp
index a2fd0f0..400cd75 100644
--- a/linden/indra/newview/llxmlrpctransaction.cpp
+++ b/linden/indra/newview/llxmlrpctransaction.cpp
@@ -35,6 +35,7 @@
35#include "llxmlrpctransaction.h" 35#include "llxmlrpctransaction.h"
36 36
37#include "llcurl.h" 37#include "llcurl.h"
38#include "hippoGridManager.h"
38#include "llviewercontrol.h" 39#include "llviewercontrol.h"
39 40
40// Have to include these last to avoid queue redefinition! 41// Have to include these last to avoid queue redefinition!
@@ -415,13 +416,15 @@ void LLXMLRPCTransaction::Impl::setStatus(Status status,
415 default: 416 default:
416 // Usually this means that there's a problem with the login server, 417 // Usually this means that there's a problem with the login server,
417 // not with the client. Direct user to status page. 418 // not with the client. Direct user to status page.
419 // NOTE: these should really be gHippoGridManager->getCurrentGrid()->getGridNick()
420 // but apparently that's broken as of 1.3 b2 -- MC
418 mStatusMessage = 421 mStatusMessage =
419 "Despite our best efforts, something unexpected has gone wrong. \n" 422 "Despite our best efforts, something unexpected has gone wrong. \n"
420 " \n" 423 " \n"
421 "Please check secondlife.com/status \n" 424 "Please check " + gHippoGridManager->getCurrentGrid()->getGridNick() + "'s status \n"
422 "to see if there is a known problem with the service."; 425 "to see if there is a known problem with the service.";
423 426
424 mStatusURI = "http://secondlife.com/status/"; 427 //mStatusURI = "http://secondlife.com/status/";
425 } 428 }
426 } 429 }
427} 430}
@@ -436,7 +439,7 @@ void LLXMLRPCTransaction::Impl::setCurlStatus(CURLcode code)
436 case CURLE_COULDNT_RESOLVE_HOST: 439 case CURLE_COULDNT_RESOLVE_HOST:
437 message = 440 message =
438 "DNS could not resolve the host name.\n" 441 "DNS could not resolve the host name.\n"
439 "Please verify that you can connect to the www.secondlife.com\n" 442 "Please verify that you can connect to " + gHippoGridManager->getCurrentGrid()->getGridNick() + "'s\n"
440 "web site. If you can, but continue to receive this error,\n" 443 "web site. If you can, but continue to receive this error,\n"
441 "please go to the support section and report this problem."; 444 "please go to the support section and report this problem.";
442 break; 445 break;
@@ -445,7 +448,7 @@ void LLXMLRPCTransaction::Impl::setCurlStatus(CURLcode code)
445 message = 448 message =
446 "The login server couldn't verify itself via SSL.\n" 449 "The login server couldn't verify itself via SSL.\n"
447 "If you continue to receive this error, please go\n" 450 "If you continue to receive this error, please go\n"
448 "to the Support section of the SecondLife.com web site\n" 451 "to the Support section of " + gHippoGridManager->getCurrentGrid()->getGridNick() + "'s web site\n"
449 "and report the problem."; 452 "and report the problem.";
450 break; 453 break;
451 454
@@ -457,7 +460,7 @@ void LLXMLRPCTransaction::Impl::setCurlStatus(CURLcode code)
457 "are set correctly.\n" 460 "are set correctly.\n"
458 "\n" 461 "\n"
459 "If you continue to receive this error, please go\n" 462 "If you continue to receive this error, please go\n"
460 "to the Support section of the SecondLife.com web site\n" 463 "to the Support section of " + gHippoGridManager->getCurrentGrid()->getGridNick() + "'s web site\n"
461 "and report the problem."; 464 "and report the problem.";
462 break; 465 break;
463 466
diff --git a/linden/indra/newview/primbackup.cpp b/linden/indra/newview/primbackup.cpp
index a9a8af7..3ab5ee1 100644
--- a/linden/indra/newview/primbackup.cpp
+++ b/linden/indra/newview/primbackup.cpp
@@ -1,6 +1,5 @@
1 1
2#include "llviewerprecompiledheaders.h" 2#include "llviewerprecompiledheaders.h"
3#include "llviewermenu.h"
4 3
5 4
6// system library includes 5// system library includes
@@ -29,7 +28,6 @@
29#include "lldir.h" 28#include "lldir.h"
30#include "llimage.h" 29#include "llimage.h"
31#include "lllfsthread.h" 30#include "lllfsthread.h"
32#include "llviewercontrol.h"
33#include "llassetuploadresponders.h" 31#include "llassetuploadresponders.h"
34#include "lleconomy.h" 32#include "lleconomy.h"
35#include "llhttpclient.h" 33#include "llhttpclient.h"
@@ -38,24 +36,19 @@
38#include "llinventorymodel.h" // gInventory 36#include "llinventorymodel.h" // gInventory
39#include "llviewercontrol.h" // gSavedSettings 37#include "llviewercontrol.h" // gSavedSettings
40#include "llviewermenu.h" // gMenuHolder 38#include "llviewermenu.h" // gMenuHolder
41#include "llagent.h"
42#include "llfilepicker.h" 39#include "llfilepicker.h"
43#include "llfloateranimpreview.h" 40#include "llfloateranimpreview.h"
44#include "llfloaterbuycurrency.h" 41#include "llfloaterbuycurrency.h"
45#include "llfloaterimagepreview.h" 42#include "llfloaterimagepreview.h"
46#include "llfloaternamedesc.h" 43#include "llfloaternamedesc.h"
47#include "llfloatersnapshot.h" 44#include "llfloatersnapshot.h"
48#include "llinventorymodel.h" // gInventory
49#include "llresourcedata.h" 45#include "llresourcedata.h"
50#include "llstatusbar.h" 46#include "llstatusbar.h"
51#include "llviewercontrol.h" // gSavedSettings
52#include "llviewerimagelist.h" 47#include "llviewerimagelist.h"
53#include "lluictrlfactory.h" 48#include "lluictrlfactory.h"
54#include "llviewermenu.h" // gMenuHolder
55#include "llviewerregion.h" 49#include "llviewerregion.h"
56#include "llviewerstats.h" 50#include "llviewerstats.h"
57#include "llviewerwindow.h" 51#include "llviewerwindow.h"
58#include "llappviewer.h"
59#include "lluploaddialog.h" 52#include "lluploaddialog.h"
60// Included to allow LLTextureCache::purgeTextures() to pause watchdog timeout 53// Included to allow LLTextureCache::purgeTextures() to pause watchdog timeout
61#include "llappviewer.h" 54#include "llappviewer.h"
diff --git a/linden/indra/newview/skins/default/xui/de/floater_ao.xml b/linden/indra/newview/skins/default/xui/de/floater_ao.xml
new file mode 100644
index 0000000..c0731ea
--- /dev/null
+++ b/linden/indra/newview/skins/default/xui/de/floater_ao.xml
@@ -0,0 +1,95 @@
1<?xml version="1.0" encoding="utf-8" standalone="yes"?>
2<floater name="geminifloater" title="Animation Overrider">
3 <view_border name="ao_notecard"/>
4 <view_border name="ao_notecard_vis"/>
5 <text name="Give inventory" tool_tip="ZHAO Notiz hier fallen lassen. Konfiguration und Animationen müssen im gleichen Inventar Ordner liegen!">
6 ZHAO II Konfiguration hier fallen lassen.
7 </text>
8 <view_border name="ao_notecard_disp"/>
9 <text name="ao_nc_text" tool_tip="">
10 Aktuell: ITEM
11 </text>
12 <button name="opencard" label="Laden"/>
13 <button name="reloadcard" label="Neuladen"/>
14 <button label="Mehr &gt;&gt;" name="more_btn" tool_tip="Erweiterte Optionen"/>
15 <button label="&lt;&lt; Weniger" name="less_btn" tool_tip="Erweiterte Optionen"/>
16 <check_box label="Anims übersteuern" name="EmeraldAOEnabled"/>
17 <check_box label="Sitzen übersteuern" name="EmeraldAOSitsEnabled"/>
18 <text name="buttons_desc">
19 Stand:
20 </text>
21 <combo_box name="stands" label=""/>
22 <button name="prevstand" tool_tip="vorheriger Stand" label="&lt;&lt;"/>
23 <button name="nextstand" tool_tip="nächster Stand" label="&gt;&gt;"/>
24 <check_box label="zufällige Stand Ani" name="EmeraldAOStandRandomize"/>
25 <check_box label="keine Stand Ani bei Mouselook" name="EmeraldAONoStandsInMouselook"/>
26 <spinner name="standtime" label="Stand Zeit" tool_tip="AO Stand zeit in Sekunden"/>
27 <tab_container label="Default" name="tabcontainer">
28 <panel label="Standard Anis" name="tabdefaultanims">
29 <text name="textdefaultwalk">
30 Standard Gang:
31 </text>
32 <combo_box name="walks" label=""/>
33 <text name="textdefaultrun">
34 Standard Rennen:
35 </text>
36 <combo_box name="runs" label=""/>
37 <text name="textdefaultjump">
38 Standard Sprung:
39 </text>
40 <combo_box name="jumps" label=""/>
41 <text name="textdefaultsit">
42 Standard sitzen:
43 </text>
44 <combo_box name="sits" label=""/>
45 <text name="textdefaultgsit">
46 Standard Bodensitz:
47 </text>
48 <combo_box name="gsits" label=""/>
49 <text name="textdefaultcrouch">
50 Standard geduckt:
51 </text>
52 <combo_box name="crouchs" label=""/>
53 <text name="textdefaultcrouchwalk">
54 Standard geduckt Gang:
55 </text>
56 <combo_box name="cwalks" label=""/>
57 <text name="textdefaultfall">
58 Standard fallen:
59 </text>
60 <combo_box name="falls" label=""/>
61 <text name="textdefaulthover">
62 Standard scheweben:
63 </text>
64 <combo_box name="hovers" label=""/>
65 <text name="textdefaultfly">
66 Standard fliegen:
67 </text>
68 <combo_box name="flys" label=""/>
69 <text name="textdefaultflyslow">
70 Standard langsam fliegen:
71 </text>
72 <combo_box name="flyslows" label=""/>
73 <text name="textdefaultflyup">
74 Standard aufwärts fliegen:
75 </text>
76 <combo_box name="flyups" label=""/>
77 <text name="textdefaultflydown">
78 Standard abwärts fliegen:
79 </text>
80 <combo_box name="flydowns" label=""/>
81 <text name="textdefaultland">
82 Standard landen:
83 </text>
84 <combo_box name="lands" label=""/>
85 <text name="textdefaultstandup">
86 Standard aufstehen:
87 </text>
88 <combo_box name="standups" label=""/>
89 <text name="textdefaultprejump">
90 Standard Pre-Sprung:
91 </text>
92 <combo_box name="prejumps" label=""/>
93 </panel>
94</tab_container>
95</floater> \ No newline at end of file
diff --git a/linden/indra/newview/skins/default/xui/en-us/floater_ao.xml b/linden/indra/newview/skins/default/xui/en-us/floater_ao.xml
new file mode 100644
index 0000000..2bcc9d1
--- /dev/null
+++ b/linden/indra/newview/skins/default/xui/en-us/floater_ao.xml
@@ -0,0 +1,242 @@
1<?xml version="1.0" encoding="utf-8" standalone="yes"?>
2<floater
3 name="geminifloater"
4 rect_control="AORect"
5 title="Animation Overrider"
6 can_resize="false"
7 can_minimize="true"
8 can_close="true"
9 can_drag_on_left="false"
10 width="610"
11 height="380">
12
13 <view_border blevel_style="in" border_thickness="0" bottom="-380" follows="left|top" height="380" left="1"
14 mouse_opaque="false" name="ao_notecard" width="610" />
15 <view_border blevel_style="in" bottom="340" follows="left|top" height="16" left="10"
16 mouse_opaque="false" name="ao_notecard_vis" width="180" />
17 <text bg_visible="false" border_drop_shadow_visible="false" border_visible="false"
18 bottom_delta="0" drop_shadow_visible="true" follows="left|top"
19 font="SansSerifSmall" h_pad="0" halign="center" height="16" left_delta="0"
20 mouse_opaque="true" name="Give inventory"
21 tool_tip="Drop a ZHAO notecard here. Animations have to be in the same Inventory folder as the notecard." v_pad="2"
22 width="180">
23 Drop a ZHAO II notecard here
24 </text>
25 <view_border blevel_style="in" bottom_delta="-18" follows="left|top" height="16" left_delta="0"
26 mouse_opaque="false" name="ao_notecard_disp" width="180" />
27 <text bg_visible="false" border_drop_shadow_visible="false" border_visible="false"
28 bottom_delta="0" drop_shadow_visible="true" follows="left|top"
29 font="SansSerifSmall" h_pad="0" halign="center" height="16" left_delta="0"
30 mouse_opaque="true" name="ao_nc_text"
31 tool_tip="" v_pad="2"
32 width="180">
33 Currently set to: ITEM
34 </text>
35
36 <button
37 name="opencard"
38 label="Open Notecard"
39 font="SansSerifSmall"
40 left="10"
41 bottom_delta="-30"
42 width="110"
43 height="20"
44 follows="bottom|left"
45 />
46 <button
47 name="reloadcard"
48 label="Reload"
49 font="SansSerifSmall"
50 left="124"
51 bottom_delta="0"
52 width="70"
53 height="20"
54 follows="bottom|left"
55 />
56
57 <check_box bottom_delta="-24" control_name="AOEnabled" enabled="true"
58 follows="left|top" font="SansSerifSmall" height="16" initial_value="false" label="Enable Animations Override" left="10"
59 mouse_opaque="true" name="AOEnabled" radio_style="false" width="90" />
60 <check_box bottom_delta="-18" control_name="AOSitsEnabled" enabled="true"
61 follows="left|top" font="SansSerifSmall" height="16" initial_value="true" label="Enable Sits Override" left="10"
62 mouse_opaque="true" name="AOSitsEnabled" radio_style="false" width="90" />
63
64 <text bg_visible="false" border_drop_shadow_visible="false" border_visible="false"
65 bottom_delta="-20" drop_shadow_visible="true" follows="left|bottom"
66 font="SansSerifSmall" h_pad="0" halign="left" height="16" left="10"
67 mouse_opaque="true" name="buttons_desc" v_pad="0" width="180">
68 Stands:
69 </text>
70 <combo_box name="stands" label="" follows="left|top" height="20" left="10" width="180" bottom_delta="-20"/>
71 <button
72 name="prevstand"
73 tool_tip="previous stand"
74 label="&lt;&lt;"
75 font="SansSerifSmall"
76 left="10"
77 bottom_delta="-25"
78 width="90"
79 height="20"
80 follows="bottom|left"
81 />
82 <button
83 name="nextstand"
84 tool_tip="next stand"
85 label="&gt;&gt;"
86 font="SansSerifSmall"
87 left="104"
88 bottom_delta="0"
89 width="90"
90 height="20"
91 follows="bottom|left"
92 />
93 <check_box bottom_delta="-20" control_name="AOStandRandomize" enabled="true"
94 follows="left|top" font="SansSerifSmall" height="16" initial_value="false" label="Randomize Stand Order" left="10"
95 mouse_opaque="true" name="AOStandRandomize" radio_style="false" width="200" />
96 <check_box bottom_delta="-20" control_name="AONoStandsInMouselook" enabled="true"
97 follows="left|top" font="SansSerifSmall" height="16" initial_value="true" label="Disable Stands in Mouselook" left="10"
98 mouse_opaque="true" name="AONoStandsInMouselook" radio_style="false" width="180" />
99 <spinner bottom_delta="-20" decimal_digits="2" follows="left|top" height="16" control_name="AOStandInterval"
100 increment="1" initial_val="20" left="10" max_val="9000" min_val="1.00"
101 mouse_opaque="true" name="standtime" label="Stand Time" label_width="80"
102 tool_tip="AO Stand Time in seconds" width="180" />
103
104 <button
105 name="newcard"
106 label="New Notecard Template"
107 font="SansSerifSmall"
108 left="10"
109 bottom_delta="-32"
110 width="180"
111 height="20"
112 follows="bottom|left"
113 />
114
115 <button bottom="4" follows="left|bottom" font="SansSerifSmall" halign="center"
116 height="20" label="More &gt;&gt;" left="118"
117 mouse_opaque="true" name="more_btn" scale_image="TRUE"
118 tool_tip="Advanced Options" width="76" />
119 <button bottom_delta="0" follows="left|bottom" font="SansSerifSmall" halign="center"
120 height="20" label="&lt;&lt; Less" left_delta="0"
121 mouse_opaque="true" name="less_btn" scale_image="TRUE"
122 tool_tip="Advanced Options" width="76" />
123
124 <tab_container label="Default" bottom="6" left="210" mouse_opaque="false" name="tabcontainer" tab_min_width="50" tab_position="top" width="390" height="350" bg_opaque_color="0,0,0,0.0">
125 <panel border="true" left="0" bottom="0" follows="left|top|right|bottom" height="350" label="Default Anims" mouse_opaque="true" name="tabdefaultanims" width="390">
126
127 <text bg_visible="false" border_drop_shadow_visible="false" border_visible="false"
128 bottom_delta="-40" drop_shadow_visible="true" follows="left|bottom"
129 font="SansSerifSmall" h_pad="0" halign="left" height="16" left="10"
130 mouse_opaque="true" name="textdefaultwalk" v_pad="0" width="180">
131 Default Walk:
132 </text>
133 <combo_box name="walks" label="" follows="left|top" height="20" left="10" width="180" bottom_delta="0" control_name="AODefaultWalk" />
134
135 <text bg_visible="false" border_drop_shadow_visible="false" border_visible="false"
136 bottom_delta="-40" drop_shadow_visible="true" follows="left|bottom"
137 font="SansSerifSmall" h_pad="0" halign="left" height="16" left="10"
138 mouse_opaque="true" name="textdefaultrun" v_pad="0" width="180">
139 Default Run:
140 </text>
141 <combo_box name="runs" label="" follows="left|top" height="20" left="10" width="180" bottom_delta="0" control_name="AODefaultRun" />
142 <text bg_visible="false" border_drop_shadow_visible="false" border_visible="false"
143 bottom_delta="-40" drop_shadow_visible="true" follows="left|bottom"
144 font="SansSerifSmall" h_pad="0" halign="left" height="16" left="10"
145 mouse_opaque="true" name="textdefaultjump" v_pad="0" width="180">
146 Default Jump:
147 </text>
148 <combo_box name="jumps" label="" follows="left|top" height="20" left="10" width="180" bottom_delta="0" control_name="AODefaultJump" />
149 <text bg_visible="false" border_drop_shadow_visible="false" border_visible="false"
150 bottom_delta="-40" drop_shadow_visible="true" follows="left|bottom"
151 font="SansSerifSmall" h_pad="0" halign="left" height="16" left="10"
152 mouse_opaque="true" name="textdefaultsit" v_pad="0" width="180">
153 Default Sit:
154 </text>
155 <combo_box name="sits" label="" follows="left|top" height="20" left="10" width="180" bottom_delta="0" control_name="AODefaultSit" />
156 <text bg_visible="false" border_drop_shadow_visible="false" border_visible="false"
157 bottom_delta="-40" drop_shadow_visible="true" follows="left|bottom"
158 font="SansSerifSmall" h_pad="0" halign="left" height="16" left="10"
159 mouse_opaque="true" name="textdefaultgsit" v_pad="0" width="180">
160 Default Groundsit:
161 </text>
162 <combo_box name="gsits" label="" follows="left|top" height="20" left="10" width="180" bottom_delta="0" control_name="AODefaultGroundSit" />
163 <text bg_visible="false" border_drop_shadow_visible="false" border_visible="false"
164 bottom_delta="-40" drop_shadow_visible="true" follows="left|bottom"
165 font="SansSerifSmall" h_pad="0" halign="left" height="16" left="10"
166 mouse_opaque="true" name="textdefaultcrouch" v_pad="0" width="180">
167 Default Crouch:
168 </text>
169 <combo_box name="crouchs" label="" follows="left|top" height="20" left="10" width="180" bottom_delta="0" control_name="AODefaultCrouch" />
170 <text bg_visible="false" border_drop_shadow_visible="false" border_visible="false"
171 bottom_delta="-40" drop_shadow_visible="true" follows="left|bottom"
172 font="SansSerifSmall" h_pad="0" halign="left" height="16" left="10"
173 mouse_opaque="true" name="textdefaultcrouchwalk" v_pad="0" width="180">
174 Default Crouchwalk:
175 </text>
176 <combo_box name="cwalks" label="" follows="left|top" height="20" left="10" width="180" bottom_delta="0" control_name="AODefaultCrouchWalk" />
177 <text bg_visible="false" border_drop_shadow_visible="false" border_visible="false"
178 bottom_delta="-40" drop_shadow_visible="true" follows="left|bottom"
179 font="SansSerifSmall" h_pad="0" halign="left" height="16" left="10"
180 mouse_opaque="true" name="textdefaultfall" v_pad="0" width="180">
181 Default Fall:
182 </text>
183 <combo_box name="falls" label="" follows="left|top" height="20" left="10" width="180" bottom_delta="0" control_name="AODefaultFall" />
184 <text bg_visible="false" border_drop_shadow_visible="false" border_visible="false"
185 bottom_delta="280" drop_shadow_visible="true" follows="left|bottom"
186 font="SansSerifSmall" h_pad="0" halign="left" height="16" left="200"
187 mouse_opaque="true" name="textdefaulthover" v_pad="0" width="180">
188 Default Hover:
189 </text>
190 <combo_box name="hovers" label="" follows="left|top" height="20" left_delta="0" width="180" bottom_delta="0" control_name="AODefaultHover" />
191 <text bg_visible="false" border_drop_shadow_visible="false" border_visible="false"
192 bottom_delta="-40" drop_shadow_visible="true" follows="left|bottom"
193 font="SansSerifSmall" h_pad="0" halign="left" height="16" left_delta="0"
194 mouse_opaque="true" name="textdefaultfly" v_pad="0" width="180">
195 Default Fly:
196 </text>
197 <combo_box name="flys" label="" follows="left|top" height="20" left_delta="0" width="180" bottom_delta="0" control_name="AODefaultFly" />
198 <text bg_visible="false" border_drop_shadow_visible="false" border_visible="false"
199 bottom_delta="-40" drop_shadow_visible="true" follows="left|bottom"
200 font="SansSerifSmall" h_pad="0" halign="left" height="16" left_delta="0"
201 mouse_opaque="true" name="textdefaultflyslow" v_pad="0" width="180">
202 Default Slow Fly:
203 </text>
204 <combo_box name="flyslows" label="" follows="left|top" height="20" left_delta="0" width="180" bottom_delta="0" control_name="AODefaultFlySlow" />
205 <text bg_visible="false" border_drop_shadow_visible="false" border_visible="false"
206 bottom_delta="-40" drop_shadow_visible="true" follows="left|bottom"
207 font="SansSerifSmall" h_pad="0" halign="left" height="16" left_delta="0"
208 mouse_opaque="true" name="textdefaultflyup" v_pad="0" width="180">
209 Default Upward Fly:
210 </text>
211 <combo_box name="flyups" label="" follows="left|top" height="20" left_delta="0" width="180" bottom_delta="0" control_name="AODefaultFlyUp" />
212 <text bg_visible="false" border_drop_shadow_visible="false" border_visible="false"
213 bottom_delta="-40" drop_shadow_visible="true" follows="left|bottom"
214 font="SansSerifSmall" h_pad="0" halign="left" height="16" left_delta="0"
215 mouse_opaque="true" name="textdefaultflydown" v_pad="0" width="180">
216 Default Downward Fly:
217 </text>
218 <combo_box name="flydowns" label="" follows="left|top" height="20" left_delta="0" width="180" bottom_delta="0" control_name="AODefaultFlyDown" />
219 <text bg_visible="false" border_drop_shadow_visible="false" border_visible="false"
220 bottom_delta="-40" drop_shadow_visible="true" follows="left|bottom"
221 font="SansSerifSmall" h_pad="0" halign="left" height="16" left_delta="0"
222 mouse_opaque="true" name="textdefaultland" v_pad="0" width="180">
223 Default Land:
224 </text>
225 <combo_box name="lands" label="" follows="left|top" height="20" left_delta="0" width="180" bottom_delta="0" control_name="AODefaultLand" />
226 <text bg_visible="false" border_drop_shadow_visible="false" border_visible="false"
227 bottom_delta="-40" drop_shadow_visible="true" follows="left|bottom"
228 font="SansSerifSmall" h_pad="0" halign="left" height="16" left_delta="0"
229 mouse_opaque="true" name="textdefaultstandup" v_pad="0" width="180">
230 Default Standup:
231 </text>
232 <combo_box name="standups" label="" follows="left|top" height="20" left_delta="0" width="180" bottom_delta="0" control_name="AODefaultStandUp" />
233 <text bg_visible="false" border_drop_shadow_visible="false" border_visible="false"
234 bottom_delta="-40" drop_shadow_visible="true" follows="left|bottom"
235 font="SansSerifSmall" h_pad="0" halign="left" height="16" left_delta="0"
236 mouse_opaque="true" name="textdefaultprejump" v_pad="0" width="180">
237 Default Pre-Jump:
238 </text>
239 <combo_box name="prejumps" label="" follows="left|top" height="20" left_delta="0" width="180" bottom_delta="0" control_name="AODefaultPreJump" />
240 </panel>
241</tab_container>
242</floater> \ No newline at end of file
diff --git a/linden/indra/newview/skins/default/xui/en-us/floater_build_options.xml b/linden/indra/newview/skins/default/xui/en-us/floater_build_options.xml
index 807caa0..298805d 100644
--- a/linden/indra/newview/skins/default/xui/en-us/floater_build_options.xml
+++ b/linden/indra/newview/skins/default/xui/en-us/floater_build_options.xml
@@ -1,27 +1,175 @@
1<?xml version="1.0" encoding="utf-8" standalone="yes" ?> 1<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
2<floater bottom="-297" can_close="true" can_drag_on_left="false" can_minimize="true" 2<floater bottom="-297" can_close="true" can_drag_on_left="false" can_minimize="true"
3 can_resize="false" follows="right" height="151" left="298" min_height="151" 3 can_resize="false" follows="right" height="370" min_height="370"
4 min_width="272" mouse_opaque="true" name="build options floater" 4 min_width="530" mouse_opaque="true" name="build options floater"
5 rect_control="FloaterBuildOptionsRect" title="Grid Options" width="272"> 5 rect_control="FloaterBuildOptionsRect" title="Advanced Build Options" width="530">
6 <spinner bottom="-53" control_name="GridResolution" decimal_digits="3" 6
7 <view_border bevel_style="none" border_thickness="1" bottom="-145" follows="top|left" height="105"
8 left="14" name="GridBorder" width="170"/>
9 <text type="string" length="1" bg_visible="false" border_drop_shadow_visible="false" border_visible="false"
10 bottom_delta="110" drop_shadow_visible="true" enabled="true" follows="left|top" font="SansSerifSmall"
11 h_pad="0" halign="left" height="10" left_delta="53" mouse_opaque="false"
12 name="text_box7" v_pad="0" width="150"> Grid Options</text>
13 <spinner bottom="-60" decimal_digits="3"
7 follows="left|top" height="16" increment="0.1" initial_val="1" 14 follows="left|top" height="16" increment="0.1" initial_val="1"
8 label="Grid Unit (meters)" label_width="110" left="14" max_val="5" 15 label="Grid Units (m)" label_width="90" left="21" max_val="5"
9 min_val="0.01" mouse_opaque="true" name="GridResolution" width="170" /> 16 min_val="0.01" mouse_opaque="true" name="GridResolution" width="155" />
10 <spinner bottom_delta="-21" control_name="GridDrawSize" decimal_digits="1" 17 <spinner bottom_delta="-20" decimal_digits="1"
11 follows="left|top" height="16" increment="0.5" initial_val="5" 18 follows="left|top" height="16" increment="0.5" initial_val="5"
12 label="Grid Extents (meters)" label_width="110" left="14" max_val="50" 19 label="Grid Extents (m)" label_width="90" left_delta="0" max_val="50"
13 min_val="1" mouse_opaque="true" name="GridDrawSize" width="170" /> 20 min_val="1" mouse_opaque="true" name="GridDrawSize" width="155" />
14 <check_box bottom_delta="-21" control_name="GridSubUnit" follows="left|top" 21 <check_box bottom_delta="-20" follows="left|top"
15 font="SansSerifSmall" height="16" initial_value="false" 22 font="SansSerifSmall" height="16" initial_value="false"
16 label="Enable Sub-Unit Snapping" left="14" mouse_opaque="true" 23 label="Sub-Unit Snapping" left_delta="0" mouse_opaque="true"
17 name="GridSubUnit" width="200" /> 24 name="GridSubUnit" width="200" />
18 <check_box bottom_delta="-21" control_name="GridCrossSections" follows="left|top" 25 <check_box bottom_delta="-20" follows="left|top"
19 font="SansSerifSmall" height="16" initial_value="false" 26 font="SansSerifSmall" height="16" initial_value="false"
20 label="Show Cross Sections" left="14" mouse_opaque="true" 27 label="Show Cross Sections" left_delta="0" mouse_opaque="true"
21 name="GridCrossSection" width="200" /> 28 name="GridCrossSection" width="200" />
22 <slider bottom_delta="-21" can_edit_text="false" control_name="GridOpacity" 29 <slider bottom_delta="-20" can_edit_text="false"
23 decimal_digits="3" follows="left" height="16" increment="0.05" 30 decimal_digits="3" follows="left" height="16" increment="0.05"
24 initial_val="0.7" label="Grid Opacity" left="14" max_val="1" min_val="0" 31 initial_val="0.7" label="Grid Opacity" left_delta="0" max_val="1" min_val="0"
25 mouse_opaque="true" name="GridOpacity" show_text="false" value="0.7" 32 mouse_opaque="true" name="GridOpacity" show_text="false" value="0.7"
26 width="200" /> 33 width="165" />
34
35 <text type="string" length="1" bg_visible="false" border_drop_shadow_visible="false" border_visible="false"
36 bottom_delta="-30" drop_shadow_visible="true" enabled="true" follows="left|top" font="SansSerifSmall"
37 h_pad="0" halign="left" height="10" left="44" mouse_opaque="false"
38 name="text_box3" v_pad="0" width="150"> Object Size</text>
39 <text type="string" length="1" bg_visible="false" border_drop_shadow_visible="false" border_visible="false"
40 bottom_delta="0" drop_shadow_visible="true" enabled="true" follows="left|top" font="SansSerifSmall"
41 h_pad="0" halign="left" height="10" left_delta="130" mouse_opaque="false"
42 name="text_box4" v_pad="0" width="150"> Settings</text>
43 <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" font="SansSerifSmall"
45 h_pad="0" halign="left" height="10" left_delta="190" mouse_opaque="false"
46 name="text_box5" v_pad="0" width="150"> Texture</text>
47 <view_border bevel_style="none" border_thickness="1" bottom_delta="-98" follows="top|left" height="90"
48 left="14" name="SizeBorder" width="120" />
49 <view_border bevel_style="none" border_thickness="1" bottom_delta="-0" follows="top|left" height="90"
50 left_delta="134" name="SettingsBorder" width="100" />
51 <view_border bevel_style="none" border_thickness="1" bottom_delta="0" follows="top|left" height="90"
52 left_delta="114" name="TextureBorder" width="250" />
53
54 <spinner bottom="-200" decimal_digits="5" follows="left|top" height="16" increment="0.05"
55 label="X size" label_width="40" left="20" max_val="10" min_val="0.01"
56 mouse_opaque="true" name="X size" width="110" />
57 <spinner bottom_delta="-20" decimal_digits="5" follows="left|top" height="16" increment="0.05"
58 label="Y size" label_width="40" left_delta="0" max_val="10" min_val="0.01"
59 mouse_opaque="true" name="Y size" width="110" />
60 <spinner bottom_delta="-20" decimal_digits="5" follows="left|top" height="16" increment="0.05"
61 label="Z size" label_width="40" left_delta="0" max_val="10" min_val="0.01"
62 mouse_opaque="true" name="Z size" width="110" />
63
64 <check_box bottom="-200" enabled="true" follows="left|top" font="SansSerifSmall" height="16"
65 label="Phantom" left="154" mouse_opaque="true" name="PhantomToggle" radio_style="false"
66 width="100" />
67 <check_box bottom_delta="-20" enabled="true" follows="left|top" font="SansSerifSmall" height="16"
68 label="Physical" left_delta="0" mouse_opaque="true" name="PhysicalToggle" radio_style="false"
69 width="100" />
70 <check_box bottom_delta="-20" enabled="true" follows="left|top" font="SansSerifSmall" height="16"
71 label="Temporary" left_delta="0" mouse_opaque="true" name="TemporaryToggle" radio_style="false"
72 width="100" />
73 <combo_box allow_text_entry="false" bottom_delta="-20" left_delta="1" follows="left|top" height="18"
74 left="10" max_chars="20" mouse_opaque="true" name="material" width="87">
75 <combo_item name="Stone" value="Stone">Stone</combo_item>
76 <combo_item name="Metal" value="Metal">Metal</combo_item>
77 <combo_item name="Glass" value="Glass">Glass</combo_item>
78 <combo_item name="Wood" value="Wood">Wood</combo_item>
79 <combo_item name="Flesh" value="Flesh">Flesh</combo_item>
80 <combo_item name="Plastic" value="Plastic">Plastic</combo_item>
81 <combo_item name="Rubber" value="Rubber">Rubber</combo_item>
82 </combo_box>
83
84 <texture_picker allow_no_texture="false" bottom="-265" can_apply_immediately="true" default_image_name="Default"
85 follows="left|top" height="80" label="Texture" left="270" mouse_opaque="true"
86 name="texture control" tool_tip="Click to choose a picture"
87 width="64"/>
88 <color_swatch border_color="0.45098, 0.517647, 0.607843, 1" bottom_delta="0" can_apply_immediately="true"
89 color="1, 1, 1, 1" follows="left|top" height="80" label="Color" left_delta="75"
90 mouse_opaque="true" name="colorswatch" tool_tip="Click to open Color Picker" width="64" />
91
92 <spinner bottom="-200" decimal_digits="0" follows="left|top" height="16" increment="1"
93 label="Alpha" label_width="40" left_delta="70" max_val="100" min_val="0"
94 mouse_opaque="true" name="alpha" width="90" />
95 <spinner bottom_delta="-20" enabled="true" decimal_digits="2" follows="left|top" height="16"
96 increment="0.05" label="Glow" label_width="40" left_delta="0" max_val="1"
97 min_val="0" mouse_opaque="true" name="glow" width="90" />
98 <check_box bottom_delta="-20" enabled="true" follows="left|top" font="SansSerifSmall" height="16"
99 label="Full Bright" left_delta="0" mouse_opaque="true" name="FBToggle" radio_style="false"
100 width="100" />
101 <combo_box allow_text_entry="false" bottom_delta="-20" follows="left|top" height="18" left_delta="0"
102 max_chars="20" mouse_opaque="true" name="combobox shininess" tool_tip="Set the amount of shine for the object"
103 width="90">
104 <combo_item name="None" value="None"> None</combo_item>
105 <combo_item name="Low" value="Low"> Low</combo_item>
106 <combo_item name="Medium" value="Medium"> Medium</combo_item>
107 <combo_item name="High" value="High"> High</combo_item>
108 </combo_box>
109
110 <view_border blevel_style="in" bottom_delta="-40" follows="left|top" height="16" left="14"
111 mouse_opaque="false" name="im_give_drop_target_rect" width="400"/>
112 <text bg_visible="false" border_drop_shadow_visible="false" border_visible="false" bottom_delta="0"
113 drop_shadow_visible="true" follows="left|top" font="SansSerifSmall" h_pad="0" halign="center"
114 height="16" left_delta="0" mouse_opaque="true" name="Give inventory" tool_tip="Drop an inventory item here."
115 v_pad="2" width="400"> Drop an inventory item here to have it added to the prim contents.</text>
116 <view_border blevel_style="in" bottom_delta="-18" follows="left|top" height="16" left_delta="0"
117 mouse_opaque="false" name="build_item_add_disp_rect" width="400"/>
118 <button bottom_delta="0" enabled="true" font="SansSerif" halign="center" height="20"
119 label="Clear Item" left_delta="405" mouse_opaque="true"
120 name="btn_clear" scale_image="true" width="90" />
121 <text bg_visible="false" border_drop_shadow_visible="false" border_visible="false" bottom_delta="0"
122 drop_shadow_visible="true" follows="left|top" font="SansSerifSmall" h_pad="0" halign="center"
123 height="16" left="14" mouse_opaque="true" name="build_item_add_disp_rect_txt" tool_tip=""
124 v_pad="2" width="400"> Currently set to: ITEM</text>
125 <check_box name="BuildPrefsEmbedItem" bottom_delta="-25" enabled="true"
126 follows="left|top" font="SansSerifSmall" height="16"
127 initial_value="false" label="Embed an item into the newly created object" left_delta="0"
128 mouse_opaque="true" radio_style="false" width="270" />
129
130 <view_border bevel_style="none" border_thickness="1" bottom="-145" follows="top|left" height="105"
131 left="198" name="PivotBorder" width="135"/>
132 <text type="string" length="1" bg_visible="false" border_drop_shadow_visible="false" border_visible="false"
133 bottom_delta="110" drop_shadow_visible="true" enabled="true" follows="left|top" font="SansSerifSmall"
134 h_pad="0" halign="left" height="10" left_delta="35" mouse_opaque="false"
135 name="text_box6" v_pad="0" width="150"> Pivot Point</text>
136 <spinner bottom_delta="-25" decimal_digits="5" follows="left|top" height="16" increment="0.05"
137 label="X pos" label_width="40" left_delta="-28" mouse_opaque="true" max_val="256"
138 min_val="-256" name="X pos" width="120" />
139 <spinner bottom_delta="-20" decimal_digits="5" follows="left|top" height="16" increment="0.05"
140 label="Y pos" label_width="40" left_delta="0" mouse_opaque="true" max_val="256"
141 min_val="-256" name="Y pos" width="120" />
142 <spinner bottom_delta="-20" decimal_digits="5" follows="left|top" height="16" increment="0.05"
143 label="Z pos" label_width="40" left_delta="0" mouse_opaque="true" max_val="256"
144 min_val="-256" name="Z pos" width="120" />
145 <check_box bottom_delta="-20" enabled="true" follows="left|top" font="SansSerifSmall" height="16"
146 label="Values are percent" left_delta="-5" mouse_opaque="true" tool_tip="Default settings are Percentages and every axis set at 50"
147 name="PivotPercToggle" radio_style="false" width="100" />
148
149 <check_box bottom_delta="60" enabled="true" follows="left|top" font="SansSerifSmall" height="16"
150 initial_value="true" label="Highlight selected prims" left_delta="143"
151 mouse_opaque="true" name="BuildPrefsRenderHighlight_toggle"
152 radio_style="false" width="270"/>
153 <check_box bottom_delta="-20" enabled="true" follows="left|top" font="SansSerifSmall" height="16"
154 initial_value="false" label="Show axis on root prim" left_delta="0"
155 mouse_opaque="true" tool_tip="Default behaviour is to show the axis on the center of mass of a linkset. If enabled, the axis will be shown on the root prim of the linkset instead."
156 name="BuildPrefsActualRoot_toggle" radio_style="false" width="270" />
157 <check_box bottom_delta="-20" enabled="true" follows="left|top" font="SansSerifSmall" height="16"
158 label="Rez objects using land group" left_delta="0" mouse_opaque="true"
159 tooltip="Rez objects on group land using the land's group (if possible)"
160 name="grouplandrez" radio_style="false" width="270" />
161
162 <button bottom="2" enabled="true" follows="right|bottom" font="SansSerif"
163 halign="center" height="20" label="Cancel" right="-4"
164 mouse_opaque="true" name="btn_cancel" scale_image="true" width="90" />
165 <button bottom_delta="0" enabled="true" follows="right|bottom" font="SansSerif"
166 halign="center" height="20" label="Apply" left_delta="-93"
167 mouse_opaque="true" name="btn_apply" scale_image="true" width="90" />
168 <button bottom_delta="0" enabled="true" follows="right|bottom" font="SansSerif"
169 halign="center" height="20" label="OK" left_delta="-93"
170 mouse_opaque="true" name="btn_ok" scale_image="true" width="90" />
171 <button bottom_delta="0" enabled="true" follows="left|bottom" font="SansSerif"
172 halign="center" height="20" label="Reset to Defaults"
173 left="2" mouse_opaque="true" name="btn_reset" scale_image="true"
174 width="160" />
27</floater> 175</floater>
diff --git a/linden/indra/newview/skins/default/xui/en-us/floater_busy.xml b/linden/indra/newview/skins/default/xui/en-us/floater_busy.xml
new file mode 100644
index 0000000..a9bd613
--- /dev/null
+++ b/linden/indra/newview/skins/default/xui/en-us/floater_busy.xml
@@ -0,0 +1,93 @@
1<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
2<floater name="busy" title="IM Response Options"
3 height="446" width="255" min_height="446" min_width="255"
4 follows="top|right" can_close="true" can_drag_on_left="false"
5 can_minimize="true" can_resize="false" can_tear_off="false">
6
7 <check_box bottom="-40" enabled="true" follows="left|top" font="SansSerifSmall" height="16"
8 initial_value="false" label="Announce incoming instant messages" left="10" mouse_opaque="true"
9 name="InstantMessageAnnounceIncoming" radio_style="false" width="270"/>
10 <check_box bottom_delta="-20" enabled="true" follows="left|top" font="SansSerifSmall" height="16"
11 initial_value="false" label="Steal focus" left_delta="10" mouse_opaque="true" name="InstantMessageAnnounceStealFocus"
12 radio_style="false" width="270"/>
13 <check_box bottom_delta="-20" enabled="true" follows="left|top" font="SansSerifSmall" height="16"
14 initial_value="false" label="Autorespond to non-friends" left_delta="-10" mouse_opaque="true"
15 name="InstantMessageResponseFriends" radio_style="false" width="270"/>
16 <check_box bottom_delta="-20" enabled="true" follows="left|top" font="SansSerifSmall" height="16"
17 initial_value="false" label="Autorespond to people you have muted" left_delta="0"
18 mouse_opaque="true" name="InstantMessageResponseMuted" radio_style="false"
19 width="270"/>
20 <check_box bottom_delta="-20" enabled="true" follows="left|top" font="SansSerifSmall" height="16"
21 initial_value="false" label="Autorespond to anyone" left_delta="0" mouse_opaque="true"
22 name="InstantMessageResponseAnyone" radio_style="false" width="270"/>
23 <check_box bottom_delta="-20" enabled="true" follows="left|top" font="SansSerifSmall" height="16"
24 initial_value="false" label="Send as soon as they start typing" left_delta="10" mouse_opaque="true"
25 name="InstantMessageShowOnTyping" radio_style="false" width="270"/>
26 <check_box bottom_delta="-20" enabled="true" follows="left|top" font="SansSerifSmall" height="26"
27 initial_value="false" label="Don't show IMs you auto-responsed to" left_delta="0"
28 mouse_opaque="true" name="InstantMessageShowResponded" radio_style="false"
29 width="170"/>
30 <check_box bottom_delta="-20" enabled="true" follows="left|top" font="SansSerifSmall" height="16"
31 initial_value="false" label="Autorespond to every message" left_delta="0" mouse_opaque="true"
32 name="InstantMessageResponseRepeat" radio_style="false" width="270"/>
33
34 <text type="string" length="1" bg_visible="false" border_drop_shadow_visible="false" border_visible="false"
35 bottom_delta="-25" drop_shadow_visible="true" enabled="true" follows="left|top" font="SansSerifSmall"
36 h_pad="0" halign="left" height="20" left_delta="-10" mouse_opaque="false"
37 name="text_box1" v_pad="0" width="425">
38 Response Text:
39 </text>
40 <text type="string" length="1" bg_visible="false" border_drop_shadow_visible="false" border_visible="false"
41 bottom_delta="-20" drop_shadow_visible="true" enabled="true" follows="left|top" font="SansSerifSmall"
42 h_pad="0" halign="left" height="20" left_delta="15" mouse_opaque="false"
43 name="text_box_a" v_pad="0" width="425">
44 Use "#f" for recipient's first name
45 </text>
46 <text type="string" length="1" bg_visible="false" border_drop_shadow_visible="false" border_visible="false"
47 bottom_delta="-20" drop_shadow_visible="true" enabled="true" follows="left|top" font="SansSerifSmall"
48 h_pad="0" halign="left" height="20" left_delta="0" mouse_opaque="false"
49 name="text_box_b" v_pad="0" width="425">
50 Use "#l" for last name
51 </text>
52 <text type="string" length="1" bg_visible="false" border_drop_shadow_visible="false" border_visible="false"
53 bottom_delta="-20" drop_shadow_visible="true" enabled="true" follows="left|top" font="SansSerifSmall"
54 h_pad="0" halign="left" height="20" left_delta="0" mouse_opaque="false"
55 name="text_box_c" v_pad="0" width="425">
56 Use "#t" for timestamp
57 </text>
58
59 <text_editor type="string" length="1" bottom_delta="-85" embedded_items="false" enabled="true"
60 follows="left|top" font="SansSerifSmall" height="75" left_delta="-15" max_length="1100"
61 mouse_opaque="true" name="im_response" width="230" word_wrap="true"/>
62
63 <check_box bottom_delta="-30" enabled="true" follows="left|top" font="SansSerifSmall" height="16"
64 initial_value="false" label="Send an item along with the response" left_delta="0"
65 mouse_opaque="true" name="InstantMessageResponseItem" radio_style="false"
66 width="270"/>
67
68 <view_border blevel_style="in" bottom_delta="-20" follows="left|top" height="16" left_delta="0"
69 mouse_opaque="false" name="im_give_drop_target_rect" width="230"/>
70
71 <text bg_visible="false" border_drop_shadow_visible="false" border_visible="false" bottom_delta="0"
72 drop_shadow_visible="true" follows="left|top" font="SansSerifSmall" h_pad="0" halign="center"
73 height="16" left_delta="0" mouse_opaque="true" name="Give inventory" tool_tip="Drop an inventory item here to have it given along with the auto-response."
74 v_pad="2" width="230">
75 Drop an inventory item here
76 </text>
77
78 <view_border blevel_style="in" bottom_delta="-18" follows="left|top" height="16" left_delta="0"
79 mouse_opaque="false" name="im_give_disp_rect" width="230"/>
80
81 <text bg_visible="false" border_drop_shadow_visible="false" border_visible="false" bottom_delta="0"
82 drop_shadow_visible="true" follows="left|top" font="SansSerifSmall" h_pad="0" halign="center"
83 height="16" left_delta="0" mouse_opaque="true" name="im_give_disp_rect_txt" tool_tip=""
84 v_pad="2" width="230">
85 Currently set to: ITEM
86 </text>
87
88 <button bottom_delta="-26" follows="top|right" height="22" label="Cancel"
89 right="-10" name="btn_cancel" tool_tip="" enagled="true" width="80" />
90 <button bottom_delta="0" follows="top|right" height="22" label="OK"
91 right="-90" name="btn_ok" tool_tip="" enabled="true" width="80" />
92
93</floater> \ No newline at end of file
diff --git a/linden/indra/newview/skins/default/xui/en-us/floater_image_preview.xml b/linden/indra/newview/skins/default/xui/en-us/floater_image_preview.xml
index 76c1852..975f650 100644
--- a/linden/indra/newview/skins/default/xui/en-us/floater_image_preview.xml
+++ b/linden/indra/newview/skins/default/xui/en-us/floater_image_preview.xml
@@ -1,6 +1,6 @@
1<?xml version="1.0" encoding="utf-8" standalone="yes" ?> 1<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
2<floater can_close="true" can_drag_on_left="false" can_minimize="false" 2<floater can_close="true" can_drag_on_left="false" can_minimize="false"
3 can_resize="false" height="440" min_height="140" min_width="300" 3 can_resize="false" height="450" min_height="450" min_width="300"
4 name="Image Preview" title="" width="300"> 4 name="Image Preview" title="" width="300">
5 <text bottom_delta="-40" follows="top|left" height="15" left="10" name="name_label"> 5 <text bottom_delta="-40" follows="top|left" height="15" left="10" name="name_label">
6 Name: 6 Name:
@@ -53,16 +53,16 @@
53 53
54Try saving image as 24 bit Targa (.tga). 54Try saving image as 24 bit Targa (.tga).
55 </text> 55 </text>
56 <check_box bottom="37" control_name="LosslessJ2CUpload" enabled="false" 56 <check_box bottom="45" control_name="LosslessJ2CUpload" enabled="false"
57 follows="bottom|left" font="SansSerifSmall" height="16" 57 follows="bottom|left" font="SansSerifSmall" height="16"
58 initial_value="false" label="Use lossless compression" left="10" 58 initial_value="false" label="Use lossless compression" left="10"
59 left_delta="2" name="lossless_check" width="280" /> 59 left_delta="2" name="lossless_check" width="280" />
60 <check_box bottom="37" control_name="EmeraldTemporaryUpload" enabled="true" 60 <check_box bottom_delta="-18" control_name="EmeraldTemporaryUpload" enabled="true"
61 follows="bottom|left" font="SansSerifSmall" height="16" 61 follows="bottom|left" font="SansSerifSmall" height="16"
62 initial_value="false" label="Temporary Image (Free)" 62 initial_value="false" label="Temporary Image (Free)"
63 left_delta="155" name="temp_check" width="280" tooltip="Sets the asset to be temporary, meaning its free, but in return, only good for a short time before it ceases to exist." /> 63 left_delta="0" name="temp_check" width="280" tooltip="Sets the asset to be temporary, meaning its free, but in return, only good for a short time before it ceases to exist." />
64 <button bottom="10" follows="bottom|right" height="20" label="Cancel" left="165" 64 <button bottom="5" follows="bottom|right" height="20" label="Cancel" left="165"
65 name="cancel_btn" width="125" /> 65 name="cancel_btn" width="125" />
66 <button bottom="10" follows="bottom|left" height="20" label="Upload (L$[AMOUNT])" 66 <button bottom="5" follows="bottom|left" height="20" label="Upload (L$[AMOUNT])"
67 left="15" name="ok_btn" width="125" /> 67 left="15" name="ok_btn" width="125" />
68</floater> 68</floater>
diff --git a/linden/indra/newview/skins/default/xui/en-us/floater_tools.xml b/linden/indra/newview/skins/default/xui/en-us/floater_tools.xml
index 959ebde..52275ea 100644
--- a/linden/indra/newview/skins/default/xui/en-us/floater_tools.xml
+++ b/linden/indra/newview/skins/default/xui/en-us/floater_tools.xml
@@ -119,10 +119,10 @@
119 <check_box bottom_delta="-19" control_name="SnapEnabled" follows="left|top" 119 <check_box bottom_delta="-19" control_name="SnapEnabled" follows="left|top"
120 font="SansSerifSmall" height="16" initial_value="true" label="Use Grid" 120 font="SansSerifSmall" height="16" initial_value="true" label="Use Grid"
121 left_delta="0" mouse_opaque="true" name="checkbox snap to grid" width="134" /> 121 left_delta="0" mouse_opaque="true" name="checkbox snap to grid" width="134" />
122 <button bottom_delta="-19" follows="left|top" font="SansSerifSmall" 122 <button bottom_delta="-30" follows="left|top" font="SansSerifSmall"
123 halign="center" valign="center" 123 halign="center" valign="center"
124 height="20" label="Options..." label_selected="Options..." left_delta="20" 124 height="20" label="Build Options" left_delta="20"
125 mouse_opaque="true" name="Options..." scale_image="TRUE" width="80" /> 125 mouse_opaque="true" name="Options..." scale_image="TRUE" width="100" />
126 126
127 127
128<!-- Help text --> 128<!-- Help text -->
diff --git a/linden/indra/newview/skins/default/xui/en-us/menu_viewer.xml b/linden/indra/newview/skins/default/xui/en-us/menu_viewer.xml
index 9c02f07..242cc8f 100644
--- a/linden/indra/newview/skins/default/xui/en-us/menu_viewer.xml
+++ b/linden/indra/newview/skins/default/xui/en-us/menu_viewer.xml
@@ -346,6 +346,12 @@
346 <on_check control="ShowMiniMap" /> 346 <on_check control="ShowMiniMap" />
347 </menu_item_check> 347 </menu_item_check>
348 <menu_item_separator /> 348 <menu_item_separator />
349 <menu_item_check label="AO" name="AO"
350 shortcut="control|shift|O">
351 <on_click function="View.ToggleAO" userdata="" />
352 <on_check function="View.CheckAO" />
353 </menu_item_check>
354 <menu_item_separator />
349 <menu_item_check name="Statistics Bar" label="Statistics Bar" 355 <menu_item_check name="Statistics Bar" label="Statistics Bar"
350 shortcut="control|shift|1"> 356 shortcut="control|shift|1">
351 <on_click function="ShowFloater" userdata="stat bar" /> 357 <on_click function="ShowFloater" userdata="stat bar" />
diff --git a/linden/indra/newview/skins/default/xui/en-us/notifications.xml b/linden/indra/newview/skins/default/xui/en-us/notifications.xml
index b0deeef..df277ad 100644
--- a/linden/indra/newview/skins/default/xui/en-us/notifications.xml
+++ b/linden/indra/newview/skins/default/xui/en-us/notifications.xml
@@ -6677,6 +6677,20 @@ Go to the Official Imprudence Forums to discuss the Imprudence Project.
6677 yestext="OK"/> 6677 yestext="OK"/>
6678 </notification> 6678 </notification>
6679 6679
6680 <notification
6681 icon="notify.tga"
6682 name="FirstAO"
6683 type="notify">
6684 For instructions, make a new template in the AO. Use the toolbar to toggle the AO on/off.
6685 </notification>
6686
6687 <notification
6688 icon="notifytip.tga"
6689 name="NoShadows"
6690 type="notifytip">
6691 Shadows cannot be enabled due to your graphics settings being set too low. Make sure your graphics settings are set to Ultra with Basic and Atmospheric Shaders enabled.
6692 </notification>
6693
6680 6694
6681 <!--End Imprudence notifications--> 6695 <!--End Imprudence notifications-->
6682 6696
diff --git a/linden/indra/newview/skins/default/xui/en-us/panel_avatar.xml b/linden/indra/newview/skins/default/xui/en-us/panel_avatar.xml
index ed5282d..dbaf48e 100644
--- a/linden/indra/newview/skins/default/xui/en-us/panel_avatar.xml
+++ b/linden/indra/newview/skins/default/xui/en-us/panel_avatar.xml
@@ -3,7 +3,7 @@
3 <tab_container bottom="-511" height="511" left="0" mouse_opaque="false" name="tab" 3 <tab_container bottom="-511" height="511" left="0" mouse_opaque="false" name="tab"
4 tab_min_width="50" tab_position="top" width="419"> 4 tab_min_width="50" tab_position="top" width="419">
5 <panel border="true" bottom="-507" follows="left|top|right|bottom" height="491" 5 <panel border="true" bottom="-507" follows="left|top|right|bottom" height="491"
6 label="2nd Life" left="1" mouse_opaque="true" name="2nd Life" width="418"> 6 label="Avatar" left="1" mouse_opaque="true" name="2nd Life" width="418">
7 <string name="CaptionTextAcctInfo"> 7 <string name="CaptionTextAcctInfo">
8[ACCTTYPE] 8[ACCTTYPE]
9[PAYMENTINFO] 9[PAYMENTINFO]
@@ -335,7 +335,7 @@
335 </text> 335 </text>
336 </panel> 336 </panel>
337 <panel border="true" bottom="-482" follows="left|top|right|bottom" height="466" 337 <panel border="true" bottom="-482" follows="left|top|right|bottom" height="466"
338 label="1st Life" left="1" mouse_opaque="true" name="1st Life" width="418"> 338 label="Real Life" left="1" mouse_opaque="true" name="1st Life" width="418">
339 <texture_picker allow_no_texture="true" bottom="220" can_apply_immediately="false" 339 <texture_picker allow_no_texture="true" bottom="220" can_apply_immediately="false"
340 default_image_name="None" follows="left|top" height="235" label="" 340 default_image_name="None" follows="left|top" height="235" label=""
341 left="12" mouse_opaque="true" name="img" 341 left="12" mouse_opaque="true" name="img"
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
new file mode 100644
index 0000000..39a3111
--- /dev/null
+++ b/linden/indra/newview/skins/default/xui/en-us/panel_preferences_advanced.xml
@@ -0,0 +1,25 @@
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="Advanced" left="102" mouse_opaque="true"
4 name="advanced_panel" width="517">
5
6 <!-- Start organizing these when we get enough of 'em - MC -->
7
8 <check_box bottom="-20" enabled="true"
9 follows="left|top" font="SansSerifSmall" height="16"
10 initial_value="false" label="Disable Login/Logout Screens" left="12"
11 mouse_opaque="true" name="disable_log_screen_check" radio_style="false"
12 width="217" />
13 <check_box bottom_delta="-18" enabled="true" follows="left|top"
14 font="SansSerifSmall" height="16" initial_value="false"
15 label="Disable Teleport Screens" left="12" mouse_opaque="true"
16 name="disable_tp_screen_check" radio_style="false" width="217" />
17 <check_box bottom_delta="-25" enabled="true" follows="left|top"
18 font="SansSerifSmall" height="16" initial_value="false"
19 label="Show Client Names in Name Tag" left="12" mouse_opaque="true"
20 name="client_name_tag_check" radio_style="false" width="217" />
21 <check_box bottom_delta="-25" enabled="true" follows="left|top"
22 font="SansSerifSmall" height="16" initial_value="false"
23 label="Enable Shadows (WARNING: unstable and requires Ultra graphics)" left="12" mouse_opaque="true"
24 name="shadows_check" radio_style="false" width="217" />
25</panel>
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 9b18e11..582e230 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
@@ -62,8 +62,11 @@
62 <text_editor type="string" length="1" bottom_delta="-60" embedded_items="false" enabled="true" follows="left|top" 62 <text_editor type="string" length="1" bottom_delta="-60" embedded_items="false" enabled="true" follows="left|top"
63 font="SansSerifSmall" height="70" left="148" max_length="255" 63 font="SansSerifSmall" height="70" left="148" max_length="255"
64 mouse_opaque="true" name="busy_response" width="330" word_wrap="true" /> 64 mouse_opaque="true" name="busy_response" width="330" word_wrap="true" />
65 <button bottom_delta="-25" follows="top|right" height="22" label="IM Response Options"
66 left="164" name="busy_adv_btn" tool_tip="Auto response options"
67 width="180" />
65 <text type="string" length="1" bg_visible="false" border_drop_shadow_visible="false" border_visible="false" 68 <text type="string" length="1" bg_visible="false" border_drop_shadow_visible="false" border_visible="false"
66 bottom_delta="-33" drop_shadow_visible="true" enabled="true" follows="left|top" 69 bottom_delta="-23" drop_shadow_visible="true" enabled="true" follows="left|top"
67 font="SansSerifSmall" h_pad="0" halign="left" height="10" left="12" 70 font="SansSerifSmall" h_pad="0" halign="left" height="10" left="12"
68 mouse_opaque="false" name="text_box4" v_pad="0" width="128"> 71 mouse_opaque="false" name="text_box4" v_pad="0" width="128">
69 Logging Options: 72 Logging Options:
@@ -100,7 +103,7 @@
100 name="log_date_timestamp" radio_style="false" width="237" /> 103 name="log_date_timestamp" radio_style="false" width="237" />
101 <button bottom_delta="-22" follows="right|bottom" font="SansSerif" halign="center" 104 <button bottom_delta="-22" follows="right|bottom" font="SansSerif" halign="center"
102 height="20" label="Change Path" label_selected="Change Path" left="170" 105 height="20" label="Change Path" label_selected="Change Path" left="170"
103 mouse_opaque="true" name="log_path_button" width="90" /> 106 mouse_opaque="true" name="log_path_button" width="96" />
104 <line_editor border_drop_shadow_visible="false" border_visible="false" bottom_delta="1" 107 <line_editor border_drop_shadow_visible="false" border_visible="false" bottom_delta="1"
105 drop_shadow_visible="true" enabled="false" follows="top|left|right" 108 drop_shadow_visible="true" enabled="false" follows="top|left|right"
106 font="SansSerifSmall" halign="right" height="19" left="248" 109 font="SansSerifSmall" halign="right" height="19" left="248"
diff --git a/linden/indra/newview/skins/default/xui/es/panel_avatar.xml b/linden/indra/newview/skins/default/xui/es/panel_avatar.xml
index 3c255ac..021aebf 100644
--- a/linden/indra/newview/skins/default/xui/es/panel_avatar.xml
+++ b/linden/indra/newview/skins/default/xui/es/panel_avatar.xml
@@ -1,210 +1,210 @@
1<?xml version="1.0" encoding="utf-8" standalone="yes"?> 1<?xml version="1.0" encoding="utf-8" standalone="yes"?>
2<panel name="Panel Avatar" width="470"> 2<panel name="Panel Avatar" width="470">
3 <tab_container name="tab" width="459"> 3 <tab_container name="tab" width="459">
4 <panel label="2ª Vida" name="2nd Life"> 4 <panel label="2ª Vida" name="2nd Life">
5 <string name="CaptionTextAcctInfo"> 5 <string name="CaptionTextAcctInfo">
6 [ACCTTYPE] 6 [ACCTTYPE]
7[PAYMENTINFO] 7[PAYMENTINFO]
8[AGEVERIFICATION] 8[AGEVERIFICATION]
9 </string> 9 </string>
10 <string name="AcctTypeResident"> 10 <string name="AcctTypeResident">
11 Residente 11 Residente
12 </string> 12 </string>
13 <string name="AcctTypeTrial"> 13 <string name="AcctTypeTrial">
14 Prueba 14 Prueba
15 </string> 15 </string>
16 <string name="AcctTypeCharterMember"> 16 <string name="AcctTypeCharterMember">
17 Miembro fundador 17 Miembro fundador
18 </string> 18 </string>
19 <string name="AcctTypeEmployee"> 19 <string name="AcctTypeEmployee">
20 Empleado de Linden Lab 20 Empleado de Linden Lab
21 </string> 21 </string>
22 <string name="PaymentInfoUsed"> 22 <string name="PaymentInfoUsed">
23 Ha usado una forma de pago 23 Ha usado una forma de pago
24 </string> 24 </string>
25 <string name="PaymentInfoOnFile"> 25 <string name="PaymentInfoOnFile">
26 Hay infor. de la forma de pago 26 Hay infor. de la forma de pago
27 </string> 27 </string>
28 <string name="NoPaymentInfoOnFile"> 28 <string name="NoPaymentInfoOnFile">
29 Sin infor. de la forma de pago 29 Sin infor. de la forma de pago
30 </string> 30 </string>
31 <string name="AgeVerified"> 31 <string name="AgeVerified">
32 Edad verificada 32 Edad verificada
33 </string> 33 </string>
34 <string name="NotAgeVerified"> 34 <string name="NotAgeVerified">
35 Edad no verificada 35 Edad no verificada
36 </string> 36 </string>
37 <text name="Name:"> 37 <text name="Name:">
38 Nombre: 38 Nombre:
39 </text> 39 </text>
40 <text name="online_yes" width="151"> 40 <text name="online_yes" width="151">
41 Conectado en este momento 41 Conectado en este momento
42 </text> 42 </text>
43 <text name="label"> 43 <text name="label">
44 Nacido: 44 Nacido:
45 </text> 45 </text>
46 <line_editor name="born" width="161" /> 46 <line_editor name="born" width="161" />
47 <text name="label2"> 47 <text name="label2">
48 Cuenta: 48 Cuenta:
49 </text> 49 </text>
50 <view_border name="acct_border" width="161" /> 50 <view_border name="acct_border" width="161" />
51 <text name="acct" width="161" /> 51 <text name="acct" width="161" />
52 <text name="partner_label" tool_tip="Compañero/a de Second Life. Para más información, ver www.secondlife.com/partner"> 52 <text name="partner_label" tool_tip="Compañero/a de Second Life. Para más información, ver www.secondlife.com/partner">
53 Compañero/a: 53 Compañero/a:
54 </text> 54 </text>
55 <button label="i" label_selected="i" name="partner_info" tool_tip="Pulse para abrir el perfil del compañero/a" left_delta="84"/> 55 <button label="i" label_selected="i" name="partner_info" tool_tip="Pulse para abrir el perfil del compañero/a" left_delta="84"/>
56 <button label="?" label_selected="?" name="partner_help"/> 56 <button label="?" label_selected="?" name="partner_help"/>
57 <line_editor name="partner_edit" tool_tip="Compañero/a de Second Life. Para más información, ver www.secondlife.com/partner" width="161"> 57 <line_editor name="partner_edit" tool_tip="Compañero/a de Second Life. Para más información, ver www.secondlife.com/partner" width="161">
58 [FIRST] [LAST] 58 [FIRST] [LAST]
59 </line_editor> 59 </line_editor>
60 <text name="Photo:"> 60 <text name="Photo:">
61 Foto: 61 Foto:
62 </text> 62 </text>
63 <texture_picker label="" name="img" tool_tip="Pulse para elegir una imagen"/> 63 <texture_picker label="" name="img" tool_tip="Pulse para elegir una imagen"/>
64 <text name="Groups:"> 64 <text name="Groups:">
65 Grupos: 65 Grupos:
66 </text> 66 </text>
67 <scroll_list name="groups" width="361" /> 67 <scroll_list name="groups" width="361" />
68 <text name="About:"> 68 <text name="About:">
69 Sobre mí: 69 Sobre mí:
70 </text> 70 </text>
71 <text name="(500 chars)"> 71 <text name="(500 chars)">
72 500 caracts. 72 500 caracts.
73 </text> 73 </text>
74 <text_editor name="about" width="361"/> 74 <text_editor name="about" width="361"/>
75 <text name="Give item:"> 75 <text name="Give item:">
76 Dar un ítem: 76 Dar un ítem:
77 </text> 77 </text>
78 <view_border name="drop_target_rect" width="449" /> 78 <view_border name="drop_target_rect" width="449" />
79 <view_border name="drop_target_rect_vis" width="361" /> 79 <view_border name="drop_target_rect_vis" width="361" />
80 <text name="Give inventory" tool_tip="Arrastre hasta aquí ítems del inventario para dárselos a esta persona." width="361"> 80 <text name="Give inventory" tool_tip="Arrastre hasta aquí ítems del inventario para dárselos a esta persona." width="361">
81 Arrastre hasta aquí un ítem del inventario. 81 Arrastre hasta aquí un ítem del inventario.
82 </text> 82 </text>
83 <check_box label="Mostrar en la búsqueda" name="allow_publish" tool_tip="Publicar más información sobre el perfil, como la descripción e imagen en la búsqueda."/> 83 <check_box label="Mostrar en la búsqueda" name="allow_publish" tool_tip="Publicar más información sobre el perfil, como la descripción e imagen en la búsqueda."/>
84 <button label="?" label_selected="?" name="?"/> 84 <button label="?" label_selected="?" name="?"/>
85 <button label="Localizar en el mapa" label_selected="Localizar en el mapa" name="Find on Map" width="130" /> 85 <button label="Localizar en el mapa" label_selected="Localizar en el mapa" name="Find on Map" width="130" />
86 <button label="Ofrecer teleporte..." label_selected="Ofrecer teleporte..." name="Offer Teleport..." left_delta="137" width="145" /> 86 <button label="Ofrecer teleporte..." label_selected="Ofrecer teleporte..." name="Offer Teleport..." left_delta="137" width="145" />
87 <button label="Añadir como amigo..." label_selected="Añadir como amigo..." name="Add Friend..." left_delta="152"/> 87 <button label="Añadir como amigo..." label_selected="Añadir como amigo..." name="Add Friend..." left_delta="152"/>
88 <button label="Pagar..." label_selected="Pagar..." name="Pay..." width="130" /> 88 <button label="Pagar..." label_selected="Pagar..." name="Pay..." width="130" />
89 <button label="Mensaje Instantáneo..." label_selected="Mensaje Instantáneo..." name="Instant Message..." tool_tip="Mensaje Instantáneo (MI)" left_delta="137" width="145"/> 89 <button label="Mensaje Instantáneo..." label_selected="Mensaje Instantáneo..." name="Instant Message..." tool_tip="Mensaje Instantáneo (MI)" left_delta="137" width="145"/>
90 <button label="Ignorar" label_selected="Ignorar" name="Mute" left_delta="152"/> 90 <button label="Ignorar" label_selected="Ignorar" name="Mute" left_delta="152"/>
91 </panel> 91 </panel>
92 <panel label="Web" name="WebProfile" width="458"> 92 <panel label="Web" name="WebProfile" width="458">
93 <line_editor name="url_edit" width="440" /> 93 <line_editor name="url_edit" width="440" />
94 <flyout_button label="Cargar" label_selected="Cargar" name="load" tool_tip="Cargar este perfil en el navegador incorporado."> 94 <flyout_button label="Cargar" label_selected="Cargar" name="load" tool_tip="Cargar este perfil en el navegador incorporado.">
95 <flyout_button_item name="open_item"> 95 <flyout_button_item name="open_item">
96 En un navegador externo 96 En un navegador externo
97 </flyout_button_item> 97 </flyout_button_item>
98 <flyout_button_item name="home_item"> 98 <flyout_button_item name="home_item">
99 Inicio 99 Inicio
100 </flyout_button_item> 100 </flyout_button_item>
101 </flyout_button> 101 </flyout_button>
102 <button label="?" label_selected="?" name="web_profile_help"/> 102 <button label="?" label_selected="?" name="web_profile_help"/>
103 <check_box label="Cargar automáticamente las páginas web de los perfiles." name="auto_load" tool_tip="Cargar automáticamente TODAS las páginas web de los perfiles, sin preguntar antes."/> 103 <check_box label="Cargar automáticamente las páginas web de los perfiles." name="auto_load" tool_tip="Cargar automáticamente TODAS las páginas web de los perfiles, sin preguntar antes."/>
104 <text name="status_text"/> 104 <text name="status_text"/>
105 <web_browser name="profile_html" width="440" /> 105 <web_browser name="profile_html" width="440" />
106 </panel> 106 </panel>
107 <panel label="Intereses" name="Interests" width="458"> 107 <panel label="Intereses" name="Interests" width="458">
108 <text name="I Want To:"> 108 <text name="I Want To:">
109 Quiero: 109 Quiero:
110 </text> 110 </text>
111 <check_box label="Construir" name="chk0"/> 111 <check_box label="Construir" name="chk0"/>
112 <check_box label="Explorar" name="chk1"/> 112 <check_box label="Explorar" name="chk1"/>
113 <check_box label="Conocer gente" name="chk2"/> 113 <check_box label="Conocer gente" name="chk2"/>
114 <check_box label="Ser contratado" name="chk6"/> 114 <check_box label="Ser contratado" name="chk6"/>
115 <check_box label="Estar en un grupo" name="chk3"/> 115 <check_box label="Estar en un grupo" name="chk3"/>
116 <check_box label="Comprar" name="chk4"/> 116 <check_box label="Comprar" name="chk4"/>
117 <check_box label="Vender" name="chk5"/> 117 <check_box label="Vender" name="chk5"/>
118 <check_box label="Contratar" name="chk7"/> 118 <check_box label="Contratar" name="chk7"/>
119 <line_editor name="want_to_edit" width="360" /> 119 <line_editor name="want_to_edit" width="360" />
120 <text name="Skills:"> 120 <text name="Skills:">
121 Habilidades: 121 Habilidades:
122 </text> 122 </text>
123 <check_box label="Texturas" name="schk0"/> 123 <check_box label="Texturas" name="schk0"/>
124 <check_box label="Arquitectura" name="schk1"/> 124 <check_box label="Arquitectura" name="schk1"/>
125 <check_box label="Programar eventos" name="schk2"/> 125 <check_box label="Programar eventos" name="schk2"/>
126 <check_box label="Hacer de modelo" name="schk3"/> 126 <check_box label="Hacer de modelo" name="schk3"/>
127 <check_box label="Programar" name="schk4"/> 127 <check_box label="Programar" name="schk4"/>
128 <check_box label="Personalizar personajes" name="schk5"/> 128 <check_box label="Personalizar personajes" name="schk5"/>
129 <line_editor name="skills_edit" width="360" /> 129 <line_editor name="skills_edit" width="360" />
130 <text name="Languages:"> 130 <text name="Languages:">
131 Idiomas: 131 Idiomas:
132 </text> 132 </text>
133 <line_editor name="languages_edit" width="360" /> 133 <line_editor name="languages_edit" width="360" />
134 </panel> 134 </panel>
135 <panel label="Destacados" name="Picks" width="458"> 135 <panel label="Destacados" name="Picks" width="458">
136 <tab_container name="picks tab" width="452" /> 136 <tab_container name="picks tab" width="452" />
137 <text name="Tell everyone about your favorite places in Second Life."> 137 <text name="Tell everyone about your favorite places in Second Life.">
138 Explique a todos sus lugares favoritos de Second Life. 138 Explique a todos sus lugares favoritos de Second Life.
139 </text> 139 </text>
140 <button label="Nuevo..." label_selected="Nuevo..." name="New..."/> 140 <button label="Nuevo..." label_selected="Nuevo..." name="New..."/>
141 <button label="Borrar..." label_selected="Borrar..." name="Delete..."/> 141 <button label="Borrar..." label_selected="Borrar..." name="Delete..."/>
142 <text name="loading_text"> 142 <text name="loading_text">
143 Cargando... 143 Cargando...
144 </text> 144 </text>
145 </panel> 145 </panel>
146 <panel label="Clasificados" name="Classified" width="458"> 146 <panel label="Clasificados" name="Classified" width="458">
147 <tab_container name="classified tab" width="452" /> 147 <tab_container name="classified tab" width="452" />
148 <text name="Place an ad in Second Life&apos;s classified listings."> 148 <text name="Place an ad in Second Life&apos;s classified listings.">
149 Ponga un anuncio en las listas de clasificados de Second Life. 149 Ponga un anuncio en las listas de clasificados de Second Life.
150 </text> 150 </text>
151 <button label="Nuevo..." label_selected="Nuevo..." name="New..."/> 151 <button label="Nuevo..." label_selected="Nuevo..." name="New..."/>
152 <button label="Borrar..." label_selected="Borrar..." name="Delete..."/> 152 <button label="Borrar..." label_selected="Borrar..." name="Delete..."/>
153 <text name="loading_text"> 153 <text name="loading_text">
154 Cargando... 154 Cargando...
155 </text> 155 </text>
156 </panel> 156 </panel>
157 <panel label="1ª Vida" name="1st Life" width="458"> 157 <panel label="1ª Vida" name="1st Life" width="458">
158 <text_editor name="about" width="365" left="75" /> 158 <text_editor name="about" width="365" left="75" />
159 <text name="Photo:"> 159 <text name="Photo:">
160 Foto: 160 Foto:
161 </text> 161 </text>
162 <texture_picker label="" name="img" tool_tip="Pulse para elegir una imagen" left="75" /> 162 <texture_picker label="" name="img" tool_tip="Pulse para elegir una imagen" left="75" />
163 <text name="Info:" width="66"> 163 <text name="Info:" width="66">
164 Información: 164 Información:
165 </text> 165 </text>
166 <text name="(250 chars)" halign="left" left="7"> 166 <text name="(250 chars)" halign="left" left="7">
167 (250 167 (250
168caracts.) 168caracts.)
169 </text> 169 </text>
170 </panel> 170 </panel>
171 <panel label="Mis notas" name="My Notes" width="458"> 171 <panel label="Mis notas" name="My Notes" width="458">
172 <text_editor name="notes edit" width="430"/> 172 <text_editor name="notes edit" width="430"/>
173 <string name="Loading"> 173 <string name="Loading">
174 Cargando... 174 Cargando...
175 </string> 175 </string>
176 <text name="label" width="452"> 176 <text name="label" width="452">
177 Use este espacio para escribir sus notas acerca de esta persona. Lleve un 177 Use este espacio para escribir sus notas acerca de esta persona. Lleve un
178seguimiento del progreso de sus empresas, comparta proyectos, etc. Sólo usted 178seguimiento del progreso de sus empresas, comparta proyectos, etc. Sólo usted
179puede ver estas notas. Ni esta persona ni ninguna otra pueden verlas. 179puede ver estas notas. Ni esta persona ni ninguna otra pueden verlas.
180 </text> 180 </text>
181 </panel> 181 </panel>
182 </tab_container> 182 </tab_container>
183 <button label="OK" label_selected="OK" name="OK"/> 183 <button label="OK" label_selected="OK" name="OK"/>
184 <button label="Cancelar" label_selected="Cancelar" name="Cancel"/> 184 <button label="Cancelar" label_selected="Cancelar" name="Cancel"/>
185 <button label="Expulsar" label_selected="Expulsar" name="Kick" width="82"/> 185 <button label="Expulsar" label_selected="Expulsar" name="Kick" width="82"/>
186 <button label="Congelar" label_selected="Congelar" name="Freeze" tool_tip="Detener el movimiento y el chat de este residente." width="82"/> 186 <button label="Congelar" label_selected="Congelar" name="Freeze" tool_tip="Detener el movimiento y el chat de este residente." width="82"/>
187 <button label="Descongelar" label_selected="Descongelar" name="Unfreeze" tool_tip="Descongelar al residente" width="82"/> 187 <button label="Descongelar" label_selected="Descongelar" name="Unfreeze" tool_tip="Descongelar al residente" width="82"/>
188 <button label="CSR" label_selected="CSR" name="csr_btn" tool_tip="Abrir la herramienta de servicio al cliente para este residente" width="82"/> 188 <button label="CSR" label_selected="CSR" name="csr_btn" tool_tip="Abrir la herramienta de servicio al cliente para este residente" width="82"/>
189 <string name="ShowOnMapNonFriend"> 189 <string name="ShowOnMapNonFriend">
190 Ver la posición en el mapa. Desactivado porque no están entre sus amigos. 190 Ver la posición en el mapa. Desactivado porque no están entre sus amigos.
191 </string> 191 </string>
192 <string name="ShowOnMapFriendOffline"> 192 <string name="ShowOnMapFriendOffline">
193 Ver la posición en el mapa. Desactivado porque no están conectados. 193 Ver la posición en el mapa. Desactivado porque no están conectados.
194 </string> 194 </string>
195 <string name="ShowOnMapFriendOnline"> 195 <string name="ShowOnMapFriendOnline">
196 Ver la posición en el mapa. 196 Ver la posición en el mapa.
197 </string> 197 </string>
198 <string name="TeleportGod"> 198 <string name="TeleportGod">
199 Obligarle a teleportarse hasta su posición. 199 Obligarle a teleportarse hasta su posición.
200 </string> 200 </string>
201 <string name="TeleportPrelude"> 201 <string name="TeleportPrelude">
202 Ofrecer un teleporte hasta su posición. Desactivado hasta que usted no salga de esta Isla. 202 Ofrecer un teleporte hasta su posición. Desactivado hasta que usted no salga de esta Isla.
203 </string> 203 </string>
204 <string name="TeleportNormal"> 204 <string name="TeleportNormal">
205 Ofrecer un teleporte hasta su posición. 205 Ofrecer un teleporte hasta su posición.
206 </string> 206 </string>
207 <string name="Loading"> 207 <string name="Loading">
208 Cargando... 208 Cargando...
209 </string> 209 </string>
210</panel> 210</panel>
diff --git a/linden/indra/newview/skins/default/xui/it/panel_avatar.xml b/linden/indra/newview/skins/default/xui/it/panel_avatar.xml
index bd1e6b6..a9a7532 100644
--- a/linden/indra/newview/skins/default/xui/it/panel_avatar.xml
+++ b/linden/indra/newview/skins/default/xui/it/panel_avatar.xml
@@ -1,7 +1,7 @@
1<?xml version="1.0" encoding="utf-8" standalone="yes"?> 1<?xml version="1.0" encoding="utf-8" standalone="yes"?>
2<panel name="Panel Avatar" width="470"> 2<panel name="Panel Avatar" width="470">
3 <tab_container name="tab" width="459"> 3 <tab_container name="tab" width="459">
4 <panel label="2nd Life" name="2nd Life" width="458"> 4 <panel label="Avatar" name="2nd Life" width="458">
5 <string name="CaptionTextAcctInfo"> 5 <string name="CaptionTextAcctInfo">
6 [ACCTTYPE] 6 [ACCTTYPE]
7[PAYMENTINFO] 7[PAYMENTINFO]
diff --git a/linden/indra/newview/skins/default/xui/pt/panel_avatar.xml b/linden/indra/newview/skins/default/xui/pt/panel_avatar.xml
index dfc4007..bc45a82 100644
--- a/linden/indra/newview/skins/default/xui/pt/panel_avatar.xml
+++ b/linden/indra/newview/skins/default/xui/pt/panel_avatar.xml
@@ -1,212 +1,212 @@
1<?xml version="1.0" encoding="utf-8" standalone="yes"?> 1<?xml version="1.0" encoding="utf-8" standalone="yes"?>
2<panel name="Panel Avatar" width="495"> 2<panel name="Panel Avatar" width="495">
3 <tab_container name="tab" width="484"> 3 <tab_container name="tab" width="484">
4 <panel label="2nd Life" name="2nd Life" width="483"> 4 <panel label="Avatar" name="2nd Life" width="483">
5 <string name="CaptionTextAcctInfo"> 5 <string name="CaptionTextAcctInfo">
6 [ACCTTYPE] 6 [ACCTTYPE]
7[PAYMENTINFO] 7[PAYMENTINFO]
8[AGEVERIFICATION] 8[AGEVERIFICATION]
9 </string> 9 </string>
10 <string name="AcctTypeResident"> 10 <string name="AcctTypeResident">
11 Residente 11 Residente
12 </string> 12 </string>
13 <string name="AcctTypeTrial"> 13 <string name="AcctTypeTrial">
14 Teste 14 Teste
15 </string> 15 </string>
16 <string name="AcctTypeCharterMember"> 16 <string name="AcctTypeCharterMember">
17 Estatuto do membro 17 Estatuto do membro
18 </string> 18 </string>
19 <string name="AcctTypeEmployee"> 19 <string name="AcctTypeEmployee">
20 Contratado da Linden Lab. 20 Contratado da Linden Lab.
21 </string> 21 </string>
22 <string name="PaymentInfoUsed"> 22 <string name="PaymentInfoUsed">
23 Infor. de pagamento utilizadas 23 Infor. de pagamento utilizadas
24 </string> 24 </string>
25 <string name="PaymentInfoOnFile"> 25 <string name="PaymentInfoOnFile">
26 Infor. de pagamento no arquivo. 26 Infor. de pagamento no arquivo.
27 </string> 27 </string>
28 <string name="NoPaymentInfoOnFile"> 28 <string name="NoPaymentInfoOnFile">
29 Sem infor. de pagamento no arquivo 29 Sem infor. de pagamento no arquivo
30 </string> 30 </string>
31 <string name="AgeVerified"> 31 <string name="AgeVerified">
32 Idade Verificada 32 Idade Verificada
33 </string> 33 </string>
34 <string name="NotAgeVerified"> 34 <string name="NotAgeVerified">
35 Idade não Verificada 35 Idade não Verificada
36 </string> 36 </string>
37 <text name="Name:"> 37 <text name="Name:">
38 Nome: 38 Nome:
39 </text> 39 </text>
40 <text name="online_yes" width="176"> 40 <text name="online_yes" width="176">
41 Atualmente Online 41 Atualmente Online
42 </text> 42 </text>
43 <text name="label"> 43 <text name="label">
44 Nascido: 44 Nascido:
45 </text> 45 </text>
46 <line_editor name="born" width="186" /> 46 <line_editor name="born" width="186" />
47 <text name="label2"> 47 <text name="label2">
48 Conta: 48 Conta:
49 </text> 49 </text>
50 <view_border name="acct_border" width="186" /> 50 <view_border name="acct_border" width="186" />
51 <text name="acct" width="186" /> 51 <text name="acct" width="186" />
52 <text name="partner_label" tool_tip="Parceiro Second Life. Para mais informações, veja www.secondlife.com/partner"> 52 <text name="partner_label" tool_tip="Parceiro Second Life. Para mais informações, veja www.secondlife.com/partner">
53 Parceiro: 53 Parceiro:
54 </text> 54 </text>
55 <button label="i" label_selected="i" name="partner_info" tool_tip="Clique para abrir o perfil do(a) parceiro(a)" left_delta="64"/> 55 <button label="i" label_selected="i" name="partner_info" tool_tip="Clique para abrir o perfil do(a) parceiro(a)" left_delta="64"/>
56 <button label="?" label_selected="?" name="partner_help"/> 56 <button label="?" label_selected="?" name="partner_help"/>
57 <line_editor name="partner_edit" tool_tip="Parceiro Second Life. Para mais informações, veja www.secondlife.com/partner" width="186"> 57 <line_editor name="partner_edit" tool_tip="Parceiro Second Life. Para mais informações, veja www.secondlife.com/partner" width="186">
58 [FIRST] [LAST] 58 [FIRST] [LAST]
59 </line_editor> 59 </line_editor>
60 <text name="Photo:"> 60 <text name="Photo:">
61 Foto: 61 Foto:
62 </text> 62 </text>
63 <texture_picker label="" name="img" tool_tip="Clique para selecionar uma foto"/> 63 <texture_picker label="" name="img" tool_tip="Clique para selecionar uma foto"/>
64 <text name="Groups:"> 64 <text name="Groups:">
65 Grupos: 65 Grupos:
66 </text> 66 </text>
67 <scroll_list name="groups" width="386" /> 67 <scroll_list name="groups" width="386" />
68 <text name="About:"> 68 <text name="About:">
69 Sobre: 69 Sobre:
70 </text> 70 </text>
71 <text name="(500 chars)"> 71 <text name="(500 chars)">
72 (500 chars) 72 (500 chars)
73 </text> 73 </text>
74 <text_editor name="about" width="386"/> 74 <text_editor name="about" width="386"/>
75 <text name="Give item:"> 75 <text name="Give item:">
76 Doar item: 76 Doar item:
77 </text> 77 </text>
78 <view_border name="drop_target_rect" width="474" /> 78 <view_border name="drop_target_rect" width="474" />
79 <view_border name="drop_target_rect_vis" width="386" /> 79 <view_border name="drop_target_rect_vis" width="386" />
80 <text name="Give inventory" tool_tip="Arraste e solte o item aqui para dá-lo à pessoa desejada." width="386"> 80 <text name="Give inventory" tool_tip="Arraste e solte o item aqui para dá-lo à pessoa desejada." width="386">
81 Arraste e solte o item de inventário aqui. 81 Arraste e solte o item de inventário aqui.
82 </text> 82 </text>
83 <check_box label="Mostrar na busca" name="allow_publish" tool_tip="Publicar informações de perfil adicionais, como descrição e imagem, na Busca."/> 83 <check_box label="Mostrar na busca" name="allow_publish" tool_tip="Publicar informações de perfil adicionais, como descrição e imagem, na Busca."/>
84 <button label="?" label_selected="?" name="?"/> 84 <button label="?" label_selected="?" name="?"/>
85 <button label="Encontrar no Mapa" label_selected="Encontrar no Mapa" name="Find on Map" width="130" /> 85 <button label="Encontrar no Mapa" label_selected="Encontrar no Mapa" name="Find on Map" width="130" />
86 <button label="Oferecer teletransporte..." label_selected="Oferecer teletransporte..." name="Offer Teleport..." left_delta="137" width="156" /> 86 <button label="Oferecer teletransporte..." label_selected="Oferecer teletransporte..." name="Offer Teleport..." left_delta="137" width="156" />
87 <button label="Adicionar amigo..." label_selected="Adicionar amigo..." name="Add Friend..." left_delta="164"/> 87 <button label="Adicionar amigo..." label_selected="Adicionar amigo..." name="Add Friend..." left_delta="164"/>
88 <button label="Pagar..." label_selected="Pagar..." name="Pay..." width="130" /> 88 <button label="Pagar..." label_selected="Pagar..." name="Pay..." width="130" />
89 <button label="Mensagem Instantânea..." label_selected="Mensagem Instantânea..." name="Instant Message..." tool_tip="Mensagem Instantânea (MI)" left_delta="137" width="156" /> 89 <button label="Mensagem Instantânea..." label_selected="Mensagem Instantânea..." name="Instant Message..." tool_tip="Mensagem Instantânea (MI)" left_delta="137" width="156" />
90 <button label="Mudo" label_selected="Mudo" name="Mute" left_delta="164"/> 90 <button label="Mudo" label_selected="Mudo" name="Mute" left_delta="164"/>
91 </panel> 91 </panel>
92 <panel label="Web" name="WebProfile" width="483"> 92 <panel label="Web" name="WebProfile" width="483">
93 <line_editor name="url_edit" width="465" /> 93 <line_editor name="url_edit" width="465" />
94 <flyout_button label="Carregar" label_selected="Carregar" name="load" tool_tip="Carrega o seu perfil no seu navegador embutido."> 94 <flyout_button label="Carregar" label_selected="Carregar" name="load" tool_tip="Carrega o seu perfil no seu navegador embutido.">
95 <flyout_button_item name="open_item"> 95 <flyout_button_item name="open_item">
96 No navegador externo 96 No navegador externo
97 </flyout_button_item> 97 </flyout_button_item>
98 <flyout_button_item name="home_item"> 98 <flyout_button_item name="home_item">
99 URL de Casa 99 URL de Casa
100 </flyout_button_item> 100 </flyout_button_item>
101 </flyout_button> 101 </flyout_button>
102 <button label="?" label_selected="?" name="web_profile_help"/> 102 <button label="?" label_selected="?" name="web_profile_help"/>
103 <check_box label="Carregar automaticamente perfis da web" name="auto_load" tool_tip="Carrega automaticamente todos os perfis da Web sem perguntar antes."/> 103 <check_box label="Carregar automaticamente perfis da web" name="auto_load" tool_tip="Carrega automaticamente todos os perfis da Web sem perguntar antes."/>
104 <web_browser name="profile_html" width="465" /> 104 <web_browser name="profile_html" width="465" />
105 </panel> 105 </panel>
106 <panel label="Interesses" name="Interests" width="483"> 106 <panel label="Interesses" name="Interests" width="483">
107 <text name="I Want To:"> 107 <text name="I Want To:">
108 Eu quero: 108 Eu quero:
109 </text> 109 </text>
110 <check_box label="Construir" name="chk0"/> 110 <check_box label="Construir" name="chk0"/>
111 <check_box label="Explorar" name="chk1"/> 111 <check_box label="Explorar" name="chk1"/>
112 <check_box label="Encontros" name="chk2"/> 112 <check_box label="Encontros" name="chk2"/>
113 <check_box label="Ser contratado" name="chk6"/> 113 <check_box label="Ser contratado" name="chk6"/>
114 <check_box label="Grupo" name="chk3"/> 114 <check_box label="Grupo" name="chk3"/>
115 <check_box label="Comprar" name="chk4"/> 115 <check_box label="Comprar" name="chk4"/>
116 <check_box label="Vender" name="chk5"/> 116 <check_box label="Vender" name="chk5"/>
117 <check_box label="Contratar" name="chk7"/> 117 <check_box label="Contratar" name="chk7"/>
118 <line_editor name="want_to_edit" width="385" /> 118 <line_editor name="want_to_edit" width="385" />
119 <text name="Skills:"> 119 <text name="Skills:">
120 Habilidades: 120 Habilidades:
121 </text> 121 </text>
122 <check_box label="Texturas" name="schk0"/> 122 <check_box label="Texturas" name="schk0"/>
123 <check_box label="Arquitetura" name="schk1"/> 123 <check_box label="Arquitetura" name="schk1"/>
124 <check_box label="Planejador de Eventos" name="schk2"/> 124 <check_box label="Planejador de Eventos" name="schk2"/>
125 <check_box label="Modelador" name="schk3"/> 125 <check_box label="Modelador" name="schk3"/>
126 <check_box label="Programador" name="schk4"/> 126 <check_box label="Programador" name="schk4"/>
127 <check_box label="Personagens customizados" name="schk5"/> 127 <check_box label="Personagens customizados" name="schk5"/>
128 <line_editor name="skills_edit" width="385" /> 128 <line_editor name="skills_edit" width="385" />
129 <text name="Languages:"> 129 <text name="Languages:">
130 Línguas: 130 Línguas:
131 </text> 131 </text>
132 <line_editor name="languages_edit" width="385" /> 132 <line_editor name="languages_edit" width="385" />
133 </panel> 133 </panel>
134 <panel label="Seletor" name="Picks" width="483"> 134 <panel label="Seletor" name="Picks" width="483">
135 <tab_container name="picks tab" width="477" /> 135 <tab_container name="picks tab" width="477" />
136 <text name="Tell everyone about your favorite places in Second Life."> 136 <text name="Tell everyone about your favorite places in Second Life.">
137 Diga a todos os seus lugares favoritos em Second Life. 137 Diga a todos os seus lugares favoritos em Second Life.
138 </text> 138 </text>
139 <button label="Novo..." label_selected="Novo..." name="New..."/> 139 <button label="Novo..." label_selected="Novo..." name="New..."/>
140 <button label="Apagar..." label_selected="Apagar..." name="Delete..."/> 140 <button label="Apagar..." label_selected="Apagar..." name="Delete..."/>
141 <text name="loading_text"> 141 <text name="loading_text">
142 Carregando... 142 Carregando...
143 </text> 143 </text>
144 </panel> 144 </panel>
145 <panel label="Classificados" name="Classified" width="483"> 145 <panel label="Classificados" name="Classified" width="483">
146 <tab_container name="classified tab" width="477" /> 146 <tab_container name="classified tab" width="477" />
147 <text name="Place an ad in Second Life&apos;s classified listings."> 147 <text name="Place an ad in Second Life&apos;s classified listings.">
148 Coloque um anúncio nas listas de classificados do Second Life. 148 Coloque um anúncio nas listas de classificados do Second Life.
149 </text> 149 </text>
150 <button label="Novo..." label_selected="Novo..." name="New..."/> 150 <button label="Novo..." label_selected="Novo..." name="New..."/>
151 <button label="Apagar..." label_selected="Apagar..." name="Delete..."/> 151 <button label="Apagar..." label_selected="Apagar..." name="Delete..."/>
152 <text name="loading_text"> 152 <text name="loading_text">
153 Carregando... 153 Carregando...
154 </text> 154 </text>
155 </panel> 155 </panel>
156 <panel label="1st Life" name="1st Life" width="483"> 156 <panel label="Real Life" name="1st Life" width="483">
157 <text_editor name="about" width="395" /> 157 <text_editor name="about" width="395" />
158 <text name="Photo:"> 158 <text name="Photo:">
159 Foto: 159 Foto:
160 </text> 160 </text>
161 <texture_picker label="" name="img" tool_tip="Clique para selecionar uma foto"/> 161 <texture_picker label="" name="img" tool_tip="Clique para selecionar uma foto"/>
162 <text name="Info:"> 162 <text name="Info:">
163 Sobre: 163 Sobre:
164 </text> 164 </text>
165 <text name="(250 chars)" halign="left" left="7"> 165 <text name="(250 chars)" halign="left" left="7">
166 (250 166 (250
167caracteres) 167caracteres)
168 </text> 168 </text>
169 </panel> 169 </panel>
170 <panel label="Minhas anotações" name="My Notes" width="483"> 170 <panel label="Minhas anotações" name="My Notes" width="483">
171 <text_editor name="notes edit" width="455"/> 171 <text_editor name="notes edit" width="455"/>
172 <string name="Loading"> 172 <string name="Loading">
173 Carregando... 173 Carregando...
174 </string> 174 </string>
175 <text name="label" width="462"> 175 <text name="label" width="462">
176 Use este espaço para falar sobre essa pessoa.Coloque aqui o que desejar, projetos, 176 Use este espaço para falar sobre essa pessoa.Coloque aqui o que desejar, projetos,
177lembretes e etc. Somente você poderá ver essa anotação. Nem esta nem 177lembretes e etc. Somente você poderá ver essa anotação. Nem esta nem
178outras pessoas podem ver as anotações. 178outras pessoas podem ver as anotações.
179 </text> 179 </text>
180 </panel> 180 </panel>
181 </tab_container> 181 </tab_container>
182 <button label="OK" label_selected="OK" name="OK"/> 182 <button label="OK" label_selected="OK" name="OK"/>
183 <button label="Cancelar" label_selected="Cancelar" name="Cancel"/> 183 <button label="Cancelar" label_selected="Cancelar" name="Cancel"/>
184 <button label="Retirar" label_selected="Retirar" name="Kick"/> 184 <button label="Retirar" label_selected="Retirar" name="Kick"/>
185 <button label="Paralizar" label_selected="Paralizar" name="Freeze" tool_tip="Paraliza o movimento e conversa deste residente."/> 185 <button label="Paralizar" label_selected="Paralizar" name="Freeze" tool_tip="Paraliza o movimento e conversa deste residente."/>
186 <button label="Unfreeze" label_selected="Unfreeze" name="Unfreeze" tool_tip="Libera o residente"/> 186 <button label="Unfreeze" label_selected="Unfreeze" name="Unfreeze" tool_tip="Libera o residente"/>
187 <button label="CSR" label_selected="CSR" name="csr_btn" tool_tip="Abre a ferramenta de cliente para este residente"/> 187 <button label="CSR" label_selected="CSR" name="csr_btn" tool_tip="Abre a ferramenta de cliente para este residente"/>
188 <string name="ShowOnMapNonFriend"> 188 <string name="ShowOnMapNonFriend">
189 Mostra a localização no mapa. 189 Mostra a localização no mapa.
190Desativado porque ainda não é amigo desse residente. 190Desativado porque ainda não é amigo desse residente.
191 </string> 191 </string>
192 <string name="ShowOnMapFriendOffline"> 192 <string name="ShowOnMapFriendOffline">
193 Mostrar a localidade no mapa. 193 Mostrar a localidade no mapa.
194 Desabilitar porque eles não estão conectados. 194 Desabilitar porque eles não estão conectados.
195 </string> 195 </string>
196 <string name="ShowOnMapFriendOnline"> 196 <string name="ShowOnMapFriendOnline">
197 Mostra localização no mapa. 197 Mostra localização no mapa.
198 </string> 198 </string>
199 <string name="TeleportGod"> 199 <string name="TeleportGod">
200 Força teletransporte até a sua localidade. 200 Força teletransporte até a sua localidade.
201 </string> 201 </string>
202 <string name="TeleportPrelude"> 202 <string name="TeleportPrelude">
203 Oferece teletransporte para a sua localidade. 203 Oferece teletransporte para a sua localidade.
204Desativado até que você saia da Ilha da Orientação. 204Desativado até que você saia da Ilha da Orientação.
205 </string> 205 </string>
206 <string name="TeleportNormal"> 206 <string name="TeleportNormal">
207 Oferece teletransporte para a sua localidade. 207 Oferece teletransporte para a sua localidade.
208 </string> 208 </string>
209 <string name="Loading"> 209 <string name="Loading">
210 Carregando... 210 Carregando...
211 </string> 211 </string>
212</panel> 212</panel>