aboutsummaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
-rw-r--r--.gitignore43
-rw-r--r--CONTRIBUTE.txt104
-rw-r--r--ChangeLog.txt151
-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/llfloaterfriends.cpp5
-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/llimpanel.cpp9
-rw-r--r--linden/indra/newview/llimpanel.h1
-rw-r--r--linden/indra/newview/lloverlaybar.cpp18
-rw-r--r--linden/indra/newview/lloverlaybar.h1
-rw-r--r--linden/indra/newview/llpanelavatar.cpp2
-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.cpp2313
-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_instant_message.xml3
-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.xml2901
-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.xml4
-rwxr-xr-xlinden/indra/newview/viewer_manifest.py35
33 files changed, 6029 insertions, 1027 deletions
diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..f0b1689
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,43 @@
1#
2# This file contains names (and wildcards) of files that
3# Git should ignore.
4#
5# Since we only care about the actual source code files,
6# all the artwork and libraries are ignored, as are the
7# files that are created when you compile.
8#
9
10# ARTWORK
11
12linden/LICENSE-logos.txt
13linden/indra/newview/skins/**/textures/
14linden/indra/newview/skins/default/html/btn_purplepill_bg.png
15linden/indra/newview/skins/default/html/en-us/loading/sl_logo_rotate_black.gif
16linden/indra/newview/skins/default/html/unabletoconnect.png
17linden/indra/newview/res/
18linden/indra/newview/res-sdl/
19linden/indra/newview/character/
20linden/indra/newview/app_settings/*.db2
21linden/indra/newview/app_settings/windlight/
22
23
24# LIBRARIES
25
26linden/LICENSES/
27linden/LICENSE-libraries-*.txt
28linden/indra/newview/app_settings/mozilla-runtime-*/
29linden/indra/newview/fonts/
30linden/indra/newview/linux_tools/client-readme-voice.txt
31linden/indra/newview/vivox-runtime/
32linden/libraries/
33linden/indra/lib_releasefordownload_client/
34linden/indra/llwindow/glh/
35
36
37# COMPILED STUFF
38
39linden/indra/viewer-*
40linden/installed.xml
41linden/indra/CMakeFiles
42linden/indra/temp
43linden/indra/test_apps
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..84ff38c
--- /dev/null
+++ b/ChangeLog.txt
@@ -0,0 +1,151 @@
12008-09-28 Jacek Antonelli <jacek.antonelli@gmail.com>
2
3 * linden/indra/newview/llviewermenu.cpp:
4 Added event callbacks for Attached Lights and Attached Particles.
5 * linden/indra/newview/skins/default/xui/en-us/menu_viewer.xml:
6 Updated XUI menu entries for Attached Lights and Attached Particles
7 to use the new event callbacks. Those menu entries now work.
8
9 * Updated to SL source 1.21.2.
10
11
122008-09-23 Jacek Antonelli <jacek.antonelli@gmail.com>
13
14 * linden/indra/newview/llfloaterfriends.cpp:
15 'Offer Teleport' button in friends list is now enabled
16 even when the selected user(s) appear to be offline.
17 Mostly for consistency, but also to allow a work-around
18 for times when presence is flakey.
19
20
212008-09-22 Jacek Antonelli <jacek.antonelli@gmail.com>
22
23 * linden/indra/newview/llpanelavatar.cpp (setOnlineStatus):
24 'Offer Teleport' button in avatar profile is now always enabled,
25 regardless of whether the other person is known to be online.
26
27 * linden/indra/newview/llimpanel.cpp:
28 'Offer Teleport' button in IM panel is now always enabled,
29 regardless of whether the other person is known to be online.
30 Fixes crash introduced by VWR-2072 when IMing someone not on
31 your friends list, and makes the feature useful in more cases.
32
33 * linden/indra/newview/skins/default/xui/en-us/floater_tools.xml:
34 Increased maximum settable transparency from 90% to 100%.
35
36 * linden/indra/newview/skins/default/xui/en-us/floater_tools.xml:
37 Changed "Select Texture" to "Select Faces to Texture".
38
392008-09-22 Aimee Trescothick <aimee@ama-zing.co.uk>
40
41 * linden/indra/newview/lloverlaybar.cpp:
42 VWR-8341: Bring back a UI indicator of 'Flycam' text.
43 * linden/indra/newview/lloverlaybar.h:
44 Ditto.
45 * linden/indra/newview/skins/default/xui/en-us/panel_overlaybar.xml:
46 Ditto.
47
48 * linden/indra/newview/app_settings/settings.xml:
49 VWR-8430: Usability improvements to the land tools floater.
50 * linden/indra/newview/llfloatertools.cpp:
51 Ditto.
52 * linden/indra/newview/llfloatertools.h:
53 Ditto.
54 * linden/indra/newview/llpanelland.cpp:
55 Ditto.
56 * linden/indra/newview/llpanelland.h:
57 Ditto.
58 * linden/indra/newview/lltoolbrush.cpp:
59 Ditto.
60 * linden/indra/newview/skins/default/xui/en-us/alerts.xml:
61 Ditto.
62 * linden/indra/newview/skins/default/xui/en-us/floater_tools.xml:
63 Ditto.
64
652008-09-21 Jacek Antonelli <jacek.antonelli@gmail.com>
66
67 * linden/indra/newview/skins/default/xui/en-us/menu_viewer.xml:
68 Reindented and cleaned up menu XML for code readability.
69
702008-09-20 Michelle2 Zenovka <robin.cornelius@gmail.com>
71
72 * linden/indra/newview/llfloaterbulkpermission.h:
73 VWR-5082: 'Set permissions on selected task inventory' feature.
74 * linden/indra/newview/llfloaterbulkpermission.cpp:
75 Ditto.
76 * linden/indra/newview/llviewermenu.cpp:
77 Ditto.
78 * linden/indra/newview/skins/default/xui/en-us/menu_viewer.xml:
79 Ditto.
80 * linden/indra/newview/skins/default/xui/en-us/floater_bulk_perms.xml:
81 Ditto.
82
832008-09-20 Paul Churchill <pnolan@dsl.pipex.com>
84
85 * linden/indra/newview/llimpanel.cpp:
86 VWR-2072: New Feature -> UI -> IM -> Teleport (other person) Button.
87 * linden/indra/newview/llimpanel.h:
88 Ditto.
89 * linden/indra/newview/skins/default/xui/en-us/floater_instant_message.xml:
90 Ditto.
91
922008-09-19 Gigs Taggart <gigstaggart@gmail.com>
93
94 * linden/indra/newview/app_settings/settings.xml:
95 VWR-2331: Terraform tool variable "strength".
96 Contributing authors: Gigs Taggart, Aimee Trescothick, Which Linden.
97 * linden/indra/newview/llfloatertools.cpp:
98 Ditto.
99 * linden/indra/newview/llfloatertools.h:
100 Ditto.
101 * linden/indra/newview/lltoolbrush.cpp:
102 Ditto.
103 * linden/indra/newview/skins/default/xui/en-us/floater_tools.xml:
104 Ditto.
105
1062008-09-19 McCabe Maxsted <hakushakukun@gmail.com>
107
108 * linden/indra/newview/skins/default/xui/en-us/panel_groups.xml:
109 VWR-8024: simplify group invites: invite to group from groups list.
110
111 * linden/indra/newview/skins/default/xui/en-us/menu_viewer.xml:
112 VWR-1363: Add "Return Object" to the Tools menu.
113
114 * linden/indra/newview/skins/default/xui/en-us/floater_tools.xml:
115 VWR-7877: Change the default cut increment from 0.05 to 0.025.
116
117 * linden/indra/newview/skins/default/xui/en-us/panel_groups.xml:
118 VWR-8024: simplify group invites: invite to group from groups list.
119
1202008-09-19 Jacek Antonelli <jacek.antonelli@gmail.com>
121
122 * linden/indra/newview/llviewermenu.cpp:
123 VWR-2947: Create event callbacks for Advanced menu functions.
124 Part of VWR-2896: Convert "Advanced" menu to XUI.
125
126 * linden/indra/newview/skins/default/xui/en-us/menu_viewer.xml:
127 VWR-2948: Create XUI-based Advanced menu.
128 Part of VWR-2896: Convert "Advanced" menu to XUI.
129
130 * linden/indra/SConstruct:
131 New optional SConstruct flag to specify an exact path to build
132 directory: BUILD_DIR. For convenience until we switch to CMake.
133
134 * linden/indra/SConstruct:
135 VWR-2865: New SConstruct flag to (not) make tarball after compiling.
136 For convenience until we switch to CMake.
137 * linden/indra/newview/viewer_manifest.py:
138 Ditto.
139
1402008-09-07 McCabe Maxsted <hakushakukun@gmail.com>
141
142 * linden/indra/newview/llpanelobject.cpp:
143 VWR-7827: Allow Dimple/Profile Cut for boxes and box-based prims
144 in the UI.
145 * linden/indra/newview/skins/default/xui/en-us/floater_tools.xml:
146 Ditto.
147
1482008-09-07 Jacek Antonelli <jacek.antonelli@gmail.com>
149
150 * linden/indra/newview/skins/default/xui/en-us/menu_viewer.xml:
151 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 07fa71c..2083877 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/llfloaterfriends.cpp b/linden/indra/newview/llfloaterfriends.cpp
index 8fdaa52..acdd5ce 100644
--- a/linden/indra/newview/llfloaterfriends.cpp
+++ b/linden/indra/newview/llfloaterfriends.cpp
@@ -325,14 +325,9 @@ void LLPanelFriends::refreshRightsChangeList()
325 { 325 {
326 if(!friend_status->isOnline()) 326 if(!friend_status->isOnline())
327 { 327 {
328 can_offer_teleport = false;
329 selected_friends_online = false; 328 selected_friends_online = false;
330 } 329 }
331 } 330 }
332 else // missing buddy info, don't allow any operations
333 {
334 can_offer_teleport = false;
335 }
336 } 331 }
337 332
338 if (num_selected == 0) // nothing selected 333 if (num_selected == 0) // nothing selected
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/llimpanel.cpp b/linden/indra/newview/llimpanel.cpp
index a6693a3..5e260ec 100644
--- a/linden/indra/newview/llimpanel.cpp
+++ b/linden/indra/newview/llimpanel.cpp
@@ -1247,6 +1247,7 @@ BOOL LLFloaterIMPanel::postBuild()
1247 childSetAction("end_call_btn", onClickEndCall, this); 1247 childSetAction("end_call_btn", onClickEndCall, this);
1248 childSetAction("send_btn", onClickSend, this); 1248 childSetAction("send_btn", onClickSend, this);
1249 childSetAction("toggle_active_speakers_btn", onClickToggleActiveSpeakers, this); 1249 childSetAction("toggle_active_speakers_btn", onClickToggleActiveSpeakers, this);
1250 childSetAction("offer_tp_btn", onClickOfferTeleport, this);
1250 1251
1251 childSetAction("moderator_kick_speaker", onKickSpeaker, this); 1252 childSetAction("moderator_kick_speaker", onKickSpeaker, this);
1252 //LLButton* close_btn = getChild<LLButton>("close_btn"); 1253 //LLButton* close_btn = getChild<LLButton>("close_btn");
@@ -1396,6 +1397,7 @@ void LLFloaterIMPanel::draw()
1396 childSetValue("mute_btn", LLMuteList::getInstance()->isMuted(mOtherParticipantUUID, LLMute::flagVoiceChat)); 1397 childSetValue("mute_btn", LLMuteList::getInstance()->isMuted(mOtherParticipantUUID, LLMute::flagVoiceChat));
1397 childSetVisible("mute_btn", LLVoiceClient::voiceEnabled() && mVoiceChannel->isActive()); 1398 childSetVisible("mute_btn", LLVoiceClient::voiceEnabled() && mVoiceChannel->isActive());
1398 } 1399 }
1400
1399 LLFloater::draw(); 1401 LLFloater::draw();
1400} 1402}
1401 1403
@@ -1732,6 +1734,13 @@ void LLFloaterIMPanel::onTabClick(void* userdata)
1732 self->setInputFocus(TRUE); 1734 self->setInputFocus(TRUE);
1733} 1735}
1734 1736
1737// static
1738void LLFloaterIMPanel::onClickOfferTeleport(void* userdata)
1739{
1740 LLFloaterIMPanel* self = (LLFloaterIMPanel*) userdata;
1741
1742 handle_lure(self->mOtherParticipantUUID);
1743}
1735 1744
1736// static 1745// static
1737void LLFloaterIMPanel::onClickProfile( void* userdata ) 1746void LLFloaterIMPanel::onClickProfile( void* userdata )
diff --git a/linden/indra/newview/llimpanel.h b/linden/indra/newview/llimpanel.h
index 974fc4d..5bac0bd 100644
--- a/linden/indra/newview/llimpanel.h
+++ b/linden/indra/newview/llimpanel.h
@@ -231,6 +231,7 @@ public:
231 231
232 static void onClickProfile( void* userdata ); 232 static void onClickProfile( void* userdata );
233 static void onClickGroupInfo( void* userdata ); 233 static void onClickGroupInfo( void* userdata );
234 static void onClickOfferTeleport( void* userdata );
234 static void onClickClose( void* userdata ); 235 static void onClickClose( void* userdata );
235 static void onClickStartCall( void* userdata ); 236 static void onClickStartCall( void* userdata );
236 static void onClickEndCall( void* userdata ); 237 static void onClickEndCall( void* userdata );
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/llpanelavatar.cpp b/linden/indra/newview/llpanelavatar.cpp
index 7b21a15..76dbd1f 100644
--- a/linden/indra/newview/llpanelavatar.cpp
+++ b/linden/indra/newview/llpanelavatar.cpp
@@ -1318,7 +1318,7 @@ void LLPanelAvatar::setOnlineStatus(EOnlineStatus online_status)
1318 } 1318 }
1319 else 1319 else
1320 { 1320 {
1321 childSetEnabled("Offer Teleport...", (online_status == ONLINE_STATUS_YES)); 1321 childSetEnabled("Offer Teleport...", TRUE);
1322 childSetToolTip("Offer Teleport...", childGetValue("TeleportNormal").asString()); 1322 childSetToolTip("Offer Teleport...", childGetValue("TeleportNormal").asString());
1323 } 1323 }
1324} 1324}
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 c2a8055..5e67712 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);
@@ -6066,6 +6070,18 @@ void queue_actions(LLFloaterScriptQueue* q, const std::string& noscriptmsg, cons
6066 } 6070 }
6067} 6071}
6068 6072
6073
6074class LLToolsSetBulkPerms : public view_listener_t
6075{
6076 bool handleEvent(LLPointer<LLEvent> event, const LLSD& userdata)
6077 {
6078 LLFloaterBulkPermission* queue = NULL;
6079 queue = LLFloaterBulkPermission::create();
6080 return true;
6081 }
6082};
6083
6084
6069class LLToolsSelectedScriptAction : public view_listener_t 6085class LLToolsSelectedScriptAction : public view_listener_t
6070{ 6086{
6071 bool handleEvent(LLPointer<LLEvent> event, const LLSD& userdata) 6087 bool handleEvent(LLPointer<LLEvent> event, const LLSD& userdata)
@@ -7582,7 +7598,2146 @@ class LLWorldDayCycle : public view_listener_t
7582 7598
7583 7599
7584 7600
7585static void addMenu(view_listener_t *menu, const std::string& name) 7601//-------------------------------------------------------------------
7602// Advanced menu
7603//-------------------------------------------------------------------
7604
7605
7606///////////////////
7607// SHOW CONSOLES //
7608///////////////////
7609
7610
7611class LLAdvancedToggleConsole : public view_listener_t
7612{
7613 bool handleEvent(LLPointer<LLEvent> event, const LLSD& userdata)
7614 {
7615 std::string console_type = userdata.asString();
7616 if ("frame" == console_type)
7617 {
7618 toggle_visibility( (void*)gDebugView->mFrameStatView );
7619 }
7620 else if ("texture" == console_type)
7621 {
7622 toggle_visibility( (void*)gTextureView );
7623 }
7624 else if ("debug" == console_type)
7625 {
7626 toggle_visibility( (void*)((LLView*)gDebugView->mDebugConsolep) );
7627 }
7628 else if ("fast timers" == console_type)
7629 {
7630 toggle_visibility( (void*)gDebugView->mFastTimerView );
7631 }
7632 else if ("memory" == console_type)
7633 {
7634 toggle_visibility( (void*)gDebugView->mMemoryView );
7635 }
7636 return true;
7637 }
7638};
7639
7640
7641class LLAdvancedCheckConsole : public view_listener_t
7642{
7643 bool handleEvent(LLPointer<LLEvent> event, const LLSD& userdata)
7644 {
7645 std::string console_type = userdata["data"].asString();
7646 bool new_value = false;
7647 if ("frame" == console_type)
7648 {
7649 new_value = get_visibility( (void*)gDebugView->mFrameStatView );
7650 }
7651 else if ("texture" == console_type)
7652 {
7653 new_value = get_visibility( (void*)gTextureView );
7654 }
7655 else if ("debug" == console_type)
7656 {
7657 new_value = get_visibility( (void*)((LLView*)gDebugView->mDebugConsolep) );
7658 }
7659 else if ("fast timers" == console_type)
7660 {
7661 new_value = get_visibility( (void*)gDebugView->mFastTimerView );
7662 }
7663 else if ("memory" == console_type)
7664 {
7665 new_value = get_visibility( (void*)gDebugView->mMemoryView );
7666 }
7667
7668 std::string control_name = userdata["control"].asString();
7669 gMenuHolder->findControl(control_name)->setValue(new_value);
7670 return true;
7671 }
7672};
7673
7674
7675
7676
7677//////////////////////////
7678// DUMP INFO TO CONSOLE //
7679//////////////////////////
7680
7681
7682class LLAdvancedDumpInfoToConsole : public view_listener_t
7683{
7684 bool handleEvent(LLPointer<LLEvent> event, const LLSD& userdata)
7685 {
7686 std::string info_type = userdata.asString();
7687 if ("region" == info_type)
7688 {
7689 handle_region_dump_settings(NULL);
7690 }
7691 else if ("group" == info_type)
7692 {
7693 handle_dump_group_info(NULL);
7694 }
7695 else if ("capabilities" == info_type)
7696 {
7697 handle_dump_capabilities_info(NULL);
7698 }
7699 return true;
7700 }
7701};
7702
7703
7704
7705///////////////////////////////
7706// RELOAD SETTINGS OVERRIDES //
7707///////////////////////////////
7708
7709
7710class LLAdvancedReloadSettingsOverrides : public view_listener_t
7711{
7712 bool handleEvent(LLPointer<LLEvent> event, const LLSD& userdata)
7713 {
7714 reload_personal_settings_overrides(NULL);
7715 return true;
7716 }
7717};
7718
7719
7720
7721//////////////
7722// HUD INFO //
7723//////////////
7724
7725
7726class LLAdvancedToggleHUDInfo : public view_listener_t
7727{
7728 bool handleEvent(LLPointer<LLEvent> event, const LLSD& userdata)
7729 {
7730 std::string info_type = userdata.asString();
7731 if ("velocity" == info_type)
7732 {
7733 toggle_visibility( (void*)gVelocityBar );
7734 }
7735 else if ("camera" == info_type)
7736 {
7737 gDisplayCameraPos = !(gDisplayCameraPos);
7738 }
7739 else if ("wind" == info_type)
7740 {
7741 gDisplayWindInfo = !(gDisplayWindInfo);
7742 }
7743 else if ("fov" == info_type)
7744 {
7745 gDisplayFOV = !(gDisplayFOV);
7746 }
7747 return true;
7748 }
7749};
7750
7751class LLAdvancedCheckHUDInfo : public view_listener_t
7752{
7753 bool handleEvent(LLPointer<LLEvent> event, const LLSD& userdata)
7754 {
7755 std::string info_type = userdata["data"].asString();
7756 bool new_value = false;
7757 if ("velocity" == info_type)
7758 {
7759 new_value = get_visibility( (void*)gVelocityBar );
7760 }
7761 else if ("camera" == info_type)
7762 {
7763 new_value = gDisplayCameraPos;
7764 }
7765 else if ("wind" == info_type)
7766 {
7767 new_value = gDisplayWindInfo;
7768 }
7769 else if ("fov" == info_type)
7770 {
7771 new_value = gDisplayFOV;
7772 }
7773
7774 std::string control_name = userdata["control"].asString();
7775 gMenuHolder->findControl(control_name)->setValue(new_value);
7776
7777 return true;
7778 }
7779};
7780
7781
7782
7783///////////////////////
7784// CLEAR GROUP CACHE //
7785///////////////////////
7786
7787
7788class LLAdvancedClearGroupCache : public view_listener_t
7789{
7790 bool handleEvent(LLPointer<LLEvent> event, const LLSD& userdata)
7791 {
7792 LLGroupMgr::debugClearAllGroups(NULL);
7793 return true;
7794 }
7795};
7796
7797
7798
7799
7800/////////////////
7801// RENDER TYPE //
7802/////////////////
7803
7804
7805U32 render_type_from_string(std::string render_type)
7806{
7807 if ("simple" == render_type)
7808 {
7809 return LLPipeline::RENDER_TYPE_SIMPLE;
7810 }
7811 else if ("alpha" == render_type)
7812 {
7813 return LLPipeline::RENDER_TYPE_ALPHA;
7814 }
7815 else if ("tree" == render_type)
7816 {
7817 return LLPipeline::RENDER_TYPE_TREE;
7818 }
7819 else if ("avatar" == render_type)
7820 {
7821 return LLPipeline::RENDER_TYPE_AVATAR;
7822 }
7823 else if ("terrain" == render_type)
7824 {
7825 return LLPipeline::RENDER_TYPE_TERRAIN;
7826 }
7827 else if ("sky" == render_type)
7828 {
7829 return LLPipeline::RENDER_TYPE_SKY;
7830 }
7831 else if ("water" == render_type)
7832 {
7833 return LLPipeline::RENDER_TYPE_WATER;
7834 }
7835 else if ("ground" == render_type)
7836 {
7837 return LLPipeline::RENDER_TYPE_GROUND;
7838 }
7839 else if ("volume" == render_type)
7840 {
7841 return LLPipeline::RENDER_TYPE_VOLUME;
7842 }
7843 else if ("grass" == render_type)
7844 {
7845 return LLPipeline::RENDER_TYPE_GRASS;
7846 }
7847 else if ("clouds" == render_type)
7848 {
7849 return LLPipeline::RENDER_TYPE_CLOUDS;
7850 }
7851 else if ("particles" == render_type)
7852 {
7853 return LLPipeline::RENDER_TYPE_PARTICLES;
7854 }
7855 else if ("bump" == render_type)
7856 {
7857 return LLPipeline::RENDER_TYPE_BUMP;
7858 }
7859 else
7860 {
7861 return 0;
7862 }
7863}
7864
7865
7866class LLAdvancedToggleRenderType : public view_listener_t
7867{
7868 bool handleEvent(LLPointer<LLEvent> event, const LLSD& userdata)
7869 {
7870 U32 render_type = render_type_from_string( userdata.asString() );
7871 if ( render_type != 0 )
7872 {
7873 LLPipeline::toggleRenderTypeControl( (void*)render_type );
7874 }
7875 return true;
7876 }
7877};
7878
7879
7880class LLAdvancedCheckRenderType : public view_listener_t
7881{
7882 bool handleEvent(LLPointer<LLEvent> event, const LLSD& userdata)
7883 {
7884 U32 render_type = render_type_from_string( userdata["data"].asString() );
7885 bool new_value = false;
7886
7887 if ( render_type != 0 )
7888 {
7889 new_value = LLPipeline::hasRenderTypeControl( (void*)render_type );
7890 }
7891
7892 std::string control_name = userdata["control"].asString();
7893 gMenuHolder->findControl(control_name)->setValue(new_value);
7894 return true;
7895 }
7896};
7897
7898
7899
7900/////////////
7901// FEATURE //
7902/////////////
7903
7904
7905U32 feature_from_string(std::string feature)
7906{
7907 if ("ui" == feature)
7908 {
7909 return LLPipeline::RENDER_DEBUG_FEATURE_UI;
7910 }
7911 else if ("selected" == feature)
7912 {
7913 return LLPipeline::RENDER_DEBUG_FEATURE_SELECTED;
7914 }
7915 else if ("highlighted" == feature)
7916 {
7917 return LLPipeline::RENDER_DEBUG_FEATURE_HIGHLIGHTED;
7918 }
7919 else if ("dynamic textures" == feature)
7920 {
7921 return LLPipeline::RENDER_DEBUG_FEATURE_DYNAMIC_TEXTURES;
7922 }
7923 else if ("foot shadows" == feature)
7924 {
7925 return LLPipeline::RENDER_DEBUG_FEATURE_FOOT_SHADOWS;
7926 }
7927 else if ("fog" == feature)
7928 {
7929 return LLPipeline::RENDER_DEBUG_FEATURE_FOG;
7930 }
7931 else if ("palette" == feature)
7932 {
7933 return LLPipeline::RENDER_DEBUG_FEATURE_PALETTE;
7934 }
7935 else if ("fr info" == feature)
7936 {
7937 return LLPipeline::RENDER_DEBUG_FEATURE_FR_INFO;
7938 }
7939 else if ("flexible" == feature)
7940 {
7941 return LLPipeline::RENDER_DEBUG_FEATURE_FLEXIBLE;
7942 }
7943 else
7944 {
7945 return 0;
7946 }
7947};
7948
7949
7950class LLAdvancedToggleFeature : public view_listener_t
7951{
7952 bool handleEvent(LLPointer<LLEvent> event, const LLSD& userdata)
7953 {
7954 U32 feature = feature_from_string( userdata.asString() );
7955
7956 if ( feature != 0 )
7957 {
7958 LLPipeline::toggleRenderDebugFeature( (void*)feature );
7959 }
7960
7961 return true;
7962 }
7963};
7964
7965
7966class LLAdvancedCheckFeature : public view_listener_t
7967{
7968 bool handleEvent(LLPointer<LLEvent> event, const LLSD& userdata)
7969 {
7970 U32 feature = feature_from_string( userdata["data"].asString() );
7971 bool new_value = false;
7972
7973 if ( feature != 0 )
7974 {
7975 new_value = LLPipeline::toggleRenderDebugFeatureControl( (void*)feature );
7976 }
7977
7978 std::string control_name = userdata["control"].asString();
7979 gMenuHolder->findControl(control_name)->setValue(new_value);
7980 return true;
7981 }
7982};
7983
7984
7985
7986//////////////////
7987// INFO DISPLAY //
7988//////////////////
7989
7990
7991U32 info_display_from_string(std::string info_display)
7992{
7993 if ("verify" == info_display)
7994 {
7995 return LLPipeline::RENDER_DEBUG_VERIFY;
7996 }
7997 else if ("bboxes" == info_display)
7998 {
7999 return LLPipeline::RENDER_DEBUG_BBOXES;
8000 }
8001 else if ("points" == info_display)
8002 {
8003 return LLPipeline::RENDER_DEBUG_POINTS;
8004 }
8005 else if ("octree" == info_display)
8006 {
8007 return LLPipeline::RENDER_DEBUG_OCTREE;
8008 }
8009 else if ("occlusion" == info_display)
8010 {
8011 return LLPipeline::RENDER_DEBUG_OCCLUSION;
8012 }
8013 else if ("render batches" == info_display)
8014 {
8015 return LLPipeline::RENDER_DEBUG_BATCH_SIZE;
8016 }
8017 else if ("texture anim" == info_display)
8018 {
8019 return LLPipeline::RENDER_DEBUG_TEXTURE_ANIM;
8020 }
8021 else if ("texture priority" == info_display)
8022 {
8023 return LLPipeline::RENDER_DEBUG_TEXTURE_PRIORITY;
8024 }
8025 else if ("shame" == info_display)
8026 {
8027 return LLPipeline::RENDER_DEBUG_SHAME;
8028 }
8029 else if ("texture area" == info_display)
8030 {
8031 return LLPipeline::RENDER_DEBUG_TEXTURE_AREA;
8032 }
8033 else if ("face area" == info_display)
8034 {
8035 return LLPipeline::RENDER_DEBUG_FACE_AREA;
8036 }
8037 else if ("picking" == info_display)
8038 {
8039 return LLPipeline::RENDER_DEBUG_PICKING;
8040 }
8041 else if ("lights" == info_display)
8042 {
8043 return LLPipeline::RENDER_DEBUG_LIGHTS;
8044 }
8045 else if ("particles" == info_display)
8046 {
8047 return LLPipeline::RENDER_DEBUG_PARTICLES;
8048 }
8049 else if ("composition" == info_display)
8050 {
8051 return LLPipeline::RENDER_DEBUG_COMPOSITION;
8052 }
8053 else if ("glow" == info_display)
8054 {
8055 return LLPipeline::RENDER_DEBUG_GLOW;
8056 }
8057 else
8058 {
8059 return 0;
8060 }
8061};
8062
8063
8064class LLAdvancedToggleInfoDisplay : public view_listener_t
8065{
8066 bool handleEvent(LLPointer<LLEvent> event, const LLSD& userdata)
8067 {
8068 U32 info_display = info_display_from_string( userdata.asString() );
8069
8070 if ( info_display != 0 )
8071 {
8072 LLPipeline::toggleRenderDebug( (void*)info_display );
8073 }
8074
8075 return true;
8076 }
8077};
8078
8079
8080class LLAdvancedCheckInfoDisplay : public view_listener_t
8081{
8082 bool handleEvent(LLPointer<LLEvent> event, const LLSD& userdata)
8083 {
8084 U32 info_display = info_display_from_string( userdata["data"].asString() );
8085 bool new_value = false;
8086
8087 if ( info_display != 0 )
8088 {
8089 new_value = LLPipeline::toggleRenderDebugControl( (void*)info_display );
8090 }
8091
8092 std::string control_name = userdata["control"].asString();
8093 gMenuHolder->findControl(control_name)->setValue(new_value);
8094 return true;
8095 }
8096};
8097
8098
8099
8100///////////////////
8101// SELECT BUFFER //
8102///////////////////
8103
8104
8105class LLAdvancedToggleSelectBuffer : public view_listener_t
8106{
8107 bool handleEvent(LLPointer<LLEvent> event, const LLSD& userdata)
8108 {
8109 gDebugSelect = !(gDebugSelect);
8110 return true;
8111 }
8112};
8113
8114class LLAdvancedCheckSelectBuffer : public view_listener_t
8115{
8116 bool handleEvent(LLPointer<LLEvent> event, const LLSD& userdata)
8117 {
8118 bool new_value = gDebugSelect;
8119 std::string control_name = userdata["control"].asString();
8120 gMenuHolder->findControl(control_name)->setValue(new_value);
8121 return true;
8122 }
8123};
8124
8125
8126
8127/////////////////////////
8128// RANDOMIZE FRAMERATE //
8129/////////////////////////
8130
8131
8132class LLAdvancedToggleRandomizeFramerate : public view_listener_t
8133{
8134 bool handleEvent(LLPointer<LLEvent> event, const LLSD& userdata)
8135 {
8136 gRandomizeFramerate = !(gRandomizeFramerate);
8137 return true;
8138 }
8139};
8140
8141class LLAdvancedCheckRandomizeFramerate : public view_listener_t
8142{
8143 bool handleEvent(LLPointer<LLEvent> event, const LLSD& userdata)
8144 {
8145 bool new_value = gRandomizeFramerate;
8146 std::string control_name = userdata["control"].asString();
8147 gMenuHolder->findControl(control_name)->setValue(new_value);
8148 return true;
8149 }
8150};
8151
8152
8153
8154/////////////////////////
8155// PERIODIC SLOW FRAME //
8156/////////////////////////
8157
8158
8159class LLAdvancedTogglePeriodicSlowFrame : public view_listener_t
8160{
8161 bool handleEvent(LLPointer<LLEvent> event, const LLSD& userdata)
8162 {
8163 gPeriodicSlowFrame = !(gPeriodicSlowFrame);
8164 return true;
8165 }
8166};
8167
8168class LLAdvancedCheckPeriodicSlowFrame : public view_listener_t
8169{
8170 bool handleEvent(LLPointer<LLEvent> event, const LLSD& userdata)
8171 {
8172 bool new_value = gPeriodicSlowFrame;
8173 std::string control_name = userdata["control"].asString();
8174 gMenuHolder->findControl(control_name)->setValue(new_value);
8175 return true;
8176 }
8177};
8178
8179
8180
8181////////////////
8182// FRAME TEST //
8183////////////////
8184
8185
8186class LLAdvancedToggleFrameTest : public view_listener_t
8187{
8188 bool handleEvent(LLPointer<LLEvent> event, const LLSD& userdata)
8189 {
8190 LLPipeline::sRenderFrameTest = !(LLPipeline::sRenderFrameTest);
8191 return true;
8192 }
8193};
8194
8195class LLAdvancedCheckFrameTest : public view_listener_t
8196{
8197 bool handleEvent(LLPointer<LLEvent> event, const LLSD& userdata)
8198 {
8199 bool new_value = LLPipeline::sRenderFrameTest;
8200 std::string control_name = userdata["control"].asString();
8201 gMenuHolder->findControl(control_name)->setValue(new_value);
8202 return true;
8203 }
8204};
8205
8206
8207
8208///////////////////////////
8209// HIDE SELECTED OBJECTS //
8210///////////////////////////
8211
8212
8213class LLAdvancedToggleHideSelectedObjects : public view_listener_t
8214{
8215 bool handleEvent(LLPointer<LLEvent> event, const LLSD& userdata)
8216 {
8217 gHideSelectedObjects = !(gHideSelectedObjects);
8218 return true;
8219 }
8220};
8221
8222class LLAdvancedCheckHideSelectedObjects : public view_listener_t
8223{
8224 bool handleEvent(LLPointer<LLEvent> event, const LLSD& userdata)
8225 {
8226 bool new_value = gHideSelectedObjects;
8227 std::string control_name = userdata["control"].asString();
8228 gMenuHolder->findControl(control_name)->setValue(new_value);
8229 return true;
8230 }
8231};
8232
8233
8234
8235///////////////////////////
8236// SELECTED TEXTURE INFO //
8237///////////////////////////
8238
8239
8240class LLAdvancedSelectedTextureInfo : public view_listener_t
8241{
8242 bool handleEvent(LLPointer<LLEvent> event, const LLSD& userdata)
8243 {
8244 handle_selected_texture_info(NULL);
8245 return true;
8246 }
8247};
8248
8249
8250
8251//////////////////////
8252// TOGGLE WIREFRAME //
8253//////////////////////
8254
8255
8256class LLAdvancedToggleWireframe : public view_listener_t
8257{
8258 bool handleEvent(LLPointer<LLEvent> event, const LLSD& userdata)
8259 {
8260 gUseWireframe = !(gUseWireframe);
8261 return true;
8262 }
8263};
8264
8265class LLAdvancedCheckWireframe : public view_listener_t
8266{
8267 bool handleEvent(LLPointer<LLEvent> event, const LLSD& userdata)
8268 {
8269 bool new_value = gUseWireframe;
8270 std::string control_name = userdata["control"].asString();
8271 gMenuHolder->findControl(control_name)->setValue(new_value);
8272 return true;
8273 }
8274};
8275
8276
8277
8278//////////////////////
8279// DISABLE TEXTURES //
8280//////////////////////
8281
8282
8283class LLAdvancedToggleDisableTextures : public view_listener_t
8284{
8285 bool handleEvent(LLPointer<LLEvent> event, const LLSD& userdata)
8286 {
8287 menu_toggle_variable((void*)&LLViewerImage::sDontLoadVolumeTextures);
8288 return true;
8289 }
8290};
8291
8292class LLAdvancedCheckDisableTextures : public view_listener_t
8293{
8294 bool handleEvent(LLPointer<LLEvent> event, const LLSD& userdata)
8295 {
8296 bool new_value = menu_check_variable((void*)&LLViewerImage::sDontLoadVolumeTextures);
8297 std::string control_name = userdata["control"].asString();
8298 gMenuHolder->findControl(control_name)->setValue(new_value);
8299 return true;
8300 }
8301};
8302
8303
8304
8305////////////////////////////////////////
8306// RENDER ATTACHED LIGHTS / PARTICLES //
8307////////////////////////////////////////
8308
8309
8310class LLToggleRenderAttachedLights : public view_listener_t
8311{
8312 bool handleEvent(LLPointer<LLEvent> event, const LLSD& userdata)
8313 {
8314 menu_toggle_control((void *)"RenderAttachedLights");
8315 LLPipeline::sRenderAttachedLights = gSavedSettings.getBOOL("RenderAttachedLights");
8316 return true;
8317 }
8318};
8319
8320class LLToggleRenderAttachedParticles : public view_listener_t
8321{
8322 bool handleEvent(LLPointer<LLEvent> event, const LLSD& userdata)
8323 {
8324 menu_toggle_control((void *)"RenderAttachedParticles");
8325 LLPipeline::sRenderAttachedParticles = gSavedSettings.getBOOL("RenderAttachedParticles");
8326 return true;
8327 }
8328};
8329
8330
8331
8332//////////////////////////
8333// DUMP SCRIPTED CAMERA //
8334//////////////////////////
8335
8336
8337class LLAdvancedDumpScriptedCamera : public view_listener_t
8338{
8339 bool handleEvent(LLPointer<LLEvent> event, const LLSD& userdata)
8340 {
8341 handle_dump_followcam(NULL);
8342 return true;
8343 }
8344};
8345
8346
8347
8348//////////////////////////////
8349// DUMP REGION OBJECT CACHE //
8350//////////////////////////////
8351
8352
8353class LLAdvancedDumpRegionObjectCache : public view_listener_t
8354{
8355 bool handleEvent(LLPointer<LLEvent> event, const LLSD& userdata)
8356 {
8357 handle_dump_region_object_cache(NULL);
8358 return true;
8359 }
8360};
8361
8362
8363
8364////////////////
8365// SLURL TEST //
8366////////////////
8367
8368
8369class LLAdvancedSLURLTest : public view_listener_t
8370{
8371 bool handleEvent(LLPointer<LLEvent> event, const LLSD& userdata)
8372 {
8373 handle_slurl_test(NULL);
8374 return true;
8375 }
8376};
8377
8378
8379
8380////////////////////////
8381// TOGGLE EDITABLE UI //
8382////////////////////////
8383
8384
8385class LLAdvancedToggleEditableUI : public view_listener_t
8386{
8387 bool handleEvent(LLPointer<LLEvent> event, const LLSD& userdata)
8388 {
8389 edit_ui(NULL);
8390 return true;
8391 }
8392};
8393
8394// *TODO: Add corresponding "Check" for EditableUI, so it can
8395// become a menu_item_check. Need to add check_edit_ui(void*)
8396// or functional equivalent to do that.
8397
8398
8399
8400//////////////////////
8401// ASYNC KEYSTROKES //
8402//////////////////////
8403
8404
8405class LLAdvancedToggleAsyncKeystrokes : public view_listener_t
8406{
8407 bool handleEvent(LLPointer<LLEvent> event, const LLSD& userdata)
8408 {
8409 gHandleKeysAsync = !(gHandleKeysAsync);
8410 return true;
8411 }
8412};
8413
8414class LLAdvancedCheckAsyncKeystrokes : public view_listener_t
8415{
8416 bool handleEvent(LLPointer<LLEvent> event, const LLSD& userdata)
8417 {
8418 bool new_value = gHandleKeysAsync;
8419 std::string control_name = userdata["control"].asString();
8420 gMenuHolder->findControl(control_name)->setValue(new_value);
8421 return true;
8422 }
8423};
8424
8425
8426
8427/////////////////////
8428// DUMP SELECT MGR //
8429/////////////////////
8430
8431
8432class LLAdvancedDumpSelectMgr : public view_listener_t
8433{
8434 bool handleEvent(LLPointer<LLEvent> event, const LLSD& userdata)
8435 {
8436 dump_select_mgr(NULL);
8437 return true;
8438 }
8439};
8440
8441
8442
8443////////////////////
8444// DUMP INVENTORY //
8445////////////////////
8446
8447
8448class LLAdvancedDumpInventory : public view_listener_t
8449{
8450 bool handleEvent(LLPointer<LLEvent> event, const LLSD& userdata)
8451 {
8452 dump_inventory(NULL);
8453 return true;
8454 }
8455};
8456
8457
8458
8459///////////////////////
8460// DUMP FOCUS HOLDER //
8461///////////////////////
8462
8463
8464class LLAdvancedDumpFocusHolder : public view_listener_t
8465{
8466 bool handleEvent(LLPointer<LLEvent> event, const LLSD& userdata)
8467 {
8468 handle_dump_focus(NULL);
8469 return true;
8470 }
8471};
8472
8473
8474
8475////////////////////////////////
8476// PRINT SELECTED OBJECT INFO //
8477////////////////////////////////
8478
8479
8480class LLAdvancedPrintSelectedObjectInfo : public view_listener_t
8481{
8482 bool handleEvent(LLPointer<LLEvent> event, const LLSD& userdata)
8483 {
8484 print_object_info(NULL);
8485 return true;
8486 }
8487};
8488
8489
8490
8491//////////////////////
8492// PRINT AGENT INFO //
8493//////////////////////
8494
8495
8496class LLAdvancedPrintAgentInfo : public view_listener_t
8497{
8498 bool handleEvent(LLPointer<LLEvent> event, const LLSD& userdata)
8499 {
8500 print_agent_nvpairs(NULL);
8501 return true;
8502 }
8503};
8504
8505
8506
8507////////////////////////////////
8508// PRINT TEXTURE MEMORY STATS //
8509////////////////////////////////
8510
8511
8512class LLAdvancedPrintTextureMemoryStats : public view_listener_t
8513{
8514 bool handleEvent(LLPointer<LLEvent> event, const LLSD& userdata)
8515 {
8516 output_statistics(NULL);
8517 return true;
8518 }
8519};
8520
8521
8522
8523//////////////////////
8524// DEBUG SELECT MGR //
8525//////////////////////
8526
8527
8528class LLAdvancedToggleDebugSelectMgr : public view_listener_t
8529{
8530 bool handleEvent(LLPointer<LLEvent> event, const LLSD& userdata)
8531 {
8532 gDebugSelectMgr = !(gDebugSelectMgr);
8533 return true;
8534 }
8535};
8536
8537class LLAdvancedCheckDebugSelectMgr : public view_listener_t
8538{
8539 bool handleEvent(LLPointer<LLEvent> event, const LLSD& userdata)
8540 {
8541 bool new_value = gDebugSelectMgr;
8542 std::string control_name = userdata["control"].asString();
8543 gMenuHolder->findControl(control_name)->setValue(new_value);
8544 return true;
8545 }
8546};
8547
8548
8549
8550//////////////////
8551// DEBUG CLICKS //
8552//////////////////
8553
8554
8555class LLAdvancedToggleDebugClicks : public view_listener_t
8556{
8557 bool handleEvent(LLPointer<LLEvent> event, const LLSD& userdata)
8558 {
8559 gDebugClicks = !(gDebugClicks);
8560 return true;
8561 }
8562};
8563
8564class LLAdvancedCheckDebugClicks : public view_listener_t
8565{
8566 bool handleEvent(LLPointer<LLEvent> event, const LLSD& userdata)
8567 {
8568 bool new_value = gDebugClicks;
8569 std::string control_name = userdata["control"].asString();
8570 gMenuHolder->findControl(control_name)->setValue(new_value);
8571 return true;
8572 }
8573};
8574
8575
8576
8577/////////////////
8578// DEBUG VIEWS //
8579/////////////////
8580
8581
8582class LLAdvancedToggleDebugViews : public view_listener_t
8583{
8584 bool handleEvent(LLPointer<LLEvent> event, const LLSD& userdata)
8585 {
8586 LLView::sDebugRects = !(LLView::sDebugRects);
8587 return true;
8588 }
8589};
8590
8591class LLAdvancedCheckDebugViews : public view_listener_t
8592{
8593 bool handleEvent(LLPointer<LLEvent> event, const LLSD& userdata)
8594 {
8595 bool new_value = LLView::sDebugRects;
8596 std::string control_name = userdata["control"].asString();
8597 gMenuHolder->findControl(control_name)->setValue(new_value);
8598 return true;
8599 }
8600};
8601
8602
8603
8604///////////////////////
8605// XUI NAME TOOLTIPS //
8606///////////////////////
8607
8608
8609class LLAdvancedToggleXUINameTooltips : public view_listener_t
8610{
8611 bool handleEvent(LLPointer<LLEvent> event, const LLSD& userdata)
8612 {
8613 toggle_show_xui_names(NULL);
8614 return true;
8615 }
8616};
8617
8618class LLAdvancedCheckXUINameTooltips : public view_listener_t
8619{
8620 bool handleEvent(LLPointer<LLEvent> event, const LLSD& userdata)
8621 {
8622 bool new_value = check_show_xui_names(NULL);
8623 std::string control_name = userdata["control"].asString();
8624 gMenuHolder->findControl(control_name)->setValue(new_value);
8625 return true;
8626 }
8627};
8628
8629
8630
8631////////////////////////
8632// DEBUG MOUSE EVENTS //
8633////////////////////////
8634
8635
8636class LLAdvancedToggleDebugMouseEvents : public view_listener_t
8637{
8638 bool handleEvent(LLPointer<LLEvent> event, const LLSD& userdata)
8639 {
8640 LLView::sDebugMouseHandling = !(LLView::sDebugMouseHandling);
8641 return true;
8642 }
8643};
8644
8645class LLAdvancedCheckDebugMouseEvents : public view_listener_t
8646{
8647 bool handleEvent(LLPointer<LLEvent> event, const LLSD& userdata)
8648 {
8649 bool new_value = LLView::sDebugMouseHandling;
8650 std::string control_name = userdata["control"].asString();
8651 gMenuHolder->findControl(control_name)->setValue(new_value);
8652 return true;
8653 }
8654};
8655
8656
8657
8658////////////////
8659// DEBUG KEYS //
8660////////////////
8661
8662
8663class LLAdvancedToggleDebugKeys : public view_listener_t
8664{
8665 bool handleEvent(LLPointer<LLEvent> event, const LLSD& userdata)
8666 {
8667 LLView::sDebugKeys = !(LLView::sDebugKeys);
8668 return true;
8669 }
8670};
8671
8672class LLAdvancedCheckDebugKeys : public view_listener_t
8673{
8674 bool handleEvent(LLPointer<LLEvent> event, const LLSD& userdata)
8675 {
8676 bool new_value = LLView::sDebugKeys;
8677 std::string control_name = userdata["control"].asString();
8678 gMenuHolder->findControl(control_name)->setValue(new_value);
8679 return true;
8680 }
8681};
8682
8683
8684
8685///////////////////////
8686// DEBUG WINDOW PROC //
8687///////////////////////
8688
8689
8690class LLAdvancedToggleDebugWindowProc : public view_listener_t
8691{
8692 bool handleEvent(LLPointer<LLEvent> event, const LLSD& userdata)
8693 {
8694 gDebugWindowProc = !(gDebugWindowProc);
8695 return true;
8696 }
8697};
8698
8699class LLAdvancedCheckDebugWindowProc : public view_listener_t
8700{
8701 bool handleEvent(LLPointer<LLEvent> event, const LLSD& userdata)
8702 {
8703 bool new_value = gDebugWindowProc;
8704 std::string control_name = userdata["control"].asString();
8705 gMenuHolder->findControl(control_name)->setValue(new_value);
8706 return true;
8707 }
8708};
8709
8710
8711
8712////////////////////////////
8713// DEBUG TEXT EDITOR TIPS //
8714////////////////////////////
8715
8716
8717class LLAdvancedToggleDebugTextEditorTips : public view_listener_t
8718{
8719 bool handleEvent(LLPointer<LLEvent> event, const LLSD& userdata)
8720 {
8721 gDebugTextEditorTips = !(gDebugTextEditorTips);
8722 return true;
8723 }
8724};
8725
8726class LLAdvancedCheckDebugTextEditorTips : public view_listener_t
8727{
8728 bool handleEvent(LLPointer<LLEvent> event, const LLSD& userdata)
8729 {
8730 bool new_value = gDebugTextEditorTips;
8731 std::string control_name = userdata["control"].asString();
8732 gMenuHolder->findControl(control_name)->setValue(new_value);
8733 return true;
8734 }
8735};
8736
8737
8738
8739///////////////////////
8740// SHOW FLOATER TEST //
8741///////////////////////
8742
8743
8744class LLAdvancedShowFloaterTest : public view_listener_t
8745{
8746 bool handleEvent(LLPointer<LLEvent> event, const LLSD& userdata)
8747 {
8748 LLFloaterTest::show(NULL);
8749 return true;
8750 }
8751};
8752
8753
8754
8755/////////////////////////
8756// EXPORT MENUS TO XML //
8757/////////////////////////
8758
8759
8760class LLAdvancedExportMenusToXML : public view_listener_t
8761{
8762 bool handleEvent(LLPointer<LLEvent> event, const LLSD& userdata)
8763 {
8764 handle_export_menus_to_xml(NULL);
8765 return true;
8766 }
8767};
8768
8769
8770
8771/////////////
8772// EDIT UI //
8773/////////////
8774
8775
8776class LLAdvancedEditUI : public view_listener_t
8777{
8778 bool handleEvent(LLPointer<LLEvent> event, const LLSD& userdata)
8779 {
8780 LLFloaterEditUI::show(NULL);
8781 return true;
8782 }
8783};
8784
8785
8786
8787//////////////////////
8788// LOAD UI FROM XML //
8789//////////////////////
8790
8791
8792class LLAdvancedLoadUIFromXML : public view_listener_t
8793{
8794 bool handleEvent(LLPointer<LLEvent> event, const LLSD& userdata)
8795 {
8796 handle_load_from_xml(NULL);
8797 return true;
8798 }
8799};
8800
8801
8802
8803////////////////////
8804// SAVE UI TO XML //
8805////////////////////
8806
8807
8808class LLAdvancedSaveUIToXML : public view_listener_t
8809{
8810 bool handleEvent(LLPointer<LLEvent> event, const LLSD& userdata)
8811 {
8812 handle_save_to_xml(NULL);
8813 return true;
8814 }
8815};
8816
8817
8818
8819///////////////
8820// XUI NAMES //
8821///////////////
8822
8823
8824class LLAdvancedToggleXUINames : public view_listener_t
8825{
8826 bool handleEvent(LLPointer<LLEvent> event, const LLSD& userdata)
8827 {
8828 toggle_show_xui_names(NULL);
8829 return true;
8830 }
8831};
8832
8833class LLAdvancedCheckXUINames : public view_listener_t
8834{
8835 bool handleEvent(LLPointer<LLEvent> event, const LLSD& userdata)
8836 {
8837 bool new_value = check_show_xui_names(NULL);
8838 std::string control_name = userdata["control"].asString();
8839 gMenuHolder->findControl(control_name)->setValue(new_value);
8840 return true;
8841 }
8842};
8843
8844
8845
8846////////////////////////
8847// GRAB BAKED TEXTURE //
8848////////////////////////
8849
8850
8851class LLAdvancedGrabBakedTexture : public view_listener_t
8852{
8853 bool handleEvent(LLPointer<LLEvent> event, const LLSD& userdata)
8854 {
8855 std::string texture_type = userdata.asString();
8856 if ("eyes" == texture_type)
8857 {
8858 handle_grab_texture( (void*)LLVOAvatar::TEX_EYES_BAKED );
8859 }
8860 else if ("head" == texture_type)
8861 {
8862 handle_grab_texture( (void*)LLVOAvatar::TEX_HEAD_BAKED );
8863 }
8864 else if ("upper" == texture_type)
8865 {
8866 handle_grab_texture( (void*)LLVOAvatar::TEX_UPPER_BAKED );
8867 }
8868 else if ("lower" == texture_type)
8869 {
8870 handle_grab_texture( (void*)LLVOAvatar::TEX_SKIRT_BAKED );
8871 }
8872 else if ("skirt" == texture_type)
8873 {
8874 handle_grab_texture( (void*)LLVOAvatar::TEX_SKIRT_BAKED );
8875 }
8876
8877 return true;
8878 }
8879};
8880
8881class LLAdvancedEnableGrabBakedTexture : public view_listener_t
8882{
8883 bool handleEvent(LLPointer<LLEvent> event, const LLSD& userdata)
8884 {
8885 std::string texture_type = userdata["data"].asString();
8886 bool new_value = false;
8887
8888 if ("iris" == texture_type)
8889 {
8890 new_value = enable_grab_texture( (void*)LLVOAvatar::TEX_EYES_BAKED );
8891 }
8892 else if ("head" == texture_type)
8893 {
8894 new_value = enable_grab_texture( (void*)LLVOAvatar::TEX_HEAD_BAKED );
8895 }
8896 else if ("upper" == texture_type)
8897 {
8898 new_value = enable_grab_texture( (void*)LLVOAvatar::TEX_UPPER_BAKED );
8899 }
8900 else if ("lower" == texture_type)
8901 {
8902 new_value = enable_grab_texture( (void*)LLVOAvatar::TEX_LOWER_BAKED );
8903 }
8904 else if ("skirt" == texture_type)
8905 {
8906 new_value = enable_grab_texture( (void*)LLVOAvatar::TEX_SKIRT_BAKED );
8907 }
8908
8909 std::string control_name = userdata["control"].asString();
8910 gMenuHolder->findControl(control_name)->setValue(new_value);
8911 return true;
8912 }
8913};
8914
8915
8916
8917//////////////////////
8918// ALLOW IDLE / AFK //
8919//////////////////////
8920
8921
8922class LLAdvancedToggleAllowIdleAFK : public view_listener_t
8923{
8924 bool handleEvent(LLPointer<LLEvent> event, const LLSD& userdata)
8925 {
8926 gAllowIdleAFK = !(gAllowIdleAFK);
8927 return true;
8928 }
8929};
8930
8931class LLAdvancedCheckAllowIdleAFK : public view_listener_t
8932{
8933 bool handleEvent(LLPointer<LLEvent> event, const LLSD& userdata)
8934 {
8935 bool new_value = gAllowIdleAFK;
8936 std::string control_name = userdata["control"].asString();
8937 gMenuHolder->findControl(control_name)->setValue(new_value);
8938 return true;
8939 }
8940};
8941
8942
8943
8944///////////////////////
8945// APPEARANCE TO XML //
8946///////////////////////
8947
8948
8949class LLAdvancedAppearanceToXML : public view_listener_t
8950{
8951 bool handleEvent(LLPointer<LLEvent> event, const LLSD& userdata)
8952 {
8953 LLVOAvatar::dumpArchetypeXML(NULL);
8954 return true;
8955 }
8956};
8957
8958
8959
8960///////////////////////////////
8961// TOGGLE CHARACTER GEOMETRY //
8962///////////////////////////////
8963
8964
8965class LLAdvancedToggleCharacterGeometry : public view_listener_t
8966{
8967 bool handleEvent(LLPointer<LLEvent> event, const LLSD& userdata)
8968 {
8969 handle_god_request_avatar_geometry(NULL);
8970 return true;
8971 }
8972};
8973
8974class LLAdvancedEnableCharacterGeometry : public view_listener_t
8975{
8976 bool handleEvent(LLPointer<LLEvent> event, const LLSD& userdata)
8977 {
8978 enable_god_customer_service(NULL);
8979 return true;
8980 }
8981};
8982
8983
8984
8985/////////////////////////////
8986// TEST MALE / TEST FEMALE //
8987/////////////////////////////
8988
8989
8990class LLAdvancedTestMale : public view_listener_t
8991{
8992 bool handleEvent(LLPointer<LLEvent> event, const LLSD& userdata)
8993 {
8994 handle_test_male(NULL);
8995 return true;
8996 }
8997};
8998
8999
9000class LLAdvancedTestFemale : public view_listener_t
9001{
9002 bool handleEvent(LLPointer<LLEvent> event, const LLSD& userdata)
9003 {
9004 handle_test_female(NULL);
9005 return true;
9006 }
9007};
9008
9009
9010
9011///////////////
9012// TOGGLE PG //
9013///////////////
9014
9015
9016class LLAdvancedTogglePG : public view_listener_t
9017{
9018 bool handleEvent(LLPointer<LLEvent> event, const LLSD& userdata)
9019 {
9020 handle_toggle_pg(NULL);
9021 return true;
9022 }
9023};
9024
9025
9026
9027/////////////////////////
9028// ALLOW SELECT AVATAR //
9029/////////////////////////
9030
9031
9032class LLAdvancedToggleAllowSelectAvatar : public view_listener_t
9033{
9034 bool handleEvent(LLPointer<LLEvent> event, const LLSD& userdata)
9035 {
9036 gAllowSelectAvatar = !(gAllowSelectAvatar);
9037 return true;
9038 }
9039};
9040
9041class LLAdvancedCheckAllowSelectAvatar : public view_listener_t
9042{
9043 bool handleEvent(LLPointer<LLEvent> event, const LLSD& userdata)
9044 {
9045 bool new_value = gAllowSelectAvatar;
9046 std::string control_name = userdata["control"].asString();
9047 gMenuHolder->findControl(control_name)->setValue(new_value);
9048 return true;
9049 }
9050};
9051
9052
9053
9054////////////////////////////
9055// ALLOW TAP-TAP-HOLD RUN //
9056////////////////////////////
9057
9058
9059class LLAdvancedToggleAllowTapTapHoldRun : public view_listener_t
9060{
9061 bool handleEvent(LLPointer<LLEvent> event, const LLSD& userdata)
9062 {
9063 gAllowTapTapHoldRun = !(gAllowTapTapHoldRun);
9064 return true;
9065 }
9066};
9067
9068class LLAdvancedCheckAllowTapTapHoldRun : public view_listener_t
9069{
9070 bool handleEvent(LLPointer<LLEvent> event, const LLSD& userdata)
9071 {
9072 bool new_value = gAllowTapTapHoldRun;
9073 std::string control_name = userdata["control"].asString();
9074 gMenuHolder->findControl(control_name)->setValue(new_value);
9075 return true;
9076 }
9077};
9078
9079
9080
9081/////////////////////////////
9082// FORCE PARAMS TO DEFAULT //
9083/////////////////////////////
9084
9085
9086class LLAdvancedForceParamsToDefault : public view_listener_t
9087{
9088 bool handleEvent(LLPointer<LLEvent> event, const LLSD& userdata)
9089 {
9090 LLAgent::clearVisualParams(NULL);
9091 return true;
9092 }
9093};
9094
9095
9096
9097//////////////////////////
9098// RELOAD VERTEX SHADER //
9099//////////////////////////
9100
9101
9102class LLAdvancedReloadVertexShader : public view_listener_t
9103{
9104 bool handleEvent(LLPointer<LLEvent> event, const LLSD& userdata)
9105 {
9106 reload_vertex_shader(NULL);
9107 return true;
9108 }
9109};
9110
9111
9112
9113////////////////////
9114// ANIMATION INFO //
9115////////////////////
9116
9117
9118class LLAdvancedToggleAnimationInfo : public view_listener_t
9119{
9120 bool handleEvent(LLPointer<LLEvent> event, const LLSD& userdata)
9121 {
9122 LLVOAvatar::sShowAnimationDebug = !(LLVOAvatar::sShowAnimationDebug);
9123 return true;
9124 }
9125};
9126
9127class LLAdvancedCheckAnimationInfo : public view_listener_t
9128{
9129 bool handleEvent(LLPointer<LLEvent> event, const LLSD& userdata)
9130 {
9131 bool new_value = LLVOAvatar::sShowAnimationDebug;
9132 std::string control_name = userdata["control"].asString();
9133 gMenuHolder->findControl(control_name)->setValue(new_value);
9134 return true;
9135 }
9136};
9137
9138
9139
9140////////////////////////////
9141// SLOW MOTION ANIMATIONS //
9142////////////////////////////
9143
9144
9145class LLAdvancedToggleSlowMotionAnimations : public view_listener_t
9146{
9147 bool handleEvent(LLPointer<LLEvent> event, const LLSD& userdata)
9148 {
9149 slow_mo_animations(NULL);
9150 return true;
9151 }
9152};
9153
9154// *TODO: Add a corresponding "Check" event for SlowMotionAnimations,
9155// so that it can become a menu_item_check with the "X" indicator.
9156// See indra/newview/skins/xui/en_us/menu_viewer.xml
9157
9158
9159
9160//////////////////
9161// SHOW LOOK AT //
9162//////////////////
9163
9164
9165class LLAdvancedToggleShowLookAt : public view_listener_t
9166{
9167 bool handleEvent(LLPointer<LLEvent> event, const LLSD& userdata)
9168 {
9169 LLHUDEffectLookAt::sDebugLookAt = !(LLHUDEffectLookAt::sDebugLookAt);
9170 return true;
9171 }
9172};
9173
9174class LLAdvancedCheckShowLookAt : public view_listener_t
9175{
9176 bool handleEvent(LLPointer<LLEvent> event, const LLSD& userdata)
9177 {
9178 bool new_value = LLHUDEffectLookAt::sDebugLookAt;
9179 std::string control_name = userdata["control"].asString();
9180 gMenuHolder->findControl(control_name)->setValue(new_value);
9181 return true;
9182 }
9183};
9184
9185
9186
9187///////////////////
9188// SHOW POINT AT //
9189///////////////////
9190
9191
9192class LLAdvancedToggleShowPointAt : public view_listener_t
9193{
9194 bool handleEvent(LLPointer<LLEvent> event, const LLSD& userdata)
9195 {
9196 LLHUDEffectPointAt::sDebugPointAt = !(LLHUDEffectPointAt::sDebugPointAt);
9197 return true;
9198 }
9199};
9200
9201class LLAdvancedCheckShowPointAt : public view_listener_t
9202{
9203 bool handleEvent(LLPointer<LLEvent> event, const LLSD& userdata)
9204 {
9205 bool new_value = LLHUDEffectPointAt::sDebugPointAt;
9206 std::string control_name = userdata["control"].asString();
9207 gMenuHolder->findControl(control_name)->setValue(new_value);
9208 return true;
9209 }
9210};
9211
9212
9213
9214/////////////////////////
9215// DEBUG JOINT UPDATES //
9216/////////////////////////
9217
9218
9219class LLAdvancedToggleDebugJointUpdates : public view_listener_t
9220{
9221 bool handleEvent(LLPointer<LLEvent> event, const LLSD& userdata)
9222 {
9223 LLVOAvatar::sJointDebug = !(LLVOAvatar::sJointDebug);
9224 return true;
9225 }
9226};
9227
9228class LLAdvancedCheckDebugJointUpdates : public view_listener_t
9229{
9230 bool handleEvent(LLPointer<LLEvent> event, const LLSD& userdata)
9231 {
9232 bool new_value = LLVOAvatar::sJointDebug;
9233 std::string control_name = userdata["control"].asString();
9234 gMenuHolder->findControl(control_name)->setValue(new_value);
9235 return true;
9236 }
9237};
9238
9239
9240
9241/////////////////
9242// DISABLE LOD //
9243/////////////////
9244
9245
9246class LLAdvancedToggleDisableLOD : public view_listener_t
9247{
9248 bool handleEvent(LLPointer<LLEvent> event, const LLSD& userdata)
9249 {
9250 LLViewerJoint::sDisableLOD = !(LLViewerJoint::sDisableLOD);
9251 return true;
9252 }
9253};
9254
9255class LLAdvancedCheckDisableLOD : public view_listener_t
9256{
9257 bool handleEvent(LLPointer<LLEvent> event, const LLSD& userdata)
9258 {
9259 bool new_value = LLViewerJoint::sDisableLOD;
9260 std::string control_name = userdata["control"].asString();
9261 gMenuHolder->findControl(control_name)->setValue(new_value);
9262 return true;
9263 }
9264};
9265
9266
9267
9268/////////////////////////
9269// DEBUG CHARACTER VIS //
9270/////////////////////////
9271
9272
9273class LLAdvancedToggleDebugCharacterVis : public view_listener_t
9274{
9275 bool handleEvent(LLPointer<LLEvent> event, const LLSD& userdata)
9276 {
9277 LLVOAvatar::sDebugInvisible = !(LLVOAvatar::sDebugInvisible);
9278 return true;
9279 }
9280};
9281
9282class LLAdvancedCheckDebugCharacterVis : public view_listener_t
9283{
9284 bool handleEvent(LLPointer<LLEvent> event, const LLSD& userdata)
9285 {
9286 bool new_value = LLVOAvatar::sDebugInvisible;
9287 std::string control_name = userdata["control"].asString();
9288 gMenuHolder->findControl(control_name)->setValue(new_value);
9289 return true;
9290 }
9291};
9292
9293
9294
9295//////////////////////////
9296// SHOW COLLISION PLANE //
9297//////////////////////////
9298
9299/***************************
9300 *
9301 * Disabled. See DEV-14477
9302 *
9303 ***************************
9304
9305class LLAdvancedToggleShowCollisionPlane : public view_listener_t
9306{
9307 bool handleEvent(LLPointer<LLEvent> event, const LLSD& userdata)
9308 {
9309 LLVOAvatar::sShowFootPlane = !(LLVOAvatar::sShowFootPlane);
9310 return true;
9311 }
9312};
9313
9314class LLAdvancedCheckShowCollisionPlane : public view_listener_t
9315{
9316 bool handleEvent(LLPointer<LLEvent> event, const LLSD& userdata)
9317 {
9318 bool new_value = LLVOAvatar::sShowFootPlane;
9319 std::string control_name = userdata["control"].asString();
9320 gMenuHolder->findControl(control_name)->setValue(new_value);
9321 return true;
9322 }
9323};
9324
9325***************************/
9326
9327
9328/////////////////////////////
9329// SHOW COLLISION SKELETON //
9330/////////////////////////////
9331
9332
9333class LLAdvancedToggleShowCollisionSkeleton : public view_listener_t
9334{
9335 bool handleEvent(LLPointer<LLEvent> event, const LLSD& userdata)
9336 {
9337 LLVOAvatar::sShowCollisionVolumes = !(LLVOAvatar::sShowCollisionVolumes);
9338 return true;
9339 }
9340};
9341
9342class LLAdvancedCheckShowCollisionSkeleton : public view_listener_t
9343{
9344 bool handleEvent(LLPointer<LLEvent> event, const LLSD& userdata)
9345 {
9346 bool new_value = LLVOAvatar::sShowCollisionVolumes;
9347 std::string control_name = userdata["control"].asString();
9348 gMenuHolder->findControl(control_name)->setValue(new_value);
9349 return true;
9350 }
9351};
9352
9353
9354
9355//////////////////////////
9356// DISPLAY AGENT TARGET //
9357//////////////////////////
9358
9359
9360class LLAdvancedToggleDisplayAgentTarget : public view_listener_t
9361{
9362 bool handleEvent(LLPointer<LLEvent> event, const LLSD& userdata)
9363 {
9364 LLAgent::sDebugDisplayTarget = !(LLAgent::sDebugDisplayTarget);
9365 return true;
9366 }
9367};
9368
9369class LLAdvancedCheckDisplayAgentTarget : public view_listener_t
9370{
9371 bool handleEvent(LLPointer<LLEvent> event, const LLSD& userdata)
9372 {
9373 bool new_value = LLAgent::sDebugDisplayTarget;
9374 std::string control_name = userdata["control"].asString();
9375 gMenuHolder->findControl(control_name)->setValue(new_value);
9376 return true;
9377 }
9378};
9379
9380
9381
9382///////////////////////////
9383// DEBUG AVATAR ROTATION //
9384///////////////////////////
9385
9386
9387class LLAdvancedToggleDebugAvatarRotation : public view_listener_t
9388{
9389 bool handleEvent(LLPointer<LLEvent> event, const LLSD& userdata)
9390 {
9391 gDebugAvatarRotation = !(gDebugAvatarRotation);
9392 return true;
9393 }
9394};
9395
9396class LLAdvancedCheckDebugAvatarRotation : public view_listener_t
9397{
9398 bool handleEvent(LLPointer<LLEvent> event, const LLSD& userdata)
9399 {
9400 bool new_value = gDebugAvatarRotation;
9401 std::string control_name = userdata["control"].asString();
9402 gMenuHolder->findControl(control_name)->setValue(new_value);
9403 return true;
9404 }
9405};
9406
9407
9408
9409//////////////////////
9410// DUMP ATTACHMENTS //
9411//////////////////////
9412
9413
9414class LLAdvancedDumpAttachments : public view_listener_t
9415{
9416 bool handleEvent(LLPointer<LLEvent> event, const LLSD& userdata)
9417 {
9418 handle_dump_attachments(NULL);
9419 return true;
9420 }
9421};
9422
9423
9424
9425/////////////////////
9426// REBAKE TEXTURES //
9427/////////////////////
9428
9429
9430class LLAdvancedRebakeTextures : public view_listener_t
9431{
9432 bool handleEvent(LLPointer<LLEvent> event, const LLSD& userdata)
9433 {
9434 handle_rebake_textures(NULL);
9435 return true;
9436 }
9437};
9438
9439
9440
9441///////////////////////////
9442// DEBUG AVATAR TEXTURES //
9443///////////////////////////
9444
9445
9446class LLAdvancedDebugAvatarTextures : public view_listener_t
9447{
9448 bool handleEvent(LLPointer<LLEvent> event, const LLSD& userdata)
9449 {
9450 handle_debug_avatar_textures(NULL);
9451 return true;
9452 }
9453};
9454
9455
9456
9457////////////////////////////////
9458// DUMP AVATAR LOCAL TEXTURES //
9459////////////////////////////////
9460
9461
9462class LLAdvancedDumpAvatarLocalTextures : public view_listener_t
9463{
9464 bool handleEvent(LLPointer<LLEvent> event, const LLSD& userdata)
9465 {
9466 handle_dump_avatar_local_textures(NULL);
9467 return true;
9468 }
9469};
9470
9471
9472
9473/////////////////
9474// MESSAGE LOG //
9475/////////////////
9476
9477
9478class LLAdvancedEnableMessageLog : public view_listener_t
9479{
9480 bool handleEvent(LLPointer<LLEvent> event, const LLSD& userdata)
9481 {
9482 handle_viewer_enable_message_log(NULL);
9483 return true;
9484 }
9485};
9486
9487class LLAdvancedDisableMessageLog : public view_listener_t
9488{
9489 bool handleEvent(LLPointer<LLEvent> event, const LLSD& userdata)
9490 {
9491 handle_viewer_disable_message_log(NULL);
9492 return true;
9493 }
9494};
9495
9496
9497
9498/////////////////
9499// DROP PACKET //
9500/////////////////
9501
9502
9503class LLAdvancedDropPacket : public view_listener_t
9504{
9505 bool handleEvent(LLPointer<LLEvent> event, const LLSD& userdata)
9506 {
9507 drop_packet(NULL);
9508 return true;
9509 }
9510};
9511
9512
9513
9514/////////////////////////
9515// FRAME STATS LOGGING //
9516/////////////////////////
9517
9518
9519class LLAdvancedFrameStatsLogging : public view_listener_t
9520{
9521 bool handleEvent(LLPointer<LLEvent> event, const LLSD& userdata)
9522 {
9523 std::string command = userdata.asString();
9524 if ("start logging" == command)
9525 {
9526 LLFrameStats::startLogging(NULL);
9527 }
9528 else if ("stop logging" == command)
9529 {
9530 LLFrameStats::stopLogging(NULL);
9531 }
9532 else if ("timed logging 10" == command)
9533 {
9534 LLFrameStats::timedLogging10(NULL);
9535 }
9536 else if ("timed logging 30" == command)
9537 {
9538 LLFrameStats::timedLogging30(NULL);
9539 }
9540 else if ("timed logging 60" == command)
9541 {
9542 LLFrameStats::timedLogging60(NULL);
9543 }
9544
9545 return true;
9546 }
9547};
9548
9549
9550
9551/////////////////
9552// AGENT PILOT //
9553/////////////////
9554
9555
9556class LLAdvancedAgentPilot : public view_listener_t
9557{
9558 bool handleEvent(LLPointer<LLEvent> event, const LLSD& userdata)
9559 {
9560 std::string command = userdata.asString();
9561 if ("start playback" == command)
9562 {
9563 LLAgentPilot::startPlayback(NULL);
9564 }
9565 else if ("stop playback" == command)
9566 {
9567 LLAgentPilot::stopPlayback(NULL);
9568 }
9569 else if ("start record" == command)
9570 {
9571 LLAgentPilot::startRecord(NULL);
9572 }
9573 else if ("stop record" == command)
9574 {
9575 LLAgentPilot::saveRecord(NULL);
9576 }
9577
9578 return true;
9579 }
9580};
9581
9582
9583
9584//////////////////////
9585// AGENT PILOT LOOP //
9586//////////////////////
9587
9588
9589class LLAdvancedToggleAgentPilotLoop : public view_listener_t
9590{
9591 bool handleEvent(LLPointer<LLEvent> event, const LLSD& userdata)
9592 {
9593 LLAgentPilot::sLoop = !(LLAgentPilot::sLoop);
9594 return true;
9595 }
9596};
9597
9598class LLAdvancedCheckAgentPilotLoop : public view_listener_t
9599{
9600 bool handleEvent(LLPointer<LLEvent> event, const LLSD& userdata)
9601 {
9602 bool new_value = LLAgentPilot::sLoop;
9603 std::string control_name = userdata["control"].asString();
9604 gMenuHolder->findControl(control_name)->setValue(new_value);
9605 return true;
9606 }
9607};
9608
9609
9610
9611/////////////////////////
9612// SHOW OBJECT UPDATES //
9613/////////////////////////
9614
9615
9616class LLAdvancedToggleShowObjectUpdates : public view_listener_t
9617{
9618 bool handleEvent(LLPointer<LLEvent> event, const LLSD& userdata)
9619 {
9620 gShowObjectUpdates = !(gShowObjectUpdates);
9621 return true;
9622 }
9623};
9624
9625class LLAdvancedCheckShowObjectUpdates : public view_listener_t
9626{
9627 bool handleEvent(LLPointer<LLEvent> event, const LLSD& userdata)
9628 {
9629 bool new_value = gShowObjectUpdates;
9630 std::string control_name = userdata["control"].asString();
9631 gMenuHolder->findControl(control_name)->setValue(new_value);
9632 return true;
9633 }
9634};
9635
9636
9637
9638////////////////////
9639// COMPRESS IMAGE //
9640////////////////////
9641
9642
9643class LLAdvancedCompressImage : public view_listener_t
9644{
9645 bool handleEvent(LLPointer<LLEvent> event, const LLSD& userdata)
9646 {
9647 handle_compress_image(NULL);
9648 return true;
9649 }
9650};
9651
9652
9653
9654//////////////////////
9655// CLOTHING FLOATER //
9656//////////////////////
9657
9658
9659class LLAdvancedToggleClothingFloater : public view_listener_t
9660{
9661 bool handleEvent(LLPointer<LLEvent> event, const LLSD& userdata)
9662 {
9663 handle_clothing(NULL);
9664 return true;
9665 }
9666};
9667
9668// There is no LLAdvancedCheckClothingFloater.
9669
9670
9671
9672/////////////////////////
9673// SHOW DEBUG SETTINGS //
9674/////////////////////////
9675
9676
9677class LLAdvancedShowDebugSettings : public view_listener_t
9678{
9679 bool handleEvent(LLPointer<LLEvent> event, const LLSD& userdata)
9680 {
9681 LLFloaterSettingsDebug::show(NULL);
9682 return true;
9683 }
9684};
9685
9686
9687
9688////////////////////////
9689// VIEW ADMIN OPTIONS //
9690////////////////////////
9691
9692
9693class LLAdvancedToggleViewAdminOptions : public view_listener_t
9694{
9695 bool handleEvent(LLPointer<LLEvent> event, const LLSD& userdata)
9696 {
9697 handle_admin_override_toggle(NULL);
9698 return true;
9699 }
9700};
9701
9702class LLAdvancedCheckViewAdminOptions : public view_listener_t
9703{
9704 bool handleEvent(LLPointer<LLEvent> event, const LLSD& userdata)
9705 {
9706 bool new_value = check_admin_override(NULL);
9707 std::string control_name = userdata["control"].asString();
9708 gMenuHolder->findControl(control_name)->setValue(new_value);
9709 return true;
9710 }
9711};
9712
9713
9714
9715//////////////////
9716// ADMIN STATUS //
9717//////////////////
9718
9719
9720class LLAdvancedRequestAdminStatus : public view_listener_t
9721{
9722 bool handleEvent(LLPointer<LLEvent> event, const LLSD& userdata)
9723 {
9724 handle_god_mode(NULL);
9725 return true;
9726 }
9727};
9728
9729class LLAdvancedLeaveAdminStatus : public view_listener_t
9730{
9731 bool handleEvent(LLPointer<LLEvent> event, const LLSD& userdata)
9732 {
9733 handle_leave_god_mode(NULL);
9734 return true;
9735 }
9736};
9737
9738
9739
9740static void addMenu(view_listener_t *menu, const char *name)
7586{ 9741{
7587 sMenus.push_back(menu); 9742 sMenus.push_back(menu);
7588 menu->registerListener(gMenuHolder, name); 9743 menu->registerListener(gMenuHolder, name);
@@ -7691,6 +9846,7 @@ void initialize_menus()
7691 addMenu(new LLToolsSaveToInventory(), "Tools.SaveToInventory"); 9846 addMenu(new LLToolsSaveToInventory(), "Tools.SaveToInventory");
7692 addMenu(new LLToolsSaveToObjectInventory(), "Tools.SaveToObjectInventory"); 9847 addMenu(new LLToolsSaveToObjectInventory(), "Tools.SaveToObjectInventory");
7693 addMenu(new LLToolsSelectedScriptAction(), "Tools.SelectedScriptAction"); 9848 addMenu(new LLToolsSelectedScriptAction(), "Tools.SelectedScriptAction");
9849 addMenu(new LLToolsSetBulkPerms(), "Tools.SetBulkPerms");
7694 9850
7695 addMenu(new LLToolsEnableToolNotPie(), "Tools.EnableToolNotPie"); 9851 addMenu(new LLToolsEnableToolNotPie(), "Tools.EnableToolNotPie");
7696 addMenu(new LLToolsEnableLink(), "Tools.EnableLink"); 9852 addMenu(new LLToolsEnableLink(), "Tools.EnableLink");
@@ -7793,4 +9949,159 @@ void initialize_menus()
7793 addMenu(new LLSomethingSelectedNoHUD(), "SomethingSelectedNoHUD"); 9949 addMenu(new LLSomethingSelectedNoHUD(), "SomethingSelectedNoHUD");
7794 addMenu(new LLEditableSelected(), "EditableSelected"); 9950 addMenu(new LLEditableSelected(), "EditableSelected");
7795 addMenu(new LLEditableSelectedMono(), "EditableSelectedMono"); 9951 addMenu(new LLEditableSelectedMono(), "EditableSelectedMono");
9952
9953
9954 // Advanced (top level menu)
9955 addMenu(new LLAdvancedToggleConsole(), "Advanced.ToggleConsole");
9956 addMenu(new LLAdvancedCheckConsole(), "Advanced.CheckConsole");
9957 addMenu(new LLAdvancedDumpInfoToConsole(), "Advanced.DumpInfoToConsole");
9958 addMenu(new LLAdvancedReloadSettingsOverrides(), "Advanced.ReloadSettingsOverrides");
9959
9960 // Advanced > HUD Info
9961 addMenu(new LLAdvancedToggleHUDInfo(), "Advanced.ToggleHUDInfo");
9962 addMenu(new LLAdvancedCheckHUDInfo(), "Advanced.CheckHUDInfo");
9963
9964 addMenu(new LLAdvancedClearGroupCache(), "Advanced.ClearGroupCache");
9965
9966 // Advanced > Render > Types
9967 addMenu(new LLAdvancedToggleRenderType(), "Advanced.ToggleRenderType");
9968 addMenu(new LLAdvancedCheckRenderType(), "Advanced.CheckRenderType");
9969
9970 // Advanced > Render > Features
9971 addMenu(new LLAdvancedToggleFeature(), "Advanced.ToggleFeature");
9972 addMenu(new LLAdvancedCheckFeature(), "Advanced.CheckFeature");
9973
9974 // Advanced > Render > Info Displays
9975 addMenu(new LLAdvancedToggleInfoDisplay(), "Advanced.ToggleInfoDisplay");
9976 addMenu(new LLAdvancedCheckInfoDisplay(), "Advanced.CheckInfoDisplay");
9977 addMenu(new LLAdvancedToggleSelectBuffer(), "Advanced.ToggleSelectBuffer");
9978 addMenu(new LLAdvancedCheckSelectBuffer(), "Advanced.CheckSelectBuffer");
9979 addMenu(new LLAdvancedToggleRandomizeFramerate(), "Advanced.ToggleRandomizeFramerate");
9980 addMenu(new LLAdvancedCheckRandomizeFramerate(), "Advanced.CheckRandomizeFramerate");
9981 addMenu(new LLAdvancedTogglePeriodicSlowFrame(), "Advanced.TogglePeriodicSlowFrame");
9982 addMenu(new LLAdvancedCheckPeriodicSlowFrame(), "Advanced.CheckPeriodicSlowFrame");
9983 addMenu(new LLAdvancedToggleFrameTest(), "Advanced.ToggleFrameTest");
9984 addMenu(new LLAdvancedCheckFrameTest(), "Advanced.CheckFrameTest");
9985 addMenu(new LLAdvancedToggleHideSelectedObjects(), "Advanced.ToggleHideSelectedObjects");
9986 addMenu(new LLAdvancedCheckHideSelectedObjects(), "Advanced.CheckHideSelectedObjects");
9987 addMenu(new LLAdvancedSelectedTextureInfo(), "Advanced.SelectedTextureInfo");
9988 addMenu(new LLAdvancedToggleWireframe(), "Advanced.ToggleWireframe");
9989 addMenu(new LLAdvancedCheckWireframe(), "Advanced.CheckWireframe");
9990 addMenu(new LLAdvancedToggleDisableTextures(), "Advanced.ToggleDisableTextures");
9991 addMenu(new LLAdvancedCheckDisableTextures(), "Advanced.CheckDisableTextures");
9992
9993 // Advanced > Render (top level menu)
9994 addMenu(new LLToggleRenderAttachedLights(), "ToggleRenderAttachedLights");
9995 addMenu(new LLToggleRenderAttachedParticles(), "ToggleRenderAttachedParticles");
9996
9997 // Advanced > World
9998 addMenu(new LLAdvancedDumpScriptedCamera(), "Advanced.DumpScriptedCamera");
9999 addMenu(new LLAdvancedDumpRegionObjectCache(), "Advanced.DumpRegionObjectCache");
10000
10001 // Advanced > UI
10002 addMenu(new LLAdvancedSLURLTest(), "Advanced.SLURLTest");
10003 addMenu(new LLAdvancedToggleEditableUI(), "Advanced.ToggleEditableUI");
10004 //addMenu(new LLAdvancedCheckEditableUI(), "Advanced.CheckEditableUI");
10005 addMenu(new LLAdvancedToggleAsyncKeystrokes(), "Advanced.ToggleAsyncKeystrokes");
10006 addMenu(new LLAdvancedCheckAsyncKeystrokes(), "Advanced.CheckAsyncKeystrokes");
10007 addMenu(new LLAdvancedDumpSelectMgr(), "Advanced.DumpSelectMgr");
10008 addMenu(new LLAdvancedDumpInventory(), "Advanced.DumpInventory");
10009 addMenu(new LLAdvancedDumpFocusHolder(), "Advanced.DumpFocusHolder");
10010 addMenu(new LLAdvancedPrintSelectedObjectInfo(), "Advanced.PrintSelectedObjectInfo");
10011 addMenu(new LLAdvancedPrintAgentInfo(), "Advanced.PrintAgentInfo");
10012 addMenu(new LLAdvancedPrintTextureMemoryStats(), "Advanced.PrintTextureMemoryStats");
10013 addMenu(new LLAdvancedToggleDebugSelectMgr(), "Advanced.ToggleDebugSelectMgr");
10014 addMenu(new LLAdvancedCheckDebugSelectMgr(), "Advanced.CheckDebugSelectMgr");
10015 addMenu(new LLAdvancedToggleDebugClicks(), "Advanced.ToggleDebugClicks");
10016 addMenu(new LLAdvancedCheckDebugClicks(), "Advanced.CheckDebugClicks");
10017 addMenu(new LLAdvancedCheckDebugViews(), "Advanced.CheckDebugViews");
10018 addMenu(new LLAdvancedToggleDebugViews(), "Advanced.ToggleDebugViews");
10019 addMenu(new LLAdvancedToggleXUINameTooltips(), "Advanced.ToggleXUINameTooltips");
10020 addMenu(new LLAdvancedCheckXUINameTooltips(), "Advanced.CheckXUINameTooltips");
10021 addMenu(new LLAdvancedToggleDebugMouseEvents(), "Advanced.ToggleDebugMouseEvents");
10022 addMenu(new LLAdvancedCheckDebugMouseEvents(), "Advanced.CheckDebugMouseEvents");
10023 addMenu(new LLAdvancedToggleDebugKeys(), "Advanced.ToggleDebugKeys");
10024 addMenu(new LLAdvancedCheckDebugKeys(), "Advanced.CheckDebugKeys");
10025 addMenu(new LLAdvancedToggleDebugWindowProc(), "Advanced.ToggleDebugWindowProc");
10026 addMenu(new LLAdvancedCheckDebugWindowProc(), "Advanced.CheckDebugWindowProc");
10027 addMenu(new LLAdvancedToggleDebugTextEditorTips(), "Advanced.ToggleDebugTextEditorTips");
10028 addMenu(new LLAdvancedCheckDebugTextEditorTips(), "Advanced.CheckDebugTextEditorTips");
10029
10030 // Advanced > XUI
10031 addMenu(new LLAdvancedShowFloaterTest(), "Advanced.ShowFloaterTest");
10032 addMenu(new LLAdvancedExportMenusToXML(), "Advanced.ExportMenusToXML");
10033 addMenu(new LLAdvancedEditUI(), "Advanced.EditUI");
10034 addMenu(new LLAdvancedLoadUIFromXML(), "Advanced.LoadUIFromXML");
10035 addMenu(new LLAdvancedSaveUIToXML(), "Advanced.SaveUIToXML");
10036 addMenu(new LLAdvancedToggleXUINames(), "Advanced.ToggleXUINames");
10037 addMenu(new LLAdvancedCheckXUINames(), "Advanced.CheckXUINames");
10038
10039 // Advanced > Character > Grab Baked Texture
10040 addMenu(new LLAdvancedGrabBakedTexture(), "Advanced.GrabBakedTexture");
10041 addMenu(new LLAdvancedEnableGrabBakedTexture(), "Advanced.EnableGrabBakedTexture");
10042
10043 // Advanced > Character > Character Tests
10044 addMenu(new LLAdvancedToggleAllowIdleAFK(), "Advanced.ToggleAllowIdleAFK");
10045 addMenu(new LLAdvancedCheckAllowIdleAFK(), "Advanced.CheckAllowIdleAFK");
10046 addMenu(new LLAdvancedAppearanceToXML(), "Advanced.AppearanceToXML");
10047 addMenu(new LLAdvancedToggleCharacterGeometry(), "Advanced.ToggleCharacterGeometry");
10048 addMenu(new LLAdvancedTestMale(), "Advanced.TestMale");
10049 addMenu(new LLAdvancedTestFemale(), "Advanced.TestFemale");
10050 addMenu(new LLAdvancedTogglePG(), "Advanced.TogglePG");
10051 addMenu(new LLAdvancedToggleAllowSelectAvatar(), "Advanced.ToggleAllowSelectAvatar");
10052 addMenu(new LLAdvancedCheckAllowSelectAvatar(), "Advanced.CheckAllowSelectAvatar");
10053
10054 // Advanced > Character (toplevel)
10055 addMenu(new LLAdvancedToggleAllowTapTapHoldRun(), "Advanced.ToggleAllowTapTapHoldRun");
10056 addMenu(new LLAdvancedCheckAllowTapTapHoldRun(), "Advanced.CheckAllowTapTapHoldRun");
10057 addMenu(new LLAdvancedForceParamsToDefault(), "Advanced.ForceParamsToDefault");
10058 addMenu(new LLAdvancedReloadVertexShader(), "Advanced.ReloadVertexShader");
10059 addMenu(new LLAdvancedToggleAnimationInfo(), "Advanced.ToggleAnimationInfo");
10060 addMenu(new LLAdvancedCheckAnimationInfo(), "Advanced.CheckAnimationInfo");
10061 addMenu(new LLAdvancedToggleSlowMotionAnimations(), "Advanced.ToggleSlowMotionAnimations");
10062 //addMenu(new LLAdvancedCheckSlowMotionAnimations(), "Advanced.CheckSlowMotionAnimations");
10063 addMenu(new LLAdvancedToggleShowLookAt(), "Advanced.ToggleShowLookAt");
10064 addMenu(new LLAdvancedCheckShowLookAt(), "Advanced.CheckShowLookAt");
10065 addMenu(new LLAdvancedToggleShowPointAt(), "Advanced.ToggleShowPointAt");
10066 addMenu(new LLAdvancedCheckShowPointAt(), "Advanced.CheckShowPointAt");
10067 addMenu(new LLAdvancedToggleDebugJointUpdates(), "Advanced.ToggleDebugJointUpdates");
10068 addMenu(new LLAdvancedCheckDebugJointUpdates(), "Advanced.CheckDebugJointUpdates");
10069 addMenu(new LLAdvancedToggleDisableLOD(), "Advanced.ToggleDisableLOD");
10070 addMenu(new LLAdvancedCheckDisableLOD(), "Advanced.CheckDisableLOD");
10071 addMenu(new LLAdvancedToggleDebugCharacterVis(), "Advanced.ToggleDebugCharacterVis");
10072 addMenu(new LLAdvancedCheckDebugCharacterVis(), "Advanced.CheckDebugCharacterVis");
10073// addMenu(new LLAdvancedToggleShowCollisionPlane(), "Advanced.ToggleShowCollisionPlane");
10074// addMenu(new LLAdvancedCheckShowCollisionPlane(), "Advanced.CheckShowCollisionPlane");
10075 addMenu(new LLAdvancedToggleShowCollisionSkeleton(), "Advanced.ToggleShowCollisionSkeleton");
10076 addMenu(new LLAdvancedCheckShowCollisionSkeleton(), "Advanced.CheckShowCollisionSkeleton");
10077 addMenu(new LLAdvancedToggleDisplayAgentTarget(), "Advanced.ToggleDisplayAgentTarget");
10078 addMenu(new LLAdvancedCheckDisplayAgentTarget(), "Advanced.CheckDisplayAgentTarget");
10079 addMenu(new LLAdvancedToggleDebugAvatarRotation(), "Advanced.ToggleDebugAvatarRotation");
10080 addMenu(new LLAdvancedCheckDebugAvatarRotation(), "Advanced.CheckDebugAvatarRotation");
10081 addMenu(new LLAdvancedDumpAttachments(), "Advanced.DumpAttachments");
10082 addMenu(new LLAdvancedRebakeTextures(), "Advanced.RebakeTextures");
10083 addMenu(new LLAdvancedDebugAvatarTextures(), "Advanced.DebugAvatarTextures");
10084 addMenu(new LLAdvancedDumpAvatarLocalTextures(), "Advanced.DumpAvatarLocalTextures");
10085
10086 // Advanced > Network
10087 addMenu(new LLAdvancedEnableMessageLog(), "Advanced.EnableMessageLog");
10088 addMenu(new LLAdvancedDisableMessageLog(), "Advanced.DisableMessageLog");
10089 addMenu(new LLAdvancedDropPacket(), "Advanced.DropPacket");
10090
10091 // Advanced > Recorder
10092 addMenu(new LLAdvancedFrameStatsLogging(), "Advanced.FrameStatsLogging");
10093 addMenu(new LLAdvancedAgentPilot(), "Advanced.AgentPilot");
10094 addMenu(new LLAdvancedToggleAgentPilotLoop(), "Advanced.ToggleAgentPilotLoop");
10095 addMenu(new LLAdvancedCheckAgentPilotLoop(), "Advanced.CheckAgentPilotLoop");
10096
10097 // Advanced (toplevel)
10098 addMenu(new LLAdvancedToggleShowObjectUpdates(), "Advanced.ToggleShowObjectUpdates");
10099 addMenu(new LLAdvancedCheckShowObjectUpdates(), "Advanced.CheckShowObjectUpdates");
10100 addMenu(new LLAdvancedCompressImage(), "Advanced.CompressImage");
10101 addMenu(new LLAdvancedToggleClothingFloater(), "Advanced.ToggleClothingFloater");
10102 addMenu(new LLAdvancedShowDebugSettings(), "Advanced.ShowDebugSettings");
10103 addMenu(new LLAdvancedToggleViewAdminOptions(), "Advanced.ToggleViewAdminOptions");
10104 addMenu(new LLAdvancedCheckViewAdminOptions(), "Advanced.CheckViewAdminOptions");
10105 addMenu(new LLAdvancedRequestAdminStatus(), "Advanced.RequestAdminStatus");
10106 addMenu(new LLAdvancedLeaveAdminStatus(), "Advanced.LeaveAdminStatus");
7796} 10107}
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 20b04db..8bbdc3d 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_instant_message.xml b/linden/indra/newview/skins/default/xui/en-us/floater_instant_message.xml
index cce06b5..c3058c4 100644
--- a/linden/indra/newview/skins/default/xui/en-us/floater_instant_message.xml
+++ b/linden/indra/newview/skins/default/xui/en-us/floater_instant_message.xml
@@ -51,6 +51,9 @@
51 image_unselected="icn_speaker_dark.tga" label="" left_delta="56" 51 image_unselected="icn_speaker_dark.tga" label="" left_delta="56"
52 name="mute_btn" tool_tip="Mute voice" width="25" /> 52 name="mute_btn" tool_tip="Mute voice" width="25" />
53 </panel> 53 </panel>
54 <button bottom_delta="0" follows="right|top" font="SansSerif"
55 halign="center" bottom ="-40" height="20" label="Offer Teleport" right="-5"
56 mouse_opaque="true" name="offer_tp_btn" scale_image="true" width="102" />
54 <text_editor type="string" length="1" bg_readonly_color="ChatHistoryBgColor" bg_writeable_color="ChatHistoryBgColor" 57 <text_editor type="string" length="1" bg_readonly_color="ChatHistoryBgColor" bg_writeable_color="ChatHistoryBgColor"
55 bottom="30" embedded_items="false" enabled="false" 58 bottom="30" embedded_items="false" enabled="false"
56 follows="left|top|right|bottom" font="SansSerif" height="221" left="5" 59 follows="left|top|right|bottom" font="SansSerif" height="221" left="5"
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..f82f254 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,2044 @@
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="ToggleRenderAttachedLights" />
1422 <on_check control="RenderAttachedLights" />
1423 </menu_item_check>
1424 <menu_item_check name="Attached Particles" label="Attached Particles">
1425 <on_click function="ToggleRenderAttachedParticles" />
1426 <on_check control="RenderAttachedParticles" />
1427 </menu_item_check>
1428 </menu>
1429
1430
1431
1432 <!-- WORLD -->
1433
1434 <menu name="World" drop_shadow="true"
1435 opaque="true" tear_off="true">
1436 <!-- Disabled because you can't do this in Windlight.
1437 <menu_item_check name="Mouse Moves Sun"
1438 label="Mouse Moves Sun"
1439 shortcut="control|alt|M">
1440 <on_click function="ToggleControl" userdata="MouseSun" />
1441 <on_check control="MouseSun" />
1442 </menu_item_check>
1443 -->
1444 <menu_item_check name="Sim Sun Override"
1445 label="Sim Sun Override">
1446 <on_click function="ToggleControl"
1447 userdata="SkyOverrideSimSunPosition" />
1448 <on_check control="SkyOverrideSimSunPosition" />
1449 </menu_item_check>
1450 <menu_item_call name="Dump Scripted Camera"
1451 label="Dump Scripted Camera">
1452 <on_click function="Advanced.DumpScriptedCamera"
1453 userdata="" />
1454 </menu_item_call>
1455 <menu_item_check name="Fixed Weather" label="Fixed Weather">
1456 <on_click function="ToggleControl"
1457 userdata="FixedWeather" />
1458 <on_check control="FixedWeather" />
1459 </menu_item_check>
1460 <menu_item_call name="Dump Region Object Cache"
1461 label="Dump Region Object Cache">
1462 <on_click function="Advanced.DumpRegionObjectCache"
1463 userdata="" />
1464 </menu_item_call>
1465 </menu>
1466
1467
1468
1469 <!-- UI -->
1470
1471 <menu name="UI" drop_shadow="true"
1472 opaque="true" tear_off="true">
1473
1474 <menu_item_call name="SLURL Test" label="SLURL Test">
1475 <on_click function="Advanced.SLURLTest" userdata="" />
1476 </menu_item_call>
1477
1478 <!--
1479 *TODO: Make this a proper toggle item with the "X" indicator.
1480 1. Add a "Advanced.CheckEditableUI" function in llviewermenu.cpp.
1481 2. Change this surrounding menu_item_call to a menu_item_check.
1482 3. Uncomment the "on_check" line below.
1483 -->
1484 <menu_item_call name="Editable UI" label="Editable UI">
1485 <on_click function="Advanced.ToggleEditableUI" userdata="" />
1486 <!--
1487 <on_check function="Advanced.CheckEditableUI" userdata="" />
1488 -->
1489 </menu_item_call>
1490
1491 <menu_item_check name="Async Keystrokes"
1492 label="Async Keystrokes">
1493 <on_click function="Advanced.ToggleAsyncKeystrokes"
1494 userdata="" />
1495 <on_check function="Advanced.CheckAsyncKeystrokes"
1496 userdata="" />
1497 </menu_item_check>
1498 <menu_item_call name="Dump SelectMgr" label="Dump SelectMgr">
1499 <on_click function="Advanced.DumpSelectMgr" userdata="" />
1500 </menu_item_call>
1501 <menu_item_call name="Dump Inventory" label="Dump Inventory">
1502 <on_click function="Advanced.DumpInventory" userdata="" />
1503 </menu_item_call>
1504 <menu_item_call name="Dump Focus Holder"
1505 label="Dump Focus Holder"
1506 shortcut="control|alt|F">
1507 <on_click function="Advanced.DumpFocusHolder" userdata="" />
1508 </menu_item_call>
1509 <menu_item_call name="Print Selected Object Info"
1510 label="Print Selected Object Info"
1511 shortcut="control|shift|P">
1512 <on_click function="Advanced.PrintSelectedObjectInfo"
1513 userdata="" />
1514 </menu_item_call>
1515 <menu_item_call name="Print Agent Info"
1516 label="Print Agent Info" shortcut="shift|P">
1517 <on_click function="Advanced.PrintAgentInfo" userdata="" />
1518 </menu_item_call>
1519 <menu_item_call name="Memory Stats" label="Memory Stats"
1520 shortcut="control|alt|shift|M">
1521 <on_click function="Advanced.PrintTextureMemoryStats"
1522 userdata="" />
1523 </menu_item_call>
1524 <menu_item_check name="Double-Click Auto-Pilot"
1525 label="Double-Click Auto-Pilot">
1526 <on_click function="ToggleControl"
1527 userdata="DoubleClickAutoPilot" />
1528 <on_check control="DoubleClickAutoPilot" />
1529 </menu_item_check>
1530 <menu_item_separator />
1531 <menu_item_check name="Debug SelectMgr"
1532 label="Debug SelectMgr">
1533 <on_click function="Advanced.ToggleDebugSelectMgr"
1534 userdata="" />
1535 <on_check function="Advanced.CheckDebugSelectMgr"
1536 userdata="" />
1537 </menu_item_check>
1538 <menu_item_check name="Debug Clicks"
1539 label="Debug Click">
1540 <on_click function="Advanced.ToggleDebugClicks"
1541 userdata="" />
1542 <on_check function="Advanced.CheckDebugClicks"
1543 userdata="" />
1544 </menu_item_check>
1545 <menu_item_check name="Debug Views"
1546 label="Debug Views">
1547 <on_click function="Advanced.ToggleDebugViews"
1548 userdata="" />
1549 <on_check function="Advanced.CheckDebugViews"
1550 userdata="" />
1551 </menu_item_check>
1552 <menu_item_check name="Show Name Tooltips"
1553 label="Show Name Tooltips">
1554 <on_click function="Advanced.ToggleXUINameTooltips"
1555 userdata="" />
1556 <on_check function="Advanced.CheckXUINameTooltips"
1557 userdata="" />
1558 </menu_item_check>
1559 <menu_item_check name="Debug Mouse Events"
1560 label="Debug Mouse Events">
1561 <on_click function="Advanced.ToggleDebugMouseEvents"
1562 userdata="" />
1563 <on_check function="Advanced.CheckDebugMouseEvents"
1564 userdata="" />
1565 </menu_item_check>
1566 <menu_item_check name="Debug Keys"
1567 label="Debug Keys">
1568 <on_click function="Advanced.ToggleDebugKeys"
1569 userdata="" />
1570 <on_check function="Advanced.CheckDebugKeys"
1571 userdata="" />
1572 </menu_item_check>
1573 <menu_item_check name="Debug WindowProc"
1574 label="Debug WindowProc">
1575 <on_click function="Advanced.ToggleDebugWindowProc"
1576 userdata="" />
1577 <on_check function="Advanced.CheckDebugWindowProc"
1578 userdata="" />
1579 </menu_item_check>
1580 <menu_item_check name="Debug Text Editor Tips"
1581 label="Debug Text Editor Tips">
1582 <on_click function="Advanced.ToggleDebugTextEditorTips"
1583 userdata="" />
1584 <on_check function="Advanced.CheckDebugTextEditorTips"
1585 userdata="" />
1586 </menu_item_check>
1587 <menu_item_separator />
1588 <menu_item_check name="Show Time"
1589 label="Show Time">
1590 <on_click function="ToggleControl"
1591 userdata="DebugShowTime" />
1592 <on_check control="DebugShowTime" />
1593 </menu_item_check>
1594 <menu_item_check name="Show Render Info"
1595 label="Show Render Info">
1596 <on_click function="ToggleControl"
1597 userdata="DebugShowRenderInfo" />
1598 <on_check control="DebugShowRenderInfo" />
1599 </menu_item_check>
1600 <menu_item_check name="Show Color Under Cursor"
1601 label="Show Color Under Cursor">
1602 <on_click function="ToggleControl"
1603 userdata="DebugShowColor" />
1604 <on_check control="DebugShowColor" />
1605 </menu_item_check>
1606 </menu>
1607
1608
1609
1610 <!-- XUI -->
1611
1612 <menu name="XUI" drop_shadow="true"
1613 opaque="true" tear_off="true">
1614 <menu_item_call name="Floater Test..."
1615 label="Floater Test...">
1616 <on_click function="Advanced.ShowFloaterTest"
1617 userdata="" />
1618 </menu_item_call>
1619 <menu_item_call name="Export Menus to XML..."
1620 label="Export Menus to XML...">
1621 <on_click function="Advanced.ExportMenusToXML"
1622 userdata="" />
1623 </menu_item_call>
1624 <menu_item_call name="Edit UI..."
1625 label="Edit UI...">
1626 <on_click function="Advanced.EditUI"
1627 userdata="" />
1628 </menu_item_call>
1629 <menu_item_call name="Load from XML..."
1630 label="Load from XML...">
1631 <on_click function="Advanced.LoadUIFromXML"
1632 userdata="" />
1633 </menu_item_call>
1634 <menu_item_call name="Save to XML..."
1635 label="Save to XML...">
1636 <on_click function="Advanced.SaveUIToXML"
1637 userdata="" />
1638 </menu_item_call>
1639 <menu_item_check name="Show XUI Names"
1640 label="Show XUI Names">
1641 <on_click function="Advanced.ToggleXUINames"
1642 userdata="" />
1643 <on_check function="Advanced.CheckXUINames"
1644 userdata="" />
1645 </menu_item_check>
1646 </menu>
1647
1648
1649
1650 <!-- CHARACTER -->
1651
1652 <menu name="Character" drop_shadow="true"
1653 opaque="true" tear_off="true">
1654
1655 <menu name="Grab Baked Texture" drop_shadow="true"
1656 opaque="true" tear_off="true">
1657
1658 <menu_item_call name="Iris" enabled="false"
1659 label="Iris">
1660 <on_click function="Advanced.GrabBakedTexture"
1661 userdata="eyes" />
1662 <on_enable function="Advanced.EnableGrabBakedTexture"
1663 userdata="eyes" />
1664 </menu_item_call>
1665 <menu_item_call name="Head" enabled="false"
1666 label="Head">
1667 <on_click function="Advanced.GrabBakedTexture"
1668 userdata="head" />
1669 <on_enable function="Advanced.EnableGrabBakedTexture"
1670 userdata="head" />
1671 </menu_item_call>
1672 <menu_item_call name="Upper Body" enabled="false"
1673 label="Upper Body">
1674 <on_click function="Advanced.GrabBakedTexture"
1675 userdata="upper" />
1676 <on_enable function="Advanced.EnableGrabBakedTexture"
1677 userdata="upper" />
1678 </menu_item_call>
1679 <menu_item_call name="Lower Body" enabled="false"
1680 label="Lower Body">
1681 <on_click function="Advanced.GrabBakedTexture"
1682 userdata="lower" />
1683 <on_enable function="Advanced.EnableGrabBakedTexture"
1684 userdata="lower" />
1685 </menu_item_call>
1686 <menu_item_call name="Skirt" enabled="false"
1687 label="Skirt">
1688 <on_click function="Advanced.GrabBakedTexture"
1689 userdata="skirt" />
1690 <on_enable function="Advanced.EnableGrabBakedTexture"
1691 userdata="skirt" />
1692 </menu_item_call>
1693 </menu>
1694
1695 <!-- CHARACTER TESTS -->
1696 <menu name="Character Tests" drop_shadow="true"
1697 opaque="true" tear_off="true">
1698 <menu_item_check name="Go Away/AFK When Idle"
1699 label="Go Away/AFK When Idle">
1700 <on_click function="Advanced.ToggleAllowIdleAFK"
1701 userdata="" />
1702 <on_check function="Advanced.CheckAllowIdleAFK"
1703 userdata="" />
1704 </menu_item_check>
1705 <menu_item_call name="Appearance To XML"
1706 label="Appearance To XML">
1707 <on_click function="Advanced.ToggleAppearanceToXML"
1708 userdata="" />
1709 </menu_item_call>
1710 <menu_item_call name="Toggle Character Geometry"
1711 enabled="false"
1712 label="Toggle Character Geometry">
1713 <on_click function="Advanced.ToggleCharacterGeometry"
1714 userdata="" />
1715 <on_enable function="EnableGodCustomerService"
1716 userdata="" />
1717 </menu_item_call>
1718 <menu_item_call name="Test Male" label="Test Male">
1719 <on_click function="Advanced.TestMale" userdata="" />
1720 </menu_item_call>
1721 <menu_item_call name="Test Female" label="Test Female">
1722 <on_click function="Advanced.TestFemale" userdata="" />
1723 </menu_item_call>
1724 <menu_item_call name="Toggle PG" label="Toggle PG">
1725 <on_click function="Advanced.TogglePG" userdata="" />
1726 </menu_item_call>
1727 <menu_item_check name="Allow Select Avatar"
1728 label="Allow Select Avatar">
1729 <on_click function="Advanced.ToggleAllowSelectAvatar"
1730 userdata="" />
1731 <on_check function="Advanced.CheckAllowSelectAvatar"
1732 userdata="" />
1733 </menu_item_check>
1734 </menu>
1735
1736 <menu_item_check name="Enable Lip Sync (Beta)"
1737 label="Enable Lip Sync (Beta)">
1738 <on_click function="ToggleControl"
1739 userdata="LipSyncEnabled" />
1740 <on_check control="LipSyncEnabled" />
1741 </menu_item_check>
1742 <menu_item_check name="Tap-Tap-Hold To Run"
1743 label="Tap-Tap-Hold To Run">
1744 <on_click function="Advanced.ToggleAllowTapTapHoldRun"
1745 userdata="" />
1746 <on_check function="Advanced.CheckAllowTapTapHoldRun"
1747 userdata="" />
1748 </menu_item_check>
1749 <menu_item_call name="Force Params to Default"
1750 label="Force Params to Default">
1751 <on_click function="Advanced.ForceParamsToDefault"
1752 userdata="" />
1753 </menu_item_call>
1754 <menu_item_call name="Reload Vertex Shader"
1755 label="Reload Vertex Shader">
1756 <on_click function="Advanced.ReloadVertexShader"
1757 userdata="" />
1758 </menu_item_call>
1759 <menu_item_check label="Animation Info"
1760 name="Animation Info">
1761 <on_click function="Advanced.ToggleAnimationInfo"
1762 userdata="" />
1763 <on_check function="Advanced.CheckAnimationInfo"
1764 userdata="" />
1765 </menu_item_check>
1766
1767 <!--
1768 *TODO: Make this a proper toggle item with the "X" indicator.
1769 1. Add a "Advanced.CheckSlowmotionAnimation" function in
1770 llviewermenu.cpp.
1771 2. Change this surrounding menu_item_call to a menu_item_check.
1772 3. Uncomment the "on_check" line below.
1773 -->
1774 <menu_item_call name="Slow Motion Animations"
1775 label="Slow Motion Animations">
1776 <on_click function="Advanced.ToggleSlowMotionAnimations"
1777 userdata="" />
1778 <!--
1779 <on_check function="Advanced.CheckSlowMotionAnimations"
1780 userdata="" />
1781 -->
1782 </menu_item_call>
1783
1784 <menu_item_check name="Show Look At"
1785 label="Show Look At">
1786 <on_click function="Advanced.ToggleShowLookAt"
1787 userdata="" />
1788 <on_check function="Advanced.CheckShowLookAt"
1789 userdata="" />
1790 </menu_item_check>
1791 <menu_item_check name="Show Point At"
1792 label="Show Point At">
1793 <on_click function="Advanced.ToggleShowPointAt"
1794 userdata="" />
1795 <on_check function="Advanced.CheckShowPointAt"
1796 userdata="" />
1797 </menu_item_check>
1798 <menu_item_check name="Debug Joint Updates"
1799 label="Debug Joint Updates">
1800 <on_click function="Advanced.ToggleDebugJointUpdates"
1801 userdata="" />
1802 <on_check function="Advanced.CheckDebugJointUpdates"
1803 userdata="" />
1804 </menu_item_check>
1805 <menu_item_check name="Disable LOD"
1806 label="Disable LOD">
1807 <on_click function="Advanced.ToggleDisableLOD"
1808 userdata="" />
1809 <on_check function="Advanced.CheckDisableLOD"
1810 userdata="" />
1811 </menu_item_check>
1812 <menu_item_check name="Debug Character Vis"
1813 label="Debug Character Vis">
1814 <on_click function="Advanced.ToggleDebugCharacterVis"
1815 userdata="" />
1816 <on_check function="Advanced.CheckDebugCharacterVis"
1817 userdata="" />
1818 </menu_item_check>
1819
1820 <!-- Disabled. See DEV-14477
1821 <menu_item_check name="Show Collision Plane"
1822 label="Show Collision Plane">
1823 <on_click function="Advanced.ToggleShowCollisionPlane"
1824 userdata="" />
1825 <on_check function="Advanced.CheckShowCollisionPlane"
1826 userdata="" />
1827 </menu_item_check>
1828 -->
1829
1830 <menu_item_check name="Show Collision Skeleton"
1831 label="Show Collision Skeleton">
1832 <on_click function="Advanced.ToggleShowCollisionSkeleton"
1833 userdata="" />
1834 <on_check function="Advanced.CheckShowCollisionSkeleton"
1835 userdata="" />
1836 </menu_item_check>
1837 <menu_item_check name="Display Agent Target"
1838 label="Display Agent Target">
1839 <on_click function="Advanced.ToggleDisplayAgentTarget"
1840 userdata="" />
1841 <on_check function="Advanced.CheckDisplayAgentTarget"
1842 userdata="" />
1843 </menu_item_check>
1844 <menu_item_check name="Debug Rotation"
1845 label="Debug Rotation">
1846 <on_click function="Advanced.ToggleDebugAvatarRotation"
1847 userdata="" />
1848 <on_check function="Advanced.CheckDebugAvatarRotation"
1849 userdata="" />
1850 </menu_item_check>
1851 <menu_item_call name="Dump Attachments"
1852 label="Dump Attachments">
1853 <on_click function="Advanced.DumpAttachments"
1854 userdata="" />
1855 </menu_item_call>
1856 <menu_item_call name="Rebake Textures"
1857 label="Rebake Textures"
1858 shortcut="control|alt|R">
1859 <on_click function="Advanced.RebakeTextures"
1860 userdata="" />
1861 </menu_item_call>
1862 </menu>
1863
1864
1865
1866 <!-- NETWORK -->
1867
1868 <menu name="Network" drop_shadow="true"
1869 opaque="true" tear_off="true">
1870 <menu_item_call name="Enable Message Log"
1871 label="Enable Message Log">
1872 <on_click function="Advanced.EnableMessageLog"
1873 userdata="" />
1874 </menu_item_call>
1875 <menu_item_call name="Disable Message Log"
1876 label="Disable Message Log">
1877 <on_click function="Advanced.DisableMessageLog"
1878 userdata="" />
1879 </menu_item_call>
1880 <menu_item_separator />
1881 <menu_item_check name="Velocity Interpolate Objects"
1882 label="Velocity Interpolate Objects">
1883 <on_click function="ToggleControl"
1884 userdata="VelocityInterpolate" />
1885 <on_check control="VelocityInterpolate" />
1886 </menu_item_check>
1887 <menu_item_check name="Ping Interpolate Object Positions"
1888 label="Ping Interpolate Object Positions">
1889 <on_click function="ToggleControl"
1890 userdata="PingInterpolate" />
1891 <on_check control="PingInterpolate" />
1892 </menu_item_check>
1893 <menu_item_separator />
1894 <menu_item_call name="Drop a Packet" label="Drop a Packet"
1895 shortcut="control|alt|L">
1896 <on_click function="Advanced.DropPacket"
1897 userdata="" />
1898 </menu_item_call>
1899 </menu>
1900
1901
1902
1903 <!-- RECORDER -->
1904
1905 <menu name="Recorder" drop_shadow="true"
1906 opaque="true" tear_off="true">
1907 <menu_item_check name="Full Session Logging"
1908 label="Full Session Logging">
1909 <on_click function="ToggleControl"
1910 userdata="StatsSessionTrackFrameStats" />
1911 <on_check control="StatsSessionTrackFrameStats" />
1912 </menu_item_check>
1913 <menu_item_call name="Start Logging" label="Start Logging">
1914 <on_click function="Advanced.FrameStatsLogging"
1915 userdata="start logging" />
1916 </menu_item_call>
1917 <menu_item_call name="Stop Logging" label="Stop Logging">
1918 <on_click function="Advanced.FrameStatsLogging"
1919 userdata="stop logging" />
1920 </menu_item_call>
1921 <menu_item_call name="Log 10 Seconds" label="Log 10 Seconds">
1922 <on_click function="Advanced.FrameStatsLogging"
1923 userdata="timed logging 10" />
1924 </menu_item_call>
1925 <menu_item_call name="Log 30 Seconds" label="Log 30 Seconds">
1926 <on_click function="Advanced.FrameStatsLogging"
1927 userdata="timed logging 30" />
1928 </menu_item_call>
1929 <menu_item_call name="Log 60 Seconds" label="Log 60 Seconds">
1930 <on_click function="Advanced.FrameStatsLogging"
1931 userdata="timed logging 60" />
1932 </menu_item_call>
1933
1934 <menu_item_separator />
1935
1936 <menu_item_call name="Start Playback" label="Start Playback">
1937 <on_click function="Advanced.AgentPilot"
1938 userdata="start playback" />
1939 </menu_item_call>
1940 <menu_item_call name="Stop Playback" label="Stop Playback">
1941 <on_click function="Advanced.AgentPilot"
1942 userdata="stop playback" />
1943 </menu_item_call>
1944 <menu_item_check name="Loop Playback" label="Loop Playback">
1945 <on_click function="Advanced.ToggleAgentPilotLoop"
1946 userdata="" />
1947 <on_check function="Advanced.CheckAgentPilotLoop"
1948 userdata="" />
1949 </menu_item_check>
1950 <menu_item_call name="Start Record" label="Start Record">
1951 <on_click function="Advanced.AgentPilot"
1952 userdata="start record" />
1953 </menu_item_call>
1954 <menu_item_call name="Stop Record" label="Stop Record">
1955 <on_click function="Advanced.AgentPilot"
1956 userdata="stop record" />
1957 </menu_item_call>
1958 </menu>
1959
1960
1961 <menu_item_separator />
1962
1963
1964 <menu_item_check name="Show Updates" label="Show Updates">
1965 <on_click function="Advanced.ToggleShowObjectUpdates"
1966 userdata="" />
1967 <on_check function="Advanced.CheckShowObjectUpdates"
1968 userdata="" />
1969 </menu_item_check>
1970
1971 <menu_item_separator />
1972
1973 <menu_item_call name="Compress Image..."
1974 label="Compress Image...">
1975 <on_click function="Advanced.CompressImage"
1976 userdata="" />
1977 </menu_item_call>
1978 <menu_item_check name="Limit Select Distance"
1979 label="Limit Select Distance">
1980 <on_click function="ToggleControl"
1981 userdata="LimitSelectDistance" />
1982 <on_check control="LimitSelectDistance" />
1983 </menu_item_check>
1984 <menu_item_check name="Disable Camera Constraints"
1985 label="Disable Camera Constraints">
1986 <on_click function="ToggleControl"
1987 userdata="DisableCameraConstraints" />
1988 <on_check control="DisableCameraConstraints" />
1989 </menu_item_check>
1990 <menu_item_check name="Mouse Smoothing"
1991 label="Mouse Smoothing">
1992 <on_click function="ToggleControl"
1993 userdata="MouseSmooth" />
1994 <on_check control="MouseSmooth" />
1995 </menu_item_check>
1996
1997 <menu_item_separator />
1998
1999 <menu_item_check name="Console Window"
2000 label="Console Window">
2001 <on_click function="ToggleControl"
2002 userdata="ShowConsoleWindow" />
2003 <on_check control="ShowConsoleWindow" />
2004 </menu_item_check>
2005 <menu_item_check name="Output Debug Minidump"
2006 label="Output Debug Minidump">
2007 <on_click function="ToggleControl"
2008 userdata="SaveMiniDump" />
2009 <on_check control="SaveMiniDump" />
2010 </menu_item_check>
2011 <menu_item_check name="Clothing..."
2012 label="Clothing...">
2013 <on_click function="Advanced.ToggleClothingFloater"
2014 userdata="" />
2015 </menu_item_check>
2016 <menu_item_call name="Debug Settings"
2017 label="Debug Settings">
2018 <on_click function="Advanced.ShowDebugSettings"
2019 userdata="" />
2020 </menu_item_call>
2021 <menu_item_check name="View Admin Options"
2022 label="View Admin Options"
2023 shortcut="control|alt|V">
2024 <on_click function="Advanced.ToggleViewAdminOptions"
2025 userdata="" />
2026 <on_check function="Advanced.CheckViewAdminOptions"
2027 userdata="" />
2028 </menu_item_check>
2029 <menu_item_call name="Request Admin Status"
2030 label="Request Admin Status"
2031 shortcut="control|alt|G">
2032 <on_click function="Advanced.RequestAdminStatus"
2033 userdata="" />
2034 </menu_item_call>
2035 <menu_item_call name="Leave Admin Status"
2036 label="Leave Admin Status"
2037 shortcut="control|alt|shift|G">
2038 <on_click function="Advanced.LeaveAdminStatus"
2039 userdata="" />
2040 </menu_item_call>
2041
2042 </menu>
2043
863</menu_bar> 2044</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..997a5a6 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,10 @@
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 label="Flycam" label_selected="Flycam" left="229" name="Flycam" scale_image="true"
31 tool_tip="Your camera is under joystick control, click here to release it."
32 width="102" />
33 <button bottom="1" follows="left|bottom" font="SansSerif" halign="center" height="20"
30 label="Mouselook" label_selected="Mouselook" left="343" name="Mouselook" 34 label="Mouselook" label_selected="Mouselook" left="343" name="Mouselook"
31 scale_image="true" 35 scale_image="true"
32 tool_tip="Use mouse to steer your view. If you have a gun, clicking will shoot." 36 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 429e564..3d56c7d 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):