aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/linden/indra/newview
diff options
context:
space:
mode:
Diffstat (limited to 'linden/indra/newview')
-rw-r--r--linden/indra/newview/files.lst1
-rw-r--r--linden/indra/newview/llfloaterbulkpermission.cpp595
-rw-r--r--linden/indra/newview/llfloaterbulkpermission.h143
-rw-r--r--linden/indra/newview/llpanelobject.cpp26
-rw-r--r--linden/indra/newview/llviewermenu.cpp2280
-rw-r--r--linden/indra/newview/skins/default/xui/en-us/floater_bulk_perms.xml127
-rw-r--r--linden/indra/newview/skins/default/xui/en-us/floater_tools.xml18
-rw-r--r--linden/indra/newview/skins/default/xui/en-us/menu_viewer.xml2885
8 files changed, 5214 insertions, 861 deletions
diff --git a/linden/indra/newview/files.lst b/linden/indra/newview/files.lst
index 3233ade..d9d4d5e 100644
--- a/linden/indra/newview/files.lst
+++ b/linden/indra/newview/files.lst
@@ -63,6 +63,7 @@ newview/llfloateravatarinfo.cpp
63newview/llfloateravatarpicker.cpp 63newview/llfloateravatarpicker.cpp
64newview/llfloateravatartextures.cpp 64newview/llfloateravatartextures.cpp
65newview/llfloaterbuildoptions.cpp 65newview/llfloaterbuildoptions.cpp
66newview/llfloaterbulkpermission.cpp
66newview/llfloaterbump.cpp 67newview/llfloaterbump.cpp
67newview/llfloaterbuy.cpp 68newview/llfloaterbuy.cpp
68newview/llfloaterbuycontents.cpp 69newview/llfloaterbuycontents.cpp
diff --git a/linden/indra/newview/llfloaterbulkpermission.cpp b/linden/indra/newview/llfloaterbulkpermission.cpp
new file mode 100644
index 0000000..29d94bc
--- /dev/null
+++ b/linden/indra/newview/llfloaterbulkpermission.cpp
@@ -0,0 +1,595 @@
1/**
2 * @file llfloaterbulkpermissions.cpp
3 * @brief A floater which allows task inventory item's properties to be changed on mass.
4 *
5 * $LicenseInfo:firstyear=2008&license=viewergpl$
6 *
7 * Copyright (c) 2008, Linden Research, Inc.
8 *
9 * Second Life Viewer Source Code
10 * The source code in this file ("Source Code") is provided by Linden Lab
11 * to you under the terms of the GNU General Public License, version 2.0
12 * ("GPL"), unless you have obtained a separate licensing agreement
13 * ("Other License"), formally executed by you and Linden Lab. Terms of
14 * the GPL can be found in doc/GPL-license.txt in this distribution, or
15 * online at http://secondlifegrid.net/programs/open_source/licensing/gplv2
16 *
17 * There are special exceptions to the terms and conditions of the GPL as
18 * it is applied to this Source Code. View the full text of the exception
19 * in the file doc/FLOSS-exception.txt in this software distribution, or
20 * online at http://secondlifegrid.net/programs/open_source/licensing/flossexception
21 *
22 * By copying, modifying or distributing this software, you acknowledge
23 * that you have read and understood your obligations described above,
24 * and agree to abide by those obligations.
25 *
26 * ALL LINDEN LAB SOURCE CODE IS PROVIDED "AS IS." LINDEN LAB MAKES NO
27 * WARRANTIES, EXPRESS, IMPLIED OR OTHERWISE, REGARDING ITS ACCURACY,
28 * COMPLETENESS OR PERFORMANCE.
29 * $/LicenseInfo$
30 */
31
32/* Allow multiple task inventory properties to be set in one go, by Michelle2 Zenovka */
33
34/* TODO
35
36 * Add in the option to select objects or task inventory
37s
38
39It would be nice to set the permissions on groups of prims as well as task inventory
40
41*/
42
43
44#include "llviewerprecompiledheaders.h"
45#include "llfloaterbulkpermission.h"
46#include "llagent.h"
47#include "llchat.h"
48#include "llviewerwindow.h"
49#include "llviewerobject.h"
50#include "llviewerobjectlist.h"
51#include "llviewerregion.h"
52#include "lscript_rt_interface.h"
53#include "llviewercontrol.h"
54#include "llviewerobject.h"
55#include "llviewerregion.h"
56#include "llresmgr.h"
57#include "llbutton.h"
58#include "lldir.h"
59#include "llfloaterchat.h"
60#include "llviewerstats.h"
61#include "lluictrlfactory.h"
62#include "llselectmgr.h"
63#include "llinventory.h"
64
65
66#include <algorithm>
67#include <functional>
68#include "llcachename.h"
69#include "lldbstrings.h"
70#include "llinventory.h"
71
72#include "llagent.h"
73#include "llbutton.h"
74#include "llcheckboxctrl.h"
75#include "llfloateravatarinfo.h"
76#include "llfloatergroupinfo.h"
77#include "llinventorymodel.h"
78#include "lllineeditor.h"
79#include "llradiogroup.h"
80#include "llresmgr.h"
81#include "roles_constants.h"
82#include "llselectmgr.h"
83#include "lltextbox.h"
84#include "lluiconstants.h"
85#include "llviewerinventory.h"
86#include "llviewerobjectlist.h"
87#include "llviewerregion.h"
88#include "llviewercontrol.h"
89
90#include "lluictrlfactory.h"
91
92
93const char* BULKPERM_QUEUE_TITLE = "Update Progress";
94const char* BULKPERM_START_STRING = "update";
95
96namespace
97{
98 struct BulkQueueObjects : public LLSelectedObjectFunctor
99 {
100 BOOL scripted;
101 BOOL modifiable;
102 LLFloaterBulkPermission* mQueue;
103 BulkQueueObjects(LLFloaterBulkPermission* q) : mQueue(q), scripted(FALSE), modifiable(FALSE) {}
104 virtual bool apply(LLViewerObject* obj)
105 {
106 scripted = obj->flagScripted();
107 modifiable = obj->permModify();
108
109 mQueue->addObject(obj->getID());
110 return false;
111
112 }
113 };
114}
115
116///----------------------------------------------------------------------------
117/// Class LLFloaterBulkPermission
118///----------------------------------------------------------------------------
119
120// static
121LLMap<LLUUID, LLFloaterBulkPermission*> LLFloaterBulkPermission::sInstances;
122
123
124// Default constructor
125LLFloaterBulkPermission::LLFloaterBulkPermission(const std::string& name,
126 const LLRect& rect,
127 const char* title,
128 const char* start_string) :
129 LLFloater(name, rect, title,
130 RESIZE_YES, DEFAULT_MIN_WIDTH, DEFAULT_MIN_HEIGHT,
131 DRAG_ON_TOP, MINIMIZE_YES, CLOSE_YES)
132{
133
134 req_perm_mask=0; // This should match the default state the checkboxes are set to
135 recurse=false;
136
137 LLUICtrlFactory::getInstance()->buildFloater(this,"floater_bulk_perms.xml");
138
139 childSetAction("Apply...",onApplyBtn,this);
140 childSetEnabled("Apply...",TRUE);
141
142 childSetCommitCallback("Modify",&onCommitPermissions, this);
143 childSetCommitCallback("Trans",&onCommitPermissions, this);
144 childSetCommitCallback("Copy",&onCommitPermissions, this);
145
146 //childSetCommitCallback("Recurse",&onRecurse, this);
147
148 childSetCommitCallback("Parent",&onParent, this);
149
150 childSetCommitCallback("objects",&InvSelection, this);
151 childSetCommitCallback("scripts",&InvSelection, this);
152 childSetCommitCallback("textures",&InvSelection, this);
153 childSetCommitCallback("sounds",&InvSelection, this);
154 childSetCommitCallback("animations",&InvSelection, this);
155 childSetCommitCallback("notecards",&InvSelection, this);
156 childSetCommitCallback("landmarks",&InvSelection, this);
157 childSetCommitCallback("bodyparts",&InvSelection, this);
158 childSetCommitCallback("clothing",&InvSelection, this);
159 childSetCommitCallback("gestures",&InvSelection, this);
160
161 //Set variable state to XUI default state consistancy
162 processObject=getChild<LLCheckBoxCtrl>("objects")->get();
163 processScript=getChild<LLCheckBoxCtrl>("scripts")->get();
164 processTexture=getChild<LLCheckBoxCtrl>("textures")->get();
165 processSound=getChild<LLCheckBoxCtrl>("sounds")->get();
166 processAnimation=getChild<LLCheckBoxCtrl>("animations")->get();
167 processNotecard=getChild<LLCheckBoxCtrl>("notecards")->get();
168 processGesture=getChild<LLCheckBoxCtrl>("gestures")->get();
169 processClothing=getChild<LLCheckBoxCtrl>("clothing")->get();
170 processBodypart=getChild<LLCheckBoxCtrl>("bodyparts")->get();
171 processLandmark=getChild<LLCheckBoxCtrl>("landmarks")->get();
172 parent=getChild<LLCheckBoxCtrl>("Parent")->get();
173
174
175 setTitle(title);
176
177 if (!getHost())
178 {
179 LLRect curRect = getRect();
180 translate(rect.mLeft - curRect.mLeft, rect.mTop - curRect.mTop);
181 }
182
183 mStartString = start_string;
184 mDone = FALSE;
185 sInstances.addData(mID, this);
186
187}
188
189void LLFloaterBulkPermission::doApply()
190{
191 // Its alive now do the nasty work that the ScriptQueue and friends try to do in the menu code
192 // but first grab the user options
193
194 LLScrollListCtrl* list = getChild<LLScrollListCtrl>("queue output");
195 list->deleteAllItems();
196
197 //Apply to selected objects if requested first
198
199 if(parent)
200 {
201 llinfos<< "Setting permission on parent items" << llendl;
202 LLSelectMgr::getInstance()->selectionSetObjectPermissions(PERM_NEXT_OWNER,true, req_perm_mask);
203 LLSelectMgr::getInstance()->selectionSetObjectPermissions(PERM_NEXT_OWNER,false, ~req_perm_mask); //How annoying need to set and unset
204 }
205
206
207 LLFloaterBulkPermission* q;
208 q=(LLFloaterBulkPermission*)this;
209
210 BulkQueueObjects func(q);
211 const bool firstonly = false;
212 bool fail = LLSelectMgr::getInstance()->getSelection()->applyToObjects(&func, firstonly);
213 if(fail)
214 {
215 if ( !func.modifiable )
216 {
217 gViewerWindow->alertXml("NO MODIFY");
218 }
219 else
220 {
221 llwarns << "Bad logic. Are there actualy any items in that prim?" << llendl;
222 }
223 }
224 else
225 {
226 if (!q->start())
227 {
228 llwarns << "Unexpected failure attepmting to set permissions." << llendl;
229 }
230 }
231}
232
233// Destroys the object
234LLFloaterBulkPermission::~LLFloaterBulkPermission()
235{
236 sInstances.removeData(mID);
237}
238
239// find an instance by ID. Return NULL if it does not exist.
240// static
241LLFloaterBulkPermission* LLFloaterBulkPermission::findInstance(const LLUUID& id)
242{
243 if(sInstances.checkData(id))
244 {
245 return sInstances.getData(id);
246 }
247 return NULL;
248}
249
250
251// This is the callback method for the viewer object currently being
252// worked on.
253// NOT static, virtual!
254void LLFloaterBulkPermission::inventoryChanged(LLViewerObject* viewer_object,
255 InventoryObjectList* inv,
256 S32,
257 void* q_id)
258{
259 llinfos << "LLFloaterBulkPermission::inventoryChanged() for object "
260 << viewer_object->getID() << llendl;
261
262 //Remove this listener from the object since its
263 //listener callback is now being executed.
264
265 //We remove the listener here because the function
266 //removeVOInventoryListener removes the listener from a ViewerObject
267 //which it internally stores.
268
269 //If we call this further down in the function, calls to handleInventory
270 //and nextObject may update the interally stored viewer object causing
271 //the removal of the incorrect listener from an incorrect object.
272
273 //Fixes SL-6119:Recompile scripts fails to complete
274 removeVOInventoryListener();
275
276 if (viewer_object && inv && (viewer_object->getID() == mCurrentObjectID) )
277 {
278 handleInventory(viewer_object, inv);
279 }
280 else
281 {
282 // something went wrong...
283 // note that we're not working on this one, and move onto the
284 // next object in the list.
285 llwarns << "No inventory for " << mCurrentObjectID
286 << llendl;
287 nextObject();
288 }
289}
290
291void LLFloaterBulkPermission::onApplyBtn(void* user_data)
292{
293 LLFloaterBulkPermission* self = (LLFloaterBulkPermission*)user_data;
294 self->doApply();
295}
296
297
298// static
299void LLFloaterBulkPermission::InvSelection(LLUICtrl* ctrl, void* data)
300{
301 LLFloaterBulkPermission* self = (LLFloaterBulkPermission*)data;
302
303 self->processObject=self->getChild<LLCheckBoxCtrl>("objects")->get();
304 self->processScript=self->getChild<LLCheckBoxCtrl>("scripts")->get();
305 self->processTexture=self->getChild<LLCheckBoxCtrl>("textures")->get();
306 self->processSound=self->getChild<LLCheckBoxCtrl>("sounds")->get();
307 self->processAnimation=self->getChild<LLCheckBoxCtrl>("animations")->get();
308 self->processNotecard=self->getChild<LLCheckBoxCtrl>("notecards")->get();
309 self->processGesture=self->getChild<LLCheckBoxCtrl>("gestures")->get();
310 self->processClothing=self->getChild<LLCheckBoxCtrl>("clothing")->get();
311 self->processBodypart=self->getChild<LLCheckBoxCtrl>("bodyparts")->get();
312 self->processLandmark=self->getChild<LLCheckBoxCtrl>("landmarks")->get();
313
314
315}
316
317// static
318void LLFloaterBulkPermission::onParent(LLUICtrl* ctrl, void* data)
319{
320 LLFloaterBulkPermission* self = (LLFloaterBulkPermission*)data;
321 self->parent=self->getChild<LLCheckBoxCtrl>("Parent")->get();
322}
323
324// static
325void LLFloaterBulkPermission::onRecurse(LLUICtrl* ctrl, void* data)
326{
327 LLFloaterBulkPermission* self = (LLFloaterBulkPermission*)data;
328 self->recurse=self->getChild<LLCheckBoxCtrl>("Recurse")->get();
329}
330
331// static
332void LLFloaterBulkPermission::onCommitPermissions(LLUICtrl* ctrl, void* data)
333{
334 LLFloaterBulkPermission* self = (LLFloaterBulkPermission*)data;
335 LLCheckBoxCtrl* CheckModify = self->getChild<LLCheckBoxCtrl>("Modify");
336 LLCheckBoxCtrl* CheckCopy = self->getChild<LLCheckBoxCtrl>("Copy");
337 LLCheckBoxCtrl* CheckTrans = self->getChild<LLCheckBoxCtrl>("Trans");
338
339 self->req_perm_mask=0;
340
341 if(CheckModify->get())
342 {
343 self->req_perm_mask|=PERM_MODIFY;
344 }
345 else
346 {
347 self->req_perm_mask&=~PERM_MODIFY;
348 }
349
350 if(CheckCopy->get())
351 {
352 self->req_perm_mask|=PERM_COPY;
353 }
354 else
355 {
356 self->req_perm_mask&=~PERM_COPY;
357 }
358
359 if(CheckTrans->get())
360 {
361 self->req_perm_mask|=PERM_TRANSFER;
362 }
363 else
364 {
365 self->req_perm_mask&=~PERM_TRANSFER;
366 }
367
368
369}
370
371void LLFloaterBulkPermission::addObject(const LLUUID& id)
372{
373 mObjectIDs.put(id);
374}
375
376BOOL LLFloaterBulkPermission::start()
377{
378 llinfos << "LLFloaterBulkPermission::start()" << llendl;
379 char buffer[MAX_STRING]; /*Flawfinder: ignore*/
380 snprintf(buffer, sizeof(buffer), "Starting %s of %d items.", mStartString, mObjectIDs.count()); /* Flawfinder: ignore */
381
382 LLScrollListCtrl* list = getChild<LLScrollListCtrl>("queue output");
383 list->addCommentText(buffer);
384
385 return nextObject();
386}
387
388BOOL LLFloaterBulkPermission::isDone() const
389{
390 return (mCurrentObjectID.isNull() || (mObjectIDs.count() == 0));
391}
392
393// go to the next object. If no objects left, it falls out silently
394// and waits to be killed by the window being closed.
395BOOL LLFloaterBulkPermission::nextObject()
396{
397 S32 count;
398 BOOL successful_start = FALSE;
399 do
400 {
401 count = mObjectIDs.count();
402 llinfos << "LLFloaterBulkPermission::nextObject() - " << count
403 << " objects left to process." << llendl;
404 mCurrentObjectID.setNull();
405 if(count > 0)
406 {
407 successful_start = popNext();
408 }
409 llinfos << "LLFloaterBulkPermission::nextObject() "
410 << (successful_start ? "successful" : "unsuccessful")
411 << llendl;
412 } while((mObjectIDs.count() > 0) && !successful_start);
413
414 if(isDone() && !mDone)
415 {
416
417 LLScrollListCtrl* list = getChild<LLScrollListCtrl>("queue output");
418 mDone = TRUE;
419 char buffer[MAX_STRING]; /*Flawfinder: ignore*/
420 snprintf(buffer, sizeof(buffer), "Done."); /* Flawfinder: ignore */
421 list->addCommentText(buffer);
422
423 }
424 return successful_start;
425}
426
427// returns true if the queue has started, otherwise false. This
428// method pops the top object off of the queue.
429BOOL LLFloaterBulkPermission::popNext()
430{
431 // get the first element off of the container, and attempt to get
432 // the inventory.
433 BOOL rv = FALSE;
434 S32 count = mObjectIDs.count();
435 if(mCurrentObjectID.isNull() && (count > 0))
436 {
437 mCurrentObjectID = mObjectIDs.get(0);
438 llinfos << "LLFloaterBulkPermission::popNext() - mCurrentID: "
439 << mCurrentObjectID << llendl;
440 mObjectIDs.remove(0);
441 LLViewerObject* obj = gObjectList.findObject(mCurrentObjectID);
442 if(obj)
443 {
444 llinfos << "LLFloaterBulkPermission::popNext() requesting inv for "
445 << mCurrentObjectID << llendl;
446 LLUUID* id = new LLUUID(mID);
447
448 registerVOInventoryListener(obj,id);
449 requestVOInventory();
450 rv = TRUE;
451 }
452 else
453 {
454 llinfos<<"LLFloaterBulkPermission::popNext() returned a NULL LLViewerObject" <<llendl;
455 //Arrrg what do we do here?
456 }
457 }
458
459 return rv;
460}
461
462
463// static
464LLFloaterBulkPermission* LLFloaterBulkPermission::create()
465{
466 S32 left, top;
467 gFloaterView->getNewFloaterPosition(&left, &top);
468 LLRect rect = gSavedSettings.getRect("CompileOutputRect");
469 rect.translate(left - rect.mLeft, top - rect.mTop);
470 LLFloaterBulkPermission* new_queue = new LLFloaterBulkPermission("queue",rect,"Setting Bulk permissions","Results");
471 new_queue->open(); /*Flawfinder: ignore*/
472 return new_queue;
473}
474
475
476void LLFloaterBulkPermission::handleInventory(LLViewerObject* viewer_obj, InventoryObjectList* inv)
477{
478 // find all of the lsl, leaving off duplicates. We'll remove
479 // all matching asset uuids on compilation success.
480
481 llinfos<<"handleInventory"<<llendl;
482
483 char buffer[MAX_STRING]; /*Flawfinder: ignore*/
484 LLScrollListCtrl* list = getChild<LLScrollListCtrl>("queue output");
485
486 InventoryObjectList::const_iterator it = inv->begin();
487 InventoryObjectList::const_iterator end = inv->end();
488 for ( ; it != end; ++it)
489 {
490 llinfos<<"Doing iterator of inventory"<<llendl;
491
492 if( ( (*it)->getType() == LLAssetType::AT_LSL_TEXT && processScript) ||
493 ( (*it)->getType() == LLAssetType::AT_TEXTURE && processTexture) ||
494 ( (*it)->getType() == LLAssetType::AT_SOUND && processSound) ||
495 ( (*it)->getType() == LLAssetType::AT_LANDMARK && processLandmark) ||
496 ( (*it)->getType() == LLAssetType::AT_CLOTHING && processClothing) ||
497 ( (*it)->getType() == LLAssetType::AT_OBJECT && processObject) ||
498 ( (*it)->getType() == LLAssetType::AT_NOTECARD && processNotecard) ||
499 ( (*it)->getType() == LLAssetType::AT_BODYPART && processBodypart) ||
500 ( (*it)->getType() == LLAssetType::AT_ANIMATION && processAnimation) ||
501 ( (*it)->getType() == LLAssetType::AT_GESTURE && processGesture))
502 {
503
504 LLViewerObject* object = gObjectList.findObject(viewer_obj->getID());
505
506 if (object)
507 {
508 LLInventoryItem* item = (LLInventoryItem*)((LLInventoryObject*)(*it));
509 LLViewerInventoryItem* new_item = (LLViewerInventoryItem*)item;
510 LLPermissions perm(new_item->getPermissions());
511
512 // chomp the inventory name so it fits in the scroll window nicely
513 // and the user can see the [OK]
514 std::string invname;
515 invname=item->getName().substr(0,item->getName().size() < 30 ? item->getName().size() : 30 );
516
517 // My attempt at checking valid permissions, CHECK ME
518 // note its not actually bad to try to set permissions that are not allowed as the
519 // server will protect against this, but it will piss the user off if its wrong
520 if(
521 (perm.getCreator()==gAgentID) ||
522 (perm.getMaskOwner() & PERM_TRANSFER) && (perm.getMaskOwner() & PERM_MODIFY) ||
523 (gAgent.getGroupID()==perm.getGroup() && (perm.getMaskGroup() & PERM_TRANSFER) && (perm.getMaskGroup() & PERM_MODIFY))
524 ){
525 llinfos<<"Setting perms"<<llendl;
526 perm.setMaskNext(req_perm_mask);
527 new_item->setPermissions(perm);
528 updateInventory(object,new_item,TASK_INVENTORY_ITEM_KEY,FALSE);
529 snprintf(buffer, sizeof(buffer), "Setting perms on '%s' [OK]", invname.c_str()); /* Flawfinder: ignore */
530 }
531 else
532 {
533 llinfos<<"NOT setting perms"<<llendl;
534 snprintf(buffer, sizeof(buffer), "Setting perms on '%s' [FAILED]", invname.c_str()); /* Flawfinder: ignore */
535
536 }
537
538 list->addCommentText(buffer);
539
540 if(recurse && ( (*it)->getType() == LLAssetType::AT_OBJECT && processObject))
541 {
542 //Add this object back to the queue to be processed as it has inventory
543 snprintf(buffer, sizeof(buffer), "Queueing object '%s' for open", invname.c_str());
544 llwarns << "Queueing object "<< invname.c_str() << " ID "<< (*it)->getUUID()<<llendl;
545 mObjectIDs.put((*it)->getUUID());
546 // This will not YET work. as this is not a viewer object the unpack will fail
547 }
548
549 }
550 }
551 }
552
553 nextObject();
554}
555
556
557// Avoid inventory callbacks etc by just fire and forgetting the message with the permissions update
558// we could do this via LLViewerObject::updateInventory but that uses inventory call backs and buggers
559// us up and we would have a dodgy item iterator
560
561void LLFloaterBulkPermission::updateInventory(
562 LLViewerObject* object,
563 LLViewerInventoryItem* item,
564 U8 key,
565 bool is_new)
566{
567 LLMemType mt(LLMemType::MTYPE_OBJECT);
568
569
570 // This slices the object into what we're concerned about on the
571 // viewer. The simulator will take the permissions and transfer
572 // ownership.
573 LLPointer<LLViewerInventoryItem> task_item =
574 new LLViewerInventoryItem(item->getUUID(), mID, item->getPermissions(),
575 item->getAssetUUID(), item->getType(),
576 item->getInventoryType(),
577 item->getName(), item->getDescription(),
578 item->getSaleInfo(),
579 item->getFlags(),
580 item->getCreationDate());
581 task_item->setTransactionID(item->getTransactionID());
582 LLMessageSystem* msg = gMessageSystem;
583 msg->newMessageFast(_PREHASH_UpdateTaskInventory);
584 msg->nextBlockFast(_PREHASH_AgentData);
585 msg->addUUIDFast(_PREHASH_AgentID, gAgent.getID());
586 msg->addUUIDFast(_PREHASH_SessionID, gAgent.getSessionID());
587 msg->nextBlockFast(_PREHASH_UpdateData);
588 msg->addU32Fast(_PREHASH_LocalID, object->mLocalID);
589 msg->addU8Fast(_PREHASH_Key, key);
590 msg->nextBlockFast(_PREHASH_InventoryData);
591 task_item->packMessage(msg);
592 msg->sendReliable(object->getRegion()->getHost());
593
594}
595
diff --git a/linden/indra/newview/llfloaterbulkpermission.h b/linden/indra/newview/llfloaterbulkpermission.h
new file mode 100644
index 0000000..3de871b
--- /dev/null
+++ b/linden/indra/newview/llfloaterbulkpermission.h
@@ -0,0 +1,143 @@
1/**
2 * @file llfloaterbulkpermissions.h
3 * @brief A floater which allows task inventory item's properties to be changed on mass.
4 *
5 * $LicenseInfo:firstyear=2008&license=viewergpl$
6 *
7 * Copyright (c) 2008, Linden Research, Inc.
8 *
9 * Second Life Viewer Source Code
10 * The source code in this file ("Source Code") is provided by Linden Lab
11 * to you under the terms of the GNU General Public License, version 2.0
12 * ("GPL"), unless you have obtained a separate licensing agreement
13 * ("Other License"), formally executed by you and Linden Lab. Terms of
14 * the GPL can be found in doc/GPL-license.txt in this distribution, or
15 * online at http://secondlifegrid.net/programs/open_source/licensing/gplv2
16 *
17 * There are special exceptions to the terms and conditions of the GPL as
18 * it is applied to this Source Code. View the full text of the exception
19 * in the file doc/FLOSS-exception.txt in this software distribution, or
20 * online at http://secondlifegrid.net/programs/open_source/licensing/flossexception
21 *
22 * By copying, modifying or distributing this software, you acknowledge
23 * that you have read and understood your obligations described above,
24 * and agree to abide by those obligations.
25 *
26 * ALL LINDEN LAB SOURCE CODE IS PROVIDED "AS IS." LINDEN LAB MAKES NO
27 * WARRANTIES, EXPRESS, IMPLIED OR OTHERWISE, REGARDING ITS ACCURACY,
28 * COMPLETENESS OR PERFORMANCE.
29 * $/LicenseInfo$
30 */
31
32/* Allow multiple task inventory properties to be set in one go, by Michelle2 Zenovka */
33
34#ifndef LL_LLBULKPERMISSION_H
35#define LL_LLBULKPERMISSION_H
36
37#include "lldarray.h"
38#include "llinventory.h"
39#include "llviewerobject.h"
40#include "llvoinventorylistener.h"
41#include "llmap.h"
42#include "lluuid.h"
43
44#include "llfloater.h"
45#include "llscrolllistctrl.h"
46
47#include "llviewerinventory.h"
48
49class LLFloaterBulkPermission : public LLFloater, public LLVOInventoryListener
50{
51public:
52 // addObject() accepts an object id.
53 void addObject(const LLUUID& id);
54
55 // start() returns TRUE if the queue has started, otherwise FALSE.
56 BOOL start();
57
58 // Use this method to create a reset queue. Once created, it
59 // will be responsible for it's own destruction.
60 static LLFloaterBulkPermission * create();
61
62protected:
63 LLFloaterBulkPermission(const std::string& name, const LLRect& rect,
64 const char* title, const char* start_string);
65 virtual ~LLFloaterBulkPermission();
66
67 // This is the callback method for the viewer object currently
68 // being worked on.
69 /*virtual*/ void inventoryChanged(LLViewerObject* obj,
70 InventoryObjectList* inv,
71 S32 serial_num,
72 void* queue);
73
74 // This is called by inventoryChanged
75 void handleInventory(LLViewerObject* viewer_obj,
76 InventoryObjectList* inv);
77
78
79 void updateInventory(LLViewerObject* object,
80 LLViewerInventoryItem* item,
81 U8 key,
82 bool is_new);
83
84
85 static void onCloseBtn(void* user_data);
86 static void onApplyBtn(void* user_data);
87 static void onCommitPermissions(LLUICtrl* ctrl, void* data);
88 static void InvSelection(LLUICtrl* ctrl, void* data);
89 static void onRecurse(LLUICtrl* ctrl, void* data);
90 static void onParent(LLUICtrl* ctrl, void* data);
91
92 // returns true if this is done
93 BOOL isDone() const;
94
95 //Read the settings and Apply the permissions
96 void doApply();
97
98 // go to the next object. If no objects left, it falls out
99 // silently and waits to be killed by the deleteIfDone() callback.
100 BOOL nextObject();
101 BOOL popNext();
102
103 // Get this instances ID.
104 const LLUUID& getID() const { return mID; }
105
106 // find an instance by ID. Return NULL if it does not exist.
107 static LLFloaterBulkPermission* findInstance(const LLUUID& id);
108
109 U32 req_perm_mask;
110
111 BOOL processObject;
112 BOOL processScript;
113 BOOL processTexture;
114 BOOL processSound;
115 BOOL processAnimation;
116 BOOL processCallingcard;
117 BOOL processNotecard;
118 BOOL processGesture;
119 BOOL processClothing;
120 BOOL processBodypart;
121 BOOL processLandmark;
122
123 BOOL recurse;
124 BOOL parent;
125
126protected:
127 // UI
128 LLScrollListCtrl* mMessages;
129 LLButton* mCloseBtn;
130
131 // Object Queue
132 LLDynamicArray<LLUUID> mObjectIDs;
133 LLUUID mCurrentObjectID;
134 BOOL mDone;
135
136 LLUUID mID;
137 static LLMap<LLUUID, LLFloaterBulkPermission*> sInstances;
138
139 const char* mStartString;
140
141};
142
143#endif
diff --git a/linden/indra/newview/llpanelobject.cpp b/linden/indra/newview/llpanelobject.cpp
index 7024691..9732dac 100644
--- a/linden/indra/newview/llpanelobject.cpp
+++ b/linden/indra/newview/llpanelobject.cpp
@@ -827,7 +827,7 @@ void LLPanelObject::getState( )
827 BOOL top_shear_x_visible = TRUE; 827 BOOL top_shear_x_visible = TRUE;
828 BOOL top_shear_y_visible = TRUE; 828 BOOL top_shear_y_visible = TRUE;
829 BOOL twist_visible = TRUE; 829 BOOL twist_visible = TRUE;
830 BOOL advanced_cut_visible = FALSE; 830 BOOL advanced_cut_visible = TRUE;
831 BOOL taper_visible = FALSE; 831 BOOL taper_visible = FALSE;
832 BOOL skew_visible = FALSE; 832 BOOL skew_visible = FALSE;
833 BOOL radius_offset_visible = FALSE; 833 BOOL radius_offset_visible = FALSE;
@@ -838,6 +838,7 @@ void LLPanelObject::getState( )
838 F32 twist_inc = OBJECT_TWIST_LINEAR_INC; 838 F32 twist_inc = OBJECT_TWIST_LINEAR_INC;
839 839
840 BOOL advanced_is_dimple = FALSE; 840 BOOL advanced_is_dimple = FALSE;
841 BOOL advanced_is_slice = FALSE;
841 BOOL size_is_hole = FALSE; 842 BOOL size_is_hole = FALSE;
842 843
843 // Tune based on overall volume type 844 // Tune based on overall volume type
@@ -851,6 +852,7 @@ void LLPanelObject::getState( )
851 //twist_visible = FALSE; 852 //twist_visible = FALSE;
852 advanced_cut_visible = TRUE; 853 advanced_cut_visible = TRUE;
853 advanced_is_dimple = TRUE; 854 advanced_is_dimple = TRUE;
855 advanced_is_slice = FALSE;
854 twist_min = OBJECT_TWIST_MIN; 856 twist_min = OBJECT_TWIST_MIN;
855 twist_max = OBJECT_TWIST_MAX; 857 twist_max = OBJECT_TWIST_MAX;
856 twist_inc = OBJECT_TWIST_INC; 858 twist_inc = OBJECT_TWIST_INC;
@@ -864,6 +866,7 @@ void LLPanelObject::getState( )
864 size_is_hole = TRUE; 866 size_is_hole = TRUE;
865 skew_visible = TRUE; 867 skew_visible = TRUE;
866 advanced_cut_visible = TRUE; 868 advanced_cut_visible = TRUE;
869 advanced_is_slice = FALSE;
867 taper_visible = TRUE; 870 taper_visible = TRUE;
868 radius_offset_visible = TRUE; 871 radius_offset_visible = TRUE;
869 revolutions_visible = TRUE; 872 revolutions_visible = TRUE;
@@ -891,8 +894,20 @@ void LLPanelObject::getState( )
891 break; 894 break;
892 895
893 case MI_BOX: 896 case MI_BOX:
897 advanced_cut_visible = TRUE;
898 advanced_is_slice = TRUE;
899 break;
900
894 case MI_CYLINDER: 901 case MI_CYLINDER:
902 advanced_cut_visible = TRUE;
903 advanced_is_slice = TRUE;
904 break;
905
895 case MI_PRISM: 906 case MI_PRISM:
907 advanced_cut_visible = TRUE;
908 advanced_is_slice = TRUE;
909 break;
910
896 default: 911 default:
897 break; 912 break;
898 } 913 }
@@ -984,6 +999,8 @@ void LLPanelObject::getState( )
984 999
985 childSetVisible("advanced_cut", FALSE); 1000 childSetVisible("advanced_cut", FALSE);
986 childSetVisible("advanced_dimple", FALSE); 1001 childSetVisible("advanced_dimple", FALSE);
1002 childSetVisible("advanced_slice", FALSE);
1003
987 if (advanced_cut_visible) 1004 if (advanced_cut_visible)
988 { 1005 {
989 if (advanced_is_dimple) 1006 if (advanced_is_dimple)
@@ -991,6 +1008,12 @@ void LLPanelObject::getState( )
991 childSetVisible("advanced_dimple", TRUE); 1008 childSetVisible("advanced_dimple", TRUE);
992 childSetEnabled("advanced_dimple", enabled); 1009 childSetEnabled("advanced_dimple", enabled);
993 } 1010 }
1011
1012 else if (advanced_is_slice)
1013 {
1014 childSetVisible("advanced_slice", TRUE);
1015 childSetEnabled("advanced_slice", enabled);
1016 }
994 else 1017 else
995 { 1018 {
996 childSetVisible("advanced_cut", TRUE); 1019 childSetVisible("advanced_cut", TRUE);
@@ -1823,6 +1846,7 @@ void LLPanelObject::clearCtrls()
1823 childSetEnabled("scale_taper", FALSE); 1846 childSetEnabled("scale_taper", FALSE);
1824 childSetEnabled( "advanced_cut", FALSE ); 1847 childSetEnabled( "advanced_cut", FALSE );
1825 childSetEnabled( "advanced_dimple", FALSE ); 1848 childSetEnabled( "advanced_dimple", FALSE );
1849 childSetVisible("advanced_slice", FALSE);
1826} 1850}
1827 1851
1828// 1852//
diff --git a/linden/indra/newview/llviewermenu.cpp b/linden/indra/newview/llviewermenu.cpp
index 3e99384..a97ec18 100644
--- a/linden/indra/newview/llviewermenu.cpp
+++ b/linden/indra/newview/llviewermenu.cpp
@@ -86,6 +86,7 @@
86#include "llfloateravatarinfo.h" 86#include "llfloateravatarinfo.h"
87#include "llfloateravatartextures.h" 87#include "llfloateravatartextures.h"
88#include "llfloaterbuildoptions.h" 88#include "llfloaterbuildoptions.h"
89#include "llfloaterbulkpermission.h"
89#include "llfloaterbump.h" 90#include "llfloaterbump.h"
90#include "llfloaterbuy.h" 91#include "llfloaterbuy.h"
91#include "llfloaterbuycontents.h" 92#include "llfloaterbuycontents.h"
@@ -750,10 +751,13 @@ void init_menus()
750 gLandmarkMenu = menu; 751 gLandmarkMenu = menu;
751 */ 752 */
752 753
754 // Advanced (Client) menu is XUI now! \o/
755 /*
753 menu = new LLMenuGL(CLIENT_MENU_NAME); 756 menu = new LLMenuGL(CLIENT_MENU_NAME);
754 init_client_menu(menu); 757 init_client_menu(menu);
755 gMenuBarView->appendMenu( menu ); 758 gMenuBarView->appendMenu( menu );
756 menu->updateParent(LLMenuGL::sMenuContainer); 759 menu->updateParent(LLMenuGL::sMenuContainer);
760 */
757 761
758 menu = new LLMenuGL(SERVER_MENU_NAME); 762 menu = new LLMenuGL(SERVER_MENU_NAME);
759 init_server_menu(menu); 763 init_server_menu(menu);
@@ -6239,6 +6243,18 @@ void queue_actions(LLFloaterScriptQueue* q, const std::string& noscriptmsg, cons
6239 } 6243 }
6240} 6244}
6241 6245
6246
6247class LLToolsSetBulkPerms : public view_listener_t
6248{
6249 bool handleEvent(LLPointer<LLEvent> event, const LLSD& userdata)
6250 {
6251 LLFloaterBulkPermission* queue = NULL;
6252 queue = LLFloaterBulkPermission::create();
6253 return true;
6254 }
6255};
6256
6257
6242class LLToolsSelectedScriptAction : public view_listener_t 6258class LLToolsSelectedScriptAction : public view_listener_t
6243{ 6259{
6244 bool handleEvent(LLPointer<LLEvent> event, const LLSD& userdata) 6260 bool handleEvent(LLPointer<LLEvent> event, const LLSD& userdata)
@@ -7720,6 +7736,2118 @@ class LLWorldDayCycle : public view_listener_t
7720 7736
7721 7737
7722 7738
7739
7740//-------------------------------------------------------------------
7741// Advanced menu
7742//-------------------------------------------------------------------
7743
7744
7745///////////////////
7746// SHOW CONSOLES //
7747///////////////////
7748
7749
7750class LLAdvancedToggleConsole : public view_listener_t
7751{
7752 bool handleEvent(LLPointer<LLEvent> event, const LLSD& userdata)
7753 {
7754 LLString console_type = userdata.asString();
7755 if ("frame" == console_type)
7756 {
7757 toggle_visibility( (void*)gDebugView->mFrameStatView );
7758 }
7759 else if ("texture" == console_type)
7760 {
7761 toggle_visibility( (void*)gTextureView );
7762 }
7763 else if ("debug" == console_type)
7764 {
7765 toggle_visibility( (void*)((LLView*)gDebugView->mDebugConsolep) );
7766 }
7767 else if ("fast timers" == console_type)
7768 {
7769 toggle_visibility( (void*)gDebugView->mFastTimerView );
7770 }
7771 else if ("memory" == console_type)
7772 {
7773 toggle_visibility( (void*)gDebugView->mMemoryView );
7774 }
7775 return true;
7776 }
7777};
7778
7779
7780class LLAdvancedCheckConsole : public view_listener_t
7781{
7782 bool handleEvent(LLPointer<LLEvent> event, const LLSD& userdata)
7783 {
7784 LLString console_type = userdata["data"].asString();
7785 bool new_value = false;
7786 if ("frame" == console_type)
7787 {
7788 new_value = get_visibility( (void*)gDebugView->mFrameStatView );
7789 }
7790 else if ("texture" == console_type)
7791 {
7792 new_value = get_visibility( (void*)gTextureView );
7793 }
7794 else if ("debug" == console_type)
7795 {
7796 new_value = get_visibility( (void*)((LLView*)gDebugView->mDebugConsolep) );
7797 }
7798 else if ("fast timers" == console_type)
7799 {
7800 new_value = get_visibility( (void*)gDebugView->mFastTimerView );
7801 }
7802 else if ("memory" == console_type)
7803 {
7804 new_value = get_visibility( (void*)gDebugView->mMemoryView );
7805 }
7806
7807 LLString control_name = userdata["control"].asString();
7808 gMenuHolder->findControl(control_name)->setValue(new_value);
7809 return true;
7810 }
7811};
7812
7813
7814
7815//////////////////////////
7816// DUMP INFO TO CONSOLE //
7817//////////////////////////
7818
7819
7820class LLAdvancedDumpInfoToConsole : public view_listener_t
7821{
7822 bool handleEvent(LLPointer<LLEvent> event, const LLSD& userdata)
7823 {
7824 LLString info_type = userdata.asString();
7825 if ("region" == info_type)
7826 {
7827 handle_region_dump_settings(NULL);
7828 }
7829 else if ("group" == info_type)
7830 {
7831 handle_dump_group_info(NULL);
7832 }
7833 else if ("capabilities" == info_type)
7834 {
7835 handle_dump_capabilities_info(NULL);
7836 }
7837 return true;
7838 }
7839};
7840
7841
7842
7843///////////////////////////////
7844// RELOAD SETTINGS OVERRIDES //
7845///////////////////////////////
7846
7847
7848class LLAdvancedReloadSettingsOverrides : public view_listener_t
7849{
7850 bool handleEvent(LLPointer<LLEvent> event, const LLSD& userdata)
7851 {
7852 reload_personal_settings_overrides(NULL);
7853 return true;
7854 }
7855};
7856
7857
7858
7859//////////////
7860// HUD INFO //
7861//////////////
7862
7863
7864class LLAdvancedToggleHUDInfo : public view_listener_t
7865{
7866 bool handleEvent(LLPointer<LLEvent> event, const LLSD& userdata)
7867 {
7868 LLString info_type = userdata.asString();
7869 if ("velocity" == info_type)
7870 {
7871 toggle_visibility( (void*)gVelocityBar );
7872 }
7873 else if ("camera" == info_type)
7874 {
7875 gDisplayCameraPos = !(gDisplayCameraPos);
7876 }
7877 else if ("wind" == info_type)
7878 {
7879 gDisplayWindInfo = !(gDisplayWindInfo);
7880 }
7881 else if ("fov" == info_type)
7882 {
7883 gDisplayFOV = !(gDisplayFOV);
7884 }
7885 return true;
7886 }
7887};
7888
7889class LLAdvancedCheckHUDInfo : public view_listener_t
7890{
7891 bool handleEvent(LLPointer<LLEvent> event, const LLSD& userdata)
7892 {
7893 LLString info_type = userdata["data"].asString();
7894 bool new_value = false;
7895 if ("velocity" == info_type)
7896 {
7897 new_value = get_visibility( (void*)gVelocityBar );
7898 }
7899 else if ("camera" == info_type)
7900 {
7901 new_value = gDisplayCameraPos;
7902 }
7903 else if ("wind" == info_type)
7904 {
7905 new_value = gDisplayWindInfo;
7906 }
7907 else if ("fov" == info_type)
7908 {
7909 new_value = gDisplayFOV;
7910 }
7911
7912 LLString control_name = userdata["control"].asString();
7913 gMenuHolder->findControl(control_name)->setValue(new_value);
7914
7915 return true;
7916 }
7917};
7918
7919
7920
7921///////////////////////
7922// CLEAR GROUP CACHE //
7923///////////////////////
7924
7925
7926class LLAdvancedClearGroupCache : public view_listener_t
7927{
7928 bool handleEvent(LLPointer<LLEvent> event, const LLSD& userdata)
7929 {
7930 LLGroupMgr::debugClearAllGroups(NULL);
7931 return true;
7932 }
7933};
7934
7935
7936
7937
7938/////////////////
7939// RENDER TYPE //
7940/////////////////
7941
7942
7943U32 render_type_from_string(LLString render_type)
7944{
7945 if ("simple" == render_type)
7946 {
7947 return LLPipeline::RENDER_TYPE_SIMPLE;
7948 }
7949 else if ("alpha" == render_type)
7950 {
7951 return LLPipeline::RENDER_TYPE_ALPHA;
7952 }
7953 else if ("tree" == render_type)
7954 {
7955 return LLPipeline::RENDER_TYPE_TREE;
7956 }
7957 else if ("avatar" == render_type)
7958 {
7959 return LLPipeline::RENDER_TYPE_AVATAR;
7960 }
7961 else if ("terrain" == render_type)
7962 {
7963 return LLPipeline::RENDER_TYPE_TERRAIN;
7964 }
7965 else if ("sky" == render_type)
7966 {
7967 return LLPipeline::RENDER_TYPE_SKY;
7968 }
7969 else if ("water" == render_type)
7970 {
7971 return LLPipeline::RENDER_TYPE_WATER;
7972 }
7973 else if ("ground" == render_type)
7974 {
7975 return LLPipeline::RENDER_TYPE_GROUND;
7976 }
7977 else if ("volume" == render_type)
7978 {
7979 return LLPipeline::RENDER_TYPE_VOLUME;
7980 }
7981 else if ("grass" == render_type)
7982 {
7983 return LLPipeline::RENDER_TYPE_GRASS;
7984 }
7985 else if ("clouds" == render_type)
7986 {
7987 return LLPipeline::RENDER_TYPE_CLOUDS;
7988 }
7989 else if ("particles" == render_type)
7990 {
7991 return LLPipeline::RENDER_TYPE_PARTICLES;
7992 }
7993 else if ("bump" == render_type)
7994 {
7995 return LLPipeline::RENDER_TYPE_BUMP;
7996 }
7997 else
7998 {
7999 return 0;
8000 }
8001}
8002
8003
8004class LLAdvancedToggleRenderType : public view_listener_t
8005{
8006 bool handleEvent(LLPointer<LLEvent> event, const LLSD& userdata)
8007 {
8008 U32 render_type = render_type_from_string( userdata.asString() );
8009 if ( render_type != 0 )
8010 {
8011 LLPipeline::toggleRenderTypeControl( (void*)render_type );
8012 }
8013 return true;
8014 }
8015};
8016
8017
8018class LLAdvancedCheckRenderType : public view_listener_t
8019{
8020 bool handleEvent(LLPointer<LLEvent> event, const LLSD& userdata)
8021 {
8022 U32 render_type = render_type_from_string( userdata["data"].asString() );
8023 bool new_value = false;
8024
8025 if ( render_type != 0 )
8026 {
8027 new_value = LLPipeline::hasRenderTypeControl( (void*)render_type );
8028 }
8029
8030 LLString control_name = userdata["control"].asString();
8031 gMenuHolder->findControl(control_name)->setValue(new_value);
8032 return true;
8033 }
8034};
8035
8036
8037
8038/////////////
8039// FEATURE //
8040/////////////
8041
8042
8043U32 feature_from_string(LLString feature)
8044{
8045 if ("ui" == feature)
8046 {
8047 return LLPipeline::RENDER_DEBUG_FEATURE_UI;
8048 }
8049 else if ("selected" == feature)
8050 {
8051 return LLPipeline::RENDER_DEBUG_FEATURE_SELECTED;
8052 }
8053 else if ("highlighted" == feature)
8054 {
8055 return LLPipeline::RENDER_DEBUG_FEATURE_HIGHLIGHTED;
8056 }
8057 else if ("dynamic textures" == feature)
8058 {
8059 return LLPipeline::RENDER_DEBUG_FEATURE_DYNAMIC_TEXTURES;
8060 }
8061 else if ("foot shadows" == feature)
8062 {
8063 return LLPipeline::RENDER_DEBUG_FEATURE_FOOT_SHADOWS;
8064 }
8065 else if ("fog" == feature)
8066 {
8067 return LLPipeline::RENDER_DEBUG_FEATURE_FOG;
8068 }
8069 else if ("palette" == feature)
8070 {
8071 return LLPipeline::RENDER_DEBUG_FEATURE_PALETTE;
8072 }
8073 else if ("fr info" == feature)
8074 {
8075 return LLPipeline::RENDER_DEBUG_FEATURE_FR_INFO;
8076 }
8077 else if ("flexible" == feature)
8078 {
8079 return LLPipeline::RENDER_DEBUG_FEATURE_FLEXIBLE;
8080 }
8081 else
8082 {
8083 return 0;
8084 }
8085};
8086
8087
8088class LLAdvancedToggleFeature : public view_listener_t
8089{
8090 bool handleEvent(LLPointer<LLEvent> event, const LLSD& userdata)
8091 {
8092 U32 feature = feature_from_string( userdata.asString() );
8093
8094 if ( feature != 0 )
8095 {
8096 LLPipeline::toggleRenderDebugFeature( (void*)feature );
8097 }
8098
8099 return true;
8100 }
8101};
8102
8103
8104class LLAdvancedCheckFeature : public view_listener_t
8105{
8106 bool handleEvent(LLPointer<LLEvent> event, const LLSD& userdata)
8107 {
8108 U32 feature = feature_from_string( userdata["data"].asString() );
8109 bool new_value = false;
8110
8111 if ( feature != 0 )
8112 {
8113 new_value = LLPipeline::toggleRenderDebugFeatureControl( (void*)feature );
8114 }
8115
8116 LLString control_name = userdata["control"].asString();
8117 gMenuHolder->findControl(control_name)->setValue(new_value);
8118 return true;
8119 }
8120};
8121
8122
8123
8124//////////////////
8125// INFO DISPLAY //
8126//////////////////
8127
8128
8129U32 info_display_from_string(LLString info_display)
8130{
8131 if ("verify" == info_display)
8132 {
8133 return LLPipeline::RENDER_DEBUG_VERIFY;
8134 }
8135 else if ("bboxes" == info_display)
8136 {
8137 return LLPipeline::RENDER_DEBUG_BBOXES;
8138 }
8139 else if ("points" == info_display)
8140 {
8141 return LLPipeline::RENDER_DEBUG_POINTS;
8142 }
8143 else if ("octree" == info_display)
8144 {
8145 return LLPipeline::RENDER_DEBUG_OCTREE;
8146 }
8147 else if ("occlusion" == info_display)
8148 {
8149 return LLPipeline::RENDER_DEBUG_OCCLUSION;
8150 }
8151 else if ("render batches" == info_display)
8152 {
8153 return LLPipeline::RENDER_DEBUG_BATCH_SIZE;
8154 }
8155 else if ("texture anim" == info_display)
8156 {
8157 return LLPipeline::RENDER_DEBUG_TEXTURE_ANIM;
8158 }
8159 else if ("texture priority" == info_display)
8160 {
8161 return LLPipeline::RENDER_DEBUG_TEXTURE_PRIORITY;
8162 }
8163 else if ("shame" == info_display)
8164 {
8165 return LLPipeline::RENDER_DEBUG_SHAME;
8166 }
8167 else if ("texture area" == info_display)
8168 {
8169 return LLPipeline::RENDER_DEBUG_TEXTURE_AREA;
8170 }
8171 else if ("face area" == info_display)
8172 {
8173 return LLPipeline::RENDER_DEBUG_FACE_AREA;
8174 }
8175 else if ("picking" == info_display)
8176 {
8177 return LLPipeline::RENDER_DEBUG_PICKING;
8178 }
8179 else if ("lights" == info_display)
8180 {
8181 return LLPipeline::RENDER_DEBUG_LIGHTS;
8182 }
8183 else if ("particles" == info_display)
8184 {
8185 return LLPipeline::RENDER_DEBUG_PARTICLES;
8186 }
8187 else if ("composition" == info_display)
8188 {
8189 return LLPipeline::RENDER_DEBUG_COMPOSITION;
8190 }
8191 else if ("glow" == info_display)
8192 {
8193 return LLPipeline::RENDER_DEBUG_GLOW;
8194 }
8195 else
8196 {
8197 return 0;
8198 }
8199};
8200
8201
8202class LLAdvancedToggleInfoDisplay : public view_listener_t
8203{
8204 bool handleEvent(LLPointer<LLEvent> event, const LLSD& userdata)
8205 {
8206 U32 info_display = info_display_from_string( userdata.asString() );
8207
8208 if ( info_display != 0 )
8209 {
8210 LLPipeline::toggleRenderDebug( (void*)info_display );
8211 }
8212
8213 return true;
8214 }
8215};
8216
8217
8218class LLAdvancedCheckInfoDisplay : public view_listener_t
8219{
8220 bool handleEvent(LLPointer<LLEvent> event, const LLSD& userdata)
8221 {
8222 U32 info_display = info_display_from_string( userdata["data"].asString() );
8223 bool new_value = false;
8224
8225 if ( info_display != 0 )
8226 {
8227 new_value = LLPipeline::toggleRenderDebugControl( (void*)info_display );
8228 }
8229
8230 LLString control_name = userdata["control"].asString();
8231 gMenuHolder->findControl(control_name)->setValue(new_value);
8232 return true;
8233 }
8234};
8235
8236
8237
8238///////////////////
8239// SELECT BUFFER //
8240///////////////////
8241
8242
8243class LLAdvancedToggleSelectBuffer : public view_listener_t
8244{
8245 bool handleEvent(LLPointer<LLEvent> event, const LLSD& userdata)
8246 {
8247 gDebugSelect = !(gDebugSelect);
8248 return true;
8249 }
8250};
8251
8252class LLAdvancedCheckSelectBuffer : public view_listener_t
8253{
8254 bool handleEvent(LLPointer<LLEvent> event, const LLSD& userdata)
8255 {
8256 bool new_value = gDebugSelect;
8257 LLString control_name = userdata["control"].asString();
8258 gMenuHolder->findControl(control_name)->setValue(new_value);
8259 return true;
8260 }
8261};
8262
8263
8264
8265/////////////////////////
8266// RANDOMIZE FRAMERATE //
8267/////////////////////////
8268
8269
8270class LLAdvancedToggleRandomizeFramerate : public view_listener_t
8271{
8272 bool handleEvent(LLPointer<LLEvent> event, const LLSD& userdata)
8273 {
8274 gRandomizeFramerate = !(gRandomizeFramerate);
8275 return true;
8276 }
8277};
8278
8279class LLAdvancedCheckRandomizeFramerate : public view_listener_t
8280{
8281 bool handleEvent(LLPointer<LLEvent> event, const LLSD& userdata)
8282 {
8283 bool new_value = gRandomizeFramerate;
8284 LLString control_name = userdata["control"].asString();
8285 gMenuHolder->findControl(control_name)->setValue(new_value);
8286 return true;
8287 }
8288};
8289
8290
8291
8292/////////////////////////
8293// PERIODIC SLOW FRAME //
8294/////////////////////////
8295
8296
8297class LLAdvancedTogglePeriodicSlowFrame : public view_listener_t
8298{
8299 bool handleEvent(LLPointer<LLEvent> event, const LLSD& userdata)
8300 {
8301 gPeriodicSlowFrame = !(gPeriodicSlowFrame);
8302 return true;
8303 }
8304};
8305
8306class LLAdvancedCheckPeriodicSlowFrame : public view_listener_t
8307{
8308 bool handleEvent(LLPointer<LLEvent> event, const LLSD& userdata)
8309 {
8310 bool new_value = gPeriodicSlowFrame;
8311 LLString control_name = userdata["control"].asString();
8312 gMenuHolder->findControl(control_name)->setValue(new_value);
8313 return true;
8314 }
8315};
8316
8317
8318
8319////////////////
8320// FRAME TEST //
8321////////////////
8322
8323
8324class LLAdvancedToggleFrameTest : public view_listener_t
8325{
8326 bool handleEvent(LLPointer<LLEvent> event, const LLSD& userdata)
8327 {
8328 LLPipeline::sRenderFrameTest = !(LLPipeline::sRenderFrameTest);
8329 return true;
8330 }
8331};
8332
8333class LLAdvancedCheckFrameTest : public view_listener_t
8334{
8335 bool handleEvent(LLPointer<LLEvent> event, const LLSD& userdata)
8336 {
8337 bool new_value = LLPipeline::sRenderFrameTest;
8338 LLString control_name = userdata["control"].asString();
8339 gMenuHolder->findControl(control_name)->setValue(new_value);
8340 return true;
8341 }
8342};
8343
8344
8345
8346///////////////////////////
8347// HIDE SELECTED OBJECTS //
8348///////////////////////////
8349
8350
8351class LLAdvancedToggleHideSelectedObjects : public view_listener_t
8352{
8353 bool handleEvent(LLPointer<LLEvent> event, const LLSD& userdata)
8354 {
8355 gHideSelectedObjects = !(gHideSelectedObjects);
8356 return true;
8357 }
8358};
8359
8360class LLAdvancedCheckHideSelectedObjects : public view_listener_t
8361{
8362 bool handleEvent(LLPointer<LLEvent> event, const LLSD& userdata)
8363 {
8364 bool new_value = gHideSelectedObjects;
8365 LLString control_name = userdata["control"].asString();
8366 gMenuHolder->findControl(control_name)->setValue(new_value);
8367 return true;
8368 }
8369};
8370
8371
8372
8373///////////////////////////
8374// SELECTED TEXTURE INFO //
8375///////////////////////////
8376
8377
8378class LLAdvancedSelectedTextureInfo : public view_listener_t
8379{
8380 bool handleEvent(LLPointer<LLEvent> event, const LLSD& userdata)
8381 {
8382 handle_selected_texture_info(NULL);
8383 return true;
8384 }
8385};
8386
8387
8388
8389//////////////////////
8390// TOGGLE WIREFRAME //
8391//////////////////////
8392
8393
8394class LLAdvancedToggleWireframe : public view_listener_t
8395{
8396 bool handleEvent(LLPointer<LLEvent> event, const LLSD& userdata)
8397 {
8398 gUseWireframe = !(gUseWireframe);
8399 return true;
8400 }
8401};
8402
8403class LLAdvancedCheckWireframe : public view_listener_t
8404{
8405 bool handleEvent(LLPointer<LLEvent> event, const LLSD& userdata)
8406 {
8407 bool new_value = gUseWireframe;
8408 LLString control_name = userdata["control"].asString();
8409 gMenuHolder->findControl(control_name)->setValue(new_value);
8410 return true;
8411 }
8412};
8413
8414
8415
8416//////////////////////
8417// DISABLE TEXTURES //
8418//////////////////////
8419
8420
8421class LLAdvancedToggleDisableTextures : public view_listener_t
8422{
8423 bool handleEvent(LLPointer<LLEvent> event, const LLSD& userdata)
8424 {
8425 menu_toggle_variable((void*)&LLViewerImage::sDontLoadVolumeTextures);
8426 return true;
8427 }
8428};
8429
8430class LLAdvancedCheckDisableTextures : public view_listener_t
8431{
8432 bool handleEvent(LLPointer<LLEvent> event, const LLSD& userdata)
8433 {
8434 bool new_value = menu_check_variable((void*)&LLViewerImage::sDontLoadVolumeTextures);
8435 LLString control_name = userdata["control"].asString();
8436 gMenuHolder->findControl(control_name)->setValue(new_value);
8437 return true;
8438 }
8439};
8440
8441
8442
8443//////////////////////////
8444// DUMP SCRIPTED CAMERA //
8445//////////////////////////
8446
8447
8448class LLAdvancedDumpScriptedCamera : public view_listener_t
8449{
8450 bool handleEvent(LLPointer<LLEvent> event, const LLSD& userdata)
8451 {
8452 handle_dump_followcam(NULL);
8453 return true;
8454 }
8455};
8456
8457
8458
8459//////////////////////////////
8460// DUMP REGION OBJECT CACHE //
8461//////////////////////////////
8462
8463
8464class LLAdvancedDumpRegionObjectCache : public view_listener_t
8465{
8466 bool handleEvent(LLPointer<LLEvent> event, const LLSD& userdata)
8467 {
8468 handle_dump_region_object_cache(NULL);
8469 return true;
8470 }
8471};
8472
8473
8474
8475////////////////
8476// SLURL TEST //
8477////////////////
8478
8479
8480class LLAdvancedSLURLTest : public view_listener_t
8481{
8482 bool handleEvent(LLPointer<LLEvent> event, const LLSD& userdata)
8483 {
8484 handle_slurl_test(NULL);
8485 return true;
8486 }
8487};
8488
8489
8490
8491////////////////////////
8492// TOGGLE EDITABLE UI //
8493////////////////////////
8494
8495
8496class LLAdvancedToggleEditableUI : public view_listener_t
8497{
8498 bool handleEvent(LLPointer<LLEvent> event, const LLSD& userdata)
8499 {
8500 edit_ui(NULL);
8501 return true;
8502 }
8503};
8504
8505// *TODO: Add corresponding "Check" for EditableUI, so it can
8506// become a menu_item_check. Need to add check_edit_ui(void*)
8507// or functional equivalent to do that.
8508
8509
8510
8511//////////////////////
8512// ASYNC KEYSTROKES //
8513//////////////////////
8514
8515
8516class LLAdvancedToggleAsyncKeystrokes : public view_listener_t
8517{
8518 bool handleEvent(LLPointer<LLEvent> event, const LLSD& userdata)
8519 {
8520 gHandleKeysAsync = !(gHandleKeysAsync);
8521 return true;
8522 }
8523};
8524
8525class LLAdvancedCheckAsyncKeystrokes : public view_listener_t
8526{
8527 bool handleEvent(LLPointer<LLEvent> event, const LLSD& userdata)
8528 {
8529 bool new_value = gHandleKeysAsync;
8530 LLString control_name = userdata["control"].asString();
8531 gMenuHolder->findControl(control_name)->setValue(new_value);
8532 return true;
8533 }
8534};
8535
8536
8537
8538/////////////////////
8539// DUMP SELECT MGR //
8540/////////////////////
8541
8542
8543class LLAdvancedDumpSelectMgr : public view_listener_t
8544{
8545 bool handleEvent(LLPointer<LLEvent> event, const LLSD& userdata)
8546 {
8547 dump_select_mgr(NULL);
8548 return true;
8549 }
8550};
8551
8552
8553
8554////////////////////
8555// DUMP INVENTORY //
8556////////////////////
8557
8558
8559class LLAdvancedDumpInventory : public view_listener_t
8560{
8561 bool handleEvent(LLPointer<LLEvent> event, const LLSD& userdata)
8562 {
8563 dump_inventory(NULL);
8564 return true;
8565 }
8566};
8567
8568
8569
8570///////////////////////
8571// DUMP FOCUS HOLDER //
8572///////////////////////
8573
8574
8575class LLAdvancedDumpFocusHolder : public view_listener_t
8576{
8577 bool handleEvent(LLPointer<LLEvent> event, const LLSD& userdata)
8578 {
8579 handle_dump_focus(NULL);
8580 return true;
8581 }
8582};
8583
8584
8585
8586////////////////////////////////
8587// PRINT SELECTED OBJECT INFO //
8588////////////////////////////////
8589
8590
8591class LLAdvancedPrintSelectedObjectInfo : public view_listener_t
8592{
8593 bool handleEvent(LLPointer<LLEvent> event, const LLSD& userdata)
8594 {
8595 print_object_info(NULL);
8596 return true;
8597 }
8598};
8599
8600
8601
8602//////////////////////
8603// PRINT AGENT INFO //
8604//////////////////////
8605
8606
8607class LLAdvancedPrintAgentInfo : public view_listener_t
8608{
8609 bool handleEvent(LLPointer<LLEvent> event, const LLSD& userdata)
8610 {
8611 print_agent_nvpairs(NULL);
8612 return true;
8613 }
8614};
8615
8616
8617
8618////////////////////////////////
8619// PRINT TEXTURE MEMORY STATS //
8620////////////////////////////////
8621
8622
8623class LLAdvancedPrintTextureMemoryStats : public view_listener_t
8624{
8625 bool handleEvent(LLPointer<LLEvent> event, const LLSD& userdata)
8626 {
8627 output_statistics(NULL);
8628 return true;
8629 }
8630};
8631
8632
8633
8634//////////////////////
8635// DEBUG SELECT MGR //
8636//////////////////////
8637
8638
8639class LLAdvancedToggleDebugSelectMgr : public view_listener_t
8640{
8641 bool handleEvent(LLPointer<LLEvent> event, const LLSD& userdata)
8642 {
8643 gDebugSelectMgr = !(gDebugSelectMgr);
8644 return true;
8645 }
8646};
8647
8648class LLAdvancedCheckDebugSelectMgr : public view_listener_t
8649{
8650 bool handleEvent(LLPointer<LLEvent> event, const LLSD& userdata)
8651 {
8652 bool new_value = gDebugSelectMgr;
8653 LLString control_name = userdata["control"].asString();
8654 gMenuHolder->findControl(control_name)->setValue(new_value);
8655 return true;
8656 }
8657};
8658
8659
8660
8661//////////////////
8662// DEBUG CLICKS //
8663//////////////////
8664
8665
8666class LLAdvancedToggleDebugClicks : public view_listener_t
8667{
8668 bool handleEvent(LLPointer<LLEvent> event, const LLSD& userdata)
8669 {
8670 gDebugClicks = !(gDebugClicks);
8671 return true;
8672 }
8673};
8674
8675class LLAdvancedCheckDebugClicks : public view_listener_t
8676{
8677 bool handleEvent(LLPointer<LLEvent> event, const LLSD& userdata)
8678 {
8679 bool new_value = gDebugClicks;
8680 LLString control_name = userdata["control"].asString();
8681 gMenuHolder->findControl(control_name)->setValue(new_value);
8682 return true;
8683 }
8684};
8685
8686
8687
8688/////////////////
8689// DEBUG VIEWS //
8690/////////////////
8691
8692
8693class LLAdvancedToggleDebugViews : public view_listener_t
8694{
8695 bool handleEvent(LLPointer<LLEvent> event, const LLSD& userdata)
8696 {
8697 LLView::sDebugRects = !(LLView::sDebugRects);
8698 return true;
8699 }
8700};
8701
8702class LLAdvancedCheckDebugViews : public view_listener_t
8703{
8704 bool handleEvent(LLPointer<LLEvent> event, const LLSD& userdata)
8705 {
8706 bool new_value = LLView::sDebugRects;
8707 LLString control_name = userdata["control"].asString();
8708 gMenuHolder->findControl(control_name)->setValue(new_value);
8709 return true;
8710 }
8711};
8712
8713
8714
8715///////////////////////
8716// XUI NAME TOOLTIPS //
8717///////////////////////
8718
8719
8720class LLAdvancedToggleXUINameTooltips : public view_listener_t
8721{
8722 bool handleEvent(LLPointer<LLEvent> event, const LLSD& userdata)
8723 {
8724 toggle_show_xui_names(NULL);
8725 return true;
8726 }
8727};
8728
8729class LLAdvancedCheckXUINameTooltips : public view_listener_t
8730{
8731 bool handleEvent(LLPointer<LLEvent> event, const LLSD& userdata)
8732 {
8733 bool new_value = check_show_xui_names(NULL);
8734 LLString control_name = userdata["control"].asString();
8735 gMenuHolder->findControl(control_name)->setValue(new_value);
8736 return true;
8737 }
8738};
8739
8740
8741
8742////////////////////////
8743// DEBUG MOUSE EVENTS //
8744////////////////////////
8745
8746
8747class LLAdvancedToggleDebugMouseEvents : public view_listener_t
8748{
8749 bool handleEvent(LLPointer<LLEvent> event, const LLSD& userdata)
8750 {
8751 LLView::sDebugMouseHandling = !(LLView::sDebugMouseHandling);
8752 return true;
8753 }
8754};
8755
8756class LLAdvancedCheckDebugMouseEvents : public view_listener_t
8757{
8758 bool handleEvent(LLPointer<LLEvent> event, const LLSD& userdata)
8759 {
8760 bool new_value = LLView::sDebugMouseHandling;
8761 LLString control_name = userdata["control"].asString();
8762 gMenuHolder->findControl(control_name)->setValue(new_value);
8763 return true;
8764 }
8765};
8766
8767
8768
8769////////////////
8770// DEBUG KEYS //
8771////////////////
8772
8773
8774class LLAdvancedToggleDebugKeys : public view_listener_t
8775{
8776 bool handleEvent(LLPointer<LLEvent> event, const LLSD& userdata)
8777 {
8778 LLView::sDebugKeys = !(LLView::sDebugKeys);
8779 return true;
8780 }
8781};
8782
8783class LLAdvancedCheckDebugKeys : public view_listener_t
8784{
8785 bool handleEvent(LLPointer<LLEvent> event, const LLSD& userdata)
8786 {
8787 bool new_value = LLView::sDebugKeys;
8788 LLString control_name = userdata["control"].asString();
8789 gMenuHolder->findControl(control_name)->setValue(new_value);
8790 return true;
8791 }
8792};
8793
8794
8795
8796///////////////////////
8797// DEBUG WINDOW PROC //
8798///////////////////////
8799
8800
8801class LLAdvancedToggleDebugWindowProc : public view_listener_t
8802{
8803 bool handleEvent(LLPointer<LLEvent> event, const LLSD& userdata)
8804 {
8805 gDebugWindowProc = !(gDebugWindowProc);
8806 return true;
8807 }
8808};
8809
8810class LLAdvancedCheckDebugWindowProc : public view_listener_t
8811{
8812 bool handleEvent(LLPointer<LLEvent> event, const LLSD& userdata)
8813 {
8814 bool new_value = gDebugWindowProc;
8815 LLString control_name = userdata["control"].asString();
8816 gMenuHolder->findControl(control_name)->setValue(new_value);
8817 return true;
8818 }
8819};
8820
8821
8822
8823////////////////////////////
8824// DEBUG TEXT EDITOR TIPS //
8825////////////////////////////
8826
8827
8828class LLAdvancedToggleDebugTextEditorTips : public view_listener_t
8829{
8830 bool handleEvent(LLPointer<LLEvent> event, const LLSD& userdata)
8831 {
8832 gDebugTextEditorTips = !(gDebugTextEditorTips);
8833 return true;
8834 }
8835};
8836
8837class LLAdvancedCheckDebugTextEditorTips : public view_listener_t
8838{
8839 bool handleEvent(LLPointer<LLEvent> event, const LLSD& userdata)
8840 {
8841 bool new_value = gDebugTextEditorTips;
8842 LLString control_name = userdata["control"].asString();
8843 gMenuHolder->findControl(control_name)->setValue(new_value);
8844 return true;
8845 }
8846};
8847
8848
8849
8850///////////////////////
8851// SHOW FLOATER TEST //
8852///////////////////////
8853
8854
8855class LLAdvancedShowFloaterTest : public view_listener_t
8856{
8857 bool handleEvent(LLPointer<LLEvent> event, const LLSD& userdata)
8858 {
8859 LLFloaterTest::show(NULL);
8860 return true;
8861 }
8862};
8863
8864
8865
8866/////////////////////////
8867// EXPORT MENUS TO XML //
8868/////////////////////////
8869
8870
8871class LLAdvancedExportMenusToXML : public view_listener_t
8872{
8873 bool handleEvent(LLPointer<LLEvent> event, const LLSD& userdata)
8874 {
8875 handle_export_menus_to_xml(NULL);
8876 return true;
8877 }
8878};
8879
8880
8881
8882/////////////
8883// EDIT UI //
8884/////////////
8885
8886
8887class LLAdvancedEditUI : public view_listener_t
8888{
8889 bool handleEvent(LLPointer<LLEvent> event, const LLSD& userdata)
8890 {
8891 LLFloaterEditUI::show(NULL);
8892 return true;
8893 }
8894};
8895
8896
8897
8898//////////////////////
8899// LOAD UI FROM XML //
8900//////////////////////
8901
8902
8903class LLAdvancedLoadUIFromXML : public view_listener_t
8904{
8905 bool handleEvent(LLPointer<LLEvent> event, const LLSD& userdata)
8906 {
8907 handle_load_from_xml(NULL);
8908 return true;
8909 }
8910};
8911
8912
8913
8914////////////////////
8915// SAVE UI TO XML //
8916////////////////////
8917
8918
8919class LLAdvancedSaveUIToXML : public view_listener_t
8920{
8921 bool handleEvent(LLPointer<LLEvent> event, const LLSD& userdata)
8922 {
8923 handle_save_to_xml(NULL);
8924 return true;
8925 }
8926};
8927
8928
8929
8930///////////////
8931// XUI NAMES //
8932///////////////
8933
8934
8935class LLAdvancedToggleXUINames : public view_listener_t
8936{
8937 bool handleEvent(LLPointer<LLEvent> event, const LLSD& userdata)
8938 {
8939 toggle_show_xui_names(NULL);
8940 return true;
8941 }
8942};
8943
8944class LLAdvancedCheckXUINames : public view_listener_t
8945{
8946 bool handleEvent(LLPointer<LLEvent> event, const LLSD& userdata)
8947 {
8948 bool new_value = check_show_xui_names(NULL);
8949 LLString control_name = userdata["control"].asString();
8950 gMenuHolder->findControl(control_name)->setValue(new_value);
8951 return true;
8952 }
8953};
8954
8955
8956
8957////////////////////////
8958// GRAB BAKED TEXTURE //
8959////////////////////////
8960
8961
8962class LLAdvancedGrabBakedTexture : public view_listener_t
8963{
8964 bool handleEvent(LLPointer<LLEvent> event, const LLSD& userdata)
8965 {
8966 LLString texture_type = userdata.asString();
8967 if ("eyes" == texture_type)
8968 {
8969 handle_grab_texture( (void*)LLVOAvatar::TEX_EYES_BAKED );
8970 }
8971 else if ("head" == texture_type)
8972 {
8973 handle_grab_texture( (void*)LLVOAvatar::TEX_HEAD_BAKED );
8974 }
8975 else if ("upper" == texture_type)
8976 {
8977 handle_grab_texture( (void*)LLVOAvatar::TEX_UPPER_BAKED );
8978 }
8979 else if ("lower" == texture_type)
8980 {
8981 handle_grab_texture( (void*)LLVOAvatar::TEX_SKIRT_BAKED );
8982 }
8983 else if ("skirt" == texture_type)
8984 {
8985 handle_grab_texture( (void*)LLVOAvatar::TEX_SKIRT_BAKED );
8986 }
8987
8988 return true;
8989 }
8990};
8991
8992class LLAdvancedEnableGrabBakedTexture : public view_listener_t
8993{
8994 bool handleEvent(LLPointer<LLEvent> event, const LLSD& userdata)
8995 {
8996 LLString texture_type = userdata["data"].asString();
8997 bool new_value = false;
8998
8999 if ("iris" == texture_type)
9000 {
9001 new_value = enable_grab_texture( (void*)LLVOAvatar::TEX_EYES_BAKED );
9002 }
9003 else if ("head" == texture_type)
9004 {
9005 new_value = enable_grab_texture( (void*)LLVOAvatar::TEX_HEAD_BAKED );
9006 }
9007 else if ("upper" == texture_type)
9008 {
9009 new_value = enable_grab_texture( (void*)LLVOAvatar::TEX_UPPER_BAKED );
9010 }
9011 else if ("lower" == texture_type)
9012 {
9013 new_value = enable_grab_texture( (void*)LLVOAvatar::TEX_LOWER_BAKED );
9014 }
9015 else if ("skirt" == texture_type)
9016 {
9017 new_value = enable_grab_texture( (void*)LLVOAvatar::TEX_SKIRT_BAKED );
9018 }
9019
9020 LLString control_name = userdata["control"].asString();
9021 gMenuHolder->findControl(control_name)->setValue(new_value);
9022 return true;
9023 }
9024};
9025
9026
9027
9028//////////////////////
9029// ALLOW IDLE / AFK //
9030//////////////////////
9031
9032
9033class LLAdvancedToggleAllowIdleAFK : public view_listener_t
9034{
9035 bool handleEvent(LLPointer<LLEvent> event, const LLSD& userdata)
9036 {
9037 gAllowIdleAFK = !(gAllowIdleAFK);
9038 return true;
9039 }
9040};
9041
9042class LLAdvancedCheckAllowIdleAFK : public view_listener_t
9043{
9044 bool handleEvent(LLPointer<LLEvent> event, const LLSD& userdata)
9045 {
9046 bool new_value = gAllowIdleAFK;
9047 LLString control_name = userdata["control"].asString();
9048 gMenuHolder->findControl(control_name)->setValue(new_value);
9049 return true;
9050 }
9051};
9052
9053
9054
9055///////////////////////
9056// APPEARANCE TO XML //
9057///////////////////////
9058
9059
9060class LLAdvancedAppearanceToXML : public view_listener_t
9061{
9062 bool handleEvent(LLPointer<LLEvent> event, const LLSD& userdata)
9063 {
9064 LLVOAvatar::dumpArchetypeXML(NULL);
9065 return true;
9066 }
9067};
9068
9069
9070
9071///////////////////////////////
9072// TOGGLE CHARACTER GEOMETRY //
9073///////////////////////////////
9074
9075
9076class LLAdvancedToggleCharacterGeometry : public view_listener_t
9077{
9078 bool handleEvent(LLPointer<LLEvent> event, const LLSD& userdata)
9079 {
9080 handle_god_request_avatar_geometry(NULL);
9081 return true;
9082 }
9083};
9084
9085class LLAdvancedEnableCharacterGeometry : public view_listener_t
9086{
9087 bool handleEvent(LLPointer<LLEvent> event, const LLSD& userdata)
9088 {
9089 enable_god_customer_service(NULL);
9090 return true;
9091 }
9092};
9093
9094
9095
9096/////////////////////////////
9097// TEST MALE / TEST FEMALE //
9098/////////////////////////////
9099
9100
9101class LLAdvancedTestMale : public view_listener_t
9102{
9103 bool handleEvent(LLPointer<LLEvent> event, const LLSD& userdata)
9104 {
9105 handle_test_male(NULL);
9106 return true;
9107 }
9108};
9109
9110
9111class LLAdvancedTestFemale : public view_listener_t
9112{
9113 bool handleEvent(LLPointer<LLEvent> event, const LLSD& userdata)
9114 {
9115 handle_test_female(NULL);
9116 return true;
9117 }
9118};
9119
9120
9121
9122///////////////
9123// TOGGLE PG //
9124///////////////
9125
9126
9127class LLAdvancedTogglePG : public view_listener_t
9128{
9129 bool handleEvent(LLPointer<LLEvent> event, const LLSD& userdata)
9130 {
9131 handle_toggle_pg(NULL);
9132 return true;
9133 }
9134};
9135
9136
9137
9138/////////////////////////
9139// ALLOW SELECT AVATAR //
9140/////////////////////////
9141
9142
9143class LLAdvancedToggleAllowSelectAvatar : public view_listener_t
9144{
9145 bool handleEvent(LLPointer<LLEvent> event, const LLSD& userdata)
9146 {
9147 gAllowSelectAvatar = !(gAllowSelectAvatar);
9148 return true;
9149 }
9150};
9151
9152class LLAdvancedCheckAllowSelectAvatar : public view_listener_t
9153{
9154 bool handleEvent(LLPointer<LLEvent> event, const LLSD& userdata)
9155 {
9156 bool new_value = gAllowSelectAvatar;
9157 LLString control_name = userdata["control"].asString();
9158 gMenuHolder->findControl(control_name)->setValue(new_value);
9159 return true;
9160 }
9161};
9162
9163
9164
9165////////////////////////////
9166// ALLOW TAP-TAP-HOLD RUN //
9167////////////////////////////
9168
9169
9170class LLAdvancedToggleAllowTapTapHoldRun : public view_listener_t
9171{
9172 bool handleEvent(LLPointer<LLEvent> event, const LLSD& userdata)
9173 {
9174 gAllowTapTapHoldRun = !(gAllowTapTapHoldRun);
9175 return true;
9176 }
9177};
9178
9179class LLAdvancedCheckAllowTapTapHoldRun : public view_listener_t
9180{
9181 bool handleEvent(LLPointer<LLEvent> event, const LLSD& userdata)
9182 {
9183 bool new_value = gAllowTapTapHoldRun;
9184 LLString control_name = userdata["control"].asString();
9185 gMenuHolder->findControl(control_name)->setValue(new_value);
9186 return true;
9187 }
9188};
9189
9190
9191
9192/////////////////////////////
9193// FORCE PARAMS TO DEFAULT //
9194/////////////////////////////
9195
9196
9197class LLAdvancedForceParamsToDefault : public view_listener_t
9198{
9199 bool handleEvent(LLPointer<LLEvent> event, const LLSD& userdata)
9200 {
9201 LLAgent::clearVisualParams(NULL);
9202 return true;
9203 }
9204};
9205
9206
9207
9208//////////////////////////
9209// RELOAD VERTEX SHADER //
9210//////////////////////////
9211
9212
9213class LLAdvancedReloadVertexShader : public view_listener_t
9214{
9215 bool handleEvent(LLPointer<LLEvent> event, const LLSD& userdata)
9216 {
9217 reload_vertex_shader(NULL);
9218 return true;
9219 }
9220};
9221
9222
9223
9224////////////////////
9225// ANIMATION INFO //
9226////////////////////
9227
9228
9229class LLAdvancedToggleAnimationInfo : public view_listener_t
9230{
9231 bool handleEvent(LLPointer<LLEvent> event, const LLSD& userdata)
9232 {
9233 LLVOAvatar::sShowAnimationDebug = !(LLVOAvatar::sShowAnimationDebug);
9234 return true;
9235 }
9236};
9237
9238class LLAdvancedCheckAnimationInfo : public view_listener_t
9239{
9240 bool handleEvent(LLPointer<LLEvent> event, const LLSD& userdata)
9241 {
9242 bool new_value = LLVOAvatar::sShowAnimationDebug;
9243 LLString control_name = userdata["control"].asString();
9244 gMenuHolder->findControl(control_name)->setValue(new_value);
9245 return true;
9246 }
9247};
9248
9249
9250
9251////////////////////////////
9252// SLOW MOTION ANIMATIONS //
9253////////////////////////////
9254
9255
9256class LLAdvancedToggleSlowMotionAnimations : public view_listener_t
9257{
9258 bool handleEvent(LLPointer<LLEvent> event, const LLSD& userdata)
9259 {
9260 slow_mo_animations(NULL);
9261 return true;
9262 }
9263};
9264
9265// *TODO: Add a corresponding "Check" event for SlowMotionAnimations,
9266// so that it can become a menu_item_check with the "X" indicator.
9267// See indra/newview/skins/xui/en_us/menu_viewer.xml
9268
9269
9270
9271//////////////////
9272// SHOW LOOK AT //
9273//////////////////
9274
9275
9276class LLAdvancedToggleShowLookAt : public view_listener_t
9277{
9278 bool handleEvent(LLPointer<LLEvent> event, const LLSD& userdata)
9279 {
9280 LLHUDEffectLookAt::sDebugLookAt = !(LLHUDEffectLookAt::sDebugLookAt);
9281 return true;
9282 }
9283};
9284
9285class LLAdvancedCheckShowLookAt : public view_listener_t
9286{
9287 bool handleEvent(LLPointer<LLEvent> event, const LLSD& userdata)
9288 {
9289 bool new_value = LLHUDEffectLookAt::sDebugLookAt;
9290 LLString control_name = userdata["control"].asString();
9291 gMenuHolder->findControl(control_name)->setValue(new_value);
9292 return true;
9293 }
9294};
9295
9296
9297
9298///////////////////
9299// SHOW POINT AT //
9300///////////////////
9301
9302
9303class LLAdvancedToggleShowPointAt : public view_listener_t
9304{
9305 bool handleEvent(LLPointer<LLEvent> event, const LLSD& userdata)
9306 {
9307 LLHUDEffectPointAt::sDebugPointAt = !(LLHUDEffectPointAt::sDebugPointAt);
9308 return true;
9309 }
9310};
9311
9312class LLAdvancedCheckShowPointAt : public view_listener_t
9313{
9314 bool handleEvent(LLPointer<LLEvent> event, const LLSD& userdata)
9315 {
9316 bool new_value = LLHUDEffectPointAt::sDebugPointAt;
9317 LLString control_name = userdata["control"].asString();
9318 gMenuHolder->findControl(control_name)->setValue(new_value);
9319 return true;
9320 }
9321};
9322
9323
9324
9325/////////////////////////
9326// DEBUG JOINT UPDATES //
9327/////////////////////////
9328
9329
9330class LLAdvancedToggleDebugJointUpdates : public view_listener_t
9331{
9332 bool handleEvent(LLPointer<LLEvent> event, const LLSD& userdata)
9333 {
9334 LLVOAvatar::sJointDebug = !(LLVOAvatar::sJointDebug);
9335 return true;
9336 }
9337};
9338
9339class LLAdvancedCheckDebugJointUpdates : public view_listener_t
9340{
9341 bool handleEvent(LLPointer<LLEvent> event, const LLSD& userdata)
9342 {
9343 bool new_value = LLVOAvatar::sJointDebug;
9344 LLString control_name = userdata["control"].asString();
9345 gMenuHolder->findControl(control_name)->setValue(new_value);
9346 return true;
9347 }
9348};
9349
9350
9351
9352/////////////////
9353// DISABLE LOD //
9354/////////////////
9355
9356
9357class LLAdvancedToggleDisableLOD : public view_listener_t
9358{
9359 bool handleEvent(LLPointer<LLEvent> event, const LLSD& userdata)
9360 {
9361 LLViewerJoint::sDisableLOD = !(LLViewerJoint::sDisableLOD);
9362 return true;
9363 }
9364};
9365
9366class LLAdvancedCheckDisableLOD : public view_listener_t
9367{
9368 bool handleEvent(LLPointer<LLEvent> event, const LLSD& userdata)
9369 {
9370 bool new_value = LLViewerJoint::sDisableLOD;
9371 LLString control_name = userdata["control"].asString();
9372 gMenuHolder->findControl(control_name)->setValue(new_value);
9373 return true;
9374 }
9375};
9376
9377
9378
9379/////////////////////////
9380// DEBUG CHARACTER VIS //
9381/////////////////////////
9382
9383
9384class LLAdvancedToggleDebugCharacterVis : public view_listener_t
9385{
9386 bool handleEvent(LLPointer<LLEvent> event, const LLSD& userdata)
9387 {
9388 LLVOAvatar::sDebugInvisible = !(LLVOAvatar::sDebugInvisible);
9389 return true;
9390 }
9391};
9392
9393class LLAdvancedCheckDebugCharacterVis : public view_listener_t
9394{
9395 bool handleEvent(LLPointer<LLEvent> event, const LLSD& userdata)
9396 {
9397 bool new_value = LLVOAvatar::sDebugInvisible;
9398 LLString control_name = userdata["control"].asString();
9399 gMenuHolder->findControl(control_name)->setValue(new_value);
9400 return true;
9401 }
9402};
9403
9404
9405
9406//////////////////////////
9407// SHOW COLLISION PLANE //
9408//////////////////////////
9409
9410/***************************
9411 *
9412 * Disabled. See DEV-14477
9413 *
9414 ***************************
9415
9416class LLAdvancedToggleShowCollisionPlane : public view_listener_t
9417{
9418 bool handleEvent(LLPointer<LLEvent> event, const LLSD& userdata)
9419 {
9420 LLVOAvatar::sShowFootPlane = !(LLVOAvatar::sShowFootPlane);
9421 return true;
9422 }
9423};
9424
9425class LLAdvancedCheckShowCollisionPlane : public view_listener_t
9426{
9427 bool handleEvent(LLPointer<LLEvent> event, const LLSD& userdata)
9428 {
9429 bool new_value = LLVOAvatar::sShowFootPlane;
9430 LLString control_name = userdata["control"].asString();
9431 gMenuHolder->findControl(control_name)->setValue(new_value);
9432 return true;
9433 }
9434};
9435
9436***************************/
9437
9438
9439/////////////////////////////
9440// SHOW COLLISION SKELETON //
9441/////////////////////////////
9442
9443
9444class LLAdvancedToggleShowCollisionSkeleton : public view_listener_t
9445{
9446 bool handleEvent(LLPointer<LLEvent> event, const LLSD& userdata)
9447 {
9448 LLVOAvatar::sShowCollisionVolumes = !(LLVOAvatar::sShowCollisionVolumes);
9449 return true;
9450 }
9451};
9452
9453class LLAdvancedCheckShowCollisionSkeleton : public view_listener_t
9454{
9455 bool handleEvent(LLPointer<LLEvent> event, const LLSD& userdata)
9456 {
9457 bool new_value = LLVOAvatar::sShowCollisionVolumes;
9458 LLString control_name = userdata["control"].asString();
9459 gMenuHolder->findControl(control_name)->setValue(new_value);
9460 return true;
9461 }
9462};
9463
9464
9465
9466//////////////////////////
9467// DISPLAY AGENT TARGET //
9468//////////////////////////
9469
9470
9471class LLAdvancedToggleDisplayAgentTarget : public view_listener_t
9472{
9473 bool handleEvent(LLPointer<LLEvent> event, const LLSD& userdata)
9474 {
9475 LLAgent::sDebugDisplayTarget = !(LLAgent::sDebugDisplayTarget);
9476 return true;
9477 }
9478};
9479
9480class LLAdvancedCheckDisplayAgentTarget : public view_listener_t
9481{
9482 bool handleEvent(LLPointer<LLEvent> event, const LLSD& userdata)
9483 {
9484 bool new_value = LLAgent::sDebugDisplayTarget;
9485 LLString control_name = userdata["control"].asString();
9486 gMenuHolder->findControl(control_name)->setValue(new_value);
9487 return true;
9488 }
9489};
9490
9491
9492
9493///////////////////////////
9494// DEBUG AVATAR ROTATION //
9495///////////////////////////
9496
9497
9498class LLAdvancedToggleDebugAvatarRotation : public view_listener_t
9499{
9500 bool handleEvent(LLPointer<LLEvent> event, const LLSD& userdata)
9501 {
9502 gDebugAvatarRotation = !(gDebugAvatarRotation);
9503 return true;
9504 }
9505};
9506
9507class LLAdvancedCheckDebugAvatarRotation : public view_listener_t
9508{
9509 bool handleEvent(LLPointer<LLEvent> event, const LLSD& userdata)
9510 {
9511 bool new_value = gDebugAvatarRotation;
9512 LLString control_name = userdata["control"].asString();
9513 gMenuHolder->findControl(control_name)->setValue(new_value);
9514 return true;
9515 }
9516};
9517
9518
9519
9520//////////////////////
9521// DUMP ATTACHMENTS //
9522//////////////////////
9523
9524
9525class LLAdvancedDumpAttachments : public view_listener_t
9526{
9527 bool handleEvent(LLPointer<LLEvent> event, const LLSD& userdata)
9528 {
9529 handle_dump_attachments(NULL);
9530 return true;
9531 }
9532};
9533
9534
9535
9536/////////////////////
9537// REBAKE TEXTURES //
9538/////////////////////
9539
9540
9541class LLAdvancedRebakeTextures : public view_listener_t
9542{
9543 bool handleEvent(LLPointer<LLEvent> event, const LLSD& userdata)
9544 {
9545 handle_rebake_textures(NULL);
9546 return true;
9547 }
9548};
9549
9550
9551
9552///////////////////////////
9553// DEBUG AVATAR TEXTURES //
9554///////////////////////////
9555
9556
9557class LLAdvancedDebugAvatarTextures : public view_listener_t
9558{
9559 bool handleEvent(LLPointer<LLEvent> event, const LLSD& userdata)
9560 {
9561 handle_debug_avatar_textures(NULL);
9562 return true;
9563 }
9564};
9565
9566
9567
9568////////////////////////////////
9569// DUMP AVATAR LOCAL TEXTURES //
9570////////////////////////////////
9571
9572
9573class LLAdvancedDumpAvatarLocalTextures : public view_listener_t
9574{
9575 bool handleEvent(LLPointer<LLEvent> event, const LLSD& userdata)
9576 {
9577 handle_dump_avatar_local_textures(NULL);
9578 return true;
9579 }
9580};
9581
9582
9583
9584/////////////////
9585// MESSAGE LOG //
9586/////////////////
9587
9588
9589class LLAdvancedEnableMessageLog : public view_listener_t
9590{
9591 bool handleEvent(LLPointer<LLEvent> event, const LLSD& userdata)
9592 {
9593 handle_viewer_enable_message_log(NULL);
9594 return true;
9595 }
9596};
9597
9598class LLAdvancedDisableMessageLog : public view_listener_t
9599{
9600 bool handleEvent(LLPointer<LLEvent> event, const LLSD& userdata)
9601 {
9602 handle_viewer_disable_message_log(NULL);
9603 return true;
9604 }
9605};
9606
9607
9608
9609/////////////////
9610// DROP PACKET //
9611/////////////////
9612
9613
9614class LLAdvancedDropPacket : public view_listener_t
9615{
9616 bool handleEvent(LLPointer<LLEvent> event, const LLSD& userdata)
9617 {
9618 drop_packet(NULL);
9619 return true;
9620 }
9621};
9622
9623
9624
9625/////////////////////////
9626// FRAME STATS LOGGING //
9627/////////////////////////
9628
9629
9630class LLAdvancedFrameStatsLogging : public view_listener_t
9631{
9632 bool handleEvent(LLPointer<LLEvent> event, const LLSD& userdata)
9633 {
9634 LLString command = userdata.asString();
9635 if ("start logging" == command)
9636 {
9637 LLFrameStats::startLogging(NULL);
9638 }
9639 else if ("stop logging" == command)
9640 {
9641 LLFrameStats::stopLogging(NULL);
9642 }
9643 else if ("timed logging 10" == command)
9644 {
9645 LLFrameStats::timedLogging10(NULL);
9646 }
9647 else if ("timed logging 30" == command)
9648 {
9649 LLFrameStats::timedLogging30(NULL);
9650 }
9651 else if ("timed logging 60" == command)
9652 {
9653 LLFrameStats::timedLogging60(NULL);
9654 }
9655
9656 return true;
9657 }
9658};
9659
9660
9661
9662/////////////////
9663// AGENT PILOT //
9664/////////////////
9665
9666
9667class LLAdvancedAgentPilot : public view_listener_t
9668{
9669 bool handleEvent(LLPointer<LLEvent> event, const LLSD& userdata)
9670 {
9671 LLString command = userdata.asString();
9672 if ("start playback" == command)
9673 {
9674 LLAgentPilot::startPlayback(NULL);
9675 }
9676 else if ("stop playback" == command)
9677 {
9678 LLAgentPilot::stopPlayback(NULL);
9679 }
9680 else if ("start record" == command)
9681 {
9682 LLAgentPilot::startRecord(NULL);
9683 }
9684 else if ("stop record" == command)
9685 {
9686 LLAgentPilot::saveRecord(NULL);
9687 }
9688
9689 return true;
9690 }
9691};
9692
9693
9694
9695//////////////////////
9696// AGENT PILOT LOOP //
9697//////////////////////
9698
9699
9700class LLAdvancedToggleAgentPilotLoop : public view_listener_t
9701{
9702 bool handleEvent(LLPointer<LLEvent> event, const LLSD& userdata)
9703 {
9704 LLAgentPilot::sLoop = !(LLAgentPilot::sLoop);
9705 return true;
9706 }
9707};
9708
9709class LLAdvancedCheckAgentPilotLoop : public view_listener_t
9710{
9711 bool handleEvent(LLPointer<LLEvent> event, const LLSD& userdata)
9712 {
9713 bool new_value = LLAgentPilot::sLoop;
9714 LLString control_name = userdata["control"].asString();
9715 gMenuHolder->findControl(control_name)->setValue(new_value);
9716 return true;
9717 }
9718};
9719
9720
9721
9722/////////////////////////
9723// SHOW OBJECT UPDATES //
9724/////////////////////////
9725
9726
9727class LLAdvancedToggleShowObjectUpdates : public view_listener_t
9728{
9729 bool handleEvent(LLPointer<LLEvent> event, const LLSD& userdata)
9730 {
9731 gShowObjectUpdates = !(gShowObjectUpdates);
9732 return true;
9733 }
9734};
9735
9736class LLAdvancedCheckShowObjectUpdates : public view_listener_t
9737{
9738 bool handleEvent(LLPointer<LLEvent> event, const LLSD& userdata)
9739 {
9740 bool new_value = gShowObjectUpdates;
9741 LLString control_name = userdata["control"].asString();
9742 gMenuHolder->findControl(control_name)->setValue(new_value);
9743 return true;
9744 }
9745};
9746
9747
9748
9749////////////////////
9750// COMPRESS IMAGE //
9751////////////////////
9752
9753
9754class LLAdvancedCompressImage : public view_listener_t
9755{
9756 bool handleEvent(LLPointer<LLEvent> event, const LLSD& userdata)
9757 {
9758 handle_compress_image(NULL);
9759 return true;
9760 }
9761};
9762
9763
9764
9765//////////////////////
9766// CLOTHING FLOATER //
9767//////////////////////
9768
9769
9770class LLAdvancedToggleClothingFloater : public view_listener_t
9771{
9772 bool handleEvent(LLPointer<LLEvent> event, const LLSD& userdata)
9773 {
9774 handle_clothing(NULL);
9775 return true;
9776 }
9777};
9778
9779// There is no LLAdvancedCheckClothingFloater.
9780
9781
9782
9783/////////////////////////
9784// SHOW DEBUG SETTINGS //
9785/////////////////////////
9786
9787
9788class LLAdvancedShowDebugSettings : public view_listener_t
9789{
9790 bool handleEvent(LLPointer<LLEvent> event, const LLSD& userdata)
9791 {
9792 LLFloaterSettingsDebug::show(NULL);
9793 return true;
9794 }
9795};
9796
9797
9798
9799////////////////////////
9800// VIEW ADMIN OPTIONS //
9801////////////////////////
9802
9803
9804class LLAdvancedToggleViewAdminOptions : public view_listener_t
9805{
9806 bool handleEvent(LLPointer<LLEvent> event, const LLSD& userdata)
9807 {
9808 handle_admin_override_toggle(NULL);
9809 return true;
9810 }
9811};
9812
9813class LLAdvancedCheckViewAdminOptions : public view_listener_t
9814{
9815 bool handleEvent(LLPointer<LLEvent> event, const LLSD& userdata)
9816 {
9817 bool new_value = check_admin_override(NULL);
9818 LLString control_name = userdata["control"].asString();
9819 gMenuHolder->findControl(control_name)->setValue(new_value);
9820 return true;
9821 }
9822};
9823
9824
9825
9826//////////////////
9827// ADMIN STATUS //
9828//////////////////
9829
9830
9831class LLAdvancedRequestAdminStatus : public view_listener_t
9832{
9833 bool handleEvent(LLPointer<LLEvent> event, const LLSD& userdata)
9834 {
9835 handle_god_mode(NULL);
9836 return true;
9837 }
9838};
9839
9840class LLAdvancedLeaveAdminStatus : public view_listener_t
9841{
9842 bool handleEvent(LLPointer<LLEvent> event, const LLSD& userdata)
9843 {
9844 handle_leave_god_mode(NULL);
9845 return true;
9846 }
9847};
9848
9849
9850
7723static void addMenu(view_listener_t *menu, const char *name) 9851static void addMenu(view_listener_t *menu, const char *name)
7724{ 9852{
7725 sMenus.push_back(menu); 9853 sMenus.push_back(menu);
@@ -7827,6 +9955,7 @@ void initialize_menus()
7827 addMenu(new LLToolsSaveToInventory(), "Tools.SaveToInventory"); 9955 addMenu(new LLToolsSaveToInventory(), "Tools.SaveToInventory");
7828 addMenu(new LLToolsSaveToObjectInventory(), "Tools.SaveToObjectInventory"); 9956 addMenu(new LLToolsSaveToObjectInventory(), "Tools.SaveToObjectInventory");
7829 addMenu(new LLToolsSelectedScriptAction(), "Tools.SelectedScriptAction"); 9957 addMenu(new LLToolsSelectedScriptAction(), "Tools.SelectedScriptAction");
9958 addMenu(new LLToolsSetBulkPerms(), "Tools.SetBulkPerms");
7830 9959
7831 addMenu(new LLToolsEnableToolNotPie(), "Tools.EnableToolNotPie"); 9960 addMenu(new LLToolsEnableToolNotPie(), "Tools.EnableToolNotPie");
7832 addMenu(new LLToolsEnableLink(), "Tools.EnableLink"); 9961 addMenu(new LLToolsEnableLink(), "Tools.EnableLink");
@@ -7928,4 +10057,155 @@ void initialize_menus()
7928 addMenu(new LLSomethingSelected(), "SomethingSelected"); 10057 addMenu(new LLSomethingSelected(), "SomethingSelected");
7929 addMenu(new LLSomethingSelectedNoHUD(), "SomethingSelectedNoHUD"); 10058 addMenu(new LLSomethingSelectedNoHUD(), "SomethingSelectedNoHUD");
7930 addMenu(new LLEditableSelected(), "EditableSelected"); 10059 addMenu(new LLEditableSelected(), "EditableSelected");
10060
10061
10062 // Advanced (top level menu)
10063 addMenu(new LLAdvancedToggleConsole(), "Advanced.ToggleConsole");
10064 addMenu(new LLAdvancedCheckConsole(), "Advanced.CheckConsole");
10065 addMenu(new LLAdvancedDumpInfoToConsole(), "Advanced.DumpInfoToConsole");
10066 addMenu(new LLAdvancedReloadSettingsOverrides(), "Advanced.ReloadSettingsOverrides");
10067
10068 // Advanced > HUD Info
10069 addMenu(new LLAdvancedToggleHUDInfo(), "Advanced.ToggleHUDInfo");
10070 addMenu(new LLAdvancedCheckHUDInfo(), "Advanced.CheckHUDInfo");
10071
10072 addMenu(new LLAdvancedClearGroupCache(), "Advanced.ClearGroupCache");
10073
10074 // Advanced > Render > Types
10075 addMenu(new LLAdvancedToggleRenderType(), "Advanced.ToggleRenderType");
10076 addMenu(new LLAdvancedCheckRenderType(), "Advanced.CheckRenderType");
10077
10078 // Advanced > Render > Features
10079 addMenu(new LLAdvancedToggleFeature(), "Advanced.ToggleFeature");
10080 addMenu(new LLAdvancedCheckFeature(), "Advanced.CheckFeature");
10081
10082 // Advanced > Render > Info Displays
10083 addMenu(new LLAdvancedToggleInfoDisplay(), "Advanced.ToggleInfoDisplay");
10084 addMenu(new LLAdvancedCheckInfoDisplay(), "Advanced.CheckInfoDisplay");
10085 addMenu(new LLAdvancedToggleSelectBuffer(), "Advanced.ToggleSelectBuffer");
10086 addMenu(new LLAdvancedCheckSelectBuffer(), "Advanced.CheckSelectBuffer");
10087 addMenu(new LLAdvancedToggleRandomizeFramerate(), "Advanced.ToggleRandomizeFramerate");
10088 addMenu(new LLAdvancedCheckRandomizeFramerate(), "Advanced.CheckRandomizeFramerate");
10089 addMenu(new LLAdvancedTogglePeriodicSlowFrame(), "Advanced.TogglePeriodicSlowFrame");
10090 addMenu(new LLAdvancedCheckPeriodicSlowFrame(), "Advanced.CheckPeriodicSlowFrame");
10091 addMenu(new LLAdvancedToggleFrameTest(), "Advanced.ToggleFrameTest");
10092 addMenu(new LLAdvancedCheckFrameTest(), "Advanced.CheckFrameTest");
10093 addMenu(new LLAdvancedToggleHideSelectedObjects(), "Advanced.ToggleHideSelectedObjects");
10094 addMenu(new LLAdvancedCheckHideSelectedObjects(), "Advanced.CheckHideSelectedObjects");
10095 addMenu(new LLAdvancedSelectedTextureInfo(), "Advanced.SelectedTextureInfo");
10096 addMenu(new LLAdvancedToggleWireframe(), "Advanced.ToggleWireframe");
10097 addMenu(new LLAdvancedCheckWireframe(), "Advanced.CheckWireframe");
10098 addMenu(new LLAdvancedToggleDisableTextures(), "Advanced.ToggleDisableTextures");
10099 addMenu(new LLAdvancedCheckDisableTextures(), "Advanced.CheckDisableTextures");
10100
10101 // Advanced > World
10102 addMenu(new LLAdvancedDumpScriptedCamera(), "Advanced.DumpScriptedCamera");
10103 addMenu(new LLAdvancedDumpRegionObjectCache(), "Advanced.DumpRegionObjectCache");
10104
10105 // Advanced > UI
10106 addMenu(new LLAdvancedSLURLTest(), "Advanced.SLURLTest");
10107 addMenu(new LLAdvancedToggleEditableUI(), "Advanced.ToggleEditableUI");
10108 //addMenu(new LLAdvancedCheckEditableUI(), "Advanced.CheckEditableUI");
10109 addMenu(new LLAdvancedToggleAsyncKeystrokes(), "Advanced.ToggleAsyncKeystrokes");
10110 addMenu(new LLAdvancedCheckAsyncKeystrokes(), "Advanced.CheckAsyncKeystrokes");
10111 addMenu(new LLAdvancedDumpSelectMgr(), "Advanced.DumpSelectMgr");
10112 addMenu(new LLAdvancedDumpInventory(), "Advanced.DumpInventory");
10113 addMenu(new LLAdvancedDumpFocusHolder(), "Advanced.DumpFocusHolder");
10114 addMenu(new LLAdvancedPrintSelectedObjectInfo(), "Advanced.PrintSelectedObjectInfo");
10115 addMenu(new LLAdvancedPrintAgentInfo(), "Advanced.PrintAgentInfo");
10116 addMenu(new LLAdvancedPrintTextureMemoryStats(), "Advanced.PrintTextureMemoryStats");
10117 addMenu(new LLAdvancedToggleDebugSelectMgr(), "Advanced.ToggleDebugSelectMgr");
10118 addMenu(new LLAdvancedCheckDebugSelectMgr(), "Advanced.CheckDebugSelectMgr");
10119 addMenu(new LLAdvancedToggleDebugClicks(), "Advanced.ToggleDebugClicks");
10120 addMenu(new LLAdvancedCheckDebugClicks(), "Advanced.CheckDebugClicks");
10121 addMenu(new LLAdvancedCheckDebugViews(), "Advanced.CheckDebugViews");
10122 addMenu(new LLAdvancedToggleDebugViews(), "Advanced.ToggleDebugViews");
10123 addMenu(new LLAdvancedToggleXUINameTooltips(), "Advanced.ToggleXUINameTooltips");
10124 addMenu(new LLAdvancedCheckXUINameTooltips(), "Advanced.CheckXUINameTooltips");
10125 addMenu(new LLAdvancedToggleDebugMouseEvents(), "Advanced.ToggleDebugMouseEvents");
10126 addMenu(new LLAdvancedCheckDebugMouseEvents(), "Advanced.CheckDebugMouseEvents");
10127 addMenu(new LLAdvancedToggleDebugKeys(), "Advanced.ToggleDebugKeys");
10128 addMenu(new LLAdvancedCheckDebugKeys(), "Advanced.CheckDebugKeys");
10129 addMenu(new LLAdvancedToggleDebugWindowProc(), "Advanced.ToggleDebugWindowProc");
10130 addMenu(new LLAdvancedCheckDebugWindowProc(), "Advanced.CheckDebugWindowProc");
10131 addMenu(new LLAdvancedToggleDebugTextEditorTips(), "Advanced.ToggleDebugTextEditorTips");
10132 addMenu(new LLAdvancedCheckDebugTextEditorTips(), "Advanced.CheckDebugTextEditorTips");
10133
10134 // Advanced > XUI
10135 addMenu(new LLAdvancedShowFloaterTest(), "Advanced.ShowFloaterTest");
10136 addMenu(new LLAdvancedExportMenusToXML(), "Advanced.ExportMenusToXML");
10137 addMenu(new LLAdvancedEditUI(), "Advanced.EditUI");
10138 addMenu(new LLAdvancedLoadUIFromXML(), "Advanced.LoadUIFromXML");
10139 addMenu(new LLAdvancedSaveUIToXML(), "Advanced.SaveUIToXML");
10140 addMenu(new LLAdvancedToggleXUINames(), "Advanced.ToggleXUINames");
10141 addMenu(new LLAdvancedCheckXUINames(), "Advanced.CheckXUINames");
10142
10143 // Advanced > Character > Grab Baked Texture
10144 addMenu(new LLAdvancedGrabBakedTexture(), "Advanced.GrabBakedTexture");
10145 addMenu(new LLAdvancedEnableGrabBakedTexture(), "Advanced.EnableGrabBakedTexture");
10146
10147 // Advanced > Character > Character Tests
10148 addMenu(new LLAdvancedToggleAllowIdleAFK(), "Advanced.ToggleAllowIdleAFK");
10149 addMenu(new LLAdvancedCheckAllowIdleAFK(), "Advanced.CheckAllowIdleAFK");
10150 addMenu(new LLAdvancedAppearanceToXML(), "Advanced.AppearanceToXML");
10151 addMenu(new LLAdvancedToggleCharacterGeometry(), "Advanced.ToggleCharacterGeometry");
10152 addMenu(new LLAdvancedTestMale(), "Advanced.TestMale");
10153 addMenu(new LLAdvancedTestFemale(), "Advanced.TestFemale");
10154 addMenu(new LLAdvancedTogglePG(), "Advanced.TogglePG");
10155 addMenu(new LLAdvancedToggleAllowSelectAvatar(), "Advanced.ToggleAllowSelectAvatar");
10156 addMenu(new LLAdvancedCheckAllowSelectAvatar(), "Advanced.CheckAllowSelectAvatar");
10157
10158 // Advanced > Character (toplevel)
10159 addMenu(new LLAdvancedToggleAllowTapTapHoldRun(), "Advanced.ToggleAllowTapTapHoldRun");
10160 addMenu(new LLAdvancedCheckAllowTapTapHoldRun(), "Advanced.CheckAllowTapTapHoldRun");
10161 addMenu(new LLAdvancedForceParamsToDefault(), "Advanced.ForceParamsToDefault");
10162 addMenu(new LLAdvancedReloadVertexShader(), "Advanced.ReloadVertexShader");
10163 addMenu(new LLAdvancedToggleAnimationInfo(), "Advanced.ToggleAnimationInfo");
10164 addMenu(new LLAdvancedCheckAnimationInfo(), "Advanced.CheckAnimationInfo");
10165 addMenu(new LLAdvancedToggleSlowMotionAnimations(), "Advanced.ToggleSlowMotionAnimations");
10166 //addMenu(new LLAdvancedCheckSlowMotionAnimations(), "Advanced.CheckSlowMotionAnimations");
10167 addMenu(new LLAdvancedToggleShowLookAt(), "Advanced.ToggleShowLookAt");
10168 addMenu(new LLAdvancedCheckShowLookAt(), "Advanced.CheckShowLookAt");
10169 addMenu(new LLAdvancedToggleShowPointAt(), "Advanced.ToggleShowPointAt");
10170 addMenu(new LLAdvancedCheckShowPointAt(), "Advanced.CheckShowPointAt");
10171 addMenu(new LLAdvancedToggleDebugJointUpdates(), "Advanced.ToggleDebugJointUpdates");
10172 addMenu(new LLAdvancedCheckDebugJointUpdates(), "Advanced.CheckDebugJointUpdates");
10173 addMenu(new LLAdvancedToggleDisableLOD(), "Advanced.ToggleDisableLOD");
10174 addMenu(new LLAdvancedCheckDisableLOD(), "Advanced.CheckDisableLOD");
10175 addMenu(new LLAdvancedToggleDebugCharacterVis(), "Advanced.ToggleDebugCharacterVis");
10176 addMenu(new LLAdvancedCheckDebugCharacterVis(), "Advanced.CheckDebugCharacterVis");
10177// addMenu(new LLAdvancedToggleShowCollisionPlane(), "Advanced.ToggleShowCollisionPlane");
10178// addMenu(new LLAdvancedCheckShowCollisionPlane(), "Advanced.CheckShowCollisionPlane");
10179 addMenu(new LLAdvancedToggleShowCollisionSkeleton(), "Advanced.ToggleShowCollisionSkeleton");
10180 addMenu(new LLAdvancedCheckShowCollisionSkeleton(), "Advanced.CheckShowCollisionSkeleton");
10181 addMenu(new LLAdvancedToggleDisplayAgentTarget(), "Advanced.ToggleDisplayAgentTarget");
10182 addMenu(new LLAdvancedCheckDisplayAgentTarget(), "Advanced.CheckDisplayAgentTarget");
10183 addMenu(new LLAdvancedToggleDebugAvatarRotation(), "Advanced.ToggleDebugAvatarRotation");
10184 addMenu(new LLAdvancedCheckDebugAvatarRotation(), "Advanced.CheckDebugAvatarRotation");
10185 addMenu(new LLAdvancedDumpAttachments(), "Advanced.DumpAttachments");
10186 addMenu(new LLAdvancedRebakeTextures(), "Advanced.RebakeTextures");
10187 addMenu(new LLAdvancedDebugAvatarTextures(), "Advanced.DebugAvatarTextures");
10188 addMenu(new LLAdvancedDumpAvatarLocalTextures(), "Advanced.DumpAvatarLocalTextures");
10189
10190 // Advanced > Network
10191 addMenu(new LLAdvancedEnableMessageLog(), "Advanced.EnableMessageLog");
10192 addMenu(new LLAdvancedDisableMessageLog(), "Advanced.DisableMessageLog");
10193 addMenu(new LLAdvancedDropPacket(), "Advanced.DropPacket");
10194
10195 // Advanced > Recorder
10196 addMenu(new LLAdvancedFrameStatsLogging(), "Advanced.FrameStatsLogging");
10197 addMenu(new LLAdvancedAgentPilot(), "Advanced.AgentPilot");
10198 addMenu(new LLAdvancedToggleAgentPilotLoop(), "Advanced.ToggleAgentPilotLoop");
10199 addMenu(new LLAdvancedCheckAgentPilotLoop(), "Advanced.CheckAgentPilotLoop");
10200
10201 // Advanced (toplevel)
10202 addMenu(new LLAdvancedToggleShowObjectUpdates(), "Advanced.ToggleShowObjectUpdates");
10203 addMenu(new LLAdvancedCheckShowObjectUpdates(), "Advanced.CheckShowObjectUpdates");
10204 addMenu(new LLAdvancedCompressImage(), "Advanced.CompressImage");
10205 addMenu(new LLAdvancedToggleClothingFloater(), "Advanced.ToggleClothingFloater");
10206 addMenu(new LLAdvancedShowDebugSettings(), "Advanced.ShowDebugSettings");
10207 addMenu(new LLAdvancedToggleViewAdminOptions(), "Advanced.ToggleViewAdminOptions");
10208 addMenu(new LLAdvancedCheckViewAdminOptions(), "Advanced.CheckViewAdminOptions");
10209 addMenu(new LLAdvancedRequestAdminStatus(), "Advanced.RequestAdminStatus");
10210 addMenu(new LLAdvancedLeaveAdminStatus(), "Advanced.LeaveAdminStatus");
7931} 10211}
diff --git a/linden/indra/newview/skins/default/xui/en-us/floater_bulk_perms.xml b/linden/indra/newview/skins/default/xui/en-us/floater_bulk_perms.xml
new file mode 100644
index 0000000..3dd838a
--- /dev/null
+++ b/linden/indra/newview/skins/default/xui/en-us/floater_bulk_perms.xml
@@ -0,0 +1,127 @@
1<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
2<floater bottom="-554" can_close="true" can_drag_on_left="false" can_minimize="true"
3 can_resize="false" can_tear_off="false" enabled="true" height="420"
4 left="367" min_height="1000" min_width="460" mouse_opaque="true"
5 name="floaterrecursiveperms" title="Bulk permission settings"
6 width="460">
7
8<text type="string" length="1" bg_visible="false" border_drop_shadow_visible="false" border_visible="false"
9 bottom="-40" drop_shadow_visible="true" enabled="true" follows="left|top"
10 font="SansSerifSmall" h_pad="0" halign="left" height="10" left="10"
11 mouse_opaque="true" name="applyto" v_pad="0" width="206">Apply to</text>
12
13<check_box bottom="-70" enabled="true" follows="left|top" font="SansSerifSmall"
14 height="16" initial_value="false"
15 label="Scripts" left="10" mouse_opaque="true"
16 name="scripts" radio_style="false"
17 tool_tip="Apply bulk permissions to scripts"
18 width="219"/>
19
20<check_box bottom="-90" enabled="true" follows="left|top" font="SansSerifSmall"
21 height="16" initial_value="false"
22 label="Textures" left="10" mouse_opaque="true"
23 name="textures" radio_style="false"
24 tool_tip="Apply bulk permissions to textures"
25 width="219"/>
26
27<check_box bottom="-110" enabled="true" follows="left|top" font="SansSerifSmall"
28 height="16" initial_value="false"
29 label="Animations" left="10" mouse_opaque="true"
30 name="animations" radio_style="false"
31 tool_tip="Apply bulk permissions to animations"
32 width="219"/>
33
34<check_box bottom="-130" enabled="true" follows="left|top" font="SansSerifSmall"
35 height="16" initial_value="false"
36 label="Sounds" left="10" mouse_opaque="true"
37 name="sounds" radio_style="false"
38 tool_tip="Apply bulk permissions to sounds"
39 width="219"/>
40
41<check_box bottom="-150" enabled="true" follows="left|top" font="SansSerifSmall"
42 height="16" initial_value="false"
43 label="Contained objects" left="10" mouse_opaque="true"
44 name="objects" radio_style="false"
45 tool_tip="Apply bulk permissions to objects inside inventory"
46 width="219"/>
47
48<check_box bottom="-170" enabled="true" follows="left|top" font="SansSerifSmall"
49 height="16" initial_value="false"
50 label="Landmarks" left="10" mouse_opaque="true"
51 name="landmarks" radio_style="false"
52 tool_tip="Apply bulk permissions to landmarks"
53 width="219"/>
54
55<check_box bottom="-190" enabled="true" follows="left|top" font="SansSerifSmall"
56 height="16" initial_value="false"
57 label="Notecards" left="10" mouse_opaque="true"
58 name="notecards" radio_style="false"
59 tool_tip="Apply bulk permissions to notecards"
60 width="219"/>
61
62<check_box bottom="-210" enabled="true" follows="left|top" font="SansSerifSmall"
63 height="16" initial_value="false"
64 label="Gesture" left="10" mouse_opaque="true"
65 name="gestures" radio_style="false"
66 tool_tip="Apply bulk permissions to gestures"
67 width="219"/>
68
69<check_box bottom="-230" enabled="true" follows="left|top" font="SansSerifSmall"
70 height="16" initial_value="false"
71 label="Clothing" left="10" mouse_opaque="true"
72 name="clothing" radio_style="false"
73 tool_tip="Apply bulk permissions to clothing"
74 width="219"/>
75
76<check_box bottom="-250" enabled="true" follows="left|top" font="SansSerifSmall"
77 height="16" initial_value="false"
78 label="Bodypart" left="10" mouse_opaque="true"
79 name="bodyparts" radio_style="false"
80 tool_tip="Apply bulk permissions to bodyparts"
81 width="219"/>
82
83<text type="string" length="1" bg_visible="false" border_drop_shadow_visible="false" border_visible="false"
84 bottom="-40" drop_shadow_visible="true" enabled="true" follows="left|top"
85 font="SansSerifSmall" h_pad="0" halign="left" height="10" left="200"
86 mouse_opaque="true" name="applyto" v_pad="0" width="206">Permissions</text>
87
88
89<check_box bottom="-110" enabled="true" follows="left|top" font="SansSerifSmall"
90 height="16" initial_value="false"
91 label="Copy" left="200" mouse_opaque="true"
92 name="Copy" radio_style="false"
93 tool_tip="Next owner can copy"
94 width="219"/>
95
96<check_box bottom="-130" enabled="true" follows="left|top" font="SansSerifSmall"
97 height="16" initial_value="false"
98 label="Modify" left="200" mouse_opaque="true"
99 name="Modify" radio_style="false"
100 tool_tip="Next owner can modify"
101 width="219"/>
102
103<check_box bottom="-150" enabled="true" follows="left|top" font="SansSerifSmall"
104 height="16" initial_value="false"
105 label="Trans" left="200" mouse_opaque="true"
106 name="Trans" radio_style="false"
107 tool_tip="Next owner can transfer"
108 width="219"/>
109
110<check_box bottom="-230" enabled="true" follows="left|top" font="SansSerifSmall"
111 height="16" initial_value="false"
112 label="Modify Parent Prims" left="200" mouse_opaque="true"
113 name="Parent" radio_style="false"
114 tool_tip="Modify parent prims not just inventory"
115 width="219" default="true"/>
116
117<scroll_list background_visible="true" bottom="-410" column_padding="5" draw_border="true"
118 draw_heading="false" draw_stripes="true" enabled="true"
119 follows="left|top|right|bottom" height="140" left="10" mouse_opaque="true"
120 multi_select="false" name="queue output" width="440" />
121
122<button bottom="-70" enabled="true" follows="left|top" font="SansSerif"
123 halign="center" height="20" label="Apply..."
124 label_selected="Apply..." left="295" mouse_opaque="true"
125 name="Apply..." scale_image="true" width="145" />
126
127</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 1817d8c..b5e36f6 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
@@ -77,7 +77,7 @@
77 initial_value="false" label="Stretch (Ctrl-Shift)" left="4" 77 initial_value="false" label="Stretch (Ctrl-Shift)" left="4"
78 mouse_opaque="true" name="radio stretch" radio_style="true" width="123" /> 78 mouse_opaque="true" name="radio stretch" radio_style="true" width="123" />
79 <check_box bottom_delta="-15" follows="left|top" font="SansSerifSmall" height="16" 79 <check_box bottom_delta="-15" follows="left|top" font="SansSerifSmall" height="16"
80 initial_value="false" label="Select Texture" left="4" mouse_opaque="true" 80 initial_value="false" label="Select Faces to Texture" left="4" mouse_opaque="true"
81 name="radio select face" radio_style="true" width="114" /> 81 name="radio select face" radio_style="true" width="114" />
82 <check_box bottom_delta="-19" control_name="EditLinkedParts" follows="left|top" 82 <check_box bottom_delta="-19" control_name="EditLinkedParts" follows="left|top"
83 font="SansSerifSmall" height="16" initial_value="false" 83 font="SansSerifSmall" height="16" initial_value="false"
@@ -717,10 +717,10 @@
717 Path Cut Begin and End 717 Path Cut Begin and End
718 </text> 718 </text>
719 <spinner bottom_delta="-22" decimal_digits="3" follows="left|top" height="16" 719 <spinner bottom_delta="-22" decimal_digits="3" follows="left|top" height="16"
720 increment="0.05" initial_val="0" label="B" label_width="10" left="121" 720 increment="0.025" initial_val="0" label="B" label_width="10" left="121"
721 max_val="0.98" min_val="0" mouse_opaque="true" name="cut begin" width="68" /> 721 max_val="0.98" min_val="0" mouse_opaque="true" name="cut begin" width="68" />
722 <spinner bottom_delta="0" decimal_digits="3" follows="left|top" height="16" 722 <spinner bottom_delta="0" decimal_digits="3" follows="left|top" height="16"
723 increment="0.05" initial_val="1" label="E" label_width="10" left_delta="73" 723 increment="0.025" initial_val="1" label="E" label_width="10" left_delta="73"
724 max_val="1" min_val="0.02" mouse_opaque="true" name="cut end" width="68" /> 724 max_val="1" min_val="0.02" mouse_opaque="true" name="cut end" width="68" />
725 <text bg_visible="false" border_drop_shadow_visible="false" border_visible="false" 725 <text bg_visible="false" border_drop_shadow_visible="false" border_visible="false"
726 bottom_delta="-14" drop_shadow_visible="true" follows="left|top" 726 bottom_delta="-14" drop_shadow_visible="true" follows="left|top"
@@ -819,12 +819,18 @@
819 mouse_opaque="true" name="advanced_dimple" v_pad="0" width="141"> 819 mouse_opaque="true" name="advanced_dimple" v_pad="0" width="141">
820 Dimple Begin and End 820 Dimple Begin and End
821 </text> 821 </text>
822 <text bg_visible="false" border_drop_shadow_visible="false" border_visible="false"
823 bottom_delta="0" drop_shadow_visible="true" follows="left|top"
824 font="SansSerifSmall" h_pad="0" halign="left" height="10" left_delta="0"
825 mouse_opaque="true" name="advanced_slice" v_pad="0" width="141">
826 Slice Begin and End
827 </text>
822 <spinner bottom_delta="-19" decimal_digits="3" follows="left|top" height="16" 828 <spinner bottom_delta="-19" decimal_digits="3" follows="left|top" height="16"
823 increment="0.05" initial_val="0" label="B" label_width="10" left="121" 829 increment="0.025" initial_val="0" label="B" label_width="10" left="121"
824 max_val="0.95" min_val="0" mouse_opaque="true" name="Path Limit Begin" 830 max_val="0.95" min_val="0" mouse_opaque="true" name="Path Limit Begin"
825 width="68" /> 831 width="68" />
826 <spinner bottom_delta="0" decimal_digits="3" follows="left|top" height="16" 832 <spinner bottom_delta="0" decimal_digits="3" follows="left|top" height="16"
827 increment="0.05" initial_val="1" label="E" label_width="10" left_delta="73" 833 increment="0.025" initial_val="1" label="E" label_width="10" left_delta="73"
828 max_val="1" min_val="0.05" mouse_opaque="true" name="Path Limit End" 834 max_val="1" min_val="0.05" mouse_opaque="true" name="Path Limit End"
829 width="68" /> 835 width="68" />
830 <text bg_visible="false" border_drop_shadow_visible="false" border_visible="false" 836 <text bg_visible="false" border_drop_shadow_visible="false" border_visible="false"
@@ -988,7 +994,7 @@
988 Transparency % 994 Transparency %
989 </text> 995 </text>
990 <spinner bottom_delta="-20" decimal_digits="0" follows="left|top" height="16" 996 <spinner bottom_delta="-20" decimal_digits="0" follows="left|top" height="16"
991 increment="2" initial_val="0" left="180" max_val="90" min_val="0" 997 increment="2" initial_val="0" left="180" max_val="100" min_val="0"
992 mouse_opaque="true" name="ColorTrans" width="80" /> 998 mouse_opaque="true" name="ColorTrans" width="80" />
993 <text bg_visible="false" border_drop_shadow_visible="false" border_visible="false" 999 <text bg_visible="false" border_drop_shadow_visible="false" border_visible="false"
994 bottom_delta="-12" drop_shadow_visible="true" follows="left|top" 1000 bottom_delta="-12" drop_shadow_visible="true" follows="left|top"
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 054f867..69604b0 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
@@ -1,856 +1,2033 @@
1<?xml version="1.0" encoding="utf-8" standalone="yes" ?> 1<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
2<menu_bar bottom="-18" drop_shadow="false" enabled="true" follows="left|top|right" 2
3 height="18" left="0" mouse_opaque="true" name="Main Menu" opaque="false" 3<menu_bar name="Main Menu" drop_shadow="false" follows="left|top|right"
4 tear_off="false" width="802"> 4 opaque="false" tear_off="false">
5 <menu bottom="273" create_jump_keys="true" drop_shadow="true" enabled="true" 5
6 height="263" label="File" left="0" mouse_opaque="false" name="File" 6
7 opaque="true" tear_off="true" width="243"> 7 <!-- FILE -->
8 <tearoff_menu bottom="-10" enabled="true" height="10" label="~~~~~~~~~~~" left="0" 8
9 mouse_opaque="true" name="~~~~~~~~~~~" width="243" /> 9 <menu name="File" create_jump_keys="true" label="File"
10 <menu_item_call bottom="-29" enabled="true" height="19" label="Upload Image (L$[COST])..." 10 opaque="true" tear_off="true">
11 left="0" mouse_opaque="true" name="Upload Image" shortcut="control|U" 11 <menu_item_call name="Upload Image"
12 width="243"> 12 label="Upload Image (L$[COST])..."
13 <on_click function="File.UploadImage" userdata="" /> 13 shortcut="control|U">
14 <on_enable function="File.EnableUpload" /> 14 <on_click function="File.UploadImage" userdata="" />
15 </menu_item_call> 15 <on_enable function="File.EnableUpload" />
16 <menu_item_call bottom="-48" enabled="true" height="19" label="Upload Sound (L$[COST])..." 16 </menu_item_call>
17 left="0" mouse_opaque="true" name="Upload Sound" width="243"> 17 <menu_item_call name="Upload Sound"
18 <on_click function="File.UploadSound" userdata="" /> 18 label="Upload Sound (L$[COST])...">
19 <on_enable function="File.EnableUpload" /> 19 <on_click function="File.UploadSound" userdata="" />
20 </menu_item_call> 20 <on_enable function="File.EnableUpload" />
21 <menu_item_call bottom="-67" enabled="true" height="19" label="Upload Animation (L$[COST])..." 21 </menu_item_call>
22 left="0" mouse_opaque="true" name="Upload Animation" width="243"> 22 <menu_item_call name="Upload Animation"
23 <on_click function="File.UploadAnim" userdata="" /> 23 label="Upload Animation (L$[COST])...">
24 <on_enable function="File.EnableUpload" /> 24 <on_click function="File.UploadAnim" userdata="" />
25 </menu_item_call> 25 <on_enable function="File.EnableUpload" />
26 <menu_item_call bottom="-86" enabled="true" height="19" 26 </menu_item_call>
27 label="Bulk Upload (L$[COST] per file)..." left="0" mouse_opaque="true" 27 <menu_item_call name="Bulk Upload"
28 name="Bulk Upload" width="243"> 28 label="Bulk Upload (L$[COST] per file)...">
29 <on_click function="File.UploadBulk" userdata="" /> 29 <on_click function="File.UploadBulk" userdata="" />
30 </menu_item_call> 30 </menu_item_call>
31 <menu_item_separator bottom="-94" enabled="true" height="8" label="-----------" left="0" 31 <menu_item_separator />
32 mouse_opaque="true" name="separator" width="243" /> 32 <menu_item_call name="Close Window"
33 <menu_item_call bottom="-113" enabled="true" height="19" label="Close Window" left="0" 33 label="Close Window"
34 mouse_opaque="true" name="Close Window" shortcut="control|W" width="243"> 34 shortcut="control|W">
35 <on_click function="File.CloseWindow" userdata="" /> 35 <on_click function="File.CloseWindow"
36 <on_enable function="File.EnableCloseWindow" userdata="" /> 36 userdata="" />
37 </menu_item_call> 37 <on_enable function="File.EnableCloseWindow"
38 <menu_item_call bottom="-113" enabled="true" height="19" label="Close All Windows" left="0" 38 userdata="" />
39 mouse_opaque="true" name="Close All Windows" shortcut="control|shift|W" 39 </menu_item_call>
40 width="243"> 40 <menu_item_call name="Close All Windows"
41 <on_click function="File.CloseAllWindows" userdata="" /> 41 label="Close All Windows"
42 <on_enable function="File.EnableCloseAllWindows" userdata="" /> 42 shortcut="control|shift|W">
43 </menu_item_call> 43 <on_click function="File.CloseAllWindows"
44 <menu_item_separator bottom="-121" enabled="true" height="8" label="-----------" left="0" 44 userdata="" />
45 mouse_opaque="true" name="separator2" width="243" /> 45 <on_enable function="File.EnableCloseAllWindows"
46 <menu_item_call bottom="-140" enabled="true" height="19" label="Save Texture As..." left="0" 46 userdata="" />
47 mouse_opaque="true" name="Save Texture As..." width="243"> 47 </menu_item_call>
48 <on_click function="File.SaveTexture" userdata="" /> 48 <menu_item_separator />
49 <on_enable function="File.EnableSaveAs" /> 49 <menu_item_call name="Save Texture As..."
50 </menu_item_call> 50 label="Save Texture As...">
51 <menu_item_separator bottom="-148" enabled="true" height="8" label="-----------" left="0" 51 <on_click function="File.SaveTexture" userdata="" />
52 mouse_opaque="true" name="separator3" width="243" /> 52 <on_enable function="File.EnableSaveAs" />
53 <menu_item_call bottom="-167" enabled="true" height="19" label="Take Snapshot" left="0" 53 </menu_item_call>
54 mouse_opaque="true" name="Take Snapshot" shortcut="control|shift|S" 54 <menu_item_separator />
55 width="243"> 55 <menu_item_call name="Take Snapshot"
56 <on_click function="File.TakeSnapshot" userdata="" /> 56 label="Take Snapshot"
57 </menu_item_call> 57 shortcut="control|shift|S">
58 <menu_item_call bottom="-186" enabled="true" height="19" label="Snapshot to Disk" left="0" 58 <on_click function="File.TakeSnapshot" userdata="" />
59 mouse_opaque="true" name="Snapshot to Disk" shortcut="control|`" 59 </menu_item_call>
60 useMacCtrl="true" width="243"> 60 <menu_item_call name="Snapshot to Disk"
61 <on_click function="File.TakeSnapshotToDisk" userdata="" /> 61 label="Snapshot to Disk"
62 </menu_item_call> 62 shortcut="control|`" useMacCtrl="true">
63 <menu_item_separator bottom="-194" enabled="true" height="8" label="-----------" left="0" 63 <on_click function="File.TakeSnapshotToDisk"
64 mouse_opaque="true" name="separator4" width="243" /> 64 userdata="" />
65 <menu_item_call bottom="-259" enabled="true" height="19" label="Quit" left="0" 65 </menu_item_call>
66 mouse_opaque="true" name="Quit" shortcut="control|Q" width="243"> 66 <menu_item_separator />
67 <on_click function="File.Quit" userdata="" /> 67 <menu_item_call name="Quit" label="Quit"
68 </menu_item_call> 68 shortcut="control|Q">
69 </menu> 69 <on_click function="File.Quit" userdata="" />
70 <menu bottom="97" create_jump_keys="true" drop_shadow="true" enabled="true" 70 </menu_item_call>
71 height="439" label="Edit" left="38" mouse_opaque="false" name="Edit" 71 </menu>
72 opaque="true" tear_off="true" width="153"> 72
73 <menu_item_call bottom="-29" enabled="false" height="19" label="Undo" left="0" 73
74 mouse_opaque="true" name="Undo" shortcut="control|Z" width="153"> 74
75 <on_click function="Edit.Undo" userdata="" /> 75 <!-- EDIT -->
76 <on_enable function="Edit.EnableUndo" /> 76
77 </menu_item_call> 77 <menu name="Edit" create_jump_keys="true" label="Edit"
78 <menu_item_call bottom="-48" enabled="false" height="19" label="Redo" left="0" 78 opaque="true" tear_off="true">
79 mouse_opaque="true" name="Redo" shortcut="control|Y" width="153"> 79 <menu_item_call name="Undo" enabled="false" label="Undo"
80 <on_click function="Edit.Redo" userdata="" /> 80 shortcut="control|Z">
81 <on_enable function="Edit.EnableRedo" /> 81 <on_click function="Edit.Undo" userdata="" />
82 </menu_item_call> 82 <on_enable function="Edit.EnableUndo" />
83 <menu_item_separator bottom="-56" enabled="true" height="8" label="-----------" left="0" 83 </menu_item_call>
84 mouse_opaque="true" name="separator" width="153" /> 84 <menu_item_call name="Redo" enabled="false" label="Redo"
85 <menu_item_call bottom="-75" enabled="false" height="19" label="Cut" left="0" 85 shortcut="control|Y">
86 mouse_opaque="true" name="Cut" shortcut="control|X" width="153"> 86 <on_click function="Edit.Redo" userdata="" />
87 <on_click function="Edit.Cut" userdata="" /> 87 <on_enable function="Edit.EnableRedo" />
88 <on_enable function="Edit.EnableCut" /> 88 </menu_item_call>
89 </menu_item_call> 89 <menu_item_separator />
90 <menu_item_call bottom="-94" enabled="false" height="19" label="Copy" left="0" 90 <menu_item_call name="Cut" enabled="false" label="Cut"
91 mouse_opaque="true" name="Copy" shortcut="control|C" width="153"> 91 shortcut="control|X">
92 <on_click function="Edit.Copy" userdata="" /> 92 <on_click function="Edit.Cut" userdata="" />
93 <on_enable function="Edit.EnableCopy" /> 93 <on_enable function="Edit.EnableCut" />
94 </menu_item_call> 94 </menu_item_call>
95 <menu_item_call bottom="-113" enabled="false" height="19" label="Paste" left="0" 95 <menu_item_call name="Copy" enabled="false" label="Copy"
96 mouse_opaque="true" name="Paste" shortcut="control|V" width="153"> 96 shortcut="control|C">
97 <on_click function="Edit.Paste" userdata="" /> 97 <on_click function="Edit.Copy" userdata="" />
98 <on_enable function="Edit.EnablePaste" /> 98 <on_enable function="Edit.EnableCopy" />
99 </menu_item_call> 99 </menu_item_call>
100 <menu_item_call bottom="-132" enabled="false" height="19" label="Delete" left="0" 100 <menu_item_call name="Paste" enabled="false" label="Paste"
101 mouse_opaque="true" name="Delete" shortcut="Del" width="153"> 101 shortcut="control|V">
102 <on_click function="Edit.Delete" userdata="" /> 102 <on_click function="Edit.Paste" userdata="" />
103 <on_enable function="Edit.EnableDelete" /> 103 <on_enable function="Edit.EnablePaste" />
104 </menu_item_call> 104 </menu_item_call>
105 <menu_item_separator bottom="-140" enabled="true" height="8" label="-----------" left="0" 105 <menu_item_call name="Delete" enabled="false" label="Delete"
106 mouse_opaque="true" name="separator2" width="153" /> 106 shortcut="Del">
107 <menu_item_call bottom="-159" enabled="true" height="19" label="Search..." left="0" 107 <on_click function="Edit.Delete" userdata="" />
108 mouse_opaque="true" name="Search..." shortcut="control|F" width="153"> 108 <on_enable function="Edit.EnableDelete" />
109 <on_click function="Edit.Search" userdata="" /> 109 </menu_item_call>
110 </menu_item_call> 110 <menu_item_separator />
111 <menu_item_separator bottom="-167" enabled="true" height="8" label="-----------" left="0" 111 <menu_item_call name="Search..." label="Search..."
112 mouse_opaque="true" name="separator3" width="153" /> 112 shortcut="control|F">
113 <menu_item_call bottom="-186" enabled="false" height="19" label="Select All" left="0" 113 <on_click function="Edit.Search" userdata="" />
114 mouse_opaque="true" name="Select All" shortcut="control|A" width="153"> 114 </menu_item_call>
115 <on_click function="Edit.SelectAll" userdata="" /> 115 <menu_item_separator />
116 <on_enable function="Edit.EnableSelectAll" /> 116 <menu_item_call name="Select All" enabled="false"
117 </menu_item_call> 117 label="Select All"
118 <menu_item_call bottom="-205" enabled="false" height="19" label="Deselect" left="0" 118 shortcut="control|A">
119 mouse_opaque="true" name="Deselect" shortcut="control|E" width="153"> 119 <on_click function="Edit.SelectAll" userdata="" />
120 <on_click function="Edit.Deselect" userdata="" /> 120 <on_enable function="Edit.EnableSelectAll" />
121 <on_enable function="Edit.EnableDeselect" /> 121 </menu_item_call>
122 </menu_item_call> 122 <menu_item_call name="Deselect" enabled="false"
123 <menu_item_separator bottom="-213" enabled="true" height="8" label="-----------" left="0" 123 label="Deselect"
124 mouse_opaque="true" name="separator4" width="153" /> 124 shortcut="control|E">
125 <menu_item_call bottom="-232" enabled="false" height="19" label="Duplicate" left="0" 125 <on_click function="Edit.Deselect" userdata="" />
126 mouse_opaque="true" name="Duplicate" shortcut="control|D" width="153"> 126 <on_enable function="Edit.EnableDeselect" />
127 <on_click function="Edit.Duplicate" userdata="" /> 127 </menu_item_call>
128 <on_enable function="Edit.EnableDuplicate" /> 128 <menu_item_separator />
129 </menu_item_call> 129 <menu_item_call name="Duplicate" enabled="false"
130 <menu_item_separator bottom="-240" enabled="true" height="8" label="-----------" left="0" 130 label="Duplicate"
131 mouse_opaque="true" name="separator5" width="153" /> 131 shortcut="control|D">
132 <menu bottom="-554" create_jump_keys="true" drop_shadow="true" enabled="true" 132 <on_click function="Edit.Duplicate" userdata="" />
133 height="554" label="Attach Object" left="0" mouse_opaque="false" 133 <on_enable function="Edit.EnableDuplicate" />
134 name="Attach Object" opaque="true" tear_off="true" width="117" /> 134 </menu_item_call>
135 <menu bottom="-554" create_jump_keys="true" drop_shadow="true" enabled="true" 135 <menu_item_separator />
136 height="554" label="Detach Object" left="191" mouse_opaque="false" 136
137 name="Detach Object" opaque="true" tear_off="true" width="118" /> 137 <menu name="Attach Object" create_jump_keys="true"
138 <menu bottom="-554" create_jump_keys="true" drop_shadow="true" enabled="true" 138 label="Attach Object" opaque="true" tear_off="true" />
139 height="204" label="Take Off Clothing" left="0" mouse_opaque="false" 139
140 name="Take Off Clothing" opaque="true" tear_off="true" width="118"> 140 <menu name="Detach Object" create_jump_keys="true"
141 <menu_item_call bottom="-29" enabled="false" height="19" label="Shirt" left="0" 141 label="Detach Object" opaque="true" tear_off="true" />
142 mouse_opaque="true" name="Shirt" width="118"> 142
143 <on_click function="Edit.TakeOff" userdata="shirt" /> 143
144 <on_enable function="Edit.EnableTakeOff" userdata="shirt" /> 144 <menu name="Take Off Clothing" create_jump_keys="true"
145 </menu_item_call> 145 label="Take Off Clothing" opaque="true" tear_off="true">
146 <menu_item_call bottom="-48" enabled="false" height="19" label="Pants" left="0" 146
147 mouse_opaque="true" name="Pants" width="118"> 147 <menu_item_call name="Shirt" enabled="false" label="Shirt">
148 <on_click function="Edit.TakeOff" userdata="pants" /> 148 <on_click function="Edit.TakeOff"
149 <on_enable function="Edit.EnableTakeOff" userdata="pants" /> 149 userdata="shirt" />
150 </menu_item_call> 150 <on_enable function="Edit.EnableTakeOff"
151 <menu_item_call bottom="-67" enabled="false" height="19" label="Shoes" left="0" 151 userdata="shirt" />
152 mouse_opaque="true" name="Shoes" width="118"> 152 </menu_item_call>
153 <on_click function="Edit.TakeOff" userdata="shoes" /> 153 <menu_item_call name="Pants" enabled="false" label="Pants">
154 <on_enable function="Edit.EnableTakeOff" userdata="shoes" /> 154 <on_click function="Edit.TakeOff"
155 </menu_item_call> 155 userdata="pants" />
156 <menu_item_call bottom="-86" enabled="false" height="19" label="Socks" left="0" 156 <on_enable function="Edit.EnableTakeOff"
157 mouse_opaque="true" name="Socks" width="118"> 157 userdata="pants" />
158 <on_click function="Edit.TakeOff" userdata="socks" /> 158 </menu_item_call>
159 <on_enable function="Edit.EnableTakeOff" userdata="socks" /> 159 <menu_item_call name="Shoes" enabled="false" label="Shoes">
160 </menu_item_call> 160 <on_click function="Edit.TakeOff"
161 <menu_item_call bottom="-105" enabled="false" height="19" label="Jacket" left="0" 161 userdata="shoes" />
162 mouse_opaque="true" name="Jacket" width="118"> 162 <on_enable function="Edit.EnableTakeOff"
163 <on_click function="Edit.TakeOff" userdata="jacket" /> 163 userdata="shoes" />
164 <on_enable function="Edit.EnableTakeOff" userdata="jacket" /> 164 </menu_item_call>
165 </menu_item_call> 165 <menu_item_call name="Socks" enabled="false" label="Socks">
166 <menu_item_call bottom="-124" enabled="false" height="19" label="Gloves" left="0" 166 <on_click function="Edit.TakeOff"
167 mouse_opaque="true" name="Gloves" width="118"> 167 userdata="socks" />
168 <on_click function="Edit.TakeOff" userdata="gloves" /> 168 <on_enable function="Edit.EnableTakeOff"
169 <on_enable function="Edit.EnableTakeOff" userdata="gloves" /> 169 userdata="socks" />
170 </menu_item_call> 170 </menu_item_call>
171 <menu_item_call bottom="-143" enabled="false" height="19" label="Undershirt" left="0" 171 <menu_item_call name="Jacket" enabled="false" label="Jacket">
172 mouse_opaque="true" name="Menu Undershirt" width="118"> 172 <on_click function="Edit.TakeOff"
173 <on_click function="Edit.TakeOff" userdata="undershirt" /> 173 userdata="jacket" />
174 <on_enable function="Edit.EnableTakeOff" userdata="undershirt" /> 174 <on_enable function="Edit.EnableTakeOff"
175 </menu_item_call> 175 userdata="jacket" />
176 <menu_item_call bottom="-162" enabled="false" height="19" label="Underpants" left="0" 176 </menu_item_call>
177 mouse_opaque="true" name="Menu Underpants" width="118"> 177 <menu_item_call name="Gloves" enabled="false" label="Gloves">
178 <on_click function="Edit.TakeOff" userdata="underpants" /> 178 <on_click function="Edit.TakeOff"
179 <on_enable function="Edit.EnableTakeOff" userdata="underpants" /> 179 userdata="gloves" />
180 </menu_item_call> 180 <on_enable function="Edit.EnableTakeOff"
181 <menu_item_call bottom="-181" enabled="false" height="19" label="Skirt" left="0" 181 userdata="gloves" />
182 mouse_opaque="true" name="Skirt" width="118"> 182 </menu_item_call>
183 <on_click function="Edit.TakeOff" userdata="skirt" /> 183 <menu_item_call name="Menu Undershirt" enabled="false"
184 <on_enable function="Edit.EnableTakeOff" userdata="skirt" /> 184 label="Undershirt">
185 </menu_item_call> 185 <on_click function="Edit.TakeOff"
186 <menu_item_call bottom="-200" enabled="true" height="19" label="All Clothes" left="0" 186 userdata="undershirt" />
187 mouse_opaque="true" name="All Clothes" width="118"> 187 <on_enable function="Edit.EnableTakeOff"
188 <on_click function="Edit.TakeOff" userdata="all" /> 188 userdata="undershirt" />
189 </menu_item_call> 189 </menu_item_call>
190 </menu> 190 <menu_item_call name="Menu Underpants" enabled="false"
191 <menu_item_separator bottom="-305" enabled="true" height="8" label="-----------" left="0" 191 label="Underpants">
192 mouse_opaque="true" name="separator6" width="153" /> 192 <on_click function="Edit.TakeOff"
193 <menu_item_call bottom="-324" enabled="true" height="19" label="Gestures..." left="0" 193 userdata="underpants" />
194 mouse_opaque="true" name="Gestures..." shortcut="control|G" width="153"> 194 <on_enable function="Edit.EnableTakeOff"
195 <on_click function="ShowFloater" userdata="gestures" /> 195 userdata="underpants" />
196 </menu_item_call> 196 </menu_item_call>
197 <menu_item_call bottom="-343" enabled="true" height="19" label="Profile..." left="0" 197 <menu_item_call name="Skirt" enabled="false" label="Skirt">
198 mouse_opaque="true" name="Profile..." width="153"> 198 <on_click function="Edit.TakeOff"
199 <on_click function="ShowAgentProfile" userdata="agent" /> 199 userdata="skirt" />
200 </menu_item_call> 200 <on_enable function="Edit.EnableTakeOff"
201 <menu_item_call bottom="-362" enabled="true" height="19" label="Appearance..." left="0" 201 userdata="skirt" />
202 mouse_opaque="true" name="Appearance..." width="153"> 202 </menu_item_call>
203 <on_click function="ShowFloater" userdata="appearance" /> 203 <menu_item_call name="All Clothes" label="All Clothes">
204 <on_enable function="Edit.EnableCustomizeAvatar" /> 204 <on_click function="Edit.TakeOff"
205 </menu_item_call> 205 userdata="all" />
206 <menu_item_separator bottom="-370" enabled="true" height="8" label="-----------" left="0" 206 </menu_item_call>
207 mouse_opaque="true" name="separator7" width="153" /> 207 </menu>
208 <menu_item_check bottom="-389" enabled="true" height="19" label="Friends..." left="0" 208 <menu_item_separator />
209 mouse_opaque="true" name="Friends..." shortcut="control|shift|F" 209 <menu_item_call name="Gestures..." label="Gestures..."
210 width="153"> 210 shortcut="control|G">
211 <on_click function="ShowFloater" userdata="friends" /> 211 <on_click function="ShowFloater"
212 <on_check function="FloaterVisible" userdata="friends" /> 212 userdata="gestures" />
213 </menu_item_check> 213 </menu_item_call>
214 <menu_item_call bottom="-408" enabled="true" height="19" label="Groups..." left="0" 214 <menu_item_call name="Profile..." label="Profile...">
215 mouse_opaque="true" name="Groups..." width="153"> 215 <on_click function="ShowAgentProfile"
216 <on_click function="ShowAgentGroups" userdata="agent" /> 216 userdata="agent" />
217 </menu_item_call> 217 </menu_item_call>
218 <menu_item_separator bottom="-416" enabled="true" height="8" label="-----------" left="0" 218 <menu_item_call name="Appearance..." label="Appearance...">
219 mouse_opaque="true" name="separator8" width="153" /> 219 <on_click function="ShowFloater"
220 <menu_item_call bottom="-435" enabled="true" height="19" label="Preferences..." left="0" 220 userdata="appearance" />
221 mouse_opaque="true" name="Preferences..." shortcut="control|P" width="153"> 221 <on_enable function="Edit.EnableCustomizeAvatar" />
222 <on_click function="ShowFloater" userdata="preferences" /> 222 </menu_item_call>
223 </menu_item_call> 223 <menu_item_separator />
224 </menu> 224 <menu_item_check name="Friends..." label="Friends..."
225 <menu bottom="-1" create_jump_keys="true" drop_shadow="true" enabled="true" 225 shortcut="control|shift|F">
226 height="537" label="View" left="80" mouse_opaque="false" name="View" 226 <on_click function="ShowFloater"
227 opaque="true" tear_off="true" width="211"> 227 userdata="friends" />
228 <tearoff_menu bottom="-10" enabled="true" height="10" label="~~~~~~~~~~~" left="0" 228 <on_check function="FloaterVisible"
229 mouse_opaque="true" name="~~~~~~~~~~~" width="211" /> 229 userdata="friends" />
230 <menu_item_call bottom="-29" enabled="true" height="19" label="Mouselook" left="0" 230 </menu_item_check>
231 mouse_opaque="true" name="Mouselook" shortcut="M" width="211"> 231 <menu_item_call name="Groups..." label="Groups...">
232 <on_click function="View.Mouselook" userdata="" /> 232 <on_click function="ShowAgentGroups"
233 <on_enable function="View.EnableMouselook" /> 233 userdata="agent" />
234 </menu_item_call> 234 </menu_item_call>
235 <menu_item_check bottom="-48" enabled="true" height="19" label="Build" left="0" 235 <menu_item_separator />
236 mouse_opaque="true" name="Build" shortcut="B" width="211"> 236 <menu_item_call name="Preferences..." label="Preferences..."
237 <on_click function="View.BuildMode" userdata="" /> 237 shortcut="control|P">
238 <on_check function="View.CheckBuildMode" /> 238 <on_click function="ShowFloater"
239 </menu_item_check> 239 userdata="preferences" />
240 <menu_item_check bottom="-48" enabled="true" height="19" label="Joystick Flycam" left="0" 240 </menu_item_call>
241 mouse_opaque="true" name="Joystick Flycam" shortcut="alt|shift|F" 241 </menu>
242 width="211"> 242
243 <on_click function="View.JoystickFlycam" userdata="" /> 243
244 <on_check function="View.CheckJoystickFlycam" /> 244
245 </menu_item_check> 245 <!-- VIEW -->
246 <menu_item_call bottom="-67" enabled="true" height="19" label="Reset View" left="0" 246
247 mouse_opaque="true" name="Reset View" shortcut="Esc" width="211"> 247 <menu name="View" create_jump_keys="true" label="View"
248 <on_click function="View.ResetView" userdata="" /> 248 opaque="true" tear_off="true">
249 </menu_item_call> 249 <menu_item_call name="Mouselook" label="Mouselook"
250 <menu_item_call bottom="-86" enabled="false" height="19" label="Look at Last Chatter" left="0" 250 shortcut="M">
251 mouse_opaque="true" name="Look at Last Chatter" shortcut="control|\" 251 <on_click function="View.Mouselook" userdata="" />
252 width="211"> 252 <on_enable function="View.EnableMouselook" />
253 <on_click function="View.LookAtLastChatter" userdata="" /> 253 </menu_item_call>
254 <on_enable function="View.EnableLastChatter" /> 254 <menu_item_check name="Build" label="Build"
255 </menu_item_call> 255 shortcut="B">
256 <menu_item_separator bottom="-94" enabled="true" height="8" label="-----------" left="0" 256 <on_click function="View.BuildMode" userdata="" />
257 mouse_opaque="true" name="separator" width="211" /> 257 <on_check function="View.CheckBuildMode" />
258 <menu_item_check bottom="-113" enabled="true" height="19" label="Toolbar" left="0" 258 </menu_item_check>
259 mouse_opaque="true" name="Toolbar" width="211"> 259 <menu_item_check name="Joystick Flycam" label="Joystick Flycam"
260 <on_click function="ShowFloater" userdata="toolbar" /> 260 shortcut="alt|shift|F">
261 <on_check function="FloaterVisible" userdata="toolbar" /> 261 <on_click function="View.JoystickFlycam" userdata="" />
262 </menu_item_check> 262 <on_check function="View.CheckJoystickFlycam" />
263 <menu_item_check bottom="-132" enabled="true" height="19" label="Local Chat" left="0" 263 </menu_item_check>
264 mouse_opaque="true" name="Chat History" shortcut="control|H" width="211"> 264 <menu_item_call name="Reset View" label="Reset View"
265 <on_click function="ShowFloater" userdata="chat history" /> 265 shortcut="Esc">
266 <on_check function="FloaterVisible" userdata="chat history" /> 266 <on_click function="View.ResetView" userdata="" />
267 </menu_item_check> 267 </menu_item_call>
268 <menu_item_check bottom="-151" enabled="true" height="19" label="Communicate" left="0" 268 <menu_item_call name="Look at Last Chatter" enabled="false"
269 mouse_opaque="true" name="Instant Message" shortcut="control|T" width="211"> 269 label="Look at Last Chatter" shortcut="control|\">
270 <on_click function="ShowFloater" userdata="im" /> 270 <on_click function="View.LookAtLastChatter" userdata="" />
271 <on_check function="FloaterVisible" userdata="im" /> 271 <on_enable function="View.EnableLastChatter" />
272 </menu_item_check> 272 </menu_item_call>
273 <menu_item_call bottom="-170" enabled="true" height="19" label="Inventory" left="0" 273 <menu_item_separator />
274 mouse_opaque="true" name="Inventory" shortcut="control|I" width="211"> 274 <menu_item_check name="Toolbar" label="Toolbar">
275 <on_click function="ShowFloater" userdata="inventory" /> 275 <on_click function="ShowFloater" userdata="toolbar" />
276 </menu_item_call> 276 <on_check function="FloaterVisible" userdata="toolbar" />
277 <menu_item_check bottom="-189" enabled="true" height="19" label="Active Speakers" left="0" 277 </menu_item_check>
278 mouse_opaque="true" name="Active Speakers" width="211"> 278 <menu_item_check name="Chat History" label="Local Chat"
279 <on_click function="ShowFloater" userdata="active speakers" /> 279 shortcut="control|H">
280 <on_check function="FloaterVisible" userdata="active speakers" /> 280 <on_click function="ShowFloater" userdata="chat history" />
281 </menu_item_check> 281 <on_check function="FloaterVisible" userdata="chat history" />
282 <menu_item_check bottom="-189" enabled="true" height="19" label="Mute List" left="0" 282 </menu_item_check>
283 mouse_opaque="true" name="Mute List" width="211"> 283 <menu_item_check name="Instant Message" label="Communicate"
284 <on_click function="ShowFloater" userdata="mute list" /> 284 shortcut="control|T">
285 <on_check function="FloaterVisible" userdata="mute list" /> 285 <on_click function="ShowFloater" userdata="im" />
286 </menu_item_check> 286 <on_check function="FloaterVisible" userdata="im" />
287 <menu_item_separator bottom="-197" enabled="true" height="8" label="-----------" left="0" 287 </menu_item_check>
288 mouse_opaque="true" name="separator2" width="211" /> 288 <menu_item_call name="Inventory" label="Inventory"
289 <menu_item_check bottom="-216" enabled="true" height="19" label="Camera Controls" left="0" 289 shortcut="control|I">
290 mouse_opaque="true" name="Camera Controls" width="211"> 290 <on_click function="ShowFloater" userdata="inventory" />
291 <on_click function="ShowFloater" userdata="camera controls" /> 291 </menu_item_call>
292 <on_check function="FloaterVisible" userdata="camera controls" /> 292 <menu_item_check name="Active Speakers" label="Active Speakers">
293 </menu_item_check> 293 <on_click function="ShowFloater" userdata="active speakers" />
294 <menu_item_check bottom="-235" enabled="true" height="19" label="Movement Controls" left="0" 294 <on_check function="FloaterVisible" userdata="active speakers" />
295 mouse_opaque="true" name="Movement Controls" width="211"> 295 </menu_item_check>
296 <on_click function="ShowFloater" userdata="movement controls" /> 296 <menu_item_check name="Mute List" label="Mute List">
297 <on_check function="FloaterVisible" userdata="movement controls" /> 297 <on_click function="ShowFloater" userdata="mute list" />
298 </menu_item_check> 298 <on_check function="FloaterVisible" userdata="mute list" />
299 <menu_item_check bottom="-254" enabled="true" height="19" label="World Map" left="0" 299 </menu_item_check>
300 mouse_opaque="true" name="World Map" shortcut="control|M" width="211"> 300 <menu_item_separator />
301 <on_click function="ShowFloater" userdata="world map" /> 301 <menu_item_check name="Camera Controls" label="Camera Controls">
302 <on_check control="ShowWorldMap" /> 302 <on_click function="ShowFloater" userdata="camera controls" />
303 </menu_item_check> 303 <on_check function="FloaterVisible" userdata="camera controls" />
304 <menu_item_check bottom="-273" enabled="true" height="19" label="Mini-Map" left="0" 304 </menu_item_check>
305 mouse_opaque="true" name="Mini-Map" shortcut="control|shift|M" width="211"> 305 <menu_item_check name="Movement Controls" label="Movement Controls">
306 <on_click function="ShowFloater" userdata="mini map" /> 306 <on_click function="ShowFloater" userdata="movement controls" />
307 <on_check control="ShowMiniMap" /> 307 <on_check function="FloaterVisible" userdata="movement controls" />
308 </menu_item_check> 308 </menu_item_check>
309 <menu_item_separator bottom="-281" enabled="true" height="8" label="-----------" left="0" 309 <menu_item_check name="World Map" label="World Map"
310 mouse_opaque="true" name="separator3" width="211" /> 310 shortcut="control|M">
311 <menu_item_check bottom="-300" enabled="true" height="19" label="Statistics Bar" left="0" 311 <on_click function="ShowFloater" userdata="world map" />
312 mouse_opaque="true" name="Statistics Bar" shortcut="control|shift|1" 312 <on_check control="ShowWorldMap" />
313 width="211"> 313 </menu_item_check>
314 <on_click function="ShowFloater" userdata="stat bar" /> 314 <menu_item_check name="Mini-Map" label="Mini-Map"
315 <on_check function="FloaterVisible" userdata="stat bar" /> 315 shortcut="control|shift|M">
316 </menu_item_check> 316 <on_click function="ShowFloater" userdata="mini map" />
317 <menu_item_check bottom="-319" enabled="true" height="19" label="Property Lines" left="0" 317 <on_check control="ShowMiniMap" />
318 mouse_opaque="true" name="Property Lines" shortcut="control|alt|shift|P" 318 </menu_item_check>
319 width="211"> 319 <menu_item_separator />
320 <on_click function="ToggleControl" userdata="ShowPropertyLines" /> 320 <menu_item_check name="Statistics Bar" label="Statistics Bar"
321 <on_check control="ShowPropertyLines" /> 321 shortcut="control|shift|1">
322 </menu_item_check> 322 <on_click function="ShowFloater" userdata="stat bar" />
323 <menu_item_check bottom="-338" enabled="true" height="19" label="Land Owners" left="0" 323 <on_check function="FloaterVisible" userdata="stat bar" />
324 mouse_opaque="true" name="Land Owners" width="211"> 324 </menu_item_check>
325 <on_click function="ToggleControl" userdata="ShowParcelOwners" /> 325 <menu_item_check name="Property Lines" label="Property Lines"
326 <on_check control="ShowParcelOwners" /> 326 shortcut="control|alt|shift|P">
327 </menu_item_check> 327 <on_click function="ToggleControl" userdata="ShowPropertyLines" />
328 <menu_item_separator bottom="-346" enabled="true" height="8" label="-----------" left="0" 328 <on_check control="ShowPropertyLines" />
329 mouse_opaque="true" name="separator4" width="211" /> 329 </menu_item_check>
330 <menu bottom="-554" create_jump_keys="true" drop_shadow="true" enabled="true" 330 <menu_item_check name="Land Owners" label="Land Owners">
331 height="79" label="Hover Tips" left="0" mouse_opaque="false" 331 <on_click function="ToggleControl" userdata="ShowParcelOwners" />
332 name="Hover Tips" opaque="true" tear_off="true" width="158"> 332 <on_check control="ShowParcelOwners" />
333 <menu_item_check bottom="-29" enabled="true" height="19" label="Show Tips" left="0" 333 </menu_item_check>
334 mouse_opaque="true" name="Show Tips" shortcut="control|shift|T" width="158"> 334 <menu_item_separator />
335 <on_click function="View.ShowHoverTips" userdata="" /> 335 <menu name="Hover Tips" create_jump_keys="true" label="Hover Tips"
336 <on_check function="View.CheckShowHoverTips" /> 336 opaque="true" tear_off="true">
337 </menu_item_check> 337 <menu_item_check name="Show Tips" label="Show Tips"
338 <menu_item_separator bottom="-37" enabled="true" height="8" label="-----------" left="0" 338 shortcut="control|shift|T">
339 mouse_opaque="true" name="separator" width="158" /> 339 <on_click function="View.ShowHoverTips" userdata="" />
340 <menu_item_check bottom="-56" enabled="true" height="19" label="Land Tips" left="0" 340 <on_check function="View.CheckShowHoverTips" />
341 mouse_opaque="true" name="Land Tips" width="158"> 341 </menu_item_check>
342 <on_click function="ToggleControl" userdata="ShowLandHoverTip" /> 342 <menu_item_separator />
343 <on_enable function="View.CheckShowHoverTips" /> 343 <menu_item_check name="Land Tips" label="Land Tips">
344 <on_check control="ShowLandHoverTip" /> 344 <on_click function="ToggleControl"
345 </menu_item_check> 345 userdata="ShowLandHoverTip" />
346 <menu_item_check bottom="-75" enabled="true" height="19" label="Tips On All Objects" left="0" 346 <on_enable function="View.CheckShowHoverTips" />
347 mouse_opaque="true" name="Tips On All Objects" width="158"> 347 <on_check control="ShowLandHoverTip" />
348 <on_click function="ToggleControl" userdata="ShowAllObjectHoverTip" /> 348 </menu_item_check>
349 <on_enable function="View.CheckShowHoverTips" /> 349 <menu_item_check name="Tips On All Objects"
350 <on_check control="ShowAllObjectHoverTip" /> 350 label="Tips On All Objects">
351 </menu_item_check> 351 <on_click function="ToggleControl"
352 </menu> 352 userdata="ShowAllObjectHoverTip" />
353 <menu_item_check bottom="-403" enabled="true" height="19" label="Highlight Transparent" left="0" 353 <on_enable function="View.CheckShowHoverTips" />
354 mouse_opaque="true" name="Highlight Transparent" shortcut="control|alt|T" 354 <on_check control="ShowAllObjectHoverTip" />
355 width="211"> 355 </menu_item_check>
356 <on_click function="View.HighlightTransparent" userdata="" /> 356 </menu>
357 <on_check function="View.CheckHighlightTransparent" /> 357 <menu_item_check name="Highlight Transparent"
358 </menu_item_check> 358 label="Highlight Transparent"
359 <menu_item_check bottom="-384" enabled="true" height="19" label="Beacons Always On" left="0" 359 shortcut="control|alt|T">
360 mouse_opaque="true" name="Beacons Always On" shortcut="control|N" 360 <on_click function="View.HighlightTransparent" userdata="" />
361 width="211"> 361 <on_check function="View.CheckHighlightTransparent" />
362 <on_click function="ToggleControl" userdata="BeaconAlwaysOn" /> 362 </menu_item_check>
363 <on_check control="BeaconAlwaysOn" /> 363 <menu_item_check name="Beacons Always On" label="Beacons Always On"
364 </menu_item_check> 364 shortcut="control|N">
365 <menu bottom="-554" create_jump_keys="true" drop_shadow="true" enabled="true" 365 <on_click function="ToggleControl" userdata="BeaconAlwaysOn" />
366 height="117" label="Beacons" left="0" mouse_opaque="false" name="Beacons" 366 <on_check control="BeaconAlwaysOn" />
367 opaque="true" tear_off="true" width="129"> 367 </menu_item_check>
368 <menu_item_check bottom="-29" enabled="true" height="19" 368 <menu name="Beacons" create_jump_keys="true" label="Beacons"
369 label="Scripted Objects with Touch Only" left="0" mouse_opaque="true" 369 opaque="true" tear_off="true">
370 name="Scripted Objects With Touch Only" width="129"> 370 <menu_item_check name="Scripted Objects With Touch Only"
371 <on_click function="View.ToggleBeacon" userdata="scripttouchbeacon" /> 371 label="Scripted Objects with Touch Only">
372 <on_check function="View.CheckBeaconEnabled" userdata="scripttouchbeacon" /> 372 <on_click function="View.ToggleBeacon"
373 </menu_item_check> 373 userdata="scripttouchbeacon" />
374 <menu_item_check bottom="-48" enabled="true" height="19" label="Scripted Objects" left="0" 374 <on_check function="View.CheckBeaconEnabled"
375 mouse_opaque="true" name="Scripted Objects" width="129"> 375 userdata="scripttouchbeacon" />
376 <on_click function="View.ToggleBeacon" userdata="scriptsbeacon" /> 376 </menu_item_check>
377 <on_check function="View.CheckBeaconEnabled" userdata="scriptsbeacon" /> 377 <menu_item_check name="Scripted Objects" label="Scripted Objects">
378 </menu_item_check> 378 <on_click function="View.ToggleBeacon"
379 <menu_item_check bottom="-67" enabled="true" height="19" label="Physical Objects" left="0" 379 userdata="scriptsbeacon" />
380 mouse_opaque="true" name="Physical Objects" width="129"> 380 <on_check function="View.CheckBeaconEnabled"
381 <on_click function="View.ToggleBeacon" userdata="physicalbeacon" /> 381 userdata="scriptsbeacon" />
382 <on_check function="View.CheckBeaconEnabled" userdata="physicalbeacon" /> 382 </menu_item_check>
383 </menu_item_check> 383 <menu_item_check name="Physical Objects" label="Physical Objects">
384 <menu_item_check bottom="-86" enabled="true" height="19" label="Sound Sources" left="0" 384 <on_click function="View.ToggleBeacon"
385 mouse_opaque="true" name="Sound Sources" width="129"> 385 userdata="physicalbeacon" />
386 <on_click function="View.ToggleBeacon" userdata="soundsbeacon" /> 386 <on_check function="View.CheckBeaconEnabled"
387 <on_check function="View.CheckBeaconEnabled" userdata="soundsbeacon" /> 387 userdata="physicalbeacon" />
388 </menu_item_check> 388 </menu_item_check>
389 <menu_item_check bottom="-105" enabled="true" height="19" label="Particle Sources" left="0" 389 <menu_item_check name="Sound Sources" label="Sound Sources">
390 mouse_opaque="true" name="Particle Sources" width="129"> 390 <on_click function="View.ToggleBeacon"
391 <on_click function="View.ToggleBeacon" userdata="particlesbeacon" /> 391 userdata="soundsbeacon" />
392 <on_check function="View.CheckBeaconEnabled" userdata="particlesbeacon" /> 392 <on_check function="View.CheckBeaconEnabled"
393 </menu_item_check> 393 userdata="soundsbeacon" />
394 <menu_item_separator bottom="-113" enabled="true" height="8" label="-----------" left="0" 394 </menu_item_check>
395 mouse_opaque="true" name="separator" width="129" /> 395 <menu_item_check name="Particle Sources" label="Particle Sources">
396 <menu_item_check bottom="-121" enabled="true" height="19" label="Render Highlights" left="0" 396 <on_click function="View.ToggleBeacon"
397 mouse_opaque="true" name="Render Highlights" width="129"> 397 userdata="particlesbeacon" />
398 <on_click function="View.ToggleBeacon" userdata="renderhighlights" /> 398 <on_check function="View.CheckBeaconEnabled"
399 <on_check function="View.CheckBeaconEnabled" userdata="renderhighlights" /> 399 userdata="particlesbeacon" />
400 </menu_item_check> 400 </menu_item_check>
401 <menu_item_check bottom="-140" enabled="true" height="19" label="Render Beacons" left="0" 401 <menu_item_separator />
402 mouse_opaque="true" name="Render Beacons" width="129"> 402 <menu_item_check name="Render Highlights" label="Render Highlights">
403 <on_click function="View.ToggleBeacon" userdata="renderbeacons" /> 403 <on_click function="View.ToggleBeacon"
404 <on_check function="View.CheckBeaconEnabled" userdata="renderbeacons" /> 404 userdata="renderhighlights" />
405 </menu_item_check> 405 <on_check function="View.CheckBeaconEnabled"
406 <menu_item_separator bottom="-159" enabled="true" height="8" label="-----------" left="0" 406 userdata="renderhighlights" />
407 mouse_opaque="true" name="separator2" width="129" /> 407 </menu_item_check>
408 <menu_item_check bottom="-167" enabled="true" height="19" label="Hide Particles" left="0" 408 <menu_item_check name="Render Beacons" label="Render Beacons">
409 mouse_opaque="true" name="Hide Particles" width="129"> 409 <on_click function="View.ToggleBeacon"
410 <on_click function="View.ToggleRenderType" userdata="hideparticles" /> 410 userdata="renderbeacons" />
411 <on_check function="View.CheckRenderType" userdata="hideparticles" /> 411 <on_check function="View.CheckBeaconEnabled"
412 </menu_item_check> 412 userdata="renderbeacons" />
413 <menu_item_separator bottom="-186" enabled="true" height="8" label="-----------" left="0" 413 </menu_item_check>
414 mouse_opaque="true" name="separator3" width="129" /> 414 <menu_item_separator />
415 <menu bottom="-205" color="0 0 0 1" create_jump_keys="true" drop_shadow="true" 415 <menu_item_check name="Hide Particles" label="Hide Particles">
416 enabled="true" height="117" label="Beacon Width" left="0" 416 <on_click function="View.ToggleRenderType"
417 mouse_opaque="false" name="Beacon Width" opaque="true" tear_off="true" 417 userdata="hideparticles" />
418 width="129"> 418 <on_check function="View.CheckRenderType"
419 <menu_item_call bottom="-19" enabled="true" height="19" label="1" left="0" mouse_opaque="true" 419 userdata="hideparticles" />
420 name="Beacon Width 1" width="188"> 420 </menu_item_check>
421 <on_click function="View.BeaconWidth" userdata="1" /> 421 <menu_item_separator />
422 </menu_item_call> 422 <menu name="Beacon Width" color="0 0 0 1" create_jump_keys="true"
423 <menu_item_call bottom="-19" enabled="true" height="19" label="4" left="0" mouse_opaque="true" 423 label="Beacon Width" opaque="true" tear_off="true">
424 name="Beacon Width 4" width="188"> 424 <menu_item_call name="Beacon Width 1" label="1">
425 <on_click function="View.BeaconWidth" userdata="4" /> 425 <on_click function="View.BeaconWidth" userdata="1" />
426 </menu_item_call> 426 </menu_item_call>
427 <menu_item_call bottom="-19" enabled="true" height="19" label="16" left="0" mouse_opaque="true" 427 <menu_item_call name="Beacon Width 4" label="4">
428 name="Beacon Width 16" width="188"> 428 <on_click function="View.BeaconWidth" userdata="4" />
429 <on_click function="View.BeaconWidth" userdata="16" /> 429 </menu_item_call>
430 </menu_item_call> 430 <menu_item_call name="Beacon Width 16" label="16">
431 <menu_item_call bottom="-19" enabled="true" height="19" label="32" left="0" mouse_opaque="true" 431 <on_click function="View.BeaconWidth" userdata="16" />
432 name="Beacon Width 32" width="188"> 432 </menu_item_call>
433 <on_click function="View.BeaconWidth" userdata="32" /> 433 <menu_item_call name="Beacon Width 32" label="32">
434 </menu_item_call> 434 <on_click function="View.BeaconWidth" userdata="32" />
435 </menu> 435 </menu_item_call>
436 </menu> 436 </menu>
437 <menu_item_check bottom="-441" enabled="true" height="19" label="Show HUD Attachments" left="0" 437 </menu>
438 mouse_opaque="true" name="Show HUD Attachments" shortcut="alt|shift|H" 438 <menu_item_check name="Show HUD Attachments"
439 width="211"> 439 label="Show HUD Attachments"
440 <on_click function="View.ShowHUDAttachments" userdata="" /> 440 shortcut="alt|shift|H">
441 <on_check function="View.CheckHUDAttachments" /> 441 <on_click function="View.ShowHUDAttachments" userdata="" />
442 </menu_item_check> 442 <on_check function="View.CheckHUDAttachments" />
443 <menu_item_separator bottom="-449" enabled="true" height="8" label="-----------" left="0" 443 </menu_item_check>
444 mouse_opaque="true" name="separator5" width="211" /> 444 <menu_item_separator />
445 <menu_item_call bottom="-468" enabled="true" height="19" label="Zoom In" left="0" 445 <menu_item_call name="Zoom In" label="Zoom In"
446 mouse_opaque="true" name="Zoom In" shortcut="control|0" width="211"> 446 shortcut="control|0">
447 <on_click function="View.ZoomIn" userdata="" /> 447 <on_click function="View.ZoomIn" userdata="" />
448 </menu_item_call> 448 </menu_item_call>
449 <menu_item_call bottom="-487" enabled="true" height="19" label="Zoom Default" left="0" 449 <menu_item_call name="Zoom Default" label="Zoom Default"
450 mouse_opaque="true" name="Zoom Default" shortcut="control|9" width="211"> 450 shortcut="control|9">
451 <on_click function="View.ZoomDefault" userdata="" /> 451 <on_click function="View.ZoomDefault" userdata="" />
452 </menu_item_call> 452 </menu_item_call>
453 <menu_item_call bottom="-506" enabled="true" height="19" label="Zoom Out" left="0" 453 <menu_item_call name="Zoom Out" label="Zoom Out"
454 mouse_opaque="true" name="Zoom Out" shortcut="control|8" width="211"> 454 shortcut="control|8">
455 <on_click function="View.ZoomOut" userdata="" /> 455 <on_click function="View.ZoomOut" userdata="" />
456 </menu_item_call> 456 </menu_item_call>
457 <menu_item_separator bottom="-514" enabled="true" height="8" label="-----------" left="0" 457 <menu_item_separator />
458 mouse_opaque="true" name="separator6" width="211" /> 458 <menu_item_call name="Toggle Fullscreen" label="Toggle Fullscreen"
459 <menu_item_call bottom="-19" enabled="true" height="19" label="Toggle Fullscreen" left="0" 459 shortcut="alt|Enter">
460 mouse_opaque="true" name="Toggle Fullscreen" shortcut="alt|Enter" 460 <on_click function="View.Fullscreen" userdata="" />
461 width="188"> 461 </menu_item_call>
462 <on_click function="View.Fullscreen" userdata="" /> 462 <menu_item_call name="Set UI Size to Default"
463 </menu_item_call> 463 label="Set UI Size to Default">
464 <menu_item_call bottom="-38" enabled="true" height="19" label="Set UI Size to Default" left="0" 464 <on_click function="View.DefaultUISize" userdata="" />
465 mouse_opaque="true" name="Set UI Size to Default" width="188"> 465 </menu_item_call>
466 <on_click function="View.DefaultUISize" userdata="" /> 466 </menu>
467 </menu_item_call> 467
468 </menu> 468
469 <menu bottom="-18" create_jump_keys="true" drop_shadow="true" enabled="true" 469
470 height="339" label="World" left="0" mouse_opaque="false" name="World" 470 <!-- WORLD -->
471 opaque="true" tear_off="true" width="185"> 471
472 <menu_item_call bottom="-29" enabled="true" height="19" label="Chat" left="0" 472 <menu name="World" create_jump_keys="true" label="World"
473 mouse_opaque="true" name="Chat" shortcut="" width="185"> 473 opaque="true" tear_off="true">
474 <on_click function="World.Chat" userdata="" /> 474 <menu_item_call name="Chat" label="Chat" shortcut="">
475 </menu_item_call> 475 <on_click function="World.Chat" userdata="" />
476 <menu_item_check bottom="-67" enabled="true" height="19" label="Always Run" left="0" 476 </menu_item_call>
477 mouse_opaque="true" name="Always Run" shortcut="control|R" width="185"> 477 <menu_item_check name="Always Run" label="Always Run"
478 <on_click function="World.AlwaysRun" userdata="" /> 478 shortcut="control|R">
479 <on_check function="World.CheckAlwaysRun" userdata="" /> 479 <on_click function="World.AlwaysRun" userdata="" />
480 </menu_item_check> 480 <on_check function="World.CheckAlwaysRun" userdata="" />
481 <menu_item_check bottom="-86" enabled="true" height="19" label="Fly" left="0" 481 </menu_item_check>
482 mouse_opaque="true" name="Fly" shortcut="Home" width="185"> 482 <menu_item_check name="Fly" label="Fly" shortcut="Home">
483 <on_click function="World.Fly" userdata="" /> 483 <on_click function="World.Fly" userdata="" />
484 <on_enable function="World.EnableFly" /> 484 <on_enable function="World.EnableFly" />
485 <on_check control="FlyBtnState" /> 485 <on_check control="FlyBtnState" />
486 </menu_item_check> 486 </menu_item_check>
487 <menu_item_separator bottom="-94" enabled="true" height="8" label="-----------" left="0" 487 <menu_item_separator />
488 mouse_opaque="true" name="separator" width="185" /> 488 <menu_item_call name="Create Landmark Here"
489 <menu_item_call bottom="-113" enabled="true" height="19" label="Create Landmark Here" left="0" 489 label="Create Landmark Here">
490 mouse_opaque="true" name="Create Landmark Here" width="185"> 490 <on_click function="World.CreateLandmark" userdata="" />
491 <on_click function="World.CreateLandmark" userdata="" /> 491 <on_enable function="World.EnableCreateLandmark" userdata="" />
492 <on_enable function="World.EnableCreateLandmark" userdata="" /> 492 </menu_item_call>
493 </menu_item_call> 493 <menu_item_call name="Set Home to Here" label="Set Home to Here">
494 <menu_item_call bottom="-132" enabled="true" height="19" label="Set Home to Here" left="0" 494 <on_click function="World.SetHomeLocation" userdata="" />
495 mouse_opaque="true" name="Set Home to Here" width="185"> 495 <on_enable function="World.EnableSetHomeLocation" userdata="" />
496 <on_click function="World.SetHomeLocation" userdata="" /> 496 </menu_item_call>
497 <on_enable function="World.EnableSetHomeLocation" userdata="" /> 497 <menu_item_separator />
498 </menu_item_call> 498 <menu_item_call name="Teleport Home" label="Teleport Home"
499 <menu_item_separator bottom="-140" enabled="true" height="8" label="-----------" left="0" 499 shortcut="control|shift|H">
500 mouse_opaque="true" name="separator2" width="185" /> 500 <on_click function="World.TeleportHome" userdata="" />
501 <menu_item_call bottom="-159" enabled="true" height="19" label="Teleport Home" left="0" 501 <on_enable function="World.EnableTeleportHome" userdata="" />
502 mouse_opaque="true" name="Teleport Home" shortcut="control|shift|H" 502 </menu_item_call>
503 width="185"> 503 <menu_item_separator />
504 <on_click function="World.TeleportHome" userdata="" /> 504 <menu_item_call name="Set Away" label="Set Away">
505 <on_enable function="World.EnableTeleportHome" userdata="" /> 505 <on_click function="World.SetAway" userdata="" />
506 </menu_item_call> 506 </menu_item_call>
507 <menu_item_separator bottom="-167" enabled="true" height="8" label="-----------" left="0" 507 <menu_item_call name="Set Busy" label="Set Busy">
508 mouse_opaque="true" name="separator3" width="185" /> 508 <on_click function="World.SetBusy" userdata="" />
509 <menu_item_call bottom="-186" enabled="true" height="19" label="Set Away" left="0" 509 </menu_item_call>
510 mouse_opaque="true" name="Set Away" width="185"> 510 <menu_item_call name="Stop All Animations" enabled="false"
511 <on_click function="World.SetAway" userdata="" /> 511 label="Stop All Animations">
512 </menu_item_call> 512 <on_click function="Tools.StopAllAnimations" userdata="" />
513 <menu_item_call bottom="-205" enabled="true" height="19" label="Set Busy" left="0" 513 </menu_item_call>
514 mouse_opaque="true" name="Set Busy" width="185"> 514 <menu_item_separator />
515 <on_click function="World.SetBusy" userdata="" /> 515 <menu_item_call name="Account History..."
516 </menu_item_call> 516 label="Account History...">
517 <menu_item_call bottom="-281" enabled="false" height="19" label="Stop All Animations" left="0" 517 <on_click function="PromptShowURL"
518 mouse_opaque="true" name="Stop All Animations" width="250"> 518 userdata="WebLaunchAccountHistory,http://secondlife.com/account/transactions.php" />
519 <on_click function="Tools.StopAllAnimations" userdata="" /> 519 </menu_item_call>
520 </menu_item_call> 520 <menu_item_call name="Manage My Account..."
521 <menu_item_separator bottom="-213" enabled="true" height="8" label="-----------" left="0" 521 label="Manage My Account...">
522 mouse_opaque="true" name="separator4" width="185" /> 522 <on_click function="PromptShowURL"
523 <menu_item_call bottom="-232" enabled="true" height="19" label="Account History..." left="0" 523 userdata="WebLaunchJoinNow,http://secondlife.com/account/" />
524 mouse_opaque="true" name="Account History..." width="185"> 524 </menu_item_call>
525 <on_click function="PromptShowURL" 525 <menu_item_call name="Buy and Sell L$..." label="Buy L$...">
526 userdata="WebLaunchAccountHistory,http://secondlife.com/account/transactions.php" /> 526 <on_click function="ShowFloater" userdata="buy currency" />
527 </menu_item_call> 527 </menu_item_call>
528 <menu_item_call bottom="-267" enabled="true" height="19" label="Manage My Account..." left="0" 528 <menu_item_separator />
529 mouse_opaque="true" name="Manage My Account..." width="166"> 529 <menu_item_call name="My Land..." label="My Land...">
530 <on_click function="PromptShowURL" 530 <on_click function="ShowFloater" userdata="my land" />
531 userdata="WebLaunchJoinNow,http://secondlife.com/account/" /> 531 </menu_item_call>
532 </menu_item_call> 532 <menu_item_call name="About Land..." label="About Land...">
533 <menu_item_call bottom="-286" enabled="true" height="19" label="Buy L$..." left="0" 533 <on_click function="ShowFloater" userdata="about land" />
534 mouse_opaque="true" name="Buy and Sell L$..." width="166"> 534 </menu_item_call>
535 <on_click function="ShowFloater" userdata="buy currency" /> 535 <menu_item_call name="Buy Land..." label="Buy Land...">
536 </menu_item_call> 536 <on_click function="ShowFloater" userdata="buy land" />
537 <menu_item_separator bottom="-213" enabled="true" height="8" label="-----------" left="0" 537 <on_enable function="World.EnableBuyLand" />
538 mouse_opaque="true" name="separator5" width="185" /> 538 </menu_item_call>
539 <menu_item_call bottom="-251" enabled="true" height="19" label="My Land..." left="0" 539 <menu_item_call name="Region/Estate..." label="Region/Estate...">
540 mouse_opaque="true" name="My Land..." width="185"> 540 <on_click function="ShowFloater" userdata="about region" />
541 <on_click function="ShowFloater" userdata="my land" /> 541 </menu_item_call>
542 </menu_item_call> 542 <menu_item_separator />
543 <menu_item_call bottom="-270" enabled="true" height="19" label="About Land..." left="0" 543 <menu name="Environment Settings" create_jump_keys="true"
544 mouse_opaque="true" name="About Land..." width="185"> 544 label="Environment Settings" opaque="true" tear_off="true">
545 <on_click function="ShowFloater" userdata="about land" /> 545 <menu_item_call name="Sunrise" label="Sunrise">
546 </menu_item_call> 546 <on_click function="World.EnvSettings" userdata="sunrise" />
547 <menu_item_call bottom="-289" enabled="true" height="19" label="Buy Land..." left="0" 547 </menu_item_call>
548 mouse_opaque="true" name="Buy Land..." width="185"> 548 <menu_item_call name="Noon" label="Midday"
549 <on_click function="ShowFloater" userdata="buy land" /> 549 shortcut="control|shift|Y">
550 <on_enable function="World.EnableBuyLand" /> 550 <on_click function="World.EnvSettings" userdata="noon" />
551 </menu_item_call> 551 </menu_item_call>
552 <menu_item_call bottom="-308" enabled="true" height="19" label="Region/Estate..." left="0" 552 <menu_item_call name="Sunset" label="Sunset"
553 mouse_opaque="true" name="Region/Estate..." width="185"> 553 shortcut="control|shift|N">
554 <on_click function="ShowFloater" userdata="about region" /> 554 <on_click function="World.EnvSettings" userdata="sunset" />
555 </menu_item_call> 555 </menu_item_call>
556 <menu_item_separator bottom="-316" enabled="true" height="8" label="-----------" left="0" 556 <menu_item_call name="Midnight" label="Midnight">
557 mouse_opaque="true" name="separator6" width="185" /> 557 <on_click function="World.EnvSettings" userdata="midnight" />
558 <menu bottom="-554" create_jump_keys="true" drop_shadow="true" enabled="true" 558 </menu_item_call>
559 height="117" label="Environment Settings" left="0" mouse_opaque="false" 559 <menu_item_call name="Revert to Region Default" enabled="false"
560 name="Environment Settings" opaque="true" tear_off="true" width="169"> 560 label="Revert to Region Default">
561 <menu_item_call bottom="-29" enabled="true" height="19" label="Sunrise" left="0" 561 <on_click function="World.EnvSettings" userdata="default" />
562 mouse_opaque="true" name="Sunrise" width="169"> 562 </menu_item_call>
563 <on_click function="World.EnvSettings" userdata="sunrise" /> 563 <menu_item_separator />
564 </menu_item_call> 564 <menu_item_call name="Environment Editor" enabled="false"
565 <menu_item_call bottom="-48" enabled="true" height="19" label="Midday" left="0" 565 label="Environment Editor">
566 mouse_opaque="true" name="Noon" shortcut="control|shift|Y" width="169"> 566 <on_click function="World.EnvSettings" userdata="editor" />
567 <on_click function="World.EnvSettings" userdata="noon" /> 567 </menu_item_call>
568 </menu_item_call> 568 </menu>
569 <menu_item_call bottom="-67" enabled="true" height="19" label="Sunset" left="0" 569 </menu>
570 mouse_opaque="true" name="Sunset" shortcut="control|shift|N" width="169"> 570
571 <on_click function="World.EnvSettings" userdata="sunset" /> 571
572 </menu_item_call> 572
573 <menu_item_call bottom="-86" enabled="true" height="19" label="Midnight" left="0" 573 <!-- TOOLS -->
574 mouse_opaque="true" name="Midnight" width="169"> 574
575 <on_click function="World.EnvSettings" userdata="midnight" /> 575 <menu name="Tools" create_jump_keys="true" label="Tools"
576 </menu_item_call> 576 opaque="true" tear_off="true" visible="false">
577 <menu_item_call bottom="-105" enabled="false" height="19" label="Revert to Region Default" 577 <menu name="Select Tool" create_jump_keys="true" label="Select Tool"
578 left="0" mouse_opaque="true" name="Revert to Region Default" width="169"> 578 opaque="true" tear_off="true">
579 <on_click function="World.EnvSettings" userdata="default" /> 579 <menu_item_call name="Focus" label="Focus" shortcut="control|1">
580 </menu_item_call> 580 <on_click function="Tools.SelectTool" userdata="focus" />
581 <menu_item_separator bottom="-113" enabled="true" height="8" label="-----------" left="0" 581 </menu_item_call>
582 mouse_opaque="true" name="separator" width="169" /> 582 <menu_item_call name="Move" label="Move" shortcut="control|2">
583 <menu_item_call bottom="-132" enabled="false" height="19" label="Environment Editor" left="0" 583 <on_click function="Tools.SelectTool" userdata="move" />
584 mouse_opaque="true" name="Environment Editor" width="169"> 584 </menu_item_call>
585 <on_click function="World.EnvSettings" userdata="editor" /> 585 <menu_item_call name="Edit" label="Edit" shortcut="control|3">
586 </menu_item_call> 586 <on_click function="Tools.SelectTool" userdata="edit" />
587 </menu> 587 </menu_item_call>
588 </menu> 588 <menu_item_call name="Create" label="Create" shortcut="control|4">
589 <menu bottom="-18" create_jump_keys="true" drop_shadow="true" enabled="true" 589 <on_click function="Tools.SelectTool" userdata="create" />
590 height="510" label="Tools" left="0" mouse_opaque="false" name="Tools" 590 </menu_item_call>
591 opaque="true" tear_off="true" visible="false" width="250"> 591 <menu_item_call name="Land" label="Land" shortcut="control|5">
592 <menu bottom="-554" create_jump_keys="true" drop_shadow="true" enabled="true" 592 <on_click function="Tools.SelectTool" userdata="land" />
593 height="109" label="Select Tool" left="0" mouse_opaque="false" 593 </menu_item_call>
594 name="Select Tool" opaque="true" tear_off="true" width="118"> 594 </menu>
595 <menu_item_call bottom="-29" enabled="true" height="19" label="Focus" left="0" 595 <menu_item_separator />
596 mouse_opaque="true" name="Focus" shortcut="control|1" width="118"> 596 <menu_item_check name="Select Only My Objects"
597 <on_click function="Tools.SelectTool" userdata="focus" /> 597 label="Select Only My Objects">
598 </menu_item_call> 598 <on_click function="Tools.SelectOnlyMyObjects"
599 <menu_item_call bottom="-48" enabled="true" height="19" label="Move" left="0" 599 userdata="agents" />
600 mouse_opaque="true" name="Move" shortcut="control|2" width="118"> 600 <on_check control="SelectOwnedOnly" />
601 <on_click function="Tools.SelectTool" userdata="move" /> 601 </menu_item_check>
602 </menu_item_call> 602 <menu_item_check name="Select Only Movable Objects"
603 <menu_item_call bottom="-67" enabled="true" height="19" label="Edit" left="0" 603 label="Select Only Movable Objects">
604 mouse_opaque="true" name="Edit" shortcut="control|3" width="118"> 604 <on_click function="Tools.SelectOnlyMovableObjects"
605 <on_click function="Tools.SelectTool" userdata="edit" /> 605 userdata="movable" />
606 </menu_item_call> 606 <on_check control="SelectMovableOnly" />
607 <menu_item_call bottom="-86" enabled="true" height="19" label="Create" left="0" 607 </menu_item_check>
608 mouse_opaque="true" name="Create" shortcut="control|4" width="118"> 608 <menu_item_check name="Select By Surrounding"
609 <on_click function="Tools.SelectTool" userdata="create" /> 609 label="Select By Surrounding">
610 </menu_item_call> 610 <on_click function="Tools.SelectBySurrounding"
611 <menu_item_call bottom="-105" enabled="true" height="19" label="Land" left="0" 611 userdata="" />
612 mouse_opaque="true" name="Land" shortcut="control|5" width="118"> 612 <on_check control="RectangleSelectInclusive" />
613 <on_click function="Tools.SelectTool" userdata="land" /> 613 </menu_item_check>
614 </menu_item_call> 614 <menu_item_check name="Show Hidden Selection"
615 </menu> 615 label="Show Hidden Selection">
616 <menu_item_separator bottom="-37" enabled="true" height="8" label="-----------" left="0" 616 <on_click function="Tools.ShowHiddenSelection"
617 mouse_opaque="true" name="separator" width="250" /> 617 userdata="" />
618 <menu_item_check bottom="-56" enabled="true" height="19" label="Select Only My Objects" left="0" 618 <on_check control="RenderHiddenSelections" />
619 mouse_opaque="true" name="Select Only My Objects" width="250"> 619 </menu_item_check>
620 <on_click function="Tools.SelectOnlyMyObjects" userdata="agents" /> 620 <menu_item_check name="Show Light Radius for Selection"
621 <on_check control="SelectOwnedOnly" /> 621 label="Show Light Radius for Selection">
622 </menu_item_check> 622 <on_click function="Tools.ShowSelectionLightRadius"
623 <menu_item_check bottom="-75" enabled="true" height="19" label="Select Only Movable Objects" 623 userdata="" />
624 left="0" mouse_opaque="true" name="Select Only Movable Objects" width="250"> 624 <on_check control="RenderLightRadius" />
625 <on_click function="Tools.SelectOnlyMovableObjects" userdata="movable" /> 625 </menu_item_check>
626 <on_check control="SelectMovableOnly" /> 626 <menu_item_check name="Show Selection Beam"
627 </menu_item_check> 627 label="Show Selection Beam">
628 <menu_item_check bottom="-94" enabled="true" height="19" label="Select By Surrounding" left="0" 628 <on_click function="ToggleControl"
629 mouse_opaque="true" name="Select By Surrounding" width="250"> 629 userdata="ShowSelectionBeam" />
630 <on_click function="Tools.SelectBySurrounding" userdata="" /> 630 <on_check control="ShowSelectionBeam" />
631 <on_check control="RectangleSelectInclusive" /> 631 </menu_item_check>
632 </menu_item_check> 632 <menu_item_separator />
633 <menu_item_check bottom="-113" enabled="true" height="19" label="Show Hidden Selection" left="0" 633 <menu_item_check name="Snap to Grid" enabled="false"
634 mouse_opaque="true" name="Show Hidden Selection" width="250"> 634 label="Snap to Grid" shortcut="G">
635 <on_click function="Tools.ShowHiddenSelection" userdata="" /> 635 <on_click function="ToggleControl"
636 <on_check control="RenderHiddenSelections" /> 636 userdata="SnapEnabled" />
637 </menu_item_check> 637 <on_check control="SnapEnabled" />
638 <menu_item_check bottom="-132" enabled="true" height="19" 638 <on_enable function="Tools.EnableToolNotPie" />
639 label="Show Light Radius for Selection" left="0" mouse_opaque="true" 639 </menu_item_check>
640 name="Show Light Radius for Selection" width="250"> 640 <menu_item_call name="Snap Object XY to Grid" enabled="false"
641 <on_click function="Tools.ShowSelectionLightRadius" userdata="" /> 641 label="Snap Object XY to Grid" shortcut="shift|X">
642 <on_check control="RenderLightRadius" /> 642 <on_click function="Tools.SnapObjectXY" userdata="" />
643 </menu_item_check> 643 <on_enable function="Tools.EnableToolNotPie" />
644 <menu_item_check bottom="-151" enabled="true" height="19" label="Show Selection Beam" left="0" 644 </menu_item_call>
645 mouse_opaque="true" name="Show Selection Beam" width="250"> 645 <menu_item_call name="Use Selection for Grid" enabled="false"
646 <on_click function="ToggleControl" userdata="ShowSelectionBeam" /> 646 label="Use Selection for Grid" shortcut="shift|G">
647 <on_check control="ShowSelectionBeam" /> 647 <on_click function="Tools.UseSelectionForGrid" userdata="" />
648 </menu_item_check> 648 <on_enable function="SomethingSelected" />
649 <menu_item_separator bottom="-159" enabled="true" height="8" label="-----------" left="0" 649 </menu_item_call>
650 mouse_opaque="true" name="separator2" width="250" /> 650 <menu_item_call name="Grid Options..." enabled="false"
651 <menu_item_check bottom="-178" enabled="false" height="19" label="Snap to Grid" left="0" 651 label="Grid Options..." shortcut="control|shift|B">
652 mouse_opaque="true" name="Snap to Grid" shortcut="G" width="250"> 652 <on_click function="ShowFloater" userdata="grid options" />
653 <on_click function="ToggleControl" userdata="SnapEnabled" /> 653 <on_enable function="Tools.EnableToolNotPie" />
654 <on_check control="SnapEnabled" /> 654 </menu_item_call>
655 <on_enable function="Tools.EnableToolNotPie" /> 655 <menu_item_separator />
656 </menu_item_check> 656 <menu_item_check name="Edit Linked Parts" enabled="false"
657 <menu_item_call bottom="-197" enabled="false" height="19" label="Snap Object XY to Grid" 657 label="Edit Linked Parts" shortcut="">
658 left="0" mouse_opaque="true" name="Snap Object XY to Grid" 658 <on_click function="ToggleControl" userdata="EditLinkedParts" />
659 shortcut="shift|X" width="250"> 659 <on_click function="Tools.EditLinkedParts" userdata="" />
660 <on_click function="Tools.SnapObjectXY" userdata="" /> 660 <on_check control="EditLinkedParts" />
661 <on_enable function="Tools.EnableToolNotPie" /> 661 <on_enable function="Tools.EnableToolNotPie" />
662 </menu_item_call> 662 </menu_item_check>
663 <menu_item_call bottom="-216" enabled="false" height="19" label="Use Selection for Grid" 663 <menu_item_call name="Link" enabled="false" label="Link"
664 left="0" mouse_opaque="true" name="Use Selection for Grid" 664 shortcut="control|L">
665 shortcut="shift|G" width="250"> 665 <on_click function="Tools.Link" userdata="" />
666 <on_click function="Tools.UseSelectionForGrid" userdata="" /> 666 <on_enable function="Tools.EnableLink" />
667 <on_enable function="SomethingSelected" /> 667 </menu_item_call>
668 </menu_item_call> 668 <menu_item_call name="Unlink" enabled="false" label="Unlink"
669 <menu_item_call bottom="-235" enabled="false" height="19" label="Grid Options..." left="0" 669 shortcut="control|shift|L">
670 mouse_opaque="true" name="Grid Options..." shortcut="control|shift|B" 670 <on_click function="Tools.Unlink" userdata="" />
671 width="250"> 671 <on_enable function="Tools.EnableUnlink" />
672 <on_click function="ShowFloater" userdata="grid options" /> 672 </menu_item_call>
673 <on_enable function="Tools.EnableToolNotPie" /> 673 <menu_item_separator />
674 </menu_item_call> 674 <menu_item_call name="Focus on Selection" enabled="false"
675 <menu_item_separator bottom="-243" enabled="true" height="8" label="-----------" left="0" 675 label="Focus on Selection" shortcut="H">
676 mouse_opaque="true" name="separator3" width="250" /> 676 <on_click function="Tools.LookAtSelection" userdata="focus" />
677 <menu_item_check bottom="" enabled="false" height="" label="Edit Linked Parts" left="" 677 <on_enable function="Tools.SomethingSelectedNoHUD" />
678 mouse_opaque="true" name="Edit Linked Parts" shortcut="" width=""> 678 </menu_item_call>
679 <on_click function="ToggleControl" userdata="EditLinkedParts" /> 679 <menu_item_call name="Zoom to Selection" enabled="false"
680 <on_click function="Tools.EditLinkedParts" userdata="" /> 680 label="Zoom to Selection" shortcut="shift|H">
681 <on_check control="EditLinkedParts" /> 681 <on_click function="Tools.LookAtSelection" userdata="zoom" />
682 <on_enable function="Tools.EnableToolNotPie" /> 682 <on_enable function="Tools.SomethingSelectedNoHUD" />
683 </menu_item_check> 683 </menu_item_call>
684 <menu_item_call bottom="-262" enabled="false" height="19" label="Link" left="0" 684 <menu_item_call name="Menu Object Take" enabled="false"
685 mouse_opaque="true" name="Link" shortcut="control|L" width="250"> 685 label="Buy Object" visible="false">
686 <on_click function="Tools.Link" userdata="" /> 686 <on_click function="Tools.BuyOrTake" userdata="" />
687 <on_enable function="Tools.EnableLink" /> 687 <on_enable function="Tools.EnableBuyOrTake" userdata="Buy,Take" />
688 </menu_item_call> 688 </menu_item_call>
689 <menu_item_call bottom="-281" enabled="false" height="19" label="Unlink" left="0" 689 <menu_item_call name="Take Copy" enabled="false"
690 mouse_opaque="true" name="Unlink" shortcut="control|shift|L" width="250"> 690 label="Take Copy">
691 <on_click function="Tools.Unlink" userdata="" /> 691 <on_click function="Tools.TakeCopy" userdata="" />
692 <on_enable function="Tools.EnableUnlink" /> 692 <on_enable function="Tools.EnableTakeCopy" />
693 </menu_item_call> 693 </menu_item_call>
694 <menu_item_separator bottom="-289" enabled="true" height="8" label="-----------" left="0" 694 <menu_item_call name="Return..." enabled="false"
695 mouse_opaque="true" name="separator4" width="250" /> 695 label="Return Object">
696 <menu_item_call bottom="-308" enabled="false" height="19" label="Focus on Selection" left="0" 696 <on_click function="Object.Return" />
697 mouse_opaque="true" name="Focus on Selection" shortcut="H" width="250"> 697 <on_enable function="Object.EnableReturn" />
698 <on_click function="Tools.LookAtSelection" userdata="focus" /> 698 </menu_item_call>
699 <on_enable function="Tools.SomethingSelectedNoHUD" /> 699 <menu_item_call name="Save Object Back to My Inventory"
700 </menu_item_call> 700 enabled="false"
701 <menu_item_call bottom="-327" enabled="false" height="19" label="Zoom to Selection" left="0" 701 label="Save Object Back to My Inventory">
702 mouse_opaque="true" name="Zoom to Selection" shortcut="shift|H" width="250"> 702 <on_click function="Tools.SaveToInventory" userdata="" />
703 <on_click function="Tools.LookAtSelection" userdata="zoom" /> 703 <on_enable function="Tools.EnableSaveToInventory" />
704 <on_enable function="Tools.SomethingSelectedNoHUD" /> 704 </menu_item_call>
705 </menu_item_call> 705 <menu_item_call name="Save Object Back to Object Contents"
706 <menu_item_call bottom="-346" enabled="false" height="19" label="Buy Object" left="0" 706 enabled="false"
707 mouse_opaque="true" name="Menu Object Take" visible="false" width="250"> 707 label="Save Object Back to Object Contents">
708 <on_click function="Tools.BuyOrTake" userdata="" /> 708 <on_click function="Tools.SaveToObjectInventory" userdata="" />
709 <on_enable function="Tools.EnableBuyOrTake" userdata="Buy,Take" /> 709 <on_enable function="Tools.EnableSaveToObjectInventory" />
710 </menu_item_call> 710 </menu_item_call>
711 <menu_item_call bottom="-365" enabled="false" height="19" label="Take Copy" left="0" 711 <menu_item_separator />
712 mouse_opaque="true" name="Take Copy" width="250"> 712 <menu_item_call name="Show Script Warning/Error Window"
713 <on_click function="Tools.TakeCopy" userdata="" /> 713 label="Show Script Warning/Error Window">
714 <on_enable function="Tools.EnableTakeCopy" /> 714 <on_click function="ShowFloater" userdata="script errors" />
715 </menu_item_call> 715 </menu_item_call>
716 <menu_item_call bottom="-384" enabled="false" height="19" 716 <menu_item_call name="Recompile Scripts in Selection"
717 label="Save Object Back to My Inventory" left="0" mouse_opaque="true" 717 enabled="false"
718 name="Save Object Back to My Inventory" width="250"> 718 label="Recompile Scripts in Selection">
719 <on_click function="Tools.SaveToInventory" userdata="" /> 719 <on_click function="Tools.SelectedScriptAction"
720 <on_enable function="Tools.EnableSaveToInventory" /> 720 userdata="compile" />
721 </menu_item_call> 721 <on_enable function="EditableSelected" />
722 <menu_item_call bottom="-403" enabled="false" height="19" 722 </menu_item_call>
723 label="Save Object Back to Object Contents" left="0" mouse_opaque="true" 723 <menu_item_call name="Reset Scripts in Selection" enabled="false"
724 name="Save Object Back to Object Contents" width="250"> 724 label="Reset Scripts in Selection">
725 <on_click function="Tools.SaveToObjectInventory" userdata="" /> 725 <on_click function="Tools.SelectedScriptAction"
726 <on_enable function="Tools.EnableSaveToObjectInventory" /> 726 userdata="reset" />
727 </menu_item_call> 727 <on_enable function="EditableSelected" />
728 <menu_item_separator bottom="-411" enabled="true" height="8" label="-----------" left="0" 728 </menu_item_call>
729 mouse_opaque="true" name="separator6" width="250" /> 729 <menu_item_call name="Set Scripts to Running in Selection"
730 <menu_item_call bottom="-430" enabled="true" height="19" 730 enabled="false"
731 label="Show Script Warning/Error Window" left="0" mouse_opaque="true" 731 label="Set Scripts to Running in Selection">
732 name="Show Script Warning/Error Window" width="250"> 732 <on_click function="Tools.SelectedScriptAction"
733 <on_click function="ShowFloater" userdata="script errors" /> 733 userdata="start" />
734 </menu_item_call> 734 <on_enable function="EditableSelected" />
735 <menu_item_call bottom="-449" enabled="false" height="19" 735 </menu_item_call>
736 label="Recompile Scripts in Selection" left="0" mouse_opaque="true" 736 <menu_item_call name="Set Scripts to Not Running in Selection"
737 name="Recompile Scripts in Selection" width="250"> 737 enabled="false"
738 <on_click function="Tools.SelectedScriptAction" userdata="compile" /> 738 label="Set Scripts to Not Running in Selection">
739 <on_enable function="EditableSelected" /> 739 <on_click function="Tools.SelectedScriptAction"
740 </menu_item_call> 740 userdata="stop" />
741 <menu_item_call bottom="-468" enabled="false" height="19" label="Reset Scripts in Selection" 741 <on_enable function="EditableSelected" />
742 left="0" mouse_opaque="true" name="Reset Scripts in Selection" width="250"> 742 </menu_item_call>
743 <on_click function="Tools.SelectedScriptAction" userdata="reset" /> 743 <menu_item_call name="Set permissions on selected task inventory"
744 <on_enable function="EditableSelected" /> 744 enabled="false"
745 </menu_item_call> 745 label="Set permissions on selected task inventory">
746 <menu_item_call bottom="-487" enabled="false" height="19" 746 <on_click function="Tools.SetBulkPerms" userdata="" />
747 label="Set Scripts to Running in Selection" left="0" mouse_opaque="true" 747 <on_enable function="EditableSelected" />
748 name="Set Scripts to Running in Selection" width="250"> 748 </menu_item_call>
749 <on_click function="Tools.SelectedScriptAction" userdata="start" /> 749 </menu>
750 <on_enable function="EditableSelected" /> 750
751 </menu_item_call> 751
752 <menu_item_call bottom="-506" enabled="false" height="19" 752
753 label="Set Scripts to Not Running in Selection" left="0" 753 <!-- HELP -->
754 mouse_opaque="true" name="Set Scripts to Not Running in Selection" 754
755 width="250"> 755 <menu name="Help" create_jump_keys="true" label="Help"
756 <on_click function="Tools.SelectedScriptAction" userdata="stop" /> 756 opaque="true" tear_off="true">
757 <on_enable function="EditableSelected" /> 757 <menu_item_call name="Second Life Help" label="Second Life Help"
758 </menu_item_call> 758 shortcut="F1">
759 </menu> 759 <on_click function="ShowFloater" userdata="help f1" />
760 <menu bottom="219" create_jump_keys="true" drop_shadow="true" enabled="true" 760 </menu_item_call>
761 height="317" label="Help" left="227" mouse_opaque="false" name="Help" 761 <menu_item_call name="Tutorial" label="Tutorial">
762 opaque="true" tear_off="true" width="166"> 762 <on_click function="ShowFloater" userdata="help tutorial" />
763 <menu_item_call bottom="-29" enabled="true" height="19" label="Second Life Help" left="0" 763 </menu_item_call>
764 mouse_opaque="true" name="Second Life Help" shortcut="F1" width="166"> 764 <menu_item_separator />
765 <on_click function="ShowFloater" userdata="help f1" /> 765 <menu_item_call name="Official Linden Blog..."
766 </menu_item_call> 766 label="Official Linden Blog...">
767 <menu_item_call bottom="-48" enabled="true" height="19" label="Tutorial" left="0" 767 <on_click function="PromptShowURL"
768 mouse_opaque="true" name="Tutorial" width="166"> 768 userdata="WebLaunchSupportWiki,http://blog.secondlife.com/" />
769 <on_click function="ShowFloater" userdata="help tutorial" /> 769 </menu_item_call>
770 </menu_item_call> 770 <menu_item_separator />
771 <menu_item_separator bottom="-75" enabled="true" height="8" label="-----------" left="0" 771 <menu_item_call name="Scripting Guide..."
772 mouse_opaque="true" name="separator" width="166" /> 772 label="Scripting Guide...">
773 <menu_item_call bottom="-94" enabled="true" height="19" label="Official Linden Blog..." 773 <on_click function="PromptShowFile"
774 left="0" mouse_opaque="true" name="Official Linden Blog..." width="166"> 774 userdata="WebLaunchLSLGuide,lsl_guide.html" />
775 <on_click function="PromptShowURL" 775 </menu_item_call>
776 userdata="WebLaunchSupportWiki,http://blog.secondlife.com/" /> 776 <menu_item_call name="Scripting Portal..."
777 </menu_item_call> 777 label="Scripting Portal...">
778 <menu_item_separator bottom="-102" enabled="true" height="8" label="-----------" left="0" 778 <on_click function="PromptShowURL"
779 mouse_opaque="true" name="separator2" width="166" /> 779 userdata="WebLaunchLSLWiki,http://wiki.secondlife.com/wiki/LSL_Portal" />
780 <menu_item_call bottom="-121" enabled="true" height="19" label="Scripting Guide..." left="0" 780 </menu_item_call>
781 mouse_opaque="true" name="Scripting Guide..." width="166"> 781 <menu_item_separator />
782 <on_click function="PromptShowFile" userdata="WebLaunchLSLGuide,lsl_guide.html" /> 782 <menu_item_call name="Report Abuse..." label="Report Abuse...">
783 </menu_item_call> 783 <on_click function="ShowFloater"
784 <menu_item_call bottom="-140" enabled="true" height="19" label="Scripting Portal..." left="0" 784 userdata="complaint reporter" />
785 mouse_opaque="true" name="Scripting Portal..." width="166"> 785 </menu_item_call>
786 <on_click function="PromptShowURL" 786 <menu_item_call name="Bumps, Pushes &amp;amp; Hits..."
787 userdata="WebLaunchLSLWiki,http://wiki.secondlife.com/wiki/LSL_Portal" /> 787 label="Bumps, Pushes &amp; Hits...">
788 </menu_item_call> 788 <on_click function="ShowFloater" userdata="mean events" />
789 <menu_item_separator bottom="-148" enabled="true" height="8" label="-----------" left="0" 789 </menu_item_call>
790 mouse_opaque="true" name="separator3" width="166" /> 790 <menu_item_call name="Lag Meter" label="Lag Meter">
791 <menu_item_call bottom="-194" enabled="true" height="19" label="Report Abuse..." left="0" 791 <on_click function="ShowFloater" userdata="lag meter" />
792 mouse_opaque="true" name="Report Abuse..." width="166"> 792 </menu_item_call>
793 <on_click function="ShowFloater" userdata="complaint reporter" /> 793 <menu_item_separator />
794 </menu_item_call> 794 <menu name="Bug Reporting" create_jump_keys="true"
795 <menu_item_call bottom="-213" enabled="true" height="19" label="Bumps, Pushes &amp; Hits..." 795 label="Bug Reporting" opaque="true" tear_off="true">
796 left="0" mouse_opaque="true" name="Bumps, Pushes &amp;amp; Hits..." 796 <menu_item_call name="Public Issue Tracker..."
797 width="166"> 797 label="Public Issue Tracker...">
798 <on_click function="ShowFloater" userdata="mean events" /> 798 <on_click function="PromptShowURL"
799 </menu_item_call> 799 userdata="WebLaunchPublicIssue,http://jira.secondlife.com" />
800 <menu_item_call label="Lag Meter" name="Lag Meter"> 800 </menu_item_call>
801 <on_click function="ShowFloater" userdata="lag meter" /> 801 <menu_item_call name="Publc Issue Tracker Help..."
802 </menu_item_call> 802 label="Public Issue Tracker Help...">
803 <menu_item_separator bottom="-411" enabled="true" height="8" label="-----------" left="0" 803 <on_click function="PromptShowURL"
804 mouse_opaque="true" name="separator7" width="250" /> 804 userdata="WebLaunchPublicIssueHelp,http://wiki.secondlife.com/wiki/Issue_tracker" />
805 <menu bottom="-554" create_jump_keys="true" drop_shadow="true" enabled="true" 805 </menu_item_call>
806 height="109" label="Bug Reporting" left="0" mouse_opaque="false" 806 <menu_item_separator />
807 name="Bug Reporting" opaque="true" tear_off="true" width="118"> 807 <menu_item_call name="Bug Reporing 101..."
808 <menu_item_call bottom="-94" enabled="true" height="19" label="Public Issue Tracker..." 808 label="Bug Reporting 101...">
809 left="0" mouse_opaque="true" name="Public Issue Tracker..." width="166"> 809 <on_click function="PromptShowURL"
810 <on_click function="PromptShowURL" 810 userdata="WebLaunchBugReport101,http://wiki.secondlife.com/wiki/Bug_Reporting_101" />
811 userdata="WebLaunchPublicIssue,http://jira.secondlife.com" /> 811 </menu_item_call>
812 </menu_item_call> 812 <menu_item_call name="Security Issues..."
813 <menu_item_call bottom="-94" enabled="true" height="19" label="Public Issue Tracker Help..." 813 label="Security Issues...">
814 left="0" mouse_opaque="true" name="Publc Issue Tracker Help..." width="166"> 814 <on_click function="PromptShowURL"
815 <on_click function="PromptShowURL" 815 userdata="WebLaunchSecurityIssues,http://wiki.secondlife.com/wiki/Security_issues" />
816 userdata="WebLaunchPublicIssueHelp,http://wiki.secondlife.com/wiki/Issue_tracker" /> 816 </menu_item_call>
817 </menu_item_call> 817 <menu_item_call name="QA Wiki..." label="QA Wiki...">
818 <menu_item_separator bottom="-411" enabled="true" height="8" label="-----------" left="0" 818 <on_click function="PromptShowURL"
819 mouse_opaque="true" name="separator7" width="250" /> 819 userdata="WebLaunchQAWiki,http://wiki.secondlife.com/wiki/QA_Portal" />
820 <menu_item_call bottom="-94" enabled="true" height="19" label="Bug Reporting 101..." left="0" 820 </menu_item_call>
821 mouse_opaque="true" name="Bug Reporing 101..." width="166"> 821 <menu_item_separator />
822 <on_click function="PromptShowURL" 822 <menu_item_call name="Report Bug..." label="Report Bug...">
823 userdata="WebLaunchBugReport101,http://wiki.secondlife.com/wiki/Bug_Reporting_101" /> 823 <on_click function="PromptShowURL"
824 </menu_item_call> 824 userdata="WebLaunchPublicIssue,http://jira.secondlife.com" />
825 <menu_item_call bottom="-94" enabled="true" height="19" label="Security Issues..." left="0" 825 </menu_item_call>
826 mouse_opaque="true" name="Security Issues..." width="166"> 826 </menu>
827 <on_click function="PromptShowURL" 827 <menu_item_separator />
828 userdata="WebLaunchSecurityIssues,http://wiki.secondlife.com/wiki/Security_issues" /> 828 <menu_item_call name="Release Notes..."
829 </menu_item_call> 829 label="Release Notes...">
830 <menu_item_call bottom="-94" enabled="true" height="19" label="QA Wiki..." left="0" 830 <on_click function="PromptShowFile"
831 mouse_opaque="true" name="QA Wiki..." width="166"> 831 userdata="WebLaunchReleaseNotes,releasenotes.txt" />
832 <on_click function="PromptShowURL" 832 </menu_item_call>
833 userdata="WebLaunchQAWiki,http://wiki.secondlife.com/wiki/QA_Portal" /> 833 <menu_item_separator />
834 </menu_item_call> 834 <menu_item_call name="About Second Life..."
835 <menu_item_separator bottom="-411" enabled="true" height="8" label="-----------" left="0" 835 label="About Second Life...">
836 mouse_opaque="true" name="separator9" width="250" /> 836 <on_click function="ShowFloater" userdata="about" />
837 <menu_item_call bottom="-240" enabled="true" height="19" label="Report Bug..." left="0" 837 </menu_item_call>
838 mouse_opaque="true" name="Report Bug..." width="166"> 838 </menu>
839 <on_click function="PromptShowURL" 839
840 userdata="WebLaunchPublicIssue,http://jira.secondlife.com" /> 840
841 </menu_item_call> 841
842 </menu> 842 <!-- ADVANCED -->
843 <menu_item_separator bottom="-221" enabled="true" height="8" label="-----------" left="0" 843
844 mouse_opaque="true" name="separator5" width="166" /> 844 <menu name="Advanced" drop_shadow="true"
845 <menu_item_call bottom="-121" enabled="true" height="19" label="Release Notes..." left="0" 845 opaque="true" tear_off="true">
846 mouse_opaque="true" name="Release Notes..." width="166"> 846
847 <on_click function="PromptShowFile" userdata="WebLaunchReleaseNotes,releasenotes.txt" /> 847
848 </menu_item_call> 848 <!-- CONSOLES -->
849 <menu_item_separator bottom="-294" enabled="true" height="8" label="-----------" left="0" 849
850 mouse_opaque="true" name="separator6" width="166" /> 850 <menu name="Consoles" drop_shadow="true"
851 <menu_item_call bottom="-313" enabled="true" height="19" label="About Second Life..." left="0" 851 opaque="true" tear_off="true">
852 mouse_opaque="true" name="About Second Life..." width="166"> 852 <menu_item_check name="Frame Console" label="Frame Console"
853 <on_click function="ShowFloater" userdata="about" /> 853 shortcut="control|shift|2">
854 </menu_item_call> 854 <on_click function="Advanced.ToggleConsole"
855 </menu> 855 userdata="frame" />
856 <on_check function="Advanced.CheckConsole"
857 userdata="frame" />
858 </menu_item_check>
859 <menu_item_check name="Texture Console" label="Texture Console"
860 shortcut="control|shift|3">
861 <on_click function="Advanced.ToggleConsole"
862 userdata="texture" />
863 <on_check function="Advanced.CheckConsole"
864 userdata="texture" />
865 </menu_item_check>
866 <menu_item_check name="Debug Console" label="Debug Console"
867 shortcut="control|shift|4">
868 <on_click function="Advanced.ToggleConsole"
869 userdata="debug" />
870 <on_check function="Advanced.CheckConsole"
871 userdata="debug" />
872 </menu_item_check>
873 <menu_item_check name="Fast Timers" label="Fast Timers"
874 shortcut="control|shift|9">
875 <on_click function="Advanced.ToggleConsole"
876 userdata="fast timers" />
877 <on_check function="Advanced.CheckConsole"
878 userdata="fast timers" />
879 </menu_item_check>
880 <!-- Requires compiled-in support, I think?
881 <menu_item_check name="Memory" label="Memory"
882 shortcut="control|shift|0">
883 <on_click function="Advanced.ToggleConsole"
884 userdata="memory" />
885 <on_check function="Advanced.CheckConsole"
886 userdata="memory" />
887 </menu_item_check>
888 -->
889 <menu_item_separator />
890 <menu_item_call name="Region Info to Debug Console"
891 label="Region Info to Debug Console">
892 <on_click function="Advanced.DumpInfoToConsole"
893 userdata="region" />
894 </menu_item_call>
895 <menu_item_call name="Group Info to Debug Console"
896 label="Group Info to Debug Console">
897 <on_click function="Advanced.DumpInfoToConsole"
898 userdata="group" />
899 </menu_item_call>
900 <menu_item_call name="Capabilities Info to Debug Console"
901 label="Capabilities Info to Debug Console">
902 <on_click function="Advanced.DumpInfoToConsole"
903 userdata="capabilities" />
904 </menu_item_call>
905 </menu>
906
907
908 <menu_item_call name="Reload personal setting overrides"
909 label="Reload personal settings overrides"
910 shortcut="control|shift|F2">
911 <on_click function="Advanced.ReloadSettingsOverrides" userdata="" />
912 </menu_item_call>
913
914
915
916 <!-- HUD INFO -->
917
918 <menu name="HUD Info" drop_shadow="true"
919 opaque="true" tear_off="true">
920 <menu_item_check name="Velocity" label="Velocity">
921 <on_click function="Advanced.ToggleHUDInfo"
922 userdata="velocity" />
923 <on_check function="Advanced.CheckHUDInfo"
924 userdata="velocity" />
925 </menu_item_check>
926 <menu_item_check name="Camera" label="Camera">
927 <on_click function="Advanced.ToggleHUDInfo"
928 userdata="camera" />
929 <on_check function="Advanced.CheckHUDInfo"
930 userdata="camera" />
931 </menu_item_check>
932 <menu_item_check name="Wind" label="Wind">
933 <on_click function="Advanced.ToggleHUDInfo"
934 userdata="wind" />
935 <on_check function="Advanced.CheckHUDInfo"
936 userdata="wind" />
937 </menu_item_check>
938 <menu_item_check name="FOV" label="FOV">
939 <on_click function="Advanced.ToggleHUDInfo"
940 userdata="fov" />
941 <on_check function="Advanced.CheckHUDInfo"
942 userdata="fov" />
943 </menu_item_check>
944 </menu>
945
946
947 <menu_item_separator />
948
949 <menu_item_check name="High-res Snapshot"
950 label="High-res Snapshot">
951 <on_click function="ToggleControl"
952 userdata="HighResSnapshot" />
953 <on_check control="HighResSnapshot" />
954 </menu_item_check>
955 <menu_item_check name="Quiet Snapshots to Disk"
956 label="Quiet Snapshots to Disk">
957 <on_click function="ToggleControl"
958 userdata="QuietSnapshotsToDisk" />
959 <on_check control="QuietSnapshotsToDisk" />
960 </menu_item_check>
961 <menu_item_check name="Compress Snapshots to Disk"
962 label="Compress Snapshots to Disk">
963 <on_click function="ToggleControl"
964 userdata="CompressSnapshotsToDisk" />
965 <on_check control="CompressSnapshotsToDisk" />
966 </menu_item_check>
967 <menu_item_check name="Show Mouselook Crosshairs"
968 label="Show Mouselook Crosshairs">
969 <on_click function="ToggleControl"
970 userdata="ShowCrosshairs" />
971 <on_check control="ShowCrosshairs" />
972 </menu_item_check>
973 <menu_item_check name="Debug Permissions"
974 label="Debug Permissions">
975 <on_click function="ToggleControl"
976 userdata="DebugPermissions" />
977 <on_check control="DebugPermissions" />
978 </menu_item_check>
979 <menu_item_call name="Clear Group Cache"
980 label="Clear Group Cache">
981 <on_click function="Advanced.ClearGroupCache"
982 userdata="" />
983 </menu_item_call>
984 <menu_item_separator />
985
986
987
988 <!-- RENDERING -->
989
990 <menu name="Rendering" drop_shadow="true"
991 opaque="true" tear_off="true">
992
993 <!-- TYPES -->
994 <menu name="Types" drop_shadow="true"
995 opaque="true" tear_off="true">
996 <menu_item_check name="Simple" label="Simple"
997 shortcut="control|alt|shift|1">
998 <on_click function="Advanced.ToggleRenderType"
999 userdata="simple" />
1000 <on_check function="Advanced.CheckRenderType"
1001 userdata="simple" />
1002 </menu_item_check>
1003 <menu_item_check name="Alpha" label="Alpha"
1004 shortcut="control|alt|shift|2">
1005 <on_click function="Advanced.ToggleRenderType"
1006 userdata="alpha" />
1007 <on_check function="Advanced.CheckRenderType"
1008 userdata="alpha" />
1009 </menu_item_check>
1010 <menu_item_check name="Tree" label="Tree"
1011 shortcut="control|alt|shift|3">
1012 <on_click function="Advanced.ToggleRenderType"
1013 userdata="tree" />
1014 <on_check function="Advanced.CheckRenderType"
1015 userdata="tree" />
1016 </menu_item_check>
1017 <menu_item_check name="Character" label="Character"
1018 shortcut="control|alt|shift|4">
1019 <on_click function="Advanced.ToggleRenderType"
1020 userdata="avatar" />
1021 <on_check function="Advanced.CheckRenderType"
1022 userdata="avatar" />
1023 </menu_item_check>
1024 <menu_item_check name="SurfacePatch" label="SurfacePatch"
1025 shortcut="control|alt|shift|5">
1026 <on_click function="Advanced.ToggleRenderType"
1027 userdata="terrain" />
1028 <on_check function="Advanced.CheckRenderType"
1029 userdata="terrain" />
1030 </menu_item_check>
1031 <menu_item_check name="Sky" label="Sky"
1032 shortcut="control|alt|shift|6">
1033 <on_click function="Advanced.ToggleRenderType"
1034 userdata="sky" />
1035 <on_check function="Advanced.CheckRenderType"
1036 userdata="sky" />
1037 </menu_item_check>
1038 <menu_item_check name="Water" label="Water"
1039 shortcut="control|alt|shift|7">
1040 <on_click function="Advanced.ToggleRenderType"
1041 userdata="water" />
1042 <on_check function="Advanced.CheckRenderType"
1043 userdata="water" />
1044 </menu_item_check>
1045 <menu_item_check name="Ground" label="Ground"
1046 shortcut="control|alt|shift|8">
1047 <on_click function="Advanced.ToggleRenderType"
1048 userdata="ground" />
1049 <on_check function="Advanced.CheckRenderType"
1050 userdata="ground" />
1051 </menu_item_check>
1052 <menu_item_check name="Volume" label="Volume"
1053 shortcut="control|alt|shift|9">
1054 <on_click function="Advanced.ToggleRenderType"
1055 userdata="volume" />
1056 <on_check function="Advanced.CheckRenderType"
1057 userdata="volume" />
1058 </menu_item_check>
1059 <menu_item_check name="Grass" label="Grass"
1060 shortcut="control|alt|shift|0">
1061 <on_click function="Advanced.ToggleRenderType"
1062 userdata="grass" />
1063 <on_check function="Advanced.CheckRenderType"
1064 userdata="grass" />
1065 </menu_item_check>
1066 <menu_item_check name="Clouds" label="Clouds"
1067 shortcut="control|alt|shift|-">
1068 <on_click function="Advanced.ToggleRenderType"
1069 userdata="clouds" />
1070 <on_check function="Advanced.CheckRenderType"
1071 userdata="clouds" />
1072 </menu_item_check>
1073 <menu_item_check name="Particles" label="Particles"
1074 shortcut="control|alt|shift|=">
1075 <on_click function="Advanced.ToggleRenderType"
1076 userdata="particles" />
1077 <on_check function="Advanced.CheckRenderType"
1078 userdata="particles" />
1079 </menu_item_check>
1080 <menu_item_check name="Bump" label="Bump"
1081 shortcut="control|alt|shift|\">
1082 <on_click function="Advanced.ToggleRenderType"
1083 userdata="bump" />
1084 <on_check function="Advanced.CheckRenderType"
1085 userdata="bump" />
1086 </menu_item_check>
1087 </menu>
1088
1089
1090 <!-- FEATURES -->
1091 <menu name="Features" drop_shadow="true"
1092 opaque="true" tear_off="true">
1093 <menu_item_check name="UI" label="UI"
1094 shortcut="control|alt|F1">
1095 <on_click function="Advanced.ToggleFeature"
1096 userdata="ui" />
1097 <on_check function="Advanced.CheckFeature"
1098 userdata="ui" />
1099 </menu_item_check>
1100 <menu_item_check name="Selected" label="Selected"
1101 shortcut="control|alt|F2">
1102 <on_click function="Advanced.ToggleFeature"
1103 userdata="selected" />
1104 <on_check function="Advanced.CheckFeature"
1105 userdata="selected" />
1106 </menu_item_check>
1107 <menu_item_check name="Highlighted" label="Highlighted"
1108 shortcut="control|alt|F3">
1109 <on_click function="Advanced.ToggleFeature"
1110 userdata="highlighted" />
1111 <on_check function="Advanced.CheckFeature"
1112 userdata="highlighted" />
1113 </menu_item_check>
1114 <menu_item_check name="Dynamic Textures" label="Dynamic Textures"
1115 shortcut="control|alt|F4">
1116 <on_click function="Advanced.ToggleFeature"
1117 userdata="dynamic textures" />
1118 <on_check function="Advanced.CheckFeature"
1119 userdata="dynamic textures" />
1120 </menu_item_check>
1121 <menu_item_check name="Foot Shadows" label="Foot Shadows"
1122 shortcut="control|alt|F5">
1123 <on_click function="Advanced.ToggleFeature"
1124 userdata="foot shadows" />
1125 <on_check function="Advanced.CheckFeature"
1126 userdata="foot shadows" />
1127 </menu_item_check>
1128 <menu_item_check name="Fog" label="Fog"
1129 shortcut="control|alt|F6">
1130 <on_click function="Advanced.ToggleFeature"
1131 userdata="fog" />
1132 <on_check function="Advanced.CheckFeature"
1133 userdata="fog" />
1134 </menu_item_check>
1135 <menu_item_check name="Palletized Textures"
1136 label="Palletized Textures"
1137 shortcut="control|alt|F7">
1138 <on_click function="Advanced.ToggleFeature"
1139 userdata="palette" />
1140 <on_check function="Advanced.CheckFeature"
1141 userdata="palette" />
1142 </menu_item_check>
1143 <menu_item_check name="Test FRInfo" label="Test FRInfo"
1144 shortcut="control|alt|F8">
1145 <on_click function="Advanced.ToggleFeature"
1146 userdata="fr info" />
1147 <on_check function="Advanced.CheckFeature"
1148 userdata="fr info" />
1149 </menu_item_check>
1150 <menu_item_check name="Flexible Objects"
1151 label="Flexible Objects"
1152 shortcut="control|alt|F9">
1153 <on_click function="Advanced.ToggleFeature"
1154 userdata="flexible" />
1155 <on_check function="Advanced.CheckFeature"
1156 userdata="flexible" />
1157 </menu_item_check>
1158 </menu>
1159
1160
1161 <!-- INFO DISPLAYS -->
1162 <menu name="Info Displays" drop_shadow="true"
1163 opaque="true" tear_off="true">
1164 <menu_item_check name="Verify" label="Verify">
1165 <on_click function="Advanced.ToggleInfoDisplay"
1166 userdata="verify" />
1167 <on_check function="Advanced.CheckInfoDisplay"
1168 userdata="verify" />
1169 </menu_item_check>
1170 <menu_item_check name="BBoxes" label="BBoxes">
1171 <on_click function="Advanced.ToggleInfoDisplay"
1172 userdata="bboxes" />
1173 <on_check function="Advanced.CheckInfoDisplay"
1174 userdata="bboxes" />
1175 </menu_item_check>
1176 <menu_item_check name="Points" label="Points">
1177 <on_click function="Advanced.ToggleInfoDisplay"
1178 userdata="points" />
1179 <on_check function="Advanced.CheckInfoDisplay"
1180 userdata="points" />
1181 </menu_item_check>
1182 <menu_item_check name="Octree" label="Octree">
1183 <on_click function="Advanced.ToggleInfoDisplay"
1184 userdata="octree" />
1185 <on_check function="Advanced.CheckInfoDisplay"
1186 userdata="octree" />
1187 </menu_item_check>
1188 <menu_item_check name="Occlusion" label="Occlusion">
1189 <on_click function="Advanced.ToggleInfoDisplay"
1190 userdata="occlusion" />
1191 <on_check function="Advanced.CheckInfoDisplay"
1192 userdata="occlusion" />
1193 </menu_item_check>
1194 <menu_item_check name="Render Batches"
1195 label="Render Batches">
1196 <on_click function="Advanced.ToggleInfoDisplay"
1197 userdata="render batches" />
1198 <on_check function="Advanced.CheckInfoDisplay"
1199 userdata="render batches" />
1200 </menu_item_check>
1201 <menu_item_check name="Animated Textures"
1202 label="Animated Textures">
1203 <on_click function="Advanced.ToggleInfoDisplay"
1204 userdata="texture anim" />
1205 <on_check function="Advanced.CheckInfoDisplay"
1206 userdata="texture anim" />
1207 </menu_item_check>
1208 <menu_item_check name="Texture Priority"
1209 label="Texture Priority">
1210 <on_click function="Advanced.ToggleInfoDisplay"
1211 userdata="texture priority" />
1212 <on_check function="Advanced.CheckInfoDisplay"
1213 userdata="texture priority" />
1214 </menu_item_check>
1215 <menu_item_check name="Avatar Rendering Cost"
1216 label="Avatar Rendering Cost">
1217 <on_click function="Advanced.ToggleInfoDisplay"
1218 userdata="shame" />
1219 <on_check function="Advanced.CheckInfoDisplay"
1220 userdata="shame" />
1221 </menu_item_check>
1222 <menu_item_check name="Texture Area (sqrt(A))"
1223 label="Texture Area (sqrt(A))">
1224 <on_click function="Advanced.ToggleInfoDisplay"
1225 userdata="texture area" />
1226 <on_check function="Advanced.CheckInfoDisplay"
1227 userdata="texture area" />
1228 </menu_item_check>
1229 <menu_item_check name="Face Area (sqrt(A))"
1230 label="Face Area (sqrt(A))">
1231 <on_click function="Advanced.ToggleInfoDisplay"
1232 userdata="face area" />
1233 <on_check function="Advanced.CheckInfoDisplay"
1234 userdata="face area" />
1235 </menu_item_check>
1236 <menu_item_check name="Pick Render" label="Pick Render">
1237 <on_click function="Advanced.ToggleInfoDisplay"
1238 userdata="picking" />
1239 <on_check function="Advanced.CheckInfoDisplay"
1240 userdata="picking" />
1241 </menu_item_check>
1242 <menu_item_check name="Lights" label="Lights">
1243 <on_click function="Advanced.ToggleInfoDisplay"
1244 userdata="lights" />
1245 <on_check function="Advanced.CheckInfoDisplay"
1246 userdata="lights" />
1247 </menu_item_check>
1248 <menu_item_check name="Particles" label="Particles">
1249 <on_click function="Advanced.ToggleInfoDisplay"
1250 userdata="particles" />
1251 <on_check function="Advanced.CheckInfoDisplay"
1252 userdata="particles" />
1253 </menu_item_check>
1254 <menu_item_check name="Composition"
1255 label="Composition">
1256 <on_click function="Advanced.ToggleInfoDisplay"
1257 userdata="composition" />
1258 <on_check function="Advanced.CheckInfoDisplay"
1259 userdata="composition" />
1260 </menu_item_check>
1261 <menu_item_check name="Glow" label="Glow">
1262 <on_click function="Advanced.ToggleInfoDisplay"
1263 userdata="glow" />
1264 <on_check function="Advanced.CheckInfoDisplay"
1265 userdata="glow" />
1266 </menu_item_check>
1267 <menu_item_check name="Show Depth Buffer"
1268 label="Show Depth Buffer">
1269 <on_click function="ToggleControl"
1270 userdata="ShowDepthBuffer" />
1271 <on_check control="ShowDepthBuffer" />
1272 </menu_item_check>
1273 <menu_item_check name="Show Select Buffer"
1274 label="Show Select Buffer">
1275 <on_click function="Advanced.ToggleSelectBuffer"
1276 userdata="" />
1277 <on_check function="Advanced.CheckSelectBuffer"
1278 userdata="" />
1279 </menu_item_check>
1280 <menu_item_check name="Vectorize Perf Test"
1281 label="Vectorize Perf Test">
1282 <on_click function="ToggleControl"
1283 userdata="VectorizePerfTest" />
1284 <on_check control="VectorizePerfTest" />
1285 </menu_item_check>
1286 </menu>
1287
1288
1289 <!-- RENDER TESTS -->
1290 <menu name="Render Tests" drop_shadow="true"
1291 opaque="true" tear_off="true">
1292 <menu_item_check name="Camera Offset" label="Camera Offset">
1293 <on_click function="ToggleControl"
1294 userdata="CameraOffset" />
1295 <on_check control="CameraOffset" />
1296 </menu_item_check>
1297 <menu_item_check name="Randomize Framerate"
1298 label="Randomize Framerate">
1299 <on_click function="Advanced.ToggleRandomizeFramerate"
1300 userdata="" />
1301 <on_check function="Advanced.CheckRandomizeFramerate"
1302 userdata="" />
1303 </menu_item_check>
1304 <menu_item_check name="Periodic Slow Frame"
1305 label="Periodic Slow Frame">
1306 <on_click function="Advanced.TogglePeriodicSlowFrame"
1307 userdata="" />
1308 <on_check function="Advanced.CheckPeriodicSlowFrame"
1309 userdata="" />
1310 </menu_item_check>
1311 <menu_item_check name="Frame Test" label="Frame Test">
1312 <on_click function="Advanced.ToggleFrameTest"
1313 userdata="" />
1314 <on_check function="Advanced.CheckFrameTest"
1315 userdata="" />
1316 </menu_item_check>
1317 </menu>
1318
1319
1320 <menu_item_separator />
1321
1322 <menu_item_check name="Axes" label="Axes">
1323 <on_click function="ToggleControl" userdata="ShowAxes" />
1324 <on_check control="ShowAxes" />
1325 </menu_item_check>
1326
1327 <menu_item_separator />
1328
1329 <menu_item_check name="Hide Selected" label="Hide Selected">
1330 <on_click function="Advanced.ToggleHideSelectedObjects"
1331 userdata="" />
1332 <on_check function="Advanced.CheckHideSelectedObjects"
1333 userdata="" />
1334 </menu_item_check>
1335
1336 <menu_item_separator />
1337
1338 <menu_item_check name="Tangent Basis" label="Tangent Basis">
1339 <on_click function="ToggleControl"
1340 userdata="ShowTangentBasis" />
1341 <on_check control="ShowTangentBasis" />
1342 </menu_item_check>
1343 <menu_item_call name="Selected Texture Info"
1344 label="Selected Texture Info"
1345 shortcut="control|alt|shift|T">
1346 <on_click function="Advanced.SelectedTextureInfo"
1347 userdata="" />
1348 </menu_item_call>
1349 <menu_item_check name="Wireframe" label="Wireframe"
1350 shortcut="control|shift|R">
1351 <on_click function="Advanced.ToggleWireframe" userdata="" />
1352 <on_check function="Advanced.CheckWireframe" userdata="" />
1353 </menu_item_check>
1354 <menu_item_check name="Object-Object Occlusion"
1355 label="Object-Object Occlusion"
1356 shortcut="control|shift|O">
1357 <on_click function="ToggleControl"
1358 userdata="UseOcclusion" />
1359 <on_check control="UseOcclusion" />
1360 </menu_item_check>
1361 <menu_item_check name="Debug GL" label="Debug GL">
1362 <on_click function="ToggleControl"
1363 userdata="RenderDebugGL" />
1364 <on_check control="RenderDebugGL" />
1365 </menu_item_check>
1366 <menu_item_check name="Debug Pipeline" label="Debug Pipeline">
1367 <on_click function="ToggleControl"
1368 userdata="RenderDebugPipeline" />
1369 <on_check control="RenderDebugPipeline" />
1370 </menu_item_check>
1371 <menu_item_check name="Fast Alpha" label="Fast Alpha">
1372 <on_click function="ToggleControl"
1373 userdata="RenderFastAlpha" />
1374 <on_check control="RenderFastAlpha" />
1375 </menu_item_check>
1376 <menu_item_check name="Animate Textures"
1377 label="Animate Textures">
1378 <on_click function="ToggleControl"
1379 userdata="AnimateTextures" />
1380 <on_check control="AnimateTextures" />
1381 </menu_item_check>
1382 <menu_item_check name="Disable Textures"
1383 label="Disable Textures">
1384 <on_click function="Advanced.ToggleDisableTextures"
1385 userdata="" />
1386 <on_check function="Advanced.CheckDisableTextures"
1387 userdata="" />
1388 </menu_item_check>
1389 <!-- Disabled because it doesn't seem to be used anymore.
1390 <menu_item_check name="HTTP Get Textures"
1391 label="HTTP Get Textures">
1392 <on_click function="ToggleControl"
1393 userdata="ImagePipelineUseHTTP" />
1394 <on_check control="ImagePipelineUseHTTP" />
1395 </menu_item_check>
1396 -->
1397 <menu_item_check name="Run Multiple Threads"
1398 label="Run Multiple Threads">
1399 <on_click function="ToggleControl"
1400 userdata="RunMultipleThreads" />
1401 <on_check control="RunMultipleThreads" />
1402 </menu_item_check>
1403 <!-- Disabled because it doesn't work very well?
1404 <menu_item_check name="Dynamic Reflections"
1405 label="Dynamic Reflections">
1406 <on_click function="ToggleControl"
1407 userdata="RenderDynamicReflections" />
1408 <on_check control="RenderDynamicReflections" />
1409 </menu_item_check>
1410 -->
1411 <menu_item_check name="Cheesy Beacon" label="Cheesy Beacon">
1412 <on_click function="ToggleControl"
1413 userdata="CheesyBeacon" />
1414 <on_check control="CheesyBeacon" />
1415 </menu_item_check>
1416 </menu>
1417
1418
1419
1420 <!-- WORLD -->
1421
1422 <menu name="World" drop_shadow="true"
1423 opaque="true" tear_off="true">
1424 <!-- Disabled because you can't do this in Windlight.
1425 <menu_item_check name="Mouse Moves Sun"
1426 label="Mouse Moves Sun"
1427 shortcut="control|alt|M">
1428 <on_click function="ToggleControl" userdata="MouseSun" />
1429 <on_check control="MouseSun" />
1430 </menu_item_check>
1431 -->
1432 <menu_item_check name="Sim Sun Override"
1433 label="Sim Sun Override">
1434 <on_click function="ToggleControl"
1435 userdata="SkyOverrideSimSunPosition" />
1436 <on_check control="SkyOverrideSimSunPosition" />
1437 </menu_item_check>
1438 <menu_item_call name="Dump Scripted Camera"
1439 label="Dump Scripted Camera">
1440 <on_click function="Advanced.DumpScriptedCamera"
1441 userdata="" />
1442 </menu_item_call>
1443 <menu_item_check name="Fixed Weather" label="Fixed Weather">
1444 <on_click function="ToggleControl"
1445 userdata="FixedWeather" />
1446 <on_check control="FixedWeather" />
1447 </menu_item_check>
1448 <menu_item_call name="Dump Region Object Cache"
1449 label="Dump Region Object Cache">
1450 <on_click function="Advanced.DumpRegionObjectCache"
1451 userdata="" />
1452 </menu_item_call>
1453 </menu>
1454
1455
1456
1457 <!-- UI -->
1458
1459 <menu name="UI" drop_shadow="true"
1460 opaque="true" tear_off="true">
1461
1462 <menu_item_call name="SLURL Test" label="SLURL Test">
1463 <on_click function="Advanced.SLURLTest" userdata="" />
1464 </menu_item_call>
1465
1466 <!--
1467 *TODO: Make this a proper toggle item with the "X" indicator.
1468 1. Add a "Advanced.CheckEditableUI" function in llviewermenu.cpp.
1469 2. Change this surrounding menu_item_call to a menu_item_check.
1470 3. Uncomment the "on_check" line below.
1471 -->
1472 <menu_item_call name="Editable UI" label="Editable UI">
1473 <on_click function="Advanced.ToggleEditableUI" userdata="" />
1474 <!--
1475 <on_check function="Advanced.CheckEditableUI" userdata="" />
1476 -->
1477 </menu_item_call>
1478
1479 <menu_item_check name="Async Keystrokes"
1480 label="Async Keystrokes">
1481 <on_click function="Advanced.ToggleAsyncKeystrokes"
1482 userdata="" />
1483 <on_check function="Advanced.CheckAsyncKeystrokes"
1484 userdata="" />
1485 </menu_item_check>
1486 <menu_item_call name="Dump SelectMgr" label="Dump SelectMgr">
1487 <on_click function="Advanced.DumpSelectMgr" userdata="" />
1488 </menu_item_call>
1489 <menu_item_call name="Dump Inventory" label="Dump Inventory">
1490 <on_click function="Advanced.DumpInventory" userdata="" />
1491 </menu_item_call>
1492 <menu_item_call name="Dump Focus Holder"
1493 label="Dump Focus Holder"
1494 shortcut="control|alt|F">
1495 <on_click function="Advanced.DumpFocusHolder" userdata="" />
1496 </menu_item_call>
1497 <menu_item_call name="Print Selected Object Info"
1498 label="Print Selected Object Info"
1499 shortcut="control|shift|P">
1500 <on_click function="Advanced.PrintSelectedObjectInfo"
1501 userdata="" />
1502 </menu_item_call>
1503 <menu_item_call name="Print Agent Info"
1504 label="Print Agent Info" shortcut="shift|P">
1505 <on_click function="Advanced.PrintAgentInfo" userdata="" />
1506 </menu_item_call>
1507 <menu_item_call name="Memory Stats" label="Memory Stats"
1508 shortcut="control|alt|shift|M">
1509 <on_click function="Advanced.PrintTextureMemoryStats"
1510 userdata="" />
1511 </menu_item_call>
1512 <menu_item_check name="Double-Click Auto-Pilot"
1513 label="Double-Click Auto-Pilot">
1514 <on_click function="ToggleControl"
1515 userdata="DoubleClickAutoPilot" />
1516 <on_check control="DoubleClickAutoPilot" />
1517 </menu_item_check>
1518 <menu_item_separator />
1519 <menu_item_check name="Debug SelectMgr"
1520 label="Debug SelectMgr">
1521 <on_click function="Advanced.ToggleDebugSelectMgr"
1522 userdata="" />
1523 <on_check function="Advanced.CheckDebugSelectMgr"
1524 userdata="" />
1525 </menu_item_check>
1526 <menu_item_check name="Debug Clicks"
1527 label="Debug Click">
1528 <on_click function="Advanced.ToggleDebugClicks"
1529 userdata="" />
1530 <on_check function="Advanced.CheckDebugClicks"
1531 userdata="" />
1532 </menu_item_check>
1533 <menu_item_check name="Debug Views"
1534 label="Debug Views">
1535 <on_click function="Advanced.ToggleDebugViews"
1536 userdata="" />
1537 <on_check function="Advanced.CheckDebugViews"
1538 userdata="" />
1539 </menu_item_check>
1540 <menu_item_check name="Show Name Tooltips"
1541 label="Show Name Tooltips">
1542 <on_click function="Advanced.ToggleXUINameTooltips"
1543 userdata="" />
1544 <on_check function="Advanced.CheckXUINameTooltips"
1545 userdata="" />
1546 </menu_item_check>
1547 <menu_item_check name="Debug Mouse Events"
1548 label="Debug Mouse Events">
1549 <on_click function="Advanced.ToggleDebugMouseEvents"
1550 userdata="" />
1551 <on_check function="Advanced.CheckDebugMouseEvents"
1552 userdata="" />
1553 </menu_item_check>
1554 <menu_item_check name="Debug Keys"
1555 label="Debug Keys">
1556 <on_click function="Advanced.ToggleDebugKeys"
1557 userdata="" />
1558 <on_check function="Advanced.CheckDebugKeys"
1559 userdata="" />
1560 </menu_item_check>
1561 <menu_item_check name="Debug WindowProc"
1562 label="Debug WindowProc">
1563 <on_click function="Advanced.ToggleDebugWindowProc"
1564 userdata="" />
1565 <on_check function="Advanced.CheckDebugWindowProc"
1566 userdata="" />
1567 </menu_item_check>
1568 <menu_item_check name="Debug Text Editor Tips"
1569 label="Debug Text Editor Tips">
1570 <on_click function="Advanced.ToggleDebugTextEditorTips"
1571 userdata="" />
1572 <on_check function="Advanced.CheckDebugTextEditorTips"
1573 userdata="" />
1574 </menu_item_check>
1575 <menu_item_separator />
1576 <menu_item_check name="Show Time"
1577 label="Show Time">
1578 <on_click function="ToggleControl"
1579 userdata="DebugShowTime" />
1580 <on_check control="DebugShowTime" />
1581 </menu_item_check>
1582 <menu_item_check name="Show Render Info"
1583 label="Show Render Info">
1584 <on_click function="ToggleControl"
1585 userdata="DebugShowRenderInfo" />
1586 <on_check control="DebugShowRenderInfo" />
1587 </menu_item_check>
1588 <menu_item_check name="Show Color Under Cursor"
1589 label="Show Color Under Cursor">
1590 <on_click function="ToggleControl"
1591 userdata="DebugShowColor" />
1592 <on_check control="DebugShowColor" />
1593 </menu_item_check>
1594 </menu>
1595
1596
1597
1598 <!-- XUI -->
1599
1600 <menu name="XUI" drop_shadow="true"
1601 opaque="true" tear_off="true">
1602 <menu_item_call name="Floater Test..."
1603 label="Floater Test...">
1604 <on_click function="Advanced.ShowFloaterTest"
1605 userdata="" />
1606 </menu_item_call>
1607 <menu_item_call name="Export Menus to XML..."
1608 label="Export Menus to XML...">
1609 <on_click function="Advanced.ExportMenusToXML"
1610 userdata="" />
1611 </menu_item_call>
1612 <menu_item_call name="Edit UI..."
1613 label="Edit UI...">
1614 <on_click function="Advanced.EditUI"
1615 userdata="" />
1616 </menu_item_call>
1617 <menu_item_call name="Load from XML..."
1618 label="Load from XML...">
1619 <on_click function="Advanced.LoadUIFromXML"
1620 userdata="" />
1621 </menu_item_call>
1622 <menu_item_call name="Save to XML..."
1623 label="Save to XML...">
1624 <on_click function="Advanced.SaveUIToXML"
1625 userdata="" />
1626 </menu_item_call>
1627 <menu_item_check name="Show XUI Names"
1628 label="Show XUI Names">
1629 <on_click function="Advanced.ToggleXUINames"
1630 userdata="" />
1631 <on_check function="Advanced.CheckXUINames"
1632 userdata="" />
1633 </menu_item_check>
1634 </menu>
1635
1636
1637
1638 <!-- CHARACTER -->
1639
1640 <menu name="Character" drop_shadow="true"
1641 opaque="true" tear_off="true">
1642
1643 <menu name="Grab Baked Texture" drop_shadow="true"
1644 opaque="true" tear_off="true">
1645
1646 <menu_item_call name="Iris" enabled="false"
1647 label="Iris">
1648 <on_click function="Advanced.GrabBakedTexture"
1649 userdata="eyes" />
1650 <on_enable function="Advanced.EnableGrabBakedTexture"
1651 userdata="eyes" />
1652 </menu_item_call>
1653 <menu_item_call name="Head" enabled="false"
1654 label="Head">
1655 <on_click function="Advanced.GrabBakedTexture"
1656 userdata="head" />
1657 <on_enable function="Advanced.EnableGrabBakedTexture"
1658 userdata="head" />
1659 </menu_item_call>
1660 <menu_item_call name="Upper Body" enabled="false"
1661 label="Upper Body">
1662 <on_click function="Advanced.GrabBakedTexture"
1663 userdata="upper" />
1664 <on_enable function="Advanced.EnableGrabBakedTexture"
1665 userdata="upper" />
1666 </menu_item_call>
1667 <menu_item_call name="Lower Body" enabled="false"
1668 label="Lower Body">
1669 <on_click function="Advanced.GrabBakedTexture"
1670 userdata="lower" />
1671 <on_enable function="Advanced.EnableGrabBakedTexture"
1672 userdata="lower" />
1673 </menu_item_call>
1674 <menu_item_call name="Skirt" enabled="false"
1675 label="Skirt">
1676 <on_click function="Advanced.GrabBakedTexture"
1677 userdata="skirt" />
1678 <on_enable function="Advanced.EnableGrabBakedTexture"
1679 userdata="skirt" />
1680 </menu_item_call>
1681 </menu>
1682
1683 <!-- CHARACTER TESTS -->
1684 <menu name="Character Tests" drop_shadow="true"
1685 opaque="true" tear_off="true">
1686 <menu_item_check name="Go Away/AFK When Idle"
1687 label="Go Away/AFK When Idle">
1688 <on_click function="Advanced.ToggleAllowIdleAFK"
1689 userdata="" />
1690 <on_check function="Advanced.CheckAllowIdleAFK"
1691 userdata="" />
1692 </menu_item_check>
1693 <menu_item_call name="Appearance To XML"
1694 label="Appearance To XML">
1695 <on_click function="Advanced.ToggleAppearanceToXML"
1696 userdata="" />
1697 </menu_item_call>
1698 <menu_item_call name="Toggle Character Geometry"
1699 enabled="false"
1700 label="Toggle Character Geometry">
1701 <on_click function="Advanced.ToggleCharacterGeometry"
1702 userdata="" />
1703 <on_enable function="EnableGodCustomerService"
1704 userdata="" />
1705 </menu_item_call>
1706 <menu_item_call name="Test Male" label="Test Male">
1707 <on_click function="Advanced.TestMale" userdata="" />
1708 </menu_item_call>
1709 <menu_item_call name="Test Female" label="Test Female">
1710 <on_click function="Advanced.TestFemale" userdata="" />
1711 </menu_item_call>
1712 <menu_item_call name="Toggle PG" label="Toggle PG">
1713 <on_click function="Advanced.TogglePG" userdata="" />
1714 </menu_item_call>
1715 <menu_item_check name="Allow Select Avatar"
1716 label="Allow Select Avatar">
1717 <on_click function="Advanced.ToggleAllowSelectAvatar"
1718 userdata="" />
1719 <on_check function="Advanced.CheckAllowSelectAvatar"
1720 userdata="" />
1721 </menu_item_check>
1722 </menu>
1723
1724 <menu_item_check name="Enable Lip Sync (Beta)"
1725 label="Enable Lip Sync (Beta)">
1726 <on_click function="ToggleControl"
1727 userdata="LipSyncEnabled" />
1728 <on_check control="LipSyncEnabled" />
1729 </menu_item_check>
1730 <menu_item_check name="Tap-Tap-Hold To Run"
1731 label="Tap-Tap-Hold To Run">
1732 <on_click function="Advanced.ToggleAllowTapTapHoldRun"
1733 userdata="" />
1734 <on_check function="Advanced.CheckAllowTapTapHoldRun"
1735 userdata="" />
1736 </menu_item_check>
1737 <menu_item_call name="Force Params to Default"
1738 label="Force Params to Default">
1739 <on_click function="Advanced.ForceParamsToDefault"
1740 userdata="" />
1741 </menu_item_call>
1742 <menu_item_call name="Reload Vertex Shader"
1743 label="Reload Vertex Shader">
1744 <on_click function="Advanced.ReloadVertexShader"
1745 userdata="" />
1746 </menu_item_call>
1747 <menu_item_check label="Animation Info"
1748 name="Animation Info">
1749 <on_click function="Advanced.ToggleAnimationInfo"
1750 userdata="" />
1751 <on_check function="Advanced.CheckAnimationInfo"
1752 userdata="" />
1753 </menu_item_check>
1754
1755 <!--
1756 *TODO: Make this a proper toggle item with the "X" indicator.
1757 1. Add a "Advanced.CheckSlowmotionAnimation" function in
1758 llviewermenu.cpp.
1759 2. Change this surrounding menu_item_call to a menu_item_check.
1760 3. Uncomment the "on_check" line below.
1761 -->
1762 <menu_item_call name="Slow Motion Animations"
1763 label="Slow Motion Animations">
1764 <on_click function="Advanced.ToggleSlowMotionAnimations"
1765 userdata="" />
1766 <!--
1767 <on_check function="Advanced.CheckSlowMotionAnimations"
1768 userdata="" />
1769 -->
1770 </menu_item_call>
1771
1772 <menu_item_check name="Show Look At"
1773 label="Show Look At">
1774 <on_click function="Advanced.ToggleShowLookAt"
1775 userdata="" />
1776 <on_check function="Advanced.CheckShowLookAt"
1777 userdata="" />
1778 </menu_item_check>
1779 <menu_item_check name="Show Point At"
1780 label="Show Point At">
1781 <on_click function="Advanced.ToggleShowPointAt"
1782 userdata="" />
1783 <on_check function="Advanced.CheckShowPointAt"
1784 userdata="" />
1785 </menu_item_check>
1786 <menu_item_check name="Debug Joint Updates"
1787 label="Debug Joint Updates">
1788 <on_click function="Advanced.ToggleDebugJointUpdates"
1789 userdata="" />
1790 <on_check function="Advanced.CheckDebugJointUpdates"
1791 userdata="" />
1792 </menu_item_check>
1793 <menu_item_check name="Disable LOD"
1794 label="Disable LOD">
1795 <on_click function="Advanced.ToggleDisableLOD"
1796 userdata="" />
1797 <on_check function="Advanced.CheckDisableLOD"
1798 userdata="" />
1799 </menu_item_check>
1800 <menu_item_check name="Debug Character Vis"
1801 label="Debug Character Vis">
1802 <on_click function="Advanced.ToggleDebugCharacterVis"
1803 userdata="" />
1804 <on_check function="Advanced.CheckDebugCharacterVis"
1805 userdata="" />
1806 </menu_item_check>
1807
1808 <!-- Disabled. See DEV-14477
1809 <menu_item_check name="Show Collision Plane"
1810 label="Show Collision Plane">
1811 <on_click function="Advanced.ToggleShowCollisionPlane"
1812 userdata="" />
1813 <on_check function="Advanced.CheckShowCollisionPlane"
1814 userdata="" />
1815 </menu_item_check>
1816 -->
1817
1818 <menu_item_check name="Show Collision Skeleton"
1819 label="Show Collision Skeleton">
1820 <on_click function="Advanced.ToggleShowCollisionSkeleton"
1821 userdata="" />
1822 <on_check function="Advanced.CheckShowCollisionSkeleton"
1823 userdata="" />
1824 </menu_item_check>
1825 <menu_item_check name="Display Agent Target"
1826 label="Display Agent Target">
1827 <on_click function="Advanced.ToggleDisplayAgentTarget"
1828 userdata="" />
1829 <on_check function="Advanced.CheckDisplayAgentTarget"
1830 userdata="" />
1831 </menu_item_check>
1832 <menu_item_check name="Debug Rotation"
1833 label="Debug Rotation">
1834 <on_click function="Advanced.ToggleDebugAvatarRotation"
1835 userdata="" />
1836 <on_check function="Advanced.CheckDebugAvatarRotation"
1837 userdata="" />
1838 </menu_item_check>
1839 <menu_item_call name="Dump Attachments"
1840 label="Dump Attachments">
1841 <on_click function="Advanced.DumpAttachments"
1842 userdata="" />
1843 </menu_item_call>
1844 <menu_item_call name="Rebake Textures"
1845 label="Rebake Textures"
1846 shortcut="control|alt|R">
1847 <on_click function="Advanced.RebakeTextures"
1848 userdata="" />
1849 </menu_item_call>
1850 </menu>
1851
1852
1853
1854 <!-- NETWORK -->
1855
1856 <menu name="Network" drop_shadow="true"
1857 opaque="true" tear_off="true">
1858 <menu_item_call name="Enable Message Log"
1859 label="Enable Message Log">
1860 <on_click function="Advanced.EnableMessageLog"
1861 userdata="" />
1862 </menu_item_call>
1863 <menu_item_call name="Disable Message Log"
1864 label="Disable Message Log">
1865 <on_click function="Advanced.DisableMessageLog"
1866 userdata="" />
1867 </menu_item_call>
1868 <menu_item_separator />
1869 <menu_item_check name="Velocity Interpolate Objects"
1870 label="Velocity Interpolate Objects">
1871 <on_click function="ToggleControl"
1872 userdata="VelocityInterpolate" />
1873 <on_check control="VelocityInterpolate" />
1874 </menu_item_check>
1875 <menu_item_check name="Ping Interpolate Object Positions"
1876 label="Ping Interpolate Object Positions">
1877 <on_click function="ToggleControl"
1878 userdata="PingInterpolate" />
1879 <on_check control="PingInterpolate" />
1880 </menu_item_check>
1881 <menu_item_separator />
1882 <menu_item_call name="Drop a Packet" label="Drop a Packet"
1883 shortcut="control|alt|L">
1884 <on_click function="Advanced.DropPacket"
1885 userdata="" />
1886 </menu_item_call>
1887 </menu>
1888
1889
1890
1891 <!-- RECORDER -->
1892
1893 <menu name="Recorder" drop_shadow="true"
1894 opaque="true" tear_off="true">
1895 <menu_item_check name="Full Session Logging"
1896 label="Full Session Logging">
1897 <on_click function="ToggleControl"
1898 userdata="StatsSessionTrackFrameStats" />
1899 <on_check control="StatsSessionTrackFrameStats" />
1900 </menu_item_check>
1901 <menu_item_call name="Start Logging" label="Start Logging">
1902 <on_click function="Advanced.FrameStatsLogging"
1903 userdata="start logging" />
1904 </menu_item_call>
1905 <menu_item_call name="Stop Logging" label="Stop Logging">
1906 <on_click function="Advanced.FrameStatsLogging"
1907 userdata="stop logging" />
1908 </menu_item_call>
1909 <menu_item_call name="Log 10 Seconds" label="Log 10 Seconds">
1910 <on_click function="Advanced.FrameStatsLogging"
1911 userdata="timed logging 10" />
1912 </menu_item_call>
1913 <menu_item_call name="Log 30 Seconds" label="Log 30 Seconds">
1914 <on_click function="Advanced.FrameStatsLogging"
1915 userdata="timed logging 30" />
1916 </menu_item_call>
1917 <menu_item_call name="Log 60 Seconds" label="Log 60 Seconds">
1918 <on_click function="Advanced.FrameStatsLogging"
1919 userdata="timed logging 60" />
1920 </menu_item_call>
1921
1922 <menu_item_separator />
1923
1924 <menu_item_call name="Start Playback" label="Start Playback">
1925 <on_click function="Advanced.AgentPilot"
1926 userdata="start playback" />
1927 </menu_item_call>
1928 <menu_item_call name="Stop Playback" label="Stop Playback">
1929 <on_click function="Advanced.AgentPilot"
1930 userdata="stop playback" />
1931 </menu_item_call>
1932 <menu_item_check name="Loop Playback" label="Loop Playback">
1933 <on_click function="Advanced.ToggleAgentPilotLoop"
1934 userdata="" />
1935 <on_check function="Advanced.CheckAgentPilotLoop"
1936 userdata="" />
1937 </menu_item_check>
1938 <menu_item_call name="Start Record" label="Start Record">
1939 <on_click function="Advanced.AgentPilot"
1940 userdata="start record" />
1941 </menu_item_call>
1942 <menu_item_call name="Stop Record" label="Stop Record">
1943 <on_click function="Advanced.AgentPilot"
1944 userdata="stop record" />
1945 </menu_item_call>
1946 </menu>
1947
1948
1949 <menu_item_separator />
1950
1951
1952 <menu_item_check name="Show Updates" label="Show Updates"
1953 shortcut="control|alt|shift|U">
1954 <on_click function="Advanced.ToggleShowObjectUpdates"
1955 userdata="" />
1956 <on_check function="Advanced.CheckShowObjectUpdates"
1957 userdata="" />
1958 </menu_item_check>
1959
1960 <menu_item_separator />
1961
1962 <menu_item_call name="Compress Image..."
1963 label="Compress Image...">
1964 <on_click function="Advanced.CompressImage"
1965 userdata="" />
1966 </menu_item_call>
1967 <menu_item_check name="Limit Select Distance"
1968 label="Limit Select Distance">
1969 <on_click function="ToggleControl"
1970 userdata="LimitSelectDistance" />
1971 <on_check control="LimitSelectDistance" />
1972 </menu_item_check>
1973 <menu_item_check name="Disable Camera Constraints"
1974 label="Disable Camera Constraints">
1975 <on_click function="ToggleControl"
1976 userdata="DisableCameraConstraints" />
1977 <on_check control="DisableCameraConstraints" />
1978 </menu_item_check>
1979 <menu_item_check name="Mouse Smoothing"
1980 label="Mouse Smoothing">
1981 <on_click function="ToggleControl"
1982 userdata="MouseSmooth" />
1983 <on_check control="MouseSmooth" />
1984 </menu_item_check>
1985
1986 <menu_item_separator />
1987
1988 <menu_item_check name="Console Window"
1989 label="Console Window">
1990 <on_click function="ToggleControl"
1991 userdata="ShowConsoleWindow" />
1992 <on_check control="ShowConsoleWindow" />
1993 </menu_item_check>
1994 <menu_item_check name="Output Debug Minidump"
1995 label="Output Debug Minidump">
1996 <on_click function="ToggleControl"
1997 userdata="SaveMiniDump" />
1998 <on_check control="SaveMiniDump" />
1999 </menu_item_check>
2000 <menu_item_check name="Clothing..."
2001 label="Clothing...">
2002 <on_click function="Advanced.ToggleClothingFloater"
2003 userdata="" />
2004 </menu_item_check>
2005 <menu_item_call name="Debug Settings"
2006 label="Debug Settings">
2007 <on_click function="Advanced.ShowDebugSettings"
2008 userdata="" />
2009 </menu_item_call>
2010 <menu_item_check name="View Admin Options"
2011 label="View Admin Options"
2012 shortcut="control|alt|V">
2013 <on_click function="Advanced.ToggleViewAdminOptions"
2014 userdata="" />
2015 <on_check function="Advanced.CheckViewAdminOptions"
2016 userdata="" />
2017 </menu_item_check>
2018 <menu_item_call name="Request Admin Status"
2019 label="Request Admin Status"
2020 shortcut="control|alt|G">
2021 <on_click function="Advanced.RequestAdminStatus"
2022 userdata="" />
2023 </menu_item_call>
2024 <menu_item_call name="Leave Admin Status"
2025 label="Leave Admin Status"
2026 shortcut="control|alt|shift|G">
2027 <on_click function="Advanced.LeaveAdminStatus"
2028 userdata="" />
2029 </menu_item_call>
2030
2031 </menu>
2032
856</menu_bar> 2033</menu_bar>