aboutsummaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
-rw-r--r--CONTRIBUTE.txt104
-rw-r--r--ChangeLog.txt113
-rw-r--r--MANIFESTO.txt178
-rw-r--r--README.txt86
-rw-r--r--linden/doc/contributions.txt2
-rw-r--r--linden/indra/newview/CMakeLists.txt3
-rw-r--r--linden/indra/newview/app_settings/settings.xml13
-rw-r--r--linden/indra/newview/llfloaterbulkpermission.cpp595
-rw-r--r--linden/indra/newview/llfloaterbulkpermission.h143
-rw-r--r--linden/indra/newview/llfloatergroups.cpp32
-rw-r--r--linden/indra/newview/llfloatergroups.h2
-rw-r--r--linden/indra/newview/llfloatertools.cpp41
-rw-r--r--linden/indra/newview/llfloatertools.h5
-rw-r--r--linden/indra/newview/lloverlaybar.cpp18
-rw-r--r--linden/indra/newview/lloverlaybar.h1
-rw-r--r--linden/indra/newview/llpanelland.cpp26
-rw-r--r--linden/indra/newview/llpanelland.h3
-rw-r--r--linden/indra/newview/llpanelobject.cpp26
-rw-r--r--linden/indra/newview/lltoolbrush.cpp4
-rw-r--r--linden/indra/newview/llviewermenu.cpp2282
-rw-r--r--linden/indra/newview/skins/default/xui/en-us/alerts.xml13
-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.xml165
-rw-r--r--linden/indra/newview/skins/default/xui/en-us/menu_viewer.xml2903
-rw-r--r--linden/indra/newview/skins/default/xui/en-us/panel_groups.xml2
-rw-r--r--linden/indra/newview/skins/default/xui/en-us/panel_overlaybar.xml5
-rwxr-xr-xlinden/indra/newview/viewer_manifest.py35
27 files changed, 5906 insertions, 1021 deletions
diff --git a/CONTRIBUTE.txt b/CONTRIBUTE.txt
new file mode 100644
index 0000000..ece4c73
--- /dev/null
+++ b/CONTRIBUTE.txt
@@ -0,0 +1,104 @@
1
2
3 HOW YOU CAN CONTRIBUTE
4
5
6 Imprudence isn't just a project for programmers. No matter your
7 skills (or lack thereof) or how much time you can commit, there's
8 a way for you to be a part of it.
9
10
11 EVERYBODY AND THEIR GRANDMAS
12
13 Here are some good ways anybody can help out:
14
15 * Let us know what you think needs to be improved about the SL
16 Viewer.
17
18 * Participate in discussions on the forums or mailing list.
19 (Visit ImprudenceViewer.org for links to both of those.)
20
21 * Try out the Imprudence Viewer (when it's released) and give
22 feedback about it.
23
24 * Watch a friend, family member, or co-worker to try SL for the
25 first time, and take notes about the things they find difficult
26 or confusing.
27
28 * Blog about the latest Imprudence news and developments (either
29 on the ImprudenceViewer.org blog or your own).
30
31 * Help organize and coordinate other volunteers to keep things
32 running smoothly.
33
34 * Tell a friend and get them involved too!
35
36
37 ARTISTS, DESIGNERS, AND UI FREAKS
38
39 If you happen to have some graphics skill or an interest in User
40 Interface design, here are some things you could do:
41
42 * Work with users to turn their ideas into something people can
43 look at.
44
45 * Make a sketch or Flash mock-up of how some part of the UI
46 should behave, look, or be organized.
47
48 * Offer suggestions and constructive criticism about other
49 people's designs.
50
51 * Create or improve a color scheme or skin for the Viewer.
52
53 * Paint some graphics or icons for a UI-in-progress.
54
55 * Hook up with a programmer and turn your design into a real,
56 working interface!
57
58
59 CODE MONKEYS AND TEKKIE-WIKIS
60
61 Of course, there's always plenty for programmers and other
62 tech-savvy people to do:
63
64 * Compile a Viewer branch for other people to download and test.
65
66 * Try out a patch to make sure it applies cleanly, and make a Git
67 branch so others can easily merge the changes.
68
69 * Clean up or add comments/documentation for part of the source
70 code.
71
72 * Fix a bug or optimize a slow piece of code.
73
74 * Work with a designer to bring a UI concept to life!
75
76
77 OTHER REALLY COOL PEOPLE
78
79 We're also looking for people who can help with:
80
81 * Accessibility. We'd love to make it easier for people with
82 disabilities to have a functional and satisfying SL experience,
83 but we need people with the knowledge and experience to help us
84 identify the biggest hurdles and find solutions.
85
86 * Localization & Translation. Many of the non-English UI
87 translations are awkward or wrong, but only someone who knows
88 the language can make them better. If you are fluent in both
89 English and another tongue, please help us add or improve the
90 translation for your language.
91
92
93 GOT ANOTHER IDEA?
94
95 There are many more ways to get involved than we could list here;
96 and there are surely some good ones that you can think of, but that
97 we hadn't! Don't hesitate to contact us if you'd like to help
98 out, even if it's not listed here!
99
100
101 CONTACT INFO
102
103 If you’d like to contribute to Imprudence in any way, send an email
104 to jacek.antonelli at gmail or an IM to Jacek Antonelli in-world.
diff --git a/ChangeLog.txt b/ChangeLog.txt
new file mode 100644
index 0000000..4794bb7
--- /dev/null
+++ b/ChangeLog.txt
@@ -0,0 +1,113 @@
12008-09-28 Jacek Antonelli <jacek.antonelli@gmail.com>
2
3 * Updated to SL source 1.21.2.
4
52008-09-22 Jacek Antonelli <jacek.antonelli@gmail.com>
6
7 * linden/indra/newview/skins/default/xui/en-us/floater_tools.xml:
8 Increased maximum settable transparency from 90% to 100%.
9
10 * linden/indra/newview/skins/default/xui/en-us/floater_tools.xml:
11 Changed "Select Texture" to "Select Faces to Texture".
12
132008-09-22 Aimee Trescothick <aimee@ama-zing.co.uk>
14
15 * linden/indra/newview/lloverlaybar.cpp:
16 VWR-8341: Bring back a UI indicator of 'Flycam' text.
17 * linden/indra/newview/lloverlaybar.h:
18 Ditto.
19 * linden/indra/newview/skins/default/xui/en-us/panel_overlaybar.xml:
20 Ditto.
21
22 * linden/indra/newview/app_settings/settings.xml:
23 VWR-8430: Usability improvements to the land tools floater.
24 * linden/indra/newview/llfloatertools.cpp:
25 Ditto.
26 * linden/indra/newview/llfloatertools.h:
27 Ditto.
28 * linden/indra/newview/llpanelland.cpp:
29 Ditto.
30 * linden/indra/newview/llpanelland.h:
31 Ditto.
32 * linden/indra/newview/lltoolbrush.cpp:
33 Ditto.
34 * linden/indra/newview/skins/default/xui/en-us/alerts.xml:
35 Ditto.
36 * linden/indra/newview/skins/default/xui/en-us/floater_tools.xml:
37 Ditto.
38
392008-09-21 Jacek Antonelli <jacek.antonelli@gmail.com>
40
41 * linden/indra/newview/skins/default/xui/en-us/menu_viewer.xml:
42 Reindented and cleaned up menu XML for code readability.
43
442008-09-20 Michelle2 Zenovka <robin.cornelius@gmail.com>
45
46 * linden/indra/newview/llfloaterbulkpermission.h:
47 VWR-5082: 'Set permissions on selected task inventory' feature.
48 * linden/indra/newview/llfloaterbulkpermission.cpp:
49 Ditto.
50 * linden/indra/newview/llviewermenu.cpp:
51 Ditto.
52 * linden/indra/newview/skins/default/xui/en-us/menu_viewer.xml:
53 Ditto.
54 * linden/indra/newview/skins/default/xui/en-us/floater_bulk_perms.xml:
55 Ditto.
56
572008-09-19 Gigs Taggart <gigstaggart@gmail.com>
58
59 * linden/indra/newview/app_settings/settings.xml:
60 VWR-2331: Terraform tool variable "strength".
61 Contributing authors: Gigs Taggart, Aimee Trescothick, Which Linden.
62 * linden/indra/newview/llfloatertools.cpp:
63 Ditto.
64 * linden/indra/newview/llfloatertools.h:
65 Ditto.
66 * linden/indra/newview/lltoolbrush.cpp:
67 Ditto.
68 * linden/indra/newview/skins/default/xui/en-us/floater_tools.xml:
69 Ditto.
70
712008-09-19 McCabe Maxsted <hakushakukun@gmail.com>
72
73 * linden/indra/newview/skins/default/xui/en-us/menu_viewer.xml:
74 VWR-1363: Add "Return Object" to the Tools menu.
75
76 * linden/indra/newview/skins/default/xui/en-us/floater_tools.xml:
77 VWR-7877: Change the default cut increment from 0.05 to 0.025.
78
79 * linden/indra/newview/skins/default/xui/en-us/panel_groups.xml:
80 VWR-8024: simplify group invites: invite to group from groups list.
81
822008-09-19 Jacek Antonelli <jacek.antonelli@gmail.com>
83
84 * linden/indra/newview/llviewermenu.cpp:
85 VWR-2947: Create event callbacks for Advanced menu functions.
86 Part of VWR-2896: Convert "Advanced" menu to XUI.
87
88 * linden/indra/newview/skins/default/xui/en-us/menu_viewer.xml:
89 VWR-2948: Create XUI-based Advanced menu.
90 Part of VWR-2896: Convert "Advanced" menu to XUI.
91
92 * linden/indra/SConstruct:
93 New optional SConstruct flag to specify an exact path to build
94 directory: BUILD_DIR. For convenience until we switch to CMake.
95
96 * linden/indra/SConstruct:
97 VWR-2865: New SConstruct flag to (not) make tarball after compiling.
98 For convenience until we switch to CMake.
99 * linden/indra/newview/viewer_manifest.py:
100 Ditto.
101
1022008-09-07 McCabe Maxsted <hakushakukun@gmail.com>
103
104 * linden/indra/newview/llpanelobject.cpp:
105 VWR-7827: Allow Dimple/Profile Cut for boxes and box-based prims
106 in the UI.
107 * linden/indra/newview/skins/default/xui/en-us/floater_tools.xml:
108 Ditto.
109
1102008-09-07 Jacek Antonelli <jacek.antonelli@gmail.com>
111
112 * linden/indra/newview/skins/default/xui/en-us/menu_viewer.xml:
113 VWR-8056: Clean up menu_viewer.xml (main menu XUI).
diff --git a/MANIFESTO.txt b/MANIFESTO.txt
new file mode 100644
index 0000000..2a6fdb4
--- /dev/null
+++ b/MANIFESTO.txt
@@ -0,0 +1,178 @@
1
2
3 THE IMPRUDENCE MANIFESTO
4
5
6 THE PROBLEM
7
8 The Second Life Viewer suffers from a stifling atmosphere of
9 non-change. This atmosphere emanates from Linden Lab, whose
10 attitudes and policies discourage all but the smallest and most
11 superficial improvements. This is the result of the nature of
12 Linden Lab as a corporation; in particular:
13
14
15 * A lack of resources to invest in making significant
16 improvements to the Viewer. Linden Lab is stuck treading water;
17 they don't have the manpower to spend on making major
18 improvements to the Viewer.
19
20 * A burdensome Quality Assurance procedure that punishes any sort
21 of change. The larger the change, the more it's punished. The
22 simple fact that all changes have to pass through such an
23 arduous process discourages anyone from attempting any major
24 endeavor.
25
26 * A vast throng of paying customers who want the Viewer to remain
27 constant and familiar. If the Viewer changes, they are forced
28 to spend effort relearning it. The most vocal and abusive users
29 even meet change with sneers and insults.
30
31
32 Combined, these render Linden Lab ineffectual at dealing with the
33 fundamental usability problems that plague the Viewer:
34
35
36 * A cluttered interface that frustrates and confuses both new and
37 long-time users. It is difficult to learn, frustrating to use,
38 and obscures the thing that users actually care about: the
39 world.
40
41 * Crude tools that force users into awkward and inefficient
42 workflows. The tools bear little relation to the way today's
43 users want to use them. Whether because these tools are
44 outdated relics of the past, or just half-baked non-solutions,
45 very few rise above even the "somewhat usable" mark.
46
47 * Stability and performance problems that make the Viewer
48 unreliable for any real use. Viewer crashes are an everyday
49 occurance for many users, disrupting their activities,
50 destroying their unsaved work, and afflicting their lives with
51 undue stress and frustration.
52
53
54 We don't deny that Linden Lab has made some progress in these areas
55 over time. But such progress is slow and often superficial, because
56 Linden Lab cannot afford to make significant improvement.
57 Encumbered by their own nature, they are forced onto an untenable
58 road of caution, hesitation, and prudence. This is a path that can
59 lead only to stagnation.
60
61 These fundamental usability problems will not be solved by Linden
62 Lab; their atmosphere precludes it. Even the contribution of source
63 code patches by open sourcers can only address one factor, Linden
64 Lab's lack of resources. Patch contributors are still affected by
65 the burdensome QA process and the community's anti-change attitude
66 just as much as Linden Lab developers are. Any endeavor which
67 relies on Linden Lab to approve and integrate changes will face the
68 same bottlenecks.
69
70
71 SOLUTION
72
73 As I have described, Linden Lab's approach is characterized by
74 three factors that put a damper on significant improvement or
75 innovation:
76
77 * Cautious, gradual changes over a long period of time.
78
79 * Dependence on an overloaded central QA department.
80
81 * Yielding to pressure from large numbers of users to reject
82 change.
83
84 It stands to reason that a project which removed or reduced these
85 factors would be more free to make radical, fundamental changes to
86 the Viewer. Such a project would exhibit the opposite
87 characteristics:
88
89 * More significant changes over a shorter period of time.
90
91 * A scalable, hierarchical QA process to screen and approve
92 changes.
93
94 * Less need to satisfy users who demand non-change.
95
96 This is precisely the sort of project we propose to undertake.
97 Because our approach is incautious, and perhaps even reckless, we
98 have dubbed the project Imprudence. Goals
99
100 The primary goal of Imprudence is simple: to greatly improve the
101 usability of the Viewer. In particular, there are 3 aspects of
102 usability that we intend to address:
103
104 * Approachability. Improving comfort and ease of use, especially
105 for new or non-technical users.
106
107 * Efficiency. Improving speed and ease of common tasks and
108 workflows.
109
110 * Satisfaction. Improving the emotional effect of the software on
111 the user.
112
113 This is not to minimize other aspects of usability, such as
114 reliability, accessibility, or internationalization/localization.
115 We recognize their importance, but lack the expertise to properly
116 address them. We welcome people with such expertise to join the
117 project and help.
118
119
120 METHOD
121
122 In order to achieve these goals, we propose to combine the open and
123 distributed nature of open source development with the dedication
124 to quality design usually associated with commercial products. The
125 main highlights of our approach are:
126
127 * Open, public project management. Our plans, goals, and roadmaps
128 are laid out on the table. Our code is published in plain view
129 as it's written. There won't be any sudden bombshells to
130 disrupt your plans.
131
132 * A pro-change atmosphere. Change is natural and healthy, and it
133 is the only way to make improvement. We encourage experimental
134 change, coupled with evaluation to filter out the negative.
135 Users wanting a static, unchanging viewer should look
136 elsewhere.
137
138 * Designers, programmers, and users working with each other. Good
139 software requires more than just a team of programmers. It
140 needs designers listening to users, programmers working with
141 designers, and users testing and providing feedback. Every role
142 is necessary and appreciated.
143
144 * Commmunity involvement. There are many ways to be involved,
145 whatever your interests, skill set, or level of commitment.
146 Contributions are welcomed, not looked upon as burdens.
147
148 * A modern, distributed development model. The Git version
149 control system makes it easy for programmers to work freely
150 without stepping on each others' toes. Easy and powerful
151 branching and merging tools mean that releases will never be
152 littered with untested, half-baked code.
153
154 * A scalable, hierarchical QA model. New contributions work their
155 way up a hierarchy of approval, which will start small and grow
156 naturally as load increases. By the time a contribution reaches
157 the top of the hierarchy, it has been tested, polished, and
158 approved by multiple people, and is ready to be integrated.
159
160
161 A CALL FOR VOLUNTEERS
162
163 Imprudence is an open-source, volunteer effort; it depends on
164 people like you getting involved! There are many ways to
165 contribute, and most of them don't require any programming skills
166 or special knowledge -- just some free time and the will to be part
167 of something great.
168
169 If you'd like to contribute in any way, have a look at
170 CONTRIBUTE.txt.
171
172 You have nothing to lose, and a better SL experience to gain!
173
174
175 SIGNATORIES
176
177 Jacek Antonelli (August 27, 2008)
178 McCabe Maxsted (August 27, 2008)
diff --git a/README.txt b/README.txt
index d7f6c75..be85b03 100644
--- a/README.txt
+++ b/README.txt
@@ -1,55 +1,41 @@
1 1
2 2
3 ABOUT THE SECOND LIFE VIEWER SOURCE ARCHIVE PROJECT 3 ABOUT IMPRUDENCE
4 4
5 This project is a community-maintained archive of Second Life 5 Imprudence is an open source metaverse viewer project based on
6 viewer source code releases. For more information about the 6 the Second Life Viewer source.
7 project, see: 7
8 8 The goal of Imprudence is to greatly improve the usability of
9 http://github.com/jacek/sl-viewer-source-archive/ 9 the Viewer through community involvement, thoughtful design,
10 10 modern development methods, and a pro-change atmosphere.
11 11
12 PURPOSE 12 For more information about the rationale, goals, and methods
13 13 of the Imprudence project, please see MANIFESTO.txt.
14 The purpose of the archive is to provide a base for viewer 14
15 forks or patch development and a convenient method for viewing 15 If you would like to get involved with the Imprudence project,
16 and merging the diffs between releases via the Git version 16 please see CONTRIBUTE.txt. There are many ways you can help,
17 control system. 17 no matter your skills or the amount of time you can dedicate.
18 18
19 19
20 CONTENTS 20 Imprudence is online at ImprudenceViewer.org
21 21
22 The archive contains the full source code for every official, 22
23 versioned release and release candidate of the Second Life 23 The latest source code for the Imprudence Viewer is always
24 viewer since January 2007, when the viewer code was first 24 available at:
25 released. 25
26 26 http://github.com/jacek/imprudence/tree/master
27 The archive does not contain the source for betas, "First 27
28 Look" viewers, dated snapshots, or development branches, 28
29 because it is infeasible to deduce their ancestral
30 relationship to other versions.
31
32 The archive also does not contain the viewer artwork or
33 required libraries, for space and licensing reasons.
34
35 As of this writing, these other resources (as well as all
36 code contained in the archive) are available for download
37 from Linden Research, Inc.:
38
39 http://wiki.secondlife.com/wiki/Source_downloads
40
41
42 LICENSE 29 LICENSE
43 30
44 All code in the archive has been released by Linden Research 31 All code is licensed under the terms of the GNU General Public
45 Inc. under the terms of the GNU General Public License version 32 License version 2.0 (plus a special exception).
46 2.0 (plus a special exception). See linden/LICENSE-source.txt 33
47 for details. 34 See linden/LICENSE-source.txt for details.
48 35
49 36
50 DISCLAIMERS AND NOTICES 37 DISCLAIMERS AND NOTICES
51
52 The project and archive are in no way affiliated with
53 Linden Research, Inc.
54 38
55 Second Life is a registered trademark of Linden Research, Inc. 39 Second Life is a registered trademark of Linden Research, Inc.
40
41 Imprudence is in no way affiliated with Linden Research, Inc.
diff --git a/linden/doc/contributions.txt b/linden/doc/contributions.txt
index ea5ba5d..346aba5 100644
--- a/linden/doc/contributions.txt
+++ b/linden/doc/contributions.txt
@@ -14,6 +14,8 @@ Adam Marker
14Aimee Trescothick 14Aimee Trescothick
15 VWR-3903 15 VWR-3903
16 VWR-4083 16 VWR-4083
17 VWR-8341
18 VWR-8430
17Alejandro Rosenthal 19Alejandro Rosenthal
18 VWR-1184 20 VWR-1184
19Alissa Sabre 21Alissa Sabre
diff --git a/linden/indra/newview/CMakeLists.txt b/linden/indra/newview/CMakeLists.txt
index e93ea57..ae0feb6 100644
--- a/linden/indra/newview/CMakeLists.txt
+++ b/linden/indra/newview/CMakeLists.txt
@@ -124,6 +124,7 @@ set(viewer_SOURCE_FILES
124 llfloateravatarpicker.cpp 124 llfloateravatarpicker.cpp
125 llfloateravatartextures.cpp 125 llfloateravatartextures.cpp
126 llfloaterbuildoptions.cpp 126 llfloaterbuildoptions.cpp
127 llfloaterbulkpermission.cpp
127 llfloaterbump.cpp 128 llfloaterbump.cpp
128 llfloaterbuycontents.cpp 129 llfloaterbuycontents.cpp
129 llfloaterbuy.cpp 130 llfloaterbuy.cpp
@@ -514,6 +515,7 @@ set(viewer_HEADER_FILES
514 llfloateravatarpicker.h 515 llfloateravatarpicker.h
515 llfloateravatartextures.h 516 llfloateravatartextures.h
516 llfloaterbuildoptions.h 517 llfloaterbuildoptions.h
518 llfloaterbulkpermission.h
517 llfloaterbump.h 519 llfloaterbump.h
518 llfloaterbuy.h 520 llfloaterbuy.h
519 llfloaterbuycontents.h 521 llfloaterbuycontents.h
@@ -1019,6 +1021,7 @@ set(viewer_XUI_FILES
1019 skins/default/xui/en-us/floater_avatar_picker.xml 1021 skins/default/xui/en-us/floater_avatar_picker.xml
1020 skins/default/xui/en-us/floater_avatar_textures.xml 1022 skins/default/xui/en-us/floater_avatar_textures.xml
1021 skins/default/xui/en-us/floater_build_options.xml 1023 skins/default/xui/en-us/floater_build_options.xml
1024 skins/default/xui/en-us/floater_bulk_perms.xml
1022 skins/default/xui/en-us/floater_bumps.xml 1025 skins/default/xui/en-us/floater_bumps.xml
1023 skins/default/xui/en-us/floater_buy_contents.xml 1026 skins/default/xui/en-us/floater_buy_contents.xml
1024 skins/default/xui/en-us/floater_buy_currency.xml 1027 skins/default/xui/en-us/floater_buy_currency.xml
diff --git a/linden/indra/newview/app_settings/settings.xml b/linden/indra/newview/app_settings/settings.xml
index 5543847..17698d7 100644
--- a/linden/indra/newview/app_settings/settings.xml
+++ b/linden/indra/newview/app_settings/settings.xml
@@ -4191,6 +4191,17 @@
4191 <key>Value</key> 4191 <key>Value</key>
4192 <integer>0</integer> 4192 <integer>0</integer>
4193 </map> 4193 </map>
4194 <key>LandBrushForce</key>
4195 <map>
4196 <key>Comment</key>
4197 <string>Multiplier for land modification brush force.</string>
4198 <key>Persist</key>
4199 <integer>1</integer>
4200 <key>Type</key>
4201 <string>F32</string>
4202 <key>Value</key>
4203 <real>1.0</real>
4204 </map>
4194 <key>Language</key> 4205 <key>Language</key>
4195 <map> 4206 <map>
4196 <key>Comment</key> 4207 <key>Comment</key>
@@ -5607,7 +5618,7 @@
5607 <key>Value</key> 5618 <key>Value</key>
5608 <integer>0</integer> 5619 <integer>0</integer>
5609 </map> 5620 </map>
5610 <key>RadioLandBrushSize</key> 5621 <key>LandBrushSize</key>
5611 <map> 5622 <map>
5612 <key>Comment</key> 5623 <key>Comment</key>
5613 <string>Size of land modification brush (0 = small, 1 = medium, 2 = large)</string> 5624 <string>Size of land modification brush (0 = small, 1 = medium, 2 = large)</string>
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/llfloatergroups.cpp b/linden/indra/newview/llfloatergroups.cpp
index c0ea9df..39f6b7a 100644
--- a/linden/indra/newview/llfloatergroups.cpp
+++ b/linden/indra/newview/llfloatergroups.cpp
@@ -39,6 +39,7 @@
39#include "llviewerprecompiledheaders.h" 39#include "llviewerprecompiledheaders.h"
40 40
41#include "llfloatergroups.h" 41#include "llfloatergroups.h"
42#include "llfloatergroupinvite.h"
42 43
43#include "message.h" 44#include "message.h"
44#include "roles_constants.h" 45#include "roles_constants.h"
@@ -223,6 +224,8 @@ BOOL LLPanelGroups::postBuild()
223 childSetAction("Create", onBtnCreate, this); 224 childSetAction("Create", onBtnCreate, this);
224 225
225 childSetAction("Search...", onBtnSearch, this); 226 childSetAction("Search...", onBtnSearch, this);
227
228 childSetAction("Invite...", onBtnInvite, this);
226 229
227 setDefaultBtn("IM"); 230 setDefaultBtn("IM");
228 231
@@ -271,6 +274,14 @@ void LLPanelGroups::enableButtons()
271 { 274 {
272 childDisable("Create"); 275 childDisable("Create");
273 } 276 }
277 if (group_id.notNull() && gAgent.hasPowerInGroup(group_id, GP_MEMBER_INVITE))
278 {
279 LLPanelGroups::childEnable("Invite...");
280 }
281 else
282 {
283 LLPanelGroups::childDisable("Invite...");
284 }
274} 285}
275 286
276 287
@@ -280,6 +291,12 @@ void LLPanelGroups::onBtnCreate(void* userdata)
280 if(self) self->create(); 291 if(self) self->create();
281} 292}
282 293
294void LLPanelGroups::onBtnInvite(void* userdata)
295{
296 LLPanelGroups* self = (LLPanelGroups*)userdata;
297 if(self) self->invite();
298}
299
283void LLPanelGroups::onBtnActivate(void* userdata) 300void LLPanelGroups::onBtnActivate(void* userdata)
284{ 301{
285 LLPanelGroups* self = (LLPanelGroups*)userdata; 302 LLPanelGroups* self = (LLPanelGroups*)userdata;
@@ -401,6 +418,21 @@ void LLPanelGroups::search()
401 LLFloaterDirectory::showGroups(); 418 LLFloaterDirectory::showGroups();
402} 419}
403 420
421void LLPanelGroups::invite()
422{
423 LLCtrlListInterface *group_list = childGetListInterface("group list");
424 LLUUID group_id;
425
426 //if (group_list && (group_id = group_list->getCurrentID()).notNull())
427
428 if (group_list)
429 {
430 group_id = group_list->getCurrentID();
431 }
432
433 LLFloaterGroupInvite::showForGroup(group_id);
434}
435
404// static 436// static
405void LLPanelGroups::callbackLeaveGroup(S32 option, void* userdata) 437void LLPanelGroups::callbackLeaveGroup(S32 option, void* userdata)
406{ 438{
diff --git a/linden/indra/newview/llfloatergroups.h b/linden/indra/newview/llfloatergroups.h
index 5eda8ba..ad3ecac 100644
--- a/linden/indra/newview/llfloatergroups.h
+++ b/linden/indra/newview/llfloatergroups.h
@@ -110,6 +110,7 @@ protected:
110 static void onBtnLeave(void* userdata); 110 static void onBtnLeave(void* userdata);
111 static void onBtnSearch(void* userdata); 111 static void onBtnSearch(void* userdata);
112 static void onBtnVote(void* userdata); 112 static void onBtnVote(void* userdata);
113 static void onBtnInvite(void* userdata);
113 static void onDoubleClickGroup(void* userdata); 114 static void onDoubleClickGroup(void* userdata);
114 115
115 void create(); 116 void create();
@@ -119,6 +120,7 @@ protected:
119 void leave(); 120 void leave();
120 void search(); 121 void search();
121 void callVote(); 122 void callVote();
123 void invite();
122 124
123 static void callbackLeaveGroup(S32 option, void* userdata); 125 static void callbackLeaveGroup(S32 option, void* userdata);
124 126
diff --git a/linden/indra/newview/llfloatertools.cpp b/linden/indra/newview/llfloatertools.cpp
index 9c00ca6..1498d4a 100644
--- a/linden/indra/newview/llfloatertools.cpp
+++ b/linden/indra/newview/llfloatertools.cpp
@@ -106,9 +106,8 @@ void click_popup_rotate_left(void*);
106void click_popup_rotate_reset(void*); 106void click_popup_rotate_reset(void*);
107void click_popup_rotate_right(void*); 107void click_popup_rotate_right(void*);
108void click_popup_dozer_mode(LLUICtrl *, void *user); 108void click_popup_dozer_mode(LLUICtrl *, void *user);
109void click_popup_dozer_size(LLUICtrl *, void *user); 109void commit_slider_dozer_size(LLUICtrl *, void*);
110void commit_slider_dozer_force(LLUICtrl *, void*); 110void commit_slider_dozer_force(LLUICtrl *, void*);
111void click_dozer_size(LLUICtrl *, void*);
112void click_apply_to_selection(void*); 111void click_apply_to_selection(void*);
113void commit_radio_zoom(LLUICtrl *, void*); 112void commit_radio_zoom(LLUICtrl *, void*);
114void commit_radio_orbit(LLUICtrl *, void*); 113void commit_radio_orbit(LLUICtrl *, void*);
@@ -303,14 +302,16 @@ BOOL LLFloaterTools::postBuild()
303 childSetCommitCallback("radio noise",click_popup_dozer_mode, (void*)4); 302 childSetCommitCallback("radio noise",click_popup_dozer_mode, (void*)4);
304 mRadioDozerRevert = getChild<LLCheckBoxCtrl>("radio revert"); 303 mRadioDozerRevert = getChild<LLCheckBoxCtrl>("radio revert");
305 childSetCommitCallback("radio revert",click_popup_dozer_mode, (void*)5); 304 childSetCommitCallback("radio revert",click_popup_dozer_mode, (void*)5);
306 mComboDozerSize = getChild<LLComboBox>("combobox brush size");
307 childSetCommitCallback("combobox brush size",click_dozer_size, (void*)0);
308 if(mComboDozerSize) mComboDozerSize->setCurrentByIndex(0);
309 mBtnApplyToSelection = getChild<LLButton>("button apply to selection"); 305 mBtnApplyToSelection = getChild<LLButton>("button apply to selection");
310 childSetAction("button apply to selection",click_apply_to_selection, (void*)0); 306 childSetAction("button apply to selection",click_apply_to_selection, (void*)0);
311 mCheckShowOwners = getChild<LLCheckBoxCtrl>("checkbox show owners"); 307 mCheckShowOwners = getChild<LLCheckBoxCtrl>("checkbox show owners");
312 childSetValue("checkbox show owners",gSavedSettings.getBOOL("ShowParcelOwners")); 308 childSetValue("checkbox show owners",gSavedSettings.getBOOL("ShowParcelOwners"));
313 309
310 mSliderDozerSize = getChild<LLSlider>("slider brush size");
311 childSetCommitCallback("slider brush size", commit_slider_dozer_size, (void*)0);
312 childSetValue( "slider brush size", gSavedSettings.getS32("LandBrushSize"));
313
314
314 mSliderDozerForce = getChild<LLSlider>("slider force"); 315 mSliderDozerForce = getChild<LLSlider>("slider force");
315 childSetCommitCallback("slider force",commit_slider_dozer_force, (void*)0); 316 childSetCommitCallback("slider force",commit_slider_dozer_force, (void*)0);
316 // the setting stores the actual force multiplier, but the slider is logarithmic, so we convert here 317 // the setting stores the actual force multiplier, but the slider is logarithmic, so we convert here
@@ -391,7 +392,8 @@ LLFloaterTools::LLFloaterTools()
391 mRadioDozerSmooth(NULL), 392 mRadioDozerSmooth(NULL),
392 mRadioDozerNoise(NULL), 393 mRadioDozerNoise(NULL),
393 mRadioDozerRevert(NULL), 394 mRadioDozerRevert(NULL),
394 mComboDozerSize(NULL), 395 mSliderDozerSize(NULL),
396 mSliderDozerForce(NULL),
395 mBtnApplyToSelection(NULL), 397 mBtnApplyToSelection(NULL),
396 mCheckShowOwners(NULL), 398 mCheckShowOwners(NULL),
397 399
@@ -702,7 +704,6 @@ void LLFloaterTools::updatePopup(LLCoordGL center, MASK mask)
702 if (mRadioSelectLand) mRadioSelectLand->setVisible( land_visible ); 704 if (mRadioSelectLand) mRadioSelectLand->setVisible( land_visible );
703 705
704 S32 dozer_mode = gSavedSettings.getS32("RadioLandBrushAction"); 706 S32 dozer_mode = gSavedSettings.getS32("RadioLandBrushAction");
705 S32 dozer_size = gSavedSettings.getS32("RadioLandBrushSize");
706 707
707 if (mRadioDozerFlatten) 708 if (mRadioDozerFlatten)
708 { 709 {
@@ -734,17 +735,17 @@ void LLFloaterTools::updatePopup(LLCoordGL center, MASK mask)
734 mRadioDozerRevert ->set( tool == LLToolBrushLand::getInstance() && dozer_mode == 5); 735 mRadioDozerRevert ->set( tool == LLToolBrushLand::getInstance() && dozer_mode == 5);
735 mRadioDozerRevert ->setVisible( land_visible ); 736 mRadioDozerRevert ->setVisible( land_visible );
736 } 737 }
737 if (mComboDozerSize)
738 {
739 mComboDozerSize ->setCurrentByIndex(dozer_size);
740 mComboDozerSize ->setVisible( land_visible );
741 mComboDozerSize ->setEnabled( tool == LLToolBrushLand::getInstance() );
742 }
743 if (mBtnApplyToSelection) 738 if (mBtnApplyToSelection)
744 { 739 {
745 mBtnApplyToSelection->setVisible( land_visible ); 740 mBtnApplyToSelection->setVisible( land_visible );
746 mBtnApplyToSelection->setEnabled( land_visible && !LLViewerParcelMgr::getInstance()->selectionEmpty() && tool != LLToolSelectLand::getInstance()); 741 mBtnApplyToSelection->setEnabled( land_visible && !LLViewerParcelMgr::getInstance()->selectionEmpty() && tool != LLToolSelectLand::getInstance());
747 } 742 }
743 if (mSliderDozerSize)
744 {
745 mSliderDozerSize ->setVisible( land_visible );
746 childSetVisible("Brush:", land_visible);
747 childSetVisible("Brush Size:", land_visible);
748 }
748 if (mCheckShowOwners) 749 if (mCheckShowOwners)
749 { 750 {
750 mCheckShowOwners ->setVisible( land_visible ); 751 mCheckShowOwners ->setVisible( land_visible );
@@ -933,23 +934,15 @@ void click_popup_rotate_right(void*)
933 934
934void click_popup_dozer_mode(LLUICtrl *, void *user) 935void click_popup_dozer_mode(LLUICtrl *, void *user)
935{ 936{
936 S32 show_owners = gSavedSettings.getBOOL("ShowParcelOwners");
937 S32 mode = (S32)(intptr_t) user; 937 S32 mode = (S32)(intptr_t) user;
938 gFloaterTools->setEditTool( LLToolBrushLand::getInstance() ); 938 gFloaterTools->setEditTool( LLToolBrushLand::getInstance() );
939 gSavedSettings.setS32("RadioLandBrushAction", mode); 939 gSavedSettings.setS32("RadioLandBrushAction", mode);
940 gSavedSettings.setBOOL("ShowParcelOwners", show_owners);
941}
942
943void click_popup_dozer_size(LLUICtrl *, void *user)
944{
945 S32 size = (S32)(intptr_t) user;
946 gSavedSettings.setS32("RadioLandBrushSize", size);
947} 940}
948 941
949void click_dozer_size(LLUICtrl *ctrl, void *user) 942void commit_slider_dozer_size(LLUICtrl *ctrl, void*)
950{ 943{
951 S32 size = ((LLComboBox*) ctrl)->getCurrentIndex(); 944 S32 size = (S32)ctrl->getValue().asInteger();
952 gSavedSettings.setS32("RadioLandBrushSize", size); 945 gSavedSettings.setS32("LandBrushSize", size);
953} 946}
954 947
955void commit_slider_dozer_force(LLUICtrl *ctrl, void*) 948void commit_slider_dozer_force(LLUICtrl *ctrl, void*)
diff --git a/linden/indra/newview/llfloatertools.h b/linden/indra/newview/llfloatertools.h
index a75aa87..c4d6337 100644
--- a/linden/indra/newview/llfloatertools.h
+++ b/linden/indra/newview/llfloatertools.h
@@ -168,11 +168,10 @@ public:
168 LLCheckBoxCtrl *mRadioDozerSmooth; 168 LLCheckBoxCtrl *mRadioDozerSmooth;
169 LLCheckBoxCtrl *mRadioDozerNoise; 169 LLCheckBoxCtrl *mRadioDozerNoise;
170 LLCheckBoxCtrl *mRadioDozerRevert; 170 LLCheckBoxCtrl *mRadioDozerRevert;
171 LLSlider *mSliderDozerSize;
171 LLSlider *mSliderDozerForce; 172 LLSlider *mSliderDozerForce;
172 173 LLCheckBoxCtrl *mCheckShowOwners;
173 LLComboBox *mComboDozerSize;
174 LLButton *mBtnApplyToSelection; 174 LLButton *mBtnApplyToSelection;
175 LLCheckBoxCtrl *mCheckShowOwners;
176 175
177 std::vector<LLButton*> mButtons;//[ 15 ]; 176 std::vector<LLButton*> mButtons;//[ 15 ];
178 177
diff --git a/linden/indra/newview/lloverlaybar.cpp b/linden/indra/newview/lloverlaybar.cpp
index d0aad25..1087fd8 100644
--- a/linden/indra/newview/lloverlaybar.cpp
+++ b/linden/indra/newview/lloverlaybar.cpp
@@ -50,6 +50,7 @@
50#include "llui.h" 50#include "llui.h"
51#include "llviewercontrol.h" 51#include "llviewercontrol.h"
52#include "llviewerimagelist.h" 52#include "llviewerimagelist.h"
53#include "llviewerjoystick.h"
53#include "llviewermedia.h" 54#include "llviewermedia.h"
54#include "llviewermenu.h" // handle_reset_view() 55#include "llviewermenu.h" // handle_reset_view()
55#include "llviewermedia.h" 56#include "llviewermedia.h"
@@ -120,6 +121,7 @@ BOOL LLOverlayBar::postBuild()
120{ 121{
121 childSetAction("IM Received",onClickIMReceived,this); 122 childSetAction("IM Received",onClickIMReceived,this);
122 childSetAction("Set Not Busy",onClickSetNotBusy,this); 123 childSetAction("Set Not Busy",onClickSetNotBusy,this);
124 childSetAction("Flycam",onClickFlycam,this);
123 childSetAction("Mouselook",onClickMouselook,this); 125 childSetAction("Mouselook",onClickMouselook,this);
124 childSetAction("Stand Up",onClickStandUp,this); 126 childSetAction("Stand Up",onClickStandUp,this);
125 childSetVisible("chat_bar", gSavedSettings.getBOOL("ChatVisible")); 127 childSetVisible("chat_bar", gSavedSettings.getBOOL("ChatVisible"));
@@ -209,6 +211,16 @@ void LLOverlayBar::refresh()
209 buttons_changed = TRUE; 211 buttons_changed = TRUE;
210 } 212 }
211 213
214 BOOL flycam = LLViewerJoystick::getInstance()->getOverrideCamera();
215 button = getChild<LLButton>("Flycam");
216 if (button && button->getVisible() != flycam)
217 {
218 button->setVisible(flycam);
219 sendChildToFront(button);
220 moveChildToBackOfTabGroup(button);
221 buttons_changed = TRUE;
222 }
223
212 BOOL mouselook_grabbed; 224 BOOL mouselook_grabbed;
213 mouselook_grabbed = gAgent.isControlGrabbed(CONTROL_ML_LBUTTON_DOWN_INDEX) 225 mouselook_grabbed = gAgent.isControlGrabbed(CONTROL_ML_LBUTTON_DOWN_INDEX)
214 || gAgent.isControlGrabbed(CONTROL_ML_LBUTTON_UP_INDEX); 226 || gAgent.isControlGrabbed(CONTROL_ML_LBUTTON_UP_INDEX);
@@ -284,6 +296,12 @@ void LLOverlayBar::onClickSetNotBusy(void*)
284 296
285 297
286// static 298// static
299void LLOverlayBar::onClickFlycam(void*)
300{
301 LLViewerJoystick::getInstance()->toggleFlycam();
302}
303
304// static
287void LLOverlayBar::onClickResetView(void* data) 305void LLOverlayBar::onClickResetView(void* data)
288{ 306{
289 handle_reset_view(); 307 handle_reset_view();
diff --git a/linden/indra/newview/lloverlaybar.h b/linden/indra/newview/lloverlaybar.h
index 907441e..5880ff0 100644
--- a/linden/indra/newview/lloverlaybar.h
+++ b/linden/indra/newview/lloverlaybar.h
@@ -68,6 +68,7 @@ public:
68 68
69 static void onClickIMReceived(void* data); 69 static void onClickIMReceived(void* data);
70 static void onClickSetNotBusy(void* data); 70 static void onClickSetNotBusy(void* data);
71 static void onClickFlycam(void* data);
71 static void onClickMouselook(void* data); 72 static void onClickMouselook(void* data);
72 static void onClickStandUp(void* data); 73 static void onClickStandUp(void* data);
73 static void onClickResetView(void* data); 74 static void onClickResetView(void* data);
diff --git a/linden/indra/newview/llpanelland.cpp b/linden/indra/newview/llpanelland.cpp
index c1e9ab3..0b3ba52 100644
--- a/linden/indra/newview/llpanelland.cpp
+++ b/linden/indra/newview/llpanelland.cpp
@@ -37,10 +37,13 @@
37 37
38#include "llagent.h" 38#include "llagent.h"
39#include "llbutton.h" 39#include "llbutton.h"
40#include "llcheckboxctrl.h"
40#include "llfloaterland.h" 41#include "llfloaterland.h"
41#include "lltextbox.h" 42#include "lltextbox.h"
43#include "llviewercontrol.h"
42#include "llviewerparcelmgr.h" 44#include "llviewerparcelmgr.h"
43#include "llviewerregion.h" 45#include "llviewerregion.h"
46#include "llviewerwindow.h"
44#include "roles_constants.h" 47#include "roles_constants.h"
45 48
46#include "lluictrlfactory.h" 49#include "lluictrlfactory.h"
@@ -65,6 +68,10 @@ BOOL LLPanelLandInfo::postBuild()
65 childSetAction("button subdivide land",onClickDivide,this); 68 childSetAction("button subdivide land",onClickDivide,this);
66 childSetAction("button join land",onClickJoin,this); 69 childSetAction("button join land",onClickJoin,this);
67 childSetAction("button about land",onClickAbout,this); 70 childSetAction("button about land",onClickAbout,this);
71 childSetAction("button show owners help", onShowOwnersHelp, this);
72
73 mCheckShowOwners = getChild<LLCheckBoxCtrl>("checkbox show owners");
74 childSetValue("checkbox show owners", gSavedSettings.getBOOL("ShowParcelOwners"));
68 75
69 return TRUE; 76 return TRUE;
70} 77}
@@ -72,7 +79,8 @@ BOOL LLPanelLandInfo::postBuild()
72// Methods 79// Methods
73// 80//
74LLPanelLandInfo::LLPanelLandInfo(const std::string& name) 81LLPanelLandInfo::LLPanelLandInfo(const std::string& name)
75: LLPanel(name) 82: LLPanel(name),
83 mCheckShowOwners(NULL)
76{ 84{
77 if (!sInstance) 85 if (!sInstance)
78 { 86 {
@@ -255,3 +263,19 @@ void LLPanelLandInfo::onClickAbout(void*)
255 263
256 LLFloaterLand::showInstance(); 264 LLFloaterLand::showInstance();
257} 265}
266
267void LLPanelLandInfo::onShowOwnersHelp(void* user_data)
268{
269 LLPanelLandInfo* self = static_cast<LLPanelLandInfo*>(user_data);
270
271 const char* xml_alert = "ShowOwnersHelp";
272 LLAlertDialog* dialogp = gViewerWindow->alertXml(xml_alert);
273 if (dialogp)
274 {
275 LLFloater* root_floater = gFloaterView->getParentFloater(self);
276 if (root_floater)
277 {
278 root_floater->addDependentFloater(dialogp);
279 }
280 }
281}
diff --git a/linden/indra/newview/llpanelland.h b/linden/indra/newview/llpanelland.h
index c83bf2c..c44cb9d 100644
--- a/linden/indra/newview/llpanelland.h
+++ b/linden/indra/newview/llpanelland.h
@@ -50,6 +50,8 @@ public:
50 50
51 void refresh(); 51 void refresh();
52 static void refreshAll(); 52 static void refreshAll();
53
54 LLCheckBoxCtrl *mCheckShowOwners;
53 55
54protected: 56protected:
55 static void onClickClaim(void*); 57 static void onClickClaim(void*);
@@ -57,6 +59,7 @@ protected:
57 static void onClickDivide(void*); 59 static void onClickDivide(void*);
58 static void onClickJoin(void*); 60 static void onClickJoin(void*);
59 static void onClickAbout(void*); 61 static void onClickAbout(void*);
62 static void onShowOwnersHelp(void*);
60 63
61protected: 64protected:
62 //LLTextBox* mTextPriceLabel; 65 //LLTextBox* mTextPriceLabel;
diff --git a/linden/indra/newview/llpanelobject.cpp b/linden/indra/newview/llpanelobject.cpp
index 9022c14..cc9d969 100644
--- a/linden/indra/newview/llpanelobject.cpp
+++ b/linden/indra/newview/llpanelobject.cpp
@@ -830,7 +830,7 @@ void LLPanelObject::getState( )
830 BOOL top_shear_x_visible = TRUE; 830 BOOL top_shear_x_visible = TRUE;
831 BOOL top_shear_y_visible = TRUE; 831 BOOL top_shear_y_visible = TRUE;
832 BOOL twist_visible = TRUE; 832 BOOL twist_visible = TRUE;
833 BOOL advanced_cut_visible = FALSE; 833 BOOL advanced_cut_visible = TRUE;
834 BOOL taper_visible = FALSE; 834 BOOL taper_visible = FALSE;
835 BOOL skew_visible = FALSE; 835 BOOL skew_visible = FALSE;
836 BOOL radius_offset_visible = FALSE; 836 BOOL radius_offset_visible = FALSE;
@@ -841,6 +841,7 @@ void LLPanelObject::getState( )
841 F32 twist_inc = OBJECT_TWIST_LINEAR_INC; 841 F32 twist_inc = OBJECT_TWIST_LINEAR_INC;
842 842
843 BOOL advanced_is_dimple = FALSE; 843 BOOL advanced_is_dimple = FALSE;
844 BOOL advanced_is_slice = FALSE;
844 BOOL size_is_hole = FALSE; 845 BOOL size_is_hole = FALSE;
845 846
846 // Tune based on overall volume type 847 // Tune based on overall volume type
@@ -854,6 +855,7 @@ void LLPanelObject::getState( )
854 //twist_visible = FALSE; 855 //twist_visible = FALSE;
855 advanced_cut_visible = TRUE; 856 advanced_cut_visible = TRUE;
856 advanced_is_dimple = TRUE; 857 advanced_is_dimple = TRUE;
858 advanced_is_slice = FALSE;
857 twist_min = OBJECT_TWIST_MIN; 859 twist_min = OBJECT_TWIST_MIN;
858 twist_max = OBJECT_TWIST_MAX; 860 twist_max = OBJECT_TWIST_MAX;
859 twist_inc = OBJECT_TWIST_INC; 861 twist_inc = OBJECT_TWIST_INC;
@@ -867,6 +869,7 @@ void LLPanelObject::getState( )
867 size_is_hole = TRUE; 869 size_is_hole = TRUE;
868 skew_visible = TRUE; 870 skew_visible = TRUE;
869 advanced_cut_visible = TRUE; 871 advanced_cut_visible = TRUE;
872 advanced_is_slice = FALSE;
870 taper_visible = TRUE; 873 taper_visible = TRUE;
871 radius_offset_visible = TRUE; 874 radius_offset_visible = TRUE;
872 revolutions_visible = TRUE; 875 revolutions_visible = TRUE;
@@ -894,8 +897,20 @@ void LLPanelObject::getState( )
894 break; 897 break;
895 898
896 case MI_BOX: 899 case MI_BOX:
900 advanced_cut_visible = TRUE;
901 advanced_is_slice = TRUE;
902 break;
903
897 case MI_CYLINDER: 904 case MI_CYLINDER:
905 advanced_cut_visible = TRUE;
906 advanced_is_slice = TRUE;
907 break;
908
898 case MI_PRISM: 909 case MI_PRISM:
910 advanced_cut_visible = TRUE;
911 advanced_is_slice = TRUE;
912 break;
913
899 default: 914 default:
900 break; 915 break;
901 } 916 }
@@ -987,6 +1002,8 @@ void LLPanelObject::getState( )
987 1002
988 childSetVisible("advanced_cut", FALSE); 1003 childSetVisible("advanced_cut", FALSE);
989 childSetVisible("advanced_dimple", FALSE); 1004 childSetVisible("advanced_dimple", FALSE);
1005 childSetVisible("advanced_slice", FALSE);
1006
990 if (advanced_cut_visible) 1007 if (advanced_cut_visible)
991 { 1008 {
992 if (advanced_is_dimple) 1009 if (advanced_is_dimple)
@@ -994,6 +1011,12 @@ void LLPanelObject::getState( )
994 childSetVisible("advanced_dimple", TRUE); 1011 childSetVisible("advanced_dimple", TRUE);
995 childSetEnabled("advanced_dimple", enabled); 1012 childSetEnabled("advanced_dimple", enabled);
996 } 1013 }
1014
1015 else if (advanced_is_slice)
1016 {
1017 childSetVisible("advanced_slice", TRUE);
1018 childSetEnabled("advanced_slice", enabled);
1019 }
997 else 1020 else
998 { 1021 {
999 childSetVisible("advanced_cut", TRUE); 1022 childSetVisible("advanced_cut", TRUE);
@@ -1889,6 +1912,7 @@ void LLPanelObject::clearCtrls()
1889 childSetEnabled("scale_taper", FALSE); 1912 childSetEnabled("scale_taper", FALSE);
1890 childSetEnabled( "advanced_cut", FALSE ); 1913 childSetEnabled( "advanced_cut", FALSE );
1891 childSetEnabled( "advanced_dimple", FALSE ); 1914 childSetEnabled( "advanced_dimple", FALSE );
1915 childSetVisible("advanced_slice", FALSE);
1892} 1916}
1893 1917
1894// 1918//
diff --git a/linden/indra/newview/lltoolbrush.cpp b/linden/indra/newview/lltoolbrush.cpp
index 0869cf3..214d773 100644
--- a/linden/indra/newview/lltoolbrush.cpp
+++ b/linden/indra/newview/lltoolbrush.cpp
@@ -96,7 +96,7 @@ LLToolBrushLand::LLToolBrushLand()
96 mGotHover(FALSE), 96 mGotHover(FALSE),
97 mBrushSelected(FALSE) 97 mBrushSelected(FALSE)
98{ 98{
99 mBrushIndex = gSavedSettings.getS32("RadioLandBrushSize"); 99 mBrushIndex = gSavedSettings.getS32("LandBrushSize");
100} 100}
101 101
102void LLToolBrushLand::modifyLandAtPointGlobal(const LLVector3d &pos_global, 102void LLToolBrushLand::modifyLandAtPointGlobal(const LLVector3d &pos_global,
@@ -447,7 +447,7 @@ void LLToolBrushLand::render()
447 spot.mdV[VX] = floor( spot.mdV[VX] + 0.5 ); 447 spot.mdV[VX] = floor( spot.mdV[VX] + 0.5 );
448 spot.mdV[VY] = floor( spot.mdV[VY] + 0.5 ); 448 spot.mdV[VY] = floor( spot.mdV[VY] + 0.5 );
449 449
450 mBrushIndex = gSavedSettings.getS32("RadioLandBrushSize"); 450 mBrushIndex = gSavedSettings.getS32("LandBrushSize");
451 region_list_t regions; 451 region_list_t regions;
452 determineAffectedRegions(regions, spot); 452 determineAffectedRegions(regions, spot);
453 453
diff --git a/linden/indra/newview/llviewermenu.cpp b/linden/indra/newview/llviewermenu.cpp
index b1cd9b6..9687e11 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"
@@ -671,10 +672,13 @@ void init_menus()
671 // TomY TODO convert these two 672 // TomY TODO convert these two
672 LLMenuGL*menu; 673 LLMenuGL*menu;
673 674
675 // Advanced (Client) menu is XUI now! \o/
676 /*
674 menu = new LLMenuGL(CLIENT_MENU_NAME); 677 menu = new LLMenuGL(CLIENT_MENU_NAME);
675 init_client_menu(menu); 678 init_client_menu(menu);
676 gMenuBarView->appendMenu( menu ); 679 gMenuBarView->appendMenu( menu );
677 menu->updateParent(LLMenuGL::sMenuContainer); 680 menu->updateParent(LLMenuGL::sMenuContainer);
681 */
678 682
679 menu = new LLMenuGL(SERVER_MENU_NAME); 683 menu = new LLMenuGL(SERVER_MENU_NAME);
680 init_server_menu(menu); 684 init_server_menu(menu);
@@ -6059,6 +6063,18 @@ void queue_actions(LLFloaterScriptQueue* q, const std::string& noscriptmsg, cons
6059 } 6063 }
6060} 6064}
6061 6065
6066
6067class LLToolsSetBulkPerms : public view_listener_t
6068{
6069 bool handleEvent(LLPointer<LLEvent> event, const LLSD& userdata)
6070 {
6071 LLFloaterBulkPermission* queue = NULL;
6072 queue = LLFloaterBulkPermission::create();
6073 return true;
6074 }
6075};
6076
6077
6062class LLToolsSelectedScriptAction : public view_listener_t 6078class LLToolsSelectedScriptAction : public view_listener_t
6063{ 6079{
6064 bool handleEvent(LLPointer<LLEvent> event, const LLSD& userdata) 6080 bool handleEvent(LLPointer<LLEvent> event, const LLSD& userdata)
@@ -7575,7 +7591,2119 @@ class LLWorldDayCycle : public view_listener_t
7575 7591
7576 7592
7577 7593
7578static void addMenu(view_listener_t *menu, const std::string& name) 7594//-------------------------------------------------------------------
7595// Advanced menu
7596//-------------------------------------------------------------------
7597
7598
7599///////////////////
7600// SHOW CONSOLES //
7601///////////////////
7602
7603
7604class LLAdvancedToggleConsole : public view_listener_t
7605{
7606 bool handleEvent(LLPointer<LLEvent> event, const LLSD& userdata)
7607 {
7608 std::string console_type = userdata.asString();
7609 if ("frame" == console_type)
7610 {
7611 toggle_visibility( (void*)gDebugView->mFrameStatView );
7612 }
7613 else if ("texture" == console_type)
7614 {
7615 toggle_visibility( (void*)gTextureView );
7616 }
7617 else if ("debug" == console_type)
7618 {
7619 toggle_visibility( (void*)((LLView*)gDebugView->mDebugConsolep) );
7620 }
7621 else if ("fast timers" == console_type)
7622 {
7623 toggle_visibility( (void*)gDebugView->mFastTimerView );
7624 }
7625 else if ("memory" == console_type)
7626 {
7627 toggle_visibility( (void*)gDebugView->mMemoryView );
7628 }
7629 return true;
7630 }
7631};
7632
7633
7634class LLAdvancedCheckConsole : public view_listener_t
7635{
7636 bool handleEvent(LLPointer<LLEvent> event, const LLSD& userdata)
7637 {
7638 std::string console_type = userdata["data"].asString();
7639 bool new_value = false;
7640 if ("frame" == console_type)
7641 {
7642 new_value = get_visibility( (void*)gDebugView->mFrameStatView );
7643 }
7644 else if ("texture" == console_type)
7645 {
7646 new_value = get_visibility( (void*)gTextureView );
7647 }
7648 else if ("debug" == console_type)
7649 {
7650 new_value = get_visibility( (void*)((LLView*)gDebugView->mDebugConsolep) );
7651 }
7652 else if ("fast timers" == console_type)
7653 {
7654 new_value = get_visibility( (void*)gDebugView->mFastTimerView );
7655 }
7656 else if ("memory" == console_type)
7657 {
7658 new_value = get_visibility( (void*)gDebugView->mMemoryView );
7659 }
7660
7661 std::string control_name = userdata["control"].asString();
7662 gMenuHolder->findControl(control_name)->setValue(new_value);
7663 return true;
7664 }
7665};
7666
7667
7668
7669
7670//////////////////////////
7671// DUMP INFO TO CONSOLE //
7672//////////////////////////
7673
7674
7675class LLAdvancedDumpInfoToConsole : public view_listener_t
7676{
7677 bool handleEvent(LLPointer<LLEvent> event, const LLSD& userdata)
7678 {
7679 std::string info_type = userdata.asString();
7680 if ("region" == info_type)
7681 {
7682 handle_region_dump_settings(NULL);
7683 }
7684 else if ("group" == info_type)
7685 {
7686 handle_dump_group_info(NULL);
7687 }
7688 else if ("capabilities" == info_type)
7689 {
7690 handle_dump_capabilities_info(NULL);
7691 }
7692 return true;
7693 }
7694};
7695
7696
7697
7698///////////////////////////////
7699// RELOAD SETTINGS OVERRIDES //
7700///////////////////////////////
7701
7702
7703class LLAdvancedReloadSettingsOverrides : public view_listener_t
7704{
7705 bool handleEvent(LLPointer<LLEvent> event, const LLSD& userdata)
7706 {
7707 reload_personal_settings_overrides(NULL);
7708 return true;
7709 }
7710};
7711
7712
7713
7714//////////////
7715// HUD INFO //
7716//////////////
7717
7718
7719class LLAdvancedToggleHUDInfo : public view_listener_t
7720{
7721 bool handleEvent(LLPointer<LLEvent> event, const LLSD& userdata)
7722 {
7723 std::string info_type = userdata.asString();
7724 if ("velocity" == info_type)
7725 {
7726 toggle_visibility( (void*)gVelocityBar );
7727 }
7728 else if ("camera" == info_type)
7729 {
7730 gDisplayCameraPos = !(gDisplayCameraPos);
7731 }
7732 else if ("wind" == info_type)
7733 {
7734 gDisplayWindInfo = !(gDisplayWindInfo);
7735 }
7736 else if ("fov" == info_type)
7737 {
7738 gDisplayFOV = !(gDisplayFOV);
7739 }
7740 return true;
7741 }
7742};
7743
7744class LLAdvancedCheckHUDInfo : public view_listener_t
7745{
7746 bool handleEvent(LLPointer<LLEvent> event, const LLSD& userdata)
7747 {
7748 std::string info_type = userdata["data"].asString();
7749 bool new_value = false;
7750 if ("velocity" == info_type)
7751 {
7752 new_value = get_visibility( (void*)gVelocityBar );
7753 }
7754 else if ("camera" == info_type)
7755 {
7756 new_value = gDisplayCameraPos;
7757 }
7758 else if ("wind" == info_type)
7759 {
7760 new_value = gDisplayWindInfo;
7761 }
7762 else if ("fov" == info_type)
7763 {
7764 new_value = gDisplayFOV;
7765 }
7766
7767 std::string control_name = userdata["control"].asString();
7768 gMenuHolder->findControl(control_name)->setValue(new_value);
7769
7770 return true;
7771 }
7772};
7773
7774
7775
7776///////////////////////
7777// CLEAR GROUP CACHE //
7778///////////////////////
7779
7780
7781class LLAdvancedClearGroupCache : public view_listener_t
7782{
7783 bool handleEvent(LLPointer<LLEvent> event, const LLSD& userdata)
7784 {
7785 LLGroupMgr::debugClearAllGroups(NULL);
7786 return true;
7787 }
7788};
7789
7790
7791
7792
7793/////////////////
7794// RENDER TYPE //
7795/////////////////
7796
7797
7798U32 render_type_from_string(std::string render_type)
7799{
7800 if ("simple" == render_type)
7801 {
7802 return LLPipeline::RENDER_TYPE_SIMPLE;
7803 }
7804 else if ("alpha" == render_type)
7805 {
7806 return LLPipeline::RENDER_TYPE_ALPHA;
7807 }
7808 else if ("tree" == render_type)
7809 {
7810 return LLPipeline::RENDER_TYPE_TREE;
7811 }
7812 else if ("avatar" == render_type)
7813 {
7814 return LLPipeline::RENDER_TYPE_AVATAR;
7815 }
7816 else if ("terrain" == render_type)
7817 {
7818 return LLPipeline::RENDER_TYPE_TERRAIN;
7819 }
7820 else if ("sky" == render_type)
7821 {
7822 return LLPipeline::RENDER_TYPE_SKY;
7823 }
7824 else if ("water" == render_type)
7825 {
7826 return LLPipeline::RENDER_TYPE_WATER;
7827 }
7828 else if ("ground" == render_type)
7829 {
7830 return LLPipeline::RENDER_TYPE_GROUND;
7831 }
7832 else if ("volume" == render_type)
7833 {
7834 return LLPipeline::RENDER_TYPE_VOLUME;
7835 }
7836 else if ("grass" == render_type)
7837 {
7838 return LLPipeline::RENDER_TYPE_GRASS;
7839 }
7840 else if ("clouds" == render_type)
7841 {
7842 return LLPipeline::RENDER_TYPE_CLOUDS;
7843 }
7844 else if ("particles" == render_type)
7845 {
7846 return LLPipeline::RENDER_TYPE_PARTICLES;
7847 }
7848 else if ("bump" == render_type)
7849 {
7850 return LLPipeline::RENDER_TYPE_BUMP;
7851 }
7852 else
7853 {
7854 return 0;
7855 }
7856}
7857
7858
7859class LLAdvancedToggleRenderType : public view_listener_t
7860{
7861 bool handleEvent(LLPointer<LLEvent> event, const LLSD& userdata)
7862 {
7863 U32 render_type = render_type_from_string( userdata.asString() );
7864 if ( render_type != 0 )
7865 {
7866 LLPipeline::toggleRenderTypeControl( (void*)render_type );
7867 }
7868 return true;
7869 }
7870};
7871
7872
7873class LLAdvancedCheckRenderType : public view_listener_t
7874{
7875 bool handleEvent(LLPointer<LLEvent> event, const LLSD& userdata)
7876 {
7877 U32 render_type = render_type_from_string( userdata["data"].asString() );
7878 bool new_value = false;
7879
7880 if ( render_type != 0 )
7881 {
7882 new_value = LLPipeline::hasRenderTypeControl( (void*)render_type );
7883 }
7884
7885 std::string control_name = userdata["control"].asString();
7886 gMenuHolder->findControl(control_name)->setValue(new_value);
7887 return true;
7888 }
7889};
7890
7891
7892
7893/////////////
7894// FEATURE //
7895/////////////
7896
7897
7898U32 feature_from_string(std::string feature)
7899{
7900 if ("ui" == feature)
7901 {
7902 return LLPipeline::RENDER_DEBUG_FEATURE_UI;
7903 }
7904 else if ("selected" == feature)
7905 {
7906 return LLPipeline::RENDER_DEBUG_FEATURE_SELECTED;
7907 }
7908 else if ("highlighted" == feature)
7909 {
7910 return LLPipeline::RENDER_DEBUG_FEATURE_HIGHLIGHTED;
7911 }
7912 else if ("dynamic textures" == feature)
7913 {
7914 return LLPipeline::RENDER_DEBUG_FEATURE_DYNAMIC_TEXTURES;
7915 }
7916 else if ("foot shadows" == feature)
7917 {
7918 return LLPipeline::RENDER_DEBUG_FEATURE_FOOT_SHADOWS;
7919 }
7920 else if ("fog" == feature)
7921 {
7922 return LLPipeline::RENDER_DEBUG_FEATURE_FOG;
7923 }
7924 else if ("palette" == feature)
7925 {
7926 return LLPipeline::RENDER_DEBUG_FEATURE_PALETTE;
7927 }
7928 else if ("fr info" == feature)
7929 {
7930 return LLPipeline::RENDER_DEBUG_FEATURE_FR_INFO;
7931 }
7932 else if ("flexible" == feature)
7933 {
7934 return LLPipeline::RENDER_DEBUG_FEATURE_FLEXIBLE;
7935 }
7936 else
7937 {
7938 return 0;
7939 }
7940};
7941
7942
7943class LLAdvancedToggleFeature : public view_listener_t
7944{
7945 bool handleEvent(LLPointer<LLEvent> event, const LLSD& userdata)
7946 {
7947 U32 feature = feature_from_string( userdata.asString() );
7948
7949 if ( feature != 0 )
7950 {
7951 LLPipeline::toggleRenderDebugFeature( (void*)feature );
7952 }
7953
7954 return true;
7955 }
7956};
7957
7958
7959class LLAdvancedCheckFeature : public view_listener_t
7960{
7961 bool handleEvent(LLPointer<LLEvent> event, const LLSD& userdata)
7962 {
7963 U32 feature = feature_from_string( userdata["data"].asString() );
7964 bool new_value = false;
7965
7966 if ( feature != 0 )
7967 {
7968 new_value = LLPipeline::toggleRenderDebugFeatureControl( (void*)feature );
7969 }
7970
7971 std::string control_name = userdata["control"].asString();
7972 gMenuHolder->findControl(control_name)->setValue(new_value);
7973 return true;
7974 }
7975};
7976
7977
7978
7979//////////////////
7980// INFO DISPLAY //
7981//////////////////
7982
7983
7984U32 info_display_from_string(std::string info_display)
7985{
7986 if ("verify" == info_display)
7987 {
7988 return LLPipeline::RENDER_DEBUG_VERIFY;
7989 }
7990 else if ("bboxes" == info_display)
7991 {
7992 return LLPipeline::RENDER_DEBUG_BBOXES;
7993 }
7994 else if ("points" == info_display)
7995 {
7996 return LLPipeline::RENDER_DEBUG_POINTS;
7997 }
7998 else if ("octree" == info_display)
7999 {
8000 return LLPipeline::RENDER_DEBUG_OCTREE;
8001 }
8002 else if ("occlusion" == info_display)
8003 {
8004 return LLPipeline::RENDER_DEBUG_OCCLUSION;
8005 }
8006 else if ("render batches" == info_display)
8007 {
8008 return LLPipeline::RENDER_DEBUG_BATCH_SIZE;
8009 }
8010 else if ("texture anim" == info_display)
8011 {
8012 return LLPipeline::RENDER_DEBUG_TEXTURE_ANIM;
8013 }
8014 else if ("texture priority" == info_display)
8015 {
8016 return LLPipeline::RENDER_DEBUG_TEXTURE_PRIORITY;
8017 }
8018 else if ("shame" == info_display)
8019 {
8020 return LLPipeline::RENDER_DEBUG_SHAME;
8021 }
8022 else if ("texture area" == info_display)
8023 {
8024 return LLPipeline::RENDER_DEBUG_TEXTURE_AREA;
8025 }
8026 else if ("face area" == info_display)
8027 {
8028 return LLPipeline::RENDER_DEBUG_FACE_AREA;
8029 }
8030 else if ("picking" == info_display)
8031 {
8032 return LLPipeline::RENDER_DEBUG_PICKING;
8033 }
8034 else if ("lights" == info_display)
8035 {
8036 return LLPipeline::RENDER_DEBUG_LIGHTS;
8037 }
8038 else if ("particles" == info_display)
8039 {
8040 return LLPipeline::RENDER_DEBUG_PARTICLES;
8041 }
8042 else if ("composition" == info_display)
8043 {
8044 return LLPipeline::RENDER_DEBUG_COMPOSITION;
8045 }
8046 else if ("glow" == info_display)
8047 {
8048 return LLPipeline::RENDER_DEBUG_GLOW;
8049 }
8050 else
8051 {
8052 return 0;
8053 }
8054};
8055
8056
8057class LLAdvancedToggleInfoDisplay : public view_listener_t
8058{
8059 bool handleEvent(LLPointer<LLEvent> event, const LLSD& userdata)
8060 {
8061 U32 info_display = info_display_from_string( userdata.asString() );
8062
8063 if ( info_display != 0 )
8064 {
8065 LLPipeline::toggleRenderDebug( (void*)info_display );
8066 }
8067
8068 return true;
8069 }
8070};
8071
8072
8073class LLAdvancedCheckInfoDisplay : public view_listener_t
8074{
8075 bool handleEvent(LLPointer<LLEvent> event, const LLSD& userdata)
8076 {
8077 U32 info_display = info_display_from_string( userdata["data"].asString() );
8078 bool new_value = false;
8079
8080 if ( info_display != 0 )
8081 {
8082 new_value = LLPipeline::toggleRenderDebugControl( (void*)info_display );
8083 }
8084
8085 std::string control_name = userdata["control"].asString();
8086 gMenuHolder->findControl(control_name)->setValue(new_value);
8087 return true;
8088 }
8089};
8090
8091
8092
8093///////////////////
8094// SELECT BUFFER //
8095///////////////////
8096
8097
8098class LLAdvancedToggleSelectBuffer : public view_listener_t
8099{
8100 bool handleEvent(LLPointer<LLEvent> event, const LLSD& userdata)
8101 {
8102 gDebugSelect = !(gDebugSelect);
8103 return true;
8104 }
8105};
8106
8107class LLAdvancedCheckSelectBuffer : public view_listener_t
8108{
8109 bool handleEvent(LLPointer<LLEvent> event, const LLSD& userdata)
8110 {
8111 bool new_value = gDebugSelect;
8112 std::string control_name = userdata["control"].asString();
8113 gMenuHolder->findControl(control_name)->setValue(new_value);
8114 return true;
8115 }
8116};
8117
8118
8119
8120/////////////////////////
8121// RANDOMIZE FRAMERATE //
8122/////////////////////////
8123
8124
8125class LLAdvancedToggleRandomizeFramerate : public view_listener_t
8126{
8127 bool handleEvent(LLPointer<LLEvent> event, const LLSD& userdata)
8128 {
8129 gRandomizeFramerate = !(gRandomizeFramerate);
8130 return true;
8131 }
8132};
8133
8134class LLAdvancedCheckRandomizeFramerate : public view_listener_t
8135{
8136 bool handleEvent(LLPointer<LLEvent> event, const LLSD& userdata)
8137 {
8138 bool new_value = gRandomizeFramerate;
8139 std::string control_name = userdata["control"].asString();
8140 gMenuHolder->findControl(control_name)->setValue(new_value);
8141 return true;
8142 }
8143};
8144
8145
8146
8147/////////////////////////
8148// PERIODIC SLOW FRAME //
8149/////////////////////////
8150
8151
8152class LLAdvancedTogglePeriodicSlowFrame : public view_listener_t
8153{
8154 bool handleEvent(LLPointer<LLEvent> event, const LLSD& userdata)
8155 {
8156 gPeriodicSlowFrame = !(gPeriodicSlowFrame);
8157 return true;
8158 }
8159};
8160
8161class LLAdvancedCheckPeriodicSlowFrame : public view_listener_t
8162{
8163 bool handleEvent(LLPointer<LLEvent> event, const LLSD& userdata)
8164 {
8165 bool new_value = gPeriodicSlowFrame;
8166 std::string control_name = userdata["control"].asString();
8167 gMenuHolder->findControl(control_name)->setValue(new_value);
8168 return true;
8169 }
8170};
8171
8172
8173
8174////////////////
8175// FRAME TEST //
8176////////////////
8177
8178
8179class LLAdvancedToggleFrameTest : public view_listener_t
8180{
8181 bool handleEvent(LLPointer<LLEvent> event, const LLSD& userdata)
8182 {
8183 LLPipeline::sRenderFrameTest = !(LLPipeline::sRenderFrameTest);
8184 return true;
8185 }
8186};
8187
8188class LLAdvancedCheckFrameTest : public view_listener_t
8189{
8190 bool handleEvent(LLPointer<LLEvent> event, const LLSD& userdata)
8191 {
8192 bool new_value = LLPipeline::sRenderFrameTest;
8193 std::string control_name = userdata["control"].asString();
8194 gMenuHolder->findControl(control_name)->setValue(new_value);
8195 return true;
8196 }
8197};
8198
8199
8200
8201///////////////////////////
8202// HIDE SELECTED OBJECTS //
8203///////////////////////////
8204
8205
8206class LLAdvancedToggleHideSelectedObjects : public view_listener_t
8207{
8208 bool handleEvent(LLPointer<LLEvent> event, const LLSD& userdata)
8209 {
8210 gHideSelectedObjects = !(gHideSelectedObjects);
8211 return true;
8212 }
8213};
8214
8215class LLAdvancedCheckHideSelectedObjects : public view_listener_t
8216{
8217 bool handleEvent(LLPointer<LLEvent> event, const LLSD& userdata)
8218 {
8219 bool new_value = gHideSelectedObjects;
8220 std::string control_name = userdata["control"].asString();
8221 gMenuHolder->findControl(control_name)->setValue(new_value);
8222 return true;
8223 }
8224};
8225
8226
8227
8228///////////////////////////
8229// SELECTED TEXTURE INFO //
8230///////////////////////////
8231
8232
8233class LLAdvancedSelectedTextureInfo : public view_listener_t
8234{
8235 bool handleEvent(LLPointer<LLEvent> event, const LLSD& userdata)
8236 {
8237 handle_selected_texture_info(NULL);
8238 return true;
8239 }
8240};
8241
8242
8243
8244//////////////////////
8245// TOGGLE WIREFRAME //
8246//////////////////////
8247
8248
8249class LLAdvancedToggleWireframe : public view_listener_t
8250{
8251 bool handleEvent(LLPointer<LLEvent> event, const LLSD& userdata)
8252 {
8253 gUseWireframe = !(gUseWireframe);
8254 return true;
8255 }
8256};
8257
8258class LLAdvancedCheckWireframe : public view_listener_t
8259{
8260 bool handleEvent(LLPointer<LLEvent> event, const LLSD& userdata)
8261 {
8262 bool new_value = gUseWireframe;
8263 std::string control_name = userdata["control"].asString();
8264 gMenuHolder->findControl(control_name)->setValue(new_value);
8265 return true;
8266 }
8267};
8268
8269
8270
8271//////////////////////
8272// DISABLE TEXTURES //
8273//////////////////////
8274
8275
8276class LLAdvancedToggleDisableTextures : public view_listener_t
8277{
8278 bool handleEvent(LLPointer<LLEvent> event, const LLSD& userdata)
8279 {
8280 menu_toggle_variable((void*)&LLViewerImage::sDontLoadVolumeTextures);
8281 return true;
8282 }
8283};
8284
8285class LLAdvancedCheckDisableTextures : public view_listener_t
8286{
8287 bool handleEvent(LLPointer<LLEvent> event, const LLSD& userdata)
8288 {
8289 bool new_value = menu_check_variable((void*)&LLViewerImage::sDontLoadVolumeTextures);
8290 std::string control_name = userdata["control"].asString();
8291 gMenuHolder->findControl(control_name)->setValue(new_value);
8292 return true;
8293 }
8294};
8295
8296
8297
8298//////////////////////////
8299// DUMP SCRIPTED CAMERA //
8300//////////////////////////
8301
8302
8303class LLAdvancedDumpScriptedCamera : public view_listener_t
8304{
8305 bool handleEvent(LLPointer<LLEvent> event, const LLSD& userdata)
8306 {
8307 handle_dump_followcam(NULL);
8308 return true;
8309 }
8310};
8311
8312
8313
8314//////////////////////////////
8315// DUMP REGION OBJECT CACHE //
8316//////////////////////////////
8317
8318
8319class LLAdvancedDumpRegionObjectCache : public view_listener_t
8320{
8321 bool handleEvent(LLPointer<LLEvent> event, const LLSD& userdata)
8322 {
8323 handle_dump_region_object_cache(NULL);
8324 return true;
8325 }
8326};
8327
8328
8329
8330////////////////
8331// SLURL TEST //
8332////////////////
8333
8334
8335class LLAdvancedSLURLTest : public view_listener_t
8336{
8337 bool handleEvent(LLPointer<LLEvent> event, const LLSD& userdata)
8338 {
8339 handle_slurl_test(NULL);
8340 return true;
8341 }
8342};
8343
8344
8345
8346////////////////////////
8347// TOGGLE EDITABLE UI //
8348////////////////////////
8349
8350
8351class LLAdvancedToggleEditableUI : public view_listener_t
8352{
8353 bool handleEvent(LLPointer<LLEvent> event, const LLSD& userdata)
8354 {
8355 edit_ui(NULL);
8356 return true;
8357 }
8358};
8359
8360// *TODO: Add corresponding "Check" for EditableUI, so it can
8361// become a menu_item_check. Need to add check_edit_ui(void*)
8362// or functional equivalent to do that.
8363
8364
8365
8366//////////////////////
8367// ASYNC KEYSTROKES //
8368//////////////////////
8369
8370
8371class LLAdvancedToggleAsyncKeystrokes : public view_listener_t
8372{
8373 bool handleEvent(LLPointer<LLEvent> event, const LLSD& userdata)
8374 {
8375 gHandleKeysAsync = !(gHandleKeysAsync);
8376 return true;
8377 }
8378};
8379
8380class LLAdvancedCheckAsyncKeystrokes : public view_listener_t
8381{
8382 bool handleEvent(LLPointer<LLEvent> event, const LLSD& userdata)
8383 {
8384 bool new_value = gHandleKeysAsync;
8385 std::string control_name = userdata["control"].asString();
8386 gMenuHolder->findControl(control_name)->setValue(new_value);
8387 return true;
8388 }
8389};
8390
8391
8392
8393/////////////////////
8394// DUMP SELECT MGR //
8395/////////////////////
8396
8397
8398class LLAdvancedDumpSelectMgr : public view_listener_t
8399{
8400 bool handleEvent(LLPointer<LLEvent> event, const LLSD& userdata)
8401 {
8402 dump_select_mgr(NULL);
8403 return true;
8404 }
8405};
8406
8407
8408
8409////////////////////
8410// DUMP INVENTORY //
8411////////////////////
8412
8413
8414class LLAdvancedDumpInventory : public view_listener_t
8415{
8416 bool handleEvent(LLPointer<LLEvent> event, const LLSD& userdata)
8417 {
8418 dump_inventory(NULL);
8419 return true;
8420 }
8421};
8422
8423
8424
8425///////////////////////
8426// DUMP FOCUS HOLDER //
8427///////////////////////
8428
8429
8430class LLAdvancedDumpFocusHolder : public view_listener_t
8431{
8432 bool handleEvent(LLPointer<LLEvent> event, const LLSD& userdata)
8433 {
8434 handle_dump_focus(NULL);
8435 return true;
8436 }
8437};
8438
8439
8440
8441////////////////////////////////
8442// PRINT SELECTED OBJECT INFO //
8443////////////////////////////////
8444
8445
8446class LLAdvancedPrintSelectedObjectInfo : public view_listener_t
8447{
8448 bool handleEvent(LLPointer<LLEvent> event, const LLSD& userdata)
8449 {
8450 print_object_info(NULL);
8451 return true;
8452 }
8453};
8454
8455
8456
8457//////////////////////
8458// PRINT AGENT INFO //
8459//////////////////////
8460
8461
8462class LLAdvancedPrintAgentInfo : public view_listener_t
8463{
8464 bool handleEvent(LLPointer<LLEvent> event, const LLSD& userdata)
8465 {
8466 print_agent_nvpairs(NULL);
8467 return true;
8468 }
8469};
8470
8471
8472
8473////////////////////////////////
8474// PRINT TEXTURE MEMORY STATS //
8475////////////////////////////////
8476
8477
8478class LLAdvancedPrintTextureMemoryStats : public view_listener_t
8479{
8480 bool handleEvent(LLPointer<LLEvent> event, const LLSD& userdata)
8481 {
8482 output_statistics(NULL);
8483 return true;
8484 }
8485};
8486
8487
8488
8489//////////////////////
8490// DEBUG SELECT MGR //
8491//////////////////////
8492
8493
8494class LLAdvancedToggleDebugSelectMgr : public view_listener_t
8495{
8496 bool handleEvent(LLPointer<LLEvent> event, const LLSD& userdata)
8497 {
8498 gDebugSelectMgr = !(gDebugSelectMgr);
8499 return true;
8500 }
8501};
8502
8503class LLAdvancedCheckDebugSelectMgr : public view_listener_t
8504{
8505 bool handleEvent(LLPointer<LLEvent> event, const LLSD& userdata)
8506 {
8507 bool new_value = gDebugSelectMgr;
8508 std::string control_name = userdata["control"].asString();
8509 gMenuHolder->findControl(control_name)->setValue(new_value);
8510 return true;
8511 }
8512};
8513
8514
8515
8516//////////////////
8517// DEBUG CLICKS //
8518//////////////////
8519
8520
8521class LLAdvancedToggleDebugClicks : public view_listener_t
8522{
8523 bool handleEvent(LLPointer<LLEvent> event, const LLSD& userdata)
8524 {
8525 gDebugClicks = !(gDebugClicks);
8526 return true;
8527 }
8528};
8529
8530class LLAdvancedCheckDebugClicks : public view_listener_t
8531{
8532 bool handleEvent(LLPointer<LLEvent> event, const LLSD& userdata)
8533 {
8534 bool new_value = gDebugClicks;
8535 std::string control_name = userdata["control"].asString();
8536 gMenuHolder->findControl(control_name)->setValue(new_value);
8537 return true;
8538 }
8539};
8540
8541
8542
8543/////////////////
8544// DEBUG VIEWS //
8545/////////////////
8546
8547
8548class LLAdvancedToggleDebugViews : public view_listener_t
8549{
8550 bool handleEvent(LLPointer<LLEvent> event, const LLSD& userdata)
8551 {
8552 LLView::sDebugRects = !(LLView::sDebugRects);
8553 return true;
8554 }
8555};
8556
8557class LLAdvancedCheckDebugViews : public view_listener_t
8558{
8559 bool handleEvent(LLPointer<LLEvent> event, const LLSD& userdata)
8560 {
8561 bool new_value = LLView::sDebugRects;
8562 std::string control_name = userdata["control"].asString();
8563 gMenuHolder->findControl(control_name)->setValue(new_value);
8564 return true;
8565 }
8566};
8567
8568
8569
8570///////////////////////
8571// XUI NAME TOOLTIPS //
8572///////////////////////
8573
8574
8575class LLAdvancedToggleXUINameTooltips : public view_listener_t
8576{
8577 bool handleEvent(LLPointer<LLEvent> event, const LLSD& userdata)
8578 {
8579 toggle_show_xui_names(NULL);
8580 return true;
8581 }
8582};
8583
8584class LLAdvancedCheckXUINameTooltips : public view_listener_t
8585{
8586 bool handleEvent(LLPointer<LLEvent> event, const LLSD& userdata)
8587 {
8588 bool new_value = check_show_xui_names(NULL);
8589 std::string control_name = userdata["control"].asString();
8590 gMenuHolder->findControl(control_name)->setValue(new_value);
8591 return true;
8592 }
8593};
8594
8595
8596
8597////////////////////////
8598// DEBUG MOUSE EVENTS //
8599////////////////////////
8600
8601
8602class LLAdvancedToggleDebugMouseEvents : public view_listener_t
8603{
8604 bool handleEvent(LLPointer<LLEvent> event, const LLSD& userdata)
8605 {
8606 LLView::sDebugMouseHandling = !(LLView::sDebugMouseHandling);
8607 return true;
8608 }
8609};
8610
8611class LLAdvancedCheckDebugMouseEvents : public view_listener_t
8612{
8613 bool handleEvent(LLPointer<LLEvent> event, const LLSD& userdata)
8614 {
8615 bool new_value = LLView::sDebugMouseHandling;
8616 std::string control_name = userdata["control"].asString();
8617 gMenuHolder->findControl(control_name)->setValue(new_value);
8618 return true;
8619 }
8620};
8621
8622
8623
8624////////////////
8625// DEBUG KEYS //
8626////////////////
8627
8628
8629class LLAdvancedToggleDebugKeys : public view_listener_t
8630{
8631 bool handleEvent(LLPointer<LLEvent> event, const LLSD& userdata)
8632 {
8633 LLView::sDebugKeys = !(LLView::sDebugKeys);
8634 return true;
8635 }
8636};
8637
8638class LLAdvancedCheckDebugKeys : public view_listener_t
8639{
8640 bool handleEvent(LLPointer<LLEvent> event, const LLSD& userdata)
8641 {
8642 bool new_value = LLView::sDebugKeys;
8643 std::string control_name = userdata["control"].asString();
8644 gMenuHolder->findControl(control_name)->setValue(new_value);
8645 return true;
8646 }
8647};
8648
8649
8650
8651///////////////////////
8652// DEBUG WINDOW PROC //
8653///////////////////////
8654
8655
8656class LLAdvancedToggleDebugWindowProc : public view_listener_t
8657{
8658 bool handleEvent(LLPointer<LLEvent> event, const LLSD& userdata)
8659 {
8660 gDebugWindowProc = !(gDebugWindowProc);
8661 return true;
8662 }
8663};
8664
8665class LLAdvancedCheckDebugWindowProc : public view_listener_t
8666{
8667 bool handleEvent(LLPointer<LLEvent> event, const LLSD& userdata)
8668 {
8669 bool new_value = gDebugWindowProc;
8670 std::string control_name = userdata["control"].asString();
8671 gMenuHolder->findControl(control_name)->setValue(new_value);
8672 return true;
8673 }
8674};
8675
8676
8677
8678////////////////////////////
8679// DEBUG TEXT EDITOR TIPS //
8680////////////////////////////
8681
8682
8683class LLAdvancedToggleDebugTextEditorTips : public view_listener_t
8684{
8685 bool handleEvent(LLPointer<LLEvent> event, const LLSD& userdata)
8686 {
8687 gDebugTextEditorTips = !(gDebugTextEditorTips);
8688 return true;
8689 }
8690};
8691
8692class LLAdvancedCheckDebugTextEditorTips : public view_listener_t
8693{
8694 bool handleEvent(LLPointer<LLEvent> event, const LLSD& userdata)
8695 {
8696 bool new_value = gDebugTextEditorTips;
8697 std::string control_name = userdata["control"].asString();
8698 gMenuHolder->findControl(control_name)->setValue(new_value);
8699 return true;
8700 }
8701};
8702
8703
8704
8705///////////////////////
8706// SHOW FLOATER TEST //
8707///////////////////////
8708
8709
8710class LLAdvancedShowFloaterTest : public view_listener_t
8711{
8712 bool handleEvent(LLPointer<LLEvent> event, const LLSD& userdata)
8713 {
8714 LLFloaterTest::show(NULL);
8715 return true;
8716 }
8717};
8718
8719
8720
8721/////////////////////////
8722// EXPORT MENUS TO XML //
8723/////////////////////////
8724
8725
8726class LLAdvancedExportMenusToXML : public view_listener_t
8727{
8728 bool handleEvent(LLPointer<LLEvent> event, const LLSD& userdata)
8729 {
8730 handle_export_menus_to_xml(NULL);
8731 return true;
8732 }
8733};
8734
8735
8736
8737/////////////
8738// EDIT UI //
8739/////////////
8740
8741
8742class LLAdvancedEditUI : public view_listener_t
8743{
8744 bool handleEvent(LLPointer<LLEvent> event, const LLSD& userdata)
8745 {
8746 LLFloaterEditUI::show(NULL);
8747 return true;
8748 }
8749};
8750
8751
8752
8753//////////////////////
8754// LOAD UI FROM XML //
8755//////////////////////
8756
8757
8758class LLAdvancedLoadUIFromXML : public view_listener_t
8759{
8760 bool handleEvent(LLPointer<LLEvent> event, const LLSD& userdata)
8761 {
8762 handle_load_from_xml(NULL);
8763 return true;
8764 }
8765};
8766
8767
8768
8769////////////////////
8770// SAVE UI TO XML //
8771////////////////////
8772
8773
8774class LLAdvancedSaveUIToXML : public view_listener_t
8775{
8776 bool handleEvent(LLPointer<LLEvent> event, const LLSD& userdata)
8777 {
8778 handle_save_to_xml(NULL);
8779 return true;
8780 }
8781};
8782
8783
8784
8785///////////////
8786// XUI NAMES //
8787///////////////
8788
8789
8790class LLAdvancedToggleXUINames : public view_listener_t
8791{
8792 bool handleEvent(LLPointer<LLEvent> event, const LLSD& userdata)
8793 {
8794 toggle_show_xui_names(NULL);
8795 return true;
8796 }
8797};
8798
8799class LLAdvancedCheckXUINames : public view_listener_t
8800{
8801 bool handleEvent(LLPointer<LLEvent> event, const LLSD& userdata)
8802 {
8803 bool new_value = check_show_xui_names(NULL);
8804 std::string control_name = userdata["control"].asString();
8805 gMenuHolder->findControl(control_name)->setValue(new_value);
8806 return true;
8807 }
8808};
8809
8810
8811
8812////////////////////////
8813// GRAB BAKED TEXTURE //
8814////////////////////////
8815
8816
8817class LLAdvancedGrabBakedTexture : public view_listener_t
8818{
8819 bool handleEvent(LLPointer<LLEvent> event, const LLSD& userdata)
8820 {
8821 std::string texture_type = userdata.asString();
8822 if ("eyes" == texture_type)
8823 {
8824 handle_grab_texture( (void*)LLVOAvatar::TEX_EYES_BAKED );
8825 }
8826 else if ("head" == texture_type)
8827 {
8828 handle_grab_texture( (void*)LLVOAvatar::TEX_HEAD_BAKED );
8829 }
8830 else if ("upper" == texture_type)
8831 {
8832 handle_grab_texture( (void*)LLVOAvatar::TEX_UPPER_BAKED );
8833 }
8834 else if ("lower" == texture_type)
8835 {
8836 handle_grab_texture( (void*)LLVOAvatar::TEX_SKIRT_BAKED );
8837 }
8838 else if ("skirt" == texture_type)
8839 {
8840 handle_grab_texture( (void*)LLVOAvatar::TEX_SKIRT_BAKED );
8841 }
8842
8843 return true;
8844 }
8845};
8846
8847class LLAdvancedEnableGrabBakedTexture : public view_listener_t
8848{
8849 bool handleEvent(LLPointer<LLEvent> event, const LLSD& userdata)
8850 {
8851 std::string texture_type = userdata["data"].asString();
8852 bool new_value = false;
8853
8854 if ("iris" == texture_type)
8855 {
8856 new_value = enable_grab_texture( (void*)LLVOAvatar::TEX_EYES_BAKED );
8857 }
8858 else if ("head" == texture_type)
8859 {
8860 new_value = enable_grab_texture( (void*)LLVOAvatar::TEX_HEAD_BAKED );
8861 }
8862 else if ("upper" == texture_type)
8863 {
8864 new_value = enable_grab_texture( (void*)LLVOAvatar::TEX_UPPER_BAKED );
8865 }
8866 else if ("lower" == texture_type)
8867 {
8868 new_value = enable_grab_texture( (void*)LLVOAvatar::TEX_LOWER_BAKED );
8869 }
8870 else if ("skirt" == texture_type)
8871 {
8872 new_value = enable_grab_texture( (void*)LLVOAvatar::TEX_SKIRT_BAKED );
8873 }
8874
8875 std::string control_name = userdata["control"].asString();
8876 gMenuHolder->findControl(control_name)->setValue(new_value);
8877 return true;
8878 }
8879};
8880
8881
8882
8883//////////////////////
8884// ALLOW IDLE / AFK //
8885//////////////////////
8886
8887
8888class LLAdvancedToggleAllowIdleAFK : public view_listener_t
8889{
8890 bool handleEvent(LLPointer<LLEvent> event, const LLSD& userdata)
8891 {
8892 gAllowIdleAFK = !(gAllowIdleAFK);
8893 return true;
8894 }
8895};
8896
8897class LLAdvancedCheckAllowIdleAFK : public view_listener_t
8898{
8899 bool handleEvent(LLPointer<LLEvent> event, const LLSD& userdata)
8900 {
8901 bool new_value = gAllowIdleAFK;
8902 std::string control_name = userdata["control"].asString();
8903 gMenuHolder->findControl(control_name)->setValue(new_value);
8904 return true;
8905 }
8906};
8907
8908
8909
8910///////////////////////
8911// APPEARANCE TO XML //
8912///////////////////////
8913
8914
8915class LLAdvancedAppearanceToXML : public view_listener_t
8916{
8917 bool handleEvent(LLPointer<LLEvent> event, const LLSD& userdata)
8918 {
8919 LLVOAvatar::dumpArchetypeXML(NULL);
8920 return true;
8921 }
8922};
8923
8924
8925
8926///////////////////////////////
8927// TOGGLE CHARACTER GEOMETRY //
8928///////////////////////////////
8929
8930
8931class LLAdvancedToggleCharacterGeometry : public view_listener_t
8932{
8933 bool handleEvent(LLPointer<LLEvent> event, const LLSD& userdata)
8934 {
8935 handle_god_request_avatar_geometry(NULL);
8936 return true;
8937 }
8938};
8939
8940class LLAdvancedEnableCharacterGeometry : public view_listener_t
8941{
8942 bool handleEvent(LLPointer<LLEvent> event, const LLSD& userdata)
8943 {
8944 enable_god_customer_service(NULL);
8945 return true;
8946 }
8947};
8948
8949
8950
8951/////////////////////////////
8952// TEST MALE / TEST FEMALE //
8953/////////////////////////////
8954
8955
8956class LLAdvancedTestMale : public view_listener_t
8957{
8958 bool handleEvent(LLPointer<LLEvent> event, const LLSD& userdata)
8959 {
8960 handle_test_male(NULL);
8961 return true;
8962 }
8963};
8964
8965
8966class LLAdvancedTestFemale : public view_listener_t
8967{
8968 bool handleEvent(LLPointer<LLEvent> event, const LLSD& userdata)
8969 {
8970 handle_test_female(NULL);
8971 return true;
8972 }
8973};
8974
8975
8976
8977///////////////
8978// TOGGLE PG //
8979///////////////
8980
8981
8982class LLAdvancedTogglePG : public view_listener_t
8983{
8984 bool handleEvent(LLPointer<LLEvent> event, const LLSD& userdata)
8985 {
8986 handle_toggle_pg(NULL);
8987 return true;
8988 }
8989};
8990
8991
8992
8993/////////////////////////
8994// ALLOW SELECT AVATAR //
8995/////////////////////////
8996
8997
8998class LLAdvancedToggleAllowSelectAvatar : public view_listener_t
8999{
9000 bool handleEvent(LLPointer<LLEvent> event, const LLSD& userdata)
9001 {
9002 gAllowSelectAvatar = !(gAllowSelectAvatar);
9003 return true;
9004 }
9005};
9006
9007class LLAdvancedCheckAllowSelectAvatar : public view_listener_t
9008{
9009 bool handleEvent(LLPointer<LLEvent> event, const LLSD& userdata)
9010 {
9011 bool new_value = gAllowSelectAvatar;
9012 std::string control_name = userdata["control"].asString();
9013 gMenuHolder->findControl(control_name)->setValue(new_value);
9014 return true;
9015 }
9016};
9017
9018
9019
9020////////////////////////////
9021// ALLOW TAP-TAP-HOLD RUN //
9022////////////////////////////
9023
9024
9025class LLAdvancedToggleAllowTapTapHoldRun : public view_listener_t
9026{
9027 bool handleEvent(LLPointer<LLEvent> event, const LLSD& userdata)
9028 {
9029 gAllowTapTapHoldRun = !(gAllowTapTapHoldRun);
9030 return true;
9031 }
9032};
9033
9034class LLAdvancedCheckAllowTapTapHoldRun : public view_listener_t
9035{
9036 bool handleEvent(LLPointer<LLEvent> event, const LLSD& userdata)
9037 {
9038 bool new_value = gAllowTapTapHoldRun;
9039 std::string control_name = userdata["control"].asString();
9040 gMenuHolder->findControl(control_name)->setValue(new_value);
9041 return true;
9042 }
9043};
9044
9045
9046
9047/////////////////////////////
9048// FORCE PARAMS TO DEFAULT //
9049/////////////////////////////
9050
9051
9052class LLAdvancedForceParamsToDefault : public view_listener_t
9053{
9054 bool handleEvent(LLPointer<LLEvent> event, const LLSD& userdata)
9055 {
9056 LLAgent::clearVisualParams(NULL);
9057 return true;
9058 }
9059};
9060
9061
9062
9063//////////////////////////
9064// RELOAD VERTEX SHADER //
9065//////////////////////////
9066
9067
9068class LLAdvancedReloadVertexShader : public view_listener_t
9069{
9070 bool handleEvent(LLPointer<LLEvent> event, const LLSD& userdata)
9071 {
9072 reload_vertex_shader(NULL);
9073 return true;
9074 }
9075};
9076
9077
9078
9079////////////////////
9080// ANIMATION INFO //
9081////////////////////
9082
9083
9084class LLAdvancedToggleAnimationInfo : public view_listener_t
9085{
9086 bool handleEvent(LLPointer<LLEvent> event, const LLSD& userdata)
9087 {
9088 LLVOAvatar::sShowAnimationDebug = !(LLVOAvatar::sShowAnimationDebug);
9089 return true;
9090 }
9091};
9092
9093class LLAdvancedCheckAnimationInfo : public view_listener_t
9094{
9095 bool handleEvent(LLPointer<LLEvent> event, const LLSD& userdata)
9096 {
9097 bool new_value = LLVOAvatar::sShowAnimationDebug;
9098 std::string control_name = userdata["control"].asString();
9099 gMenuHolder->findControl(control_name)->setValue(new_value);
9100 return true;
9101 }
9102};
9103
9104
9105
9106////////////////////////////
9107// SLOW MOTION ANIMATIONS //
9108////////////////////////////
9109
9110
9111class LLAdvancedToggleSlowMotionAnimations : public view_listener_t
9112{
9113 bool handleEvent(LLPointer<LLEvent> event, const LLSD& userdata)
9114 {
9115 slow_mo_animations(NULL);
9116 return true;
9117 }
9118};
9119
9120// *TODO: Add a corresponding "Check" event for SlowMotionAnimations,
9121// so that it can become a menu_item_check with the "X" indicator.
9122// See indra/newview/skins/xui/en_us/menu_viewer.xml
9123
9124
9125
9126//////////////////
9127// SHOW LOOK AT //
9128//////////////////
9129
9130
9131class LLAdvancedToggleShowLookAt : public view_listener_t
9132{
9133 bool handleEvent(LLPointer<LLEvent> event, const LLSD& userdata)
9134 {
9135 LLHUDEffectLookAt::sDebugLookAt = !(LLHUDEffectLookAt::sDebugLookAt);
9136 return true;
9137 }
9138};
9139
9140class LLAdvancedCheckShowLookAt : public view_listener_t
9141{
9142 bool handleEvent(LLPointer<LLEvent> event, const LLSD& userdata)
9143 {
9144 bool new_value = LLHUDEffectLookAt::sDebugLookAt;
9145 std::string control_name = userdata["control"].asString();
9146 gMenuHolder->findControl(control_name)->setValue(new_value);
9147 return true;
9148 }
9149};
9150
9151
9152
9153///////////////////
9154// SHOW POINT AT //
9155///////////////////
9156
9157
9158class LLAdvancedToggleShowPointAt : public view_listener_t
9159{
9160 bool handleEvent(LLPointer<LLEvent> event, const LLSD& userdata)
9161 {
9162 LLHUDEffectPointAt::sDebugPointAt = !(LLHUDEffectPointAt::sDebugPointAt);
9163 return true;
9164 }
9165};
9166
9167class LLAdvancedCheckShowPointAt : public view_listener_t
9168{
9169 bool handleEvent(LLPointer<LLEvent> event, const LLSD& userdata)
9170 {
9171 bool new_value = LLHUDEffectPointAt::sDebugPointAt;
9172 std::string control_name = userdata["control"].asString();
9173 gMenuHolder->findControl(control_name)->setValue(new_value);
9174 return true;
9175 }
9176};
9177
9178
9179
9180/////////////////////////
9181// DEBUG JOINT UPDATES //
9182/////////////////////////
9183
9184
9185class LLAdvancedToggleDebugJointUpdates : public view_listener_t
9186{
9187 bool handleEvent(LLPointer<LLEvent> event, const LLSD& userdata)
9188 {
9189 LLVOAvatar::sJointDebug = !(LLVOAvatar::sJointDebug);
9190 return true;
9191 }
9192};
9193
9194class LLAdvancedCheckDebugJointUpdates : public view_listener_t
9195{
9196 bool handleEvent(LLPointer<LLEvent> event, const LLSD& userdata)
9197 {
9198 bool new_value = LLVOAvatar::sJointDebug;
9199 std::string control_name = userdata["control"].asString();
9200 gMenuHolder->findControl(control_name)->setValue(new_value);
9201 return true;
9202 }
9203};
9204
9205
9206
9207/////////////////
9208// DISABLE LOD //
9209/////////////////
9210
9211
9212class LLAdvancedToggleDisableLOD : public view_listener_t
9213{
9214 bool handleEvent(LLPointer<LLEvent> event, const LLSD& userdata)
9215 {
9216 LLViewerJoint::sDisableLOD = !(LLViewerJoint::sDisableLOD);
9217 return true;
9218 }
9219};
9220
9221class LLAdvancedCheckDisableLOD : public view_listener_t
9222{
9223 bool handleEvent(LLPointer<LLEvent> event, const LLSD& userdata)
9224 {
9225 bool new_value = LLViewerJoint::sDisableLOD;
9226 std::string control_name = userdata["control"].asString();
9227 gMenuHolder->findControl(control_name)->setValue(new_value);
9228 return true;
9229 }
9230};
9231
9232
9233
9234/////////////////////////
9235// DEBUG CHARACTER VIS //
9236/////////////////////////
9237
9238
9239class LLAdvancedToggleDebugCharacterVis : public view_listener_t
9240{
9241 bool handleEvent(LLPointer<LLEvent> event, const LLSD& userdata)
9242 {
9243 LLVOAvatar::sDebugInvisible = !(LLVOAvatar::sDebugInvisible);
9244 return true;
9245 }
9246};
9247
9248class LLAdvancedCheckDebugCharacterVis : public view_listener_t
9249{
9250 bool handleEvent(LLPointer<LLEvent> event, const LLSD& userdata)
9251 {
9252 bool new_value = LLVOAvatar::sDebugInvisible;
9253 std::string control_name = userdata["control"].asString();
9254 gMenuHolder->findControl(control_name)->setValue(new_value);
9255 return true;
9256 }
9257};
9258
9259
9260
9261//////////////////////////
9262// SHOW COLLISION PLANE //
9263//////////////////////////
9264
9265/***************************
9266 *
9267 * Disabled. See DEV-14477
9268 *
9269 ***************************
9270
9271class LLAdvancedToggleShowCollisionPlane : public view_listener_t
9272{
9273 bool handleEvent(LLPointer<LLEvent> event, const LLSD& userdata)
9274 {
9275 LLVOAvatar::sShowFootPlane = !(LLVOAvatar::sShowFootPlane);
9276 return true;
9277 }
9278};
9279
9280class LLAdvancedCheckShowCollisionPlane : public view_listener_t
9281{
9282 bool handleEvent(LLPointer<LLEvent> event, const LLSD& userdata)
9283 {
9284 bool new_value = LLVOAvatar::sShowFootPlane;
9285 std::string control_name = userdata["control"].asString();
9286 gMenuHolder->findControl(control_name)->setValue(new_value);
9287 return true;
9288 }
9289};
9290
9291***************************/
9292
9293
9294/////////////////////////////
9295// SHOW COLLISION SKELETON //
9296/////////////////////////////
9297
9298
9299class LLAdvancedToggleShowCollisionSkeleton : public view_listener_t
9300{
9301 bool handleEvent(LLPointer<LLEvent> event, const LLSD& userdata)
9302 {
9303 LLVOAvatar::sShowCollisionVolumes = !(LLVOAvatar::sShowCollisionVolumes);
9304 return true;
9305 }
9306};
9307
9308class LLAdvancedCheckShowCollisionSkeleton : public view_listener_t
9309{
9310 bool handleEvent(LLPointer<LLEvent> event, const LLSD& userdata)
9311 {
9312 bool new_value = LLVOAvatar::sShowCollisionVolumes;
9313 std::string control_name = userdata["control"].asString();
9314 gMenuHolder->findControl(control_name)->setValue(new_value);
9315 return true;
9316 }
9317};
9318
9319
9320
9321//////////////////////////
9322// DISPLAY AGENT TARGET //
9323//////////////////////////
9324
9325
9326class LLAdvancedToggleDisplayAgentTarget : public view_listener_t
9327{
9328 bool handleEvent(LLPointer<LLEvent> event, const LLSD& userdata)
9329 {
9330 LLAgent::sDebugDisplayTarget = !(LLAgent::sDebugDisplayTarget);
9331 return true;
9332 }
9333};
9334
9335class LLAdvancedCheckDisplayAgentTarget : public view_listener_t
9336{
9337 bool handleEvent(LLPointer<LLEvent> event, const LLSD& userdata)
9338 {
9339 bool new_value = LLAgent::sDebugDisplayTarget;
9340 std::string control_name = userdata["control"].asString();
9341 gMenuHolder->findControl(control_name)->setValue(new_value);
9342 return true;
9343 }
9344};
9345
9346
9347
9348///////////////////////////
9349// DEBUG AVATAR ROTATION //
9350///////////////////////////
9351
9352
9353class LLAdvancedToggleDebugAvatarRotation : public view_listener_t
9354{
9355 bool handleEvent(LLPointer<LLEvent> event, const LLSD& userdata)
9356 {
9357 gDebugAvatarRotation = !(gDebugAvatarRotation);
9358 return true;
9359 }
9360};
9361
9362class LLAdvancedCheckDebugAvatarRotation : public view_listener_t
9363{
9364 bool handleEvent(LLPointer<LLEvent> event, const LLSD& userdata)
9365 {
9366 bool new_value = gDebugAvatarRotation;
9367 std::string control_name = userdata["control"].asString();
9368 gMenuHolder->findControl(control_name)->setValue(new_value);
9369 return true;
9370 }
9371};
9372
9373
9374
9375//////////////////////
9376// DUMP ATTACHMENTS //
9377//////////////////////
9378
9379
9380class LLAdvancedDumpAttachments : public view_listener_t
9381{
9382 bool handleEvent(LLPointer<LLEvent> event, const LLSD& userdata)
9383 {
9384 handle_dump_attachments(NULL);
9385 return true;
9386 }
9387};
9388
9389
9390
9391/////////////////////
9392// REBAKE TEXTURES //
9393/////////////////////
9394
9395
9396class LLAdvancedRebakeTextures : public view_listener_t
9397{
9398 bool handleEvent(LLPointer<LLEvent> event, const LLSD& userdata)
9399 {
9400 handle_rebake_textures(NULL);
9401 return true;
9402 }
9403};
9404
9405
9406
9407///////////////////////////
9408// DEBUG AVATAR TEXTURES //
9409///////////////////////////
9410
9411
9412class LLAdvancedDebugAvatarTextures : public view_listener_t
9413{
9414 bool handleEvent(LLPointer<LLEvent> event, const LLSD& userdata)
9415 {
9416 handle_debug_avatar_textures(NULL);
9417 return true;
9418 }
9419};
9420
9421
9422
9423////////////////////////////////
9424// DUMP AVATAR LOCAL TEXTURES //
9425////////////////////////////////
9426
9427
9428class LLAdvancedDumpAvatarLocalTextures : public view_listener_t
9429{
9430 bool handleEvent(LLPointer<LLEvent> event, const LLSD& userdata)
9431 {
9432 handle_dump_avatar_local_textures(NULL);
9433 return true;
9434 }
9435};
9436
9437
9438
9439/////////////////
9440// MESSAGE LOG //
9441/////////////////
9442
9443
9444class LLAdvancedEnableMessageLog : public view_listener_t
9445{
9446 bool handleEvent(LLPointer<LLEvent> event, const LLSD& userdata)
9447 {
9448 handle_viewer_enable_message_log(NULL);
9449 return true;
9450 }
9451};
9452
9453class LLAdvancedDisableMessageLog : public view_listener_t
9454{
9455 bool handleEvent(LLPointer<LLEvent> event, const LLSD& userdata)
9456 {
9457 handle_viewer_disable_message_log(NULL);
9458 return true;
9459 }
9460};
9461
9462
9463
9464/////////////////
9465// DROP PACKET //
9466/////////////////
9467
9468
9469class LLAdvancedDropPacket : public view_listener_t
9470{
9471 bool handleEvent(LLPointer<LLEvent> event, const LLSD& userdata)
9472 {
9473 drop_packet(NULL);
9474 return true;
9475 }
9476};
9477
9478
9479
9480/////////////////////////
9481// FRAME STATS LOGGING //
9482/////////////////////////
9483
9484
9485class LLAdvancedFrameStatsLogging : public view_listener_t
9486{
9487 bool handleEvent(LLPointer<LLEvent> event, const LLSD& userdata)
9488 {
9489 std::string command = userdata.asString();
9490 if ("start logging" == command)
9491 {
9492 LLFrameStats::startLogging(NULL);
9493 }
9494 else if ("stop logging" == command)
9495 {
9496 LLFrameStats::stopLogging(NULL);
9497 }
9498 else if ("timed logging 10" == command)
9499 {
9500 LLFrameStats::timedLogging10(NULL);
9501 }
9502 else if ("timed logging 30" == command)
9503 {
9504 LLFrameStats::timedLogging30(NULL);
9505 }
9506 else if ("timed logging 60" == command)
9507 {
9508 LLFrameStats::timedLogging60(NULL);
9509 }
9510
9511 return true;
9512 }
9513};
9514
9515
9516
9517/////////////////
9518// AGENT PILOT //
9519/////////////////
9520
9521
9522class LLAdvancedAgentPilot : public view_listener_t
9523{
9524 bool handleEvent(LLPointer<LLEvent> event, const LLSD& userdata)
9525 {
9526 std::string command = userdata.asString();
9527 if ("start playback" == command)
9528 {
9529 LLAgentPilot::startPlayback(NULL);
9530 }
9531 else if ("stop playback" == command)
9532 {
9533 LLAgentPilot::stopPlayback(NULL);
9534 }
9535 else if ("start record" == command)
9536 {
9537 LLAgentPilot::startRecord(NULL);
9538 }
9539 else if ("stop record" == command)
9540 {
9541 LLAgentPilot::saveRecord(NULL);
9542 }
9543
9544 return true;
9545 }
9546};
9547
9548
9549
9550//////////////////////
9551// AGENT PILOT LOOP //
9552//////////////////////
9553
9554
9555class LLAdvancedToggleAgentPilotLoop : public view_listener_t
9556{
9557 bool handleEvent(LLPointer<LLEvent> event, const LLSD& userdata)
9558 {
9559 LLAgentPilot::sLoop = !(LLAgentPilot::sLoop);
9560 return true;
9561 }
9562};
9563
9564class LLAdvancedCheckAgentPilotLoop : public view_listener_t
9565{
9566 bool handleEvent(LLPointer<LLEvent> event, const LLSD& userdata)
9567 {
9568 bool new_value = LLAgentPilot::sLoop;
9569 std::string control_name = userdata["control"].asString();
9570 gMenuHolder->findControl(control_name)->setValue(new_value);
9571 return true;
9572 }
9573};
9574
9575
9576
9577/////////////////////////
9578// SHOW OBJECT UPDATES //
9579/////////////////////////
9580
9581
9582class LLAdvancedToggleShowObjectUpdates : public view_listener_t
9583{
9584 bool handleEvent(LLPointer<LLEvent> event, const LLSD& userdata)
9585 {
9586 gShowObjectUpdates = !(gShowObjectUpdates);
9587 return true;
9588 }
9589};
9590
9591class LLAdvancedCheckShowObjectUpdates : public view_listener_t
9592{
9593 bool handleEvent(LLPointer<LLEvent> event, const LLSD& userdata)
9594 {
9595 bool new_value = gShowObjectUpdates;
9596 std::string control_name = userdata["control"].asString();
9597 gMenuHolder->findControl(control_name)->setValue(new_value);
9598 return true;
9599 }
9600};
9601
9602
9603
9604////////////////////
9605// COMPRESS IMAGE //
9606////////////////////
9607
9608
9609class LLAdvancedCompressImage : public view_listener_t
9610{
9611 bool handleEvent(LLPointer<LLEvent> event, const LLSD& userdata)
9612 {
9613 handle_compress_image(NULL);
9614 return true;
9615 }
9616};
9617
9618
9619
9620//////////////////////
9621// CLOTHING FLOATER //
9622//////////////////////
9623
9624
9625class LLAdvancedToggleClothingFloater : public view_listener_t
9626{
9627 bool handleEvent(LLPointer<LLEvent> event, const LLSD& userdata)
9628 {
9629 handle_clothing(NULL);
9630 return true;
9631 }
9632};
9633
9634// There is no LLAdvancedCheckClothingFloater.
9635
9636
9637
9638/////////////////////////
9639// SHOW DEBUG SETTINGS //
9640/////////////////////////
9641
9642
9643class LLAdvancedShowDebugSettings : public view_listener_t
9644{
9645 bool handleEvent(LLPointer<LLEvent> event, const LLSD& userdata)
9646 {
9647 LLFloaterSettingsDebug::show(NULL);
9648 return true;
9649 }
9650};
9651
9652
9653
9654////////////////////////
9655// VIEW ADMIN OPTIONS //
9656////////////////////////
9657
9658
9659class LLAdvancedToggleViewAdminOptions : public view_listener_t
9660{
9661 bool handleEvent(LLPointer<LLEvent> event, const LLSD& userdata)
9662 {
9663 handle_admin_override_toggle(NULL);
9664 return true;
9665 }
9666};
9667
9668class LLAdvancedCheckViewAdminOptions : public view_listener_t
9669{
9670 bool handleEvent(LLPointer<LLEvent> event, const LLSD& userdata)
9671 {
9672 bool new_value = check_admin_override(NULL);
9673 std::string control_name = userdata["control"].asString();
9674 gMenuHolder->findControl(control_name)->setValue(new_value);
9675 return true;
9676 }
9677};
9678
9679
9680
9681//////////////////
9682// ADMIN STATUS //
9683//////////////////
9684
9685
9686class LLAdvancedRequestAdminStatus : public view_listener_t
9687{
9688 bool handleEvent(LLPointer<LLEvent> event, const LLSD& userdata)
9689 {
9690 handle_god_mode(NULL);
9691 return true;
9692 }
9693};
9694
9695class LLAdvancedLeaveAdminStatus : public view_listener_t
9696{
9697 bool handleEvent(LLPointer<LLEvent> event, const LLSD& userdata)
9698 {
9699 handle_leave_god_mode(NULL);
9700 return true;
9701 }
9702};
9703
9704
9705
9706static void addMenu(view_listener_t *menu, const char *name)
7579{ 9707{
7580 sMenus.push_back(menu); 9708 sMenus.push_back(menu);
7581 menu->registerListener(gMenuHolder, name); 9709 menu->registerListener(gMenuHolder, name);
@@ -7684,6 +9812,7 @@ void initialize_menus()
7684 addMenu(new LLToolsSaveToInventory(), "Tools.SaveToInventory"); 9812 addMenu(new LLToolsSaveToInventory(), "Tools.SaveToInventory");
7685 addMenu(new LLToolsSaveToObjectInventory(), "Tools.SaveToObjectInventory"); 9813 addMenu(new LLToolsSaveToObjectInventory(), "Tools.SaveToObjectInventory");
7686 addMenu(new LLToolsSelectedScriptAction(), "Tools.SelectedScriptAction"); 9814 addMenu(new LLToolsSelectedScriptAction(), "Tools.SelectedScriptAction");
9815 addMenu(new LLToolsSetBulkPerms(), "Tools.SetBulkPerms");
7687 9816
7688 addMenu(new LLToolsEnableToolNotPie(), "Tools.EnableToolNotPie"); 9817 addMenu(new LLToolsEnableToolNotPie(), "Tools.EnableToolNotPie");
7689 addMenu(new LLToolsEnableLink(), "Tools.EnableLink"); 9818 addMenu(new LLToolsEnableLink(), "Tools.EnableLink");
@@ -7786,4 +9915,155 @@ void initialize_menus()
7786 addMenu(new LLSomethingSelectedNoHUD(), "SomethingSelectedNoHUD"); 9915 addMenu(new LLSomethingSelectedNoHUD(), "SomethingSelectedNoHUD");
7787 addMenu(new LLEditableSelected(), "EditableSelected"); 9916 addMenu(new LLEditableSelected(), "EditableSelected");
7788 addMenu(new LLEditableSelectedMono(), "EditableSelectedMono"); 9917 addMenu(new LLEditableSelectedMono(), "EditableSelectedMono");
9918
9919
9920 // Advanced (top level menu)
9921 addMenu(new LLAdvancedToggleConsole(), "Advanced.ToggleConsole");
9922 addMenu(new LLAdvancedCheckConsole(), "Advanced.CheckConsole");
9923 addMenu(new LLAdvancedDumpInfoToConsole(), "Advanced.DumpInfoToConsole");
9924 addMenu(new LLAdvancedReloadSettingsOverrides(), "Advanced.ReloadSettingsOverrides");
9925
9926 // Advanced > HUD Info
9927 addMenu(new LLAdvancedToggleHUDInfo(), "Advanced.ToggleHUDInfo");
9928 addMenu(new LLAdvancedCheckHUDInfo(), "Advanced.CheckHUDInfo");
9929
9930 addMenu(new LLAdvancedClearGroupCache(), "Advanced.ClearGroupCache");
9931
9932 // Advanced > Render > Types
9933 addMenu(new LLAdvancedToggleRenderType(), "Advanced.ToggleRenderType");
9934 addMenu(new LLAdvancedCheckRenderType(), "Advanced.CheckRenderType");
9935
9936 // Advanced > Render > Features
9937 addMenu(new LLAdvancedToggleFeature(), "Advanced.ToggleFeature");
9938 addMenu(new LLAdvancedCheckFeature(), "Advanced.CheckFeature");
9939
9940 // Advanced > Render > Info Displays
9941 addMenu(new LLAdvancedToggleInfoDisplay(), "Advanced.ToggleInfoDisplay");
9942 addMenu(new LLAdvancedCheckInfoDisplay(), "Advanced.CheckInfoDisplay");
9943 addMenu(new LLAdvancedToggleSelectBuffer(), "Advanced.ToggleSelectBuffer");
9944 addMenu(new LLAdvancedCheckSelectBuffer(), "Advanced.CheckSelectBuffer");
9945 addMenu(new LLAdvancedToggleRandomizeFramerate(), "Advanced.ToggleRandomizeFramerate");
9946 addMenu(new LLAdvancedCheckRandomizeFramerate(), "Advanced.CheckRandomizeFramerate");
9947 addMenu(new LLAdvancedTogglePeriodicSlowFrame(), "Advanced.TogglePeriodicSlowFrame");
9948 addMenu(new LLAdvancedCheckPeriodicSlowFrame(), "Advanced.CheckPeriodicSlowFrame");
9949 addMenu(new LLAdvancedToggleFrameTest(), "Advanced.ToggleFrameTest");
9950 addMenu(new LLAdvancedCheckFrameTest(), "Advanced.CheckFrameTest");
9951 addMenu(new LLAdvancedToggleHideSelectedObjects(), "Advanced.ToggleHideSelectedObjects");
9952 addMenu(new LLAdvancedCheckHideSelectedObjects(), "Advanced.CheckHideSelectedObjects");
9953 addMenu(new LLAdvancedSelectedTextureInfo(), "Advanced.SelectedTextureInfo");
9954 addMenu(new LLAdvancedToggleWireframe(), "Advanced.ToggleWireframe");
9955 addMenu(new LLAdvancedCheckWireframe(), "Advanced.CheckWireframe");
9956 addMenu(new LLAdvancedToggleDisableTextures(), "Advanced.ToggleDisableTextures");
9957 addMenu(new LLAdvancedCheckDisableTextures(), "Advanced.CheckDisableTextures");
9958
9959 // Advanced > World
9960 addMenu(new LLAdvancedDumpScriptedCamera(), "Advanced.DumpScriptedCamera");
9961 addMenu(new LLAdvancedDumpRegionObjectCache(), "Advanced.DumpRegionObjectCache");
9962
9963 // Advanced > UI
9964 addMenu(new LLAdvancedSLURLTest(), "Advanced.SLURLTest");
9965 addMenu(new LLAdvancedToggleEditableUI(), "Advanced.ToggleEditableUI");
9966 //addMenu(new LLAdvancedCheckEditableUI(), "Advanced.CheckEditableUI");
9967 addMenu(new LLAdvancedToggleAsyncKeystrokes(), "Advanced.ToggleAsyncKeystrokes");
9968 addMenu(new LLAdvancedCheckAsyncKeystrokes(), "Advanced.CheckAsyncKeystrokes");
9969 addMenu(new LLAdvancedDumpSelectMgr(), "Advanced.DumpSelectMgr");
9970 addMenu(new LLAdvancedDumpInventory(), "Advanced.DumpInventory");
9971 addMenu(new LLAdvancedDumpFocusHolder(), "Advanced.DumpFocusHolder");
9972 addMenu(new LLAdvancedPrintSelectedObjectInfo(), "Advanced.PrintSelectedObjectInfo");
9973 addMenu(new LLAdvancedPrintAgentInfo(), "Advanced.PrintAgentInfo");
9974 addMenu(new LLAdvancedPrintTextureMemoryStats(), "Advanced.PrintTextureMemoryStats");
9975 addMenu(new LLAdvancedToggleDebugSelectMgr(), "Advanced.ToggleDebugSelectMgr");
9976 addMenu(new LLAdvancedCheckDebugSelectMgr(), "Advanced.CheckDebugSelectMgr");
9977 addMenu(new LLAdvancedToggleDebugClicks(), "Advanced.ToggleDebugClicks");
9978 addMenu(new LLAdvancedCheckDebugClicks(), "Advanced.CheckDebugClicks");
9979 addMenu(new LLAdvancedCheckDebugViews(), "Advanced.CheckDebugViews");
9980 addMenu(new LLAdvancedToggleDebugViews(), "Advanced.ToggleDebugViews");
9981 addMenu(new LLAdvancedToggleXUINameTooltips(), "Advanced.ToggleXUINameTooltips");
9982 addMenu(new LLAdvancedCheckXUINameTooltips(), "Advanced.CheckXUINameTooltips");
9983 addMenu(new LLAdvancedToggleDebugMouseEvents(), "Advanced.ToggleDebugMouseEvents");
9984 addMenu(new LLAdvancedCheckDebugMouseEvents(), "Advanced.CheckDebugMouseEvents");
9985 addMenu(new LLAdvancedToggleDebugKeys(), "Advanced.ToggleDebugKeys");
9986 addMenu(new LLAdvancedCheckDebugKeys(), "Advanced.CheckDebugKeys");
9987 addMenu(new LLAdvancedToggleDebugWindowProc(), "Advanced.ToggleDebugWindowProc");
9988 addMenu(new LLAdvancedCheckDebugWindowProc(), "Advanced.CheckDebugWindowProc");
9989 addMenu(new LLAdvancedToggleDebugTextEditorTips(), "Advanced.ToggleDebugTextEditorTips");
9990 addMenu(new LLAdvancedCheckDebugTextEditorTips(), "Advanced.CheckDebugTextEditorTips");
9991
9992 // Advanced > XUI
9993 addMenu(new LLAdvancedShowFloaterTest(), "Advanced.ShowFloaterTest");
9994 addMenu(new LLAdvancedExportMenusToXML(), "Advanced.ExportMenusToXML");
9995 addMenu(new LLAdvancedEditUI(), "Advanced.EditUI");
9996 addMenu(new LLAdvancedLoadUIFromXML(), "Advanced.LoadUIFromXML");
9997 addMenu(new LLAdvancedSaveUIToXML(), "Advanced.SaveUIToXML");
9998 addMenu(new LLAdvancedToggleXUINames(), "Advanced.ToggleXUINames");
9999 addMenu(new LLAdvancedCheckXUINames(), "Advanced.CheckXUINames");
10000
10001 // Advanced > Character > Grab Baked Texture
10002 addMenu(new LLAdvancedGrabBakedTexture(), "Advanced.GrabBakedTexture");
10003 addMenu(new LLAdvancedEnableGrabBakedTexture(), "Advanced.EnableGrabBakedTexture");
10004
10005 // Advanced > Character > Character Tests
10006 addMenu(new LLAdvancedToggleAllowIdleAFK(), "Advanced.ToggleAllowIdleAFK");
10007 addMenu(new LLAdvancedCheckAllowIdleAFK(), "Advanced.CheckAllowIdleAFK");
10008 addMenu(new LLAdvancedAppearanceToXML(), "Advanced.AppearanceToXML");
10009 addMenu(new LLAdvancedToggleCharacterGeometry(), "Advanced.ToggleCharacterGeometry");
10010 addMenu(new LLAdvancedTestMale(), "Advanced.TestMale");
10011 addMenu(new LLAdvancedTestFemale(), "Advanced.TestFemale");
10012 addMenu(new LLAdvancedTogglePG(), "Advanced.TogglePG");
10013 addMenu(new LLAdvancedToggleAllowSelectAvatar(), "Advanced.ToggleAllowSelectAvatar");
10014 addMenu(new LLAdvancedCheckAllowSelectAvatar(), "Advanced.CheckAllowSelectAvatar");
10015
10016 // Advanced > Character (toplevel)
10017 addMenu(new LLAdvancedToggleAllowTapTapHoldRun(), "Advanced.ToggleAllowTapTapHoldRun");
10018 addMenu(new LLAdvancedCheckAllowTapTapHoldRun(), "Advanced.CheckAllowTapTapHoldRun");
10019 addMenu(new LLAdvancedForceParamsToDefault(), "Advanced.ForceParamsToDefault");
10020 addMenu(new LLAdvancedReloadVertexShader(), "Advanced.ReloadVertexShader");
10021 addMenu(new LLAdvancedToggleAnimationInfo(), "Advanced.ToggleAnimationInfo");
10022 addMenu(new LLAdvancedCheckAnimationInfo(), "Advanced.CheckAnimationInfo");
10023 addMenu(new LLAdvancedToggleSlowMotionAnimations(), "Advanced.ToggleSlowMotionAnimations");
10024 //addMenu(new LLAdvancedCheckSlowMotionAnimations(), "Advanced.CheckSlowMotionAnimations");
10025 addMenu(new LLAdvancedToggleShowLookAt(), "Advanced.ToggleShowLookAt");
10026 addMenu(new LLAdvancedCheckShowLookAt(), "Advanced.CheckShowLookAt");
10027 addMenu(new LLAdvancedToggleShowPointAt(), "Advanced.ToggleShowPointAt");
10028 addMenu(new LLAdvancedCheckShowPointAt(), "Advanced.CheckShowPointAt");
10029 addMenu(new LLAdvancedToggleDebugJointUpdates(), "Advanced.ToggleDebugJointUpdates");
10030 addMenu(new LLAdvancedCheckDebugJointUpdates(), "Advanced.CheckDebugJointUpdates");
10031 addMenu(new LLAdvancedToggleDisableLOD(), "Advanced.ToggleDisableLOD");
10032 addMenu(new LLAdvancedCheckDisableLOD(), "Advanced.CheckDisableLOD");
10033 addMenu(new LLAdvancedToggleDebugCharacterVis(), "Advanced.ToggleDebugCharacterVis");
10034 addMenu(new LLAdvancedCheckDebugCharacterVis(), "Advanced.CheckDebugCharacterVis");
10035// addMenu(new LLAdvancedToggleShowCollisionPlane(), "Advanced.ToggleShowCollisionPlane");
10036// addMenu(new LLAdvancedCheckShowCollisionPlane(), "Advanced.CheckShowCollisionPlane");
10037 addMenu(new LLAdvancedToggleShowCollisionSkeleton(), "Advanced.ToggleShowCollisionSkeleton");
10038 addMenu(new LLAdvancedCheckShowCollisionSkeleton(), "Advanced.CheckShowCollisionSkeleton");
10039 addMenu(new LLAdvancedToggleDisplayAgentTarget(), "Advanced.ToggleDisplayAgentTarget");
10040 addMenu(new LLAdvancedCheckDisplayAgentTarget(), "Advanced.CheckDisplayAgentTarget");
10041 addMenu(new LLAdvancedToggleDebugAvatarRotation(), "Advanced.ToggleDebugAvatarRotation");
10042 addMenu(new LLAdvancedCheckDebugAvatarRotation(), "Advanced.CheckDebugAvatarRotation");
10043 addMenu(new LLAdvancedDumpAttachments(), "Advanced.DumpAttachments");
10044 addMenu(new LLAdvancedRebakeTextures(), "Advanced.RebakeTextures");
10045 addMenu(new LLAdvancedDebugAvatarTextures(), "Advanced.DebugAvatarTextures");
10046 addMenu(new LLAdvancedDumpAvatarLocalTextures(), "Advanced.DumpAvatarLocalTextures");
10047
10048 // Advanced > Network
10049 addMenu(new LLAdvancedEnableMessageLog(), "Advanced.EnableMessageLog");
10050 addMenu(new LLAdvancedDisableMessageLog(), "Advanced.DisableMessageLog");
10051 addMenu(new LLAdvancedDropPacket(), "Advanced.DropPacket");
10052
10053 // Advanced > Recorder
10054 addMenu(new LLAdvancedFrameStatsLogging(), "Advanced.FrameStatsLogging");
10055 addMenu(new LLAdvancedAgentPilot(), "Advanced.AgentPilot");
10056 addMenu(new LLAdvancedToggleAgentPilotLoop(), "Advanced.ToggleAgentPilotLoop");
10057 addMenu(new LLAdvancedCheckAgentPilotLoop(), "Advanced.CheckAgentPilotLoop");
10058
10059 // Advanced (toplevel)
10060 addMenu(new LLAdvancedToggleShowObjectUpdates(), "Advanced.ToggleShowObjectUpdates");
10061 addMenu(new LLAdvancedCheckShowObjectUpdates(), "Advanced.CheckShowObjectUpdates");
10062 addMenu(new LLAdvancedCompressImage(), "Advanced.CompressImage");
10063 addMenu(new LLAdvancedToggleClothingFloater(), "Advanced.ToggleClothingFloater");
10064 addMenu(new LLAdvancedShowDebugSettings(), "Advanced.ShowDebugSettings");
10065 addMenu(new LLAdvancedToggleViewAdminOptions(), "Advanced.ToggleViewAdminOptions");
10066 addMenu(new LLAdvancedCheckViewAdminOptions(), "Advanced.CheckViewAdminOptions");
10067 addMenu(new LLAdvancedRequestAdminStatus(), "Advanced.RequestAdminStatus");
10068 addMenu(new LLAdvancedLeaveAdminStatus(), "Advanced.LeaveAdminStatus");
7789} 10069}
diff --git a/linden/indra/newview/skins/default/xui/en-us/alerts.xml b/linden/indra/newview/skins/default/xui/en-us/alerts.xml
index 1dcdc7d..75ab238 100644
--- a/linden/indra/newview/skins/default/xui/en-us/alerts.xml
+++ b/linden/indra/newview/skins/default/xui/en-us/alerts.xml
@@ -1999,6 +1999,19 @@ Join land?
1999 Cancel 1999 Cancel
2000 </option> 2000 </option>
2001 </alert> 2001 </alert>
2002 <alert name="ShowOwnersHelp">
2003 <message name="message">
2004 If this box is checked, land parcels will be
2005overlaid with a color indicating their status.
2006
2007Red: Land owned by others.
2008Green: Your land.
2009Aqua: Land owned by a group that you are a member of.
2010Yellow: For sale.
2011Purple: Land in the auction system.
2012Grey: Rare public land.
2013 </message>
2014 </alert>
2002 <alert modal="true" name="ConfirmNotecardSave"> 2015 <alert modal="true" name="ConfirmNotecardSave">
2003 <message name="message"> 2016 <message name="message">
2004 This notecard needs to be saved before the item can be copied or viewed. Save notecard? 2017 This notecard needs to be saved before the item can be copied or viewed. Save notecard?
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 7f2ce76..742da45 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"
@@ -245,55 +245,63 @@
245 245
246<!-- Land panel --> 246<!-- Land panel -->
247 247
248 <check_box bottom="-70" follows="left|top" font="SansSerifSmall" height="16" 248 <check_box bottom="-69" follows="left|top" font="SansSerifSmall" height="16"
249 initial_value="false" label="Select Land" left="4" mouse_opaque="true" 249 initial_value="false" label="Select Land" left="4" mouse_opaque="true"
250 name="radio select land" radio_style="true" width="114" /> 250 name="radio select land" radio_style="true" width="114" />
251 <check_box bottom_delta="-14" follows="left|top" font="SansSerifSmall" height="16" 251 <check_box bottom_delta="-15" follows="left|top" font="SansSerifSmall" height="16"
252 initial_value="false" label="Flatten Land" left="4" mouse_opaque="true" 252 initial_value="false" label="Flatten" left="4" mouse_opaque="true"
253 name="radio flatten" radio_style="true" width="114" /> 253 name="radio flatten" radio_style="true" width="114" />
254 <check_box bottom_delta="-14" follows="left|top" font="SansSerifSmall" height="16" 254 <check_box bottom_delta="-15" follows="left|top" font="SansSerifSmall" height="16"
255 initial_value="false" label="Raise Land" left="4" mouse_opaque="true" 255 initial_value="false" label="Raise" left="4" mouse_opaque="true"
256 name="radio raise" radio_style="true" width="114" /> 256 name="radio raise" radio_style="true" width="114" />
257 <check_box bottom_delta="-14" follows="left|top" font="SansSerifSmall" height="16" 257 <check_box bottom_delta="-15" follows="left|top" font="SansSerifSmall" height="16"
258 initial_value="false" label="Lower Land" left="4" mouse_opaque="true" 258 initial_value="false" label="Lower" left="4" mouse_opaque="true"
259 name="radio lower" radio_style="true" width="114" /> 259 name="radio lower" radio_style="true" width="114" />
260 <check_box bottom_delta="-14" follows="left|top" font="SansSerifSmall" height="16" 260 <check_box bottom_delta="-15" follows="left|top" font="SansSerifSmall" height="16"
261 initial_value="false" label="Smooth Land" left="4" mouse_opaque="true" 261 initial_value="false" label="Smooth" left="4" mouse_opaque="true"
262 name="radio smooth" radio_style="true" width="114" /> 262 name="radio smooth" radio_style="true" width="114" />
263 <check_box bottom_delta="-14" follows="left|top" font="SansSerifSmall" height="16" 263 <check_box bottom_delta="-15" follows="left|top" font="SansSerifSmall" height="16"
264 initial_value="false" label="Roughen Land" left="4" mouse_opaque="true" 264 initial_value="false" label="Roughen" left="4" mouse_opaque="true"
265 name="radio noise" radio_style="true" width="114" /> 265 name="radio noise" radio_style="true" width="114" />
266 <check_box bottom_delta="-14" follows="left|top" font="SansSerifSmall" height="16" 266 <check_box bottom_delta="-15" follows="left|top" font="SansSerifSmall" height="16"
267 initial_value="false" label="Revert Land" left="4" mouse_opaque="true" 267 initial_value="false" label="Revert" left="4" mouse_opaque="true"
268 name="radio revert" radio_style="true" width="114" /> 268 name="radio revert" radio_style="true" width="114" />
269 <combo_box allow_text_entry="false" bottom="-85" follows="left|top" height="18" left="118" 269 <button bottom="-74" follows="left|top" font="SansSerifSmall" halign="center"
270 max_chars="20" mouse_opaque="true" name="combobox brush size" width="134"> 270 height="20" label="Apply to selection" label_selected="Apply to selection"
271 <combo_item name="Small" value="Small">
272 Small
273 </combo_item>
274 <combo_item name="Medium" value="Medium">
275 Medium
276 </combo_item>
277 <combo_item name="Large" value="Large">
278 Large
279 </combo_item>
280 </combo_box>
281 <volume_slider bottom_delta="-19" follows="left|top" height="16" hidden="false" increment="0.1"
282 initial_val="0.00" left="176" max_val="2.0" min_val="-1.0"
283 mouse_opaque="true" name="slider force" width="70" />
284 <text type="string" length="1" bg_visible="false" border_drop_shadow_visible="false" border_visible="false"
285 bottom_delta="4" drop_shadow_visible="true" enabled="true" follows="left|top"
286 font="SansSerifSmall" h_pad="0" halign="left" height="12" hidden="false"
287 left="126" mouse_opaque="true" name="Strength:" v_pad="0" width="128">
288 Strength:
289 </text>
290 <button bottom_delta="-22" follows="left|top" font="SansSerifSmall" halign="center"
291 height="16" label="Apply to selection" label_selected="Apply to selection"
292 left="118" mouse_opaque="true" name="button apply to selection" 271 left="118" mouse_opaque="true" name="button apply to selection"
293 scale_image="TRUE" tool_tip="Modify Selected Land" width="134" /> 272 scale_image="TRUE" tool_tip="Modify Selected Land" width="134" />
294 <check_box bottom_delta="-20" control_name="ShowParcelOwners" follows="left|top" 273
295 font="SansSerifSmall" height="16" initial_value="false" label="Show Owners" 274
296 left="118" mouse_opaque="true" name="checkbox show owners" width="134" /> 275
276 <text type="string" length="1" bg_visible="false" border_drop_shadow_visible="false"
277 border_visible="false" bottom_delta="-16" drop_shadow_visible="true" enabled="true"
278 follows="left|top" font="SansSerifSmall" h_pad="0" halign="left" height="12" left="118"
279 hidden="false" mouse_opaque="true" name="Brush:" v_pad="0" width="100">
280 Brush:
281 </text>
282
283 <text type="string" length="1" bg_visible="false" border_drop_shadow_visible="false"
284 border_visible="false" bottom_delta="-18" drop_shadow_visible="true" enabled="true"
285 follows="left|top" font="SansSerifSmall" h_pad="0" halign="left" height="12" left="132"
286 hidden="false" mouse_opaque="true" name="Brush Size:" v_pad="0" width="100">
287 Size
288 </text>
289 <volume_slider bottom_delta="-4" follows="left|top" height="16" hidden="false"
290 increment="1.0" initial_val="0.0" left="178" max_val="2.0" min_val="0.0"
291 mouse_opaque="true" name="slider brush size" width="80" />
292
293
294 <text type="string" length="1" bg_visible="false" border_drop_shadow_visible="false"
295 border_visible="false" bottom_delta="-18" drop_shadow_visible="true" enabled="true"
296 follows="left|top" font="SansSerifSmall" h_pad="0" halign="left" height="12" left="132"
297 hidden="false" mouse_opaque="true" name="Strength:" v_pad="0" width="100">
298 Strength
299 </text>
300 <volume_slider bottom_delta="-4" follows="left|top" height="16" hidden="false"
301 increment="0.1" initial_val="0.00" left="178" max_val="2.0" min_val="-1.0"
302 mouse_opaque="true" name="slider force" width="80" />
303
304
297 <button bottom="-163" follows="left|top" font="SansSerifSmall" halign="center" 305 <button bottom="-163" follows="left|top" font="SansSerifSmall" halign="center"
298 height="20" label="More &gt;&gt;" left="186" mouse_opaque="true" 306 height="20" label="More &gt;&gt;" left="186" mouse_opaque="true"
299 name="button more" scale_image="TRUE" tool_tip="Advanced Options" 307 name="button more" scale_image="TRUE" tool_tip="Advanced Options"
@@ -722,10 +730,10 @@
722 Path Cut Begin and End 730 Path Cut Begin and End
723 </text> 731 </text>
724 <spinner bottom_delta="-22" decimal_digits="3" follows="left|top" height="16" 732 <spinner bottom_delta="-22" decimal_digits="3" follows="left|top" height="16"
725 increment="0.05" initial_val="0" label="B" label_width="10" left="121" 733 increment="0.025" initial_val="0" label="B" label_width="10" left="121"
726 max_val="0.98" min_val="0" mouse_opaque="true" name="cut begin" width="68" /> 734 max_val="0.98" min_val="0" mouse_opaque="true" name="cut begin" width="68" />
727 <spinner bottom_delta="0" decimal_digits="3" follows="left|top" height="16" 735 <spinner bottom_delta="0" decimal_digits="3" follows="left|top" height="16"
728 increment="0.05" initial_val="1" label="E" label_width="10" left_delta="73" 736 increment="0.025" initial_val="1" label="E" label_width="10" left_delta="73"
729 max_val="1" min_val="0.02" mouse_opaque="true" name="cut end" width="68" /> 737 max_val="1" min_val="0.02" mouse_opaque="true" name="cut end" width="68" />
730 <text bg_visible="false" border_drop_shadow_visible="false" border_visible="false" 738 <text bg_visible="false" border_drop_shadow_visible="false" border_visible="false"
731 bottom_delta="-14" drop_shadow_visible="true" follows="left|top" 739 bottom_delta="-14" drop_shadow_visible="true" follows="left|top"
@@ -824,12 +832,18 @@
824 mouse_opaque="true" name="advanced_dimple" v_pad="0" width="141"> 832 mouse_opaque="true" name="advanced_dimple" v_pad="0" width="141">
825 Dimple Begin and End 833 Dimple Begin and End
826 </text> 834 </text>
835 <text bg_visible="false" border_drop_shadow_visible="false" border_visible="false"
836 bottom_delta="0" drop_shadow_visible="true" follows="left|top"
837 font="SansSerifSmall" h_pad="0" halign="left" height="10" left_delta="0"
838 mouse_opaque="true" name="advanced_slice" v_pad="0" width="141">
839 Slice Begin and End
840 </text>
827 <spinner bottom_delta="-19" decimal_digits="3" follows="left|top" height="16" 841 <spinner bottom_delta="-19" decimal_digits="3" follows="left|top" height="16"
828 increment="0.05" initial_val="0" label="B" label_width="10" left="121" 842 increment="0.025" initial_val="0" label="B" label_width="10" left="121"
829 max_val="0.95" min_val="0" mouse_opaque="true" name="Path Limit Begin" 843 max_val="0.95" min_val="0" mouse_opaque="true" name="Path Limit Begin"
830 width="68" /> 844 width="68" />
831 <spinner bottom_delta="0" decimal_digits="3" follows="left|top" height="16" 845 <spinner bottom_delta="0" decimal_digits="3" follows="left|top" height="16"
832 increment="0.05" initial_val="1" label="E" label_width="10" left_delta="73" 846 increment="0.025" initial_val="1" label="E" label_width="10" left_delta="73"
833 max_val="1" min_val="0.05" mouse_opaque="true" name="Path Limit End" 847 max_val="1" min_val="0.05" mouse_opaque="true" name="Path Limit End"
834 width="68" /> 848 width="68" />
835 <text bg_visible="false" border_drop_shadow_visible="false" border_visible="false" 849 <text bg_visible="false" border_drop_shadow_visible="false" border_visible="false"
@@ -1003,7 +1017,7 @@
1003 Transparency % 1017 Transparency %
1004 </text> 1018 </text>
1005 <spinner bottom_delta="-20" decimal_digits="0" follows="left|top" height="16" 1019 <spinner bottom_delta="-20" decimal_digits="0" follows="left|top" height="16"
1006 increment="2" initial_val="0" left="180" max_val="90" min_val="0" 1020 increment="2" initial_val="0" left="180" max_val="100" min_val="0"
1007 mouse_opaque="true" name="ColorTrans" width="80" /> 1021 mouse_opaque="true" name="ColorTrans" width="80" />
1008 <text bg_visible="false" border_drop_shadow_visible="false" border_visible="false" 1022 <text bg_visible="false" border_drop_shadow_visible="false" border_visible="false"
1009 bottom_delta="-12" drop_shadow_visible="true" follows="left|top" 1023 bottom_delta="-12" drop_shadow_visible="true" follows="left|top"
@@ -1204,34 +1218,59 @@
1204 <panel bottom="-550" follows="left|top" height="384" left="0" mouse_opaque="true" 1218 <panel bottom="-550" follows="left|top" height="384" left="0" mouse_opaque="true"
1205 name="land info panel" width="272"> 1219 name="land info panel" width="272">
1206 <text bg_visible="false" border_drop_shadow_visible="false" border_visible="false" 1220 <text bg_visible="false" border_drop_shadow_visible="false" border_visible="false"
1207 bottom="-18" drop_shadow_visible="true" follows="left|top" 1221 bottom="-40" drop_shadow_visible="true" follows="left|top"
1208 font="SansSerifSmall" h_pad="0" halign="left" height="16" left="4" 1222 font="SansSerifSmall" h_pad="0" halign="left" height="16" left="40"
1223 mouse_opaque="true" name="label_parcel_modify" v_pad="0" width="150">
1224 Modify Parcel
1225 </text>
1226 <button bottom_delta="-24" follows="left|top" font="SansSerif" halign="center"
1227 height="20" label="Subdivide..." label_selected="Subdivide..." left="48"
1228 mouse_opaque="true" name="button subdivide land" scale_image="TRUE"
1229 width="112" />
1230 <button bottom_delta="-24" follows="left|top" font="SansSerif" halign="center"
1231 height="20" label="Join..." label_selected="Join..." left="48"
1232 mouse_opaque="true" name="button join land" scale_image="TRUE" width="112" />
1233 <text bg_visible="false" border_drop_shadow_visible="false" border_visible="false"
1234 bottom_delta="-56" drop_shadow_visible="true" follows="left|top"
1235 font="SansSerifSmall" h_pad="0" halign="left" height="16" left="40"
1236 mouse_opaque="true" name="label_parcel_info" v_pad="0" width="150">
1237 Parcel Information
1238 </text>
1239 <text bg_visible="false" border_drop_shadow_visible="false" border_visible="false"
1240 bottom_delta="-24" drop_shadow_visible="true" follows="left|top"
1241 font="SansSerifSmall" h_pad="0" halign="left" height="16" left="48"
1209 mouse_opaque="true" name="label_area_price" v_pad="0" width="150"> 1242 mouse_opaque="true" name="label_area_price" v_pad="0" width="150">
1210 Price: L$[PRICE] for [AREA] sq. m. 1243 Price: L$[PRICE] for [AREA] sq. m.
1211 </text> 1244 </text>
1212 <text bg_visible="false" border_drop_shadow_visible="false" border_visible="false" 1245 <text bg_visible="false" border_drop_shadow_visible="false" border_visible="false"
1213 bottom_delta="0" drop_shadow_visible="true" follows="left|top" 1246 bottom_delta="0" drop_shadow_visible="true" follows="left|top"
1214 font="SansSerifSmall" h_pad="0" halign="left" height="16" left="4" 1247 font="SansSerifSmall" h_pad="0" halign="left" height="16" left="48"
1215 mouse_opaque="true" name="label_area" v_pad="0" width="128"> 1248 mouse_opaque="true" name="label_area" v_pad="0" width="150">
1216 Area: [AREA] sq. m. 1249 Area: [AREA] sq. m.
1217 </text> 1250 </text>
1218 <button bottom_delta="-38" follows="left|top" font="SansSerif" halign="center"
1219 height="20" label="Buy Land..." label_selected="Buy Land..." left="76"
1220 mouse_opaque="true" name="button buy land" scale_image="TRUE" width="102" />
1221 <button bottom_delta="-24" follows="left|top" font="SansSerif" halign="center" 1251 <button bottom_delta="-24" follows="left|top" font="SansSerif" halign="center"
1222 height="20" label="Abandon Land..." label_selected="Abandon Land..." 1252 height="20" label="About Land..." label_selected="About Land..." left="48"
1223 left="76" mouse_opaque="true" name="button abandon land" scale_image="TRUE" 1253 mouse_opaque="true" name="button about land" scale_image="TRUE" width="112" />
1224 width="102" /> 1254 <check_box bottom_delta="-24" control_name="ShowParcelOwners" follows="left|top"
1255 tool_tip="Colour parcels according to their status" font="SansSerifSmall"
1256 height="16" initial_value="false" label="Show Status" left="48"
1257 mouse_opaque="true" name="checkbox show owners" width="100" />
1258 <button bottom_delta="0" follows="left|top" font="SansSerif" halign="center"
1259 height="18" label="?" label_selected="?" left_delta="94"
1260 mouse_opaque="true" name="button show owners help" width="18" />
1261 <text bg_visible="false" border_drop_shadow_visible="false" border_visible="false"
1262 bottom_delta="-56" drop_shadow_visible="true" follows="left|top"
1263 font="SansSerifSmall" h_pad="0" halign="left" height="16" left="40"
1264 mouse_opaque="true" name="label_parcel_trans" v_pad="0" width="150">
1265 Land Transactions
1266 </text>
1225 <button bottom_delta="-24" follows="left|top" font="SansSerif" halign="center" 1267 <button bottom_delta="-24" follows="left|top" font="SansSerif" halign="center"
1226 height="20" label="Subdivide..." label_selected="Subdivide..." left="76" 1268 height="20" label="Buy Land..." label_selected="Buy Land..." left="48"
1227 mouse_opaque="true" name="button subdivide land" scale_image="TRUE" 1269 mouse_opaque="true" name="button buy land" scale_image="TRUE" width="112" />
1228 width="102" />
1229 <button bottom_delta="-24" follows="left|top" font="SansSerif" halign="center" 1270 <button bottom_delta="-24" follows="left|top" font="SansSerif" halign="center"
1230 height="20" label="Join..." label_selected="Join..." left="76" 1271 height="20" label="Abandon Land..." label_selected="Abandon Land..."
1231 mouse_opaque="true" name="button join land" scale_image="TRUE" width="102" /> 1272 left="48" mouse_opaque="true" name="button abandon land" scale_image="TRUE"
1232 <button bottom_delta="-40" follows="left|top" font="SansSerif" halign="center" 1273 width="112" />
1233 height="20" label="About Land..." label_selected="About Land..." left="76"
1234 mouse_opaque="true" name="button about land" scale_image="TRUE" width="102" />
1235 </panel> 1274 </panel>
1236 <string name="status_rotate"> 1275 <string name="status_rotate">
1237 Drag colored bands to rotate object 1276 Drag colored bands to rotate object
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 bbe9fbd..40de54f 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,863 +1,2046 @@
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_item_call name="Menu Underpants" enabled="false"
191 label="Underpants">
192 <on_click function="Edit.TakeOff"
193 userdata="underpants" />
194 <on_enable function="Edit.EnableTakeOff"
195 userdata="underpants" />
196 </menu_item_call>
197 <menu_item_call name="Skirt" enabled="false" label="Skirt">
198 <on_click function="Edit.TakeOff"
199 userdata="skirt" />
200 <on_enable function="Edit.EnableTakeOff"
201 userdata="skirt" />
202 </menu_item_call>
203 <menu_item_call name="All Clothes" label="All Clothes">
204 <on_click function="Edit.TakeOff"
205 userdata="all" />
206 </menu_item_call>
207 </menu>
208 <menu_item_separator />
209 <menu_item_call name="Gestures..." label="Gestures..."
210 shortcut="control|G">
211 <on_click function="ShowFloater"
212 userdata="gestures" />
213 </menu_item_call>
214 <menu_item_call name="Profile..." label="Profile...">
215 <on_click function="ShowAgentProfile"
216 userdata="agent" />
217 </menu_item_call>
218 <menu_item_call name="Appearance..." label="Appearance...">
219 <on_click function="ShowFloater"
220 userdata="appearance" />
221 <on_enable function="Edit.EnableCustomizeAvatar" />
222 </menu_item_call>
223 <menu_item_separator />
224 <menu_item_check name="Friends..." label="Friends..."
225 shortcut="control|shift|F">
226 <on_click function="ShowFloater"
227 userdata="friends" />
228 <on_check function="FloaterVisible"
229 userdata="friends" />
230 </menu_item_check>
231 <menu_item_call name="Groups..." label="Groups...">
232 <on_click function="ShowAgentGroups"
233 userdata="agent" />
234 </menu_item_call>
235 <menu_item_separator />
236 <menu_item_call name="Preferences..." label="Preferences..."
237 shortcut="control|P">
238 <on_click function="ShowFloater"
239 userdata="preferences" />
240 </menu_item_call>
241 </menu>
242
243
244
245 <!-- VIEW -->
246
247 <menu name="View" create_jump_keys="true" label="View"
248 opaque="true" tear_off="true">
249 <menu_item_call name="Mouselook" label="Mouselook"
250 shortcut="M">
251 <on_click function="View.Mouselook" userdata="" />
252 <on_enable function="View.EnableMouselook" />
253 </menu_item_call>
254 <menu_item_check name="Build" label="Build"
255 shortcut="B">
256 <on_click function="View.BuildMode" userdata="" />
257 <on_check function="View.CheckBuildMode" />
258 </menu_item_check>
259 <menu_item_check name="Joystick Flycam" label="Joystick Flycam"
260 shortcut="alt|shift|F">
261 <on_click function="View.JoystickFlycam" userdata="" />
262 <on_check function="View.CheckJoystickFlycam" />
263 </menu_item_check>
264 <menu_item_call name="Reset View" label="Reset View"
265 shortcut="Esc">
266 <on_click function="View.ResetView" userdata="" />
267 </menu_item_call>
268 <menu_item_call name="Look at Last Chatter" enabled="false"
269 label="Look at Last Chatter" shortcut="control|\">
270 <on_click function="View.LookAtLastChatter" userdata="" />
271 <on_enable function="View.EnableLastChatter" />
272 </menu_item_call>
273 <menu_item_separator />
274 <menu_item_check name="Toolbar" label="Toolbar">
275 <on_click function="ShowFloater" userdata="toolbar" />
276 <on_check function="FloaterVisible" userdata="toolbar" />
277 </menu_item_check>
278 <menu_item_check name="Chat History" label="Local Chat"
279 shortcut="control|H">
280 <on_click function="ShowFloater" userdata="chat history" />
281 <on_check function="FloaterVisible" userdata="chat history" />
282 </menu_item_check>
283 <menu_item_check name="Instant Message" label="Communicate"
284 shortcut="control|T">
285 <on_click function="ShowFloater" userdata="im" />
286 <on_check function="FloaterVisible" userdata="im" />
287 </menu_item_check>
288 <menu_item_call name="Inventory" label="Inventory"
289 shortcut="control|I">
290 <on_click function="ShowFloater" userdata="inventory" />
291 </menu_item_call>
292 <menu_item_check name="Active Speakers" label="Active Speakers">
293 <on_click function="ShowFloater" userdata="active speakers" />
294 <on_check function="FloaterVisible" userdata="active speakers" />
295 </menu_item_check>
296 <menu_item_check name="Mute List" label="Mute List">
297 <on_click function="ShowFloater" userdata="mute list" />
298 <on_check function="FloaterVisible" userdata="mute list" />
299 </menu_item_check>
300 <menu_item_separator />
301 <menu_item_check name="Camera Controls" label="Camera Controls">
302 <on_click function="ShowFloater" userdata="camera controls" />
303 <on_check function="FloaterVisible" userdata="camera controls" />
304 </menu_item_check>
305 <menu_item_check name="Movement Controls" label="Movement Controls">
306 <on_click function="ShowFloater" userdata="movement controls" />
307 <on_check function="FloaterVisible" userdata="movement controls" />
308 </menu_item_check>
309 <menu_item_check name="World Map" label="World Map"
310 shortcut="control|M">
311 <on_click function="ShowFloater" userdata="world map" />
312 <on_check control="ShowWorldMap" />
313 </menu_item_check>
314 <menu_item_check name="Mini-Map" label="Mini-Map"
315 shortcut="control|shift|M">
316 <on_click function="ShowFloater" userdata="mini map" />
317 <on_check control="ShowMiniMap" />
318 </menu_item_check>
319 <menu_item_separator />
320 <menu_item_check name="Statistics Bar" label="Statistics Bar"
321 shortcut="control|shift|1">
322 <on_click function="ShowFloater" userdata="stat bar" />
323 <on_check function="FloaterVisible" userdata="stat bar" />
324 </menu_item_check>
325 <menu_item_check name="Property Lines" label="Property Lines"
326 shortcut="control|alt|shift|P">
327 <on_click function="ToggleControl" userdata="ShowPropertyLines" />
328 <on_check control="ShowPropertyLines" />
329 </menu_item_check>
330 <menu_item_check name="Land Owners" label="Land Owners">
331 <on_click function="ToggleControl" userdata="ShowParcelOwners" />
332 <on_check control="ShowParcelOwners" />
333 </menu_item_check>
334 <menu_item_separator />
335 <menu name="Hover Tips" create_jump_keys="true" label="Hover Tips"
336 opaque="true" tear_off="true">
337 <menu_item_check name="Show Tips" label="Show Tips"
338 shortcut="control|shift|T">
339 <on_click function="View.ShowHoverTips" userdata="" />
340 <on_check function="View.CheckShowHoverTips" />
341 </menu_item_check>
342 <menu_item_separator />
343 <menu_item_check name="Land Tips" label="Land Tips">
344 <on_click function="ToggleControl"
345 userdata="ShowLandHoverTip" />
346 <on_enable function="View.CheckShowHoverTips" />
347 <on_check control="ShowLandHoverTip" />
348 </menu_item_check>
349 <menu_item_check name="Tips On All Objects"
350 label="Tips On All Objects">
351 <on_click function="ToggleControl"
352 userdata="ShowAllObjectHoverTip" />
353 <on_enable function="View.CheckShowHoverTips" />
354 <on_check control="ShowAllObjectHoverTip" />
355 </menu_item_check>
356 </menu>
357 <menu_item_check name="Highlight Transparent"
358 label="Highlight Transparent"
359 shortcut="control|alt|T">
360 <on_click function="View.HighlightTransparent" userdata="" />
361 <on_check function="View.CheckHighlightTransparent" />
362 </menu_item_check>
363 <menu_item_check name="Beacons Always On" label="Beacons Always On">
364 <on_click function="ToggleControl" userdata="BeaconAlwaysOn" />
365 <on_check control="BeaconAlwaysOn" />
366 </menu_item_check>
367 <menu name="Beacons" create_jump_keys="true" label="Beacons"
368 opaque="true" tear_off="true">
369 <menu_item_check name="Scripted Objects With Touch Only"
370 label="Scripted Objects with Touch Only">
371 <on_click function="View.ToggleBeacon"
372 userdata="scripttouchbeacon" />
373 <on_check function="View.CheckBeaconEnabled"
374 userdata="scripttouchbeacon" />
375 </menu_item_check>
376 <menu_item_check name="Scripted Objects" label="Scripted Objects">
377 <on_click function="View.ToggleBeacon"
378 userdata="scriptsbeacon" />
379 <on_check function="View.CheckBeaconEnabled"
380 userdata="scriptsbeacon" />
381 </menu_item_check>
382 <menu_item_check name="Physical Objects" label="Physical Objects">
383 <on_click function="View.ToggleBeacon"
384 userdata="physicalbeacon" />
385 <on_check function="View.CheckBeaconEnabled"
386 userdata="physicalbeacon" />
387 </menu_item_check>
388 <menu_item_check name="Sound Sources" label="Sound Sources">
389 <on_click function="View.ToggleBeacon"
390 userdata="soundsbeacon" />
391 <on_check function="View.CheckBeaconEnabled"
392 userdata="soundsbeacon" />
393 </menu_item_check>
394 <menu_item_check name="Particle Sources" label="Particle Sources">
395 <on_click function="View.ToggleBeacon"
396 userdata="particlesbeacon" />
397 <on_check function="View.CheckBeaconEnabled"
398 userdata="particlesbeacon" />
399 </menu_item_check>
400 <menu_item_separator />
401 <menu_item_check name="Render Highlights" label="Render Highlights">
402 <on_click function="View.ToggleBeacon"
403 userdata="renderhighlights" />
404 <on_check function="View.CheckBeaconEnabled"
405 userdata="renderhighlights" />
406 </menu_item_check>
407 <menu_item_check name="Render Beacons" label="Render Beacons">
408 <on_click function="View.ToggleBeacon"
409 userdata="renderbeacons" />
410 <on_check function="View.CheckBeaconEnabled"
411 userdata="renderbeacons" />
412 </menu_item_check>
413 <menu_item_separator />
414 <menu_item_check name="Hide Particles" label="Hide Particles">
415 <on_click function="View.ToggleRenderType"
416 userdata="hideparticles" />
417 <on_check function="View.CheckRenderType"
418 userdata="hideparticles" />
419 </menu_item_check>
420 <menu_item_separator />
421 <menu name="Beacon Width" color="0 0 0 1" create_jump_keys="true"
422 label="Beacon Width" opaque="true" tear_off="true">
423 <menu_item_call name="Beacon Width 1" label="1">
424 <on_click function="View.BeaconWidth" userdata="1" />
425 </menu_item_call>
426 <menu_item_call name="Beacon Width 4" label="4">
427 <on_click function="View.BeaconWidth" userdata="4" />
428 </menu_item_call>
429 <menu_item_call name="Beacon Width 16" label="16">
430 <on_click function="View.BeaconWidth" userdata="16" />
431 </menu_item_call>
432 <menu_item_call name="Beacon Width 32" label="32">
433 <on_click function="View.BeaconWidth" userdata="32" />
434 </menu_item_call>
435 </menu>
436 </menu>
437 <menu_item_check name="Show HUD Attachments"
438 label="Show HUD Attachments"
439 shortcut="alt|shift|H">
440 <on_click function="View.ShowHUDAttachments" userdata="" />
441 <on_check function="View.CheckHUDAttachments" />
442 </menu_item_check>
443 <menu_item_separator />
444 <menu_item_call name="Zoom In" label="Zoom In"
445 shortcut="control|0">
446 <on_click function="View.ZoomIn" userdata="" />
447 </menu_item_call>
448 <menu_item_call name="Zoom Default" label="Zoom Default"
449 shortcut="control|9">
450 <on_click function="View.ZoomDefault" userdata="" />
451 </menu_item_call>
452 <menu_item_call name="Zoom Out" label="Zoom Out"
453 shortcut="control|8">
454 <on_click function="View.ZoomOut" userdata="" />
455 </menu_item_call>
456 <menu_item_separator />
457 <menu_item_call name="Toggle Fullscreen" label="Toggle Fullscreen"
458 shortcut="alt|Enter">
459 <on_click function="View.Fullscreen" userdata="" />
460 </menu_item_call>
461 <menu_item_call name="Set UI Size to Default"
462 label="Set UI Size to Default">
463 <on_click function="View.DefaultUISize" userdata="" />
464 </menu_item_call>
465 </menu>
466
467
468
469 <!-- WORLD -->
470
471 <menu name="World" create_jump_keys="true" label="World"
472 opaque="true" tear_off="true">
473 <menu_item_call name="Chat" label="Chat" shortcut="">
474 <on_click function="World.Chat" userdata="" />
475 </menu_item_call>
476 <menu_item_check name="Always Run" label="Always Run"
477 shortcut="control|R">
478 <on_click function="World.AlwaysRun" userdata="" />
479 <on_check function="World.CheckAlwaysRun" userdata="" />
480 </menu_item_check>
481 <menu_item_check name="Fly" label="Fly" shortcut="Home">
482 <on_click function="World.Fly" userdata="" />
483 <on_enable function="World.EnableFly" />
484 <on_check control="FlyBtnState" />
485 </menu_item_check>
486 <menu_item_separator />
487 <menu_item_call name="Create Landmark Here"
488 label="Create Landmark Here">
489 <on_click function="World.CreateLandmark" userdata="" />
490 <on_enable function="World.EnableCreateLandmark" userdata="" />
491 </menu_item_call>
492 <menu_item_call name="Set Home to Here" label="Set Home to Here">
493 <on_click function="World.SetHomeLocation" userdata="" />
494 <on_enable function="World.EnableSetHomeLocation" userdata="" />
495 </menu_item_call>
496 <menu_item_separator />
497 <menu_item_call name="Teleport Home" label="Teleport Home"
498 shortcut="control|shift|H">
499 <on_click function="World.TeleportHome" userdata="" />
500 <on_enable function="World.EnableTeleportHome" userdata="" />
501 </menu_item_call>
502 <menu_item_separator />
503 <menu_item_call name="Set Away" label="Set Away">
504 <on_click function="World.SetAway" userdata="" />
505 </menu_item_call>
506 <menu_item_call name="Set Busy" label="Set Busy">
507 <on_click function="World.SetBusy" userdata="" />
508 </menu_item_call>
509 <menu_item_call name="Stop All Animations" enabled="false"
510 label="Stop All Animations">
511 <on_click function="Tools.StopAllAnimations" userdata="" />
512 </menu_item_call>
513 <menu_item_call name="Release Keys" enabled="false" label="Release Keys">
514 <on_click function="Tools.ReleaseKeys" userdata="" />
515 <on_enable function="Tools.EnableReleaseKeys" userdata="" />
516 </menu_item_call>
517 <menu_item_separator />
518 <menu_item_call name="Account History..."
519 label="Account History...">
520 <on_click function="PromptShowURL"
521 userdata="WebLaunchAccountHistory,http://secondlife.com/account/transactions.php" />
522 </menu_item_call>
523 <menu_item_call name="Manage My Account..."
524 label="Manage My Account...">
525 <on_click function="PromptShowURL"
526 userdata="WebLaunchJoinNow,http://secondlife.com/account/" />
527 </menu_item_call>
528 <menu_item_call name="Buy and Sell L$..." label="Buy L$...">
529 <on_click function="ShowFloater" userdata="buy currency" />
530 </menu_item_call>
531 <menu_item_separator />
532 <menu_item_call name="My Land..." label="My Land...">
533 <on_click function="ShowFloater" userdata="my land" />
534 </menu_item_call>
535 <menu_item_call name="About Land..." label="About Land...">
536 <on_click function="ShowFloater" userdata="about land" />
537 </menu_item_call>
538 <menu_item_call name="Buy Land..." label="Buy Land...">
539 <on_click function="ShowFloater" userdata="buy land" />
540 <on_enable function="World.EnableBuyLand" />
541 </menu_item_call>
542 <menu_item_call name="Region/Estate..." label="Region/Estate...">
543 <on_click function="ShowFloater" userdata="about region" />
544 </menu_item_call>
545 <menu_item_separator />
546 <menu name="Environment Settings" create_jump_keys="true"
547 label="Environment Settings" opaque="true" tear_off="true">
548 <menu_item_call name="Sunrise" label="Sunrise">
549 <on_click function="World.EnvSettings" userdata="sunrise" />
550 </menu_item_call>
551 <menu_item_call name="Noon" label="Midday"
552 shortcut="control|shift|Y">
553 <on_click function="World.EnvSettings" userdata="noon" />
554 </menu_item_call>
555 <menu_item_call name="Sunset" label="Sunset"
556 shortcut="control|shift|N">
557 <on_click function="World.EnvSettings" userdata="sunset" />
558 </menu_item_call>
559 <menu_item_call name="Midnight" label="Midnight">
560 <on_click function="World.EnvSettings" userdata="midnight" />
561 </menu_item_call>
562 <menu_item_call name="Revert to Region Default" enabled="false"
563 label="Revert to Region Default">
564 <on_click function="World.EnvSettings" userdata="default" />
565 </menu_item_call>
566 <menu_item_separator />
567 <menu_item_call name="Environment Editor" enabled="false"
568 label="Environment Editor">
569 <on_click function="World.EnvSettings" userdata="editor" />
570 </menu_item_call>
571 </menu>
572 </menu>
573
574
575
576 <!-- TOOLS -->
577
578 <menu name="Tools" create_jump_keys="true" label="Tools"
579 opaque="true" tear_off="true" visible="false">
580 <menu name="Select Tool" create_jump_keys="true" label="Select Tool"
581 opaque="true" tear_off="true">
582 <menu_item_call name="Focus" label="Focus" shortcut="control|1">
583 <on_click function="Tools.SelectTool" userdata="focus" />
584 </menu_item_call>
585 <menu_item_call name="Move" label="Move" shortcut="control|2">
586 <on_click function="Tools.SelectTool" userdata="move" />
587 </menu_item_call>
588 <menu_item_call name="Edit" label="Edit" shortcut="control|3">
589 <on_click function="Tools.SelectTool" userdata="edit" />
590 </menu_item_call>
591 <menu_item_call name="Create" label="Create" shortcut="control|4">
592 <on_click function="Tools.SelectTool" userdata="create" />
593 </menu_item_call>
594 <menu_item_call name="Land" label="Land" shortcut="control|5">
595 <on_click function="Tools.SelectTool" userdata="land" />
596 </menu_item_call>
597 </menu>
598 <menu_item_separator />
599 <menu_item_check name="Select Only My Objects"
600 label="Select Only My Objects">
601 <on_click function="Tools.SelectOnlyMyObjects"
602 userdata="agents" />
603 <on_check control="SelectOwnedOnly" />
604 </menu_item_check>
605 <menu_item_check name="Select Only Movable Objects"
606 label="Select Only Movable Objects">
607 <on_click function="Tools.SelectOnlyMovableObjects"
608 userdata="movable" />
609 <on_check control="SelectMovableOnly" />
610 </menu_item_check>
611 <menu_item_check name="Select By Surrounding"
612 label="Select By Surrounding">
613 <on_click function="Tools.SelectBySurrounding"
614 userdata="" />
615 <on_check control="RectangleSelectInclusive" />
616 </menu_item_check>
617 <menu_item_check name="Show Hidden Selection"
618 label="Show Hidden Selection">
619 <on_click function="Tools.ShowHiddenSelection"
620 userdata="" />
621 <on_check control="RenderHiddenSelections" />
622 </menu_item_check>
623 <menu_item_check name="Show Light Radius for Selection"
624 label="Show Light Radius for Selection">
625 <on_click function="Tools.ShowSelectionLightRadius"
626 userdata="" />
627 <on_check control="RenderLightRadius" />
628 </menu_item_check>
629 <menu_item_check name="Show Selection Beam"
630 label="Show Selection Beam">
631 <on_click function="ToggleControl"
632 userdata="ShowSelectionBeam" />
633 <on_check control="ShowSelectionBeam" />
634 </menu_item_check>
635 <menu_item_separator />
636 <menu_item_check name="Snap to Grid" enabled="false"
637 label="Snap to Grid" shortcut="G">
638 <on_click function="ToggleControl"
639 userdata="SnapEnabled" />
640 <on_check control="SnapEnabled" />
641 <on_enable function="Tools.EnableToolNotPie" />
642 </menu_item_check>
643 <menu_item_call name="Snap Object XY to Grid" enabled="false"
644 label="Snap Object XY to Grid" shortcut="shift|X">
645 <on_click function="Tools.SnapObjectXY" userdata="" />
646 <on_enable function="Tools.EnableToolNotPie" />
647 </menu_item_call>
648 <menu_item_call name="Use Selection for Grid" enabled="false"
649 label="Use Selection for Grid" shortcut="shift|G">
650 <on_click function="Tools.UseSelectionForGrid" userdata="" />
651 <on_enable function="SomethingSelected" />
652 </menu_item_call>
653 <menu_item_call name="Grid Options..." enabled="false"
654 label="Grid Options..." shortcut="control|shift|B">
655 <on_click function="ShowFloater" userdata="grid options" />
656 <on_enable function="Tools.EnableToolNotPie" />
657 </menu_item_call>
658 <menu_item_separator />
659 <menu_item_check name="Edit Linked Parts" enabled="false"
660 label="Edit Linked Parts" shortcut="">
661 <on_click function="ToggleControl" userdata="EditLinkedParts" />
662 <on_click function="Tools.EditLinkedParts" userdata="" />
663 <on_check control="EditLinkedParts" />
664 <on_enable function="Tools.EnableToolNotPie" />
665 </menu_item_check>
666 <menu_item_call name="Link" enabled="false" label="Link"
667 shortcut="control|L">
668 <on_click function="Tools.Link" userdata="" />
669 <on_enable function="Tools.EnableLink" />
670 </menu_item_call>
671 <menu_item_call name="Unlink" enabled="false" label="Unlink"
672 shortcut="control|shift|L">
673 <on_click function="Tools.Unlink" userdata="" />
674 <on_enable function="Tools.EnableUnlink" />
675 </menu_item_call>
676 <menu_item_separator />
677 <menu_item_call name="Focus on Selection" enabled="false"
678 label="Focus on Selection" shortcut="H">
679 <on_click function="Tools.LookAtSelection" userdata="focus" />
680 <on_enable function="Tools.SomethingSelectedNoHUD" />
681 </menu_item_call>
682 <menu_item_call name="Zoom to Selection" enabled="false"
683 label="Zoom to Selection" shortcut="shift|H">
684 <on_click function="Tools.LookAtSelection" userdata="zoom" />
685 <on_enable function="Tools.SomethingSelectedNoHUD" />
686 </menu_item_call>
687 <menu_item_call name="Menu Object Take" enabled="false"
688 label="Buy Object" visible="false">
689 <on_click function="Tools.BuyOrTake" userdata="" />
690 <on_enable function="Tools.EnableBuyOrTake" userdata="Buy,Take" />
691 </menu_item_call>
692 <menu_item_call name="Take Copy" enabled="false"
693 label="Take Copy">
694 <on_click function="Tools.TakeCopy" userdata="" />
695 <on_enable function="Tools.EnableTakeCopy" />
696 </menu_item_call>
697 <menu_item_call name="Return..." enabled="false"
698 label="Return Object">
699 <on_click function="Object.Return" />
700 <on_enable function="Object.EnableReturn" />
701 </menu_item_call>
702 <menu_item_call name="Save Object Back to My Inventory"
703 enabled="false"
704 label="Save Object Back to My Inventory">
705 <on_click function="Tools.SaveToInventory" userdata="" />
706 <on_enable function="Tools.EnableSaveToInventory" />
707 </menu_item_call>
708 <menu_item_call name="Save Object Back to Object Contents"
709 enabled="false"
710 label="Save Object Back to Object Contents">
711 <on_click function="Tools.SaveToObjectInventory" userdata="" />
712 <on_enable function="Tools.EnableSaveToObjectInventory" />
713 </menu_item_call>
714 <menu_item_separator />
715 <menu_item_call name="Show Script Warning/Error Window"
716 label="Show Script Warning/Error Window">
717 <on_click function="ShowFloater" userdata="script errors" />
718 </menu_item_call>
719 <menu name="Recompile Scripts in Selection" create_jump_keys="true"
720 label="Recompile Scripts in Selection" opaque="true"
721 tear_off="true">
722 <menu_item_call name="Mono" label="Mono">
723 <on_click function="Tools.SelectedScriptAction"
724 userdata="compile mono" />
725 <on_enable function="EditableSelectedMono" />
726 </menu_item_call>
727 <menu_item_call name="LSL" label="LSL">
728 <on_click function="Tools.SelectedScriptAction"
729 userdata="compile lsl" />
730 <on_enable function="EditableSelected" />
731 </menu_item_call>
190 </menu> 732 </menu>
191 <menu_item_separator bottom="-305" enabled="true" height="8" label="-----------" left="0" 733 <menu_item_call name="Reset Scripts in Selection" enabled="false"
192 mouse_opaque="true" name="separator6" width="153" /> 734 label="Reset Scripts in Selection">
193 <menu_item_call bottom="-324" enabled="true" height="19" label="Gestures..." left="0" 735 <on_click function="Tools.SelectedScriptAction"
194 mouse_opaque="true" name="Gestures..." shortcut="control|G" width="153"> 736 userdata="reset" />
195 <on_click function="ShowFloater" userdata="gestures" /> 737 <on_enable function="EditableSelected" />
196 </menu_item_call> 738 </menu_item_call>
197 <menu_item_call bottom="-343" enabled="true" height="19" label="Profile..." left="0" 739 <menu_item_call name="Set Scripts to Running in Selection"
198 mouse_opaque="true" name="Profile..." width="153"> 740 enabled="false"
199 <on_click function="ShowAgentProfile" userdata="agent" /> 741 label="Set Scripts to Running in Selection">
200 </menu_item_call> 742 <on_click function="Tools.SelectedScriptAction"
201 <menu_item_call bottom="-362" enabled="true" height="19" label="Appearance..." left="0" 743 userdata="start" />
202 mouse_opaque="true" name="Appearance..." width="153"> 744 <on_enable function="EditableSelected" />
203 <on_click function="ShowFloater" userdata="appearance" /> 745 </menu_item_call>
204 <on_enable function="Edit.EnableCustomizeAvatar" /> 746 <menu_item_call name="Set Scripts to Not Running in Selection"
205 </menu_item_call> 747 enabled="false"
206 <menu_item_separator bottom="-370" enabled="true" height="8" label="-----------" left="0" 748 label="Set Scripts to Not Running in Selection">
207 mouse_opaque="true" name="separator7" width="153" /> 749 <on_click function="Tools.SelectedScriptAction"
208 <menu_item_check bottom="-389" enabled="true" height="19" label="Friends..." left="0" 750 userdata="stop" />
209 mouse_opaque="true" name="Friends..." shortcut="control|shift|F" 751 <on_enable function="EditableSelected" />
210 width="153"> 752 </menu_item_call>
211 <on_click function="ShowFloater" userdata="friends" /> 753 <menu_item_call name="Set permissions on selected task inventory"
212 <on_check function="FloaterVisible" userdata="friends" /> 754 enabled="false"
213 </menu_item_check> 755 label="Set permissions on selected task inventory">
214 <menu_item_call bottom="-408" enabled="true" height="19" label="Groups..." left="0" 756 <on_click function="Tools.SetBulkPerms" userdata="" />
215 mouse_opaque="true" name="Groups..." width="153"> 757 <on_enable function="EditableSelected" />
216 <on_click function="ShowAgentGroups" userdata="agent" /> 758 </menu_item_call>
217 </menu_item_call> 759 </menu>
218 <menu_item_separator bottom="-416" enabled="true" height="8" label="-----------" left="0" 760
219 mouse_opaque="true" name="separator8" width="153" /> 761
220 <menu_item_call bottom="-435" enabled="true" height="19" label="Preferences..." left="0" 762
221 mouse_opaque="true" name="Preferences..." shortcut="control|P" width="153"> 763 <!-- HELP -->
222 <on_click function="ShowFloater" userdata="preferences" /> 764
223 </menu_item_call> 765 <menu name="Help" create_jump_keys="true" label="Help"
224 </menu> 766 opaque="true" tear_off="true">
225 <menu bottom="-1" create_jump_keys="true" drop_shadow="true" enabled="true" 767 <menu_item_call name="Second Life Help" label="Second Life Help"
226 height="537" label="View" left="80" mouse_opaque="false" name="View" 768 shortcut="F1">
227 opaque="true" tear_off="true" width="211"> 769 <on_click function="ShowFloater" userdata="help f1" />
228 <tearoff_menu bottom="-10" enabled="true" height="10" label="~~~~~~~~~~~" left="0" 770 </menu_item_call>
229 mouse_opaque="true" name="~~~~~~~~~~~" width="211" /> 771 <menu_item_call name="Tutorial" label="Tutorial">
230 <menu_item_call bottom="-29" enabled="true" height="19" label="Mouselook" left="0" 772 <on_click function="ShowFloater" userdata="help tutorial" />
231 mouse_opaque="true" name="Mouselook" shortcut="M" width="211"> 773 </menu_item_call>
232 <on_click function="View.Mouselook" userdata="" /> 774 <menu_item_separator />
233 <on_enable function="View.EnableMouselook" /> 775 <menu_item_call name="Official Linden Blog..."
234 </menu_item_call> 776 label="Official Linden Blog...">
235 <menu_item_check bottom="-48" enabled="true" height="19" label="Build" left="0" 777 <on_click function="PromptShowURL"
236 mouse_opaque="true" name="Build" shortcut="B" width="211"> 778 userdata="WebLaunchSupportWiki,http://blog.secondlife.com/" />
237 <on_click function="View.BuildMode" userdata="" /> 779 </menu_item_call>
238 <on_check function="View.CheckBuildMode" /> 780 <menu_item_separator />
239 </menu_item_check> 781 <menu_item_call name="Scripting Guide..."
240 <menu_item_check bottom="-48" enabled="true" height="19" label="Joystick Flycam" left="0" 782 label="Scripting Guide...">
241 mouse_opaque="true" name="Joystick Flycam" shortcut="alt|shift|F" 783 <on_click function="PromptShowFile"
242 width="211"> 784 userdata="WebLaunchLSLGuide,lsl_guide.html" />
243 <on_click function="View.JoystickFlycam" userdata="" /> 785 </menu_item_call>
244 <on_check function="View.CheckJoystickFlycam" /> 786 <menu_item_call name="Scripting Portal..."
245 </menu_item_check> 787 label="Scripting Portal...">
246 <menu_item_call bottom="-67" enabled="true" height="19" label="Reset View" left="0" 788 <on_click function="PromptShowURL"
247 mouse_opaque="true" name="Reset View" shortcut="Esc" width="211"> 789 userdata="WebLaunchLSLWiki,http://wiki.secondlife.com/wiki/LSL_Portal" />
248 <on_click function="View.ResetView" userdata="" /> 790 </menu_item_call>
249 </menu_item_call> 791 <menu_item_separator />
250 <menu_item_call bottom="-86" enabled="false" height="19" label="Look at Last Chatter" left="0" 792 <menu_item_call name="Report Abuse..." label="Report Abuse...">
251 mouse_opaque="true" name="Look at Last Chatter" shortcut="control|\" 793 <on_click function="ShowFloater"
252 width="211"> 794 userdata="complaint reporter" />
253 <on_click function="View.LookAtLastChatter" userdata="" /> 795 </menu_item_call>
254 <on_enable function="View.EnableLastChatter" /> 796 <menu_item_call name="Bumps, Pushes &amp;amp; Hits..."
255 </menu_item_call> 797 label="Bumps, Pushes &amp; Hits...">
256 <menu_item_separator bottom="-94" enabled="true" height="8" label="-----------" left="0" 798 <on_click function="ShowFloater" userdata="mean events" />
257 mouse_opaque="true" name="separator" width="211" /> 799 </menu_item_call>
258 <menu_item_check bottom="-113" enabled="true" height="19" label="Toolbar" left="0" 800 <menu_item_call name="Lag Meter" label="Lag Meter">
259 mouse_opaque="true" name="Toolbar" width="211"> 801 <on_click function="ShowFloater" userdata="lag meter" />
260 <on_click function="ShowFloater" userdata="toolbar" /> 802 </menu_item_call>
261 <on_check function="FloaterVisible" userdata="toolbar" /> 803 <menu_item_separator />
262 </menu_item_check> 804 <menu name="Bug Reporting" create_jump_keys="true"
263 <menu_item_check bottom="-132" enabled="true" height="19" label="Local Chat" left="0" 805 label="Bug Reporting" opaque="true" tear_off="true">
264 mouse_opaque="true" name="Chat History" shortcut="control|H" width="211"> 806 <menu_item_call name="Public Issue Tracker..."
265 <on_click function="ShowFloater" userdata="chat history" /> 807 label="Public Issue Tracker...">
266 <on_check function="FloaterVisible" userdata="chat history" /> 808 <on_click function="PromptShowURL"
267 </menu_item_check> 809 userdata="WebLaunchPublicIssue,http://jira.secondlife.com" />
268 <menu_item_check bottom="-151" enabled="true" height="19" label="Communicate" left="0" 810 </menu_item_call>
269 mouse_opaque="true" name="Instant Message" shortcut="control|T" width="211"> 811 <menu_item_call name="Publc Issue Tracker Help..."
270 <on_click function="ShowFloater" userdata="im" /> 812 label="Public Issue Tracker Help...">
271 <on_check function="FloaterVisible" userdata="im" /> 813 <on_click function="PromptShowURL"
272 </menu_item_check> 814 userdata="WebLaunchPublicIssueHelp,http://wiki.secondlife.com/wiki/Issue_tracker" />
273 <menu_item_call bottom="-170" enabled="true" height="19" label="Inventory" left="0" 815 </menu_item_call>
274 mouse_opaque="true" name="Inventory" shortcut="control|I" width="211"> 816 <menu_item_separator />
275 <on_click function="ShowFloater" userdata="inventory" /> 817 <menu_item_call name="Bug Reporing 101..."
276 </menu_item_call> 818 label="Bug Reporting 101...">
277 <menu_item_check bottom="-189" enabled="true" height="19" label="Active Speakers" left="0" 819 <on_click function="PromptShowURL"
278 mouse_opaque="true" name="Active Speakers" width="211"> 820 userdata="WebLaunchBugReport101,http://wiki.secondlife.com/wiki/Bug_Reporting_101" />
279 <on_click function="ShowFloater" userdata="active speakers" /> 821 </menu_item_call>
280 <on_check function="FloaterVisible" userdata="active speakers" /> 822 <menu_item_call name="Security Issues..."
281 </menu_item_check> 823 label="Security Issues...">
282 <menu_item_check bottom="-189" enabled="true" height="19" label="Mute List" left="0" 824 <on_click function="PromptShowURL"
283 mouse_opaque="true" name="Mute List" width="211"> 825 userdata="WebLaunchSecurityIssues,http://wiki.secondlife.com/wiki/Security_issues" />
284 <on_click function="ShowFloater" userdata="mute list" /> 826 </menu_item_call>
285 <on_check function="FloaterVisible" userdata="mute list" /> 827 <menu_item_call name="QA Wiki..." label="QA Wiki...">
286 </menu_item_check> 828 <on_click function="PromptShowURL"
287 <menu_item_separator bottom="-197" enabled="true" height="8" label="-----------" left="0" 829 userdata="WebLaunchQAWiki,http://wiki.secondlife.com/wiki/QA_Portal" />
288 mouse_opaque="true" name="separator2" width="211" /> 830 </menu_item_call>
289 <menu_item_check bottom="-216" enabled="true" height="19" label="Camera Controls" left="0" 831 <menu_item_separator />
290 mouse_opaque="true" name="Camera Controls" width="211"> 832 <menu_item_call name="Report Bug..." label="Report Bug...">
291 <on_click function="ShowFloater" userdata="camera controls" /> 833 <on_click function="PromptShowURL"
292 <on_check function="FloaterVisible" userdata="camera controls" /> 834 userdata="WebLaunchPublicIssue,http://jira.secondlife.com" />
293 </menu_item_check> 835 </menu_item_call>
294 <menu_item_check bottom="-235" enabled="true" height="19" label="Movement Controls" left="0" 836 </menu>
295 mouse_opaque="true" name="Movement Controls" width="211"> 837 <menu_item_separator />
296 <on_click function="ShowFloater" userdata="movement controls" /> 838 <menu_item_call name="About Second Life..."
297 <on_check function="FloaterVisible" userdata="movement controls" /> 839 label="About Second Life...">
298 </menu_item_check> 840 <on_click function="ShowFloater" userdata="about" />
299 <menu_item_check bottom="-254" enabled="true" height="19" label="World Map" left="0" 841 </menu_item_call>
300 mouse_opaque="true" name="World Map" shortcut="control|M" width="211"> 842 </menu>
301 <on_click function="ShowFloater" userdata="world map" /> 843
302 <on_check control="ShowWorldMap" /> 844
303 </menu_item_check> 845
304 <menu_item_check bottom="-273" enabled="true" height="19" label="Mini-Map" left="0" 846 <!-- ADVANCED -->
305 mouse_opaque="true" name="Mini-Map" shortcut="control|shift|M" width="211"> 847
306 <on_click function="ShowFloater" userdata="mini map" /> 848 <menu name="Advanced" drop_shadow="true"
307 <on_check control="ShowMiniMap" /> 849 opaque="true" tear_off="true">
308 </menu_item_check> 850
309 <menu_item_separator bottom="-281" enabled="true" height="8" label="-----------" left="0" 851
310 mouse_opaque="true" name="separator3" width="211" /> 852 <!-- CONSOLES -->
311 <menu_item_check bottom="-300" enabled="true" height="19" label="Statistics Bar" left="0" 853
312 mouse_opaque="true" name="Statistics Bar" shortcut="control|shift|1" 854 <menu name="Consoles" drop_shadow="true"
313 width="211"> 855 opaque="true" tear_off="true">
314 <on_click function="ShowFloater" userdata="stat bar" /> 856 <menu_item_check name="Frame Console" label="Frame Console"
315 <on_check function="FloaterVisible" userdata="stat bar" /> 857 shortcut="control|shift|2">
316 </menu_item_check> 858 <on_click function="Advanced.ToggleConsole"
317 <menu_item_check bottom="-319" enabled="true" height="19" label="Property Lines" left="0" 859 userdata="frame" />
318 mouse_opaque="true" name="Property Lines" shortcut="control|alt|shift|P" 860 <on_check function="Advanced.CheckConsole"
319 width="211"> 861 userdata="frame" />
320 <on_click function="ToggleControl" userdata="ShowPropertyLines" /> 862 </menu_item_check>
321 <on_check control="ShowPropertyLines" /> 863 <menu_item_check name="Texture Console" label="Texture Console"
322 </menu_item_check> 864 shortcut="control|shift|3">
323 <menu_item_check bottom="-338" enabled="true" height="19" label="Land Owners" left="0" 865 <on_click function="Advanced.ToggleConsole"
324 mouse_opaque="true" name="Land Owners" width="211"> 866 userdata="texture" />
325 <on_click function="ToggleControl" userdata="ShowParcelOwners" /> 867 <on_check function="Advanced.CheckConsole"
326 <on_check control="ShowParcelOwners" /> 868 userdata="texture" />
327 </menu_item_check> 869 </menu_item_check>
328 <menu_item_separator bottom="-346" enabled="true" height="8" label="-----------" left="0" 870 <menu_item_check name="Debug Console" label="Debug Console"
329 mouse_opaque="true" name="separator4" width="211" /> 871 shortcut="control|shift|4">
330 <menu bottom="-554" create_jump_keys="true" drop_shadow="true" enabled="true" 872 <on_click function="Advanced.ToggleConsole"
331 height="79" label="Hover Tips" left="0" mouse_opaque="false" 873 userdata="debug" />
332 name="Hover Tips" opaque="true" tear_off="true" width="158"> 874 <on_check function="Advanced.CheckConsole"
333 <menu_item_check bottom="-29" enabled="true" height="19" label="Show Tips" left="0" 875 userdata="debug" />
334 mouse_opaque="true" name="Show Tips" shortcut="control|shift|T" width="158"> 876 </menu_item_check>
335 <on_click function="View.ShowHoverTips" userdata="" /> 877 <menu_item_check name="Fast Timers" label="Fast Timers"
336 <on_check function="View.CheckShowHoverTips" /> 878 shortcut="control|shift|9">
337 </menu_item_check> 879 <on_click function="Advanced.ToggleConsole"
338 <menu_item_separator bottom="-37" enabled="true" height="8" label="-----------" left="0" 880 userdata="fast timers" />
339 mouse_opaque="true" name="separator" width="158" /> 881 <on_check function="Advanced.CheckConsole"
340 <menu_item_check bottom="-56" enabled="true" height="19" label="Land Tips" left="0" 882 userdata="fast timers" />
341 mouse_opaque="true" name="Land Tips" width="158"> 883 </menu_item_check>
342 <on_click function="ToggleControl" userdata="ShowLandHoverTip" /> 884 <!-- Requires compiled-in support, I think?
343 <on_enable function="View.CheckShowHoverTips" /> 885 <menu_item_check name="Memory" label="Memory"
344 <on_check control="ShowLandHoverTip" /> 886 shortcut="control|shift|0">
345 </menu_item_check> 887 <on_click function="Advanced.ToggleConsole"
346 <menu_item_check bottom="-75" enabled="true" height="19" label="Tips On All Objects" left="0" 888 userdata="memory" />
347 mouse_opaque="true" name="Tips On All Objects" width="158"> 889 <on_check function="Advanced.CheckConsole"
348 <on_click function="ToggleControl" userdata="ShowAllObjectHoverTip" /> 890 userdata="memory" />
349 <on_enable function="View.CheckShowHoverTips" /> 891 </menu_item_check>
350 <on_check control="ShowAllObjectHoverTip" /> 892 -->
351 </menu_item_check> 893 <menu_item_separator />
352 </menu> 894 <menu_item_call name="Region Info to Debug Console"
353 <menu_item_check bottom="-403" enabled="true" height="19" label="Highlight Transparent" left="0" 895 label="Region Info to Debug Console">
354 mouse_opaque="true" name="Highlight Transparent" shortcut="control|alt|T" 896 <on_click function="Advanced.DumpInfoToConsole"
355 width="211"> 897 userdata="region" />
356 <on_click function="View.HighlightTransparent" userdata="" /> 898 </menu_item_call>
357 <on_check function="View.CheckHighlightTransparent" /> 899 <menu_item_call name="Group Info to Debug Console"
358 </menu_item_check> 900 label="Group Info to Debug Console">
359 <menu_item_check bottom="-384" enabled="true" height="19" label="Beacons Always On" left="0" 901 <on_click function="Advanced.DumpInfoToConsole"
360 mouse_opaque="true" name="Beacons Always On" 902 userdata="group" />
361 width="211"> 903 </menu_item_call>
362 <on_click function="ToggleControl" userdata="BeaconAlwaysOn" /> 904 <menu_item_call name="Capabilities Info to Debug Console"
363 <on_check control="BeaconAlwaysOn" /> 905 label="Capabilities Info to Debug Console">
364 </menu_item_check> 906 <on_click function="Advanced.DumpInfoToConsole"
365 <menu bottom="-554" create_jump_keys="true" drop_shadow="true" enabled="true" 907 userdata="capabilities" />
366 height="117" label="Beacons" left="0" mouse_opaque="false" name="Beacons" 908 </menu_item_call>
367 opaque="true" tear_off="true" width="129"> 909 </menu>
368 <menu_item_check bottom="-29" enabled="true" height="19" 910
369 label="Scripted Objects with Touch Only" left="0" mouse_opaque="true" 911
370 name="Scripted Objects With Touch Only" width="129"> 912 <menu_item_call name="Reload personal setting overrides"
371 <on_click function="View.ToggleBeacon" userdata="scripttouchbeacon" /> 913 label="Reload personal settings overrides"
372 <on_check function="View.CheckBeaconEnabled" userdata="scripttouchbeacon" /> 914 shortcut="control|shift|F2">
373 </menu_item_check> 915 <on_click function="Advanced.ReloadSettingsOverrides" userdata="" />
374 <menu_item_check bottom="-48" enabled="true" height="19" label="Scripted Objects" left="0" 916 </menu_item_call>
375 mouse_opaque="true" name="Scripted Objects" width="129"> 917
376 <on_click function="View.ToggleBeacon" userdata="scriptsbeacon" /> 918
377 <on_check function="View.CheckBeaconEnabled" userdata="scriptsbeacon" /> 919
378 </menu_item_check> 920 <!-- HUD INFO -->
379 <menu_item_check bottom="-67" enabled="true" height="19" label="Physical Objects" left="0" 921
380 mouse_opaque="true" name="Physical Objects" width="129"> 922 <menu name="HUD Info" drop_shadow="true"
381 <on_click function="View.ToggleBeacon" userdata="physicalbeacon" /> 923 opaque="true" tear_off="true">
382 <on_check function="View.CheckBeaconEnabled" userdata="physicalbeacon" /> 924 <menu_item_check name="Velocity" label="Velocity">
383 </menu_item_check> 925 <on_click function="Advanced.ToggleHUDInfo"
384 <menu_item_check bottom="-86" enabled="true" height="19" label="Sound Sources" left="0" 926 userdata="velocity" />
385 mouse_opaque="true" name="Sound Sources" width="129"> 927 <on_check function="Advanced.CheckHUDInfo"
386 <on_click function="View.ToggleBeacon" userdata="soundsbeacon" /> 928 userdata="velocity" />
387 <on_check function="View.CheckBeaconEnabled" userdata="soundsbeacon" /> 929 </menu_item_check>
388 </menu_item_check> 930 <menu_item_check name="Camera" label="Camera">
389 <menu_item_check bottom="-105" enabled="true" height="19" label="Particle Sources" left="0" 931 <on_click function="Advanced.ToggleHUDInfo"
390 mouse_opaque="true" name="Particle Sources" width="129"> 932 userdata="camera" />
391 <on_click function="View.ToggleBeacon" userdata="particlesbeacon" /> 933 <on_check function="Advanced.CheckHUDInfo"
392 <on_check function="View.CheckBeaconEnabled" userdata="particlesbeacon" /> 934 userdata="camera" />
393 </menu_item_check> 935 </menu_item_check>
394 <menu_item_separator bottom="-113" enabled="true" height="8" label="-----------" left="0" 936 <menu_item_check name="Wind" label="Wind">
395 mouse_opaque="true" name="separator" width="129" /> 937 <on_click function="Advanced.ToggleHUDInfo"
396 <menu_item_check bottom="-121" enabled="true" height="19" label="Render Highlights" left="0" 938 userdata="wind" />
397 mouse_opaque="true" name="Render Highlights" width="129"> 939 <on_check function="Advanced.CheckHUDInfo"
398 <on_click function="View.ToggleBeacon" userdata="renderhighlights" /> 940 userdata="wind" />
399 <on_check function="View.CheckBeaconEnabled" userdata="renderhighlights" /> 941 </menu_item_check>
400 </menu_item_check> 942 <menu_item_check name="FOV" label="FOV">
401 <menu_item_check bottom="-140" enabled="true" height="19" label="Render Beacons" left="0" 943 <on_click function="Advanced.ToggleHUDInfo"
402 mouse_opaque="true" name="Render Beacons" width="129"> 944 userdata="fov" />
403 <on_click function="View.ToggleBeacon" userdata="renderbeacons" /> 945 <on_check function="Advanced.CheckHUDInfo"
404 <on_check function="View.CheckBeaconEnabled" userdata="renderbeacons" /> 946 userdata="fov" />
405 </menu_item_check> 947 </menu_item_check>
406 <menu_item_separator bottom="-159" enabled="true" height="8" label="-----------" left="0" 948 </menu>
407 mouse_opaque="true" name="separator2" width="129" /> 949
408 <menu_item_check bottom="-167" enabled="true" height="19" label="Hide Particles" left="0" 950
409 mouse_opaque="true" name="Hide Particles" width="129"> 951 <menu_item_separator />
410 <on_click function="View.ToggleRenderType" userdata="hideparticles" /> 952
411 <on_check function="View.CheckRenderType" userdata="hideparticles" /> 953 <menu_item_check name="High-res Snapshot"
412 </menu_item_check> 954 label="High-res Snapshot">
413 <menu_item_separator bottom="-186" enabled="true" height="8" label="-----------" left="0" 955 <on_click function="ToggleControl"
414 mouse_opaque="true" name="separator3" width="129" /> 956 userdata="HighResSnapshot" />
415 <menu bottom="-205" color="0 0 0 1" create_jump_keys="true" drop_shadow="true" 957 <on_check control="HighResSnapshot" />
416 enabled="true" height="117" label="Beacon Width" left="0" 958 </menu_item_check>
417 mouse_opaque="false" name="Beacon Width" opaque="true" tear_off="true" 959 <menu_item_check name="Quiet Snapshots to Disk"
418 width="129"> 960 label="Quiet Snapshots to Disk">
419 <menu_item_call bottom="-19" enabled="true" height="19" label="1" left="0" mouse_opaque="true" 961 <on_click function="ToggleControl"
420 name="Beacon Width 1" width="188"> 962 userdata="QuietSnapshotsToDisk" />
421 <on_click function="View.BeaconWidth" userdata="1" /> 963 <on_check control="QuietSnapshotsToDisk" />
422 </menu_item_call> 964 </menu_item_check>
423 <menu_item_call bottom="-19" enabled="true" height="19" label="4" left="0" mouse_opaque="true" 965 <menu_item_check name="Compress Snapshots to Disk"
424 name="Beacon Width 4" width="188"> 966 label="Compress Snapshots to Disk">
425 <on_click function="View.BeaconWidth" userdata="4" /> 967 <on_click function="ToggleControl"
426 </menu_item_call> 968 userdata="CompressSnapshotsToDisk" />
427 <menu_item_call bottom="-19" enabled="true" height="19" label="16" left="0" mouse_opaque="true" 969 <on_check control="CompressSnapshotsToDisk" />
428 name="Beacon Width 16" width="188"> 970 </menu_item_check>
429 <on_click function="View.BeaconWidth" userdata="16" /> 971 <menu_item_check name="Show Mouselook Crosshairs"
430 </menu_item_call> 972 label="Show Mouselook Crosshairs">
431 <menu_item_call bottom="-19" enabled="true" height="19" label="32" left="0" mouse_opaque="true" 973 <on_click function="ToggleControl"
432 name="Beacon Width 32" width="188"> 974 userdata="ShowCrosshairs" />
433 <on_click function="View.BeaconWidth" userdata="32" /> 975 <on_check control="ShowCrosshairs" />
434 </menu_item_call> 976 </menu_item_check>
435 </menu> 977 <menu_item_check name="Debug Permissions"
436 </menu> 978 label="Debug Permissions">
437 <menu_item_check bottom="-441" enabled="true" height="19" label="Show HUD Attachments" left="0" 979 <on_click function="ToggleControl"
438 mouse_opaque="true" name="Show HUD Attachments" shortcut="alt|shift|H" 980 userdata="DebugPermissions" />
439 width="211"> 981 <on_check control="DebugPermissions" />
440 <on_click function="View.ShowHUDAttachments" userdata="" /> 982 </menu_item_check>
441 <on_check function="View.CheckHUDAttachments" /> 983 <menu_item_call name="Clear Group Cache"
442 </menu_item_check> 984 label="Clear Group Cache">
443 <menu_item_separator bottom="-449" enabled="true" height="8" label="-----------" left="0" 985 <on_click function="Advanced.ClearGroupCache"
444 mouse_opaque="true" name="separator5" width="211" /> 986 userdata="" />
445 <menu_item_call bottom="-468" enabled="true" height="19" label="Zoom In" left="0" 987 </menu_item_call>
446 mouse_opaque="true" name="Zoom In" shortcut="control|0" width="211"> 988 <menu_item_separator />
447 <on_click function="View.ZoomIn" userdata="" /> 989
448 </menu_item_call> 990
449 <menu_item_call bottom="-487" enabled="true" height="19" label="Zoom Default" left="0" 991
450 mouse_opaque="true" name="Zoom Default" shortcut="control|9" width="211"> 992 <!-- RENDERING -->
451 <on_click function="View.ZoomDefault" userdata="" /> 993
452 </menu_item_call> 994 <menu name="Rendering" drop_shadow="true"
453 <menu_item_call bottom="-506" enabled="true" height="19" label="Zoom Out" left="0" 995 opaque="true" tear_off="true">
454 mouse_opaque="true" name="Zoom Out" shortcut="control|8" width="211"> 996
455 <on_click function="View.ZoomOut" userdata="" /> 997 <!-- TYPES -->
456 </menu_item_call> 998 <menu name="Types" drop_shadow="true"
457 <menu_item_separator bottom="-514" enabled="true" height="8" label="-----------" left="0" 999 opaque="true" tear_off="true">
458 mouse_opaque="true" name="separator6" width="211" /> 1000 <menu_item_check name="Simple" label="Simple"
459 <menu_item_call bottom="-19" enabled="true" height="19" label="Toggle Fullscreen" left="0" 1001 shortcut="control|alt|shift|1">
460 mouse_opaque="true" name="Toggle Fullscreen" shortcut="alt|Enter" 1002 <on_click function="Advanced.ToggleRenderType"
461 width="188"> 1003 userdata="simple" />
462 <on_click function="View.Fullscreen" userdata="" /> 1004 <on_check function="Advanced.CheckRenderType"
463 </menu_item_call> 1005 userdata="simple" />
464 <menu_item_call bottom="-38" enabled="true" height="19" label="Set UI Size to Default" left="0" 1006 </menu_item_check>
465 mouse_opaque="true" name="Set UI Size to Default" width="188"> 1007 <menu_item_check name="Alpha" label="Alpha"
466 <on_click function="View.DefaultUISize" userdata="" /> 1008 shortcut="control|alt|shift|2">
467 </menu_item_call> 1009 <on_click function="Advanced.ToggleRenderType"
468 </menu> 1010 userdata="alpha" />
469 <menu bottom="-18" create_jump_keys="true" drop_shadow="true" enabled="true" 1011 <on_check function="Advanced.CheckRenderType"
470 height="339" label="World" left="0" mouse_opaque="false" name="World" 1012 userdata="alpha" />
471 opaque="true" tear_off="true" width="185"> 1013 </menu_item_check>
472 <menu_item_call bottom="-29" enabled="true" height="19" label="Chat" left="0" 1014 <menu_item_check name="Tree" label="Tree"
473 mouse_opaque="true" name="Chat" shortcut="" width="185"> 1015 shortcut="control|alt|shift|3">
474 <on_click function="World.Chat" userdata="" /> 1016 <on_click function="Advanced.ToggleRenderType"
475 </menu_item_call> 1017 userdata="tree" />
476 <menu_item_check bottom="-67" enabled="true" height="19" label="Always Run" left="0" 1018 <on_check function="Advanced.CheckRenderType"
477 mouse_opaque="true" name="Always Run" shortcut="control|R" width="185"> 1019 userdata="tree" />
478 <on_click function="World.AlwaysRun" userdata="" /> 1020 </menu_item_check>
479 <on_check function="World.CheckAlwaysRun" userdata="" /> 1021 <menu_item_check name="Character" label="Character"
480 </menu_item_check> 1022 shortcut="control|alt|shift|4">
481 <menu_item_check bottom="-86" enabled="true" height="19" label="Fly" left="0" 1023 <on_click function="Advanced.ToggleRenderType"
482 mouse_opaque="true" name="Fly" shortcut="Home" width="185"> 1024 userdata="avatar" />
483 <on_click function="World.Fly" userdata="" /> 1025 <on_check function="Advanced.CheckRenderType"
484 <on_enable function="World.EnableFly" /> 1026 userdata="avatar" />
485 <on_check control="FlyBtnState" /> 1027 </menu_item_check>
486 </menu_item_check> 1028 <menu_item_check name="SurfacePatch" label="SurfacePatch"
487 <menu_item_separator bottom="-94" enabled="true" height="8" label="-----------" left="0" 1029 shortcut="control|alt|shift|5">
488 mouse_opaque="true" name="separator" width="185" /> 1030 <on_click function="Advanced.ToggleRenderType"
489 <menu_item_call bottom="-113" enabled="true" height="19" label="Create Landmark Here" left="0" 1031 userdata="terrain" />
490 mouse_opaque="true" name="Create Landmark Here" width="185"> 1032 <on_check function="Advanced.CheckRenderType"
491 <on_click function="World.CreateLandmark" userdata="" /> 1033 userdata="terrain" />
492 <on_enable function="World.EnableCreateLandmark" userdata="" /> 1034 </menu_item_check>
493 </menu_item_call> 1035 <menu_item_check name="Sky" label="Sky"
494 <menu_item_call bottom="-132" enabled="true" height="19" label="Set Home to Here" left="0" 1036 shortcut="control|alt|shift|6">
495 mouse_opaque="true" name="Set Home to Here" width="185"> 1037 <on_click function="Advanced.ToggleRenderType"
496 <on_click function="World.SetHomeLocation" userdata="" /> 1038 userdata="sky" />
497 <on_enable function="World.EnableSetHomeLocation" userdata="" /> 1039 <on_check function="Advanced.CheckRenderType"
498 </menu_item_call> 1040 userdata="sky" />
499 <menu_item_separator bottom="-140" enabled="true" height="8" label="-----------" left="0" 1041 </menu_item_check>
500 mouse_opaque="true" name="separator2" width="185" /> 1042 <menu_item_check name="Water" label="Water"
501 <menu_item_call bottom="-159" enabled="true" height="19" label="Teleport Home" left="0" 1043 shortcut="control|alt|shift|7">
502 mouse_opaque="true" name="Teleport Home" shortcut="control|shift|H" 1044 <on_click function="Advanced.ToggleRenderType"
503 width="185"> 1045 userdata="water" />
504 <on_click function="World.TeleportHome" userdata="" /> 1046 <on_check function="Advanced.CheckRenderType"
505 <on_enable function="World.EnableTeleportHome" userdata="" /> 1047 userdata="water" />
506 </menu_item_call> 1048 </menu_item_check>
507 <menu_item_separator bottom="-167" enabled="true" height="8" label="-----------" left="0" 1049 <menu_item_check name="Ground" label="Ground"
508 mouse_opaque="true" name="separator3" width="185" /> 1050 shortcut="control|alt|shift|8">
509 <menu_item_call bottom="-186" enabled="true" height="19" label="Set Away" left="0" 1051 <on_click function="Advanced.ToggleRenderType"
510 mouse_opaque="true" name="Set Away" width="185"> 1052 userdata="ground" />
511 <on_click function="World.SetAway" userdata="" /> 1053 <on_check function="Advanced.CheckRenderType"
512 </menu_item_call> 1054 userdata="ground" />
513 <menu_item_call bottom="-205" enabled="true" height="19" label="Set Busy" left="0" 1055 </menu_item_check>
514 mouse_opaque="true" name="Set Busy" width="185"> 1056 <menu_item_check name="Volume" label="Volume"
515 <on_click function="World.SetBusy" userdata="" /> 1057 shortcut="control|alt|shift|9">
516 </menu_item_call> 1058 <on_click function="Advanced.ToggleRenderType"
517 <menu_item_call bottom="-281" enabled="false" height="19" label="Stop All Animations" left="0" 1059 userdata="volume" />
518 mouse_opaque="true" name="Stop All Animations" width="250"> 1060 <on_check function="Advanced.CheckRenderType"
519 <on_click function="Tools.StopAllAnimations" userdata="" /> 1061 userdata="volume" />
520 </menu_item_call> 1062 </menu_item_check>
521 <menu_item_call bottom="-213" enabled="false" height="19" label="Release Keys" left="0" 1063 <menu_item_check name="Grass" label="Grass"
522 mouse_opaque="true" name="Release Keys" width="250"> 1064 shortcut="control|alt|shift|0">
523 <on_click function="Tools.ReleaseKeys" userdata="" /> 1065 <on_click function="Advanced.ToggleRenderType"
524 <on_enable function="Tools.EnableReleaseKeys" userdata="" /> 1066 userdata="grass" />
525 </menu_item_call> 1067 <on_check function="Advanced.CheckRenderType"
526 <menu_item_separator bottom="-232" enabled="true" height="8" label="-----------" left="0" 1068 userdata="grass" />
527 mouse_opaque="true" name="separator4" width="185" /> 1069 </menu_item_check>
528 <menu_item_call bottom="-232" enabled="true" height="19" label="Account History..." left="0" 1070 <menu_item_check name="Clouds" label="Clouds"
529 mouse_opaque="true" name="Account History..." width="185"> 1071 shortcut="control|alt|shift|-">
530 <on_click function="PromptShowURL" 1072 <on_click function="Advanced.ToggleRenderType"
531 userdata="WebLaunchAccountHistory,http://secondlife.com/account/transactions.php" /> 1073 userdata="clouds" />
532 </menu_item_call> 1074 <on_check function="Advanced.CheckRenderType"
533 <menu_item_call bottom="-267" enabled="true" height="19" label="Manage My Account..." left="0" 1075 userdata="clouds" />
534 mouse_opaque="true" name="Manage My Account..." width="166"> 1076 </menu_item_check>
535 <on_click function="PromptShowURL" 1077 <menu_item_check name="Particles" label="Particles"
536 userdata="WebLaunchJoinNow,http://secondlife.com/account/" /> 1078 shortcut="control|alt|shift|=">
537 </menu_item_call> 1079 <on_click function="Advanced.ToggleRenderType"
538 <menu_item_call bottom="-286" enabled="true" height="19" label="Buy L$..." left="0" 1080 userdata="particles" />
539 mouse_opaque="true" name="Buy and Sell L$..." width="166"> 1081 <on_check function="Advanced.CheckRenderType"
540 <on_click function="ShowFloater" userdata="buy currency" /> 1082 userdata="particles" />
541 </menu_item_call> 1083 </menu_item_check>
542 <menu_item_separator bottom="-213" enabled="true" height="8" label="-----------" left="0" 1084 <menu_item_check name="Bump" label="Bump"
543 mouse_opaque="true" name="separator5" width="185" /> 1085 shortcut="control|alt|shift|\">
544 <menu_item_call bottom="-251" enabled="true" height="19" label="My Land..." left="0" 1086 <on_click function="Advanced.ToggleRenderType"
545 mouse_opaque="true" name="My Land..." width="185"> 1087 userdata="bump" />
546 <on_click function="ShowFloater" userdata="my land" /> 1088 <on_check function="Advanced.CheckRenderType"
547 </menu_item_call> 1089 userdata="bump" />
548 <menu_item_call bottom="-270" enabled="true" height="19" label="About Land..." left="0" 1090 </menu_item_check>
549 mouse_opaque="true" name="About Land..." width="185"> 1091 </menu>
550 <on_click function="ShowFloater" userdata="about land" /> 1092
551 </menu_item_call> 1093
552 <menu_item_call bottom="-289" enabled="true" height="19" label="Buy Land..." left="0" 1094 <!-- FEATURES -->
553 mouse_opaque="true" name="Buy Land..." width="185"> 1095 <menu name="Features" drop_shadow="true"
554 <on_click function="ShowFloater" userdata="buy land" /> 1096 opaque="true" tear_off="true">
555 <on_enable function="World.EnableBuyLand" /> 1097 <menu_item_check name="UI" label="UI"
556 </menu_item_call> 1098 shortcut="control|alt|F1">
557 <menu_item_call bottom="-308" enabled="true" height="19" label="Region/Estate..." left="0" 1099 <on_click function="Advanced.ToggleFeature"
558 mouse_opaque="true" name="Region/Estate..." width="185"> 1100 userdata="ui" />
559 <on_click function="ShowFloater" userdata="about region" /> 1101 <on_check function="Advanced.CheckFeature"
560 </menu_item_call> 1102 userdata="ui" />
561 <menu_item_separator bottom="-316" enabled="true" height="8" label="-----------" left="0" 1103 </menu_item_check>
562 mouse_opaque="true" name="separator6" width="185" /> 1104 <menu_item_check name="Selected" label="Selected"
563 <menu bottom="-554" create_jump_keys="true" drop_shadow="true" enabled="true" 1105 shortcut="control|alt|F2">
564 height="117" label="Environment Settings" left="0" mouse_opaque="false" 1106 <on_click function="Advanced.ToggleFeature"
565 name="Environment Settings" opaque="true" tear_off="true" width="169"> 1107 userdata="selected" />
566 <menu_item_call bottom="-29" enabled="true" height="19" label="Sunrise" left="0" 1108 <on_check function="Advanced.CheckFeature"
567 mouse_opaque="true" name="Sunrise" width="169"> 1109 userdata="selected" />
568 <on_click function="World.EnvSettings" userdata="sunrise" /> 1110 </menu_item_check>
569 </menu_item_call> 1111 <menu_item_check name="Highlighted" label="Highlighted"
570 <menu_item_call bottom="-48" enabled="true" height="19" label="Midday" left="0" 1112 shortcut="control|alt|F3">
571 mouse_opaque="true" name="Noon" shortcut="control|shift|Y" width="169"> 1113 <on_click function="Advanced.ToggleFeature"
572 <on_click function="World.EnvSettings" userdata="noon" /> 1114 userdata="highlighted" />
573 </menu_item_call> 1115 <on_check function="Advanced.CheckFeature"
574 <menu_item_call bottom="-67" enabled="true" height="19" label="Sunset" left="0" 1116 userdata="highlighted" />
575 mouse_opaque="true" name="Sunset" shortcut="control|shift|N" width="169"> 1117 </menu_item_check>
576 <on_click function="World.EnvSettings" userdata="sunset" /> 1118 <menu_item_check name="Dynamic Textures" label="Dynamic Textures"
577 </menu_item_call> 1119 shortcut="control|alt|F4">
578 <menu_item_call bottom="-86" enabled="true" height="19" label="Midnight" left="0" 1120 <on_click function="Advanced.ToggleFeature"
579 mouse_opaque="true" name="Midnight" width="169"> 1121 userdata="dynamic textures" />
580 <on_click function="World.EnvSettings" userdata="midnight" /> 1122 <on_check function="Advanced.CheckFeature"
581 </menu_item_call> 1123 userdata="dynamic textures" />
582 <menu_item_call bottom="-105" enabled="false" height="19" label="Revert to Region Default" 1124 </menu_item_check>
583 left="0" mouse_opaque="true" name="Revert to Region Default" width="169"> 1125 <menu_item_check name="Foot Shadows" label="Foot Shadows"
584 <on_click function="World.EnvSettings" userdata="default" /> 1126 shortcut="control|alt|F5">
585 </menu_item_call> 1127 <on_click function="Advanced.ToggleFeature"
586 <menu_item_separator bottom="-113" enabled="true" height="8" label="-----------" left="0" 1128 userdata="foot shadows" />
587 mouse_opaque="true" name="separator" width="169" /> 1129 <on_check function="Advanced.CheckFeature"
588 <menu_item_call bottom="-132" enabled="false" height="19" label="Environment Editor" left="0" 1130 userdata="foot shadows" />
589 mouse_opaque="true" name="Environment Editor" width="169"> 1131 </menu_item_check>
590 <on_click function="World.EnvSettings" userdata="editor" /> 1132 <menu_item_check name="Fog" label="Fog"
591 </menu_item_call> 1133 shortcut="control|alt|F6">
592 </menu> 1134 <on_click function="Advanced.ToggleFeature"
593 </menu> 1135 userdata="fog" />
594 <menu bottom="-18" create_jump_keys="true" drop_shadow="true" enabled="true" 1136 <on_check function="Advanced.CheckFeature"
595 height="510" label="Tools" left="0" mouse_opaque="false" name="Tools" 1137 userdata="fog" />
596 opaque="true" tear_off="true" visible="false" width="250"> 1138 </menu_item_check>
597 <menu bottom="-554" create_jump_keys="true" drop_shadow="true" enabled="true" 1139 <menu_item_check name="Palletized Textures"
598 height="109" label="Select Tool" left="0" mouse_opaque="false" 1140 label="Palletized Textures"
599 name="Select Tool" opaque="true" tear_off="true" width="118"> 1141 shortcut="control|alt|F7">
600 <menu_item_call bottom="-29" enabled="true" height="19" label="Focus" left="0" 1142 <on_click function="Advanced.ToggleFeature"
601 mouse_opaque="true" name="Focus" shortcut="control|1" width="118"> 1143 userdata="palette" />
602 <on_click function="Tools.SelectTool" userdata="focus" /> 1144 <on_check function="Advanced.CheckFeature"
603 </menu_item_call> 1145 userdata="palette" />
604 <menu_item_call bottom="-48" enabled="true" height="19" label="Move" left="0" 1146 </menu_item_check>
605 mouse_opaque="true" name="Move" shortcut="control|2" width="118"> 1147 <menu_item_check name="Test FRInfo" label="Test FRInfo"
606 <on_click function="Tools.SelectTool" userdata="move" /> 1148 shortcut="control|alt|F8">
607 </menu_item_call> 1149 <on_click function="Advanced.ToggleFeature"
608 <menu_item_call bottom="-67" enabled="true" height="19" label="Edit" left="0" 1150 userdata="fr info" />
609 mouse_opaque="true" name="Edit" shortcut="control|3" width="118"> 1151 <on_check function="Advanced.CheckFeature"
610 <on_click function="Tools.SelectTool" userdata="edit" /> 1152 userdata="fr info" />
611 </menu_item_call> 1153 </menu_item_check>
612 <menu_item_call bottom="-86" enabled="true" height="19" label="Create" left="0" 1154 <menu_item_check name="Flexible Objects"
613 mouse_opaque="true" name="Create" shortcut="control|4" width="118"> 1155 label="Flexible Objects"
614 <on_click function="Tools.SelectTool" userdata="create" /> 1156 shortcut="control|alt|F9">
615 </menu_item_call> 1157 <on_click function="Advanced.ToggleFeature"
616 <menu_item_call bottom="-105" enabled="true" height="19" label="Land" left="0" 1158 userdata="flexible" />
617 mouse_opaque="true" name="Land" shortcut="control|5" width="118"> 1159 <on_check function="Advanced.CheckFeature"
618 <on_click function="Tools.SelectTool" userdata="land" /> 1160 userdata="flexible" />
619 </menu_item_call> 1161 </menu_item_check>
620 </menu> 1162 </menu>
621 <menu_item_separator bottom="-37" enabled="true" height="8" label="-----------" left="0" 1163
622 mouse_opaque="true" name="separator" width="250" /> 1164
623 <menu_item_check bottom="-56" enabled="true" height="19" label="Select Only My Objects" left="0" 1165 <!-- INFO DISPLAYS -->
624 mouse_opaque="true" name="Select Only My Objects" width="250"> 1166 <menu name="Info Displays" drop_shadow="true"
625 <on_click function="Tools.SelectOnlyMyObjects" userdata="agents" /> 1167 opaque="true" tear_off="true">
626 <on_check control="SelectOwnedOnly" /> 1168 <menu_item_check name="Verify" label="Verify">
627 </menu_item_check> 1169 <on_click function="Advanced.ToggleInfoDisplay"
628 <menu_item_check bottom="-75" enabled="true" height="19" label="Select Only Movable Objects" 1170 userdata="verify" />
629 left="0" mouse_opaque="true" name="Select Only Movable Objects" width="250"> 1171 <on_check function="Advanced.CheckInfoDisplay"
630 <on_click function="Tools.SelectOnlyMovableObjects" userdata="movable" /> 1172 userdata="verify" />
631 <on_check control="SelectMovableOnly" /> 1173 </menu_item_check>
632 </menu_item_check> 1174 <menu_item_check name="BBoxes" label="BBoxes">
633 <menu_item_check bottom="-94" enabled="true" height="19" label="Select By Surrounding" left="0" 1175 <on_click function="Advanced.ToggleInfoDisplay"
634 mouse_opaque="true" name="Select By Surrounding" width="250"> 1176 userdata="bboxes" />
635 <on_click function="Tools.SelectBySurrounding" userdata="" /> 1177 <on_check function="Advanced.CheckInfoDisplay"
636 <on_check control="RectangleSelectInclusive" /> 1178 userdata="bboxes" />
637 </menu_item_check> 1179 </menu_item_check>
638 <menu_item_check bottom="-113" enabled="true" height="19" label="Show Hidden Selection" left="0" 1180 <menu_item_check name="Points" label="Points">
639 mouse_opaque="true" name="Show Hidden Selection" width="250"> 1181 <on_click function="Advanced.ToggleInfoDisplay"
640 <on_click function="Tools.ShowHiddenSelection" userdata="" /> 1182 userdata="points" />
641 <on_check control="RenderHiddenSelections" /> 1183 <on_check function="Advanced.CheckInfoDisplay"
642 </menu_item_check> 1184 userdata="points" />
643 <menu_item_check bottom="-132" enabled="true" height="19" 1185 </menu_item_check>
644 label="Show Light Radius for Selection" left="0" mouse_opaque="true" 1186 <menu_item_check name="Octree" label="Octree">
645 name="Show Light Radius for Selection" width="250"> 1187 <on_click function="Advanced.ToggleInfoDisplay"
646 <on_click function="Tools.ShowSelectionLightRadius" userdata="" /> 1188 userdata="octree" />
647 <on_check control="RenderLightRadius" /> 1189 <on_check function="Advanced.CheckInfoDisplay"
648 </menu_item_check> 1190 userdata="octree" />
649 <menu_item_check bottom="-151" enabled="true" height="19" label="Show Selection Beam" left="0" 1191 </menu_item_check>
650 mouse_opaque="true" name="Show Selection Beam" width="250"> 1192 <menu_item_check name="Occlusion" label="Occlusion">
651 <on_click function="ToggleControl" userdata="ShowSelectionBeam" /> 1193 <on_click function="Advanced.ToggleInfoDisplay"
652 <on_check control="ShowSelectionBeam" /> 1194 userdata="occlusion" />
653 </menu_item_check> 1195 <on_check function="Advanced.CheckInfoDisplay"
654 <menu_item_separator bottom="-159" enabled="true" height="8" label="-----------" left="0" 1196 userdata="occlusion" />
655 mouse_opaque="true" name="separator2" width="250" /> 1197 </menu_item_check>
656 <menu_item_check bottom="-178" enabled="false" height="19" label="Snap to Grid" left="0" 1198 <menu_item_check name="Render Batches"
657 mouse_opaque="true" name="Snap to Grid" shortcut="G" width="250"> 1199 label="Render Batches">
658 <on_click function="ToggleControl" userdata="SnapEnabled" /> 1200 <on_click function="Advanced.ToggleInfoDisplay"
659 <on_check control="SnapEnabled" /> 1201 userdata="render batches" />
660 <on_enable function="Tools.EnableToolNotPie" /> 1202 <on_check function="Advanced.CheckInfoDisplay"
661 </menu_item_check> 1203 userdata="render batches" />
662 <menu_item_call bottom="-197" enabled="false" height="19" label="Snap Object XY to Grid" 1204 </menu_item_check>
663 left="0" mouse_opaque="true" name="Snap Object XY to Grid" 1205 <menu_item_check name="Animated Textures"
664 shortcut="shift|X" width="250"> 1206 label="Animated Textures">
665 <on_click function="Tools.SnapObjectXY" userdata="" /> 1207 <on_click function="Advanced.ToggleInfoDisplay"
666 <on_enable function="Tools.EnableToolNotPie" /> 1208 userdata="texture anim" />
667 </menu_item_call> 1209 <on_check function="Advanced.CheckInfoDisplay"
668 <menu_item_call bottom="-216" enabled="false" height="19" label="Use Selection for Grid" 1210 userdata="texture anim" />
669 left="0" mouse_opaque="true" name="Use Selection for Grid" 1211 </menu_item_check>
670 shortcut="shift|G" width="250"> 1212 <menu_item_check name="Texture Priority"
671 <on_click function="Tools.UseSelectionForGrid" userdata="" /> 1213 label="Texture Priority">
672 <on_enable function="SomethingSelected" /> 1214 <on_click function="Advanced.ToggleInfoDisplay"
673 </menu_item_call> 1215 userdata="texture priority" />
674 <menu_item_call bottom="-235" enabled="false" height="19" label="Grid Options..." left="0" 1216 <on_check function="Advanced.CheckInfoDisplay"
675 mouse_opaque="true" name="Grid Options..." shortcut="control|shift|B" 1217 userdata="texture priority" />
676 width="250"> 1218 </menu_item_check>
677 <on_click function="ShowFloater" userdata="grid options" /> 1219 <menu_item_check name="Avatar Rendering Cost"
678 <on_enable function="Tools.EnableToolNotPie" /> 1220 label="Avatar Rendering Cost">
679 </menu_item_call> 1221 <on_click function="Advanced.ToggleInfoDisplay"
680 <menu_item_separator bottom="-243" enabled="true" height="8" label="-----------" left="0" 1222 userdata="shame" />
681 mouse_opaque="true" name="separator3" width="250" /> 1223 <on_check function="Advanced.CheckInfoDisplay"
682 <menu_item_check bottom="" enabled="false" height="" label="Edit Linked Parts" left="" 1224 userdata="shame" />
683 mouse_opaque="true" name="Edit Linked Parts" shortcut="" width=""> 1225 </menu_item_check>
684 <on_click function="ToggleControl" userdata="EditLinkedParts" /> 1226 <menu_item_check name="Texture Area (sqrt(A))"
685 <on_click function="Tools.EditLinkedParts" userdata="" /> 1227 label="Texture Area (sqrt(A))">
686 <on_check control="EditLinkedParts" /> 1228 <on_click function="Advanced.ToggleInfoDisplay"
687 <on_enable function="Tools.EnableToolNotPie" /> 1229 userdata="texture area" />
688 </menu_item_check> 1230 <on_check function="Advanced.CheckInfoDisplay"
689 <menu_item_call bottom="-262" enabled="false" height="19" label="Link" left="0" 1231 userdata="texture area" />
690 mouse_opaque="true" name="Link" shortcut="control|L" width="250"> 1232 </menu_item_check>
691 <on_click function="Tools.Link" userdata="" /> 1233 <menu_item_check name="Face Area (sqrt(A))"
692 <on_enable function="Tools.EnableLink" /> 1234 label="Face Area (sqrt(A))">
693 </menu_item_call> 1235 <on_click function="Advanced.ToggleInfoDisplay"
694 <menu_item_call bottom="-281" enabled="false" height="19" label="Unlink" left="0" 1236 userdata="face area" />
695 mouse_opaque="true" name="Unlink" shortcut="control|shift|L" width="250"> 1237 <on_check function="Advanced.CheckInfoDisplay"
696 <on_click function="Tools.Unlink" userdata="" /> 1238 userdata="face area" />
697 <on_enable function="Tools.EnableUnlink" /> 1239 </menu_item_check>
698 </menu_item_call> 1240 <menu_item_check name="Pick Render" label="Pick Render">
699 <menu_item_separator bottom="-289" enabled="true" height="8" label="-----------" left="0" 1241 <on_click function="Advanced.ToggleInfoDisplay"
700 mouse_opaque="true" name="separator4" width="250" /> 1242 userdata="picking" />
701 <menu_item_call bottom="-308" enabled="false" height="19" label="Focus on Selection" left="0" 1243 <on_check function="Advanced.CheckInfoDisplay"
702 mouse_opaque="true" name="Focus on Selection" shortcut="H" width="250"> 1244 userdata="picking" />
703 <on_click function="Tools.LookAtSelection" userdata="focus" /> 1245 </menu_item_check>
704 <on_enable function="Tools.SomethingSelectedNoHUD" /> 1246 <menu_item_check name="Lights" label="Lights">
705 </menu_item_call> 1247 <on_click function="Advanced.ToggleInfoDisplay"
706 <menu_item_call bottom="-327" enabled="false" height="19" label="Zoom to Selection" left="0" 1248 userdata="lights" />
707 mouse_opaque="true" name="Zoom to Selection" shortcut="shift|H" width="250"> 1249 <on_check function="Advanced.CheckInfoDisplay"
708 <on_click function="Tools.LookAtSelection" userdata="zoom" /> 1250 userdata="lights" />
709 <on_enable function="Tools.SomethingSelectedNoHUD" /> 1251 </menu_item_check>
710 </menu_item_call> 1252 <menu_item_check name="Particles" label="Particles">
711 <menu_item_call bottom="-346" enabled="false" height="19" label="Buy Object" left="0" 1253 <on_click function="Advanced.ToggleInfoDisplay"
712 mouse_opaque="true" name="Menu Object Take" visible="false" width="250"> 1254 userdata="particles" />
713 <on_click function="Tools.BuyOrTake" userdata="" /> 1255 <on_check function="Advanced.CheckInfoDisplay"
714 <on_enable function="Tools.EnableBuyOrTake" userdata="Buy,Take" /> 1256 userdata="particles" />
715 </menu_item_call> 1257 </menu_item_check>
716 <menu_item_call bottom="-365" enabled="false" height="19" label="Take Copy" left="0" 1258 <menu_item_check name="Composition"
717 mouse_opaque="true" name="Take Copy" width="250"> 1259 label="Composition">
718 <on_click function="Tools.TakeCopy" userdata="" /> 1260 <on_click function="Advanced.ToggleInfoDisplay"
719 <on_enable function="Tools.EnableTakeCopy" /> 1261 userdata="composition" />
720 </menu_item_call> 1262 <on_check function="Advanced.CheckInfoDisplay"
721 <menu_item_call bottom="-384" enabled="false" height="19" 1263 userdata="composition" />
722 label="Save Object Back to My Inventory" left="0" mouse_opaque="true" 1264 </menu_item_check>
723 name="Save Object Back to My Inventory" width="250"> 1265 <menu_item_check name="Glow" label="Glow">
724 <on_click function="Tools.SaveToInventory" userdata="" /> 1266 <on_click function="Advanced.ToggleInfoDisplay"
725 <on_enable function="Tools.EnableSaveToInventory" /> 1267 userdata="glow" />
726 </menu_item_call> 1268 <on_check function="Advanced.CheckInfoDisplay"
727 <menu_item_call bottom="-403" enabled="false" height="19" 1269 userdata="glow" />
728 label="Save Object Back to Object Contents" left="0" mouse_opaque="true" 1270 </menu_item_check>
729 name="Save Object Back to Object Contents" width="250"> 1271 <menu_item_check name="Show Depth Buffer"
730 <on_click function="Tools.SaveToObjectInventory" userdata="" /> 1272 label="Show Depth Buffer">
731 <on_enable function="Tools.EnableSaveToObjectInventory" /> 1273 <on_click function="ToggleControl"
732 </menu_item_call> 1274 userdata="ShowDepthBuffer" />
733 <menu_item_separator bottom="-411" enabled="true" height="8" label="-----------" left="0" 1275 <on_check control="ShowDepthBuffer" />
734 mouse_opaque="true" name="separator6" width="250" /> 1276 </menu_item_check>
735 <menu_item_call bottom="-430" enabled="true" height="19" 1277 <menu_item_check name="Show Select Buffer"
736 label="Show Script Warning/Error Window" left="0" mouse_opaque="true" 1278 label="Show Select Buffer">
737 name="Show Script Warning/Error Window" width="250"> 1279 <on_click function="Advanced.ToggleSelectBuffer"
738 <on_click function="ShowFloater" userdata="script errors" /> 1280 userdata="" />
739 </menu_item_call> 1281 <on_check function="Advanced.CheckSelectBuffer"
740 <menu bottom="-449" color="0 0 0 1" drop_shadow="true" enabled="true" height="52" 1282 userdata="" />
741 hidden="false" label="Recompile Scripts in Selection" left="0" mouse_opaque="false" 1283 </menu_item_check>
742 name="Recompile Scripts in Selection" opaque="true" tear_off="true" create_jump_keys="true" width="169"> 1284 <menu_item_check name="Vectorize Perf Test"
743 <menu_item_call bottom="-29" enabled="true" height="19" 1285 label="Vectorize Perf Test">
744 hidden="false" label="Mono" left="0" 1286 <on_click function="ToggleControl"
745 mouse_opaque="true" name="Mono" width="169"> 1287 userdata="VectorizePerfTest" />
746 <on_click function="Tools.SelectedScriptAction" userdata="compile mono" /> 1288 <on_check control="VectorizePerfTest" />
747 <on_enable function="EditableSelectedMono" /> 1289 </menu_item_check>
748 </menu_item_call> 1290 </menu>
749 <menu_item_call bottom="-48" enabled="true" height="19" 1291
750 hidden="false" label="LSL" left="0" 1292
751 mouse_opaque="true" name="LSL" width="169"> 1293 <!-- RENDER TESTS -->
752 <on_click function="Tools.SelectedScriptAction" userdata="compile lsl" /> 1294 <menu name="Render Tests" drop_shadow="true"
753 <on_enable function="EditableSelected" /> 1295 opaque="true" tear_off="true">
754 </menu_item_call> 1296 <menu_item_check name="Camera Offset" label="Camera Offset">
755 </menu> 1297 <on_click function="ToggleControl"
756 <menu_item_call bottom="-468" enabled="false" height="19" label="Reset Scripts in Selection" 1298 userdata="CameraOffset" />
757 left="0" mouse_opaque="true" name="Reset Scripts in Selection" width="250"> 1299 <on_check control="CameraOffset" />
758 <on_click function="Tools.SelectedScriptAction" userdata="reset" /> 1300 </menu_item_check>
759 <on_enable function="EditableSelected" /> 1301 <menu_item_check name="Randomize Framerate"
760 </menu_item_call> 1302 label="Randomize Framerate">
761 <menu_item_call bottom="-487" enabled="false" height="19" 1303 <on_click function="Advanced.ToggleRandomizeFramerate"
762 label="Set Scripts to Running in Selection" left="0" mouse_opaque="true" 1304 userdata="" />
763 name="Set Scripts to Running in Selection" width="250"> 1305 <on_check function="Advanced.CheckRandomizeFramerate"
764 <on_click function="Tools.SelectedScriptAction" userdata="start" /> 1306 userdata="" />
765 <on_enable function="EditableSelected" /> 1307 </menu_item_check>
766 </menu_item_call> 1308 <menu_item_check name="Periodic Slow Frame"
767 <menu_item_call bottom="-506" enabled="false" height="19" 1309 label="Periodic Slow Frame">
768 label="Set Scripts to Not Running in Selection" left="0" 1310 <on_click function="Advanced.TogglePeriodicSlowFrame"
769 mouse_opaque="true" name="Set Scripts to Not Running in Selection" 1311 userdata="" />
770 width="250"> 1312 <on_check function="Advanced.CheckPeriodicSlowFrame"
771 <on_click function="Tools.SelectedScriptAction" userdata="stop" /> 1313 userdata="" />
772 <on_enable function="EditableSelected" /> 1314 </menu_item_check>
773 </menu_item_call> 1315 <menu_item_check name="Frame Test" label="Frame Test">
774 </menu> 1316 <on_click function="Advanced.ToggleFrameTest"
775 <menu bottom="219" create_jump_keys="true" drop_shadow="true" enabled="true" 1317 userdata="" />
776 height="317" label="Help" left="227" mouse_opaque="false" name="Help" 1318 <on_check function="Advanced.CheckFrameTest"
777 opaque="true" tear_off="true" width="166"> 1319 userdata="" />
778 <menu_item_call bottom="-29" enabled="true" height="19" label="Second Life Help" left="0" 1320 </menu_item_check>
779 mouse_opaque="true" name="Second Life Help" shortcut="F1" width="166"> 1321 </menu>
780 <on_click function="ShowFloater" userdata="help f1" /> 1322
781 </menu_item_call> 1323
782 <menu_item_call bottom="-48" enabled="true" height="19" label="Tutorial" left="0" 1324 <menu_item_separator />
783 mouse_opaque="true" name="Tutorial" width="166"> 1325
784 <on_click function="ShowFloater" userdata="help tutorial" /> 1326 <menu_item_check name="Axes" label="Axes">
785 </menu_item_call> 1327 <on_click function="ToggleControl" userdata="ShowAxes" />
786 <menu_item_separator bottom="-75" enabled="true" height="8" label="-----------" left="0" 1328 <on_check control="ShowAxes" />
787 mouse_opaque="true" name="separator" width="166" /> 1329 </menu_item_check>
788 <menu_item_call bottom="-94" enabled="true" height="19" label="Official Linden Blog..." 1330
789 left="0" mouse_opaque="true" name="Official Linden Blog..." width="166"> 1331 <menu_item_separator />
790 <on_click function="PromptShowURL" 1332
791 userdata="WebLaunchSupportWiki,http://blog.secondlife.com/" /> 1333 <menu_item_check name="Hide Selected" label="Hide Selected">
792 </menu_item_call> 1334 <on_click function="Advanced.ToggleHideSelectedObjects"
793 <menu_item_separator bottom="-102" enabled="true" height="8" label="-----------" left="0" 1335 userdata="" />
794 mouse_opaque="true" name="separator2" width="166" /> 1336 <on_check function="Advanced.CheckHideSelectedObjects"
795 <menu_item_call bottom="-121" enabled="true" height="19" label="Scripting Guide..." left="0" 1337 userdata="" />
796 mouse_opaque="true" name="Scripting Guide..." width="166"> 1338 </menu_item_check>
797 <on_click function="PromptShowFile" userdata="WebLaunchLSLGuide,lsl_guide.html" /> 1339
798 </menu_item_call> 1340 <menu_item_separator />
799 <menu_item_call bottom="-140" enabled="true" height="19" label="Scripting Portal..." left="0" 1341
800 mouse_opaque="true" name="Scripting Portal..." width="166"> 1342 <menu_item_check name="Tangent Basis" label="Tangent Basis">
801 <on_click function="PromptShowURL" 1343 <on_click function="ToggleControl"
802 userdata="WebLaunchLSLWiki,http://wiki.secondlife.com/wiki/LSL_Portal" /> 1344 userdata="ShowTangentBasis" />
803 </menu_item_call> 1345 <on_check control="ShowTangentBasis" />
804 <menu_item_separator bottom="-148" enabled="true" height="8" label="-----------" left="0" 1346 </menu_item_check>
805 mouse_opaque="true" name="separator3" width="166" /> 1347 <menu_item_call name="Selected Texture Info"
806 <menu_item_call bottom="-194" enabled="true" height="19" label="Report Abuse..." left="0" 1348 label="Selected Texture Info"
807 mouse_opaque="true" name="Report Abuse..." width="166"> 1349 shortcut="control|alt|shift|T">
808 <on_click function="ShowFloater" userdata="complaint reporter" /> 1350 <on_click function="Advanced.SelectedTextureInfo"
809 </menu_item_call> 1351 userdata="" />
810 <menu_item_call bottom="-213" enabled="true" height="19" label="Bumps, Pushes &amp; Hits..." 1352 </menu_item_call>
811 left="0" mouse_opaque="true" name="Bumps, Pushes &amp;amp; Hits..." 1353 <menu_item_check name="Wireframe" label="Wireframe"
812 width="166"> 1354 shortcut="control|shift|R">
813 <on_click function="ShowFloater" userdata="mean events" /> 1355 <on_click function="Advanced.ToggleWireframe" userdata="" />
814 </menu_item_call> 1356 <on_check function="Advanced.CheckWireframe" userdata="" />
815 <menu_item_call label="Lag Meter" name="Lag Meter"> 1357 </menu_item_check>
816 <on_click function="ShowFloater" userdata="lag meter" /> 1358 <menu_item_check name="Object-Object Occlusion"
817 </menu_item_call> 1359 label="Object-Object Occlusion"
818 <menu_item_separator bottom="-411" enabled="true" height="8" label="-----------" left="0" 1360 shortcut="control|shift|O">
819 mouse_opaque="true" name="separator7" width="250" /> 1361 <on_click function="ToggleControl"
820 <menu bottom="-554" create_jump_keys="true" drop_shadow="true" enabled="true" 1362 userdata="UseOcclusion" />
821 height="109" label="Bug Reporting" left="0" mouse_opaque="false" 1363 <on_check control="UseOcclusion" />
822 name="Bug Reporting" opaque="true" tear_off="true" width="118"> 1364 </menu_item_check>
823 <menu_item_call bottom="-94" enabled="true" height="19" label="Public Issue Tracker..." 1365 <menu_item_check name="Debug GL" label="Debug GL">
824 left="0" mouse_opaque="true" name="Public Issue Tracker..." width="166"> 1366 <on_click function="ToggleControl"
825 <on_click function="PromptShowURL" 1367 userdata="RenderDebugGL" />
826 userdata="WebLaunchPublicIssue,http://jira.secondlife.com" /> 1368 <on_check control="RenderDebugGL" />
827 </menu_item_call> 1369 </menu_item_check>
828 <menu_item_call bottom="-94" enabled="true" height="19" label="Public Issue Tracker Help..." 1370 <menu_item_check name="Debug Pipeline" label="Debug Pipeline">
829 left="0" mouse_opaque="true" name="Publc Issue Tracker Help..." width="166"> 1371 <on_click function="ToggleControl"
830 <on_click function="PromptShowURL" 1372 userdata="RenderDebugPipeline" />
831 userdata="WebLaunchPublicIssueHelp,http://wiki.secondlife.com/wiki/Issue_tracker" /> 1373 <on_check control="RenderDebugPipeline" />
832 </menu_item_call> 1374 </menu_item_check>
833 <menu_item_separator bottom="-411" enabled="true" height="8" label="-----------" left="0" 1375 <menu_item_check name="Fast Alpha" label="Fast Alpha">
834 mouse_opaque="true" name="separator7" width="250" /> 1376 <on_click function="ToggleControl"
835 <menu_item_call bottom="-94" enabled="true" height="19" label="Bug Reporting 101..." left="0" 1377 userdata="RenderFastAlpha" />
836 mouse_opaque="true" name="Bug Reporing 101..." width="166"> 1378 <on_check control="RenderFastAlpha" />
837 <on_click function="PromptShowURL" 1379 </menu_item_check>
838 userdata="WebLaunchBugReport101,http://wiki.secondlife.com/wiki/Bug_Reporting_101" /> 1380 <menu_item_check name="Animate Textures"
839 </menu_item_call> 1381 label="Animate Textures">
840 <menu_item_call bottom="-94" enabled="true" height="19" label="Security Issues..." left="0" 1382 <on_click function="ToggleControl"
841 mouse_opaque="true" name="Security Issues..." width="166"> 1383 userdata="AnimateTextures" />
842 <on_click function="PromptShowURL" 1384 <on_check control="AnimateTextures" />
843 userdata="WebLaunchSecurityIssues,http://wiki.secondlife.com/wiki/Security_issues" /> 1385 </menu_item_check>
844 </menu_item_call> 1386 <menu_item_check name="Disable Textures"
845 <menu_item_call bottom="-94" enabled="true" height="19" label="QA Wiki..." left="0" 1387 label="Disable Textures">
846 mouse_opaque="true" name="QA Wiki..." width="166"> 1388 <on_click function="Advanced.ToggleDisableTextures"
847 <on_click function="PromptShowURL" 1389 userdata="" />
848 userdata="WebLaunchQAWiki,http://wiki.secondlife.com/wiki/QA_Portal" /> 1390 <on_check function="Advanced.CheckDisableTextures"
849 </menu_item_call> 1391 userdata="" />
850 <menu_item_separator bottom="-411" enabled="true" height="8" label="-----------" left="0" 1392 </menu_item_check>
851 mouse_opaque="true" name="separator9" width="250" /> 1393 <!-- Disabled because it doesn't seem to be used anymore.
852 <menu_item_call bottom="-240" enabled="true" height="19" label="Report Bug..." left="0" 1394 <menu_item_check name="HTTP Get Textures"
853 mouse_opaque="true" name="Report Bug..." width="166"> 1395 label="HTTP Get Textures">
854 <on_click function="PromptShowURL" 1396 <on_click function="ToggleControl"
855 userdata="WebLaunchPublicIssue,http://jira.secondlife.com" /> 1397 userdata="ImagePipelineUseHTTP" />
856 </menu_item_call> 1398 <on_check control="ImagePipelineUseHTTP" />
857 </menu> 1399 </menu_item_check>
858 <menu_item_call bottom="-313" enabled="true" height="19" label="About Second Life..." left="0" 1400 -->
859 mouse_opaque="true" name="About Second Life..." width="166"> 1401 <menu_item_check name="Run Multiple Threads"
860 <on_click function="ShowFloater" userdata="about" /> 1402 label="Run Multiple Threads">
861 </menu_item_call> 1403 <on_click function="ToggleControl"
862 </menu> 1404 userdata="RunMultipleThreads" />
1405 <on_check control="RunMultipleThreads" />
1406 </menu_item_check>
1407 <!-- Disabled because it doesn't work very well?
1408 <menu_item_check name="Dynamic Reflections"
1409 label="Dynamic Reflections">
1410 <on_click function="ToggleControl"
1411 userdata="RenderDynamicReflections" />
1412 <on_check control="RenderDynamicReflections" />
1413 </menu_item_check>
1414 -->
1415 <menu_item_check name="Cheesy Beacon" label="Cheesy Beacon">
1416 <on_click function="ToggleControl"
1417 userdata="CheesyBeacon" />
1418 <on_check control="CheesyBeacon" />
1419 </menu_item_check>
1420 <menu_item_check name="Attached Lights" label="Attached Lights">
1421 <on_click function="ToggleControl"
1422 userdata="RenderAttachedLights" />
1423 <on_check control="RenderAttachedLights" />
1424 </menu_item_check>
1425 <menu_item_check name="Attached Particles" label="Attached Particles">
1426 <on_click function="ToggleControl"
1427 userdata="RenderAttachedParticles" />
1428 <on_check control="RenderAttachedParticles" />
1429 </menu_item_check>
1430 </menu>
1431
1432
1433
1434 <!-- WORLD -->
1435
1436 <menu name="World" drop_shadow="true"
1437 opaque="true" tear_off="true">
1438 <!-- Disabled because you can't do this in Windlight.
1439 <menu_item_check name="Mouse Moves Sun"
1440 label="Mouse Moves Sun"
1441 shortcut="control|alt|M">
1442 <on_click function="ToggleControl" userdata="MouseSun" />
1443 <on_check control="MouseSun" />
1444 </menu_item_check>
1445 -->
1446 <menu_item_check name="Sim Sun Override"
1447 label="Sim Sun Override">
1448 <on_click function="ToggleControl"
1449 userdata="SkyOverrideSimSunPosition" />
1450 <on_check control="SkyOverrideSimSunPosition" />
1451 </menu_item_check>
1452 <menu_item_call name="Dump Scripted Camera"
1453 label="Dump Scripted Camera">
1454 <on_click function="Advanced.DumpScriptedCamera"
1455 userdata="" />
1456 </menu_item_call>
1457 <menu_item_check name="Fixed Weather" label="Fixed Weather">
1458 <on_click function="ToggleControl"
1459 userdata="FixedWeather" />
1460 <on_check control="FixedWeather" />
1461 </menu_item_check>
1462 <menu_item_call name="Dump Region Object Cache"
1463 label="Dump Region Object Cache">
1464 <on_click function="Advanced.DumpRegionObjectCache"
1465 userdata="" />
1466 </menu_item_call>
1467 </menu>
1468
1469
1470
1471 <!-- UI -->
1472
1473 <menu name="UI" drop_shadow="true"
1474 opaque="true" tear_off="true">
1475
1476 <menu_item_call name="SLURL Test" label="SLURL Test">
1477 <on_click function="Advanced.SLURLTest" userdata="" />
1478 </menu_item_call>
1479
1480 <!--
1481 *TODO: Make this a proper toggle item with the "X" indicator.
1482 1. Add a "Advanced.CheckEditableUI" function in llviewermenu.cpp.
1483 2. Change this surrounding menu_item_call to a menu_item_check.
1484 3. Uncomment the "on_check" line below.
1485 -->
1486 <menu_item_call name="Editable UI" label="Editable UI">
1487 <on_click function="Advanced.ToggleEditableUI" userdata="" />
1488 <!--
1489 <on_check function="Advanced.CheckEditableUI" userdata="" />
1490 -->
1491 </menu_item_call>
1492
1493 <menu_item_check name="Async Keystrokes"
1494 label="Async Keystrokes">
1495 <on_click function="Advanced.ToggleAsyncKeystrokes"
1496 userdata="" />
1497 <on_check function="Advanced.CheckAsyncKeystrokes"
1498 userdata="" />
1499 </menu_item_check>
1500 <menu_item_call name="Dump SelectMgr" label="Dump SelectMgr">
1501 <on_click function="Advanced.DumpSelectMgr" userdata="" />
1502 </menu_item_call>
1503 <menu_item_call name="Dump Inventory" label="Dump Inventory">
1504 <on_click function="Advanced.DumpInventory" userdata="" />
1505 </menu_item_call>
1506 <menu_item_call name="Dump Focus Holder"
1507 label="Dump Focus Holder"
1508 shortcut="control|alt|F">
1509 <on_click function="Advanced.DumpFocusHolder" userdata="" />
1510 </menu_item_call>
1511 <menu_item_call name="Print Selected Object Info"
1512 label="Print Selected Object Info"
1513 shortcut="control|shift|P">
1514 <on_click function="Advanced.PrintSelectedObjectInfo"
1515 userdata="" />
1516 </menu_item_call>
1517 <menu_item_call name="Print Agent Info"
1518 label="Print Agent Info" shortcut="shift|P">
1519 <on_click function="Advanced.PrintAgentInfo" userdata="" />
1520 </menu_item_call>
1521 <menu_item_call name="Memory Stats" label="Memory Stats"
1522 shortcut="control|alt|shift|M">
1523 <on_click function="Advanced.PrintTextureMemoryStats"
1524 userdata="" />
1525 </menu_item_call>
1526 <menu_item_check name="Double-Click Auto-Pilot"
1527 label="Double-Click Auto-Pilot">
1528 <on_click function="ToggleControl"
1529 userdata="DoubleClickAutoPilot" />
1530 <on_check control="DoubleClickAutoPilot" />
1531 </menu_item_check>
1532 <menu_item_separator />
1533 <menu_item_check name="Debug SelectMgr"
1534 label="Debug SelectMgr">
1535 <on_click function="Advanced.ToggleDebugSelectMgr"
1536 userdata="" />
1537 <on_check function="Advanced.CheckDebugSelectMgr"
1538 userdata="" />
1539 </menu_item_check>
1540 <menu_item_check name="Debug Clicks"
1541 label="Debug Click">
1542 <on_click function="Advanced.ToggleDebugClicks"
1543 userdata="" />
1544 <on_check function="Advanced.CheckDebugClicks"
1545 userdata="" />
1546 </menu_item_check>
1547 <menu_item_check name="Debug Views"
1548 label="Debug Views">
1549 <on_click function="Advanced.ToggleDebugViews"
1550 userdata="" />
1551 <on_check function="Advanced.CheckDebugViews"
1552 userdata="" />
1553 </menu_item_check>
1554 <menu_item_check name="Show Name Tooltips"
1555 label="Show Name Tooltips">
1556 <on_click function="Advanced.ToggleXUINameTooltips"
1557 userdata="" />
1558 <on_check function="Advanced.CheckXUINameTooltips"
1559 userdata="" />
1560 </menu_item_check>
1561 <menu_item_check name="Debug Mouse Events"
1562 label="Debug Mouse Events">
1563 <on_click function="Advanced.ToggleDebugMouseEvents"
1564 userdata="" />
1565 <on_check function="Advanced.CheckDebugMouseEvents"
1566 userdata="" />
1567 </menu_item_check>
1568 <menu_item_check name="Debug Keys"
1569 label="Debug Keys">
1570 <on_click function="Advanced.ToggleDebugKeys"
1571 userdata="" />
1572 <on_check function="Advanced.CheckDebugKeys"
1573 userdata="" />
1574 </menu_item_check>
1575 <menu_item_check name="Debug WindowProc"
1576 label="Debug WindowProc">
1577 <on_click function="Advanced.ToggleDebugWindowProc"
1578 userdata="" />
1579 <on_check function="Advanced.CheckDebugWindowProc"
1580 userdata="" />
1581 </menu_item_check>
1582 <menu_item_check name="Debug Text Editor Tips"
1583 label="Debug Text Editor Tips">
1584 <on_click function="Advanced.ToggleDebugTextEditorTips"
1585 userdata="" />
1586 <on_check function="Advanced.CheckDebugTextEditorTips"
1587 userdata="" />
1588 </menu_item_check>
1589 <menu_item_separator />
1590 <menu_item_check name="Show Time"
1591 label="Show Time">
1592 <on_click function="ToggleControl"
1593 userdata="DebugShowTime" />
1594 <on_check control="DebugShowTime" />
1595 </menu_item_check>
1596 <menu_item_check name="Show Render Info"
1597 label="Show Render Info">
1598 <on_click function="ToggleControl"
1599 userdata="DebugShowRenderInfo" />
1600 <on_check control="DebugShowRenderInfo" />
1601 </menu_item_check>
1602 <menu_item_check name="Show Color Under Cursor"
1603 label="Show Color Under Cursor">
1604 <on_click function="ToggleControl"
1605 userdata="DebugShowColor" />
1606 <on_check control="DebugShowColor" />
1607 </menu_item_check>
1608 </menu>
1609
1610
1611
1612 <!-- XUI -->
1613
1614 <menu name="XUI" drop_shadow="true"
1615 opaque="true" tear_off="true">
1616 <menu_item_call name="Floater Test..."
1617 label="Floater Test...">
1618 <on_click function="Advanced.ShowFloaterTest"
1619 userdata="" />
1620 </menu_item_call>
1621 <menu_item_call name="Export Menus to XML..."
1622 label="Export Menus to XML...">
1623 <on_click function="Advanced.ExportMenusToXML"
1624 userdata="" />
1625 </menu_item_call>
1626 <menu_item_call name="Edit UI..."
1627 label="Edit UI...">
1628 <on_click function="Advanced.EditUI"
1629 userdata="" />
1630 </menu_item_call>
1631 <menu_item_call name="Load from XML..."
1632 label="Load from XML...">
1633 <on_click function="Advanced.LoadUIFromXML"
1634 userdata="" />
1635 </menu_item_call>
1636 <menu_item_call name="Save to XML..."
1637 label="Save to XML...">
1638 <on_click function="Advanced.SaveUIToXML"
1639 userdata="" />
1640 </menu_item_call>
1641 <menu_item_check name="Show XUI Names"
1642 label="Show XUI Names">
1643 <on_click function="Advanced.ToggleXUINames"
1644 userdata="" />
1645 <on_check function="Advanced.CheckXUINames"
1646 userdata="" />
1647 </menu_item_check>
1648 </menu>
1649
1650
1651
1652 <!-- CHARACTER -->
1653
1654 <menu name="Character" drop_shadow="true"
1655 opaque="true" tear_off="true">
1656
1657 <menu name="Grab Baked Texture" drop_shadow="true"
1658 opaque="true" tear_off="true">
1659
1660 <menu_item_call name="Iris" enabled="false"
1661 label="Iris">
1662 <on_click function="Advanced.GrabBakedTexture"
1663 userdata="eyes" />
1664 <on_enable function="Advanced.EnableGrabBakedTexture"
1665 userdata="eyes" />
1666 </menu_item_call>
1667 <menu_item_call name="Head" enabled="false"
1668 label="Head">
1669 <on_click function="Advanced.GrabBakedTexture"
1670 userdata="head" />
1671 <on_enable function="Advanced.EnableGrabBakedTexture"
1672 userdata="head" />
1673 </menu_item_call>
1674 <menu_item_call name="Upper Body" enabled="false"
1675 label="Upper Body">
1676 <on_click function="Advanced.GrabBakedTexture"
1677 userdata="upper" />
1678 <on_enable function="Advanced.EnableGrabBakedTexture"
1679 userdata="upper" />
1680 </menu_item_call>
1681 <menu_item_call name="Lower Body" enabled="false"
1682 label="Lower Body">
1683 <on_click function="Advanced.GrabBakedTexture"
1684 userdata="lower" />
1685 <on_enable function="Advanced.EnableGrabBakedTexture"
1686 userdata="lower" />
1687 </menu_item_call>
1688 <menu_item_call name="Skirt" enabled="false"
1689 label="Skirt">
1690 <on_click function="Advanced.GrabBakedTexture"
1691 userdata="skirt" />
1692 <on_enable function="Advanced.EnableGrabBakedTexture"
1693 userdata="skirt" />
1694 </menu_item_call>
1695 </menu>
1696
1697 <!-- CHARACTER TESTS -->
1698 <menu name="Character Tests" drop_shadow="true"
1699 opaque="true" tear_off="true">
1700 <menu_item_check name="Go Away/AFK When Idle"
1701 label="Go Away/AFK When Idle">
1702 <on_click function="Advanced.ToggleAllowIdleAFK"
1703 userdata="" />
1704 <on_check function="Advanced.CheckAllowIdleAFK"
1705 userdata="" />
1706 </menu_item_check>
1707 <menu_item_call name="Appearance To XML"
1708 label="Appearance To XML">
1709 <on_click function="Advanced.ToggleAppearanceToXML"
1710 userdata="" />
1711 </menu_item_call>
1712 <menu_item_call name="Toggle Character Geometry"
1713 enabled="false"
1714 label="Toggle Character Geometry">
1715 <on_click function="Advanced.ToggleCharacterGeometry"
1716 userdata="" />
1717 <on_enable function="EnableGodCustomerService"
1718 userdata="" />
1719 </menu_item_call>
1720 <menu_item_call name="Test Male" label="Test Male">
1721 <on_click function="Advanced.TestMale" userdata="" />
1722 </menu_item_call>
1723 <menu_item_call name="Test Female" label="Test Female">
1724 <on_click function="Advanced.TestFemale" userdata="" />
1725 </menu_item_call>
1726 <menu_item_call name="Toggle PG" label="Toggle PG">
1727 <on_click function="Advanced.TogglePG" userdata="" />
1728 </menu_item_call>
1729 <menu_item_check name="Allow Select Avatar"
1730 label="Allow Select Avatar">
1731 <on_click function="Advanced.ToggleAllowSelectAvatar"
1732 userdata="" />
1733 <on_check function="Advanced.CheckAllowSelectAvatar"
1734 userdata="" />
1735 </menu_item_check>
1736 </menu>
1737
1738 <menu_item_check name="Enable Lip Sync (Beta)"
1739 label="Enable Lip Sync (Beta)">
1740 <on_click function="ToggleControl"
1741 userdata="LipSyncEnabled" />
1742 <on_check control="LipSyncEnabled" />
1743 </menu_item_check>
1744 <menu_item_check name="Tap-Tap-Hold To Run"
1745 label="Tap-Tap-Hold To Run">
1746 <on_click function="Advanced.ToggleAllowTapTapHoldRun"
1747 userdata="" />
1748 <on_check function="Advanced.CheckAllowTapTapHoldRun"
1749 userdata="" />
1750 </menu_item_check>
1751 <menu_item_call name="Force Params to Default"
1752 label="Force Params to Default">
1753 <on_click function="Advanced.ForceParamsToDefault"
1754 userdata="" />
1755 </menu_item_call>
1756 <menu_item_call name="Reload Vertex Shader"
1757 label="Reload Vertex Shader">
1758 <on_click function="Advanced.ReloadVertexShader"
1759 userdata="" />
1760 </menu_item_call>
1761 <menu_item_check label="Animation Info"
1762 name="Animation Info">
1763 <on_click function="Advanced.ToggleAnimationInfo"
1764 userdata="" />
1765 <on_check function="Advanced.CheckAnimationInfo"
1766 userdata="" />
1767 </menu_item_check>
1768
1769 <!--
1770 *TODO: Make this a proper toggle item with the "X" indicator.
1771 1. Add a "Advanced.CheckSlowmotionAnimation" function in
1772 llviewermenu.cpp.
1773 2. Change this surrounding menu_item_call to a menu_item_check.
1774 3. Uncomment the "on_check" line below.
1775 -->
1776 <menu_item_call name="Slow Motion Animations"
1777 label="Slow Motion Animations">
1778 <on_click function="Advanced.ToggleSlowMotionAnimations"
1779 userdata="" />
1780 <!--
1781 <on_check function="Advanced.CheckSlowMotionAnimations"
1782 userdata="" />
1783 -->
1784 </menu_item_call>
1785
1786 <menu_item_check name="Show Look At"
1787 label="Show Look At">
1788 <on_click function="Advanced.ToggleShowLookAt"
1789 userdata="" />
1790 <on_check function="Advanced.CheckShowLookAt"
1791 userdata="" />
1792 </menu_item_check>
1793 <menu_item_check name="Show Point At"
1794 label="Show Point At">
1795 <on_click function="Advanced.ToggleShowPointAt"
1796 userdata="" />
1797 <on_check function="Advanced.CheckShowPointAt"
1798 userdata="" />
1799 </menu_item_check>
1800 <menu_item_check name="Debug Joint Updates"
1801 label="Debug Joint Updates">
1802 <on_click function="Advanced.ToggleDebugJointUpdates"
1803 userdata="" />
1804 <on_check function="Advanced.CheckDebugJointUpdates"
1805 userdata="" />
1806 </menu_item_check>
1807 <menu_item_check name="Disable LOD"
1808 label="Disable LOD">
1809 <on_click function="Advanced.ToggleDisableLOD"
1810 userdata="" />
1811 <on_check function="Advanced.CheckDisableLOD"
1812 userdata="" />
1813 </menu_item_check>
1814 <menu_item_check name="Debug Character Vis"
1815 label="Debug Character Vis">
1816 <on_click function="Advanced.ToggleDebugCharacterVis"
1817 userdata="" />
1818 <on_check function="Advanced.CheckDebugCharacterVis"
1819 userdata="" />
1820 </menu_item_check>
1821
1822 <!-- Disabled. See DEV-14477
1823 <menu_item_check name="Show Collision Plane"
1824 label="Show Collision Plane">
1825 <on_click function="Advanced.ToggleShowCollisionPlane"
1826 userdata="" />
1827 <on_check function="Advanced.CheckShowCollisionPlane"
1828 userdata="" />
1829 </menu_item_check>
1830 -->
1831
1832 <menu_item_check name="Show Collision Skeleton"
1833 label="Show Collision Skeleton">
1834 <on_click function="Advanced.ToggleShowCollisionSkeleton"
1835 userdata="" />
1836 <on_check function="Advanced.CheckShowCollisionSkeleton"
1837 userdata="" />
1838 </menu_item_check>
1839 <menu_item_check name="Display Agent Target"
1840 label="Display Agent Target">
1841 <on_click function="Advanced.ToggleDisplayAgentTarget"
1842 userdata="" />
1843 <on_check function="Advanced.CheckDisplayAgentTarget"
1844 userdata="" />
1845 </menu_item_check>
1846 <menu_item_check name="Debug Rotation"
1847 label="Debug Rotation">
1848 <on_click function="Advanced.ToggleDebugAvatarRotation"
1849 userdata="" />
1850 <on_check function="Advanced.CheckDebugAvatarRotation"
1851 userdata="" />
1852 </menu_item_check>
1853 <menu_item_call name="Dump Attachments"
1854 label="Dump Attachments">
1855 <on_click function="Advanced.DumpAttachments"
1856 userdata="" />
1857 </menu_item_call>
1858 <menu_item_call name="Rebake Textures"
1859 label="Rebake Textures"
1860 shortcut="control|alt|R">
1861 <on_click function="Advanced.RebakeTextures"
1862 userdata="" />
1863 </menu_item_call>
1864 </menu>
1865
1866
1867
1868 <!-- NETWORK -->
1869
1870 <menu name="Network" drop_shadow="true"
1871 opaque="true" tear_off="true">
1872 <menu_item_call name="Enable Message Log"
1873 label="Enable Message Log">
1874 <on_click function="Advanced.EnableMessageLog"
1875 userdata="" />
1876 </menu_item_call>
1877 <menu_item_call name="Disable Message Log"
1878 label="Disable Message Log">
1879 <on_click function="Advanced.DisableMessageLog"
1880 userdata="" />
1881 </menu_item_call>
1882 <menu_item_separator />
1883 <menu_item_check name="Velocity Interpolate Objects"
1884 label="Velocity Interpolate Objects">
1885 <on_click function="ToggleControl"
1886 userdata="VelocityInterpolate" />
1887 <on_check control="VelocityInterpolate" />
1888 </menu_item_check>
1889 <menu_item_check name="Ping Interpolate Object Positions"
1890 label="Ping Interpolate Object Positions">
1891 <on_click function="ToggleControl"
1892 userdata="PingInterpolate" />
1893 <on_check control="PingInterpolate" />
1894 </menu_item_check>
1895 <menu_item_separator />
1896 <menu_item_call name="Drop a Packet" label="Drop a Packet"
1897 shortcut="control|alt|L">
1898 <on_click function="Advanced.DropPacket"
1899 userdata="" />
1900 </menu_item_call>
1901 </menu>
1902
1903
1904
1905 <!-- RECORDER -->
1906
1907 <menu name="Recorder" drop_shadow="true"
1908 opaque="true" tear_off="true">
1909 <menu_item_check name="Full Session Logging"
1910 label="Full Session Logging">
1911 <on_click function="ToggleControl"
1912 userdata="StatsSessionTrackFrameStats" />
1913 <on_check control="StatsSessionTrackFrameStats" />
1914 </menu_item_check>
1915 <menu_item_call name="Start Logging" label="Start Logging">
1916 <on_click function="Advanced.FrameStatsLogging"
1917 userdata="start logging" />
1918 </menu_item_call>
1919 <menu_item_call name="Stop Logging" label="Stop Logging">
1920 <on_click function="Advanced.FrameStatsLogging"
1921 userdata="stop logging" />
1922 </menu_item_call>
1923 <menu_item_call name="Log 10 Seconds" label="Log 10 Seconds">
1924 <on_click function="Advanced.FrameStatsLogging"
1925 userdata="timed logging 10" />
1926 </menu_item_call>
1927 <menu_item_call name="Log 30 Seconds" label="Log 30 Seconds">
1928 <on_click function="Advanced.FrameStatsLogging"
1929 userdata="timed logging 30" />
1930 </menu_item_call>
1931 <menu_item_call name="Log 60 Seconds" label="Log 60 Seconds">
1932 <on_click function="Advanced.FrameStatsLogging"
1933 userdata="timed logging 60" />
1934 </menu_item_call>
1935
1936 <menu_item_separator />
1937
1938 <menu_item_call name="Start Playback" label="Start Playback">
1939 <on_click function="Advanced.AgentPilot"
1940 userdata="start playback" />
1941 </menu_item_call>
1942 <menu_item_call name="Stop Playback" label="Stop Playback">
1943 <on_click function="Advanced.AgentPilot"
1944 userdata="stop playback" />
1945 </menu_item_call>
1946 <menu_item_check name="Loop Playback" label="Loop Playback">
1947 <on_click function="Advanced.ToggleAgentPilotLoop"
1948 userdata="" />
1949 <on_check function="Advanced.CheckAgentPilotLoop"
1950 userdata="" />
1951 </menu_item_check>
1952 <menu_item_call name="Start Record" label="Start Record">
1953 <on_click function="Advanced.AgentPilot"
1954 userdata="start record" />
1955 </menu_item_call>
1956 <menu_item_call name="Stop Record" label="Stop Record">
1957 <on_click function="Advanced.AgentPilot"
1958 userdata="stop record" />
1959 </menu_item_call>
1960 </menu>
1961
1962
1963 <menu_item_separator />
1964
1965
1966 <menu_item_check name="Show Updates" label="Show Updates">
1967 <on_click function="Advanced.ToggleShowObjectUpdates"
1968 userdata="" />
1969 <on_check function="Advanced.CheckShowObjectUpdates"
1970 userdata="" />
1971 </menu_item_check>
1972
1973 <menu_item_separator />
1974
1975 <menu_item_call name="Compress Image..."
1976 label="Compress Image...">
1977 <on_click function="Advanced.CompressImage"
1978 userdata="" />
1979 </menu_item_call>
1980 <menu_item_check name="Limit Select Distance"
1981 label="Limit Select Distance">
1982 <on_click function="ToggleControl"
1983 userdata="LimitSelectDistance" />
1984 <on_check control="LimitSelectDistance" />
1985 </menu_item_check>
1986 <menu_item_check name="Disable Camera Constraints"
1987 label="Disable Camera Constraints">
1988 <on_click function="ToggleControl"
1989 userdata="DisableCameraConstraints" />
1990 <on_check control="DisableCameraConstraints" />
1991 </menu_item_check>
1992 <menu_item_check name="Mouse Smoothing"
1993 label="Mouse Smoothing">
1994 <on_click function="ToggleControl"
1995 userdata="MouseSmooth" />
1996 <on_check control="MouseSmooth" />
1997 </menu_item_check>
1998
1999 <menu_item_separator />
2000
2001 <menu_item_check name="Console Window"
2002 label="Console Window">
2003 <on_click function="ToggleControl"
2004 userdata="ShowConsoleWindow" />
2005 <on_check control="ShowConsoleWindow" />
2006 </menu_item_check>
2007 <menu_item_check name="Output Debug Minidump"
2008 label="Output Debug Minidump">
2009 <on_click function="ToggleControl"
2010 userdata="SaveMiniDump" />
2011 <on_check control="SaveMiniDump" />
2012 </menu_item_check>
2013 <menu_item_check name="Clothing..."
2014 label="Clothing...">
2015 <on_click function="Advanced.ToggleClothingFloater"
2016 userdata="" />
2017 </menu_item_check>
2018 <menu_item_call name="Debug Settings"
2019 label="Debug Settings">
2020 <on_click function="Advanced.ShowDebugSettings"
2021 userdata="" />
2022 </menu_item_call>
2023 <menu_item_check name="View Admin Options"
2024 label="View Admin Options"
2025 shortcut="control|alt|V">
2026 <on_click function="Advanced.ToggleViewAdminOptions"
2027 userdata="" />
2028 <on_check function="Advanced.CheckViewAdminOptions"
2029 userdata="" />
2030 </menu_item_check>
2031 <menu_item_call name="Request Admin Status"
2032 label="Request Admin Status"
2033 shortcut="control|alt|G">
2034 <on_click function="Advanced.RequestAdminStatus"
2035 userdata="" />
2036 </menu_item_call>
2037 <menu_item_call name="Leave Admin Status"
2038 label="Leave Admin Status"
2039 shortcut="control|alt|shift|G">
2040 <on_click function="Advanced.LeaveAdminStatus"
2041 userdata="" />
2042 </menu_item_call>
2043
2044 </menu>
2045
863</menu_bar> 2046</menu_bar>
diff --git a/linden/indra/newview/skins/default/xui/en-us/panel_groups.xml b/linden/indra/newview/skins/default/xui/en-us/panel_groups.xml
index 416f58b..02d5504 100644
--- a/linden/indra/newview/skins/default/xui/en-us/panel_groups.xml
+++ b/linden/indra/newview/skins/default/xui/en-us/panel_groups.xml
@@ -34,4 +34,6 @@
34 label="Create..." name="Create" width="80" /> 34 label="Create..." name="Create" width="80" />
35 <button bottom_delta="-25" follows="top|right" font="SansSerif" height="22" 35 <button bottom_delta="-25" follows="top|right" font="SansSerif" height="22"
36 label="Search..." name="Search..." width="80" /> 36 label="Search..." name="Search..." width="80" />
37 <button bottom_delta="-25" follows="top|right" font="SansSerif" height="22"
38 label="Invite..." name="Invite..." width="80" />
37</panel> 39</panel>
diff --git a/linden/indra/newview/skins/default/xui/en-us/panel_overlaybar.xml b/linden/indra/newview/skins/default/xui/en-us/panel_overlaybar.xml
index 926e3d8..405a3f3 100644
--- a/linden/indra/newview/skins/default/xui/en-us/panel_overlaybar.xml
+++ b/linden/indra/newview/skins/default/xui/en-us/panel_overlaybar.xml
@@ -27,6 +27,11 @@
27 tool_tip="Chat and IM is hidden for you. Click here to set yourself not busy." 27 tool_tip="Chat and IM is hidden for you. Click here to set yourself not busy."
28 width="102" /> 28 width="102" />
29 <button bottom="1" follows="left|bottom" font="SansSerif" halign="center" height="20" 29 <button bottom="1" follows="left|bottom" font="SansSerif" halign="center" height="20"
30 <button bottom="1" follows="left|bottom" font="SansSerif" halign="center" height="20"
31 label="Flycam" label_selected="Flycam" left="229" name="Flycam" scale_image="true"
32 tool_tip="Your camera is under joystick control, click here to release it."
33 width="102" />
34 <button bottom="1" follows="left|bottom" font="SansSerif" halign="center" height="20"
30 label="Mouselook" label_selected="Mouselook" left="343" name="Mouselook" 35 label="Mouselook" label_selected="Mouselook" left="343" name="Mouselook"
31 scale_image="true" 36 scale_image="true"
32 tool_tip="Use mouse to steer your view. If you have a gun, clicking will shoot." 37 tool_tip="Use mouse to steer your view. If you have a gun, clicking will shoot."
diff --git a/linden/indra/newview/viewer_manifest.py b/linden/indra/newview/viewer_manifest.py
index 718d6e6..fe894a7 100755
--- a/linden/indra/newview/viewer_manifest.py
+++ b/linden/indra/newview/viewer_manifest.py
@@ -570,25 +570,30 @@ class LinuxManifest(ViewerManifest):
570 find %(dst)s -type f -perm 0600 | xargs --no-run-if-empty chmod 0644; 570 find %(dst)s -type f -perm 0600 | xargs --no-run-if-empty chmod 0644;
571 find %(dst)s -type f -perm 0400 | xargs --no-run-if-empty chmod 0444; 571 find %(dst)s -type f -perm 0400 | xargs --no-run-if-empty chmod 0444;
572 true""" % {'dst':self.get_dst_prefix() }) 572 true""" % {'dst':self.get_dst_prefix() })
573
573 self.package_file = installer_name + '.tar.bz2' 574 self.package_file = installer_name + '.tar.bz2'
574 575
575 # temporarily move directory tree so that it has the right 576 if("package" in self.args['actions'] or
576 # name in the tarfile 577 "unpacked" in self.args['actions']):
577 self.run_command("mv %(dst)s %(inst)s" % { 578
578 'dst': self.get_dst_prefix(), 579 # temporarily move directory tree so that it has the right
579 'inst': self.build_path_of(installer_name)}) 580 # name in the tarfile
580 try: 581 self.run_command("mv %(dst)s %(inst)s" % {
581 # --numeric-owner hides the username of the builder for
582 # security etc.
583 self.run_command('tar -C %(dir)s --numeric-owner -cjf '
584 '%(inst_path)s.tar.bz2 %(inst_name)s' % {
585 'dir': self.get_build_prefix(),
586 'inst_name': installer_name,
587 'inst_path':self.build_path_of(installer_name)})
588 finally:
589 self.run_command("mv %(inst)s %(dst)s" % {
590 'dst': self.get_dst_prefix(), 582 'dst': self.get_dst_prefix(),
591 'inst': self.build_path_of(installer_name)}) 583 'inst': self.build_path_of(installer_name)})
584 try:
585 # --numeric-owner hides the username of the builder for
586 # security etc.
587 self.run_command('tar -C %(dir)s --numeric-owner -cjf '
588 '%(inst_path)s.tar.bz2 %(inst_name)s' % {
589 'dir': self.get_build_prefix(),
590 'inst_name': installer_name,
591 'inst_path':self.build_path_of(installer_name)})
592 finally:
593 self.run_command("mv %(inst)s %(dst)s" % {
594 'dst': self.get_dst_prefix(),
595 'inst': self.build_path_of(installer_name)})
596
592 597
593class Linux_i686Manifest(LinuxManifest): 598class Linux_i686Manifest(LinuxManifest):
594 def construct(self): 599 def construct(self):