diff options
Diffstat (limited to '')
114 files changed, 3964 insertions, 1020 deletions
diff --git a/linden/doc/contributions.txt b/linden/doc/contributions.txt index a1c8624..2acb043 100644 --- a/linden/doc/contributions.txt +++ b/linden/doc/contributions.txt | |||
@@ -21,6 +21,7 @@ Aimee Trescothick | |||
21 | VWR-8341 | 21 | VWR-8341 |
22 | VWR-8430 | 22 | VWR-8430 |
23 | VWR-9255 | 23 | VWR-9255 |
24 | VWR-12748 | ||
24 | Alejandro Rosenthal | 25 | Alejandro Rosenthal |
25 | VWR-1184 | 26 | VWR-1184 |
26 | Alissa Sabre | 27 | Alissa Sabre |
diff --git a/linden/indra/cmake/Python.cmake b/linden/indra/cmake/Python.cmake index 4f86d32..0901c1b 100644 --- a/linden/indra/cmake/Python.cmake +++ b/linden/indra/cmake/Python.cmake | |||
@@ -13,6 +13,10 @@ if (WINDOWS) | |||
13 | [HKEY_LOCAL_MACHINE\\SOFTWARE\\Python\\PythonCore\\2.5\\InstallPath] | 13 | [HKEY_LOCAL_MACHINE\\SOFTWARE\\Python\\PythonCore\\2.5\\InstallPath] |
14 | [HKEY_LOCAL_MACHINE\\SOFTWARE\\Python\\PythonCore\\2.4\\InstallPath] | 14 | [HKEY_LOCAL_MACHINE\\SOFTWARE\\Python\\PythonCore\\2.4\\InstallPath] |
15 | [HKEY_LOCAL_MACHINE\\SOFTWARE\\Python\\PythonCore\\2.3\\InstallPath] | 15 | [HKEY_LOCAL_MACHINE\\SOFTWARE\\Python\\PythonCore\\2.3\\InstallPath] |
16 | [HKEY_CURRENT_USER\\SOFTWARE\\Python\\PythonCore\\2.6\\InstallPath] | ||
17 | [HKEY_CURRENT_USER\\SOFTWARE\\Python\\PythonCore\\2.5\\InstallPath] | ||
18 | [HKEY_CURRENT_USER\\SOFTWARE\\Python\\PythonCore\\2.4\\InstallPath] | ||
19 | [HKEY_CURRENT_USER\\SOFTWARE\\Python\\PythonCore\\2.3\\InstallPath] | ||
16 | ) | 20 | ) |
17 | elseif (EXISTS /etc/debian_version) | 21 | elseif (EXISTS /etc/debian_version) |
18 | # On Debian and Ubuntu, avoid Python 2.4 if possible. | 22 | # On Debian and Ubuntu, avoid Python 2.4 if possible. |
diff --git a/linden/indra/develop.py b/linden/indra/develop.py index bd8f080..207a48b 100755 --- a/linden/indra/develop.py +++ b/linden/indra/develop.py | |||
@@ -469,8 +469,15 @@ class WindowsSetup(PlatformSetup): | |||
469 | print 'Building with ', self.gens[version]['gen'] | 469 | print 'Building with ', self.gens[version]['gen'] |
470 | break | 470 | break |
471 | else: | 471 | else: |
472 | print >> sys.stderr, 'Cannot find a Visual Studio installation!' | 472 | print >> sys.stderr, 'Cannot find a Visual Studio installation, testing for express editions' |
473 | eys.exit(1) | 473 | for version in 'vc80 vc90 vc71'.split(): |
474 | if self.find_visual_studio_express(version): | ||
475 | self._generator = version | ||
476 | print 'Building with ', self.gens[version]['gen'] , "Express edition" | ||
477 | break | ||
478 | else: | ||
479 | print >> sys.stderr, 'Cannot find any Visual Studio installation' | ||
480 | eys.exit(1) | ||
474 | return self._generator | 481 | return self._generator |
475 | 482 | ||
476 | def _set_generator(self, gen): | 483 | def _set_generator(self, gen): |
@@ -523,6 +530,28 @@ class WindowsSetup(PlatformSetup): | |||
523 | print >> sys.stderr, "Didn't find ", self.gens[gen]['gen'] | 530 | print >> sys.stderr, "Didn't find ", self.gens[gen]['gen'] |
524 | return '' | 531 | return '' |
525 | 532 | ||
533 | def find_visual_studio_express(self, gen=None): | ||
534 | if gen is None: | ||
535 | gen = self._generator | ||
536 | gen = gen.lower() | ||
537 | try: | ||
538 | import _winreg | ||
539 | key_str = (r'SOFTWARE\Microsoft\VCEXpress\%s\Setup\VC' % | ||
540 | self.gens[gen]['ver']) | ||
541 | value_str = (r'ProductDir') | ||
542 | print ('Reading VS environment from HKEY_LOCAL_MACHINE\%s\%s' % | ||
543 | (key_str, value_str)) | ||
544 | print key_str | ||
545 | |||
546 | reg = _winreg.ConnectRegistry(None, _winreg.HKEY_LOCAL_MACHINE) | ||
547 | key = _winreg.OpenKey(reg, key_str) | ||
548 | value = _winreg.QueryValueEx(key, value_str)[0]+"IDE" | ||
549 | print 'Found: %s' % value | ||
550 | return value | ||
551 | except WindowsError, err: | ||
552 | print >> sys.stderr, "Didn't find ", self.gens[gen]['gen'] | ||
553 | return '' | ||
554 | |||
526 | def get_build_cmd(self): | 555 | def get_build_cmd(self): |
527 | if self.incredibuild: | 556 | if self.incredibuild: |
528 | config = self.build_type | 557 | config = self.build_type |
@@ -530,10 +559,23 @@ class WindowsSetup(PlatformSetup): | |||
530 | config = '\"%s|Win32\"' % config | 559 | config = '\"%s|Win32\"' % config |
531 | 560 | ||
532 | return "buildconsole %s.sln /build %s" % (self.project_name, config) | 561 | return "buildconsole %s.sln /build %s" % (self.project_name, config) |
562 | |||
563 | environment = self.find_visual_studio() | ||
564 | if environment == '': | ||
565 | environment = self.find_visual_studio_express() | ||
566 | if environment == '': | ||
567 | print >> sys.stderr, "Something went very wrong during build stage, could not find a Visual Studio?" | ||
568 | else: | ||
569 | print >> sys.stderr, "\nSolution generation complete, as you are using an express edition the final\n stages will need to be completed by hand" | ||
570 | build_dirs=self.build_dirs(); | ||
571 | print >> sys.stderr, "Solution can now be found in:", build_dirs[0] | ||
572 | print >> sys.stderr, "Set %s as startup project" % self.project_name | ||
573 | print >> sys.stderr, "Set build target is Release or RelWithDbgInfo" | ||
574 | exit(0) | ||
533 | 575 | ||
534 | # devenv.com is CLI friendly, devenv.exe... not so much. | 576 | # devenv.com is CLI friendly, devenv.exe... not so much. |
535 | return ('"%sdevenv.com" %s.sln /build %s' % | 577 | return ('"%sdevenv.com" %s.sln /build %s' % |
536 | (self.find_visual_studio(), self.project_name, self.build_type)) | 578 | (environment, self.project_name, self.build_type)) |
537 | 579 | ||
538 | # this override of run exists because the PlatformSetup version | 580 | # this override of run exists because the PlatformSetup version |
539 | # uses Unix/Mac only calls. Freakin' os module! | 581 | # uses Unix/Mac only calls. Freakin' os module! |
diff --git a/linden/indra/llaudio/audioengine.h b/linden/indra/llaudio/audioengine.h index d289ba5..579f58f 100644 --- a/linden/indra/llaudio/audioengine.h +++ b/linden/indra/llaudio/audioengine.h | |||
@@ -182,6 +182,8 @@ public: | |||
182 | static void assetCallback(LLVFS *vfs, const LLUUID &uuid, LLAssetType::EType type, void *user_data, S32 result_code, LLExtStat ext_status); | 182 | static void assetCallback(LLVFS *vfs, const LLUUID &uuid, LLAssetType::EType type, void *user_data, S32 result_code, LLExtStat ext_status); |
183 | 183 | ||
184 | friend class LLPipeline; // For debugging | 184 | friend class LLPipeline; // For debugging |
185 | |||
186 | LLMediaBase * getStreamMedia() { return mInternetStreamMedia; } | ||
185 | public: | 187 | public: |
186 | F32 mMaxWindGain; // Hack. Public to set before fade in? | 188 | F32 mMaxWindGain; // Hack. Public to set before fade in? |
187 | 189 | ||
diff --git a/linden/indra/llcommon/CMakeLists.txt b/linden/indra/llcommon/CMakeLists.txt index 4001e1f..3f14be6 100644 --- a/linden/indra/llcommon/CMakeLists.txt +++ b/linden/indra/llcommon/CMakeLists.txt | |||
@@ -20,6 +20,7 @@ set(llcommon_SOURCE_FILES | |||
20 | llcommon.cpp | 20 | llcommon.cpp |
21 | llcrc.cpp | 21 | llcrc.cpp |
22 | llcriticaldamp.cpp | 22 | llcriticaldamp.cpp |
23 | llcursortypes.cpp | ||
23 | lldate.cpp | 24 | lldate.cpp |
24 | llerror.cpp | 25 | llerror.cpp |
25 | llerrorthread.cpp | 26 | llerrorthread.cpp |
@@ -90,6 +91,7 @@ set(llcommon_HEADER_FILES | |||
90 | llcommon.h | 91 | llcommon.h |
91 | llcrc.h | 92 | llcrc.h |
92 | llcriticaldamp.h | 93 | llcriticaldamp.h |
94 | llcursortypes.h | ||
93 | lldarray.h | 95 | lldarray.h |
94 | lldarrayptr.h | 96 | lldarrayptr.h |
95 | lldate.h | 97 | lldate.h |
diff --git a/linden/indra/llcommon/llchat.h b/linden/indra/llcommon/llchat.h index aa4469c..6c75a25 100644 --- a/linden/indra/llcommon/llchat.h +++ b/linden/indra/llcommon/llchat.h | |||
@@ -81,9 +81,10 @@ public: | |||
81 | mAudible(CHAT_AUDIBLE_FULLY), | 81 | mAudible(CHAT_AUDIBLE_FULLY), |
82 | mMuted(FALSE), | 82 | mMuted(FALSE), |
83 | mTime(0.0), | 83 | mTime(0.0), |
84 | mPosAgent() | 84 | mPosAgent(), |
85 | mURL() | ||
85 | { } | 86 | { } |
86 | 87 | ||
87 | std::string mText; // UTF-8 line of text | 88 | std::string mText; // UTF-8 line of text |
88 | std::string mFromName; // agent or object name | 89 | std::string mFromName; // agent or object name |
89 | LLUUID mFromID; // agent id or object id | 90 | LLUUID mFromID; // agent id or object id |
@@ -97,6 +98,7 @@ public: | |||
97 | BOOL mMuted; // pass muted chat to maintain list of chatters | 98 | BOOL mMuted; // pass muted chat to maintain list of chatters |
98 | F64 mTime; // viewer only, seconds from viewer start | 99 | F64 mTime; // viewer only, seconds from viewer start |
99 | LLVector3 mPosAgent; | 100 | LLVector3 mPosAgent; |
101 | std::string mURL; | ||
100 | }; | 102 | }; |
101 | 103 | ||
102 | #endif | 104 | #endif |
diff --git a/linden/indra/llcommon/llcursortypes.cpp b/linden/indra/llcommon/llcursortypes.cpp new file mode 100644 index 0000000..858414b --- /dev/null +++ b/linden/indra/llcommon/llcursortypes.cpp | |||
@@ -0,0 +1,89 @@ | |||
1 | /** | ||
2 | * @file llcursortypes.cpp | ||
3 | * @brief Cursor types and lookup of types from a string | ||
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 | #include "llcursortypes.h" | ||
33 | |||
34 | ECursorType getCursorFromString(const std::string& cursor_string) | ||
35 | { | ||
36 | static std::map<std::string,U32> cursor_string_table; | ||
37 | if (cursor_string_table.empty()) | ||
38 | { | ||
39 | cursor_string_table["UI_CURSOR_ARROW"] = UI_CURSOR_ARROW; | ||
40 | cursor_string_table["UI_CURSOR_WAIT"] = UI_CURSOR_WAIT; | ||
41 | cursor_string_table["UI_CURSOR_HAND"] = UI_CURSOR_HAND; | ||
42 | cursor_string_table["UI_CURSOR_IBEAM"] = UI_CURSOR_IBEAM; | ||
43 | cursor_string_table["UI_CURSOR_CROSS"] = UI_CURSOR_CROSS; | ||
44 | cursor_string_table["UI_CURSOR_SIZENWSE"] = UI_CURSOR_SIZENWSE; | ||
45 | cursor_string_table["UI_CURSOR_SIZENESW"] = UI_CURSOR_SIZENESW; | ||
46 | cursor_string_table["UI_CURSOR_SIZEWE"] = UI_CURSOR_SIZEWE; | ||
47 | cursor_string_table["UI_CURSOR_SIZENS"] = UI_CURSOR_SIZENS; | ||
48 | cursor_string_table["UI_CURSOR_NO"] = UI_CURSOR_NO; | ||
49 | cursor_string_table["UI_CURSOR_WORKING"] = UI_CURSOR_WORKING; | ||
50 | cursor_string_table["UI_CURSOR_TOOLGRAB"] = UI_CURSOR_TOOLGRAB; | ||
51 | cursor_string_table["UI_CURSOR_TOOLLAND"] = UI_CURSOR_TOOLLAND; | ||
52 | cursor_string_table["UI_CURSOR_TOOLFOCUS"] = UI_CURSOR_TOOLFOCUS; | ||
53 | cursor_string_table["UI_CURSOR_TOOLCREATE"] = UI_CURSOR_TOOLCREATE; | ||
54 | cursor_string_table["UI_CURSOR_ARROWDRAG"] = UI_CURSOR_ARROWDRAG; | ||
55 | cursor_string_table["UI_CURSOR_ARROWCOPY"] = UI_CURSOR_ARROWCOPY; | ||
56 | cursor_string_table["UI_CURSOR_ARROWDRAGMULTI"] = UI_CURSOR_ARROWDRAGMULTI; | ||
57 | cursor_string_table["UI_CURSOR_ARROWCOPYMULTI"] = UI_CURSOR_ARROWCOPYMULTI; | ||
58 | cursor_string_table["UI_CURSOR_NOLOCKED"] = UI_CURSOR_NOLOCKED; | ||
59 | cursor_string_table["UI_CURSOR_ARROWLOCKED"] = UI_CURSOR_ARROWLOCKED; | ||
60 | cursor_string_table["UI_CURSOR_GRABLOCKED"] = UI_CURSOR_GRABLOCKED; | ||
61 | cursor_string_table["UI_CURSOR_TOOLTRANSLATE"] = UI_CURSOR_TOOLTRANSLATE; | ||
62 | cursor_string_table["UI_CURSOR_TOOLROTATE"] = UI_CURSOR_TOOLROTATE; | ||
63 | cursor_string_table["UI_CURSOR_TOOLSCALE"] = UI_CURSOR_TOOLSCALE; | ||
64 | cursor_string_table["UI_CURSOR_TOOLCAMERA"] = UI_CURSOR_TOOLCAMERA; | ||
65 | cursor_string_table["UI_CURSOR_TOOLPAN"] = UI_CURSOR_TOOLPAN; | ||
66 | cursor_string_table["UI_CURSOR_TOOLZOOMIN"] = UI_CURSOR_TOOLZOOMIN; | ||
67 | cursor_string_table["UI_CURSOR_TOOLPICKOBJECT3"] = UI_CURSOR_TOOLPICKOBJECT3; | ||
68 | cursor_string_table["UI_CURSOR_TOOLSIT"] = UI_CURSOR_TOOLSIT; | ||
69 | cursor_string_table["UI_CURSOR_TOOLBUY"] = UI_CURSOR_TOOLBUY; | ||
70 | cursor_string_table["UI_CURSOR_TOOLPAY"] = UI_CURSOR_TOOLPAY; | ||
71 | cursor_string_table["UI_CURSOR_TOOLOPEN"] = UI_CURSOR_TOOLOPEN; | ||
72 | cursor_string_table["UI_CURSOR_TOOLPLAY"] = UI_CURSOR_TOOLPLAY; | ||
73 | cursor_string_table["UI_CURSOR_TOOLPAUSE"] = UI_CURSOR_TOOLPAUSE; | ||
74 | cursor_string_table["UI_CURSOR_TOOLMEDIAOPEN"] = UI_CURSOR_TOOLMEDIAOPEN; | ||
75 | cursor_string_table["UI_CURSOR_PIPETTE"] = UI_CURSOR_PIPETTE; | ||
76 | } | ||
77 | |||
78 | std::map<std::string,U32>::const_iterator iter = cursor_string_table.find(cursor_string); | ||
79 | |||
80 | if (iter != cursor_string_table.end()) | ||
81 | { | ||
82 | return (ECursorType)iter->second; | ||
83 | } | ||
84 | |||
85 | return UI_CURSOR_ARROW; | ||
86 | } | ||
87 | |||
88 | |||
89 | |||
diff --git a/linden/indra/llcommon/llcursortypes.h b/linden/indra/llcommon/llcursortypes.h new file mode 100644 index 0000000..9be064f --- /dev/null +++ b/linden/indra/llcommon/llcursortypes.h | |||
@@ -0,0 +1,81 @@ | |||
1 | /** | ||
2 | * @file llcursortypes.h | ||
3 | * @brief Cursor types | ||
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 | #ifndef LL_LLCURSORTYPES_H | ||
33 | #define LL_LLCURSORTYPES_H | ||
34 | |||
35 | #include "linden_common.h" | ||
36 | |||
37 | // If you add types here, add them in LLCursor::getCursorFromString | ||
38 | enum ECursorType { | ||
39 | UI_CURSOR_ARROW, | ||
40 | UI_CURSOR_WAIT, | ||
41 | UI_CURSOR_HAND, | ||
42 | UI_CURSOR_IBEAM, | ||
43 | UI_CURSOR_CROSS, | ||
44 | UI_CURSOR_SIZENWSE, | ||
45 | UI_CURSOR_SIZENESW, | ||
46 | UI_CURSOR_SIZEWE, | ||
47 | UI_CURSOR_SIZENS, | ||
48 | UI_CURSOR_NO, | ||
49 | UI_CURSOR_WORKING, | ||
50 | UI_CURSOR_TOOLGRAB, | ||
51 | UI_CURSOR_TOOLLAND, | ||
52 | UI_CURSOR_TOOLFOCUS, | ||
53 | UI_CURSOR_TOOLCREATE, | ||
54 | UI_CURSOR_ARROWDRAG, | ||
55 | UI_CURSOR_ARROWCOPY, // drag with copy | ||
56 | UI_CURSOR_ARROWDRAGMULTI, | ||
57 | UI_CURSOR_ARROWCOPYMULTI, // drag with copy | ||
58 | UI_CURSOR_NOLOCKED, | ||
59 | UI_CURSOR_ARROWLOCKED, | ||
60 | UI_CURSOR_GRABLOCKED, | ||
61 | UI_CURSOR_TOOLTRANSLATE, | ||
62 | UI_CURSOR_TOOLROTATE, | ||
63 | UI_CURSOR_TOOLSCALE, | ||
64 | UI_CURSOR_TOOLCAMERA, | ||
65 | UI_CURSOR_TOOLPAN, | ||
66 | UI_CURSOR_TOOLZOOMIN, | ||
67 | UI_CURSOR_TOOLPICKOBJECT3, | ||
68 | UI_CURSOR_TOOLSIT, | ||
69 | UI_CURSOR_TOOLBUY, | ||
70 | UI_CURSOR_TOOLPAY, | ||
71 | UI_CURSOR_TOOLOPEN, | ||
72 | UI_CURSOR_TOOLPLAY, | ||
73 | UI_CURSOR_TOOLPAUSE, | ||
74 | UI_CURSOR_TOOLMEDIAOPEN, | ||
75 | UI_CURSOR_PIPETTE, | ||
76 | UI_CURSOR_COUNT // Number of elements in this enum (NOT a cursor) | ||
77 | }; | ||
78 | |||
79 | ECursorType getCursorFromString(const std::string& cursor_string); | ||
80 | |||
81 | #endif // LL_LLCURSORTYPES_H | ||
diff --git a/linden/indra/llmath/xform.h b/linden/indra/llmath/xform.h index 6f880cb..b41219c 100644 --- a/linden/indra/llmath/xform.h +++ b/linden/indra/llmath/xform.h | |||
@@ -37,7 +37,7 @@ | |||
37 | 37 | ||
38 | const F32 MAX_OBJECT_Z = 4096.f; // should match REGION_HEIGHT_METERS, Pre-havok4: 768.f | 38 | const F32 MAX_OBJECT_Z = 4096.f; // should match REGION_HEIGHT_METERS, Pre-havok4: 768.f |
39 | const F32 MIN_OBJECT_Z = -256.f; | 39 | const F32 MIN_OBJECT_Z = -256.f; |
40 | const F32 DEFAULT_MAX_PRIM_SCALE = 10.f; | 40 | //const F32 DEFAULT_MAX_PRIM_SCALE = 10.f; set in llmanipscale.cpp now |
41 | const F32 MIN_PRIM_SCALE = 0.01f; | 41 | const F32 MIN_PRIM_SCALE = 0.01f; |
42 | const F32 MAX_PRIM_SCALE = 65536.f; // something very high but not near FLT_MAX | 42 | const F32 MAX_PRIM_SCALE = 65536.f; // something very high but not near FLT_MAX |
43 | 43 | ||
diff --git a/linden/indra/llmedia/llmediaimplgstreamer.cpp b/linden/indra/llmedia/llmediaimplgstreamer.cpp index d1bab29..a9e0004 100644 --- a/linden/indra/llmedia/llmediaimplgstreamer.cpp +++ b/linden/indra/llmedia/llmediaimplgstreamer.cpp | |||
@@ -89,6 +89,7 @@ LLMediaImplGStreamer () : | |||
89 | mPump ( NULL ), | 89 | mPump ( NULL ), |
90 | mPlaybin ( NULL ), | 90 | mPlaybin ( NULL ), |
91 | mVideoSink ( NULL ), | 91 | mVideoSink ( NULL ), |
92 | mLastTitle ( "" ), | ||
92 | mState( GST_STATE_NULL ), | 93 | mState( GST_STATE_NULL ), |
93 | mPlayThread ( NULL ) | 94 | mPlayThread ( NULL ) |
94 | { | 95 | { |
@@ -470,6 +471,8 @@ gboolean LLMediaImplGStreamer::bus_callback(GstBus *bus, GstMessage *message, gp | |||
470 | case GST_STATE_PAUSED: | 471 | case GST_STATE_PAUSED: |
471 | break; | 472 | break; |
472 | case GST_STATE_PLAYING: | 473 | case GST_STATE_PLAYING: |
474 | //impl->mLastTitle = ""; | ||
475 | |||
473 | LLMediaEvent event( impl, 100 ); | 476 | LLMediaEvent event( impl, 100 ); |
474 | impl->getEventEmitter().update( &LLMediaObserver::onUpdateProgress, event ); | 477 | impl->getEventEmitter().update( &LLMediaObserver::onUpdateProgress, event ); |
475 | // emit an event to say that a media source was loaded | 478 | // emit an event to say that a media source was loaded |
@@ -521,18 +524,28 @@ gboolean LLMediaImplGStreamer::bus_callback(GstBus *bus, GstMessage *message, gp | |||
521 | } | 524 | } |
522 | case GST_MESSAGE_TAG: | 525 | case GST_MESSAGE_TAG: |
523 | { | 526 | { |
524 | GstTagList *tag_list; | 527 | GstTagList *new_tags; |
525 | gchar *title; | 528 | |
526 | gchar *artist; | 529 | gst_message_parse_tag( message, &new_tags ); |
527 | gst_message_parse_tag(message, &tag_list); | 530 | |
528 | gboolean hazTitle = gst_tag_list_get_string(tag_list, | 531 | gchar *title; |
529 | GST_TAG_TITLE, &title); | 532 | |
530 | gboolean hazArtist = gst_tag_list_get_string(tag_list, | 533 | if ( gst_tag_list_get_string(new_tags, GST_TAG_TITLE, &title) ) |
531 | GST_TAG_ARTIST, &artist); | 534 | { |
532 | if(hazTitle) | 535 | LL_INFOS("MediaInfo") << "Title: " << title << LL_ENDL; |
533 | LL_INFOS("MediaInfo") << "Title: " << title << LL_ENDL; | 536 | std::string newtitle(title); |
534 | if(hazArtist) | 537 | gst_tag_list_free(new_tags); |
535 | LL_INFOS("MediaInfo") << "Artist: " << artist << LL_ENDL; | 538 | |
539 | if ( newtitle != impl->mLastTitle && newtitle != "" ) | ||
540 | { | ||
541 | impl->mLastTitle = newtitle; | ||
542 | LLMediaEvent event( impl, impl->mLastTitle ); | ||
543 | impl->getEventEmitter().update( &LLMediaObserver::onMediaTitleChange, event ); | ||
544 | } | ||
545 | |||
546 | g_free(title); | ||
547 | } | ||
548 | |||
536 | break; | 549 | break; |
537 | } | 550 | } |
538 | case GST_MESSAGE_EOS: | 551 | case GST_MESSAGE_EOS: |
@@ -551,10 +564,10 @@ gboolean LLMediaImplGStreamer::bus_callback(GstBus *bus, GstMessage *message, gp | |||
551 | impl->addCommand(LLMediaBase::COMMAND_STOP); | 564 | impl->addCommand(LLMediaBase::COMMAND_STOP); |
552 | } | 565 | } |
553 | break; | 566 | break; |
567 | } | ||
554 | default: | 568 | default: |
555 | /* unhandled message */ | 569 | /* unhandled message */ |
556 | break; | 570 | break; |
557 | } | ||
558 | } | 571 | } |
559 | /* we want to be notified again the next time there is a message | 572 | /* we want to be notified again the next time there is a message |
560 | * on the bus, so return true (false means we want to stop watching | 573 | * on the bus, so return true (false means we want to stop watching |
diff --git a/linden/indra/llmedia/llmediaimplgstreamer.h b/linden/indra/llmedia/llmediaimplgstreamer.h index baefdaf..51a8c37 100644 --- a/linden/indra/llmedia/llmediaimplgstreamer.h +++ b/linden/indra/llmedia/llmediaimplgstreamer.h | |||
@@ -127,6 +127,7 @@ class LLMediaImplGStreamer: | |||
127 | GMainLoop *mPump; // event pump for this media | 127 | GMainLoop *mPump; // event pump for this media |
128 | GstElement *mPlaybin; | 128 | GstElement *mPlaybin; |
129 | GstSLVideo *mVideoSink; | 129 | GstSLVideo *mVideoSink; |
130 | std::string mLastTitle; | ||
130 | GstState mState; | 131 | GstState mState; |
131 | GstState getState() const { return mState; } | 132 | GstState getState() const { return mState; } |
132 | 133 | ||
diff --git a/linden/indra/llmedia/llmediaobserver.h b/linden/indra/llmedia/llmediaobserver.h index e6da4f6..97fed5f 100644 --- a/linden/indra/llmedia/llmediaobserver.h +++ b/linden/indra/llmedia/llmediaobserver.h | |||
@@ -102,6 +102,7 @@ class LLMediaObserver | |||
102 | virtual void onMediaSizeChange( const EventType& event_in ) { } | 102 | virtual void onMediaSizeChange( const EventType& event_in ) { } |
103 | virtual void onMediaContentsChange( const EventType& event_in ) { } | 103 | virtual void onMediaContentsChange( const EventType& event_in ) { } |
104 | virtual void onMediaStatusTextChange( const EventType& event_in ) { } | 104 | virtual void onMediaStatusTextChange( const EventType& event_in ) { } |
105 | virtual void onMediaTitleChange( const EventType &event_in ) { } | ||
105 | virtual void onNavigateBegin( const EventType& event_in ) { } | 106 | virtual void onNavigateBegin( const EventType& event_in ) { } |
106 | virtual void onNavigateComplete( const EventType& event_in ) { } | 107 | virtual void onNavigateComplete( const EventType& event_in ) { } |
107 | virtual void onUpdateProgress( const EventType& event_in ) { } | 108 | virtual void onUpdateProgress( const EventType& event_in ) { } |
diff --git a/linden/indra/llui/llpanel.cpp b/linden/indra/llui/llpanel.cpp index d37517f..05103dc 100644 --- a/linden/indra/llui/llpanel.cpp +++ b/linden/indra/llui/llpanel.cpp | |||
@@ -982,12 +982,12 @@ void LLPanel::childSetAction(const std::string& id, void(*function)(void*), void | |||
982 | } | 982 | } |
983 | } | 983 | } |
984 | 984 | ||
985 | void LLPanel::childSetActionTextbox(const std::string& id, void(*function)(void*)) | 985 | void LLPanel::childSetActionTextbox(const std::string& id, void(*function)(void*), void* value) |
986 | { | 986 | { |
987 | LLTextBox* textbox = getChild<LLTextBox>(id); | 987 | LLTextBox* textbox = getChild<LLTextBox>(id); |
988 | if (textbox) | 988 | if (textbox) |
989 | { | 989 | { |
990 | textbox->setClickedCallback(function); | 990 | textbox->setClickedCallback(function, value); |
991 | } | 991 | } |
992 | } | 992 | } |
993 | 993 | ||
diff --git a/linden/indra/llui/llpanel.h b/linden/indra/llui/llpanel.h index 46022e5..8dea9b1 100644 --- a/linden/indra/llui/llpanel.h +++ b/linden/indra/llui/llpanel.h | |||
@@ -220,7 +220,7 @@ public: | |||
220 | 220 | ||
221 | // LLButton | 221 | // LLButton |
222 | void childSetAction(const std::string& id, void(*function)(void*), void* value); | 222 | void childSetAction(const std::string& id, void(*function)(void*), void* value); |
223 | void childSetActionTextbox(const std::string& id, void(*function)(void*)); | 223 | void childSetActionTextbox(const std::string& id, void(*function)(void*), void* value = NULL); |
224 | void childSetControlName(const std::string& id, const std::string& control_name); | 224 | void childSetControlName(const std::string& id, const std::string& control_name); |
225 | 225 | ||
226 | // Error reporting | 226 | // Error reporting |
diff --git a/linden/indra/llui/lltextbox.cpp b/linden/indra/llui/lltextbox.cpp index f43b7d2..e45f97b 100644 --- a/linden/indra/llui/lltextbox.cpp +++ b/linden/indra/llui/lltextbox.cpp | |||
@@ -33,6 +33,7 @@ | |||
33 | #include "lltextbox.h" | 33 | #include "lltextbox.h" |
34 | #include "lluictrlfactory.h" | 34 | #include "lluictrlfactory.h" |
35 | #include "llfocusmgr.h" | 35 | #include "llfocusmgr.h" |
36 | #include "llwindow.h" | ||
36 | 37 | ||
37 | static LLRegisterWidget<LLTextBox> r("text"); | 38 | static LLRegisterWidget<LLTextBox> r("text"); |
38 | 39 | ||
@@ -193,12 +194,14 @@ BOOL LLTextBox::handleMouseUp(S32 x, S32 y, MASK mask) | |||
193 | 194 | ||
194 | BOOL LLTextBox::handleHover(S32 x, S32 y, MASK mask) | 195 | BOOL LLTextBox::handleHover(S32 x, S32 y, MASK mask) |
195 | { | 196 | { |
197 | BOOL handled = LLView::handleHover(x,y,mask); | ||
196 | if(mHoverActive) | 198 | if(mHoverActive) |
197 | { | 199 | { |
198 | mHasHover = TRUE; // This should be set every frame during a hover. | 200 | mHasHover = TRUE; // This should be set every frame during a hover. |
199 | return TRUE; | 201 | getWindow()->setCursor(UI_CURSOR_ARROW); |
200 | } | 202 | } |
201 | return LLView::handleHover(x,y,mask); | 203 | |
204 | return (handled || mHasHover); | ||
202 | } | 205 | } |
203 | 206 | ||
204 | void LLTextBox::setText(const LLStringExplicit& text) | 207 | void LLTextBox::setText(const LLStringExplicit& text) |
diff --git a/linden/indra/llui/lltextbox.h b/linden/indra/llui/lltextbox.h index 83e4a9b..aac5344 100644 --- a/linden/indra/llui/lltextbox.h +++ b/linden/indra/llui/lltextbox.h | |||
@@ -88,8 +88,7 @@ public: | |||
88 | void setVPad(S32 pixels) { mVPad = pixels; } | 88 | void setVPad(S32 pixels) { mVPad = pixels; } |
89 | void setRightAlign() { mHAlign = LLFontGL::RIGHT; } | 89 | void setRightAlign() { mHAlign = LLFontGL::RIGHT; } |
90 | void setHAlign( LLFontGL::HAlign align ) { mHAlign = align; } | 90 | void setHAlign( LLFontGL::HAlign align ) { mHAlign = align; } |
91 | void setClickedCallback( void (*cb)(void *data) ){ mClickedCallback = cb; } // mouse down and up within button | 91 | void setClickedCallback( void (*cb)(void *data), void* data = NULL ){ mClickedCallback = cb; mCallbackUserData = data; } // mouse down and up within button |
92 | void setCallbackUserData( void* data ) { mCallbackUserData = data; } | ||
93 | 92 | ||
94 | const LLFontGL* getFont() const { return mFontGL; } | 93 | const LLFontGL* getFont() const { return mFontGL; } |
95 | 94 | ||
diff --git a/linden/indra/llui/lltexteditor.cpp b/linden/indra/llui/lltexteditor.cpp index 95cce60..8fa253a 100644 --- a/linden/indra/llui/lltexteditor.cpp +++ b/linden/indra/llui/lltexteditor.cpp | |||
@@ -3605,13 +3605,13 @@ void LLTextEditor::appendColoredText(const std::string &new_text, | |||
3605 | style->setVisible(true); | 3605 | style->setVisible(true); |
3606 | style->setColor(color); | 3606 | style->setColor(color); |
3607 | style->setFontName(font_name); | 3607 | style->setFontName(font_name); |
3608 | appendStyledText(new_text, allow_undo, prepend_newline, &style); | 3608 | appendStyledText(new_text, allow_undo, prepend_newline, style); |
3609 | } | 3609 | } |
3610 | 3610 | ||
3611 | void LLTextEditor::appendStyledText(const std::string &new_text, | 3611 | void LLTextEditor::appendStyledText(const std::string &new_text, |
3612 | bool allow_undo, | 3612 | bool allow_undo, |
3613 | bool prepend_newline, | 3613 | bool prepend_newline, |
3614 | const LLStyleSP *stylep) | 3614 | const LLStyleSP stylep) |
3615 | { | 3615 | { |
3616 | if(mParseHTML) | 3616 | if(mParseHTML) |
3617 | { | 3617 | { |
@@ -3626,14 +3626,14 @@ void LLTextEditor::appendStyledText(const std::string &new_text, | |||
3626 | html->setColor(mLinkColor); | 3626 | html->setColor(mLinkColor); |
3627 | if (stylep) | 3627 | if (stylep) |
3628 | { | 3628 | { |
3629 | html->setFontName((*stylep)->getFontString()); | 3629 | html->setFontName(stylep->getFontString()); |
3630 | } | 3630 | } |
3631 | html->mUnderline = TRUE; | 3631 | html->mUnderline = TRUE; |
3632 | 3632 | ||
3633 | if (start > 0) appendText(text.substr(0,start),allow_undo, prepend_newline, stylep); | 3633 | if (start > 0) appendText(text.substr(0,start),allow_undo, prepend_newline, stylep); |
3634 | html->setLinkHREF(text.substr(start,end-start)); | 3634 | html->setLinkHREF(text.substr(start,end-start)); |
3635 | appendText(text.substr(start, end-start),allow_undo, prepend_newline, &html); | 3635 | appendText(text.substr(start, end-start),allow_undo, prepend_newline, html); |
3636 | if (end < (S32)text.length()) | 3636 | if (end < (S32)text.length()) |
3637 | { | 3637 | { |
3638 | text = text.substr(end,text.length() - end); | 3638 | text = text.substr(end,text.length() - end); |
3639 | end=0; | 3639 | end=0; |
@@ -3653,7 +3653,7 @@ void LLTextEditor::appendStyledText(const std::string &new_text, | |||
3653 | 3653 | ||
3654 | // Appends new text to end of document | 3654 | // Appends new text to end of document |
3655 | void LLTextEditor::appendText(const std::string &new_text, bool allow_undo, bool prepend_newline, | 3655 | void LLTextEditor::appendText(const std::string &new_text, bool allow_undo, bool prepend_newline, |
3656 | const LLStyleSP *stylep) | 3656 | const LLStyleSP stylep) |
3657 | { | 3657 | { |
3658 | // Save old state | 3658 | // Save old state |
3659 | BOOL was_scrolled_to_bottom = (mScrollbar->getDocPos() == mScrollbar->getDocPosMax()); | 3659 | BOOL was_scrolled_to_bottom = (mScrollbar->getDocPos() == mScrollbar->getDocPosMax()); |
@@ -3685,7 +3685,7 @@ void LLTextEditor::appendText(const std::string &new_text, bool allow_undo, bool | |||
3685 | { | 3685 | { |
3686 | S32 segment_start = old_length; | 3686 | S32 segment_start = old_length; |
3687 | S32 segment_end = getLength(); | 3687 | S32 segment_end = getLength(); |
3688 | LLTextSegment* segment = new LLTextSegment(*stylep, segment_start, segment_end ); | 3688 | LLTextSegment* segment = new LLTextSegment(stylep, segment_start, segment_end ); |
3689 | mSegments.push_back(segment); | 3689 | mSegments.push_back(segment); |
3690 | } | 3690 | } |
3691 | 3691 | ||
diff --git a/linden/indra/llui/lltexteditor.h b/linden/indra/llui/lltexteditor.h index 0777e5f..7e93de1 100644 --- a/linden/indra/llui/lltexteditor.h +++ b/linden/indra/llui/lltexteditor.h | |||
@@ -146,16 +146,16 @@ public: | |||
146 | void insertText(const std::string &text); | 146 | void insertText(const std::string &text); |
147 | // appends text at end | 147 | // appends text at end |
148 | void appendText(const std::string &wtext, bool allow_undo, bool prepend_newline, | 148 | void appendText(const std::string &wtext, bool allow_undo, bool prepend_newline, |
149 | const LLStyleSP *stylep = NULL); | 149 | const LLStyleSP stylep = NULL); |
150 | 150 | ||
151 | void appendColoredText(const std::string &wtext, bool allow_undo, | 151 | void appendColoredText(const std::string &wtext, bool allow_undo, |
152 | bool prepend_newline, | 152 | bool prepend_newline, |
153 | const LLColor4 &color, | 153 | const LLColor4 &color, |
154 | const std::string& font_name = LLStringUtil::null); | 154 | const std::string& font_name = LLStringUtil::null); |
155 | // if styled text starts a line, you need to prepend a newline. | 155 | // if styled text starts a line, you need to prepend a newline. |
156 | void appendStyledText(const std::string &new_text, bool allow_undo, | 156 | void appendStyledText(const std::string &new_text, bool allow_undo, |
157 | bool prepend_newline, | 157 | bool prepend_newline, |
158 | const LLStyleSP *stylep = NULL); | 158 | const LLStyleSP stylep = NULL); |
159 | 159 | ||
160 | // Removes text from the end of document | 160 | // Removes text from the end of document |
161 | // Does not change highlight or cursor position. | 161 | // Does not change highlight or cursor position. |
diff --git a/linden/indra/llui/llview.cpp b/linden/indra/llui/llview.cpp index 78bf168..e3652b7 100644 --- a/linden/indra/llui/llview.cpp +++ b/linden/indra/llui/llview.cpp | |||
@@ -85,7 +85,8 @@ LLView::LLView() : | |||
85 | mLastVisible(TRUE), | 85 | mLastVisible(TRUE), |
86 | mUseBoundingRect(FALSE), | 86 | mUseBoundingRect(FALSE), |
87 | mVisible(TRUE), | 87 | mVisible(TRUE), |
88 | mNextInsertionOrdinal(0) | 88 | mNextInsertionOrdinal(0), |
89 | mHoverCursor(UI_CURSOR_ARROW) | ||
89 | { | 90 | { |
90 | } | 91 | } |
91 | 92 | ||
@@ -102,7 +103,8 @@ LLView::LLView(const std::string& name, BOOL mouse_opaque) : | |||
102 | mLastVisible(TRUE), | 103 | mLastVisible(TRUE), |
103 | mUseBoundingRect(FALSE), | 104 | mUseBoundingRect(FALSE), |
104 | mVisible(TRUE), | 105 | mVisible(TRUE), |
105 | mNextInsertionOrdinal(0) | 106 | mNextInsertionOrdinal(0), |
107 | mHoverCursor(UI_CURSOR_ARROW) | ||
106 | { | 108 | { |
107 | } | 109 | } |
108 | 110 | ||
@@ -123,7 +125,8 @@ LLView::LLView( | |||
123 | mLastVisible(TRUE), | 125 | mLastVisible(TRUE), |
124 | mUseBoundingRect(FALSE), | 126 | mUseBoundingRect(FALSE), |
125 | mVisible(TRUE), | 127 | mVisible(TRUE), |
126 | mNextInsertionOrdinal(0) | 128 | mNextInsertionOrdinal(0), |
129 | mHoverCursor(UI_CURSOR_ARROW) | ||
127 | { | 130 | { |
128 | } | 131 | } |
129 | 132 | ||
@@ -657,7 +660,7 @@ BOOL LLView::handleHover(S32 x, S32 y, MASK mask) | |||
657 | if( !handled | 660 | if( !handled |
658 | && blockMouseEvent(x, y) ) | 661 | && blockMouseEvent(x, y) ) |
659 | { | 662 | { |
660 | LLUI::sWindow->setCursor(UI_CURSOR_ARROW); | 663 | LLUI::sWindow->setCursor(mHoverCursor); |
661 | lldebugst(LLERR_USER_INPUT) << "hover handled by " << getName() << llendl; | 664 | lldebugst(LLERR_USER_INPUT) << "hover handled by " << getName() << llendl; |
662 | handled = TRUE; | 665 | handled = TRUE; |
663 | } | 666 | } |
@@ -2622,7 +2625,14 @@ void LLView::initFromXML(LLXMLNodePtr node, LLView* parent) | |||
2622 | node->getAttributeBOOL("visible", visible); | 2625 | node->getAttributeBOOL("visible", visible); |
2623 | setVisible(visible); | 2626 | setVisible(visible); |
2624 | } | 2627 | } |
2625 | 2628 | ||
2629 | if (node->hasAttribute("hover_cursor")) | ||
2630 | { | ||
2631 | std::string cursor_string; | ||
2632 | node->getAttributeString("hover_cursor", cursor_string); | ||
2633 | mHoverCursor = getCursorFromString(cursor_string); | ||
2634 | } | ||
2635 | |||
2626 | node->getAttributeBOOL("use_bounding_rect", mUseBoundingRect); | 2636 | node->getAttributeBOOL("use_bounding_rect", mUseBoundingRect); |
2627 | node->getAttributeBOOL("mouse_opaque", mMouseOpaque); | 2637 | node->getAttributeBOOL("mouse_opaque", mMouseOpaque); |
2628 | 2638 | ||
diff --git a/linden/indra/llui/llview.h b/linden/indra/llui/llview.h index da7f164..df34a3e 100644 --- a/linden/indra/llui/llview.h +++ b/linden/indra/llui/llview.h | |||
@@ -51,6 +51,7 @@ | |||
51 | #include "llxmlnode.h" | 51 | #include "llxmlnode.h" |
52 | #include "stdenums.h" | 52 | #include "stdenums.h" |
53 | #include "lluistring.h" | 53 | #include "lluistring.h" |
54 | #include "llcursortypes.h" | ||
54 | 55 | ||
55 | const U32 FOLLOWS_NONE = 0x00; | 56 | const U32 FOLLOWS_NONE = 0x00; |
56 | const U32 FOLLOWS_LEFT = 0x01; | 57 | const U32 FOLLOWS_LEFT = 0x01; |
@@ -653,7 +654,9 @@ private: | |||
653 | mutable dummy_widget_map_t mDummyWidgets; | 654 | mutable dummy_widget_map_t mDummyWidgets; |
654 | 655 | ||
655 | boost::signals::connection mControlConnection; | 656 | boost::signals::connection mControlConnection; |
656 | 657 | ||
658 | ECursorType mHoverCursor; | ||
659 | |||
657 | public: | 660 | public: |
658 | static BOOL sDebugRects; // Draw debug rects behind everything. | 661 | static BOOL sDebugRects; // Draw debug rects behind everything. |
659 | static BOOL sDebugKeys; | 662 | static BOOL sDebugKeys; |
diff --git a/linden/indra/llwindow/llwindow.h b/linden/indra/llwindow/llwindow.h index 821de2f..0acbcb9 100644 --- a/linden/indra/llwindow/llwindow.h +++ b/linden/indra/llwindow/llwindow.h | |||
@@ -35,48 +35,7 @@ | |||
35 | #include "llrect.h" | 35 | #include "llrect.h" |
36 | #include "llcoord.h" | 36 | #include "llcoord.h" |
37 | #include "llstring.h" | 37 | #include "llstring.h" |
38 | 38 | #include "llcursortypes.h" | |
39 | |||
40 | enum ECursorType { | ||
41 | UI_CURSOR_ARROW, | ||
42 | UI_CURSOR_WAIT, | ||
43 | UI_CURSOR_HAND, | ||
44 | UI_CURSOR_IBEAM, | ||
45 | UI_CURSOR_CROSS, | ||
46 | UI_CURSOR_SIZENWSE, | ||
47 | UI_CURSOR_SIZENESW, | ||
48 | UI_CURSOR_SIZEWE, | ||
49 | UI_CURSOR_SIZENS, | ||
50 | UI_CURSOR_NO, | ||
51 | UI_CURSOR_WORKING, | ||
52 | UI_CURSOR_TOOLGRAB, | ||
53 | UI_CURSOR_TOOLLAND, | ||
54 | UI_CURSOR_TOOLFOCUS, | ||
55 | UI_CURSOR_TOOLCREATE, | ||
56 | UI_CURSOR_ARROWDRAG, | ||
57 | UI_CURSOR_ARROWCOPY, // drag with copy | ||
58 | UI_CURSOR_ARROWDRAGMULTI, | ||
59 | UI_CURSOR_ARROWCOPYMULTI, // drag with copy | ||
60 | UI_CURSOR_NOLOCKED, | ||
61 | UI_CURSOR_ARROWLOCKED, | ||
62 | UI_CURSOR_GRABLOCKED, | ||
63 | UI_CURSOR_TOOLTRANSLATE, | ||
64 | UI_CURSOR_TOOLROTATE, | ||
65 | UI_CURSOR_TOOLSCALE, | ||
66 | UI_CURSOR_TOOLCAMERA, | ||
67 | UI_CURSOR_TOOLPAN, | ||
68 | UI_CURSOR_TOOLZOOMIN, | ||
69 | UI_CURSOR_TOOLPICKOBJECT3, | ||
70 | UI_CURSOR_TOOLSIT, | ||
71 | UI_CURSOR_TOOLBUY, | ||
72 | UI_CURSOR_TOOLPAY, | ||
73 | UI_CURSOR_TOOLOPEN, | ||
74 | UI_CURSOR_TOOLPLAY, | ||
75 | UI_CURSOR_TOOLPAUSE, | ||
76 | UI_CURSOR_TOOLMEDIAOPEN, | ||
77 | UI_CURSOR_PIPETTE, | ||
78 | UI_CURSOR_COUNT // Number of elements in this enum (NOT a cursor) | ||
79 | }; | ||
80 | 39 | ||
81 | class LLSplashScreen; | 40 | class LLSplashScreen; |
82 | 41 | ||
diff --git a/linden/indra/newview/CMakeLists.txt b/linden/indra/newview/CMakeLists.txt index f224652..bb07922 100644 --- a/linden/indra/newview/CMakeLists.txt +++ b/linden/indra/newview/CMakeLists.txt | |||
@@ -168,6 +168,7 @@ set(viewer_SOURCE_FILES | |||
168 | llfloatermute.cpp | 168 | llfloatermute.cpp |
169 | llfloaternamedesc.cpp | 169 | llfloaternamedesc.cpp |
170 | llfloaternewim.cpp | 170 | llfloaternewim.cpp |
171 | llfloaterobjectiminfo.cpp | ||
171 | llfloateropenobject.cpp | 172 | llfloateropenobject.cpp |
172 | llfloaterparcel.cpp | 173 | llfloaterparcel.cpp |
173 | llfloaterpermissionsmgr.cpp | 174 | llfloaterpermissionsmgr.cpp |
@@ -422,6 +423,7 @@ set(viewer_SOURCE_FILES | |||
422 | llwearablelist.cpp | 423 | llwearablelist.cpp |
423 | llweb.cpp | 424 | llweb.cpp |
424 | llwebbrowserctrl.cpp | 425 | llwebbrowserctrl.cpp |
426 | llwindlightremotectrl.cpp | ||
425 | llwind.cpp | 427 | llwind.cpp |
426 | llwlanimator.cpp | 428 | llwlanimator.cpp |
427 | llwldaycycle.cpp | 429 | llwldaycycle.cpp |
@@ -571,6 +573,7 @@ set(viewer_HEADER_FILES | |||
571 | llfloatermute.h | 573 | llfloatermute.h |
572 | llfloaternamedesc.h | 574 | llfloaternamedesc.h |
573 | llfloaternewim.h | 575 | llfloaternewim.h |
576 | llfloaterobjectiminfo.h | ||
574 | llfloateropenobject.h | 577 | llfloateropenobject.h |
575 | llfloaterparcel.h | 578 | llfloaterparcel.h |
576 | llfloaterpermissionsmgr.h | 579 | llfloaterpermissionsmgr.h |
@@ -830,6 +833,7 @@ set(viewer_HEADER_FILES | |||
830 | llwebbrowserctrl.h | 833 | llwebbrowserctrl.h |
831 | llwind.h | 834 | llwind.h |
832 | llwindebug.h | 835 | llwindebug.h |
836 | llwindlightremotectrl.h | ||
833 | llwlanimator.h | 837 | llwlanimator.h |
834 | llwldaycycle.h | 838 | llwldaycycle.h |
835 | llwlparammanager.h | 839 | llwlparammanager.h |
@@ -1097,6 +1101,7 @@ set(viewer_XUI_FILES | |||
1097 | skins/default/xui/en-us/floater_name_description.xml | 1101 | skins/default/xui/en-us/floater_name_description.xml |
1098 | skins/default/xui/en-us/floater_new_im.xml | 1102 | skins/default/xui/en-us/floater_new_im.xml |
1099 | skins/default/xui/en-us/floater_new_outfit_dialog.xml | 1103 | skins/default/xui/en-us/floater_new_outfit_dialog.xml |
1104 | skins/default/xui/en-us/floater_object_im_info.xml | ||
1100 | skins/default/xui/en-us/floater_openobject.xml | 1105 | skins/default/xui/en-us/floater_openobject.xml |
1101 | skins/default/xui/en-us/floater_pay_object.xml | 1106 | skins/default/xui/en-us/floater_pay_object.xml |
1102 | skins/default/xui/en-us/floater_pay.xml | 1107 | skins/default/xui/en-us/floater_pay.xml |
@@ -1213,6 +1218,9 @@ set(viewer_XUI_FILES | |||
1213 | skins/default/xui/en-us/panel_voice_options.xml | 1218 | skins/default/xui/en-us/panel_voice_options.xml |
1214 | skins/default/xui/en-us/panel_voice_remote_expanded.xml | 1219 | skins/default/xui/en-us/panel_voice_remote_expanded.xml |
1215 | skins/default/xui/en-us/panel_voice_remote.xml | 1220 | skins/default/xui/en-us/panel_voice_remote.xml |
1221 | skins/default/xui/en-us/panel_windlight_controls.xml | ||
1222 | skins/default/xui/en-us/panel_windlight_remote.xml | ||
1223 | skins/default/xui/en-us/panel_windlight_remote_expanded.xml | ||
1216 | skins/default/xui/en-us/role_actions.xml | 1224 | skins/default/xui/en-us/role_actions.xml |
1217 | skins/default/xui/en-us/strings.xml | 1225 | skins/default/xui/en-us/strings.xml |
1218 | skins/default/xui/en-us/teleport_strings.xml | 1226 | skins/default/xui/en-us/teleport_strings.xml |
diff --git a/linden/indra/newview/app_settings/settings.xml b/linden/indra/newview/app_settings/settings.xml index 154fd5f..194e95e 100644 --- a/linden/indra/newview/app_settings/settings.xml +++ b/linden/indra/newview/app_settings/settings.xml | |||
@@ -763,6 +763,17 @@ | |||
763 | <key>Value</key> | 763 | <key>Value</key> |
764 | <integer>0</integer> | 764 | <integer>0</integer> |
765 | </map> | 765 | </map> |
766 | <key>BlockClickSit</key> | ||
767 | <map> | ||
768 | <key>Comment</key> | ||
769 | <string>Block click sit</string> | ||
770 | <key>Persist</key> | ||
771 | <integer>1</integer> | ||
772 | <key>Type</key> | ||
773 | <string>Boolean</string> | ||
774 | <key>Value</key> | ||
775 | <integer>0</integer> | ||
776 | </map> | ||
766 | <key>BrowserHome</key> | 777 | <key>BrowserHome</key> |
767 | <map> | 778 | <map> |
768 | <key>Comment</key> | 779 | <key>Comment</key> |
@@ -2492,6 +2503,17 @@ | |||
2492 | <key>Value</key> | 2503 | <key>Value</key> |
2493 | <integer>1</integer> | 2504 | <integer>1</integer> |
2494 | </map> | 2505 | </map> |
2506 | <key>EnableWindlightRemote</key> | ||
2507 | <map> | ||
2508 | <key>Comment</key> | ||
2509 | <string>Enable windlight quick access remote in toolbar</string> | ||
2510 | <key>Persist</key> | ||
2511 | <integer>1</integer> | ||
2512 | <key>Type</key> | ||
2513 | <string>Boolean</string> | ||
2514 | <key>Value</key> | ||
2515 | <integer>1</integer> | ||
2516 | </map> | ||
2495 | <key>EnergyFromTop</key> | 2517 | <key>EnergyFromTop</key> |
2496 | <map> | 2518 | <map> |
2497 | <key>Comment</key> | 2519 | <key>Comment</key> |
@@ -3205,7 +3227,24 @@ | |||
3205 | <integer>0</integer> | 3227 | <integer>0</integer> |
3206 | </array> | 3228 | </array> |
3207 | </map> | 3229 | </map> |
3208 | <key>FloaterOpenObjectRect</key> | 3230 | |
3231 | <key>FloaterObjectIMInfo</key> | ||
3232 | <map> | ||
3233 | <key>Comment</key> | ||
3234 | <string>Rectangle for floater object im info windows</string> | ||
3235 | <key>Persist</key> | ||
3236 | <integer>1</integer> | ||
3237 | <key>Type</key> | ||
3238 | <string>Rect</string> | ||
3239 | <key>Value</key> | ||
3240 | <array> | ||
3241 | <integer>0</integer> | ||
3242 | <integer>300</integer> | ||
3243 | <integer>300</integer> | ||
3244 | <integer>0</integer> | ||
3245 | </array> | ||
3246 | </map> | ||
3247 | <key>FloaterOpenObjectRect</key> | ||
3209 | <map> | 3248 | <map> |
3210 | <key>Comment</key> | 3249 | <key>Comment</key> |
3211 | <string>Rectangle for Open Object window</string> | 3250 | <string>Rectangle for Open Object window</string> |
@@ -4136,6 +4175,17 @@ | |||
4136 | <key>Value</key> | 4175 | <key>Value</key> |
4137 | <real>1.0</real> | 4176 | <real>1.0</real> |
4138 | </map> | 4177 | </map> |
4178 | <key>InventorySearchType</key> | ||
4179 | <map> | ||
4180 | <key>Comment</key> | ||
4181 | <string>Controls what type of inventory search we perform.</string> | ||
4182 | <key>Persist</key> | ||
4183 | <integer>0</integer> | ||
4184 | <key>Type</key> | ||
4185 | <string>U32</string> | ||
4186 | <key>Value</key> | ||
4187 | <integer>0</integer> | ||
4188 | </map> | ||
4139 | <key>InventorySortOrder</key> | 4189 | <key>InventorySortOrder</key> |
4140 | <map> | 4190 | <map> |
4141 | <key>Comment</key> | 4191 | <key>Comment</key> |
@@ -4670,6 +4720,17 @@ | |||
4670 | <key>Value</key> | 4720 | <key>Value</key> |
4671 | <integer>0</integer> | 4721 | <integer>0</integer> |
4672 | </map> | 4722 | </map> |
4723 | <key>LoggedIntoOpenSim</key> | ||
4724 | <map> | ||
4725 | <key>Comment</key> | ||
4726 | <string>Check whether or not we're in an OpenSimulator (default 0)</string> | ||
4727 | <key>Persist</key> | ||
4728 | <integer>1</integer> | ||
4729 | <key>Type</key> | ||
4730 | <string>Boolean</string> | ||
4731 | <key>Value</key> | ||
4732 | <integer>0</integer> | ||
4733 | </map> | ||
4673 | <key>LoginAsGod</key> | 4734 | <key>LoginAsGod</key> |
4674 | <map> | 4735 | <map> |
4675 | <key>Comment</key> | 4736 | <key>Comment</key> |
@@ -4747,6 +4808,17 @@ | |||
4747 | <key>Value</key> | 4808 | <key>Value</key> |
4748 | <real>128.0</real> | 4809 | <real>128.0</real> |
4749 | </map> | 4810 | </map> |
4811 | <key>MapShowAgentCount</key> | ||
4812 | <map> | ||
4813 | <key>Comment</key> | ||
4814 | <string>Show number of agents next to region names on world map</string> | ||
4815 | <key>Persist</key> | ||
4816 | <integer>1</integer> | ||
4817 | <key>Type</key> | ||
4818 | <string>Boolean</string> | ||
4819 | <key>Value</key> | ||
4820 | <integer>1</integer> | ||
4821 | </map> | ||
4750 | <key>MapShowEvents</key> | 4822 | <key>MapShowEvents</key> |
4751 | <map> | 4823 | <map> |
4752 | <key>Comment</key> | 4824 | <key>Comment</key> |
@@ -4992,7 +5064,7 @@ | |||
4992 | <key>MiniMapScale</key> | 5064 | <key>MiniMapScale</key> |
4993 | <map> | 5065 | <map> |
4994 | <key>Comment</key> | 5066 | <key>Comment</key> |
4995 | <string>Miniature world map zoom levle (pixels per region)</string> | 5067 | <string>Miniature world map zoom level (pixels per region)</string> |
4996 | <key>Persist</key> | 5068 | <key>Persist</key> |
4997 | <integer>1</integer> | 5069 | <integer>1</integer> |
4998 | <key>Type</key> | 5070 | <key>Type</key> |
@@ -5184,7 +5256,7 @@ | |||
5184 | <key>Type</key> | 5256 | <key>Type</key> |
5185 | <string>F32</string> | 5257 | <string>F32</string> |
5186 | <key>Value</key> | 5258 | <key>Value</key> |
5187 | <integer>20</integer> | 5259 | <integer>96</integer> |
5188 | </map> | 5260 | </map> |
5189 | <key>NewCacheLocation</key> | 5261 | <key>NewCacheLocation</key> |
5190 | <map> | 5262 | <map> |
@@ -7474,6 +7546,17 @@ | |||
7474 | <key>Value</key> | 7546 | <key>Value</key> |
7475 | <integer>0</integer> | 7547 | <integer>0</integer> |
7476 | </map> | 7548 | </map> |
7549 | <key>ShowStreamTitle</key> | ||
7550 | <map> | ||
7551 | <key>Comment</key> | ||
7552 | <string>Show the title of the song playing on the parcel's stream</string> | ||
7553 | <key>Persist</key> | ||
7554 | <integer>1</integer> | ||
7555 | <key>Type</key> | ||
7556 | <string>Boolean</string> | ||
7557 | <key>Value</key> | ||
7558 | <integer>1</integer> | ||
7559 | </map> | ||
7477 | <key>ShowTangentBasis</key> | 7560 | <key>ShowTangentBasis</key> |
7478 | <map> | 7561 | <map> |
7479 | <key>Comment</key> | 7562 | <key>Comment</key> |
@@ -7540,6 +7623,17 @@ | |||
7540 | <key>Value</key> | 7623 | <key>Value</key> |
7541 | <integer>0</integer> | 7624 | <integer>0</integer> |
7542 | </map> | 7625 | </map> |
7626 | <key>ShowWindlightSettingsPopup</key> | ||
7627 | <map> | ||
7628 | <key>Comment</key> | ||
7629 | <string>Show environment settings popup</string> | ||
7630 | <key>Persist</key> | ||
7631 | <integer>1</integer> | ||
7632 | <key>Type</key> | ||
7633 | <string>Boolean</string> | ||
7634 | <key>Value</key> | ||
7635 | <integer>0</integer> | ||
7636 | </map> | ||
7543 | <key>ShowWorldMap</key> | 7637 | <key>ShowWorldMap</key> |
7544 | <map> | 7638 | <map> |
7545 | <key>Comment</key> | 7639 | <key>Comment</key> |
@@ -8044,7 +8138,7 @@ | |||
8044 | <key>Type</key> | 8138 | <key>Type</key> |
8045 | <string>F32</string> | 8139 | <string>F32</string> |
8046 | <key>Value</key> | 8140 | <key>Value</key> |
8047 | <real>500.0</real> | 8141 | <real>1000.0</real> |
8048 | </map> | 8142 | </map> |
8049 | <key>ToolHelpRect</key> | 8143 | <key>ToolHelpRect</key> |
8050 | <map> | 8144 | <map> |
@@ -10256,6 +10350,17 @@ | |||
10256 | <key>Value</key> | 10350 | <key>Value</key> |
10257 | <integer>1</integer> | 10351 | <integer>1</integer> |
10258 | </map> | 10352 | </map> |
10353 | <key>WarnFirstMiniMap</key> | ||
10354 | <map> | ||
10355 | <key>Comment</key> | ||
10356 | <string>Enables FirstMiniMap warning dialog</string> | ||
10357 | <key>Persist</key> | ||
10358 | <integer>1</integer> | ||
10359 | <key>Type</key> | ||
10360 | <string>Boolean</string> | ||
10361 | <key>Value</key> | ||
10362 | <integer>1</integer> | ||
10363 | </map> | ||
10259 | <key>WarnFirstOverrideKeys</key> | 10364 | <key>WarnFirstOverrideKeys</key> |
10260 | <map> | 10365 | <map> |
10261 | <key>Comment</key> | 10366 | <key>Comment</key> |
diff --git a/linden/indra/newview/app_settings/windlight/skies/Rouge%201.xml b/linden/indra/newview/app_settings/windlight/skies/Rouge%201.xml new file mode 100644 index 0000000..896abf6 --- /dev/null +++ b/linden/indra/newview/app_settings/windlight/skies/Rouge%201.xml | |||
@@ -0,0 +1,141 @@ | |||
1 | <llsd> | ||
2 | <map> | ||
3 | <key>ambient</key> | ||
4 | <array> | ||
5 | <real>0.35999998450279236</real> | ||
6 | <real>0.42000001668930054</real> | ||
7 | <real>0.42000001668930054</real> | ||
8 | <real>0.42000001668930054</real> | ||
9 | </array> | ||
10 | <key>blue_density</key> | ||
11 | <array> | ||
12 | <real>0.51999998092651367</real> | ||
13 | <real>0.2800000011920929</real> | ||
14 | <real>0.51999998092651367</real> | ||
15 | <real>0.51999998092651367</real> | ||
16 | </array> | ||
17 | <key>blue_horizon</key> | ||
18 | <array> | ||
19 | <real>0.69999998807907104</real> | ||
20 | <real>0.69999998807907104</real> | ||
21 | <real>0.68000000715255737</real> | ||
22 | <real>0.69999998807907104</real> | ||
23 | </array> | ||
24 | <key>cloud_color</key> | ||
25 | <array> | ||
26 | <real>1</real> | ||
27 | <real>0.79000002145767212</real> | ||
28 | <real>0.80000001192092896</real> | ||
29 | <real>1</real> | ||
30 | </array> | ||
31 | <key>cloud_pos_density1</key> | ||
32 | <array> | ||
33 | <real>0.40999999642372131</real> | ||
34 | <real>0.39999997615814209</real> | ||
35 | <real>0.88999998569488525</real> | ||
36 | <real>1</real> | ||
37 | </array> | ||
38 | <key>cloud_pos_density2</key> | ||
39 | <array> | ||
40 | <real>0.28999999165534973</real> | ||
41 | <real>0.32999998331069946</real> | ||
42 | <real>0.039999999105930328</real> | ||
43 | <real>1</real> | ||
44 | </array> | ||
45 | <key>cloud_scale</key> | ||
46 | <array> | ||
47 | <real>0.37999999523162842</real> | ||
48 | <real>0</real> | ||
49 | <real>0</real> | ||
50 | <real>1</real> | ||
51 | </array> | ||
52 | <key>cloud_scroll_rate</key> | ||
53 | <array> | ||
54 | <real>11.809999465942383</real> | ||
55 | <real>12.799999237060547</real> | ||
56 | </array> | ||
57 | <key>cloud_shadow</key> | ||
58 | <array> | ||
59 | <real>0.31999999284744263</real> | ||
60 | <real>0</real> | ||
61 | <real>0</real> | ||
62 | <real>1</real> | ||
63 | </array> | ||
64 | <key>density_multiplier</key> | ||
65 | <array> | ||
66 | <real>0.00021999998716637492</real> | ||
67 | <real>0</real> | ||
68 | <real>0</real> | ||
69 | <real>1</real> | ||
70 | </array> | ||
71 | <key>distance_multiplier</key> | ||
72 | <array> | ||
73 | <real>4</real> | ||
74 | <real>0</real> | ||
75 | <real>0</real> | ||
76 | <real>1</real> | ||
77 | </array> | ||
78 | <key>east_angle</key> | ||
79 | <real>3.8327431678771973</real> | ||
80 | <key>enable_cloud_scroll</key> | ||
81 | <array> | ||
82 | <boolean>1</boolean> | ||
83 | <boolean>1</boolean> | ||
84 | </array> | ||
85 | <key>gamma</key> | ||
86 | <array> | ||
87 | <real>1.5399999618530273</real> | ||
88 | <real>0</real> | ||
89 | <real>0</real> | ||
90 | <real>1</real> | ||
91 | </array> | ||
92 | <key>glow</key> | ||
93 | <array> | ||
94 | <real>14.40000057220459</real> | ||
95 | <real>0.0010000000474974513</real> | ||
96 | <real>-0.85000002384185791</real> | ||
97 | <real>1</real> | ||
98 | </array> | ||
99 | <key>haze_density</key> | ||
100 | <array> | ||
101 | <real>2.0399999618530273</real> | ||
102 | <real>0</real> | ||
103 | <real>0</real> | ||
104 | <real>1</real> | ||
105 | </array> | ||
106 | <key>haze_horizon</key> | ||
107 | <array> | ||
108 | <real>0.049999997019767761</real> | ||
109 | <real>0.19915600121021271</real> | ||
110 | <real>0.19915600121021271</real> | ||
111 | <real>1</real> | ||
112 | </array> | ||
113 | <key>lightnorm</key> | ||
114 | <array> | ||
115 | <real>0.63680768013000488</real> | ||
116 | <real>0.043968122452497482</real> | ||
117 | <real>-0.76976805925369263</real> | ||
118 | <real>0</real> | ||
119 | </array> | ||
120 | <key>max_y</key> | ||
121 | <array> | ||
122 | <real>676.10003662109375</real> | ||
123 | <real>0</real> | ||
124 | <real>0</real> | ||
125 | <real>1</real> | ||
126 | </array> | ||
127 | <key>preset_num</key> | ||
128 | <integer>18</integer> | ||
129 | <key>star_brightness</key> | ||
130 | <real>2</real> | ||
131 | <key>sun_angle</key> | ||
132 | <real>0.043982300907373428</real> | ||
133 | <key>sunlight_color</key> | ||
134 | <array> | ||
135 | <real>2.369999885559082</real> | ||
136 | <real>1.4099999666213989</real> | ||
137 | <real>1.0199999809265137</real> | ||
138 | <real>2.369999885559082</real> | ||
139 | </array> | ||
140 | </map> | ||
141 | </llsd> | ||
diff --git a/linden/indra/newview/app_settings/windlight/skies/Rouge%202.xml b/linden/indra/newview/app_settings/windlight/skies/Rouge%202.xml new file mode 100644 index 0000000..3b170ac --- /dev/null +++ b/linden/indra/newview/app_settings/windlight/skies/Rouge%202.xml | |||
@@ -0,0 +1,141 @@ | |||
1 | <llsd> | ||
2 | <map> | ||
3 | <key>ambient</key> | ||
4 | <array> | ||
5 | <real>0.84000003337860107</real> | ||
6 | <real>0.56999999284744263</real> | ||
7 | <real>0.56999999284744263</real> | ||
8 | <real>0.84000003337860107</real> | ||
9 | </array> | ||
10 | <key>blue_density</key> | ||
11 | <array> | ||
12 | <real>1.0799999237060547</real> | ||
13 | <real>0.51999998092651367</real> | ||
14 | <real>0.51999998092651367</real> | ||
15 | <real>1.0799999237060547</real> | ||
16 | </array> | ||
17 | <key>blue_horizon</key> | ||
18 | <array> | ||
19 | <real>0.57999998331069946</real> | ||
20 | <real>0.25999999046325684</real> | ||
21 | <real>0.25999999046325684</real> | ||
22 | <real>0.57999998331069946</real> | ||
23 | </array> | ||
24 | <key>cloud_color</key> | ||
25 | <array> | ||
26 | <real>1</real> | ||
27 | <real>0.79000002145767212</real> | ||
28 | <real>0.80000001192092896</real> | ||
29 | <real>1</real> | ||
30 | </array> | ||
31 | <key>cloud_pos_density1</key> | ||
32 | <array> | ||
33 | <real>0.40999999642372131</real> | ||
34 | <real>0.39999997615814209</real> | ||
35 | <real>0.88999998569488525</real> | ||
36 | <real>1</real> | ||
37 | </array> | ||
38 | <key>cloud_pos_density2</key> | ||
39 | <array> | ||
40 | <real>0.28999999165534973</real> | ||
41 | <real>0.32999998331069946</real> | ||
42 | <real>0.039999999105930328</real> | ||
43 | <real>1</real> | ||
44 | </array> | ||
45 | <key>cloud_scale</key> | ||
46 | <array> | ||
47 | <real>0.37999999523162842</real> | ||
48 | <real>0</real> | ||
49 | <real>0</real> | ||
50 | <real>1</real> | ||
51 | </array> | ||
52 | <key>cloud_scroll_rate</key> | ||
53 | <array> | ||
54 | <real>11.809999465942383</real> | ||
55 | <real>12.799999237060547</real> | ||
56 | </array> | ||
57 | <key>cloud_shadow</key> | ||
58 | <array> | ||
59 | <real>0.31999999284744263</real> | ||
60 | <real>0</real> | ||
61 | <real>0</real> | ||
62 | <real>1</real> | ||
63 | </array> | ||
64 | <key>density_multiplier</key> | ||
65 | <array> | ||
66 | <real>0.0002899999963119626</real> | ||
67 | <real>0</real> | ||
68 | <real>0</real> | ||
69 | <real>1</real> | ||
70 | </array> | ||
71 | <key>distance_multiplier</key> | ||
72 | <array> | ||
73 | <real>5.5999999046325684</real> | ||
74 | <real>0</real> | ||
75 | <real>0</real> | ||
76 | <real>1</real> | ||
77 | </array> | ||
78 | <key>east_angle</key> | ||
79 | <real>3.8327431678771973</real> | ||
80 | <key>enable_cloud_scroll</key> | ||
81 | <array> | ||
82 | <boolean>1</boolean> | ||
83 | <boolean>1</boolean> | ||
84 | </array> | ||
85 | <key>gamma</key> | ||
86 | <array> | ||
87 | <real>1.5399999618530273</real> | ||
88 | <real>0</real> | ||
89 | <real>0</real> | ||
90 | <real>1</real> | ||
91 | </array> | ||
92 | <key>glow</key> | ||
93 | <array> | ||
94 | <real>14.40000057220459</real> | ||
95 | <real>0.0010000000474974513</real> | ||
96 | <real>-0.85000002384185791</real> | ||
97 | <real>1</real> | ||
98 | </array> | ||
99 | <key>haze_density</key> | ||
100 | <array> | ||
101 | <real>2.0399999618530273</real> | ||
102 | <real>0</real> | ||
103 | <real>0</real> | ||
104 | <real>1</real> | ||
105 | </array> | ||
106 | <key>haze_horizon</key> | ||
107 | <array> | ||
108 | <real>0.049999997019767761</real> | ||
109 | <real>0.19915600121021271</real> | ||
110 | <real>0.19915600121021271</real> | ||
111 | <real>1</real> | ||
112 | </array> | ||
113 | <key>lightnorm</key> | ||
114 | <array> | ||
115 | <real>0.63495957851409912</real> | ||
116 | <real>0.087851203978061676</real> | ||
117 | <real>-0.76753407716751099</real> | ||
118 | <real>0</real> | ||
119 | </array> | ||
120 | <key>max_y</key> | ||
121 | <array> | ||
122 | <real>676.10003662109375</real> | ||
123 | <real>0</real> | ||
124 | <real>0</real> | ||
125 | <real>1</real> | ||
126 | </array> | ||
127 | <key>preset_num</key> | ||
128 | <integer>18</integer> | ||
129 | <key>star_brightness</key> | ||
130 | <real>2</real> | ||
131 | <key>sun_angle</key> | ||
132 | <real>0.087964601814746857</real> | ||
133 | <key>sunlight_color</key> | ||
134 | <array> | ||
135 | <real>2.2799999713897705</real> | ||
136 | <real>0.75</real> | ||
137 | <real>0.59999996423721313</real> | ||
138 | <real>2.2799999713897705</real> | ||
139 | </array> | ||
140 | </map> | ||
141 | </llsd> | ||
diff --git a/linden/indra/newview/app_settings/windlight/skies/Rouge%203.xml b/linden/indra/newview/app_settings/windlight/skies/Rouge%203.xml new file mode 100644 index 0000000..5cc7a61 --- /dev/null +++ b/linden/indra/newview/app_settings/windlight/skies/Rouge%203.xml | |||
@@ -0,0 +1,141 @@ | |||
1 | <llsd> | ||
2 | <map> | ||
3 | <key>ambient</key> | ||
4 | <array> | ||
5 | <real>0.71999996900558472</real> | ||
6 | <real>0.71999996900558472</real> | ||
7 | <real>0.71999996900558472</real> | ||
8 | <real>0.23999999463558197</real> | ||
9 | </array> | ||
10 | <key>blue_density</key> | ||
11 | <array> | ||
12 | <real>0.31999999284744263</real> | ||
13 | <real>0.094117648899555206</real> | ||
14 | <real>0.094117648899555206</real> | ||
15 | <real>0.15999999642372131</real> | ||
16 | </array> | ||
17 | <key>blue_horizon</key> | ||
18 | <array> | ||
19 | <real>0.45999997854232788</real> | ||
20 | <real>0</real> | ||
21 | <real>0.039999999105930328</real> | ||
22 | <real>0.45999997854232788</real> | ||
23 | </array> | ||
24 | <key>cloud_color</key> | ||
25 | <array> | ||
26 | <real>0.14000000059604645</real> | ||
27 | <real>0.14000000059604645</real> | ||
28 | <real>0.14000000059604645</real> | ||
29 | <real>0.14000000059604645</real> | ||
30 | </array> | ||
31 | <key>cloud_pos_density1</key> | ||
32 | <array> | ||
33 | <real>0.74000000953674316</real> | ||
34 | <real>0.93999999761581421</real> | ||
35 | <real>0.20999999344348907</real> | ||
36 | <real>1</real> | ||
37 | </array> | ||
38 | <key>cloud_pos_density2</key> | ||
39 | <array> | ||
40 | <real>0.65999996662139893</real> | ||
41 | <real>0.52999997138977051</real> | ||
42 | <real>0.0099999997764825821</real> | ||
43 | <real>1</real> | ||
44 | </array> | ||
45 | <key>cloud_scale</key> | ||
46 | <array> | ||
47 | <real>0.070000000298023224</real> | ||
48 | <real>0</real> | ||
49 | <real>0</real> | ||
50 | <real>1</real> | ||
51 | </array> | ||
52 | <key>cloud_scroll_rate</key> | ||
53 | <array> | ||
54 | <real>18</real> | ||
55 | <real>20</real> | ||
56 | </array> | ||
57 | <key>cloud_shadow</key> | ||
58 | <array> | ||
59 | <real>0.34000000357627869</real> | ||
60 | <real>0</real> | ||
61 | <real>0</real> | ||
62 | <real>1</real> | ||
63 | </array> | ||
64 | <key>density_multiplier</key> | ||
65 | <array> | ||
66 | <real>0.00018000000272877514</real> | ||
67 | <real>0</real> | ||
68 | <real>0</real> | ||
69 | <real>1</real> | ||
70 | </array> | ||
71 | <key>distance_multiplier</key> | ||
72 | <array> | ||
73 | <real>6.7000002861022949</real> | ||
74 | <real>0</real> | ||
75 | <real>0</real> | ||
76 | <real>1</real> | ||
77 | </array> | ||
78 | <key>east_angle</key> | ||
79 | <real>3.5185837745666504</real> | ||
80 | <key>enable_cloud_scroll</key> | ||
81 | <array> | ||
82 | <boolean>1</boolean> | ||
83 | <boolean>1</boolean> | ||
84 | </array> | ||
85 | <key>gamma</key> | ||
86 | <array> | ||
87 | <real>1.0399999618530273</real> | ||
88 | <real>0</real> | ||
89 | <real>0</real> | ||
90 | <real>1</real> | ||
91 | </array> | ||
92 | <key>glow</key> | ||
93 | <array> | ||
94 | <real>17.399999618530273</real> | ||
95 | <real>0.0010000000474974513</real> | ||
96 | <real>-0.64999997615814209</real> | ||
97 | <real>1</real> | ||
98 | </array> | ||
99 | <key>haze_density</key> | ||
100 | <array> | ||
101 | <real>0.40999999642372131</real> | ||
102 | <real>0</real> | ||
103 | <real>0</real> | ||
104 | <real>1</real> | ||
105 | </array> | ||
106 | <key>haze_horizon</key> | ||
107 | <array> | ||
108 | <real>0.17000000178813934</real> | ||
109 | <real>0.19915600121021271</real> | ||
110 | <real>0.19915600121021271</real> | ||
111 | <real>1</real> | ||
112 | </array> | ||
113 | <key>lightnorm</key> | ||
114 | <array> | ||
115 | <real>0.3677685558795929</real> | ||
116 | <real>0.043968122452497482</real> | ||
117 | <real>-0.92887735366821289</real> | ||
118 | <real>0</real> | ||
119 | </array> | ||
120 | <key>max_y</key> | ||
121 | <array> | ||
122 | <real>263</real> | ||
123 | <real>0</real> | ||
124 | <real>0</real> | ||
125 | <real>1</real> | ||
126 | </array> | ||
127 | <key>preset_num</key> | ||
128 | <integer>24</integer> | ||
129 | <key>star_brightness</key> | ||
130 | <real>1.0399999618530273</real> | ||
131 | <key>sun_angle</key> | ||
132 | <real>0.043982300907373428</real> | ||
133 | <key>sunlight_color</key> | ||
134 | <array> | ||
135 | <real>1.5899999141693115</real> | ||
136 | <real>1.5899999141693115</real> | ||
137 | <real>1.5899999141693115</real> | ||
138 | <real>1.5899999141693115</real> | ||
139 | </array> | ||
140 | </map> | ||
141 | </llsd> | ||
diff --git a/linden/indra/newview/app_settings/windlight/skies/Rouge%204.xml b/linden/indra/newview/app_settings/windlight/skies/Rouge%204.xml new file mode 100644 index 0000000..d48a4a2 --- /dev/null +++ b/linden/indra/newview/app_settings/windlight/skies/Rouge%204.xml | |||
@@ -0,0 +1,141 @@ | |||
1 | <llsd> | ||
2 | <map> | ||
3 | <key>ambient</key> | ||
4 | <array> | ||
5 | <real>0.42000001668930054</real> | ||
6 | <real>0.29999998211860657</real> | ||
7 | <real>0.29999998211860657</real> | ||
8 | <real>0.42000001668930054</real> | ||
9 | </array> | ||
10 | <key>blue_density</key> | ||
11 | <array> | ||
12 | <real>0.59999996423721313</real> | ||
13 | <real>0.15999999642372131</real> | ||
14 | <real>0.2199999988079071</real> | ||
15 | <real>0.59999996423721313</real> | ||
16 | </array> | ||
17 | <key>blue_horizon</key> | ||
18 | <array> | ||
19 | <real>0.029999999329447746</real> | ||
20 | <real>0</real> | ||
21 | <real>0</real> | ||
22 | <real>0.079999998211860657</real> | ||
23 | </array> | ||
24 | <key>cloud_color</key> | ||
25 | <array> | ||
26 | <real>0.81999999284744263</real> | ||
27 | <real>0.18999999761581421</real> | ||
28 | <real>0.039999999105930328</real> | ||
29 | <real>0.81999999284744263</real> | ||
30 | </array> | ||
31 | <key>cloud_pos_density1</key> | ||
32 | <array> | ||
33 | <real>0.74000000953674316</real> | ||
34 | <real>0.93999999761581421</real> | ||
35 | <real>0.20999999344348907</real> | ||
36 | <real>1</real> | ||
37 | </array> | ||
38 | <key>cloud_pos_density2</key> | ||
39 | <array> | ||
40 | <real>0.65999996662139893</real> | ||
41 | <real>0.52999997138977051</real> | ||
42 | <real>0.0099999997764825821</real> | ||
43 | <real>1</real> | ||
44 | </array> | ||
45 | <key>cloud_scale</key> | ||
46 | <array> | ||
47 | <real>0.14000000059604645</real> | ||
48 | <real>0</real> | ||
49 | <real>0</real> | ||
50 | <real>1</real> | ||
51 | </array> | ||
52 | <key>cloud_scroll_rate</key> | ||
53 | <array> | ||
54 | <real>18</real> | ||
55 | <real>20</real> | ||
56 | </array> | ||
57 | <key>cloud_shadow</key> | ||
58 | <array> | ||
59 | <real>0.37999999523162842</real> | ||
60 | <real>0</real> | ||
61 | <real>0</real> | ||
62 | <real>1</real> | ||
63 | </array> | ||
64 | <key>density_multiplier</key> | ||
65 | <array> | ||
66 | <real>0.00015999999595806003</real> | ||
67 | <real>0</real> | ||
68 | <real>0</real> | ||
69 | <real>1</real> | ||
70 | </array> | ||
71 | <key>distance_multiplier</key> | ||
72 | <array> | ||
73 | <real>17.399999618530273</real> | ||
74 | <real>0</real> | ||
75 | <real>0</real> | ||
76 | <real>1</real> | ||
77 | </array> | ||
78 | <key>east_angle</key> | ||
79 | <real>2.3247785568237305</real> | ||
80 | <key>enable_cloud_scroll</key> | ||
81 | <array> | ||
82 | <boolean>1</boolean> | ||
83 | <boolean>1</boolean> | ||
84 | </array> | ||
85 | <key>gamma</key> | ||
86 | <array> | ||
87 | <real>1.5299999713897705</real> | ||
88 | <real>0</real> | ||
89 | <real>0</real> | ||
90 | <real>1</real> | ||
91 | </array> | ||
92 | <key>glow</key> | ||
93 | <array> | ||
94 | <real>17.399999618530273</real> | ||
95 | <real>0.0010000000474974513</real> | ||
96 | <real>-0.64999997615814209</real> | ||
97 | <real>1</real> | ||
98 | </array> | ||
99 | <key>haze_density</key> | ||
100 | <array> | ||
101 | <real>0.32999998331069946</real> | ||
102 | <real>0</real> | ||
103 | <real>0</real> | ||
104 | <real>1</real> | ||
105 | </array> | ||
106 | <key>haze_horizon</key> | ||
107 | <array> | ||
108 | <real>0.079999998211860657</real> | ||
109 | <real>0.19915600121021271</real> | ||
110 | <real>0.19915600121021271</real> | ||
111 | <real>1</real> | ||
112 | </array> | ||
113 | <key>lightnorm</key> | ||
114 | <array> | ||
115 | <real>-0.72615015506744385</real> | ||
116 | <real>0.087851203978061676</real> | ||
117 | <real>-0.68190038204193115</real> | ||
118 | <real>0</real> | ||
119 | </array> | ||
120 | <key>max_y</key> | ||
121 | <array> | ||
122 | <real>1048</real> | ||
123 | <real>0</real> | ||
124 | <real>0</real> | ||
125 | <real>1</real> | ||
126 | </array> | ||
127 | <key>preset_num</key> | ||
128 | <integer>24</integer> | ||
129 | <key>star_brightness</key> | ||
130 | <real>1.3199999332427979</real> | ||
131 | <key>sun_angle</key> | ||
132 | <real>0.087964601814746857</real> | ||
133 | <key>sunlight_color</key> | ||
134 | <array> | ||
135 | <real>1.5899999141693115</real> | ||
136 | <real>0.47999998927116394</real> | ||
137 | <real>0.53999996185302734</real> | ||
138 | <real>1.5899999141693115</real> | ||
139 | </array> | ||
140 | </map> | ||
141 | </llsd> | ||
diff --git a/linden/indra/newview/app_settings/windlight/skies/Rouge%205.xml b/linden/indra/newview/app_settings/windlight/skies/Rouge%205.xml new file mode 100644 index 0000000..3ceb600 --- /dev/null +++ b/linden/indra/newview/app_settings/windlight/skies/Rouge%205.xml | |||
@@ -0,0 +1,141 @@ | |||
1 | <llsd> | ||
2 | <map> | ||
3 | <key>ambient</key> | ||
4 | <array> | ||
5 | <real>0.77999997138977051</real> | ||
6 | <real>0.29999998211860657</real> | ||
7 | <real>0.29999998211860657</real> | ||
8 | <real>0.77999997138977051</real> | ||
9 | </array> | ||
10 | <key>blue_density</key> | ||
11 | <array> | ||
12 | <real>1.5799999237060547</real> | ||
13 | <real>0.45999997854232788</real> | ||
14 | <real>0.45999997854232788</real> | ||
15 | <real>1.5799999237060547</real> | ||
16 | </array> | ||
17 | <key>blue_horizon</key> | ||
18 | <array> | ||
19 | <real>0.97999995946884155</real> | ||
20 | <real>0.34000000357627869</real> | ||
21 | <real>0.35999998450279236</real> | ||
22 | <real>0.97999995946884155</real> | ||
23 | </array> | ||
24 | <key>cloud_color</key> | ||
25 | <array> | ||
26 | <real>0</real> | ||
27 | <real>0</real> | ||
28 | <real>0</real> | ||
29 | <real>0</real> | ||
30 | </array> | ||
31 | <key>cloud_pos_density1</key> | ||
32 | <array> | ||
33 | <real>0.74000000953674316</real> | ||
34 | <real>0.93999999761581421</real> | ||
35 | <real>0.19999998807907104</real> | ||
36 | <real>1</real> | ||
37 | </array> | ||
38 | <key>cloud_pos_density2</key> | ||
39 | <array> | ||
40 | <real>0.65999996662139893</real> | ||
41 | <real>0.69999998807907104</real> | ||
42 | <real>0</real> | ||
43 | <real>1</real> | ||
44 | </array> | ||
45 | <key>cloud_scale</key> | ||
46 | <array> | ||
47 | <real>0.070000000298023224</real> | ||
48 | <real>0</real> | ||
49 | <real>0</real> | ||
50 | <real>1</real> | ||
51 | </array> | ||
52 | <key>cloud_scroll_rate</key> | ||
53 | <array> | ||
54 | <real>2.8600001335144043</real> | ||
55 | <real>17.589999675750732</real> | ||
56 | </array> | ||
57 | <key>cloud_shadow</key> | ||
58 | <array> | ||
59 | <real>0.42999997735023499</real> | ||
60 | <real>0</real> | ||
61 | <real>0</real> | ||
62 | <real>1</real> | ||
63 | </array> | ||
64 | <key>density_multiplier</key> | ||
65 | <array> | ||
66 | <real>0.00015999999595806003</real> | ||
67 | <real>0</real> | ||
68 | <real>0</real> | ||
69 | <real>1</real> | ||
70 | </array> | ||
71 | <key>distance_multiplier</key> | ||
72 | <array> | ||
73 | <real>2.1000001430511475</real> | ||
74 | <real>0</real> | ||
75 | <real>0</real> | ||
76 | <real>1</real> | ||
77 | </array> | ||
78 | <key>east_angle</key> | ||
79 | <real>3.7699110507965088</real> | ||
80 | <key>enable_cloud_scroll</key> | ||
81 | <array> | ||
82 | <boolean>1</boolean> | ||
83 | <boolean>1</boolean> | ||
84 | </array> | ||
85 | <key>gamma</key> | ||
86 | <array> | ||
87 | <real>1.1100000143051147</real> | ||
88 | <real>0</real> | ||
89 | <real>0</real> | ||
90 | <real>1</real> | ||
91 | </array> | ||
92 | <key>glow</key> | ||
93 | <array> | ||
94 | <real>14.000000953674316</real> | ||
95 | <real>0.0010000000474974513</real> | ||
96 | <real>-0.89999997615814209</real> | ||
97 | <real>1</real> | ||
98 | </array> | ||
99 | <key>haze_density</key> | ||
100 | <array> | ||
101 | <real>0.82999998331069946</real> | ||
102 | <real>0</real> | ||
103 | <real>0</real> | ||
104 | <real>1</real> | ||
105 | </array> | ||
106 | <key>haze_horizon</key> | ||
107 | <array> | ||
108 | <real>0.48999997973442078</real> | ||
109 | <real>0.19915600121021271</real> | ||
110 | <real>0.19915600121021271</real> | ||
111 | <real>1</real> | ||
112 | </array> | ||
113 | <key>lightnorm</key> | ||
114 | <array> | ||
115 | <real>0.58778512477874756</real> | ||
116 | <real>0</real> | ||
117 | <real>-0.80901706218719482</real> | ||
118 | <real>0</real> | ||
119 | </array> | ||
120 | <key>max_y</key> | ||
121 | <array> | ||
122 | <real>276</real> | ||
123 | <real>0</real> | ||
124 | <real>0</real> | ||
125 | <real>1</real> | ||
126 | </array> | ||
127 | <key>preset_num</key> | ||
128 | <integer>24</integer> | ||
129 | <key>star_brightness</key> | ||
130 | <real>1.1699999570846558</real> | ||
131 | <key>sun_angle</key> | ||
132 | <real>0</real> | ||
133 | <key>sunlight_color</key> | ||
134 | <array> | ||
135 | <real>0.29999998211860657</real> | ||
136 | <real>0.29999998211860657</real> | ||
137 | <real>0.29999998211860657</real> | ||
138 | <real>0.099999994039535522</real> | ||
139 | </array> | ||
140 | </map> | ||
141 | </llsd> | ||
diff --git a/linden/indra/newview/app_settings/windlight/skies/Rouge%206.xml b/linden/indra/newview/app_settings/windlight/skies/Rouge%206.xml new file mode 100644 index 0000000..c36da85 --- /dev/null +++ b/linden/indra/newview/app_settings/windlight/skies/Rouge%206.xml | |||
@@ -0,0 +1,141 @@ | |||
1 | <llsd> | ||
2 | <map> | ||
3 | <key>ambient</key> | ||
4 | <array> | ||
5 | <real>0.77999997138977051</real> | ||
6 | <real>0.29999998211860657</real> | ||
7 | <real>0.29999998211860657</real> | ||
8 | <real>0.77999997138977051</real> | ||
9 | </array> | ||
10 | <key>blue_density</key> | ||
11 | <array> | ||
12 | <real>0.65999996662139893</real> | ||
13 | <real>0.58384609222412109</real> | ||
14 | <real>0.58384609222412109</real> | ||
15 | <real>0.32999998331069946</real> | ||
16 | </array> | ||
17 | <key>blue_horizon</key> | ||
18 | <array> | ||
19 | <real>0.37999999523162842</real> | ||
20 | <real>0.34000000357627869</real> | ||
21 | <real>0.35999998450279236</real> | ||
22 | <real>0.37999999523162842</real> | ||
23 | </array> | ||
24 | <key>cloud_color</key> | ||
25 | <array> | ||
26 | <real>0</real> | ||
27 | <real>0</real> | ||
28 | <real>0</real> | ||
29 | <real>0</real> | ||
30 | </array> | ||
31 | <key>cloud_pos_density1</key> | ||
32 | <array> | ||
33 | <real>0.74000000953674316</real> | ||
34 | <real>0.93999999761581421</real> | ||
35 | <real>0.19999998807907104</real> | ||
36 | <real>1</real> | ||
37 | </array> | ||
38 | <key>cloud_pos_density2</key> | ||
39 | <array> | ||
40 | <real>0.65999996662139893</real> | ||
41 | <real>0.69999998807907104</real> | ||
42 | <real>0</real> | ||
43 | <real>1</real> | ||
44 | </array> | ||
45 | <key>cloud_scale</key> | ||
46 | <array> | ||
47 | <real>0.070000000298023224</real> | ||
48 | <real>0</real> | ||
49 | <real>0</real> | ||
50 | <real>1</real> | ||
51 | </array> | ||
52 | <key>cloud_scroll_rate</key> | ||
53 | <array> | ||
54 | <real>2.8600001335144043</real> | ||
55 | <real>17.589999675750732</real> | ||
56 | </array> | ||
57 | <key>cloud_shadow</key> | ||
58 | <array> | ||
59 | <real>0.42999997735023499</real> | ||
60 | <real>0</real> | ||
61 | <real>0</real> | ||
62 | <real>1</real> | ||
63 | </array> | ||
64 | <key>density_multiplier</key> | ||
65 | <array> | ||
66 | <real>0.00015999999595806003</real> | ||
67 | <real>0</real> | ||
68 | <real>0</real> | ||
69 | <real>1</real> | ||
70 | </array> | ||
71 | <key>distance_multiplier</key> | ||
72 | <array> | ||
73 | <real>2.1000001430511475</real> | ||
74 | <real>0</real> | ||
75 | <real>0</real> | ||
76 | <real>1</real> | ||
77 | </array> | ||
78 | <key>east_angle</key> | ||
79 | <real>3.7699110507965088</real> | ||
80 | <key>enable_cloud_scroll</key> | ||
81 | <array> | ||
82 | <boolean>1</boolean> | ||
83 | <boolean>1</boolean> | ||
84 | </array> | ||
85 | <key>gamma</key> | ||
86 | <array> | ||
87 | <real>1.1100000143051147</real> | ||
88 | <real>0</real> | ||
89 | <real>0</real> | ||
90 | <real>1</real> | ||
91 | </array> | ||
92 | <key>glow</key> | ||
93 | <array> | ||
94 | <real>14.000000953674316</real> | ||
95 | <real>0.0010000000474974513</real> | ||
96 | <real>-0.89999997615814209</real> | ||
97 | <real>1</real> | ||
98 | </array> | ||
99 | <key>haze_density</key> | ||
100 | <array> | ||
101 | <real>0.82999998331069946</real> | ||
102 | <real>0</real> | ||
103 | <real>0</real> | ||
104 | <real>1</real> | ||
105 | </array> | ||
106 | <key>haze_horizon</key> | ||
107 | <array> | ||
108 | <real>0.2800000011920929</real> | ||
109 | <real>0.19915600121021271</real> | ||
110 | <real>0.19915600121021271</real> | ||
111 | <real>1</real> | ||
112 | </array> | ||
113 | <key>lightnorm</key> | ||
114 | <array> | ||
115 | <real>0.58778512477874756</real> | ||
116 | <real>0</real> | ||
117 | <real>-0.80901706218719482</real> | ||
118 | <real>0</real> | ||
119 | </array> | ||
120 | <key>max_y</key> | ||
121 | <array> | ||
122 | <real>276</real> | ||
123 | <real>0</real> | ||
124 | <real>0</real> | ||
125 | <real>1</real> | ||
126 | </array> | ||
127 | <key>preset_num</key> | ||
128 | <integer>24</integer> | ||
129 | <key>star_brightness</key> | ||
130 | <real>1.1699999570846558</real> | ||
131 | <key>sun_angle</key> | ||
132 | <real>0</real> | ||
133 | <key>sunlight_color</key> | ||
134 | <array> | ||
135 | <real>0.29999998211860657</real> | ||
136 | <real>0.29999998211860657</real> | ||
137 | <real>0.29999998211860657</real> | ||
138 | <real>0.099999994039535522</real> | ||
139 | </array> | ||
140 | </map> | ||
141 | </llsd> | ||
diff --git a/linden/indra/newview/llchatbar.cpp b/linden/indra/newview/llchatbar.cpp index 1b1284d..1de3690 100644 --- a/linden/indra/newview/llchatbar.cpp +++ b/linden/indra/newview/llchatbar.cpp | |||
@@ -616,7 +616,7 @@ void LLChatBar::sendChatFromViewer(const LLWString &wtext, EChatType type, BOOL | |||
616 | { | 616 | { |
617 | // Look for "/20 foo" channel chats. | 617 | // Look for "/20 foo" channel chats. |
618 | S32 channel = mChannelControl ? (S32)(getChild<LLSpinCtrl>("channel_control")->get()) : 0; | 618 | S32 channel = mChannelControl ? (S32)(getChild<LLSpinCtrl>("channel_control")->get()) : 0; |
619 | //S32 channel = (S32)(getChild<LLSpinCtrl>("ChatChannel")->get()); | 619 | |
620 | LLWString out_text = stripChannelNumber(wtext, &channel); | 620 | LLWString out_text = stripChannelNumber(wtext, &channel); |
621 | std::string utf8_out_text = wstring_to_utf8str(out_text); | 621 | std::string utf8_out_text = wstring_to_utf8str(out_text); |
622 | std::string utf8_text = wstring_to_utf8str(wtext); | 622 | std::string utf8_text = wstring_to_utf8str(wtext); |
diff --git a/linden/indra/newview/llfilepicker.cpp b/linden/indra/newview/llfilepicker.cpp index caf79eb..954a274 100644 --- a/linden/indra/newview/llfilepicker.cpp +++ b/linden/indra/newview/llfilepicker.cpp | |||
@@ -998,6 +998,12 @@ GtkWindow* LLFilePicker::buildFilePicker(bool is_save, bool is_folder, std::stri | |||
998 | (GTK_FILE_CHOOSER(win), | 998 | (GTK_FILE_CHOOSER(win), |
999 | this_path->second.c_str()); | 999 | this_path->second.c_str()); |
1000 | } | 1000 | } |
1001 | else if (getenv("HOME")) | ||
1002 | { | ||
1003 | gtk_file_chooser_set_current_folder | ||
1004 | (GTK_FILE_CHOOSER(win), | ||
1005 | getenv("HOME")); | ||
1006 | } | ||
1001 | 1007 | ||
1002 | # if LL_X11 | 1008 | # if LL_X11 |
1003 | // Make GTK tell the window manager to associate this | 1009 | // Make GTK tell the window manager to associate this |
diff --git a/linden/indra/newview/llfirstuse.cpp b/linden/indra/newview/llfirstuse.cpp index ee7053d..b807b17 100644 --- a/linden/indra/newview/llfirstuse.cpp +++ b/linden/indra/newview/llfirstuse.cpp | |||
@@ -131,6 +131,17 @@ void LLFirstUse::useMap() | |||
131 | } | 131 | } |
132 | 132 | ||
133 | // static | 133 | // static |
134 | void LLFirstUse::useMiniMap() | ||
135 | { | ||
136 | if (gSavedSettings.getWarning("FirstMiniMap")) | ||
137 | { | ||
138 | gSavedSettings.setWarning("FirstMiniMap", FALSE); | ||
139 | |||
140 | LLNotifyBox::showXml("FirstMiniMap"); | ||
141 | } | ||
142 | } | ||
143 | |||
144 | // static | ||
134 | void LLFirstUse::useGoTo() | 145 | void LLFirstUse::useGoTo() |
135 | { | 146 | { |
136 | // nothing for now JC | 147 | // nothing for now JC |
diff --git a/linden/indra/newview/llfirstuse.h b/linden/indra/newview/llfirstuse.h index eef0537..cbb31ab 100644 --- a/linden/indra/newview/llfirstuse.h +++ b/linden/indra/newview/llfirstuse.h | |||
@@ -92,6 +92,7 @@ public: | |||
92 | static void useBalanceDecrease(S32 delta); | 92 | static void useBalanceDecrease(S32 delta); |
93 | static void useSit(); | 93 | static void useSit(); |
94 | static void useMap(); | 94 | static void useMap(); |
95 | static void useMiniMap(); | ||
95 | static void useGoTo(); | 96 | static void useGoTo(); |
96 | static void useBuild(); | 97 | static void useBuild(); |
97 | static void useLeftClickNoHit(); | 98 | static void useLeftClickNoHit(); |
diff --git a/linden/indra/newview/llfloaterabout.cpp b/linden/indra/newview/llfloaterabout.cpp index 63f72af..57c5339 100644 --- a/linden/indra/newview/llfloaterabout.cpp +++ b/linden/indra/newview/llfloaterabout.cpp | |||
@@ -119,7 +119,7 @@ LLFloaterAbout::LLFloaterAbout() | |||
119 | __DATE__, __TIME__); | 119 | __DATE__, __TIME__); |
120 | 120 | ||
121 | support_widget->appendColoredText(version, FALSE, FALSE, gColors.getColor("TextFgReadOnlyColor")); | 121 | support_widget->appendColoredText(version, FALSE, FALSE, gColors.getColor("TextFgReadOnlyColor")); |
122 | support_widget->appendStyledText(LLTrans::getString("ReleaseNotes"), FALSE, FALSE, &viewer_link_style); | 122 | support_widget->appendStyledText(LLTrans::getString("ReleaseNotes"), false, false, viewer_link_style); |
123 | 123 | ||
124 | std::string support; | 124 | std::string support; |
125 | support.append("\n\n"); | 125 | support.append("\n\n"); |
@@ -163,7 +163,7 @@ LLFloaterAbout::LLFloaterAbout() | |||
163 | support.append("\n"); | 163 | support.append("\n"); |
164 | 164 | ||
165 | support_widget->appendColoredText(support, FALSE, FALSE, gColors.getColor("TextFgReadOnlyColor")); | 165 | support_widget->appendColoredText(support, FALSE, FALSE, gColors.getColor("TextFgReadOnlyColor")); |
166 | support_widget->appendStyledText(LLTrans::getString("ReleaseNotes"), FALSE, FALSE, &server_link_style); | 166 | support_widget->appendStyledText(LLTrans::getString("ReleaseNotes"), false, false, server_link_style); |
167 | 167 | ||
168 | support = "\n\n"; | 168 | support = "\n\n"; |
169 | } | 169 | } |
diff --git a/linden/indra/newview/llfloaterchat.cpp b/linden/indra/newview/llfloaterchat.cpp index 68aaceb..1f51a21 100644 --- a/linden/indra/newview/llfloaterchat.cpp +++ b/linden/indra/newview/llfloaterchat.cpp | |||
@@ -189,7 +189,7 @@ void LLFloaterChat::updateConsoleVisibility() | |||
189 | || (getHost() && getHost()->isMinimized() )); // are we hosted in a minimized floater? | 189 | || (getHost() && getHost()->isMinimized() )); // are we hosted in a minimized floater? |
190 | } | 190 | } |
191 | 191 | ||
192 | void add_timestamped_line(LLViewerTextEditor* edit, const LLChat &chat, const LLColor4& color) | 192 | void add_timestamped_line(LLViewerTextEditor* edit, LLChat chat, const LLColor4& color) |
193 | { | 193 | { |
194 | std::string line = chat.mText; | 194 | std::string line = chat.mText; |
195 | bool prepend_newline = true; | 195 | bool prepend_newline = true; |
@@ -199,20 +199,25 @@ void add_timestamped_line(LLViewerTextEditor* edit, const LLChat &chat, const LL | |||
199 | prepend_newline = false; | 199 | prepend_newline = false; |
200 | } | 200 | } |
201 | 201 | ||
202 | // If the msg is not from an agent (not yourself though), | 202 | // If the msg is from an agent (not yourself though), |
203 | // extract out the sender name and replace it with the hotlinked name. | 203 | // extract out the sender name and replace it with the hotlinked name. |
204 | if (chat.mSourceType == CHAT_SOURCE_AGENT && | 204 | if (chat.mSourceType == CHAT_SOURCE_AGENT && |
205 | chat.mFromID != LLUUID::null && | 205 | chat.mFromID != LLUUID::null && |
206 | // (line.length() > chat.mFromName.length() && line.find(chat.mFromName,0) == 0)) | ||
207 | (line.length() > chat.mFromName.length() && line.find(chat.mFromName,0) == 0) && | ||
208 | // [RLVa] - Version: 1.22.11 | Checked: 2009-07-08 (RLVa-1.0.0e) | 206 | // [RLVa] - Version: 1.22.11 | Checked: 2009-07-08 (RLVa-1.0.0e) |
209 | (!gRlvHandler.hasBehaviour(RLV_BHVR_SHOWNAMES)) ) | 207 | (!gRlvHandler.hasBehaviour(RLV_BHVR_SHOWNAMES)) ) |
210 | // [/RLVa] | 208 | // [/RLVa] |
211 | { | 209 | { |
210 | chat.mURL = llformat("secondlife:///app/agent/%s/about",chat.mFromID.asString().c_str()); | ||
211 | } | ||
212 | |||
213 | // If the chat line has an associated url, link it up to the name. | ||
214 | if (!chat.mURL.empty() | ||
215 | && (line.length() > chat.mFromName.length() && line.find(chat.mFromName,0) == 0)) | ||
216 | { | ||
212 | std::string start_line = line.substr(0, chat.mFromName.length() + 1); | 217 | std::string start_line = line.substr(0, chat.mFromName.length() + 1); |
213 | line = line.substr(chat.mFromName.length() + 1); | 218 | line = line.substr(chat.mFromName.length() + 1); |
214 | const LLStyleSP &sourceStyle = LLStyleMap::instance().lookup(chat.mFromID); | 219 | const LLStyleSP &sourceStyle = LLStyleMap::instance().lookup(chat.mFromID,chat.mURL); |
215 | edit->appendStyledText(start_line, false, prepend_newline, &sourceStyle); | 220 | edit->appendStyledText(start_line, false, prepend_newline, sourceStyle); |
216 | prepend_newline = false; | 221 | prepend_newline = false; |
217 | } | 222 | } |
218 | edit->appendColoredText(line, false, prepend_newline, color); | 223 | edit->appendColoredText(line, false, prepend_newline, color); |
diff --git a/linden/indra/newview/llfloaterchatterbox.h b/linden/indra/newview/llfloaterchatterbox.h index 39e1025..04833ab 100644 --- a/linden/indra/newview/llfloaterchatterbox.h +++ b/linden/indra/newview/llfloaterchatterbox.h | |||
@@ -149,7 +149,14 @@ public: | |||
149 | { | 149 | { |
150 | if (visible(instance, key)) | 150 | if (visible(instance, key)) |
151 | { | 151 | { |
152 | LLFloaterChatterBox::hideInstance(); | 152 | if(instance->getHost()) |
153 | { | ||
154 | LLFloaterChatterBox::hideInstance(); | ||
155 | } | ||
156 | else | ||
157 | { | ||
158 | VisibilityPolicy<LLFloater>::hide(instance, key); | ||
159 | } | ||
153 | } | 160 | } |
154 | } | 161 | } |
155 | 162 | ||
diff --git a/linden/indra/newview/llfloatermap.cpp b/linden/indra/newview/llfloatermap.cpp index 8714d4f..3be891e 100644 --- a/linden/indra/newview/llfloatermap.cpp +++ b/linden/indra/newview/llfloatermap.cpp | |||
@@ -42,14 +42,40 @@ | |||
42 | #include "llresizebar.h" | 42 | #include "llresizebar.h" |
43 | #include "lluictrlfactory.h" | 43 | #include "lluictrlfactory.h" |
44 | 44 | ||
45 | // radar | ||
46 | #include "llfirstuse.h" | ||
47 | #include "llfloateravatarinfo.h" | ||
48 | #include "llfloaterfriends.h" | ||
49 | #include "llfloatergroupinvite.h" | ||
50 | #include "llfloatergroups.h" | ||
51 | #include "llfloaterreporter.h" | ||
52 | #include "llimview.h" | ||
53 | #include "llmutelist.h" | ||
54 | #include "llparcel.h" | ||
55 | #include "llregionposition.h" | ||
56 | #include "roles_constants.h" | ||
57 | #include "llscrolllistctrl.h" | ||
58 | #include "lltracker.h" | ||
59 | #include "llviewerobjectlist.h" | ||
60 | #include "llviewermenu.h" | ||
61 | #include "llviewermessage.h" | ||
62 | #include "llviewerparcelmgr.h" | ||
63 | #include "llviewerregion.h" | ||
64 | #include "llviewerwindow.h" | ||
65 | #include "llvoavatar.h" | ||
66 | #include "llworld.h" | ||
67 | |||
45 | LLFloaterMap::LLFloaterMap(const LLSD& key) | 68 | LLFloaterMap::LLFloaterMap(const LLSD& key) |
46 | : | 69 | : |
47 | LLFloater(std::string("minimap")), | 70 | LLFloater(std::string("minimap")), |
48 | mPanelMap(NULL) | 71 | mPanelMap(NULL), |
72 | mUpdate(TRUE) | ||
49 | { | 73 | { |
50 | LLCallbackMap::map_t factory_map; | 74 | LLCallbackMap::map_t factory_map; |
51 | factory_map["mini_mapview"] = LLCallbackMap(createPanelMiniMap, this); | 75 | factory_map["mini_mapview"] = LLCallbackMap(createPanelMiniMap, this); |
52 | LLUICtrlFactory::getInstance()->buildFloater(this, "floater_mini_map.xml", &factory_map, FALSE); | 76 | LLUICtrlFactory::getInstance()->buildFloater(this, "floater_mini_map.xml", &factory_map, FALSE); |
77 | |||
78 | mSelectedAvatar.setNull(); | ||
53 | } | 79 | } |
54 | 80 | ||
55 | 81 | ||
@@ -67,6 +93,30 @@ BOOL LLFloaterMap::postBuild() | |||
67 | sendChildToBack(getDragHandle()); | 93 | sendChildToBack(getDragHandle()); |
68 | sendChildToFront(getChild<LLButton>("llfloater_close_btn")); | 94 | sendChildToFront(getChild<LLButton>("llfloater_close_btn")); |
69 | setIsChrome(TRUE); | 95 | setIsChrome(TRUE); |
96 | |||
97 | mRadarList = getChild<LLScrollListCtrl>("RadarList"); | ||
98 | childSetCommitCallback("RadarList", onList, this); | ||
99 | mRadarList->setDoubleClickCallback(onClickIM); | ||
100 | |||
101 | childSetFocusChangedCallback("near_me_range", onRangeChange, this); | ||
102 | |||
103 | childSetAction("im_btn", onClickIM, this); | ||
104 | childSetAction("profile_btn", onClickProfile, this); | ||
105 | childSetAction("offer_teleport_btn", onClickOfferTeleport, this); | ||
106 | childSetAction("track_btn", onClickTrack, this); | ||
107 | childSetAction("invite_btn", onClickInvite, this); | ||
108 | childSetAction("add_btn", onClickAddFriend, this); | ||
109 | childSetAction("freeze_btn", onClickFreeze, this); | ||
110 | childSetAction("eject_btn", onClickEject, this); | ||
111 | childSetAction("mute_btn", onClickMute, this); | ||
112 | childSetAction("unmute_btn", onClickUnmute, this); | ||
113 | childSetAction("ar_btn", onClickAR, this); | ||
114 | childSetAction("estate_eject_btn", onClickEjectFromEstate, this); | ||
115 | |||
116 | setDefaultBtn("im_btn"); | ||
117 | |||
118 | populateRadar(); | ||
119 | |||
70 | return TRUE; | 120 | return TRUE; |
71 | } | 121 | } |
72 | 122 | ||
@@ -122,13 +172,597 @@ void LLFloaterMap::draw() | |||
122 | } | 172 | } |
123 | } | 173 | } |
124 | 174 | ||
125 | |||
126 | // [RLVa:KB] - Version: 1.22.11 | Checked: 2009-07-05 (RLVa-1.0.0c) | 175 | // [RLVa:KB] - Version: 1.22.11 | Checked: 2009-07-05 (RLVa-1.0.0c) |
127 | void LLFloaterMap::open() | 176 | void LLFloaterMap::open() |
128 | { | 177 | { |
129 | if (!gRlvHandler.hasBehaviour(RLV_BHVR_SHOWMINIMAP)) | 178 | if (!gRlvHandler.hasBehaviour(RLV_BHVR_SHOWMINIMAP)) |
130 | { | 179 | { |
131 | LLFloater::open(); | 180 | LLFloater::open(); |
181 | LLFirstUse::useMiniMap(); | ||
132 | } | 182 | } |
133 | } | 183 | } |
134 | // [/RLVa:KB] | 184 | // [/RLVa:KB] |
185 | |||
186 | // TODO: make this detachable | ||
187 | // TODO: make this expand/collapse | ||
188 | |||
189 | /* | ||
190 | * Imprudence Radar | ||
191 | * @brief inworld radar integrated with the minimap | ||
192 | * by McCabe Maxsted | ||
193 | * Estate tab portion by Dale Glass | ||
194 | */ | ||
195 | |||
196 | //static | ||
197 | void LLFloaterMap::updateRadar() | ||
198 | { | ||
199 | LLFloaterMap::getInstance()->populateRadar(); | ||
200 | } | ||
201 | |||
202 | void LLFloaterMap::populateRadar() | ||
203 | { | ||
204 | if (!mUpdate || !LLFloaterMap::getInstance()->getVisible()) | ||
205 | { | ||
206 | return; | ||
207 | } | ||
208 | |||
209 | if (visibleItemsSelected()) | ||
210 | { | ||
211 | mSelectedAvatar = mRadarList->getFirstSelected()->getUUID(); | ||
212 | } | ||
213 | else | ||
214 | { | ||
215 | mSelectedAvatar.setNull(); | ||
216 | } | ||
217 | |||
218 | S32 scroll_pos = mRadarList->getScrollPos(); | ||
219 | |||
220 | LLVector3d current_pos = gAgent.getPositionGlobal(); | ||
221 | |||
222 | // find what avatars you can see | ||
223 | std::vector<LLUUID> avatar_ids; | ||
224 | std::vector<LLVector3d> positions; | ||
225 | LLWorld::getInstance()->getAvatars(&avatar_ids, &positions, current_pos, gSavedSettings.getF32("NearMeRange")); | ||
226 | |||
227 | LLSD element; | ||
228 | |||
229 | mRadarList->deleteAllItems(); | ||
230 | |||
231 | for (U32 i=0; i<avatar_ids.size(); i++) | ||
232 | { | ||
233 | if (avatar_ids[i] == gAgent.getID() || | ||
234 | avatar_ids[i].isNull()) | ||
235 | { | ||
236 | continue; | ||
237 | } | ||
238 | |||
239 | // Add to list only if we get their name | ||
240 | std::string fullname = getSelectedName(avatar_ids[i]); | ||
241 | if (!fullname.empty()) | ||
242 | { | ||
243 | std::string mute_text = LLMuteList::getInstance()->isMuted(avatar_ids[i]) ? getString("muted") : ""; | ||
244 | element["id"] = avatar_ids[i]; | ||
245 | element["columns"][0]["column"] = "avatar_name"; | ||
246 | element["columns"][0]["type"] = "text"; | ||
247 | element["columns"][0]["value"] = fullname + " " + mute_text; | ||
248 | element["columns"][1]["column"] = "avatar_distance"; | ||
249 | element["columns"][1]["type"] = "text"; | ||
250 | |||
251 | LLVector3d temp = positions[i] - current_pos; | ||
252 | F32 distance = (F32)temp.magVec(); | ||
253 | char dist[32]; | ||
254 | snprintf(dist, sizeof(dist), "%.1f", distance); | ||
255 | element["columns"][1]["value"] = strcat(dist,"m"); | ||
256 | |||
257 | mRadarList->addElement(element, ADD_BOTTOM); | ||
258 | } | ||
259 | } | ||
260 | |||
261 | mRadarList->sortItems(); | ||
262 | mRadarList->setScrollPos(scroll_pos); | ||
263 | if (mSelectedAvatar.notNull()) | ||
264 | { | ||
265 | mRadarList->selectByID(mSelectedAvatar); | ||
266 | } | ||
267 | |||
268 | // set count | ||
269 | std::stringstream avatar_count; | ||
270 | avatar_count.str(""); | ||
271 | if (avatar_ids.empty()) | ||
272 | { | ||
273 | mRadarList->addCommentText(getString("no_one_near"), ADD_TOP); | ||
274 | avatar_count << "0"; | ||
275 | } | ||
276 | else | ||
277 | { | ||
278 | avatar_count << (int)avatar_ids.size(); | ||
279 | } | ||
280 | childSetText("lblAvatarCount", avatar_count.str()); | ||
281 | |||
282 | toggleButtons(); | ||
283 | |||
284 | //llinfos << "mSelectedAvatar: " << mSelectedAvatar.asString() << llendl; | ||
285 | } | ||
286 | |||
287 | void LLFloaterMap::toggleButtons() | ||
288 | { | ||
289 | BOOL enable = FALSE; | ||
290 | BOOL enable_unmute = FALSE; | ||
291 | BOOL enable_track = FALSE; | ||
292 | BOOL enable_estate = FALSE; | ||
293 | if (childHasFocus("RadarPanel")) | ||
294 | { | ||
295 | enable = mSelectedAvatar.notNull() ? visibleItemsSelected() : FALSE; | ||
296 | enable_unmute = mSelectedAvatar.notNull() ? LLMuteList::getInstance()->isMuted(mSelectedAvatar) : FALSE; | ||
297 | enable_track = gAgent.isGodlike() || is_agent_mappable(mSelectedAvatar); | ||
298 | enable_estate = getKickable(mSelectedAvatar); | ||
299 | } | ||
300 | else | ||
301 | { | ||
302 | mRadarList->deselect(); | ||
303 | } | ||
304 | |||
305 | childSetEnabled("im_btn", enable); | ||
306 | childSetEnabled("profile_btn", enable); | ||
307 | childSetEnabled("offer_teleport_btn", enable); | ||
308 | childSetEnabled("track_btn", enable_track); | ||
309 | childSetEnabled("invite_btn", enable); | ||
310 | childSetEnabled("add_btn", enable); | ||
311 | childSetEnabled("freeze_btn", enable_estate); | ||
312 | childSetEnabled("eject_btn", enable_estate); | ||
313 | childSetEnabled("mute_btn", enable); | ||
314 | childSetEnabled("unmute_btn", enable_unmute); | ||
315 | childSetEnabled("ar_btn", enable); | ||
316 | childSetEnabled("estate_eject_btn", enable_estate); | ||
317 | } | ||
318 | |||
319 | BOOL LLFloaterMap::getKickable(const LLUUID &agent_id) | ||
320 | { | ||
321 | if (agent_id.notNull()) | ||
322 | { | ||
323 | LLViewerObject* av_obj = gObjectList.findObject(agent_id); | ||
324 | if (av_obj != NULL && av_obj->isAvatar()) | ||
325 | { | ||
326 | LLVOAvatar* avatar = (LLVOAvatar*)av_obj; | ||
327 | LLViewerRegion* region = avatar->getRegion(); | ||
328 | if (region) | ||
329 | { | ||
330 | const LLVector3& pos = avatar->getPositionRegion(); | ||
331 | const LLVector3d& pos_global = avatar->getPositionGlobal(); | ||
332 | if (LLWorld::getInstance()->positionRegionValidGlobal(pos_global)) | ||
333 | { | ||
334 | LLParcel* parcel = LLViewerParcelMgr::getInstance()->selectParcelAt(pos_global)->getParcel(); | ||
335 | |||
336 | BOOL new_value = (region != NULL); | ||
337 | |||
338 | if (new_value) | ||
339 | { | ||
340 | new_value = region->isOwnedSelf(pos); | ||
341 | if (!new_value || region->isOwnedGroup(pos)) | ||
342 | { | ||
343 | new_value = LLViewerParcelMgr::getInstance()->isParcelOwnedByAgent(parcel,GP_LAND_ADMIN); | ||
344 | } | ||
345 | } | ||
346 | return new_value; | ||
347 | } | ||
348 | } | ||
349 | } | ||
350 | } | ||
351 | return FALSE; | ||
352 | } | ||
353 | |||
354 | // static | ||
355 | void LLFloaterMap::onList(LLUICtrl* ctrl, void* user_data) | ||
356 | { | ||
357 | LLFloaterMap* self = (LLFloaterMap*)user_data; | ||
358 | if (self) | ||
359 | { | ||
360 | self->toggleButtons(); | ||
361 | } | ||
362 | } | ||
363 | |||
364 | BOOL LLFloaterMap::visibleItemsSelected() const | ||
365 | { | ||
366 | if (mRadarList->getFirstSelectedIndex() >= 0) | ||
367 | { | ||
368 | return TRUE; | ||
369 | } | ||
370 | return FALSE; | ||
371 | } | ||
372 | |||
373 | // static | ||
374 | void LLFloaterMap::onRangeChange(LLFocusableElement* focus, void* user_data) | ||
375 | { | ||
376 | LLFloaterMap* self = (LLFloaterMap*)user_data; | ||
377 | if (self) | ||
378 | { | ||
379 | self->mUpdate = !(self->childHasFocus("near_me_range")); | ||
380 | } | ||
381 | } | ||
382 | |||
383 | // static | ||
384 | LLUUID LLFloaterMap::getSelected() | ||
385 | { | ||
386 | return LLFloaterMap::getInstance()->mSelectedAvatar; | ||
387 | } | ||
388 | |||
389 | // | ||
390 | // Avatar tab | ||
391 | // | ||
392 | |||
393 | // static | ||
394 | void LLFloaterMap::onClickIM(void* user_data) | ||
395 | { | ||
396 | LLFloaterMap* self = (LLFloaterMap*) user_data; | ||
397 | LLScrollListItem *item = self->mRadarList->getFirstSelected(); | ||
398 | if (item != NULL) | ||
399 | { | ||
400 | LLUUID agent_id = item->getUUID(); | ||
401 | gIMMgr->setFloaterOpen(TRUE); | ||
402 | gIMMgr->addSession(getSelectedName(agent_id), IM_NOTHING_SPECIAL, agent_id); | ||
403 | } | ||
404 | } | ||
405 | |||
406 | // static | ||
407 | void LLFloaterMap::onClickProfile(void* user_data) | ||
408 | { | ||
409 | LLFloaterMap* self = (LLFloaterMap*) user_data; | ||
410 | LLScrollListItem *item = self->mRadarList->getFirstSelected(); | ||
411 | if (item != NULL) | ||
412 | { | ||
413 | LLUUID agent_id = item->getUUID(); | ||
414 | LLFloaterAvatarInfo::show(agent_id); | ||
415 | } | ||
416 | } | ||
417 | |||
418 | // static | ||
419 | void LLFloaterMap::onClickOfferTeleport(void* user_data) | ||
420 | { | ||
421 | LLFloaterMap* self = (LLFloaterMap*) user_data; | ||
422 | LLScrollListItem *item = self->mRadarList->getFirstSelected(); | ||
423 | if (item != NULL) | ||
424 | { | ||
425 | LLUUID agent_id = item->getUUID(); | ||
426 | handle_lure(agent_id); | ||
427 | } | ||
428 | } | ||
429 | |||
430 | // static | ||
431 | void LLFloaterMap::onClickTrack(void* user_data) | ||
432 | { | ||
433 | LLFloaterMap* self = (LLFloaterMap*) user_data; | ||
434 | LLTracker::ETrackingStatus tracking_status = LLTracker::getTrackingStatus(); | ||
435 | |||
436 | if (LLTracker::TRACKING_AVATAR == tracking_status) | ||
437 | { | ||
438 | LLTracker::stopTracking(NULL); | ||
439 | } | ||
440 | else | ||
441 | { | ||
442 | LLScrollListItem *item = self->mRadarList->getFirstSelected(); | ||
443 | if (item != NULL) | ||
444 | { | ||
445 | LLUUID agent_id = item->getUUID(); | ||
446 | LLTracker::trackAvatar(agent_id, getSelectedName(agent_id)); | ||
447 | } | ||
448 | } | ||
449 | } | ||
450 | |||
451 | // static | ||
452 | void LLFloaterMap::onClickInvite(void* user_data) | ||
453 | { | ||
454 | LLFloaterMap* self = (LLFloaterMap*) user_data; | ||
455 | LLScrollListItem *item = self->mRadarList->getFirstSelected(); | ||
456 | if (item != NULL) | ||
457 | { | ||
458 | LLUUID agent_id = item->getUUID(); | ||
459 | LLFloaterGroupPicker* widget; | ||
460 | widget = LLFloaterGroupPicker::showInstance(LLSD(gAgent.getID())); | ||
461 | if (widget) | ||
462 | { | ||
463 | widget->center(); | ||
464 | widget->setPowersMask(GP_MEMBER_INVITE); | ||
465 | widget->setSelectCallback(callback_invite_to_group, (void *)&agent_id); | ||
466 | } | ||
467 | } | ||
468 | } | ||
469 | |||
470 | // static | ||
471 | void LLFloaterMap::callback_invite_to_group(LLUUID group_id, void *user_data) | ||
472 | { | ||
473 | std::vector<LLUUID> agent_ids; | ||
474 | agent_ids.push_back(*(LLUUID *)user_data); | ||
475 | |||
476 | LLFloaterGroupInvite::showForGroup(group_id, &agent_ids); | ||
477 | } | ||
478 | |||
479 | // static | ||
480 | void LLFloaterMap::onClickAddFriend(void* user_data) | ||
481 | { | ||
482 | LLFloaterMap* self = (LLFloaterMap*) user_data; | ||
483 | LLScrollListItem *item = self->mRadarList->getFirstSelected(); | ||
484 | if (item != NULL) | ||
485 | { | ||
486 | LLUUID agent_id = item->getUUID(); | ||
487 | LLPanelFriends::requestFriendshipDialog(agent_id, getSelectedName(agent_id)); | ||
488 | } | ||
489 | } | ||
490 | |||
491 | // | ||
492 | // Estate tab | ||
493 | // | ||
494 | |||
495 | //static | ||
496 | std::string LLFloaterMap::getSelectedName(const LLUUID &agent_id) | ||
497 | { | ||
498 | std::string agent_name; | ||
499 | if(gCacheName->getFullName(agent_id, agent_name) && agent_name != " ") | ||
500 | { | ||
501 | return agent_name; | ||
502 | } | ||
503 | return LLStringUtil::null; | ||
504 | } | ||
505 | |||
506 | //static | ||
507 | void LLFloaterMap::callbackFreeze(S32 option, void *user_data) | ||
508 | { | ||
509 | LLFloaterMap *self = (LLFloaterMap*)user_data; | ||
510 | |||
511 | if ( option == 0 ) | ||
512 | { | ||
513 | sendFreeze(self->mSelectedAvatar, true); | ||
514 | } | ||
515 | else if ( option == 1 ) | ||
516 | { | ||
517 | sendFreeze(self->mSelectedAvatar, false); | ||
518 | } | ||
519 | } | ||
520 | |||
521 | //static | ||
522 | void LLFloaterMap::callbackEject(S32 option, void *user_data) | ||
523 | { | ||
524 | LLFloaterMap *self = (LLFloaterMap*)user_data; | ||
525 | |||
526 | if ( option == 0 ) | ||
527 | { | ||
528 | sendEject(self->mSelectedAvatar, false); | ||
529 | } | ||
530 | else if ( option == 1 ) | ||
531 | { | ||
532 | sendEject(self->mSelectedAvatar, true); | ||
533 | } | ||
534 | } | ||
535 | |||
536 | //static | ||
537 | void LLFloaterMap::callbackEjectFromEstate(S32 option, void *user_data) | ||
538 | { | ||
539 | LLFloaterMap *self = (LLFloaterMap*)user_data; | ||
540 | |||
541 | if ( option == 0 ) | ||
542 | { | ||
543 | cmdEstateEject(self->mSelectedAvatar); | ||
544 | } | ||
545 | else if ( option == 1 ) | ||
546 | { | ||
547 | cmdEstateBan(self->mSelectedAvatar); | ||
548 | } | ||
549 | } | ||
550 | |||
551 | void LLFloaterMap::onClickFreeze(void *user_data) | ||
552 | { | ||
553 | LLFloaterMap *self = (LLFloaterMap*)user_data; | ||
554 | LLStringUtil::format_map_t args; | ||
555 | LLSD payload; | ||
556 | args["[AVATAR_NAME]"] = getSelectedName(self->mSelectedAvatar); | ||
557 | gViewerWindow->alertXml("FreezeAvatarFullname", args, callbackFreeze, user_data); | ||
558 | } | ||
559 | |||
560 | //static | ||
561 | void LLFloaterMap::onClickEject(void *user_data) | ||
562 | { | ||
563 | LLFloaterMap *self = (LLFloaterMap*)user_data; | ||
564 | LLStringUtil::format_map_t args; | ||
565 | LLSD payload; | ||
566 | args["AVATAR_NAME"] = getSelectedName(self->mSelectedAvatar); | ||
567 | gViewerWindow->alertXml("EjectAvatarFullName", args, callbackEject, user_data); | ||
568 | } | ||
569 | |||
570 | //static | ||
571 | void LLFloaterMap::onClickMute(void *user_data) | ||
572 | { | ||
573 | LLFloaterMap *self = (LLFloaterMap*)user_data; | ||
574 | LLScrollListItem *item = self->mRadarList->getFirstSelected(); | ||
575 | if (item != NULL) | ||
576 | { | ||
577 | LLUUID agent_id = item->getUUID(); | ||
578 | std::string agent_name = getSelectedName(agent_id); | ||
579 | if (LLMuteList::getInstance()->isMuted(agent_id)) | ||
580 | { | ||
581 | //LLMute mute(agent_id, agent_name, LLMute::AGENT); | ||
582 | //LLMuteList::getInstance()->remove(mute); | ||
583 | //LLFloaterMute::getInstance()->selectMute(agent_id); | ||
584 | } | ||
585 | else | ||
586 | { | ||
587 | LLMute mute(agent_id, agent_name, LLMute::AGENT); | ||
588 | LLMuteList::getInstance()->add(mute); | ||
589 | } | ||
590 | } | ||
591 | } | ||
592 | |||
593 | //static | ||
594 | void LLFloaterMap::onClickUnmute(void *user_data) | ||
595 | { | ||
596 | LLFloaterMap *self = (LLFloaterMap*)user_data; | ||
597 | LLScrollListItem *item = self->mRadarList->getFirstSelected(); | ||
598 | if (item != NULL) | ||
599 | { | ||
600 | LLUUID agent_id = item->getUUID(); | ||
601 | std::string agent_name = getSelectedName(agent_id); | ||
602 | if (LLMuteList::getInstance()->isMuted(agent_id)) | ||
603 | { | ||
604 | LLMute mute(agent_id, agent_name, LLMute::AGENT); | ||
605 | LLMuteList::getInstance()->remove(mute); | ||
606 | //LLFloaterMute::getInstance()->selectMute(agent_id); | ||
607 | } | ||
608 | else | ||
609 | { | ||
610 | //LLMute mute(agent_id, agent_name, LLMute::AGENT); | ||
611 | //LLMuteList::getInstance()->add(mute); | ||
612 | } | ||
613 | } | ||
614 | } | ||
615 | |||
616 | //static | ||
617 | void LLFloaterMap::onClickEjectFromEstate(void *user_data) | ||
618 | { | ||
619 | LLFloaterMap *self = (LLFloaterMap*)user_data; | ||
620 | LLStringUtil::format_map_t args; | ||
621 | LLSD payload; | ||
622 | args["EVIL_USER"] = getSelectedName(self->mSelectedAvatar); | ||
623 | gViewerWindow->alertXml("EstateKickUser", args, callbackEjectFromEstate, user_data); | ||
624 | } | ||
625 | |||
626 | //static | ||
627 | void LLFloaterMap::onClickAR(void *user_data) | ||
628 | { | ||
629 | LLFloaterMap *self = (LLFloaterMap*)user_data; | ||
630 | LLUUID agent_id = self->mSelectedAvatar; | ||
631 | |||
632 | if (agent_id.notNull()) | ||
633 | { | ||
634 | LLFloaterReporter::showFromObject(agent_id); | ||
635 | } | ||
636 | } | ||
637 | |||
638 | // static | ||
639 | void LLFloaterMap::cmdEstateEject(const LLUUID &avatar) | ||
640 | { | ||
641 | sendEstateMessage("teleporthomeuser", avatar); | ||
642 | } | ||
643 | |||
644 | // static | ||
645 | void LLFloaterMap::cmdEstateBan(const LLUUID &avatar) | ||
646 | { | ||
647 | sendEstateMessage("teleporthomeuser", avatar); // Kick first, just to be sure | ||
648 | sendEstateBan(avatar); | ||
649 | } | ||
650 | |||
651 | // static | ||
652 | void LLFloaterMap::sendFreeze(const LLUUID& avatar_id, bool freeze) | ||
653 | { | ||
654 | U32 flags = 0x0; | ||
655 | if (!freeze) | ||
656 | { | ||
657 | // unfreeze | ||
658 | flags |= 0x1; | ||
659 | } | ||
660 | |||
661 | LLMessageSystem* msg = gMessageSystem; | ||
662 | LLViewerObject* avatar = gObjectList.findObject(avatar_id); | ||
663 | |||
664 | if (avatar) | ||
665 | { | ||
666 | msg->newMessage("FreezeUser"); | ||
667 | msg->nextBlock("AgentData"); | ||
668 | msg->addUUID("AgentID", gAgent.getID()); | ||
669 | msg->addUUID("SessionID", gAgent.getSessionID()); | ||
670 | msg->nextBlock("Data"); | ||
671 | msg->addUUID("TargetID", avatar_id ); | ||
672 | msg->addU32("Flags", flags ); | ||
673 | msg->sendReliable( avatar->getRegion()->getHost() ); | ||
674 | } | ||
675 | } | ||
676 | |||
677 | // static | ||
678 | void LLFloaterMap::sendEject(const LLUUID& avatar_id, bool ban) | ||
679 | { | ||
680 | LLMessageSystem* msg = gMessageSystem; | ||
681 | LLViewerObject* avatar = gObjectList.findObject(avatar_id); | ||
682 | |||
683 | if (avatar) | ||
684 | { | ||
685 | U32 flags = 0x0; | ||
686 | if ( ban ) | ||
687 | { | ||
688 | // eject and add to ban list | ||
689 | flags |= 0x1; | ||
690 | } | ||
691 | |||
692 | msg->newMessage("EjectUser"); | ||
693 | msg->nextBlock("AgentData"); | ||
694 | msg->addUUID("AgentID", gAgent.getID() ); | ||
695 | msg->addUUID("SessionID", gAgent.getSessionID() ); | ||
696 | msg->nextBlock("Data"); | ||
697 | msg->addUUID("TargetID", avatar_id ); | ||
698 | msg->addU32("Flags", flags ); | ||
699 | msg->sendReliable( avatar->getRegion()->getHost() ); | ||
700 | } | ||
701 | } | ||
702 | |||
703 | // static | ||
704 | void LLFloaterMap::sendEstateMessage(const char* request, const LLUUID &target) | ||
705 | { | ||
706 | |||
707 | LLMessageSystem* msg = gMessageSystem; | ||
708 | LLUUID invoice; | ||
709 | |||
710 | // This seems to provide an ID so that the sim can say which request it's | ||
711 | // replying to. I think this can be ignored for now. | ||
712 | invoice.generate(); | ||
713 | |||
714 | llinfos << "Sending estate request '" << request << "'" << llendl; | ||
715 | msg->newMessage("EstateOwnerMessage"); | ||
716 | msg->nextBlockFast(_PREHASH_AgentData); | ||
717 | msg->addUUIDFast(_PREHASH_AgentID, gAgent.getID()); | ||
718 | msg->addUUIDFast(_PREHASH_SessionID, gAgent.getSessionID()); | ||
719 | msg->addUUIDFast(_PREHASH_TransactionID, LLUUID::null); //not used | ||
720 | msg->nextBlock("MethodData"); | ||
721 | msg->addString("Method", request); | ||
722 | msg->addUUID("Invoice", invoice); | ||
723 | |||
724 | // Agent id | ||
725 | msg->nextBlock("ParamList"); | ||
726 | msg->addString("Parameter", gAgent.getID().asString().c_str()); | ||
727 | |||
728 | // Target | ||
729 | msg->nextBlock("ParamList"); | ||
730 | msg->addString("Parameter", target.asString().c_str()); | ||
731 | |||
732 | msg->sendReliable(gAgent.getRegion()->getHost()); | ||
733 | } | ||
734 | |||
735 | // static | ||
736 | void LLFloaterMap::sendEstateBan(const LLUUID& agent) | ||
737 | { | ||
738 | LLUUID invoice; | ||
739 | U32 flags = ESTATE_ACCESS_BANNED_AGENT_ADD; | ||
740 | |||
741 | invoice.generate(); | ||
742 | |||
743 | LLMessageSystem* msg = gMessageSystem; | ||
744 | msg->newMessage("EstateOwnerMessage"); | ||
745 | msg->nextBlockFast(_PREHASH_AgentData); | ||
746 | msg->addUUIDFast(_PREHASH_AgentID, gAgent.getID()); | ||
747 | msg->addUUIDFast(_PREHASH_SessionID, gAgent.getSessionID()); | ||
748 | msg->addUUIDFast(_PREHASH_TransactionID, LLUUID::null); //not used | ||
749 | |||
750 | msg->nextBlock("MethodData"); | ||
751 | msg->addString("Method", "estateaccessdelta"); | ||
752 | msg->addUUID("Invoice", invoice); | ||
753 | |||
754 | char buf[MAX_STRING]; /* Flawfinder: ignore*/ | ||
755 | gAgent.getID().toString(buf); | ||
756 | msg->nextBlock("ParamList"); | ||
757 | msg->addString("Parameter", buf); | ||
758 | |||
759 | snprintf(buf, MAX_STRING, "%u", flags); /* Flawfinder: ignore */ | ||
760 | msg->nextBlock("ParamList"); | ||
761 | msg->addString("Parameter", buf); | ||
762 | |||
763 | agent.toString(buf); | ||
764 | msg->nextBlock("ParamList"); | ||
765 | msg->addString("Parameter", buf); | ||
766 | |||
767 | gAgent.sendReliableMessage(); | ||
768 | } | ||
diff --git a/linden/indra/newview/llfloatermap.h b/linden/indra/newview/llfloatermap.h index 857b1ed..81e4159 100644 --- a/linden/indra/newview/llfloatermap.h +++ b/linden/indra/newview/llfloatermap.h | |||
@@ -33,6 +33,7 @@ | |||
33 | #define LL_LLFLOATERMAP_H | 33 | #define LL_LLFLOATERMAP_H |
34 | 34 | ||
35 | #include "llfloater.h" | 35 | #include "llfloater.h" |
36 | #include "llscrolllistctrl.h" | ||
36 | 37 | ||
37 | class LLNetMap; | 38 | class LLNetMap; |
38 | 39 | ||
@@ -46,6 +47,9 @@ public: | |||
46 | 47 | ||
47 | static void* createPanelMiniMap(void* data); | 48 | static void* createPanelMiniMap(void* data); |
48 | 49 | ||
50 | static void updateRadar(); | ||
51 | static LLUUID getSelected(); | ||
52 | |||
49 | BOOL postBuild(); | 53 | BOOL postBuild(); |
50 | 54 | ||
51 | /*virtual*/ void draw(); | 55 | /*virtual*/ void draw(); |
@@ -59,7 +63,46 @@ public: | |||
59 | 63 | ||
60 | private: | 64 | private: |
61 | LLFloaterMap(const LLSD& key = LLSD()); | 65 | LLFloaterMap(const LLSD& key = LLSD()); |
62 | LLNetMap* mPanelMap; | 66 | |
67 | LLNetMap* mPanelMap; | ||
68 | LLScrollListCtrl* mRadarList; | ||
69 | LLUUID mSelectedAvatar; | ||
70 | bool mUpdate; | ||
71 | |||
72 | static void onList(LLUICtrl* ctrl, void* user_data); | ||
73 | static void onRangeChange(LLFocusableElement* focus, void* user_data); | ||
74 | BOOL visibleItemsSelected() const; | ||
75 | BOOL getKickable(const LLUUID &agent_id); | ||
76 | void toggleButtons(); | ||
77 | void populateRadar(); | ||
78 | |||
79 | static void onClickProfile(void* user_data); | ||
80 | static void onClickIM(void* user_data); | ||
81 | static void onClickAddFriend(void* user_data); | ||
82 | static void onClickOfferTeleport(void* user_data); | ||
83 | static void onClickTrack(void* user_data); | ||
84 | static void onClickInvite(void* user_data); | ||
85 | static void callback_invite_to_group(LLUUID group_id, void *user_data); | ||
86 | |||
87 | static std::string getSelectedName(const LLUUID &agent_id); | ||
88 | static void onClickFreeze(void *user_data); | ||
89 | static void onClickEject(void *user_data); | ||
90 | static void onClickMute(void *user_data); | ||
91 | static void onClickUnmute(void *user_data); | ||
92 | static void onClickAR(void *user_data); | ||
93 | static void onClickEjectFromEstate(void *user_data); | ||
94 | |||
95 | static void callbackFreeze(S32 option, void *user_data); | ||
96 | static void callbackEject(S32 option, void *user_data); | ||
97 | static void callbackAR(void *user_data); | ||
98 | static void callbackEjectFromEstate(S32 option, void *user_data); | ||
99 | |||
100 | static void sendFreeze(const LLUUID &avatar, bool); | ||
101 | static void sendEject(const LLUUID &avatar, bool); | ||
102 | static void cmdEstateEject(const LLUUID &avatar); | ||
103 | static void cmdEstateBan(const LLUUID &avatar); | ||
104 | static void sendEstateBan(const LLUUID& agent); | ||
105 | static void sendEstateMessage(const char* request, const LLUUID &target); | ||
63 | }; | 106 | }; |
64 | 107 | ||
65 | #endif // LL_LLFLOATERMAP_H | 108 | #endif // LL_LLFLOATERMAP_H |
diff --git a/linden/indra/newview/llfloaterobjectiminfo.cpp b/linden/indra/newview/llfloaterobjectiminfo.cpp new file mode 100644 index 0000000..6cbc4e2 --- /dev/null +++ b/linden/indra/newview/llfloaterobjectiminfo.cpp | |||
@@ -0,0 +1,204 @@ | |||
1 | /** | ||
2 | * @file llfloaterobjectiminfo.cpp | ||
3 | * @brief A floater with information about an object that sent an IM. | ||
4 | * | ||
5 | * $LicenseInfo:firstyear=2007&license=viewergpl$ | ||
6 | * | ||
7 | * Copyright (c) 2007-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 | #include "llviewerprecompiledheaders.h" | ||
33 | |||
34 | #include "llfloaterobjectiminfo.h" | ||
35 | |||
36 | #include "llagentdata.h" | ||
37 | #include "llcachename.h" | ||
38 | #include "llcommandhandler.h" | ||
39 | #include "llfloater.h" | ||
40 | #include "llfloateravatarinfo.h" | ||
41 | #include "llfloatergroupinfo.h" | ||
42 | #include "llfloatermute.h" | ||
43 | #include "llmutelist.h" | ||
44 | #include "llsdutil.h" | ||
45 | #include "lluictrlfactory.h" | ||
46 | #include "llurldispatcher.h" | ||
47 | #include "llviewercontrol.h" | ||
48 | |||
49 | //////////////////////////////////////////////////////////////////////////// | ||
50 | // LLFloaterObjectIMInfo | ||
51 | class LLFloaterObjectIMInfo : public LLFloater, public LLFloaterSingleton<LLFloaterObjectIMInfo> | ||
52 | { | ||
53 | public: | ||
54 | LLFloaterObjectIMInfo(const LLSD& sd); | ||
55 | virtual ~LLFloaterObjectIMInfo() { }; | ||
56 | |||
57 | BOOL postBuild(void); | ||
58 | |||
59 | void update(const LLUUID& id, const std::string& name, const std::string& slurl, const LLUUID& owner, bool owner_is_group); | ||
60 | |||
61 | // UI Handlers | ||
62 | static void onClickMap(void* data); | ||
63 | static void onClickOwner(void* data); | ||
64 | static void onClickMute(void* data); | ||
65 | |||
66 | static void nameCallback(const LLUUID& id, const std::string& first, const std::string& last, BOOL is_group, void* data); | ||
67 | |||
68 | private: | ||
69 | LLUUID mObjectID; | ||
70 | std::string mObjectName; | ||
71 | std::string mSlurl; | ||
72 | LLUUID mOwnerID; | ||
73 | std::string mOwnerName; | ||
74 | bool mOwnerIsGroup; | ||
75 | }; | ||
76 | |||
77 | LLFloaterObjectIMInfo::LLFloaterObjectIMInfo(const LLSD& seed) | ||
78 | : mObjectID(), mObjectName(), mSlurl(), mOwnerID(), mOwnerName(), mOwnerIsGroup(false) | ||
79 | { | ||
80 | LLUICtrlFactory::getInstance()->buildFloater(this, "floater_object_im_info.xml"); | ||
81 | |||
82 | if (getRect().mLeft == 0 | ||
83 | && getRect().mBottom == 0) | ||
84 | { | ||
85 | center(); | ||
86 | } | ||
87 | } | ||
88 | |||
89 | BOOL LLFloaterObjectIMInfo::postBuild(void) | ||
90 | { | ||
91 | childSetAction("Mute",onClickMute,this); | ||
92 | childSetActionTextbox("OwnerName",onClickOwner, this); | ||
93 | childSetActionTextbox("Slurl",onClickMap, this); | ||
94 | |||
95 | return true; | ||
96 | } | ||
97 | |||
98 | void LLFloaterObjectIMInfo::update(const LLUUID& object_id, const std::string& name, const std::string& slurl, const LLUUID& owner_id, bool owner_is_group) | ||
99 | { | ||
100 | // When talking to an old region we won't have a slurl. | ||
101 | // The object id isn't really the object id either but we don't use it so who cares. | ||
102 | bool have_slurl = !slurl.empty(); | ||
103 | childSetVisible("Unknown_Slurl",!have_slurl); | ||
104 | childSetVisible("Slurl",have_slurl); | ||
105 | |||
106 | childSetText("ObjectName",name); | ||
107 | childSetText("Slurl",slurl); | ||
108 | childSetText("OwnerName",std::string("")); | ||
109 | |||
110 | bool my_object = (owner_id == gAgentID); | ||
111 | childSetEnabled("Mute",!my_object); | ||
112 | |||
113 | mObjectID = object_id; | ||
114 | mObjectName = name; | ||
115 | mSlurl = slurl; | ||
116 | mOwnerID = owner_id; | ||
117 | mOwnerIsGroup = owner_is_group; | ||
118 | |||
119 | if (gCacheName) gCacheName->get(owner_id,owner_is_group,nameCallback,this); | ||
120 | } | ||
121 | |||
122 | //static | ||
123 | void LLFloaterObjectIMInfo::onClickMap(void* data) | ||
124 | { | ||
125 | LLFloaterObjectIMInfo* self = (LLFloaterObjectIMInfo*)data; | ||
126 | |||
127 | std::ostringstream link; | ||
128 | link << "secondlife://" << self->mSlurl; | ||
129 | LLURLDispatcher::dispatch(link.str(),false); | ||
130 | } | ||
131 | |||
132 | //static | ||
133 | void LLFloaterObjectIMInfo::onClickOwner(void* data) | ||
134 | { | ||
135 | LLFloaterObjectIMInfo* self = (LLFloaterObjectIMInfo*)data; | ||
136 | if (self->mOwnerIsGroup) | ||
137 | { | ||
138 | LLFloaterGroupInfo::showFromUUID(self->mOwnerID); | ||
139 | } | ||
140 | else | ||
141 | { | ||
142 | LLFloaterAvatarInfo::showFromObject(self->mOwnerID); | ||
143 | } | ||
144 | } | ||
145 | |||
146 | //static | ||
147 | void LLFloaterObjectIMInfo::onClickMute(void* data) | ||
148 | { | ||
149 | LLFloaterObjectIMInfo* self = (LLFloaterObjectIMInfo*)data; | ||
150 | |||
151 | LLMute::EType mute_type = (self->mOwnerIsGroup) ? LLMute::GROUP : LLMute::AGENT; | ||
152 | LLMute mute(self->mOwnerID, self->mOwnerName, mute_type); | ||
153 | LLMuteList::getInstance()->add(mute); | ||
154 | LLFloaterMute::showInstance(); | ||
155 | self->close(); | ||
156 | } | ||
157 | |||
158 | //static | ||
159 | void LLFloaterObjectIMInfo::nameCallback(const LLUUID& id, const std::string& first, const std::string& last, BOOL is_group, void* data) | ||
160 | { | ||
161 | LLFloaterObjectIMInfo* self = (LLFloaterObjectIMInfo*)data; | ||
162 | self->mOwnerName = first; | ||
163 | if (!last.empty()) | ||
164 | { | ||
165 | self->mOwnerName += " " + last; | ||
166 | } | ||
167 | |||
168 | self->childSetText("OwnerName",self->mOwnerName); | ||
169 | } | ||
170 | |||
171 | //////////////////////////////////////////////////////////////////////////// | ||
172 | // LLObjectIMInfo | ||
173 | void LLObjectIMInfo::show(const LLUUID &object_id, const std::string &name, const std::string &location, const LLUUID &owner_id, bool owner_is_group) | ||
174 | { | ||
175 | LLFloaterObjectIMInfo* im_info_floater = LLFloaterObjectIMInfo::showInstance(); | ||
176 | im_info_floater->update(object_id,name,location,owner_id,owner_is_group); | ||
177 | } | ||
178 | |||
179 | //////////////////////////////////////////////////////////////////////////// | ||
180 | // LLObjectIMInfoHandler | ||
181 | class LLObjectIMInfoHandler : public LLCommandHandler | ||
182 | { | ||
183 | public: | ||
184 | LLObjectIMInfoHandler() : LLCommandHandler("objectim", false) { } | ||
185 | |||
186 | bool handle(const LLSD& tokens, const LLSD& query_map); | ||
187 | }; | ||
188 | |||
189 | // Creating the object registers with the dispatcher. | ||
190 | LLObjectIMInfoHandler gObjectIMHandler; | ||
191 | |||
192 | // ex. secondlife:///app/objectim/9426adfc-9c17-8765-5f09-fdf19957d003?owner=a112d245-9095-4e9c-ace4-ffa31717f934&groupowned=true&slurl=ahern/123/123/123&name=Object | ||
193 | bool LLObjectIMInfoHandler::handle(const LLSD &tokens, const LLSD &query_map) | ||
194 | { | ||
195 | LLUUID task_id = tokens[0].asUUID(); | ||
196 | std::string name = query_map["name"].asString(); | ||
197 | std::string slurl = query_map["slurl"].asString(); | ||
198 | LLUUID owner = query_map["owner"].asUUID(); | ||
199 | bool group_owned = query_map.has("groupowned"); | ||
200 | |||
201 | LLObjectIMInfo::show(task_id,name,slurl,owner,group_owned); | ||
202 | |||
203 | return true; | ||
204 | } | ||
diff --git a/linden/indra/newview/llfloaterobjectiminfo.h b/linden/indra/newview/llfloaterobjectiminfo.h new file mode 100644 index 0000000..0564c3e --- /dev/null +++ b/linden/indra/newview/llfloaterobjectiminfo.h | |||
@@ -0,0 +1,45 @@ | |||
1 | /** | ||
2 | * @file llfloaterobjectiminfo.h | ||
3 | * @brief Shows a dialog with information about an object. | ||
4 | * | ||
5 | * $LicenseInfo:firstyear=2006&license=viewergpl$ | ||
6 | * | ||
7 | * Copyright (c) 2006-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 | #ifndef LL_LLFLOATEROBJECTIMINFO_H | ||
33 | #define LL_LLFLOATEROBJECTIMINFO_H | ||
34 | |||
35 | namespace LLObjectIMInfo | ||
36 | { | ||
37 | // Show an LLFloaterObjectIMInfo for this object. | ||
38 | static void show(const LLUUID& object_id, | ||
39 | const std::string& name, | ||
40 | const std::string& location, | ||
41 | const LLUUID& owner_id, | ||
42 | bool owner_is_group); | ||
43 | }; | ||
44 | |||
45 | #endif // LL_LLFLOATERURLDISPLAY_H | ||
diff --git a/linden/indra/newview/llfloatertools.cpp b/linden/indra/newview/llfloatertools.cpp index b63138f..d2a8040 100644 --- a/linden/indra/newview/llfloatertools.cpp +++ b/linden/indra/newview/llfloatertools.cpp | |||
@@ -693,7 +693,8 @@ void LLFloaterTools::updatePopup(LLCoordGL center, MASK mask) | |||
693 | LLSelectMgr::getInstance()->getSelection()->getFirstEditableObject() && | 693 | LLSelectMgr::getInstance()->getSelection()->getFirstEditableObject() && |
694 | !LLSelectMgr::getInstance()->getSelection()->getFirstEditableObject()->isAttachment()) | 694 | !LLSelectMgr::getInstance()->getSelection()->getFirstEditableObject()->isAttachment()) |
695 | { | 695 | { |
696 | if (LLSelectMgr::getInstance()->getSelection()->getRootObjectCount() != | 696 | if (LLSelectMgr::getInstance()->getSelection()->getRootObjectCount() > 0 && |
697 | LLSelectMgr::getInstance()->getSelection()->getRootObjectCount() != | ||
697 | LLSelectMgr::getInstance()->getSelection()->getObjectCount()) | 698 | LLSelectMgr::getInstance()->getSelection()->getObjectCount()) |
698 | { | 699 | { |
699 | can_unlink = true; | 700 | can_unlink = true; |
diff --git a/linden/indra/newview/llfloaterwindlight.cpp b/linden/indra/newview/llfloaterwindlight.cpp index 4b0dd04..9936f3b 100644 --- a/linden/indra/newview/llfloaterwindlight.cpp +++ b/linden/indra/newview/llfloaterwindlight.cpp | |||
@@ -60,6 +60,7 @@ | |||
60 | 60 | ||
61 | #undef max | 61 | #undef max |
62 | 62 | ||
63 | |||
63 | LLFloaterWindLight* LLFloaterWindLight::sWindLight = NULL; | 64 | LLFloaterWindLight* LLFloaterWindLight::sWindLight = NULL; |
64 | 65 | ||
65 | std::set<std::string> LLFloaterWindLight::sDefaultPresets; | 66 | std::set<std::string> LLFloaterWindLight::sDefaultPresets; |
@@ -227,6 +228,10 @@ void LLFloaterWindLight::initCallbacks(void) { | |||
227 | // Dome | 228 | // Dome |
228 | childSetCommitCallback("WLGamma", onFloatControlMoved, ¶m_mgr->mWLGamma); | 229 | childSetCommitCallback("WLGamma", onFloatControlMoved, ¶m_mgr->mWLGamma); |
229 | childSetCommitCallback("WLStarAlpha", onStarAlphaMoved, NULL); | 230 | childSetCommitCallback("WLStarAlpha", onStarAlphaMoved, NULL); |
231 | |||
232 | // next/prev buttons | ||
233 | childSetAction("next", onClickNext, this); | ||
234 | childSetAction("prev", onClickPrev, this); | ||
230 | } | 235 | } |
231 | 236 | ||
232 | void LLFloaterWindLight::onClickHelp(void* data) | 237 | void LLFloaterWindLight::onClickHelp(void* data) |
@@ -1001,3 +1006,51 @@ void LLFloaterWindLight::deactivateAnimator() | |||
1001 | LLWLParamManager::instance()->mAnimator.mIsRunning = false; | 1006 | LLWLParamManager::instance()->mAnimator.mIsRunning = false; |
1002 | LLWLParamManager::instance()->mAnimator.mUseLindenTime = false; | 1007 | LLWLParamManager::instance()->mAnimator.mUseLindenTime = false; |
1003 | } | 1008 | } |
1009 | |||
1010 | void LLFloaterWindLight::onClickNext(void* user_data) | ||
1011 | { | ||
1012 | LLWLParamManager * param_mgr = LLWLParamManager::instance(); | ||
1013 | LLWLParamSet& currentParams = param_mgr->mCurParams; | ||
1014 | |||
1015 | // find place of current param | ||
1016 | std::map<std::string, LLWLParamSet>::iterator mIt = | ||
1017 | param_mgr->mParamList.find(currentParams.mName); | ||
1018 | |||
1019 | // if at the end, loop | ||
1020 | std::map<std::string, LLWLParamSet>::iterator last = param_mgr->mParamList.end(); --last; | ||
1021 | if(mIt == last) | ||
1022 | { | ||
1023 | mIt = param_mgr->mParamList.begin(); | ||
1024 | } | ||
1025 | else | ||
1026 | { | ||
1027 | mIt++; | ||
1028 | } | ||
1029 | param_mgr->mAnimator.mIsRunning = false; | ||
1030 | param_mgr->mAnimator.mUseLindenTime = false; | ||
1031 | param_mgr->loadPreset(mIt->first, true); | ||
1032 | } | ||
1033 | |||
1034 | void LLFloaterWindLight::onClickPrev(void* user_data) | ||
1035 | { | ||
1036 | LLWLParamManager * param_mgr = LLWLParamManager::instance(); | ||
1037 | LLWLParamSet& currentParams = param_mgr->mCurParams; | ||
1038 | |||
1039 | // find place of current param | ||
1040 | std::map<std::string, LLWLParamSet>::iterator mIt = | ||
1041 | param_mgr->mParamList.find(currentParams.mName); | ||
1042 | |||
1043 | // if at the beginning, loop | ||
1044 | if(mIt == param_mgr->mParamList.begin()) | ||
1045 | { | ||
1046 | std::map<std::string, LLWLParamSet>::iterator last = param_mgr->mParamList.end(); --last; | ||
1047 | mIt = last; | ||
1048 | } | ||
1049 | else | ||
1050 | { | ||
1051 | mIt--; | ||
1052 | } | ||
1053 | param_mgr->mAnimator.mIsRunning = false; | ||
1054 | param_mgr->mAnimator.mUseLindenTime = false; | ||
1055 | param_mgr->loadPreset(mIt->first, true); | ||
1056 | } | ||
diff --git a/linden/indra/newview/llfloaterwindlight.h b/linden/indra/newview/llfloaterwindlight.h index 3e5556b..70e76c5 100644 --- a/linden/indra/newview/llfloaterwindlight.h +++ b/linden/indra/newview/llfloaterwindlight.h | |||
@@ -136,6 +136,9 @@ private: | |||
136 | static LLFloaterWindLight* sWindLight; | 136 | static LLFloaterWindLight* sWindLight; |
137 | 137 | ||
138 | static std::set<std::string> sDefaultPresets; | 138 | static std::set<std::string> sDefaultPresets; |
139 | |||
140 | static void onClickNext(void* user_data); | ||
141 | static void onClickPrev(void* user_data); | ||
139 | }; | 142 | }; |
140 | 143 | ||
141 | 144 | ||
diff --git a/linden/indra/newview/llfolderview.cpp b/linden/indra/newview/llfolderview.cpp index 70c4ead..5407f06 100644 --- a/linden/indra/newview/llfolderview.cpp +++ b/linden/indra/newview/llfolderview.cpp | |||
@@ -281,7 +281,28 @@ void LLFolderViewItem::refreshFromListener() | |||
281 | { | 281 | { |
282 | if(mListener) | 282 | if(mListener) |
283 | { | 283 | { |
284 | //Super crazy hack to build the creator search label - RK | ||
285 | LLInventoryItem* item = gInventory.getItem(mListener->getUUID()); | ||
286 | std::string creator_name; | ||
287 | if(item) | ||
288 | { | ||
289 | if(item->getCreatorUUID().notNull()) | ||
290 | { | ||
291 | gCacheName->getFullName(item->getCreatorUUID(), creator_name); | ||
292 | } | ||
293 | } | ||
294 | mLabelCreator = creator_name; | ||
295 | /*if(creator_name == "(Loading...)") | ||
296 | mLabelCreator = ""; | ||
297 | else | ||
298 | mLabelCreator = creator_name;*/ | ||
299 | |||
300 | //Label for name search | ||
284 | mLabel = mListener->getDisplayName(); | 301 | mLabel = mListener->getDisplayName(); |
302 | |||
303 | //Build label for combined search - RK | ||
304 | mLabelAll = mLabel + " " + mLabelCreator; | ||
305 | |||
285 | setIcon(mListener->getIcon()); | 306 | setIcon(mListener->getIcon()); |
286 | time_t creation_date = mListener->getCreationDate(); | 307 | time_t creation_date = mListener->getCreationDate(); |
287 | if (mCreationDate != creation_date) | 308 | if (mCreationDate != creation_date) |
@@ -299,12 +320,26 @@ void LLFolderViewItem::refresh() | |||
299 | refreshFromListener(); | 320 | refreshFromListener(); |
300 | 321 | ||
301 | std::string searchable_label(mLabel); | 322 | std::string searchable_label(mLabel); |
323 | std::string searchable_label_creator(mLabelCreator); | ||
324 | std::string searchable_label_all(mLabelAll); | ||
325 | |||
326 | //add the (no modify), (no transfer) etc stuff to each label. | ||
302 | searchable_label.append(mLabelSuffix); | 327 | searchable_label.append(mLabelSuffix); |
328 | searchable_label_creator.append(mLabelSuffix); | ||
329 | searchable_label_all.append(mLabelSuffix); | ||
330 | |||
331 | //all labels need to be uppercase. | ||
303 | LLStringUtil::toUpper(searchable_label); | 332 | LLStringUtil::toUpper(searchable_label); |
333 | LLStringUtil::toUpper(searchable_label_creator); | ||
334 | LLStringUtil::toUpper(searchable_label_all); | ||
304 | 335 | ||
305 | if (mSearchableLabel.compare(searchable_label)) | 336 | if (mSearchableLabel.compare(searchable_label) || |
337 | mSearchableLabelCreator.compare(searchable_label_creator)) | ||
306 | { | 338 | { |
307 | mSearchableLabel.assign(searchable_label); | 339 | mSearchableLabel.assign(searchable_label); |
340 | mSearchableLabelCreator.assign(searchable_label_creator); | ||
341 | mSearchableLabelAll.assign(searchable_label_all); | ||
342 | |||
308 | dirtyFilter(); | 343 | dirtyFilter(); |
309 | // some part of label has changed, so overall width has potentially changed | 344 | // some part of label has changed, so overall width has potentially changed |
310 | if (mParentFolder) | 345 | if (mParentFolder) |
@@ -588,7 +623,13 @@ void LLFolderViewItem::rename(const std::string& new_name) | |||
588 | 623 | ||
589 | const std::string& LLFolderViewItem::getSearchableLabel() const | 624 | const std::string& LLFolderViewItem::getSearchableLabel() const |
590 | { | 625 | { |
591 | return mSearchableLabel; | 626 | U32 search_type = gSavedSettings.getU32("InventorySearchType"); |
627 | if(search_type == 4) | ||
628 | return mSearchableLabelAll; | ||
629 | else if(search_type == 1) | ||
630 | return mSearchableLabelCreator; | ||
631 | else | ||
632 | return mSearchableLabel; | ||
592 | } | 633 | } |
593 | 634 | ||
594 | const std::string& LLFolderViewItem::getName( void ) const | 635 | const std::string& LLFolderViewItem::getName( void ) const |
diff --git a/linden/indra/newview/llfolderview.h b/linden/indra/newview/llfolderview.h index 3c350d4..25b4362 100644 --- a/linden/indra/newview/llfolderview.h +++ b/linden/indra/newview/llfolderview.h | |||
@@ -338,6 +338,11 @@ protected: | |||
338 | 338 | ||
339 | std::string mLabel; | 339 | std::string mLabel; |
340 | std::string mSearchableLabel; | 340 | std::string mSearchableLabel; |
341 | std::string mLabelAll; | ||
342 | std::string mSearchableLabelAll; | ||
343 | std::string mLabelCreator; | ||
344 | std::string mSearchableLabelCreator; | ||
345 | |||
341 | std::string mType; | 346 | std::string mType; |
342 | S32 mLabelWidth; | 347 | S32 mLabelWidth; |
343 | U32 mCreationDate; | 348 | U32 mCreationDate; |
diff --git a/linden/indra/newview/llgroupnotify.cpp b/linden/indra/newview/llgroupnotify.cpp index 37897eb..2f8e838 100644 --- a/linden/indra/newview/llgroupnotify.cpp +++ b/linden/indra/newview/llgroupnotify.cpp | |||
@@ -220,8 +220,8 @@ LLGroupNotifyBox::LLGroupNotifyBox(const std::string& subject, | |||
220 | static const LLStyleSP headerstyle(new LLStyle(true,LLColor4::black,"SansSerifBig")); | 220 | static const LLStyleSP headerstyle(new LLStyle(true,LLColor4::black,"SansSerifBig")); |
221 | static const LLStyleSP datestyle(new LLStyle(true,LLColor4::black,"serif")); | 221 | static const LLStyleSP datestyle(new LLStyle(true,LLColor4::black,"serif")); |
222 | 222 | ||
223 | text->appendStyledText(subject,false,false,&headerstyle); | 223 | text->appendStyledText(subject,false,false,headerstyle); |
224 | text->appendStyledText(time_buf,false,false,&datestyle); | 224 | text->appendStyledText(time_buf,false,false,datestyle); |
225 | // Sadly, our LLTextEditor can't handle both styled and unstyled text | 225 | // Sadly, our LLTextEditor can't handle both styled and unstyled text |
226 | // at the same time. Hence this space must be styled. JC | 226 | // at the same time. Hence this space must be styled. JC |
227 | text->appendColoredText(std::string(" "),false,false,LLColor4::grey4); | 227 | text->appendColoredText(std::string(" "),false,false,LLColor4::grey4); |
diff --git a/linden/indra/newview/llimpanel.cpp b/linden/indra/newview/llimpanel.cpp index 7e4ed19..014c050 100644 --- a/linden/indra/newview/llimpanel.cpp +++ b/linden/indra/newview/llimpanel.cpp | |||
@@ -1543,8 +1543,8 @@ void LLFloaterIMPanel::addHistoryLine(const std::string &utf8msg, const LLColor4 | |||
1543 | else | 1543 | else |
1544 | { | 1544 | { |
1545 | // Convert the name to a hotlink and add to message. | 1545 | // Convert the name to a hotlink and add to message. |
1546 | const LLStyleSP &source_style = LLStyleMap::instance().lookup(source); | 1546 | const LLStyleSP &source_style = LLStyleMap::instance().lookupAgent(source); |
1547 | mHistoryEditor->appendStyledText(name,false,prepend_newline,&source_style); | 1547 | mHistoryEditor->appendStyledText(name,false,prepend_newline,source_style); |
1548 | } | 1548 | } |
1549 | prepend_newline = false; | 1549 | prepend_newline = false; |
1550 | } | 1550 | } |
diff --git a/linden/indra/newview/llinventoryactions.cpp b/linden/indra/newview/llinventoryactions.cpp index 0bf3ab2..b598c83 100644 --- a/linden/indra/newview/llinventoryactions.cpp +++ b/linden/indra/newview/llinventoryactions.cpp | |||
@@ -85,6 +85,9 @@ | |||
85 | #include "lluictrlfactory.h" | 85 | #include "lluictrlfactory.h" |
86 | #include "llselectmgr.h" | 86 | #include "llselectmgr.h" |
87 | 87 | ||
88 | // Defined in llinventorybridge.cpp | ||
89 | void wear_attachments_on_avatar(const std::set<LLUUID>& item_ids, BOOL remove); | ||
90 | |||
88 | const std::string NEW_LSL_NAME = "New Script"; // *TODO:Translate? (probably not) | 91 | const std::string NEW_LSL_NAME = "New Script"; // *TODO:Translate? (probably not) |
89 | const std::string NEW_NOTECARD_NAME = "New Note"; // *TODO:Translate? (probably not) | 92 | const std::string NEW_NOTECARD_NAME = "New Note"; // *TODO:Translate? (probably not) |
90 | const std::string NEW_GESTURE_NAME = "New Gesture"; // *TODO:Translate? (probably not) | 93 | const std::string NEW_GESTURE_NAME = "New Gesture"; // *TODO:Translate? (probably not) |
@@ -115,6 +118,12 @@ bool doToSelected(LLFolderView* folder, std::string action) | |||
115 | std::set<LLUUID> selected_items; | 118 | std::set<LLUUID> selected_items; |
116 | folder->getSelectionList(selected_items); | 119 | folder->getSelectionList(selected_items); |
117 | 120 | ||
121 | if ( ("attach" == action) && (selected_items.size() > 1) ) | ||
122 | { | ||
123 | wear_attachments_on_avatar(selected_items, FALSE); | ||
124 | return true; | ||
125 | } | ||
126 | |||
118 | LLMultiPreview* multi_previewp = NULL; | 127 | LLMultiPreview* multi_previewp = NULL; |
119 | LLMultiProperties* multi_propertiesp = NULL; | 128 | LLMultiProperties* multi_propertiesp = NULL; |
120 | 129 | ||
@@ -464,6 +473,40 @@ class LLDoCreateFloater : public inventory_listener_t | |||
464 | } | 473 | } |
465 | }; | 474 | }; |
466 | 475 | ||
476 | //Handles the search type buttons | ||
477 | class SetSearchType : public inventory_listener_t | ||
478 | { | ||
479 | bool handleEvent(LLPointer<LLEvent> event, const LLSD& userdata) | ||
480 | { | ||
481 | std::string search_type = userdata.asString(); | ||
482 | if(search_type == "name") | ||
483 | { | ||
484 | gSavedSettings.setU32("InventorySearchType", 0); | ||
485 | |||
486 | mPtr->getControl("Inventory.SearchByName")->setValue(TRUE); | ||
487 | mPtr->getControl("Inventory.SearchByCreator")->setValue(FALSE); | ||
488 | mPtr->getControl("Inventory.SearchByAll")->setValue(FALSE); | ||
489 | } | ||
490 | else if(search_type == "creator") | ||
491 | { | ||
492 | gSavedSettings.setU32("InventorySearchType", 1); | ||
493 | |||
494 | mPtr->getControl("Inventory.SearchByName")->setValue(FALSE); | ||
495 | mPtr->getControl("Inventory.SearchByCreator")->setValue(TRUE); | ||
496 | mPtr->getControl("Inventory.SearchByAll")->setValue(FALSE); | ||
497 | } | ||
498 | else if(search_type == "all") | ||
499 | { | ||
500 | gSavedSettings.setU32("InventorySearchType", 4); | ||
501 | |||
502 | mPtr->getControl("Inventory.SearchByName")->setValue(FALSE); | ||
503 | mPtr->getControl("Inventory.SearchByCreator")->setValue(FALSE); | ||
504 | mPtr->getControl("Inventory.SearchByAll")->setValue(TRUE); | ||
505 | } | ||
506 | return true; | ||
507 | } | ||
508 | }; | ||
509 | |||
467 | class LLSetSortBy : public inventory_listener_t | 510 | class LLSetSortBy : public inventory_listener_t |
468 | { | 511 | { |
469 | bool handleEvent(LLPointer<LLEvent> event, const LLSD& userdata) | 512 | bool handleEvent(LLPointer<LLEvent> event, const LLSD& userdata) |
@@ -711,6 +754,8 @@ void init_inventory_actions(LLInventoryView *floater) | |||
711 | (new LLShowFilters())->registerListener(floater, "Inventory.ShowFilters"); | 754 | (new LLShowFilters())->registerListener(floater, "Inventory.ShowFilters"); |
712 | (new LLResetFilter())->registerListener(floater, "Inventory.ResetFilter"); | 755 | (new LLResetFilter())->registerListener(floater, "Inventory.ResetFilter"); |
713 | (new LLSetSortBy())->registerListener(floater, "Inventory.SetSortBy"); | 756 | (new LLSetSortBy())->registerListener(floater, "Inventory.SetSortBy"); |
757 | |||
758 | (new SetSearchType())->registerListener(floater, "Inventory.SetSearchBy"); | ||
714 | } | 759 | } |
715 | 760 | ||
716 | void init_inventory_panel_actions(LLInventoryPanel *panel) | 761 | void init_inventory_panel_actions(LLInventoryPanel *panel) |
diff --git a/linden/indra/newview/llinventorybridge.cpp b/linden/indra/newview/llinventorybridge.cpp index dc1e0a1..19a5ade 100644 --- a/linden/indra/newview/llinventorybridge.cpp +++ b/linden/indra/newview/llinventorybridge.cpp | |||
@@ -111,6 +111,8 @@ void remove_inventory_category_from_avatar(LLInventoryCategory* category); | |||
111 | void remove_inventory_category_from_avatar_step2( BOOL proceed, void* userdata); | 111 | void remove_inventory_category_from_avatar_step2( BOOL proceed, void* userdata); |
112 | void move_task_inventory_callback(S32 option, void* user_data); | 112 | void move_task_inventory_callback(S32 option, void* user_data); |
113 | void confirm_replace_attachment_rez(S32 option, void* user_data); | 113 | void confirm_replace_attachment_rez(S32 option, void* user_data); |
114 | void wear_attachments_on_avatar(const std::set<LLUUID>& item_ids, BOOL remove); | ||
115 | void wear_attachments_on_avatar(const LLInventoryModel::item_array_t& items, BOOL remove); | ||
114 | 116 | ||
115 | std::string ICON_NAME[ICON_NAME_COUNT] = | 117 | std::string ICON_NAME[ICON_NAME_COUNT] = |
116 | { | 118 | { |
@@ -3740,6 +3742,31 @@ private: | |||
3740 | bool mAppend; | 3742 | bool mAppend; |
3741 | }; | 3743 | }; |
3742 | 3744 | ||
3745 | class LLWearAttachmentsCallback : public LLInventoryCallback | ||
3746 | { | ||
3747 | public: | ||
3748 | LLWearAttachmentsCallback(bool append) : mAppend(append) {} | ||
3749 | void fire(const LLUUID& item_id) | ||
3750 | { | ||
3751 | mItemIDs.insert(item_id); | ||
3752 | } | ||
3753 | protected: | ||
3754 | ~LLWearAttachmentsCallback() | ||
3755 | { | ||
3756 | if( LLInventoryCallbackManager::is_instantiated() ) | ||
3757 | { | ||
3758 | wear_attachments_on_avatar(mItemIDs, mAppend); | ||
3759 | } | ||
3760 | else | ||
3761 | { | ||
3762 | llwarns << "Dropping unhandled LLWearAttachments" << llendl; | ||
3763 | } | ||
3764 | } | ||
3765 | private: | ||
3766 | std::set<LLUUID> mItemIDs; | ||
3767 | bool mAppend; | ||
3768 | }; | ||
3769 | |||
3743 | void LLOutfitObserver::done() | 3770 | void LLOutfitObserver::done() |
3744 | { | 3771 | { |
3745 | // We now have an outfit ready to be copied to agent inventory. Do | 3772 | // We now have an outfit ready to be copied to agent inventory. Do |
@@ -4109,67 +4136,7 @@ void wear_inventory_category_on_avatar_step2( BOOL proceed, void* userdata ) | |||
4109 | if( obj_count > 0 ) | 4136 | if( obj_count > 0 ) |
4110 | { | 4137 | { |
4111 | // We've found some attachements. Add these. | 4138 | // We've found some attachements. Add these. |
4112 | 4139 | wear_attachments_on_avatar(obj_item_array, !wear_info->mAppend); | |
4113 | LLVOAvatar* avatar = gAgent.getAvatarObject(); | ||
4114 | if( avatar ) | ||
4115 | { | ||
4116 | // Build a compound message to send all the objects that need to be rezzed. | ||
4117 | |||
4118 | // Limit number of packets to send | ||
4119 | const S32 MAX_PACKETS_TO_SEND = 10; | ||
4120 | const S32 OBJECTS_PER_PACKET = 4; | ||
4121 | const S32 MAX_OBJECTS_TO_SEND = MAX_PACKETS_TO_SEND * OBJECTS_PER_PACKET; | ||
4122 | if( obj_count > MAX_OBJECTS_TO_SEND ) | ||
4123 | { | ||
4124 | obj_count = MAX_OBJECTS_TO_SEND; | ||
4125 | } | ||
4126 | |||
4127 | // Create an id to keep the parts of the compound message together | ||
4128 | LLUUID compound_msg_id; | ||
4129 | compound_msg_id.generate(); | ||
4130 | LLMessageSystem* msg = gMessageSystem; | ||
4131 | |||
4132 | for(i = 0; i < obj_count; ++i) | ||
4133 | { | ||
4134 | if( 0 == (i % OBJECTS_PER_PACKET) ) | ||
4135 | { | ||
4136 | // Start a new message chunk | ||
4137 | msg->newMessageFast(_PREHASH_RezMultipleAttachmentsFromInv); | ||
4138 | msg->nextBlockFast(_PREHASH_AgentData); | ||
4139 | msg->addUUIDFast(_PREHASH_AgentID, gAgent.getID()); | ||
4140 | msg->addUUIDFast(_PREHASH_SessionID, gAgent.getSessionID()); | ||
4141 | msg->nextBlockFast(_PREHASH_HeaderData); | ||
4142 | msg->addUUIDFast(_PREHASH_CompoundMsgID, compound_msg_id ); | ||
4143 | msg->addU8Fast(_PREHASH_TotalObjects, obj_count ); | ||
4144 | // msg->addBOOLFast(_PREHASH_FirstDetachAll, !wear_info->mAppend ); | ||
4145 | // [RLVa:KB] - Checked: 2009-07-06 (RLVa-1.0.0c) | Added: RLVa-0.2.2a | ||
4146 | // This really should just *always* be FALSE since TRUE can result in loss of the current asset state | ||
4147 | msg->addBOOLFast(_PREHASH_FirstDetachAll, (!wear_info->mAppend) && (!gRlvHandler.hasLockedAttachment()) ); | ||
4148 | // [/RLVa:KB] | ||
4149 | } | ||
4150 | |||
4151 | LLInventoryItem* item = obj_item_array.get(i); | ||
4152 | msg->nextBlockFast(_PREHASH_ObjectData ); | ||
4153 | msg->addUUIDFast(_PREHASH_ItemID, item->getUUID() ); | ||
4154 | msg->addUUIDFast(_PREHASH_OwnerID, item->getPermissions().getOwner()); | ||
4155 | // msg->addU8Fast(_PREHASH_AttachmentPt, 0 ); // Wear at the previous or default attachment point | ||
4156 | // [RLVa:KB] - Checked: 2009-07-06 (RLVa-1.0.0c) | Added: RLVa-0.2.2a | ||
4157 | msg->addU8Fast(_PREHASH_AttachmentPt, | ||
4158 | ( (!rlv_handler_t::isEnabled()) || (RlvSettings::getEnableWear()) || (!gRlvHandler.hasLockedAttachment()) ) | ||
4159 | ? 0 | ||
4160 | : gRlvHandler.getAttachPointIndex(gRlvHandler.getAttachPoint(item, true))); | ||
4161 | // [/RLVa:KB] | ||
4162 | pack_permissions_slam(msg, item->getFlags(), item->getPermissions()); | ||
4163 | msg->addStringFast(_PREHASH_Name, item->getName()); | ||
4164 | msg->addStringFast(_PREHASH_Description, item->getDescription()); | ||
4165 | |||
4166 | if( (i+1 == obj_count) || ((OBJECTS_PER_PACKET-1) == (i % OBJECTS_PER_PACKET)) ) | ||
4167 | { | ||
4168 | // End of message chunk | ||
4169 | msg->sendReliable( gAgent.getRegion()->getHost() ); | ||
4170 | } | ||
4171 | } | ||
4172 | } | ||
4173 | } | 4140 | } |
4174 | } | 4141 | } |
4175 | delete wear_info; | 4142 | delete wear_info; |
@@ -4260,6 +4227,109 @@ void wear_inventory_category_on_avatar_step3(LLWearableHoldingPattern* holder, B | |||
4260 | dec_busy_count(); | 4227 | dec_busy_count(); |
4261 | } | 4228 | } |
4262 | 4229 | ||
4230 | void wear_attachments_on_avatar(const std::set<LLUUID>& item_ids, BOOL remove) | ||
4231 | { | ||
4232 | // NOTE: the inventory items can reside in the user's inventory, the library, or any combination of the two | ||
4233 | |||
4234 | LLInventoryModel::item_array_t items; | ||
4235 | LLPointer<LLInventoryCallback> cb; | ||
4236 | |||
4237 | for (std::set<LLUUID>::const_iterator it = item_ids.begin(); it != item_ids.end(); ++it) | ||
4238 | { | ||
4239 | LLViewerInventoryItem* item = gInventory.getItem(*it); | ||
4240 | if ( (item) && (LLAssetType::AT_OBJECT == item->getType()) ) | ||
4241 | { | ||
4242 | if ( (gInventory.isObjectDescendentOf(*it, gAgent.getInventoryRootID())) ) | ||
4243 | { | ||
4244 | items.put(item); | ||
4245 | } | ||
4246 | else if ( (item->isComplete()) ) | ||
4247 | { | ||
4248 | if (cb.isNull()) | ||
4249 | cb = new LLWearAttachmentsCallback(remove); | ||
4250 | copy_inventory_item(gAgent.getID(), item->getPermissions().getOwner(), item->getUUID(), LLUUID::null, std::string(), cb); | ||
4251 | } | ||
4252 | } | ||
4253 | } | ||
4254 | |||
4255 | wear_attachments_on_avatar(items, remove); | ||
4256 | } | ||
4257 | |||
4258 | void wear_attachments_on_avatar(const LLInventoryModel::item_array_t& items, BOOL remove) | ||
4259 | { | ||
4260 | // NOTE: all inventory items must reside in the user's inventory | ||
4261 | |||
4262 | LLVOAvatar* avatarp = gAgent.getAvatarObject(); | ||
4263 | if(!avatarp) | ||
4264 | { | ||
4265 | llwarns << "No avatar found." << llendl; | ||
4266 | return; | ||
4267 | } | ||
4268 | |||
4269 | // Build a compound message to send all the objects that need to be rezzed. | ||
4270 | |||
4271 | // Limit number of packets to send | ||
4272 | const S32 MAX_PACKETS_TO_SEND = 10; | ||
4273 | const S32 OBJECTS_PER_PACKET = 4; | ||
4274 | const S32 MAX_OBJECTS_TO_SEND = MAX_PACKETS_TO_SEND * OBJECTS_PER_PACKET; | ||
4275 | |||
4276 | S32 count = items.count(); | ||
4277 | if ( !count ) | ||
4278 | { | ||
4279 | return; | ||
4280 | } | ||
4281 | else if ( count > MAX_OBJECTS_TO_SEND ) | ||
4282 | { | ||
4283 | count = MAX_OBJECTS_TO_SEND; | ||
4284 | } | ||
4285 | |||
4286 | // Create an id to keep the parts of the compound message together | ||
4287 | LLUUID compound_msg_id; | ||
4288 | compound_msg_id.generate(); | ||
4289 | LLMessageSystem* msg = gMessageSystem; | ||
4290 | |||
4291 | for(S32 i = 0; i < count; ++i) | ||
4292 | { | ||
4293 | if( 0 == (i % OBJECTS_PER_PACKET) ) | ||
4294 | { | ||
4295 | // Start a new message chunk | ||
4296 | msg->newMessageFast(_PREHASH_RezMultipleAttachmentsFromInv); | ||
4297 | msg->nextBlockFast(_PREHASH_AgentData); | ||
4298 | msg->addUUIDFast(_PREHASH_AgentID, gAgent.getID()); | ||
4299 | msg->addUUIDFast(_PREHASH_SessionID, gAgent.getSessionID()); | ||
4300 | msg->nextBlockFast(_PREHASH_HeaderData); | ||
4301 | msg->addUUIDFast(_PREHASH_CompoundMsgID, compound_msg_id ); | ||
4302 | msg->addU8Fast(_PREHASH_TotalObjects, count ); | ||
4303 | // msg->addBOOLFast(_PREHASH_FirstDetachAll, remove ); | ||
4304 | // [RLVa:KB] - Checked: 2009-07-06 (RLVa-1.0.0c) | Added: RLVa-0.2.2a | ||
4305 | // This really should just *always* be FALSE since TRUE can result in loss of the current asset state | ||
4306 | msg->addBOOLFast(_PREHASH_FirstDetachAll, remove && (!gRlvHandler.hasLockedAttachment()) ); | ||
4307 | // [/RLVa:KB] | ||
4308 | } | ||
4309 | |||
4310 | LLInventoryItem* item = items.get(i); | ||
4311 | msg->nextBlockFast(_PREHASH_ObjectData ); | ||
4312 | msg->addUUIDFast(_PREHASH_ItemID, item->getUUID() ); | ||
4313 | msg->addUUIDFast(_PREHASH_OwnerID, item->getPermissions().getOwner()); | ||
4314 | // msg->addU8Fast(_PREHASH_AttachmentPt, 0 ); // Wear at the previous or default attachment point | ||
4315 | // [RLVa:KB] - Checked: 2009-07-06 (RLVa-1.0.0c) | Added: RLVa-0.2.2a | ||
4316 | msg->addU8Fast(_PREHASH_AttachmentPt, | ||
4317 | ( (!rlv_handler_t::isEnabled()) || (RlvSettings::getEnableWear()) || (!gRlvHandler.hasLockedAttachment()) ) | ||
4318 | ? 0 | ||
4319 | : gRlvHandler.getAttachPointIndex(gRlvHandler.getAttachPoint(item, true))); | ||
4320 | // [/RLVa:KB] | ||
4321 | pack_permissions_slam(msg, item->getFlags(), item->getPermissions()); | ||
4322 | msg->addStringFast(_PREHASH_Name, item->getName()); | ||
4323 | msg->addStringFast(_PREHASH_Description, item->getDescription()); | ||
4324 | |||
4325 | if( (i+1 == count) || ((OBJECTS_PER_PACKET-1) == (i % OBJECTS_PER_PACKET)) ) | ||
4326 | { | ||
4327 | // End of message chunk | ||
4328 | msg->sendReliable( gAgent.getRegion()->getHost() ); | ||
4329 | } | ||
4330 | } | ||
4331 | } | ||
4332 | |||
4263 | void remove_inventory_category_from_avatar( LLInventoryCategory* category ) | 4333 | void remove_inventory_category_from_avatar( LLInventoryCategory* category ) |
4264 | { | 4334 | { |
4265 | if(!category) return; | 4335 | if(!category) return; |
diff --git a/linden/indra/newview/llinventorymodel.cpp b/linden/indra/newview/llinventorymodel.cpp index e662058..324e36a 100644 --- a/linden/indra/newview/llinventorymodel.cpp +++ b/linden/indra/newview/llinventorymodel.cpp | |||
@@ -1499,6 +1499,8 @@ void LLInventoryModel::stopBackgroundFetch() | |||
1499 | //static | 1499 | //static |
1500 | void LLInventoryModel::backgroundFetch(void*) | 1500 | void LLInventoryModel::backgroundFetch(void*) |
1501 | { | 1501 | { |
1502 | if (gDisconnected) | ||
1503 | return; | ||
1502 | if (sBackgroundFetchActive && gAgent.getRegion()) | 1504 | if (sBackgroundFetchActive && gAgent.getRegion()) |
1503 | { | 1505 | { |
1504 | //If we'll be using the capability, we'll be sending batches and the background thing isn't as important. | 1506 | //If we'll be using the capability, we'll be sending batches and the background thing isn't as important. |
diff --git a/linden/indra/newview/llinventoryview.cpp b/linden/indra/newview/llinventoryview.cpp index 8e8e894..a8d5045 100644 --- a/linden/indra/newview/llinventoryview.cpp +++ b/linden/indra/newview/llinventoryview.cpp | |||
@@ -521,6 +521,15 @@ void LLInventoryView::init(LLInventoryModel* inventory) | |||
521 | addBoolControl("Inventory.FoldersAlwaysByName", sort_folders_by_name ); | 521 | addBoolControl("Inventory.FoldersAlwaysByName", sort_folders_by_name ); |
522 | addBoolControl("Inventory.SystemFoldersToTop", sort_system_folders_to_top ); | 522 | addBoolControl("Inventory.SystemFoldersToTop", sort_system_folders_to_top ); |
523 | 523 | ||
524 | //Search Controls | ||
525 | U32 search_type = gSavedSettings.getU32("InventorySearchType"); | ||
526 | BOOL search_by_name = (search_type == 0); | ||
527 | |||
528 | addBoolControl("Inventory.SearchByName", search_by_name); | ||
529 | addBoolControl("Inventory.SearchByCreator", !search_by_name); | ||
530 | |||
531 | addBoolControl("Inventory.SearchByAll", !search_by_name); | ||
532 | |||
524 | mSavedFolderState = new LLSaveFolderState(); | 533 | mSavedFolderState = new LLSaveFolderState(); |
525 | mSavedFolderState->setApply(FALSE); | 534 | mSavedFolderState->setApply(FALSE); |
526 | 535 | ||
diff --git a/linden/indra/newview/llmanipscale.cpp b/linden/indra/newview/llmanipscale.cpp index 10cb0c3..5a67937 100644 --- a/linden/indra/newview/llmanipscale.cpp +++ b/linden/indra/newview/llmanipscale.cpp | |||
@@ -69,6 +69,8 @@ const F32 SNAP_GUIDE_SCREEN_LENGTH = 0.7f; | |||
69 | const F32 SELECTED_MANIPULATOR_SCALE = 1.2f; | 69 | const F32 SELECTED_MANIPULATOR_SCALE = 1.2f; |
70 | const F32 MANIPULATOR_SCALE_HALF_LIFE = 0.07f; | 70 | const F32 MANIPULATOR_SCALE_HALF_LIFE = 0.07f; |
71 | const S32 NUM_MANIPULATORS = 14; | 71 | const S32 NUM_MANIPULATORS = 14; |
72 | const F32 DEFAULT_LL_MAX_PRIM_SCALE = 10.f; | ||
73 | const F32 DEFAULT_OPENSIM_MAX_PRIM_SCALE = 128.f; | ||
72 | 74 | ||
73 | const LLManip::EManipPart MANIPULATOR_IDS[NUM_MANIPULATORS] = | 75 | const LLManip::EManipPart MANIPULATOR_IDS[NUM_MANIPULATORS] = |
74 | { | 76 | { |
@@ -173,6 +175,7 @@ LLManipScale::LLManipScale( LLToolComposite* composite ) | |||
173 | mScaledBoxHandleSize( 1.f ), | 175 | mScaledBoxHandleSize( 1.f ), |
174 | mLastMouseX( -1 ), | 176 | mLastMouseX( -1 ), |
175 | mLastMouseY( -1 ), | 177 | mLastMouseY( -1 ), |
178 | mMaxPrimSize(0.f), | ||
176 | mSendUpdateOnMouseUp( FALSE ), | 179 | mSendUpdateOnMouseUp( FALSE ), |
177 | mLastUpdateFlags( 0 ), | 180 | mLastUpdateFlags( 0 ), |
178 | mScaleSnapUnit1(1.f), | 181 | mScaleSnapUnit1(1.f), |
@@ -201,6 +204,7 @@ void LLManipScale::render() | |||
201 | LLGLDepthTest gls_depth(GL_TRUE); | 204 | LLGLDepthTest gls_depth(GL_TRUE); |
202 | LLGLEnable gl_blend(GL_BLEND); | 205 | LLGLEnable gl_blend(GL_BLEND); |
203 | LLGLEnable gls_alpha_test(GL_ALPHA_TEST); | 206 | LLGLEnable gls_alpha_test(GL_ALPHA_TEST); |
207 | mMaxPrimSize = gSavedSettings.getBOOL("LoggedIntoOpenSim") ? DEFAULT_OPENSIM_MAX_PRIM_SCALE : DEFAULT_LL_MAX_PRIM_SCALE; | ||
204 | 208 | ||
205 | if( canAffectSelection() ) | 209 | if( canAffectSelection() ) |
206 | { | 210 | { |
@@ -952,8 +956,8 @@ void LLManipScale::dragCorner( S32 x, S32 y ) | |||
952 | mInSnapRegime = FALSE; | 956 | mInSnapRegime = FALSE; |
953 | } | 957 | } |
954 | 958 | ||
955 | F32 max_scale_factor = DEFAULT_MAX_PRIM_SCALE / MIN_PRIM_SCALE; | 959 | F32 max_scale_factor = mMaxPrimSize / MIN_PRIM_SCALE; |
956 | F32 min_scale_factor = MIN_PRIM_SCALE / DEFAULT_MAX_PRIM_SCALE; | 960 | F32 min_scale_factor = MIN_PRIM_SCALE / mMaxPrimSize; |
957 | 961 | ||
958 | // find max and min scale factors that will make biggest object hit max absolute scale and smallest object hit min absolute scale | 962 | // find max and min scale factors that will make biggest object hit max absolute scale and smallest object hit min absolute scale |
959 | for (LLObjectSelection::iterator iter = mObjectSelection->begin(); | 963 | for (LLObjectSelection::iterator iter = mObjectSelection->begin(); |
@@ -965,7 +969,7 @@ void LLManipScale::dragCorner( S32 x, S32 y ) | |||
965 | { | 969 | { |
966 | const LLVector3& scale = selectNode->mSavedScale; | 970 | const LLVector3& scale = selectNode->mSavedScale; |
967 | 971 | ||
968 | F32 cur_max_scale_factor = llmin( DEFAULT_MAX_PRIM_SCALE / scale.mV[VX], DEFAULT_MAX_PRIM_SCALE / scale.mV[VY], DEFAULT_MAX_PRIM_SCALE / scale.mV[VZ] ); | 972 | F32 cur_max_scale_factor = llmin( mMaxPrimSize / scale.mV[VX], mMaxPrimSize / scale.mV[VY], mMaxPrimSize / scale.mV[VZ] ); |
969 | max_scale_factor = llmin( max_scale_factor, cur_max_scale_factor ); | 973 | max_scale_factor = llmin( max_scale_factor, cur_max_scale_factor ); |
970 | 974 | ||
971 | F32 cur_min_scale_factor = llmax( MIN_PRIM_SCALE / scale.mV[VX], MIN_PRIM_SCALE / scale.mV[VY], MIN_PRIM_SCALE / scale.mV[VZ] ); | 975 | F32 cur_min_scale_factor = llmax( MIN_PRIM_SCALE / scale.mV[VX], MIN_PRIM_SCALE / scale.mV[VY], MIN_PRIM_SCALE / scale.mV[VZ] ); |
@@ -1262,7 +1266,7 @@ void LLManipScale::stretchFace( const LLVector3& drag_start_agent, const LLVecto | |||
1262 | 1266 | ||
1263 | F32 denom = axis * dir_local; | 1267 | F32 denom = axis * dir_local; |
1264 | F32 desired_delta_size = is_approx_zero(denom) ? 0.f : (delta_local_mag / denom); // in meters | 1268 | F32 desired_delta_size = is_approx_zero(denom) ? 0.f : (delta_local_mag / denom); // in meters |
1265 | F32 desired_scale = llclamp(selectNode->mSavedScale.mV[axis_index] + desired_delta_size, MIN_PRIM_SCALE, DEFAULT_MAX_PRIM_SCALE); | 1269 | F32 desired_scale = llclamp(selectNode->mSavedScale.mV[axis_index] + desired_delta_size, MIN_PRIM_SCALE, mMaxPrimSize); |
1266 | // propagate scale constraint back to position offset | 1270 | // propagate scale constraint back to position offset |
1267 | desired_delta_size = desired_scale - selectNode->mSavedScale.mV[axis_index]; // propagate constraint back to position | 1271 | desired_delta_size = desired_scale - selectNode->mSavedScale.mV[axis_index]; // propagate constraint back to position |
1268 | 1272 | ||
@@ -1962,7 +1966,7 @@ F32 LLManipScale::partToMaxScale( S32 part, const LLBBox &bbox ) const | |||
1962 | max_extent = bbox_extents.mV[i]; | 1966 | max_extent = bbox_extents.mV[i]; |
1963 | } | 1967 | } |
1964 | } | 1968 | } |
1965 | max_scale_factor = bbox_extents.magVec() * DEFAULT_MAX_PRIM_SCALE / max_extent; | 1969 | max_scale_factor = bbox_extents.magVec() * mMaxPrimSize / max_extent; |
1966 | 1970 | ||
1967 | if (getUniform()) | 1971 | if (getUniform()) |
1968 | { | 1972 | { |
@@ -1977,7 +1981,7 @@ F32 LLManipScale::partToMinScale( S32 part, const LLBBox &bbox ) const | |||
1977 | { | 1981 | { |
1978 | LLVector3 bbox_extents = unitVectorToLocalBBoxExtent( partToUnitVector( part ), bbox ); | 1982 | LLVector3 bbox_extents = unitVectorToLocalBBoxExtent( partToUnitVector( part ), bbox ); |
1979 | bbox_extents.abs(); | 1983 | bbox_extents.abs(); |
1980 | F32 min_extent = DEFAULT_MAX_PRIM_SCALE; | 1984 | F32 min_extent = mMaxPrimSize; |
1981 | for (U32 i = VX; i <= VZ; i++) | 1985 | for (U32 i = VX; i <= VZ; i++) |
1982 | { | 1986 | { |
1983 | if (bbox_extents.mV[i] > 0.f && bbox_extents.mV[i] < min_extent) | 1987 | if (bbox_extents.mV[i] > 0.f && bbox_extents.mV[i] < min_extent) |
@@ -2052,3 +2056,13 @@ BOOL LLManipScale::canAffectSelection() | |||
2052 | } | 2056 | } |
2053 | return can_scale; | 2057 | return can_scale; |
2054 | } | 2058 | } |
2059 | |||
2060 | //static | ||
2061 | F32 LLManipScale::getMaxPrimSize() | ||
2062 | { | ||
2063 | if (gSavedSettings.getBOOL("LoggedIntoOpenSim")) | ||
2064 | { | ||
2065 | return DEFAULT_OPENSIM_MAX_PRIM_SCALE; | ||
2066 | } | ||
2067 | return DEFAULT_LL_MAX_PRIM_SCALE; | ||
2068 | } | ||
diff --git a/linden/indra/newview/llmanipscale.h b/linden/indra/newview/llmanipscale.h index 98d8c63..c60cb69 100644 --- a/linden/indra/newview/llmanipscale.h +++ b/linden/indra/newview/llmanipscale.h | |||
@@ -88,6 +88,8 @@ public: | |||
88 | static void setShowAxes( BOOL b ); | 88 | static void setShowAxes( BOOL b ); |
89 | static BOOL getShowAxes(); | 89 | static BOOL getShowAxes(); |
90 | 90 | ||
91 | static F32 getMaxPrimSize(); | ||
92 | |||
91 | private: | 93 | private: |
92 | void renderCorners( const LLBBox& local_bbox ); | 94 | void renderCorners( const LLBBox& local_bbox ); |
93 | void renderFaces( const LLBBox& local_bbox ); | 95 | void renderFaces( const LLBBox& local_bbox ); |
@@ -165,6 +167,7 @@ private: | |||
165 | F32 mScaleSnapValue; | 167 | F32 mScaleSnapValue; |
166 | BOOL mInSnapRegime; | 168 | BOOL mInSnapRegime; |
167 | F32* mManipulatorScales; | 169 | F32* mManipulatorScales; |
170 | F32 mMaxPrimSize; | ||
168 | }; | 171 | }; |
169 | 172 | ||
170 | #endif // LL_MANIPSCALE_H | 173 | #endif // LL_MANIPSCALE_H |
diff --git a/linden/indra/newview/llnetmap.cpp b/linden/indra/newview/llnetmap.cpp index 8f5d90d..9ef56c1 100644 --- a/linden/indra/newview/llnetmap.cpp +++ b/linden/indra/newview/llnetmap.cpp | |||
@@ -45,6 +45,7 @@ | |||
45 | #include "llcolorscheme.h" | 45 | #include "llcolorscheme.h" |
46 | #include "llviewercontrol.h" | 46 | #include "llviewercontrol.h" |
47 | #include "llfloateravatarinfo.h" | 47 | #include "llfloateravatarinfo.h" |
48 | #include "llfloatermap.h" | ||
48 | #include "llfloaterworldmap.h" | 49 | #include "llfloaterworldmap.h" |
49 | #include "llframetimer.h" | 50 | #include "llframetimer.h" |
50 | #include "llmutelist.h" | 51 | #include "llmutelist.h" |
@@ -69,13 +70,15 @@ | |||
69 | #include "llglheaders.h" | 70 | #include "llglheaders.h" |
70 | 71 | ||
71 | const F32 MAP_SCALE_MIN = 32; | 72 | const F32 MAP_SCALE_MIN = 32; |
72 | const F32 MAP_SCALE_MID = 172; | 73 | const F32 MAP_SCALE_MID = 1024; |
73 | const F32 MAP_SCALE_MAX = 512; | 74 | const F32 MAP_SCALE_MAX = 4096; |
74 | const F32 MAP_SCALE_INCREMENT = 16; | 75 | const F32 MAP_SCALE_INCREMENT = 16; |
75 | const F32 MAP_MIN_PICK_DIST = 4; | 76 | const F32 MAP_SCALE_ZOOM_FACTOR = 1.25f; // Zoom in factor per click of the scroll wheel (25%) |
76 | const F32 MAP_MINOR_DIR_THRESHOLD = 0.08f; | 77 | const F32 MAP_MINOR_DIR_THRESHOLD = 0.08f; |
78 | const F32 MIN_DOT_RADIUS = 3.5f; | ||
79 | const F32 DOT_SCALE = 0.75f; | ||
80 | const F32 MIN_PICK_SCALE = 2.f; | ||
77 | const S32 SLOP = 2; | 81 | const S32 SLOP = 2; |
78 | |||
79 | const S32 TRACKING_RADIUS = 3; | 82 | const S32 TRACKING_RADIUS = 3; |
80 | 83 | ||
81 | LLNetMap::LLNetMap(const std::string& name) : | 84 | LLNetMap::LLNetMap(const std::string& name) : |
@@ -91,6 +94,7 @@ LLNetMap::LLNetMap(const std::string& name) : | |||
91 | { | 94 | { |
92 | mScale = gSavedSettings.getF32("MiniMapScale"); | 95 | mScale = gSavedSettings.getF32("MiniMapScale"); |
93 | mPixelsPerMeter = mScale / LLWorld::getInstance()->getRegionWidthInMeters(); | 96 | mPixelsPerMeter = mScale / LLWorld::getInstance()->getRegionWidthInMeters(); |
97 | mDotRadius = llmax(DOT_SCALE * mPixelsPerMeter, MIN_DOT_RADIUS); | ||
94 | 98 | ||
95 | mObjectImageCenterGlobal = gAgent.getCameraPositionGlobal(); | 99 | mObjectImageCenterGlobal = gAgent.getCameraPositionGlobal(); |
96 | 100 | ||
@@ -98,6 +102,8 @@ LLNetMap::LLNetMap(const std::string& name) : | |||
98 | (new LLScaleMap())->registerListener(this, "MiniMap.ZoomLevel"); | 102 | (new LLScaleMap())->registerListener(this, "MiniMap.ZoomLevel"); |
99 | (new LLCenterMap())->registerListener(this, "MiniMap.Center"); | 103 | (new LLCenterMap())->registerListener(this, "MiniMap.Center"); |
100 | (new LLCheckCenterMap())->registerListener(this, "MiniMap.CheckCenter"); | 104 | (new LLCheckCenterMap())->registerListener(this, "MiniMap.CheckCenter"); |
105 | (new LLRotateMap())->registerListener(this, "MiniMap.Rotate"); | ||
106 | (new LLCheckRotateMap())->registerListener(this, "MiniMap.CheckRotate"); | ||
101 | (new LLShowWorldMap())->registerListener(this, "MiniMap.ShowWorldMap"); | 107 | (new LLShowWorldMap())->registerListener(this, "MiniMap.ShowWorldMap"); |
102 | (new LLStopTracking())->registerListener(this, "MiniMap.StopTracking"); | 108 | (new LLStopTracking())->registerListener(this, "MiniMap.StopTracking"); |
103 | (new LLEnableTracking())->registerListener(this, "MiniMap.EnableTracking"); | 109 | (new LLEnableTracking())->registerListener(this, "MiniMap.EnableTracking"); |
@@ -117,6 +123,11 @@ LLNetMap::LLNetMap(const std::string& name) : | |||
117 | mPopupMenuHandle = menu->getHandle(); | 123 | mPopupMenuHandle = menu->getHandle(); |
118 | } | 124 | } |
119 | 125 | ||
126 | BOOL LLNetMap::postBuild() | ||
127 | { | ||
128 | return TRUE; | ||
129 | } | ||
130 | |||
120 | LLNetMap::~LLNetMap() | 131 | LLNetMap::~LLNetMap() |
121 | { | 132 | { |
122 | } | 133 | } |
@@ -143,6 +154,7 @@ void LLNetMap::setScale( F32 scale ) | |||
143 | } | 154 | } |
144 | 155 | ||
145 | mPixelsPerMeter = mScale / LLWorld::getInstance()->getRegionWidthInMeters(); | 156 | mPixelsPerMeter = mScale / LLWorld::getInstance()->getRegionWidthInMeters(); |
157 | mDotRadius = llmax(DOT_SCALE * mPixelsPerMeter, MIN_DOT_RADIUS); | ||
146 | 158 | ||
147 | mUpdateNow = TRUE; | 159 | mUpdateNow = TRUE; |
148 | } | 160 | } |
@@ -325,12 +337,15 @@ void LLNetMap::draw() | |||
325 | LLUI::getCursorPositionLocal(this, &local_mouse_x, &local_mouse_y); | 337 | LLUI::getCursorPositionLocal(this, &local_mouse_x, &local_mouse_y); |
326 | mClosestAgentToCursor.setNull(); | 338 | mClosestAgentToCursor.setNull(); |
327 | F32 closest_dist = F32_MAX; | 339 | F32 closest_dist = F32_MAX; |
340 | F32 min_pick_dist = mDotRadius * MIN_PICK_SCALE; | ||
328 | 341 | ||
329 | // Draw avatars | 342 | // Draw avatars |
330 | LLColor4 avatar_color = gColors.getColor( "MapAvatar" ); | 343 | LLColor4 avatar_color = gColors.getColor( "MapAvatar" ); |
331 | LLColor4 friend_color = gColors.getColor( "MapFriend" ); | 344 | LLColor4 friend_color = gColors.getColor( "MapFriend" ); |
332 | LLColor4 muted_color = gColors.getColor( "MapMuted" ); | 345 | LLColor4 muted_color = gColors.getColor( "MapMuted" ); |
346 | LLColor4 selected_color = gColors.getColor( "MapSelected" ); | ||
333 | LLColor4 glyph_color; | 347 | LLColor4 glyph_color; |
348 | F32 glyph_radius; | ||
334 | 349 | ||
335 | std::vector<LLUUID> avatar_ids; | 350 | std::vector<LLUUID> avatar_ids; |
336 | std::vector<LLVector3d> positions; | 351 | std::vector<LLVector3d> positions; |
@@ -340,20 +355,38 @@ void LLNetMap::draw() | |||
340 | // TODO: it'd be very cool to draw these in sorted order from lowest Z to highest. | 355 | // TODO: it'd be very cool to draw these in sorted order from lowest Z to highest. |
341 | // just be careful to sort the avatar IDs along with the positions. -MG | 356 | // just be careful to sort the avatar IDs along with the positions. -MG |
342 | pos_map = globalPosToView(positions[i], rotate_map); | 357 | pos_map = globalPosToView(positions[i], rotate_map); |
343 | 358 | ||
344 | // Show them muted even if they're friends | 359 | if (LLFloaterMap::getSelected() == avatar_ids[i]) |
345 | if (LLMuteList::getInstance()->isMuted(avatar_ids[i])) | ||
346 | { | 360 | { |
347 | glyph_color = muted_color; | 361 | glyph_radius = mDotRadius * 1.7f; |
362 | glyph_color = selected_color; | ||
348 | } | 363 | } |
349 | else if (is_agent_friend(avatar_ids[i])) | 364 | else |
350 | { | 365 | { |
351 | glyph_color = friend_color; | 366 | glyph_radius = mDotRadius; |
367 | // Show them muted even if they're friends | ||
368 | if (LLMuteList::getInstance()->isMuted(avatar_ids[i])) | ||
369 | { | ||
370 | glyph_color = muted_color; | ||
371 | } | ||
372 | else if (is_agent_friend(avatar_ids[i])) | ||
373 | { | ||
374 | glyph_color = friend_color; | ||
375 | } | ||
376 | else | ||
377 | { | ||
378 | glyph_color = avatar_color; | ||
379 | } | ||
352 | } | 380 | } |
353 | else | 381 | |
382 | // [RLVa:KB] | ||
383 | if ( rlv_handler_t::isEnabled() && !gRlvHandler.hasBehaviour(RLV_BHVR_SHOWNAMES) ) | ||
354 | { | 384 | { |
385 | // User is not allowed to see who it is, or even if it's a friend, | ||
386 | // due to RLV settings. | ||
355 | glyph_color = avatar_color; | 387 | glyph_color = avatar_color; |
356 | } | 388 | } |
389 | // [/RLVa:KB] | ||
357 | 390 | ||
358 | // [RLVa:KB] | 391 | // [RLVa:KB] |
359 | if ( !gRlvHandler.hasBehaviour(RLV_BHVR_SHOWNAMES) ) | 392 | if ( !gRlvHandler.hasBehaviour(RLV_BHVR_SHOWNAMES) ) |
@@ -368,10 +401,11 @@ void LLNetMap::draw() | |||
368 | LLWorldMapView::drawAvatar( | 401 | LLWorldMapView::drawAvatar( |
369 | pos_map.mV[VX], pos_map.mV[VY], | 402 | pos_map.mV[VX], pos_map.mV[VY], |
370 | glyph_color, | 403 | glyph_color, |
371 | pos_map.mV[VZ]); | 404 | pos_map.mV[VZ], |
405 | glyph_radius); | ||
372 | 406 | ||
373 | F32 dist_to_cursor = dist_vec(LLVector2(pos_map.mV[VX], pos_map.mV[VY]), LLVector2(local_mouse_x,local_mouse_y)); | 407 | F32 dist_to_cursor = dist_vec(LLVector2(pos_map.mV[VX], pos_map.mV[VY]), LLVector2(local_mouse_x,local_mouse_y)); |
374 | if(dist_to_cursor < MAP_MIN_PICK_DIST && dist_to_cursor < closest_dist) | 408 | if(dist_to_cursor < min_pick_dist && dist_to_cursor < closest_dist) |
375 | { | 409 | { |
376 | closest_dist = dist_to_cursor; | 410 | closest_dist = dist_to_cursor; |
377 | mClosestAgentToCursor = avatar_ids[i]; | 411 | mClosestAgentToCursor = avatar_ids[i]; |
@@ -400,10 +434,13 @@ void LLNetMap::draw() | |||
400 | // Draw dot for self avatar position | 434 | // Draw dot for self avatar position |
401 | pos_global = gAgent.getPositionGlobal(); | 435 | pos_global = gAgent.getPositionGlobal(); |
402 | pos_map = globalPosToView(pos_global, rotate_map); | 436 | pos_map = globalPosToView(pos_global, rotate_map); |
403 | LLUIImagePtr you = LLWorldMapView::sAvatarYouSmallImage; | 437 | LLUIImagePtr you = LLWorldMapView::sAvatarYouLargeImage; |
438 | S32 dot_width = llround(mDotRadius * 2.f); | ||
404 | you->draw( | 439 | you->draw( |
405 | llround(pos_map.mV[VX]) - you->getWidth()/2, | 440 | llround(pos_map.mV[VX] - mDotRadius), |
406 | llround(pos_map.mV[VY]) - you->getHeight()/2); | 441 | llround(pos_map.mV[VY] - mDotRadius), |
442 | dot_width, | ||
443 | dot_width); | ||
407 | 444 | ||
408 | // Draw frustum | 445 | // Draw frustum |
409 | F32 meters_to_pixels = mScale/ LLWorld::getInstance()->getRegionWidthInMeters(); | 446 | F32 meters_to_pixels = mScale/ LLWorld::getInstance()->getRegionWidthInMeters(); |
@@ -460,6 +497,8 @@ void LLNetMap::draw() | |||
460 | setDirectionPos( getChild<LLTextBox>("se_label"), rotation + F_PI + F_PI_BY_TWO + F_PI_BY_TWO / 2); | 497 | setDirectionPos( getChild<LLTextBox>("se_label"), rotation + F_PI + F_PI_BY_TWO + F_PI_BY_TWO / 2); |
461 | 498 | ||
462 | LLView::draw(); | 499 | LLView::draw(); |
500 | |||
501 | LLFloaterMap::updateRadar(); | ||
463 | } | 502 | } |
464 | 503 | ||
465 | void LLNetMap::reshape(S32 width, S32 height, BOOL called_from_parent) | 504 | void LLNetMap::reshape(S32 width, S32 height, BOOL called_from_parent) |
@@ -542,8 +581,12 @@ LLVector3d LLNetMap::viewPosToGlobal( S32 x, S32 y, BOOL rotated ) | |||
542 | 581 | ||
543 | BOOL LLNetMap::handleScrollWheel(S32 x, S32 y, S32 clicks) | 582 | BOOL LLNetMap::handleScrollWheel(S32 x, S32 y, S32 clicks) |
544 | { | 583 | { |
545 | // note that clicks are reversed from what you'd think | 584 | // note that clicks are reversed from what you'd think: i.e. > 0 means zoom out, < 0 means zoom in |
546 | setScale(llclamp(mScale - clicks*MAP_SCALE_INCREMENT, MAP_SCALE_MIN, MAP_SCALE_MAX)); | 585 | F32 scale = mScale; |
586 | |||
587 | scale *= pow(MAP_SCALE_ZOOM_FACTOR, -clicks); | ||
588 | setScale(llclamp(scale, MAP_SCALE_MIN, MAP_SCALE_MAX)); | ||
589 | |||
547 | return TRUE; | 590 | return TRUE; |
548 | } | 591 | } |
549 | 592 | ||
@@ -562,7 +605,7 @@ BOOL LLNetMap::handleToolTip( S32 x, S32 y, std::string& msg, LLRect* sticky_rec | |||
562 | if(mClosestAgentToCursor.notNull() && gCacheName->getFullName(mClosestAgentToCursor, fullname)) | 605 | if(mClosestAgentToCursor.notNull() && gCacheName->getFullName(mClosestAgentToCursor, fullname)) |
563 | { | 606 | { |
564 | // [RLVa:KB] | 607 | // [RLVa:KB] |
565 | if ( !gRlvHandler.hasBehaviour(RLV_BHVR_SHOWNAMES) ) | 608 | if ( rlv_handler_t::isEnabled() && !gRlvHandler.hasBehaviour(RLV_BHVR_SHOWNAMES) ) |
566 | { | 609 | { |
567 | // User is not allowed to see who it is, due to RLV settings. | 610 | // User is not allowed to see who it is, due to RLV settings. |
568 | msg.append(rlv_handler_t::cstrHidden); | 611 | msg.append(rlv_handler_t::cstrHidden); |
@@ -576,7 +619,7 @@ BOOL LLNetMap::handleToolTip( S32 x, S32 y, std::string& msg, LLRect* sticky_rec | |||
576 | } | 619 | } |
577 | 620 | ||
578 | // [RLVa:KB] | 621 | // [RLVa:KB] |
579 | if (!gRlvHandler.hasBehaviour(RLV_BHVR_SHOWLOC)) | 622 | if (rlv_handler_t::isEnabled() && !gRlvHandler.hasBehaviour(RLV_BHVR_SHOWLOC)) |
580 | { | 623 | { |
581 | // User is not allowed to see where they are, due to RLV settings. | 624 | // User is not allowed to see where they are, due to RLV settings. |
582 | msg.append( rlv_handler_t::cstrHidden ); | 625 | msg.append( rlv_handler_t::cstrHidden ); |
@@ -922,6 +965,22 @@ bool LLNetMap::LLScaleMap::handleEvent(LLPointer<LLEvent> event, const LLSD& use | |||
922 | return true; | 965 | return true; |
923 | } | 966 | } |
924 | 967 | ||
968 | bool LLNetMap::LLRotateMap::handleEvent(LLPointer<LLEvent> event, const LLSD& userdata) | ||
969 | { | ||
970 | BOOL rotate = gSavedSettings.getBOOL("MiniMapRotate"); | ||
971 | gSavedSettings.setBOOL("MiniMapRotate", !rotate); | ||
972 | |||
973 | return true; | ||
974 | } | ||
975 | |||
976 | bool LLNetMap::LLCheckRotateMap::handleEvent(LLPointer<LLEvent> event, const LLSD& userdata) | ||
977 | { | ||
978 | LLNetMap *self = mPtr; | ||
979 | BOOL enabled = gSavedSettings.getBOOL("MiniMapRotate"); | ||
980 | self->findControl(userdata["control"].asString())->setValue(enabled); | ||
981 | return true; | ||
982 | } | ||
983 | |||
925 | bool LLNetMap::LLCenterMap::handleEvent(LLPointer<LLEvent> event, const LLSD& userdata) | 984 | bool LLNetMap::LLCenterMap::handleEvent(LLPointer<LLEvent> event, const LLSD& userdata) |
926 | { | 985 | { |
927 | S32 center = userdata.asInteger(); | 986 | S32 center = userdata.asInteger(); |
diff --git a/linden/indra/newview/llnetmap.h b/linden/indra/newview/llnetmap.h index ef046d8..800b825 100644 --- a/linden/indra/newview/llnetmap.h +++ b/linden/indra/newview/llnetmap.h | |||
@@ -52,6 +52,8 @@ class LLNetMap : public LLPanel | |||
52 | { | 52 | { |
53 | public: | 53 | public: |
54 | LLNetMap(const std::string& name); | 54 | LLNetMap(const std::string& name); |
55 | |||
56 | virtual BOOL postBuild(); | ||
55 | virtual ~LLNetMap(); | 57 | virtual ~LLNetMap(); |
56 | 58 | ||
57 | virtual void draw(); | 59 | virtual void draw(); |
@@ -93,7 +95,8 @@ private: | |||
93 | F32 mScale; // Size of a region in pixels | 95 | F32 mScale; // Size of a region in pixels |
94 | F32 mPixelsPerMeter; // world meters to map pixels | 96 | F32 mPixelsPerMeter; // world meters to map pixels |
95 | F32 mObjectMapTPM; // texels per meter on map | 97 | F32 mObjectMapTPM; // texels per meter on map |
96 | F32 mObjectMapPixels; // Width of object map in pixels; | 98 | F32 mObjectMapPixels; // Width of object map in pixels |
99 | F32 mDotRadius; // Size of avatar markers | ||
97 | F32 mTargetPanX; | 100 | F32 mTargetPanX; |
98 | F32 mTargetPanY; | 101 | F32 mTargetPanY; |
99 | F32 mCurPanX; | 102 | F32 mCurPanX; |
@@ -111,8 +114,8 @@ private: | |||
111 | LLPointer<LLImageGL> mObjectImagep; | 114 | LLPointer<LLImageGL> mObjectImagep; |
112 | 115 | ||
113 | private: | 116 | private: |
114 | LLUUID mClosestAgentToCursor; | 117 | LLUUID mClosestAgentToCursor; |
115 | LLUUID mClosestAgentAtLastRightClick; | 118 | LLUUID mClosestAgentAtLastRightClick; |
116 | 119 | ||
117 | static BOOL sRotateMap; | 120 | static BOOL sRotateMap; |
118 | static LLNetMap* sInstance; | 121 | static LLNetMap* sInstance; |
@@ -140,6 +143,18 @@ private: | |||
140 | /*virtual*/ bool handleEvent(LLPointer<LLEvent> event, const LLSD& userdata); | 143 | /*virtual*/ bool handleEvent(LLPointer<LLEvent> event, const LLSD& userdata); |
141 | }; | 144 | }; |
142 | 145 | ||
146 | class LLRotateMap : public LLMemberListener<LLNetMap> | ||
147 | { | ||
148 | public: | ||
149 | /*virtual*/ bool handleEvent(LLPointer<LLEvent> event, const LLSD& userdata); | ||
150 | }; | ||
151 | |||
152 | class LLCheckRotateMap : public LLMemberListener<LLNetMap> | ||
153 | { | ||
154 | public: | ||
155 | /*virtual*/ bool handleEvent(LLPointer<LLEvent> event, const LLSD& userdata); | ||
156 | }; | ||
157 | |||
143 | class LLShowWorldMap : public LLMemberListener<LLNetMap> | 158 | class LLShowWorldMap : public LLMemberListener<LLNetMap> |
144 | { | 159 | { |
145 | public: | 160 | public: |
diff --git a/linden/indra/newview/lloverlaybar.cpp b/linden/indra/newview/lloverlaybar.cpp index 91ac440..c1a2354 100644 --- a/linden/indra/newview/lloverlaybar.cpp +++ b/linden/indra/newview/lloverlaybar.cpp | |||
@@ -41,6 +41,7 @@ | |||
41 | #include "llagent.h" | 41 | #include "llagent.h" |
42 | #include "llbutton.h" | 42 | #include "llbutton.h" |
43 | #include "llchatbar.h" | 43 | #include "llchatbar.h" |
44 | #include "llfloaterchat.h" | ||
44 | #include "llfocusmgr.h" | 45 | #include "llfocusmgr.h" |
45 | #include "llimview.h" | 46 | #include "llimview.h" |
46 | #include "llmediaremotectrl.h" | 47 | #include "llmediaremotectrl.h" |
@@ -62,6 +63,7 @@ | |||
62 | #include "llvoavatar.h" | 63 | #include "llvoavatar.h" |
63 | #include "llvoiceremotectrl.h" | 64 | #include "llvoiceremotectrl.h" |
64 | #include "llwebbrowserctrl.h" | 65 | #include "llwebbrowserctrl.h" |
66 | #include "llwindlightremotectrl.h" | ||
65 | #include "llselectmgr.h" | 67 | #include "llselectmgr.h" |
66 | 68 | ||
67 | // | 69 | // |
@@ -72,6 +74,53 @@ LLOverlayBar *gOverlayBar = NULL; | |||
72 | 74 | ||
73 | extern S32 MENU_BAR_HEIGHT; | 75 | extern S32 MENU_BAR_HEIGHT; |
74 | 76 | ||
77 | |||
78 | class LLTitleObserver | ||
79 | : public LLMediaObserver | ||
80 | { | ||
81 | public: | ||
82 | void init(std::string url); | ||
83 | /*virtual*/ void onMediaTitleChange(const EventType& event_in); | ||
84 | private: | ||
85 | LLMediaBase* mMediaSource; | ||
86 | }; | ||
87 | |||
88 | static LLTitleObserver sTitleObserver; | ||
89 | |||
90 | static LLRegisterWidget<LLMediaRemoteCtrl> r("media_remote"); | ||
91 | |||
92 | void LLTitleObserver::init(std::string url) | ||
93 | { | ||
94 | |||
95 | if (!gAudiop) | ||
96 | { | ||
97 | return; | ||
98 | } | ||
99 | |||
100 | mMediaSource = gAudiop->getStreamMedia(); // LLViewerMedia::getSource(); | ||
101 | |||
102 | if ( mMediaSource ) | ||
103 | { | ||
104 | mMediaSource->addObserver(this); | ||
105 | } | ||
106 | } | ||
107 | |||
108 | //virtual | ||
109 | void LLTitleObserver::onMediaTitleChange(const EventType& event_in) | ||
110 | { | ||
111 | if ( !gSavedSettings.getBOOL("ShowStreamTitle") ) | ||
112 | { | ||
113 | return; | ||
114 | } | ||
115 | |||
116 | LLChat chat; | ||
117 | //TODO: set this in XUI | ||
118 | std::string playing_msg = "Playing: " + event_in.getStringValue(); | ||
119 | chat.mText = playing_msg; | ||
120 | LLFloaterChat::addChat(chat, FALSE, FALSE); | ||
121 | } | ||
122 | |||
123 | |||
75 | // | 124 | // |
76 | // Functions | 125 | // Functions |
77 | // | 126 | // |
@@ -92,6 +141,13 @@ void* LLOverlayBar::createVoiceRemote(void* userdata) | |||
92 | return self->mVoiceRemote; | 141 | return self->mVoiceRemote; |
93 | } | 142 | } |
94 | 143 | ||
144 | void* LLOverlayBar::createWindlightRemote(void* userdata) | ||
145 | { | ||
146 | LLOverlayBar *self = (LLOverlayBar*)userdata; | ||
147 | self->mWindlightRemote = new LLWindlightRemoteCtrl(); | ||
148 | return self->mWindlightRemote; | ||
149 | } | ||
150 | |||
95 | void* LLOverlayBar::createChatBar(void* userdata) | 151 | void* LLOverlayBar::createChatBar(void* userdata) |
96 | { | 152 | { |
97 | gChatBar = new LLChatBar(); | 153 | gChatBar = new LLChatBar(); |
@@ -102,6 +158,7 @@ LLOverlayBar::LLOverlayBar() | |||
102 | : LLPanel(), | 158 | : LLPanel(), |
103 | mMediaRemote(NULL), | 159 | mMediaRemote(NULL), |
104 | mVoiceRemote(NULL), | 160 | mVoiceRemote(NULL), |
161 | mWindlightRemote(NULL), | ||
105 | mMusicState(STOPPED), | 162 | mMusicState(STOPPED), |
106 | mOriginalIMLabel("") | 163 | mOriginalIMLabel("") |
107 | { | 164 | { |
@@ -113,6 +170,7 @@ LLOverlayBar::LLOverlayBar() | |||
113 | LLCallbackMap::map_t factory_map; | 170 | LLCallbackMap::map_t factory_map; |
114 | factory_map["media_remote"] = LLCallbackMap(LLOverlayBar::createMediaRemote, this); | 171 | factory_map["media_remote"] = LLCallbackMap(LLOverlayBar::createMediaRemote, this); |
115 | factory_map["voice_remote"] = LLCallbackMap(LLOverlayBar::createVoiceRemote, this); | 172 | factory_map["voice_remote"] = LLCallbackMap(LLOverlayBar::createVoiceRemote, this); |
173 | factory_map["windlight_remote"] = LLCallbackMap(LLOverlayBar::createWindlightRemote, this); | ||
116 | factory_map["chat_bar"] = LLCallbackMap(LLOverlayBar::createChatBar, this); | 174 | factory_map["chat_bar"] = LLCallbackMap(LLOverlayBar::createChatBar, this); |
117 | 175 | ||
118 | LLUICtrlFactory::getInstance()->buildPanel(this, "panel_overlaybar.xml", &factory_map); | 176 | LLUICtrlFactory::getInstance()->buildPanel(this, "panel_overlaybar.xml", &factory_map); |
@@ -272,6 +330,7 @@ void LLOverlayBar::refresh() | |||
272 | } | 330 | } |
273 | 331 | ||
274 | 332 | ||
333 | moveChildToBackOfTabGroup(mWindlightRemote); | ||
275 | moveChildToBackOfTabGroup(mMediaRemote); | 334 | moveChildToBackOfTabGroup(mMediaRemote); |
276 | moveChildToBackOfTabGroup(mVoiceRemote); | 335 | moveChildToBackOfTabGroup(mVoiceRemote); |
277 | 336 | ||
@@ -280,6 +339,7 @@ void LLOverlayBar::refresh() | |||
280 | { | 339 | { |
281 | childSetVisible("media_remote_container", FALSE); | 340 | childSetVisible("media_remote_container", FALSE); |
282 | childSetVisible("voice_remote_container", FALSE); | 341 | childSetVisible("voice_remote_container", FALSE); |
342 | childSetVisible("windlight_remote_container", FALSE); | ||
283 | childSetVisible("state_buttons", FALSE); | 343 | childSetVisible("state_buttons", FALSE); |
284 | } | 344 | } |
285 | else | 345 | else |
@@ -287,6 +347,7 @@ void LLOverlayBar::refresh() | |||
287 | // update "remotes" | 347 | // update "remotes" |
288 | childSetVisible("media_remote_container", TRUE); | 348 | childSetVisible("media_remote_container", TRUE); |
289 | childSetVisible("voice_remote_container", LLVoiceClient::voiceEnabled()); | 349 | childSetVisible("voice_remote_container", LLVoiceClient::voiceEnabled()); |
350 | childSetVisible("windlight_remote_container", gSavedSettings.getBOOL("EnableWindlightRemote")); | ||
290 | childSetVisible("state_buttons", TRUE); | 351 | childSetVisible("state_buttons", TRUE); |
291 | } | 352 | } |
292 | 353 | ||
@@ -416,6 +477,7 @@ void LLOverlayBar::toggleMusicPlay(void*) | |||
416 | // if ( gAudiop->isInternetStreamPlaying() == 0 ) | 477 | // if ( gAudiop->isInternetStreamPlaying() == 0 ) |
417 | { | 478 | { |
418 | gAudiop->startInternetStream(parcel->getMusicURL()); | 479 | gAudiop->startInternetStream(parcel->getMusicURL()); |
480 | sTitleObserver.init(parcel->getMusicURL()); | ||
419 | } | 481 | } |
420 | } | 482 | } |
421 | } | 483 | } |
diff --git a/linden/indra/newview/lloverlaybar.h b/linden/indra/newview/lloverlaybar.h index 52a469a..140fabf 100644 --- a/linden/indra/newview/lloverlaybar.h +++ b/linden/indra/newview/lloverlaybar.h | |||
@@ -40,6 +40,7 @@ extern S32 STATUS_BAR_HEIGHT; | |||
40 | class LLButton; | 40 | class LLButton; |
41 | class LLLineEditor; | 41 | class LLLineEditor; |
42 | class LLMediaRemoteCtrl; | 42 | class LLMediaRemoteCtrl; |
43 | |||
43 | class LLMessageSystem; | 44 | class LLMessageSystem; |
44 | class LLTextBox; | 45 | class LLTextBox; |
45 | class LLTextEditor; | 46 | class LLTextEditor; |
@@ -49,6 +50,7 @@ class LLFrameTimer; | |||
49 | class LLStatGraph; | 50 | class LLStatGraph; |
50 | class LLSlider; | 51 | class LLSlider; |
51 | class LLVoiceRemoteCtrl; | 52 | class LLVoiceRemoteCtrl; |
53 | class LLWindlightRemoteCtrl; | ||
52 | 54 | ||
53 | class LLOverlayBar | 55 | class LLOverlayBar |
54 | : public LLPanel | 56 | : public LLPanel |
@@ -88,13 +90,15 @@ public: | |||
88 | protected: | 90 | protected: |
89 | static void* createMediaRemote(void* userdata); | 91 | static void* createMediaRemote(void* userdata); |
90 | static void* createVoiceRemote(void* userdata); | 92 | static void* createVoiceRemote(void* userdata); |
93 | static void* createWindlightRemote(void* userdata); | ||
91 | static void* createChatBar(void* userdata); | 94 | static void* createChatBar(void* userdata); |
92 | 95 | ||
93 | void enableMediaButtons(); | 96 | void enableMediaButtons(); |
94 | 97 | ||
95 | protected: | 98 | protected: |
96 | LLMediaRemoteCtrl* mMediaRemote; | 99 | LLMediaRemoteCtrl* mMediaRemote; |
97 | LLVoiceRemoteCtrl* mVoiceRemote; | 100 | LLVoiceRemoteCtrl* mVoiceRemote; |
101 | LLWindlightRemoteCtrl* mWindlightRemote; | ||
98 | bool mBuilt; // dialog constructed yet? | 102 | bool mBuilt; // dialog constructed yet? |
99 | S32 mMusicState; | 103 | S32 mMusicState; |
100 | std::string mOriginalIMLabel; | 104 | std::string mOriginalIMLabel; |
diff --git a/linden/indra/newview/llpanelavatar.cpp b/linden/indra/newview/llpanelavatar.cpp index 8c367fa..e101ea2 100644 --- a/linden/indra/newview/llpanelavatar.cpp +++ b/linden/indra/newview/llpanelavatar.cpp | |||
@@ -51,6 +51,7 @@ | |||
51 | 51 | ||
52 | #include "llfloaterfriends.h" | 52 | #include "llfloaterfriends.h" |
53 | #include "llfloatergroupinfo.h" | 53 | #include "llfloatergroupinfo.h" |
54 | #include "llfloatergroups.h" | ||
54 | #include "llfloaterworldmap.h" | 55 | #include "llfloaterworldmap.h" |
55 | #include "llfloatermute.h" | 56 | #include "llfloatermute.h" |
56 | #include "llfloateravatarinfo.h" | 57 | #include "llfloateravatarinfo.h" |
@@ -86,6 +87,7 @@ | |||
86 | std::list<LLPanelAvatar*> LLPanelAvatar::sAllPanels; | 87 | std::list<LLPanelAvatar*> LLPanelAvatar::sAllPanels; |
87 | BOOL LLPanelAvatar::sAllowFirstLife = FALSE; | 88 | BOOL LLPanelAvatar::sAllowFirstLife = FALSE; |
88 | 89 | ||
90 | extern void callback_invite_to_group(LLUUID group_id, void *user_data); | ||
89 | extern void handle_lure(const LLUUID& invitee); | 91 | extern void handle_lure(const LLUUID& invitee); |
90 | extern void handle_pay_by_id(const LLUUID& payee); | 92 | extern void handle_pay_by_id(const LLUUID& payee); |
91 | 93 | ||
@@ -428,6 +430,7 @@ BOOL LLPanelAvatarSecondLife::postBuild(void) | |||
428 | 430 | ||
429 | childSetAction("Find on Map", LLPanelAvatar::onClickTrack, getPanelAvatar()); | 431 | childSetAction("Find on Map", LLPanelAvatar::onClickTrack, getPanelAvatar()); |
430 | childSetAction("Instant Message...", LLPanelAvatar::onClickIM, getPanelAvatar()); | 432 | childSetAction("Instant Message...", LLPanelAvatar::onClickIM, getPanelAvatar()); |
433 | childSetAction("Invite to Group...", LLPanelAvatar::onClickGroupInvite, getPanelAvatar()); | ||
431 | 434 | ||
432 | childSetAction("Add Friend...", LLPanelAvatar::onClickAddFriend, getPanelAvatar()); | 435 | childSetAction("Add Friend...", LLPanelAvatar::onClickAddFriend, getPanelAvatar()); |
433 | childSetAction("Pay...", LLPanelAvatar::onClickPay, getPanelAvatar()); | 436 | childSetAction("Pay...", LLPanelAvatar::onClickPay, getPanelAvatar()); |
@@ -1433,6 +1436,8 @@ void LLPanelAvatar::setAvatarID(const LLUUID &avatar_id, const std::string &name | |||
1433 | } | 1436 | } |
1434 | childSetVisible("Instant Message...",FALSE); | 1437 | childSetVisible("Instant Message...",FALSE); |
1435 | childSetEnabled("Instant Message...",FALSE); | 1438 | childSetEnabled("Instant Message...",FALSE); |
1439 | childSetVisible("Invite to Group...",FALSE); | ||
1440 | childSetEnabled("Invite to Group...",FALSE); | ||
1436 | childSetVisible("Mute",FALSE); | 1441 | childSetVisible("Mute",FALSE); |
1437 | childSetEnabled("Mute",FALSE); | 1442 | childSetEnabled("Mute",FALSE); |
1438 | childSetVisible("Offer Teleport...",FALSE); | 1443 | childSetVisible("Offer Teleport...",FALSE); |
@@ -1445,6 +1450,14 @@ void LLPanelAvatar::setAvatarID(const LLUUID &avatar_id, const std::string &name | |||
1445 | childSetEnabled("Add Friend...",FALSE); | 1450 | childSetEnabled("Add Friend...",FALSE); |
1446 | childSetVisible("Pay...",FALSE); | 1451 | childSetVisible("Pay...",FALSE); |
1447 | childSetEnabled("Pay...",FALSE); | 1452 | childSetEnabled("Pay...",FALSE); |
1453 | childSetVisible("Kick",FALSE); | ||
1454 | childSetEnabled("Kick",FALSE); | ||
1455 | childSetVisible("Freeze",FALSE); | ||
1456 | childSetEnabled("Freeze",FALSE); | ||
1457 | childSetVisible("Unfreeze",FALSE); | ||
1458 | childSetEnabled("Unfreeze",FALSE); | ||
1459 | childSetVisible("csr_btn", FALSE); | ||
1460 | childSetEnabled("csr_btn", FALSE); | ||
1448 | } | 1461 | } |
1449 | else | 1462 | else |
1450 | { | 1463 | { |
@@ -1456,6 +1469,8 @@ void LLPanelAvatar::setAvatarID(const LLUUID &avatar_id, const std::string &name | |||
1456 | 1469 | ||
1457 | childSetVisible("Instant Message...",TRUE); | 1470 | childSetVisible("Instant Message...",TRUE); |
1458 | childSetEnabled("Instant Message...",FALSE); | 1471 | childSetEnabled("Instant Message...",FALSE); |
1472 | childSetVisible("Invite to Group...",TRUE); | ||
1473 | childSetEnabled("Invite to Group...",FALSE); | ||
1459 | childSetVisible("Mute",TRUE); | 1474 | childSetVisible("Mute",TRUE); |
1460 | childSetEnabled("Mute",FALSE); | 1475 | childSetEnabled("Mute",FALSE); |
1461 | 1476 | ||
@@ -1482,20 +1497,20 @@ void LLPanelAvatar::setAvatarID(const LLUUID &avatar_id, const std::string &name | |||
1482 | childSetEnabled("Add Friend...", !avatar_is_friend); | 1497 | childSetEnabled("Add Friend...", !avatar_is_friend); |
1483 | childSetVisible("Pay...",TRUE); | 1498 | childSetVisible("Pay...",TRUE); |
1484 | childSetEnabled("Pay...",FALSE); | 1499 | childSetEnabled("Pay...",FALSE); |
1500 | |||
1501 | BOOL is_god = FALSE; | ||
1502 | if (gAgent.isGodlike()) is_god = TRUE; | ||
1503 | |||
1504 | childSetVisible("Kick", is_god); | ||
1505 | childSetEnabled("Kick", is_god); | ||
1506 | childSetVisible("Freeze", is_god); | ||
1507 | childSetEnabled("Freeze", is_god); | ||
1508 | childSetVisible("Unfreeze", is_god); | ||
1509 | childSetEnabled("Unfreeze", is_god); | ||
1510 | childSetVisible("csr_btn", is_god); | ||
1511 | childSetEnabled("csr_btn", is_god); | ||
1485 | } | 1512 | } |
1486 | } | 1513 | } |
1487 | |||
1488 | BOOL is_god = FALSE; | ||
1489 | if (gAgent.isGodlike()) is_god = TRUE; | ||
1490 | |||
1491 | childSetVisible("Kick", is_god); | ||
1492 | childSetEnabled("Kick", is_god); | ||
1493 | childSetVisible("Freeze", is_god); | ||
1494 | childSetEnabled("Freeze", is_god); | ||
1495 | childSetVisible("Unfreeze", is_god); | ||
1496 | childSetEnabled("Unfreeze", is_god); | ||
1497 | childSetVisible("csr_btn", is_god); | ||
1498 | childSetEnabled("csr_btn", is_god); | ||
1499 | } | 1514 | } |
1500 | 1515 | ||
1501 | 1516 | ||
@@ -1538,9 +1553,18 @@ void LLPanelAvatar::resetGroupList() | |||
1538 | LLSD row; | 1553 | LLSD row; |
1539 | 1554 | ||
1540 | row["id"] = id ; | 1555 | row["id"] = id ; |
1541 | row["columns"][0]["value"] = group_string; | ||
1542 | row["columns"][0]["font"] = "SANSSERIF_SMALL"; | 1556 | row["columns"][0]["font"] = "SANSSERIF_SMALL"; |
1543 | row["columns"][0]["width"] = 0; | 1557 | row["columns"][0]["width"] = 0; |
1558 | if (group_data.mListInProfile) | ||
1559 | { | ||
1560 | row["columns"][0]["value"] = group_string; | ||
1561 | row["columns"][0]["color"] = gColors.getColor("ScrollUnselectedColor").getValue(); | ||
1562 | } | ||
1563 | else | ||
1564 | { | ||
1565 | row["columns"][0]["value"] = group_string + " " + getString("HiddenLabel"); | ||
1566 | row["columns"][0]["color"] = gColors.getColor("ScriptBgReadOnlyColor").getValue(); | ||
1567 | } | ||
1544 | group_list->addElement(row); | 1568 | group_list->addElement(row); |
1545 | } | 1569 | } |
1546 | group_list->sortByColumnIndex(0, TRUE); | 1570 | group_list->sortByColumnIndex(0, TRUE); |
@@ -1563,6 +1587,22 @@ void LLPanelAvatar::onClickIM(void* userdata) | |||
1563 | gIMMgr->addSession(name, IM_NOTHING_SPECIAL, self->mAvatarID); | 1587 | gIMMgr->addSession(name, IM_NOTHING_SPECIAL, self->mAvatarID); |
1564 | } | 1588 | } |
1565 | 1589 | ||
1590 | void LLPanelAvatar::onClickGroupInvite(void* userdata) | ||
1591 | { | ||
1592 | LLPanelAvatar* self = (LLPanelAvatar*) userdata; | ||
1593 | if (self->getAvatarID().notNull()) | ||
1594 | { | ||
1595 | LLFloaterGroupPicker* widget; | ||
1596 | widget = LLFloaterGroupPicker::showInstance(LLSD(gAgent.getID())); | ||
1597 | if (widget) | ||
1598 | { | ||
1599 | widget->center(); | ||
1600 | widget->setPowersMask(GP_MEMBER_INVITE); | ||
1601 | widget->setSelectCallback(callback_invite_to_group, (void *)&(self->getAvatarID())); | ||
1602 | } | ||
1603 | } | ||
1604 | } | ||
1605 | |||
1566 | 1606 | ||
1567 | // static | 1607 | // static |
1568 | //----------------------------------------------------------------------------- | 1608 | //----------------------------------------------------------------------------- |
@@ -1780,6 +1820,7 @@ void LLPanelAvatar::processAvatarPropertiesReply(LLMessageSystem *msg, void**) | |||
1780 | continue; | 1820 | continue; |
1781 | } | 1821 | } |
1782 | self->childSetEnabled("Instant Message...",TRUE); | 1822 | self->childSetEnabled("Instant Message...",TRUE); |
1823 | self->childSetEnabled("Invite to Group...",TRUE); | ||
1783 | self->childSetEnabled("Pay...",TRUE); | 1824 | self->childSetEnabled("Pay...",TRUE); |
1784 | self->childSetEnabled("Mute",TRUE); | 1825 | self->childSetEnabled("Mute",TRUE); |
1785 | 1826 | ||
@@ -2000,8 +2041,34 @@ void LLPanelAvatar::processAvatarGroupsReply(LLMessageSystem *msg, void**) | |||
2000 | 2041 | ||
2001 | LLSD row; | 2042 | LLSD row; |
2002 | row["id"] = group_id; | 2043 | row["id"] = group_id; |
2003 | row["columns"][0]["value"] = group_string; | ||
2004 | row["columns"][0]["font"] = "SANSSERIF_SMALL"; | 2044 | row["columns"][0]["font"] = "SANSSERIF_SMALL"; |
2045 | |||
2046 | LLGroupData *group_data = NULL; | ||
2047 | |||
2048 | if (avatar_id == agent_id) // own avatar | ||
2049 | { | ||
2050 | // Search for this group in the agent's groups list | ||
2051 | LLDynamicArray<LLGroupData>::iterator i; | ||
2052 | for (i = gAgent.mGroups.begin(); i != gAgent.mGroups.end(); i++) | ||
2053 | { | ||
2054 | if (i->mID == group_id) | ||
2055 | { | ||
2056 | group_data = &*i; | ||
2057 | break; | ||
2058 | } | ||
2059 | } | ||
2060 | } | ||
2061 | // Set normal color if not found or if group is visible in profile | ||
2062 | if (!group_data || group_data->mListInProfile) | ||
2063 | { | ||
2064 | row["columns"][0]["value"] = group_string; | ||
2065 | row["columns"][0]["color"] = gColors.getColor("ScrollUnselectedColor").getValue(); | ||
2066 | } | ||
2067 | else | ||
2068 | { | ||
2069 | row["columns"][0]["value"] = group_string + " " + self->getString("HiddenLabel"); | ||
2070 | row["columns"][0]["color"] = gColors.getColor("ScriptBgReadOnlyColor").getValue(); | ||
2071 | } | ||
2005 | if (group_list) | 2072 | if (group_list) |
2006 | { | 2073 | { |
2007 | group_list->addElement(row); | 2074 | group_list->addElement(row); |
diff --git a/linden/indra/newview/llpanelavatar.h b/linden/indra/newview/llpanelavatar.h index 4570145..b1bb317 100644 --- a/linden/indra/newview/llpanelavatar.h +++ b/linden/indra/newview/llpanelavatar.h | |||
@@ -311,6 +311,7 @@ public: | |||
311 | 311 | ||
312 | static void onClickTrack( void *userdata); | 312 | static void onClickTrack( void *userdata); |
313 | static void onClickIM( void *userdata); | 313 | static void onClickIM( void *userdata); |
314 | static void onClickGroupInvite( void *userdata); | ||
314 | static void onClickOfferTeleport( void *userdata); | 315 | static void onClickOfferTeleport( void *userdata); |
315 | static void onClickPay( void *userdata); | 316 | static void onClickPay( void *userdata); |
316 | static void onClickAddFriend(void* userdata); | 317 | static void onClickAddFriend(void* userdata); |
diff --git a/linden/indra/newview/llpaneldisplay.cpp b/linden/indra/newview/llpaneldisplay.cpp index 14e295c..e3da12a 100644 --- a/linden/indra/newview/llpaneldisplay.cpp +++ b/linden/indra/newview/llpaneldisplay.cpp | |||
@@ -318,6 +318,9 @@ BOOL LLPanelDisplay::postBuild() | |||
318 | mLightingText = getChild<LLTextBox>("LightingDetailText"); | 318 | mLightingText = getChild<LLTextBox>("LightingDetailText"); |
319 | mMeshDetailText = getChild<LLTextBox>("MeshDetailText"); | 319 | mMeshDetailText = getChild<LLTextBox>("MeshDetailText"); |
320 | 320 | ||
321 | childSetValue("toggle_windlight_control", gSavedSettings.getBOOL("EnableWindlightRemote")); | ||
322 | mWLControl = gSavedSettings.getBOOL("EnableWindlightRemote"); | ||
323 | |||
321 | refresh(); | 324 | refresh(); |
322 | 325 | ||
323 | return TRUE; | 326 | return TRUE; |
@@ -700,6 +703,8 @@ void LLPanelDisplay::cancel() | |||
700 | gSavedSettings.setU32("WLSkyDetail", mSkyLOD); | 703 | gSavedSettings.setU32("WLSkyDetail", mSkyLOD); |
701 | gSavedSettings.setS32("RenderMaxPartCount", mParticleCount); | 704 | gSavedSettings.setS32("RenderMaxPartCount", mParticleCount); |
702 | gSavedSettings.setS32("RenderGlowResolutionPow", mPostProcess); | 705 | gSavedSettings.setS32("RenderGlowResolutionPow", mPostProcess); |
706 | |||
707 | gSavedSettings.setBOOL("EnableWindlightRemote", mWLControl); | ||
703 | } | 708 | } |
704 | 709 | ||
705 | void LLPanelDisplay::apply() | 710 | void LLPanelDisplay::apply() |
@@ -711,6 +716,8 @@ void LLPanelDisplay::apply() | |||
711 | { | 716 | { |
712 | applyWindowSize(); | 717 | applyWindowSize(); |
713 | } | 718 | } |
719 | |||
720 | gSavedSettings.setBOOL("EnableWindlightRemote", childGetValue("toggle_windlight_control").asBoolean()); | ||
714 | } | 721 | } |
715 | 722 | ||
716 | void LLPanelDisplay::onChangeQuality(LLUICtrl *ctrl, void *data) | 723 | void LLPanelDisplay::onChangeQuality(LLUICtrl *ctrl, void *data) |
diff --git a/linden/indra/newview/llpaneldisplay.h b/linden/indra/newview/llpaneldisplay.h index f98e94e..80ef5cb 100644 --- a/linden/indra/newview/llpaneldisplay.h +++ b/linden/indra/newview/llpaneldisplay.h | |||
@@ -170,6 +170,8 @@ protected: | |||
170 | S32 mParticleCount; | 170 | S32 mParticleCount; |
171 | S32 mPostProcess; | 171 | S32 mPostProcess; |
172 | 172 | ||
173 | BOOL mWLControl; | ||
174 | |||
173 | static void setGraphicsSettings(LLControlGroup& group); | 175 | static void setGraphicsSettings(LLControlGroup& group); |
174 | static void createGroup(); | 176 | static void createGroup(); |
175 | 177 | ||
diff --git a/linden/indra/newview/llpanelgeneral.cpp b/linden/indra/newview/llpanelgeneral.cpp index f370116..490e40d 100644 --- a/linden/indra/newview/llpanelgeneral.cpp +++ b/linden/indra/newview/llpanelgeneral.cpp | |||
@@ -60,7 +60,6 @@ BOOL LLPanelGeneral::postBuild() | |||
60 | childSetValue("small_avatar_names_checkbox", gSavedSettings.getBOOL("SmallAvatarNames")); | 60 | childSetValue("small_avatar_names_checkbox", gSavedSettings.getBOOL("SmallAvatarNames")); |
61 | childSetValue("show_my_title_checkbox", gSavedSettings.getBOOL("RenderHideGroupTitle")); | 61 | childSetValue("show_my_title_checkbox", gSavedSettings.getBOOL("RenderHideGroupTitle")); |
62 | childSetValue("afk_timeout_spinner", gSavedSettings.getF32("AFKTimeout")); | 62 | childSetValue("afk_timeout_spinner", gSavedSettings.getF32("AFKTimeout")); |
63 | childSetValue("rotate_mini_map_checkbox", gSavedSettings.getBOOL("MiniMapRotate")); | ||
64 | childSetValue("notify_money_change_checkbox", gSavedSettings.getBOOL("NotifyMoneyChange")); | 63 | childSetValue("notify_money_change_checkbox", gSavedSettings.getBOOL("NotifyMoneyChange")); |
65 | childSetValue("use_system_color_picker_checkbox", gSavedSettings.getBOOL("UseDefaultColorPicker")); | 64 | childSetValue("use_system_color_picker_checkbox", gSavedSettings.getBOOL("UseDefaultColorPicker")); |
66 | childSetValue("show_search_panel", gSavedSettings.getBOOL("ShowSearchBar")); | 65 | childSetValue("show_search_panel", gSavedSettings.getBOOL("ShowSearchBar")); |
@@ -96,7 +95,6 @@ void LLPanelGeneral::apply() | |||
96 | gSavedSettings.setBOOL("SmallAvatarNames", childGetValue("small_avatar_names_checkbox")); | 95 | gSavedSettings.setBOOL("SmallAvatarNames", childGetValue("small_avatar_names_checkbox")); |
97 | gSavedSettings.setBOOL("RenderHideGroupTitle", childGetValue("show_my_title_checkbox")); | 96 | gSavedSettings.setBOOL("RenderHideGroupTitle", childGetValue("show_my_title_checkbox")); |
98 | gSavedSettings.setF32("AFKTimeout", childGetValue("afk_timeout_spinner").asReal()); | 97 | gSavedSettings.setF32("AFKTimeout", childGetValue("afk_timeout_spinner").asReal()); |
99 | gSavedSettings.setBOOL("MiniMapRotate", childGetValue("rotate_mini_map_checkbox")); | ||
100 | gSavedSettings.setBOOL("NotifyMoneyChange", childGetValue("notify_money_change_checkbox")); | 98 | gSavedSettings.setBOOL("NotifyMoneyChange", childGetValue("notify_money_change_checkbox")); |
101 | gSavedSettings.setBOOL("UseDefaultColorPicker", childGetValue("use_system_color_picker_checkbox")); | 99 | gSavedSettings.setBOOL("UseDefaultColorPicker", childGetValue("use_system_color_picker_checkbox")); |
102 | gSavedSettings.setBOOL("ShowSearchBar", childGetValue("show_search_panel")); | 100 | gSavedSettings.setBOOL("ShowSearchBar", childGetValue("show_search_panel")); |
diff --git a/linden/indra/newview/llpanelobject.cpp b/linden/indra/newview/llpanelobject.cpp index dd71a0e..9dcf410 100644 --- a/linden/indra/newview/llpanelobject.cpp +++ b/linden/indra/newview/llpanelobject.cpp | |||
@@ -631,6 +631,10 @@ void LLPanelObject::getState( ) | |||
631 | } | 631 | } |
632 | else | 632 | else |
633 | { | 633 | { |
634 | mCtrlScaleX->setMaxValue(LLManipScale::getMaxPrimSize()); | ||
635 | mCtrlScaleY->setMaxValue(LLManipScale::getMaxPrimSize()); | ||
636 | mCtrlScaleZ->setMaxValue(LLManipScale::getMaxPrimSize()); | ||
637 | |||
634 | // Only allowed to change these parameters for objects | 638 | // Only allowed to change these parameters for objects |
635 | // that you have permissions on AND are not attachments. | 639 | // that you have permissions on AND are not attachments. |
636 | enabled = root_objectp->permModify(); | 640 | enabled = root_objectp->permModify(); |
diff --git a/linden/indra/newview/llselectmgr.cpp b/linden/indra/newview/llselectmgr.cpp index 82aeee6..af97e2e 100644 --- a/linden/indra/newview/llselectmgr.cpp +++ b/linden/indra/newview/llselectmgr.cpp | |||
@@ -4560,6 +4560,11 @@ extern LLGLdouble gGLModelView[16]; | |||
4560 | 4560 | ||
4561 | void LLSelectMgr::updateSilhouettes() | 4561 | void LLSelectMgr::updateSilhouettes() |
4562 | { | 4562 | { |
4563 | if (!mRenderSilhouettes || !LLSelectMgr::sRenderSelectionHighlights) | ||
4564 | { | ||
4565 | return; | ||
4566 | } | ||
4567 | |||
4563 | S32 num_sils_genned = 0; | 4568 | S32 num_sils_genned = 0; |
4564 | 4569 | ||
4565 | LLVector3d cameraPos = gAgent.getCameraPositionGlobal(); | 4570 | LLVector3d cameraPos = gAgent.getCameraPositionGlobal(); |
diff --git a/linden/indra/newview/llspatialpartition.cpp b/linden/indra/newview/llspatialpartition.cpp index 127fca2..cdca5d5 100644 --- a/linden/indra/newview/llspatialpartition.cpp +++ b/linden/indra/newview/llspatialpartition.cpp | |||
@@ -563,7 +563,7 @@ void LLSpatialGroup::rebuildGeom() | |||
563 | 563 | ||
564 | void LLSpatialPartition::rebuildGeom(LLSpatialGroup* group) | 564 | void LLSpatialPartition::rebuildGeom(LLSpatialGroup* group) |
565 | { | 565 | { |
566 | if (group->changeLOD()) | 566 | if (!LLPipeline::sSkipUpdate && group->changeLOD()) |
567 | { | 567 | { |
568 | group->mLastUpdateDistance = group->mDistance; | 568 | group->mLastUpdateDistance = group->mDistance; |
569 | group->mLastUpdateViewAngle = group->mViewAngle; | 569 | group->mLastUpdateViewAngle = group->mViewAngle; |
diff --git a/linden/indra/newview/llstartup.cpp b/linden/indra/newview/llstartup.cpp index 8d5aa9e..ea08298 100644 --- a/linden/indra/newview/llstartup.cpp +++ b/linden/indra/newview/llstartup.cpp | |||
@@ -1025,6 +1025,7 @@ bool idle_startup() | |||
1025 | requested_options.push_back("event_categories"); | 1025 | requested_options.push_back("event_categories"); |
1026 | requested_options.push_back("event_notifications"); | 1026 | requested_options.push_back("event_notifications"); |
1027 | requested_options.push_back("classified_categories"); | 1027 | requested_options.push_back("classified_categories"); |
1028 | requested_options.push_back("adult_compliant"); | ||
1028 | //requested_options.push_back("inventory-targets"); | 1029 | //requested_options.push_back("inventory-targets"); |
1029 | requested_options.push_back("buddy-list"); | 1030 | requested_options.push_back("buddy-list"); |
1030 | requested_options.push_back("ui-config"); | 1031 | requested_options.push_back("ui-config"); |
diff --git a/linden/indra/newview/llstylemap.cpp b/linden/indra/newview/llstylemap.cpp index 6a3415f..e3bd3cd 100644 --- a/linden/indra/newview/llstylemap.cpp +++ b/linden/indra/newview/llstylemap.cpp | |||
@@ -47,13 +47,13 @@ LLStyleMap::~LLStyleMap() | |||
47 | 47 | ||
48 | LLStyleMap &LLStyleMap::instance() | 48 | LLStyleMap &LLStyleMap::instance() |
49 | { | 49 | { |
50 | static LLStyleMap mStyleMap; | 50 | static LLStyleMap style_map; |
51 | return mStyleMap; | 51 | return style_map; |
52 | } | 52 | } |
53 | 53 | ||
54 | // This is similar to the [] accessor except that if the entry doesn't already exist, | 54 | // This is similar to the [] accessor except that if the entry doesn't already exist, |
55 | // then this will create the entry. | 55 | // then this will create the entry. |
56 | const LLStyleSP &LLStyleMap::lookup(const LLUUID &source) | 56 | const LLStyleSP &LLStyleMap::lookupAgent(const LLUUID &source) |
57 | { | 57 | { |
58 | // Find this style in the map or add it if not. This map holds links to residents' profiles. | 58 | // Find this style in the map or add it if not. This map holds links to residents' profiles. |
59 | if (find(source) == end()) | 59 | if (find(source) == end()) |
@@ -77,6 +77,37 @@ const LLStyleSP &LLStyleMap::lookup(const LLUUID &source) | |||
77 | return (*this)[source]; | 77 | return (*this)[source]; |
78 | } | 78 | } |
79 | 79 | ||
80 | // This is similar to lookupAgent for any generic URL encoded style. | ||
81 | const LLStyleSP &LLStyleMap::lookup(const LLUUID& id, const std::string& link) | ||
82 | { | ||
83 | // Find this style in the map or add it if not. | ||
84 | iterator iter = find(id); | ||
85 | if (iter == end()) | ||
86 | { | ||
87 | LLStyleSP style(new LLStyle); | ||
88 | style->setVisible(true); | ||
89 | style->setFontName(LLStringUtil::null); | ||
90 | if (id != LLUUID::null && !link.empty()) | ||
91 | { | ||
92 | style->setColor(gSavedSettings.getColor4("HTMLLinkColor")); | ||
93 | style->setLinkHREF(link); | ||
94 | } | ||
95 | else | ||
96 | style->setColor(LLColor4::white); | ||
97 | (*this)[id] = style; | ||
98 | } | ||
99 | else | ||
100 | { | ||
101 | LLStyleSP style = (*iter).second; | ||
102 | if ( style->getLinkHREF() != link ) | ||
103 | { | ||
104 | style->setLinkHREF(link); | ||
105 | } | ||
106 | } | ||
107 | |||
108 | return (*this)[id]; | ||
109 | } | ||
110 | |||
80 | void LLStyleMap::update() | 111 | void LLStyleMap::update() |
81 | { | 112 | { |
82 | for (style_map_t::iterator iter = begin(); iter != end(); ++iter) | 113 | for (style_map_t::iterator iter = begin(); iter != end(); ++iter) |
diff --git a/linden/indra/newview/llstylemap.h b/linden/indra/newview/llstylemap.h index a38d253..f1eada9 100644 --- a/linden/indra/newview/llstylemap.h +++ b/linden/indra/newview/llstylemap.h | |||
@@ -47,7 +47,8 @@ public: | |||
47 | LLStyleMap(); | 47 | LLStyleMap(); |
48 | ~LLStyleMap(); | 48 | ~LLStyleMap(); |
49 | // Just like the [] accessor but it will add the entry in if it doesn't exist. | 49 | // Just like the [] accessor but it will add the entry in if it doesn't exist. |
50 | const LLStyleSP &lookup(const LLUUID &source); | 50 | const LLStyleSP &lookupAgent(const LLUUID &source); |
51 | const LLStyleSP &lookup(const LLUUID &source, const std::string& link); | ||
51 | static LLStyleMap &instance(); | 52 | static LLStyleMap &instance(); |
52 | 53 | ||
53 | // Forces refresh of the entries, call when something changes (e.g. link color). | 54 | // Forces refresh of the entries, call when something changes (e.g. link color). |
diff --git a/linden/indra/newview/lltexturectrl.cpp b/linden/indra/newview/lltexturectrl.cpp index be0b8eb..71135d7 100644 --- a/linden/indra/newview/lltexturectrl.cpp +++ b/linden/indra/newview/lltexturectrl.cpp | |||
@@ -349,6 +349,13 @@ void LLFloaterTexturePicker::updateImageStats() | |||
349 | { | 349 | { |
350 | mResolutionLabel->setTextArg("[DIMENSIONS]", std::string("[? x ?]")); | 350 | mResolutionLabel->setTextArg("[DIMENSIONS]", std::string("[? x ?]")); |
351 | } | 351 | } |
352 | if (gAgent.isGodlike()) | ||
353 | { | ||
354 | std::string tstring = "Pick: "; | ||
355 | std::string image_id_string = mTexturep->getID().asString(); | ||
356 | tstring = tstring + image_id_string.replace(24, 35, 12, '*'); // hide last segment to discourage theft | ||
357 | setTitle(tstring); | ||
358 | } | ||
352 | } | 359 | } |
353 | } | 360 | } |
354 | 361 | ||
diff --git a/linden/indra/newview/lltoolpie.cpp b/linden/indra/newview/lltoolpie.cpp index 5a21992..b32169d 100644 --- a/linden/indra/newview/lltoolpie.cpp +++ b/linden/indra/newview/lltoolpie.cpp | |||
@@ -191,7 +191,7 @@ BOOL LLToolPie::pickAndShowMenu(BOOL always_show) | |||
191 | // nothing | 191 | // nothing |
192 | break; | 192 | break; |
193 | case CLICK_ACTION_SIT: | 193 | case CLICK_ACTION_SIT: |
194 | if ((gAgent.getAvatarObject() != NULL) && (!gAgent.getAvatarObject()->mIsSitting)) // agent not already sitting | 194 | if ((gAgent.getAvatarObject() != NULL) && (!gAgent.getAvatarObject()->mIsSitting) && !gSavedSettings.getBOOL("BlockClickSit")) // agent not already sitting |
195 | { | 195 | { |
196 | handle_sit_or_stand(); | 196 | handle_sit_or_stand(); |
197 | return TRUE; | 197 | return TRUE; |
@@ -687,9 +687,10 @@ BOOL LLToolPie::handleDoubleClick(S32 x, S32 y, MASK mask) | |||
687 | else if (mPick.mObjectID.notNull() | 687 | else if (mPick.mObjectID.notNull() |
688 | && !mPick.mPosGlobal.isExactlyZero()) | 688 | && !mPick.mPosGlobal.isExactlyZero()) |
689 | { | 689 | { |
690 | // Hit an object | 690 | //Zwagoth: No more teleport to HUD attachments. >:o |
691 | // HACK: Call the last hit position the point we hit on the object | 691 | if(mPick.getObject().notNull() && mPick.getObject()->isHUDAttachment()) |
692 | //gLastHitPosGlobal += gLastHitObjectOffset; | 692 | return FALSE; |
693 | |||
693 | handle_go_to(); | 694 | handle_go_to(); |
694 | return TRUE; | 695 | return TRUE; |
695 | } | 696 | } |
diff --git a/linden/indra/newview/llviewermenu.cpp b/linden/indra/newview/llviewermenu.cpp index e83bc2d..8a92963 100644 --- a/linden/indra/newview/llviewermenu.cpp +++ b/linden/indra/newview/llviewermenu.cpp | |||
@@ -4618,7 +4618,8 @@ class LLToolsEnableUnlink : public view_listener_t | |||
4618 | LLSelectMgr::getInstance()->getSelection()->getFirstEditableObject() && | 4618 | LLSelectMgr::getInstance()->getSelection()->getFirstEditableObject() && |
4619 | !LLSelectMgr::getInstance()->getSelection()->getFirstEditableObject()->isAttachment()) | 4619 | !LLSelectMgr::getInstance()->getSelection()->getFirstEditableObject()->isAttachment()) |
4620 | { | 4620 | { |
4621 | if (LLSelectMgr::getInstance()->getSelection()->getRootObjectCount() != | 4621 | if (LLSelectMgr::getInstance()->getSelection()->getRootObjectCount() > 0 && |
4622 | LLSelectMgr::getInstance()->getSelection()->getRootObjectCount() != | ||
4622 | LLSelectMgr::getInstance()->getSelection()->getObjectCount()) | 4623 | LLSelectMgr::getInstance()->getSelection()->getObjectCount()) |
4623 | { | 4624 | { |
4624 | new_value = true; | 4625 | new_value = true; |
@@ -6720,7 +6721,10 @@ void handle_selected_texture_info(void*) | |||
6720 | S32 height = img->getHeight(); | 6721 | S32 height = img->getHeight(); |
6721 | S32 width = img->getWidth(); | 6722 | S32 width = img->getWidth(); |
6722 | S32 components = img->getComponents(); | 6723 | S32 components = img->getComponents(); |
6723 | msg = llformat("%dx%d %s on face ", | 6724 | std::string image_id_string = image_id.asString(); |
6725 | image_id_string = image_id_string.replace(24, 35, 12, '*') + " "; // hide last segment to discourage theft | ||
6726 | msg = llformat("%s%dx%d %s on face ", | ||
6727 | image_id_string.c_str(), | ||
6724 | width, | 6728 | width, |
6725 | height, | 6729 | height, |
6726 | (components == 4 ? "alpha" : "opaque")); | 6730 | (components == 4 ? "alpha" : "opaque")); |
diff --git a/linden/indra/newview/llviewermessage.cpp b/linden/indra/newview/llviewermessage.cpp index 1b2ba22..d5d9324 100644 --- a/linden/indra/newview/llviewermessage.cpp +++ b/linden/indra/newview/llviewermessage.cpp | |||
@@ -1266,7 +1266,7 @@ void inventory_offer_handler(LLOfferInfo* info, BOOL from_task) | |||
1266 | if (gCacheName->getName(info->mFromID, first_name, last_name)) | 1266 | if (gCacheName->getName(info->mFromID, first_name, last_name)) |
1267 | { | 1267 | { |
1268 | // [RLVa:KB] - Version: 1.22.11 | Checked: 2009-07-08 (RLVa-1.0.0e) | 1268 | // [RLVa:KB] - Version: 1.22.11 | Checked: 2009-07-08 (RLVa-1.0.0e) |
1269 | if ( (gRlvHandler.hasBehaviour(RLV_BHVR_SHOWNAMES)) && (gRlvHandler.isAgentNearby(info->mFromID)) ) | 1269 | if ( (rlv_handler_t::isEnabled()) && (gRlvHandler.hasBehaviour(RLV_BHVR_SHOWNAMES)) && (gRlvHandler.isAgentNearby(info->mFromID)) ) |
1270 | { | 1270 | { |
1271 | first_name = gRlvHandler.getAnonym(first_name.append(" ").append(last_name)); | 1271 | first_name = gRlvHandler.getAnonym(first_name.append(" ").append(last_name)); |
1272 | last_name.clear(); | 1272 | last_name.clear(); |
@@ -1287,12 +1287,15 @@ void inventory_offer_handler(LLOfferInfo* info, BOOL from_task) | |||
1287 | { | 1287 | { |
1288 | // *TODO:translate -> [FIRST] [LAST] | 1288 | // *TODO:translate -> [FIRST] [LAST] |
1289 | // [RLVa:KB] - Version: 1.22.11 | Checked: 2009-07-08 (RLVa-1.0.0e) | 1289 | // [RLVa:KB] - Version: 1.22.11 | Checked: 2009-07-08 (RLVa-1.0.0e) |
1290 | if ( (gRlvHandler.hasBehaviour(RLV_BHVR_SHOWNAMES)) && (gRlvHandler.isAgentNearby(info->mFromID)) ) | 1290 | if ( (rlv_handler_t::isEnabled()) && (gRlvHandler.hasBehaviour(RLV_BHVR_SHOWNAMES)) && (gRlvHandler.isAgentNearby(info->mFromID)) ) |
1291 | { | 1291 | { |
1292 | args["[NAME]"] = gRlvHandler.getAnonym(info->mFromName); | 1292 | args["[NAME]"] = gRlvHandler.getAnonym(info->mFromName); |
1293 | } | 1293 | } |
1294 | // [/RLVa:KB] | 1294 | // [/RLVa:KB] |
1295 | //args["[NAME]"] = info->mFromName; | 1295 | else |
1296 | { | ||
1297 | args["[NAME]"] = info->mFromName; | ||
1298 | } | ||
1296 | LLNotifyBox::showXml("UserGiveItem", args, | 1299 | LLNotifyBox::showXml("UserGiveItem", args, |
1297 | &inventory_offer_callback, (void*)info); | 1300 | &inventory_offer_callback, (void*)info); |
1298 | } | 1301 | } |
@@ -1921,15 +1924,51 @@ void process_improved_im(LLMessageSystem *msg, void **user_data) | |||
1921 | break; | 1924 | break; |
1922 | 1925 | ||
1923 | case IM_FROM_TASK: | 1926 | case IM_FROM_TASK: |
1924 | if (is_busy && !is_owned_by_me) | ||
1925 | { | 1927 | { |
1926 | return; | 1928 | if (is_busy && !is_owned_by_me) |
1929 | { | ||
1930 | return; | ||
1931 | } | ||
1932 | chat.mText = name + separator_string + message.substr(message_offset); | ||
1933 | chat.mFromName = name; | ||
1934 | |||
1935 | // Build a link to open the object IM info window. | ||
1936 | std::string location = ll_safe_string((char*)binary_bucket,binary_bucket_size); | ||
1937 | |||
1938 | LLSD query_string; | ||
1939 | query_string["owner"] = from_id; | ||
1940 | query_string["slurl"] = location.c_str(); | ||
1941 | query_string["name"] = name; | ||
1942 | if (from_group) | ||
1943 | { | ||
1944 | query_string["groupowned"] = "true"; | ||
1945 | } | ||
1946 | |||
1947 | if (session_id.notNull()) | ||
1948 | { | ||
1949 | chat.mFromID = session_id; | ||
1950 | } | ||
1951 | else | ||
1952 | { | ||
1953 | // This message originated on a region without the updated code for task id and slurl information. | ||
1954 | // We just need a unique ID for this object that isn't the owner ID. | ||
1955 | // If it is the owner ID it will overwrite the style that contains the link to that owner's profile. | ||
1956 | // This isn't ideal - it will make 1 style for all objects owned by the the same person/group. | ||
1957 | // This works because the only thing we can really do in this case is show the owner name and link to their profile. | ||
1958 | chat.mFromID = from_id ^ gAgent.getSessionID(); | ||
1959 | } | ||
1960 | |||
1961 | std::ostringstream link; | ||
1962 | link << "secondlife:///app/objectim/" << session_id | ||
1963 | << LLURI::mapToQueryString(query_string); | ||
1964 | |||
1965 | chat.mURL = link.str(); | ||
1966 | |||
1967 | // Note: lie to LLFloaterChat::addChat(), pretending that this is NOT an IM, because | ||
1968 | // IMs from objcts don't open IM sessions. | ||
1969 | chat.mSourceType = CHAT_SOURCE_OBJECT; | ||
1970 | LLFloaterChat::addChat(chat, FALSE, FALSE); | ||
1927 | } | 1971 | } |
1928 | chat.mText = name + separator_string + message.substr(message_offset); | ||
1929 | // Note: lie to LLFloaterChat::addChat(), pretending that this is NOT an IM, because | ||
1930 | // IMs from objcts don't open IM sessions. | ||
1931 | chat.mSourceType = CHAT_SOURCE_OBJECT; | ||
1932 | LLFloaterChat::addChat(chat, FALSE, FALSE); | ||
1933 | break; | 1972 | break; |
1934 | case IM_FROM_TASK_AS_ALERT: | 1973 | case IM_FROM_TASK_AS_ALERT: |
1935 | if (is_busy && !is_owned_by_me) | 1974 | if (is_busy && !is_owned_by_me) |
@@ -3007,6 +3046,10 @@ void process_agent_movement_complete(LLMessageSystem* msg, void**) | |||
3007 | // appropriate. | 3046 | // appropriate. |
3008 | LLVector3 shift_vector = regionp->getPosRegionFromGlobal( | 3047 | LLVector3 shift_vector = regionp->getPosRegionFromGlobal( |
3009 | gAgent.getRegion()->getOriginGlobal()); | 3048 | gAgent.getRegion()->getOriginGlobal()); |
3049 | // don't shift objects, if teleporting more than about 1000 sims, as | ||
3050 | // for long teleports shifting objects garbles the view at the target region | ||
3051 | if (shift_vector.lengthSquared() > 6.5e10f) | ||
3052 | shift_vector = LLVector3::zero; | ||
3010 | gAgent.setRegion(regionp); | 3053 | gAgent.setRegion(regionp); |
3011 | gObjectList.shiftObjects(shift_vector); | 3054 | gObjectList.shiftObjects(shift_vector); |
3012 | gAssetStorage->setUpstream(msg->getSender()); | 3055 | gAssetStorage->setUpstream(msg->getSender()); |
@@ -3112,6 +3155,7 @@ void process_agent_movement_complete(LLMessageSystem* msg, void**) | |||
3112 | 3155 | ||
3113 | // If the server version has changed, display an info box and offer | 3156 | // If the server version has changed, display an info box and offer |
3114 | // to display the release notes, unless this is the initial log in. | 3157 | // to display the release notes, unless this is the initial log in. |
3158 | // Also verify we're on an OpenSimulator here. | ||
3115 | if (gLastVersionChannel == version_channel) | 3159 | if (gLastVersionChannel == version_channel) |
3116 | { | 3160 | { |
3117 | return; | 3161 | return; |
@@ -3123,6 +3167,15 @@ void process_agent_movement_complete(LLMessageSystem* msg, void**) | |||
3123 | "ServerVersionChanged", display_release_notes, NULL); | 3167 | "ServerVersionChanged", display_release_notes, NULL); |
3124 | } | 3168 | } |
3125 | 3169 | ||
3170 | if (version_channel.find("OpenSim") != std::string::npos) | ||
3171 | { | ||
3172 | gSavedSettings.setBOOL("LoggedIntoOpenSim", TRUE); | ||
3173 | } | ||
3174 | else | ||
3175 | { | ||
3176 | gSavedSettings.setBOOL("LoggedIntoOpenSim", FALSE); | ||
3177 | } | ||
3178 | |||
3126 | gLastVersionChannel = version_channel; | 3179 | gLastVersionChannel = version_channel; |
3127 | } | 3180 | } |
3128 | 3181 | ||
diff --git a/linden/indra/newview/llviewerobjectlist.cpp b/linden/indra/newview/llviewerobjectlist.cpp index 78c1730..cf37058 100644 --- a/linden/indra/newview/llviewerobjectlist.cpp +++ b/linden/indra/newview/llviewerobjectlist.cpp | |||
@@ -165,6 +165,8 @@ U64 LLViewerObjectList::getIndex(const U32 local_id, | |||
165 | 165 | ||
166 | BOOL LLViewerObjectList::removeFromLocalIDTable(const LLViewerObject &object) | 166 | BOOL LLViewerObjectList::removeFromLocalIDTable(const LLViewerObject &object) |
167 | { | 167 | { |
168 | if (object.mRegionp) | ||
169 | { | ||
168 | U32 local_id = object.mLocalID; | 170 | U32 local_id = object.mLocalID; |
169 | LLHost region_host = object.getRegion()->getHost(); | 171 | LLHost region_host = object.getRegion()->getHost(); |
170 | U32 ip = region_host.getAddress(); | 172 | U32 ip = region_host.getAddress(); |
@@ -175,6 +177,8 @@ BOOL LLViewerObjectList::removeFromLocalIDTable(const LLViewerObject &object) | |||
175 | U64 indexid = (((U64)index) << 32) | (U64)local_id; | 177 | U64 indexid = (((U64)index) << 32) | (U64)local_id; |
176 | return sIndexAndLocalIDToUUID.erase(indexid) > 0 ? TRUE : FALSE; | 178 | return sIndexAndLocalIDToUUID.erase(indexid) > 0 ? TRUE : FALSE; |
177 | } | 179 | } |
180 | return FALSE; | ||
181 | } | ||
178 | 182 | ||
179 | void LLViewerObjectList::setUUIDAndLocal(const LLUUID &id, | 183 | void LLViewerObjectList::setUUIDAndLocal(const LLUUID &id, |
180 | const U32 local_id, | 184 | const U32 local_id, |
diff --git a/linden/indra/newview/llviewerthrottle.cpp b/linden/indra/newview/llviewerthrottle.cpp index 72a8a80..95c6ae2 100644 --- a/linden/indra/newview/llviewerthrottle.cpp +++ b/linden/indra/newview/llviewerthrottle.cpp | |||
@@ -49,7 +49,7 @@ const F32 MAX_FRACTIONAL = 1.5f; | |||
49 | const F32 MIN_FRACTIONAL = 0.2f; | 49 | const F32 MIN_FRACTIONAL = 0.2f; |
50 | 50 | ||
51 | const F32 MIN_BANDWIDTH = 50.f; | 51 | const F32 MIN_BANDWIDTH = 50.f; |
52 | const F32 MAX_BANDWIDTH = 1500.f; | 52 | const F32 MAX_BANDWIDTH = 5000.f; |
53 | const F32 STEP_FRACTIONAL = 0.1f; | 53 | const F32 STEP_FRACTIONAL = 0.1f; |
54 | const F32 TIGHTEN_THROTTLE_THRESHOLD = 3.0f; // packet loss % per s | 54 | const F32 TIGHTEN_THROTTLE_THRESHOLD = 3.0f; // packet loss % per s |
55 | const F32 EASE_THROTTLE_THRESHOLD = 0.5f; // packet loss % per s | 55 | const F32 EASE_THROTTLE_THRESHOLD = 0.5f; // packet loss % per s |
diff --git a/linden/indra/newview/llvlcomposition.cpp b/linden/indra/newview/llvlcomposition.cpp index bc7a2f4..cd8d1c0 100644 --- a/linden/indra/newview/llvlcomposition.cpp +++ b/linden/indra/newview/llvlcomposition.cpp | |||
@@ -79,8 +79,13 @@ LLVLComposition::LLVLComposition(LLSurface *surfacep, const U32 width, const F32 | |||
79 | // Initialize the texture matrix to defaults. | 79 | // Initialize the texture matrix to defaults. |
80 | for (S32 i = 0; i < CORNER_COUNT; ++i) | 80 | for (S32 i = 0; i < CORNER_COUNT; ++i) |
81 | { | 81 | { |
82 | mStartHeight[i] = gSavedSettings.getF32("TerrainColorStartHeight"); | 82 | //Zwag: I'm making these static values because they are a LARGE performance problem |
83 | mHeightRange[i] = gSavedSettings.getF32("TerrainColorHeightRange"); | 83 | // right now, and I've never heard of anyone changing them, they are not referenced |
84 | // elsewhere, and have not changed in defaults since the original source code release. | ||
85 | // We can move these back to signal connected statics if they really become important | ||
86 | // variables in the future. | ||
87 | mStartHeight[i] = 20.f;//gSavedSettings.getF32("TerrainColorStartHeight"); | ||
88 | mHeightRange[i] = 60.f;//gSavedSettings.getF32("TerrainColorHeightRange"); | ||
84 | } | 89 | } |
85 | mTexScaleX = 16.f; | 90 | mTexScaleX = 16.f; |
86 | mTexScaleY = 16.f; | 91 | mTexScaleY = 16.f; |
diff --git a/linden/indra/newview/llvoavatar.cpp b/linden/indra/newview/llvoavatar.cpp index 158977e..24272d8 100644 --- a/linden/indra/newview/llvoavatar.cpp +++ b/linden/indra/newview/llvoavatar.cpp | |||
@@ -3261,7 +3261,7 @@ void LLVOAvatar::idleUpdateNameTag(const LLVector3& root_pos_last) | |||
3261 | if (title && title->getString() && title->getString()[0] != '\0') | 3261 | if (title && title->getString() && title->getString()[0] != '\0') |
3262 | { | 3262 | { |
3263 | line += title->getString(); | 3263 | line += title->getString(); |
3264 | LLStringFn::replace_nonprintable(line,LL_UNKNOWN_CHAR); | 3264 | //LLStringFn::replace_nonprintable(line,LL_UNKNOWN_CHAR); IMP-136 -- MC |
3265 | line += "\n"; | 3265 | line += "\n"; |
3266 | line += firstname->getString(); | 3266 | line += firstname->getString(); |
3267 | } | 3267 | } |
@@ -3321,7 +3321,7 @@ void LLVOAvatar::idleUpdateNameTag(const LLVector3& root_pos_last) | |||
3321 | mNameMute = is_muted; | 3321 | mNameMute = is_muted; |
3322 | mNameAppearance = is_appearance; | 3322 | mNameAppearance = is_appearance; |
3323 | mTitle = title ? title->getString() : ""; | 3323 | mTitle = title ? title->getString() : ""; |
3324 | LLStringFn::replace_nonprintable(mTitle,LL_UNKNOWN_CHAR); | 3324 | //LLStringFn::replace_nonprintable(mTitle,LL_UNKNOWN_CHAR); IMP-136 -- MC |
3325 | mNameString = utf8str_to_wstring(line); | 3325 | mNameString = utf8str_to_wstring(line); |
3326 | new_name = TRUE; | 3326 | new_name = TRUE; |
3327 | } | 3327 | } |
diff --git a/linden/indra/newview/llwindlightremotectrl.cpp b/linden/indra/newview/llwindlightremotectrl.cpp new file mode 100644 index 0000000..591b413 --- /dev/null +++ b/linden/indra/newview/llwindlightremotectrl.cpp | |||
@@ -0,0 +1,267 @@ | |||
1 | /** | ||
2 | * @file llwindlightremotectrl.cpp | ||
3 | * @brief toolbar remote for windlight options and presets | ||
4 | * | ||
5 | * $LicenseInfo:firstyear=2009&license=viewergpl$ | ||
6 | * | ||
7 | * Copyright (c) 2009, McCabe Maxsted | ||
8 | * | ||
9 | * Imprudence Viewer Source Code | ||
10 | * The source code in this file ("Source Code") is provided to you | ||
11 | * under the terms of the GNU General Public License, version 2.0 | ||
12 | * ("GPL"). Terms of the GPL can be found in doc/GPL-license.txt in | ||
13 | * this distribution, or online at | ||
14 | * http://secondlifegrid.net/programs/open_source/licensing/gplv2 | ||
15 | * | ||
16 | * There are special exceptions to the terms and conditions of the GPL as | ||
17 | * it is applied to this Source Code. View the full text of the exception | ||
18 | * in the file doc/FLOSS-exception.txt in this software distribution, or | ||
19 | * online at http://secondlifegrid.net/programs/open_source/licensing/flossexception | ||
20 | * | ||
21 | * By copying, modifying or distributing this software, you acknowledge | ||
22 | * that you have read and understood your obligations described above, | ||
23 | * and agree to abide by those obligations. | ||
24 | * | ||
25 | * ALL SOURCE CODE IS PROVIDED "AS IS." THE AUTHOR MAKES NO | ||
26 | * WARRANTIES, EXPRESS, IMPLIED OR OTHERWISE, REGARDING ITS ACCURACY, | ||
27 | * COMPLETENESS OR PERFORMANCE. | ||
28 | * $/LicenseInfo$ | ||
29 | */ | ||
30 | |||
31 | #include "llviewerprecompiledheaders.h" | ||
32 | |||
33 | #include "llwindlightremotectrl.h" | ||
34 | |||
35 | #include "llbutton.h" | ||
36 | #include "llcombobox.h" | ||
37 | #include "llfloaterenvsettings.h" | ||
38 | #include "llfloaterwindlight.h" | ||
39 | #include "lloverlaybar.h" | ||
40 | #include "lluictrlfactory.h" | ||
41 | #include "llwlparammanager.h" | ||
42 | #include "llviewercontrol.h" | ||
43 | |||
44 | |||
45 | class LLWindlightRemoteObserver : public LLWLPresetsObserver | ||
46 | { | ||
47 | public: | ||
48 | LLWindlightRemoteObserver(LLWindlightRemoteCtrl* wind_rem) : mWindlightRemote(wind_rem){} | ||
49 | virtual ~LLWindlightRemoteObserver() {} | ||
50 | virtual void changed() { mWindlightRemote->refreshPresets(); } | ||
51 | private: | ||
52 | LLWindlightRemoteCtrl* mWindlightRemote; | ||
53 | }; | ||
54 | |||
55 | |||
56 | LLWindlightRemoteCtrl::LLWindlightRemoteCtrl() | ||
57 | { | ||
58 | mPresetsCombo = NULL; | ||
59 | mObserver = NULL; | ||
60 | setIsChrome(TRUE); | ||
61 | |||
62 | build(); | ||
63 | |||
64 | setFocusRoot(TRUE); | ||
65 | } | ||
66 | |||
67 | LLWindlightRemoteCtrl::~LLWindlightRemoteCtrl() | ||
68 | { | ||
69 | delete mObserver; | ||
70 | mObserver = NULL; | ||
71 | } | ||
72 | |||
73 | void LLWindlightRemoteCtrl::draw() | ||
74 | { | ||
75 | LLButton* expand_button = getChild<LLButton>("Popup"); | ||
76 | if (expand_button) | ||
77 | { | ||
78 | if (expand_button->getToggleState()) | ||
79 | { | ||
80 | expand_button->setImageOverlay("arrow_down.tga"); | ||
81 | } | ||
82 | else | ||
83 | { | ||
84 | expand_button->setImageOverlay("arrow_up.tga"); | ||
85 | } | ||
86 | } | ||
87 | |||
88 | LLPanel::draw(); | ||
89 | } | ||
90 | |||
91 | void LLWindlightRemoteCtrl::build() | ||
92 | { | ||
93 | if (gSavedSettings.getBOOL("ShowWindlightSettingsPopup")) | ||
94 | { | ||
95 | LLUICtrlFactory::getInstance()->buildPanel(this, "panel_windlight_remote_expanded.xml"); | ||
96 | } | ||
97 | else | ||
98 | { | ||
99 | LLUICtrlFactory::getInstance()->buildPanel(this, "panel_windlight_remote.xml"); | ||
100 | } | ||
101 | } | ||
102 | |||
103 | BOOL LLWindlightRemoteCtrl::postBuild() | ||
104 | { | ||
105 | |||
106 | childSetAction("Environment", onClickToggleEnvironment, this); | ||
107 | childSetAction("Popup", onClickPopupBtn, this); | ||
108 | |||
109 | mPresetsCombo = getChild<LLComboBox>("Presets"); | ||
110 | if (mPresetsCombo) | ||
111 | { | ||
112 | mPresetsCombo->setCommitCallback(onCommitPreset); | ||
113 | mPresetsCombo->setCallbackUserData(this); | ||
114 | |||
115 | // set up observer to follow changes | ||
116 | mObserver = new LLWindlightRemoteObserver(this); | ||
117 | LLWLParamManager::addObserver(mObserver); | ||
118 | |||
119 | // refresh list from current presets | ||
120 | refreshPresets(); | ||
121 | } | ||
122 | |||
123 | return TRUE; | ||
124 | } | ||
125 | |||
126 | void LLWindlightRemoteCtrl::refreshPresets() | ||
127 | { | ||
128 | if (mPresetsCombo) | ||
129 | { | ||
130 | // snag current preset | ||
131 | LLWLParamManager * param_mgr = LLWLParamManager::instance(); | ||
132 | LLWLParamSet& currentParams = param_mgr->mCurParams; | ||
133 | |||
134 | // clear in case presets names have changed | ||
135 | mPresetsCombo->clearRows(); | ||
136 | |||
137 | std::map<std::string, LLWLParamSet>::iterator mIt = | ||
138 | param_mgr->mParamList.begin(); | ||
139 | for(; mIt != param_mgr->mParamList.end(); mIt++) | ||
140 | { | ||
141 | mPresetsCombo->add(mIt->first); | ||
142 | } | ||
143 | |||
144 | // insert separator and add World menu options | ||
145 | mPresetsCombo->addSeparator(ADD_BOTTOM); | ||
146 | mPresetsCombo->addSimpleElement(getString("sunrise"), ADD_BOTTOM); | ||
147 | mPresetsCombo->addSimpleElement(getString("noon"), ADD_BOTTOM); | ||
148 | mPresetsCombo->addSimpleElement(getString("sunset"), ADD_BOTTOM); | ||
149 | mPresetsCombo->addSimpleElement(getString("midnight"), ADD_BOTTOM); | ||
150 | mPresetsCombo->addSimpleElement(getString("revert_region"), ADD_BOTTOM); | ||
151 | |||
152 | if (mPresetsCombo->getSelectedItemLabel() != currentParams.mName && | ||
153 | !currentParams.mName.empty()) | ||
154 | { | ||
155 | mPresetsCombo->selectByValue(LLSD(currentParams.mName)); | ||
156 | } | ||
157 | else | ||
158 | { | ||
159 | mPresetsCombo->selectByValue(LLSD("Default")); | ||
160 | } | ||
161 | } | ||
162 | } | ||
163 | |||
164 | // static | ||
165 | void LLWindlightRemoteCtrl::onCommitPreset(LLUICtrl* ctrl, void* data) | ||
166 | { | ||
167 | LLWindlightRemoteCtrl* self = (LLWindlightRemoteCtrl*)data; | ||
168 | |||
169 | LLCtrlListInterface* presets = self->mPresetsCombo ? self->mPresetsCombo->getListInterface() : NULL; | ||
170 | if (presets) | ||
171 | { | ||
172 | S32 index = presets->getFirstSelectedIndex(); | ||
173 | if (index <= 0) | ||
174 | { | ||
175 | // Open Advanced Sky | ||
176 | LLFloaterWindLight::show(); | ||
177 | return; | ||
178 | } | ||
179 | |||
180 | // check for World menu options; if none, apply preset | ||
181 | std::string selected = self->mPresetsCombo->getSelectedValue().asString(); | ||
182 | |||
183 | if (selected == self->getString("sunrise")) | ||
184 | { | ||
185 | // set the value, turn off animation | ||
186 | LLWLParamManager::instance()->mAnimator.setDayTime(0.25); | ||
187 | LLWLParamManager::instance()->mAnimator.mIsRunning = false; | ||
188 | LLWLParamManager::instance()->mAnimator.mUseLindenTime = false; | ||
189 | |||
190 | // then call update once | ||
191 | LLWLParamManager::instance()->mAnimator.update( | ||
192 | LLWLParamManager::instance()->mCurParams); | ||
193 | } | ||
194 | else if (selected == self->getString("noon")) | ||
195 | { | ||
196 | // set the value, turn off animation | ||
197 | LLWLParamManager::instance()->mAnimator.setDayTime(0.567); | ||
198 | LLWLParamManager::instance()->mAnimator.mIsRunning = false; | ||
199 | LLWLParamManager::instance()->mAnimator.mUseLindenTime = false; | ||
200 | |||
201 | // then call update once | ||
202 | LLWLParamManager::instance()->mAnimator.update( | ||
203 | LLWLParamManager::instance()->mCurParams); | ||
204 | } | ||
205 | else if (selected == self->getString("sunset")) | ||
206 | { | ||
207 | // set the value, turn off animation | ||
208 | LLWLParamManager::instance()->mAnimator.setDayTime(0.75); | ||
209 | LLWLParamManager::instance()->mAnimator.mIsRunning = false; | ||
210 | LLWLParamManager::instance()->mAnimator.mUseLindenTime = false; | ||
211 | |||
212 | // then call update once | ||
213 | LLWLParamManager::instance()->mAnimator.update( | ||
214 | LLWLParamManager::instance()->mCurParams); | ||
215 | } | ||
216 | else if (selected == self->getString("midnight")) | ||
217 | { | ||
218 | // set the value, turn off animation | ||
219 | LLWLParamManager::instance()->mAnimator.setDayTime(0.0); | ||
220 | LLWLParamManager::instance()->mAnimator.mIsRunning = false; | ||
221 | LLWLParamManager::instance()->mAnimator.mUseLindenTime = false; | ||
222 | |||
223 | // then call update once | ||
224 | LLWLParamManager::instance()->mAnimator.update( | ||
225 | LLWLParamManager::instance()->mCurParams); | ||
226 | } | ||
227 | else if (selected == self->getString("revert_region")) | ||
228 | { | ||
229 | LLWLParamManager::instance()->mAnimator.mIsRunning = true; | ||
230 | LLWLParamManager::instance()->mAnimator.mUseLindenTime = true; | ||
231 | } | ||
232 | else | ||
233 | { | ||
234 | // Apply preset | ||
235 | LLWLParamManager::instance()->mAnimator.mIsRunning = false; | ||
236 | LLWLParamManager::instance()->mAnimator.mUseLindenTime = false; | ||
237 | LLWLParamManager::instance()->loadPreset(selected, true); | ||
238 | } | ||
239 | } | ||
240 | } | ||
241 | |||
242 | // static | ||
243 | void LLWindlightRemoteCtrl::onClickToggleEnvironment(void* data) | ||
244 | { | ||
245 | // if evn settings not there or is hidden, show it | ||
246 | if( !LLFloaterEnvSettings::isOpen() || | ||
247 | !LLFloaterEnvSettings::instance()->getVisible()) | ||
248 | { | ||
249 | LLFloaterEnvSettings::show(); | ||
250 | |||
251 | // otherwise, close it button acts like a toggle | ||
252 | } | ||
253 | else | ||
254 | { | ||
255 | LLFloaterEnvSettings::instance()->close(); | ||
256 | } | ||
257 | } | ||
258 | |||
259 | //static | ||
260 | void LLWindlightRemoteCtrl::onClickPopupBtn(void* data) | ||
261 | { | ||
262 | LLWindlightRemoteCtrl* remotep = (LLWindlightRemoteCtrl*)data; | ||
263 | |||
264 | remotep->deleteAllChildren(); | ||
265 | remotep->build(); | ||
266 | gOverlayBar->layoutButtons(); | ||
267 | } | ||
diff --git a/linden/indra/newview/llwindlightremotectrl.h b/linden/indra/newview/llwindlightremotectrl.h new file mode 100644 index 0000000..e4ad2d5 --- /dev/null +++ b/linden/indra/newview/llwindlightremotectrl.h | |||
@@ -0,0 +1,60 @@ | |||
1 | /** | ||
2 | * @file llwindlightremotectrl.h | ||
3 | * @brief toolbar remote for windlight options and presets | ||
4 | * | ||
5 | * $LicenseInfo:firstyear=2009&license=viewergpl$ | ||
6 | * | ||
7 | * Copyright (c) 2009, McCabe Maxsted | ||
8 | * | ||
9 | * Imprudence Viewer Source Code | ||
10 | * The source code in this file ("Source Code") is provided to you | ||
11 | * under the terms of the GNU General Public License, version 2.0 | ||
12 | * ("GPL"). Terms of the GPL can be found in doc/GPL-license.txt in | ||
13 | * this distribution, or online at | ||
14 | * http://secondlifegrid.net/programs/open_source/licensing/gplv2 | ||
15 | * | ||
16 | * There are special exceptions to the terms and conditions of the GPL as | ||
17 | * it is applied to this Source Code. View the full text of the exception | ||
18 | * in the file doc/FLOSS-exception.txt in this software distribution, or | ||
19 | * online at http://secondlifegrid.net/programs/open_source/licensing/flossexception | ||
20 | * | ||
21 | * By copying, modifying or distributing this software, you acknowledge | ||
22 | * that you have read and understood your obligations described above, | ||
23 | * and agree to abide by those obligations. | ||
24 | * | ||
25 | * ALL SOURCE CODE IS PROVIDED "AS IS." THE AUTHOR MAKES NO | ||
26 | * WARRANTIES, EXPRESS, IMPLIED OR OTHERWISE, REGARDING ITS ACCURACY, | ||
27 | * COMPLETENESS OR PERFORMANCE. | ||
28 | * $/LicenseInfo$ | ||
29 | */ | ||
30 | |||
31 | #ifndef LL_LLWINDLIGHTREMOTECTRL_H | ||
32 | #define LL_LLWINDLIGHTREMOTECTRL_H | ||
33 | |||
34 | #include "llpanel.h" | ||
35 | |||
36 | class LLComboBox; | ||
37 | class LLWLPresetsObserver; | ||
38 | |||
39 | class LLWindlightRemoteCtrl : public LLPanel | ||
40 | { | ||
41 | public: | ||
42 | LLWindlightRemoteCtrl(); | ||
43 | virtual ~LLWindlightRemoteCtrl(); | ||
44 | /*virtual*/ BOOL postBuild(); | ||
45 | /*virtual*/ void draw(); | ||
46 | |||
47 | void refreshPresets(); | ||
48 | |||
49 | private: | ||
50 | LLComboBox* mPresetsCombo; | ||
51 | LLWLPresetsObserver* mObserver; | ||
52 | |||
53 | void build(); | ||
54 | |||
55 | static void onCommitPreset(LLUICtrl* ctrl, void* data); | ||
56 | static void onClickToggleEnvironment(void* data); | ||
57 | static void onClickPopupBtn(void* data); | ||
58 | }; | ||
59 | |||
60 | #endif | ||
diff --git a/linden/indra/newview/llwlparammanager.cpp b/linden/indra/newview/llwlparammanager.cpp index c1723f7..ba3d070 100644 --- a/linden/indra/newview/llwlparammanager.cpp +++ b/linden/indra/newview/llwlparammanager.cpp | |||
@@ -62,6 +62,7 @@ | |||
62 | #include "curl/curl.h" | 62 | #include "curl/curl.h" |
63 | 63 | ||
64 | LLWLParamManager * LLWLParamManager::sInstance = NULL; | 64 | LLWLParamManager * LLWLParamManager::sInstance = NULL; |
65 | std::vector<LLWLPresetsObserver*> LLWLParamManager::sObservers; | ||
65 | 66 | ||
66 | LLWLParamManager::LLWLParamManager() : | 67 | LLWLParamManager::LLWLParamManager() : |
67 | 68 | ||
@@ -238,6 +239,8 @@ void LLWLParamManager::loadPreset(const std::string & name,bool propagate) | |||
238 | getParamSet(name, mCurParams); | 239 | getParamSet(name, mCurParams); |
239 | propagateParameters(); | 240 | propagateParameters(); |
240 | } | 241 | } |
242 | |||
243 | notifyObservers(); | ||
241 | } | 244 | } |
242 | 245 | ||
243 | void LLWLParamManager::savePreset(const std::string & name) | 246 | void LLWLParamManager::savePreset(const std::string & name) |
@@ -264,6 +267,7 @@ void LLWLParamManager::savePreset(const std::string & name) | |||
264 | presetsXML.close(); | 267 | presetsXML.close(); |
265 | 268 | ||
266 | propagateParameters(); | 269 | propagateParameters(); |
270 | notifyObservers(); | ||
267 | } | 271 | } |
268 | 272 | ||
269 | void LLWLParamManager::updateShaderUniforms(LLGLSLShader * shader) | 273 | void LLWLParamManager::updateShaderUniforms(LLGLSLShader * shader) |
@@ -538,6 +542,8 @@ bool LLWLParamManager::removeParamSet(const std::string& name, bool delete_from_ | |||
538 | gDirUtilp->deleteFilesInDir(path_name, escaped_name + ".xml"); | 542 | gDirUtilp->deleteFilesInDir(path_name, escaped_name + ".xml"); |
539 | } | 543 | } |
540 | 544 | ||
545 | notifyObservers(); | ||
546 | |||
541 | return true; | 547 | return true; |
542 | } | 548 | } |
543 | 549 | ||
@@ -566,3 +572,37 @@ LLWLParamManager * LLWLParamManager::instance() | |||
566 | 572 | ||
567 | return sInstance; | 573 | return sInstance; |
568 | } | 574 | } |
575 | |||
576 | // static | ||
577 | void LLWLParamManager::addObserver(LLWLPresetsObserver* observer) | ||
578 | { | ||
579 | sObservers.push_back(observer); | ||
580 | } | ||
581 | |||
582 | // static | ||
583 | void LLWLParamManager::removeObserver(LLWLPresetsObserver* observer) | ||
584 | { | ||
585 | std::vector<LLWLPresetsObserver*>::iterator it; | ||
586 | it = std::find(sObservers.begin(), sObservers.end(), observer); | ||
587 | if (it != sObservers.end()) | ||
588 | { | ||
589 | sObservers.erase(it); | ||
590 | } | ||
591 | } | ||
592 | |||
593 | // Call this method when it's time to update everyone on a new state. | ||
594 | // Copy the list because an observer could respond by removing itself | ||
595 | // from the list. Static | ||
596 | void LLWLParamManager::notifyObservers() | ||
597 | { | ||
598 | lldebugs << "LLWLPresetsObserver::notifyObservers" << llendl; | ||
599 | |||
600 | std::vector<LLWLPresetsObserver*> observers = sObservers; | ||
601 | |||
602 | std::vector<LLWLPresetsObserver*>::iterator it; | ||
603 | for (it = observers.begin(); it != observers.end(); ++it) | ||
604 | { | ||
605 | LLWLPresetsObserver* observer = *it; | ||
606 | observer->changed(); | ||
607 | } | ||
608 | } | ||
diff --git a/linden/indra/newview/llwlparammanager.h b/linden/indra/newview/llwlparammanager.h index 1d9291c..355d3e3 100644 --- a/linden/indra/newview/llwlparammanager.h +++ b/linden/indra/newview/llwlparammanager.h | |||
@@ -40,6 +40,13 @@ | |||
40 | #include "llviewercamera.h" | 40 | #include "llviewercamera.h" |
41 | 41 | ||
42 | class LLGLSLShader; | 42 | class LLGLSLShader; |
43 | |||
44 | class LLWLPresetsObserver | ||
45 | { | ||
46 | public: | ||
47 | virtual ~LLWLPresetsObserver() { }; | ||
48 | virtual void changed() = 0; | ||
49 | }; | ||
43 | 50 | ||
44 | // color control | 51 | // color control |
45 | struct WLColorControl { | 52 | struct WLColorControl { |
@@ -195,6 +202,11 @@ public: | |||
195 | // singleton pattern implementation | 202 | // singleton pattern implementation |
196 | static LLWLParamManager * instance(); | 203 | static LLWLParamManager * instance(); |
197 | 204 | ||
205 | // manage observers | ||
206 | static void addObserver(LLWLPresetsObserver* observer); | ||
207 | static void removeObserver(LLWLPresetsObserver* observer); | ||
208 | static void notifyObservers(); | ||
209 | |||
198 | public: | 210 | public: |
199 | 211 | ||
200 | // helper variables | 212 | // helper variables |
@@ -249,12 +261,13 @@ public: | |||
249 | F32 mDomeRadius; | 261 | F32 mDomeRadius; |
250 | 262 | ||
251 | // list of all the parameters, listed by name | 263 | // list of all the parameters, listed by name |
252 | std::map<std::string, LLWLParamSet> mParamList; | 264 | std::map<std::string, LLWLParamSet> mParamList; |
253 | |||
254 | 265 | ||
255 | private: | 266 | private: |
256 | // our parameter manager singleton instance | 267 | // our parameter manager singleton instance |
257 | static LLWLParamManager * sInstance; | 268 | static LLWLParamManager * sInstance; |
269 | |||
270 | static std::vector<LLWLPresetsObserver*> sObservers; | ||
258 | 271 | ||
259 | }; | 272 | }; |
260 | 273 | ||
diff --git a/linden/indra/newview/llworldmapview.cpp b/linden/indra/newview/llworldmapview.cpp index 5e51e6f..947bdfd 100644 --- a/linden/indra/newview/llworldmapview.cpp +++ b/linden/indra/newview/llworldmapview.cpp | |||
@@ -71,9 +71,10 @@ const S32 SCROLL_HINT_WIDTH = 65; | |||
71 | const F32 BIG_DOT_RADIUS = 5.f; | 71 | const F32 BIG_DOT_RADIUS = 5.f; |
72 | BOOL LLWorldMapView::sHandledLastClick = FALSE; | 72 | BOOL LLWorldMapView::sHandledLastClick = FALSE; |
73 | 73 | ||
74 | LLUIImagePtr LLWorldMapView::sAvatarYouSmallImage = NULL; | ||
75 | LLUIImagePtr LLWorldMapView::sAvatarSmallImage = NULL; | 74 | LLUIImagePtr LLWorldMapView::sAvatarSmallImage = NULL; |
76 | LLUIImagePtr LLWorldMapView::sAvatarLargeImage = NULL; | 75 | LLUIImagePtr LLWorldMapView::sAvatarYouImage = NULL; |
76 | LLUIImagePtr LLWorldMapView::sAvatarYouLargeImage = NULL; | ||
77 | LLUIImagePtr LLWorldMapView::sAvatarLevelImage = NULL; | ||
77 | LLUIImagePtr LLWorldMapView::sAvatarAboveImage = NULL; | 78 | LLUIImagePtr LLWorldMapView::sAvatarAboveImage = NULL; |
78 | LLUIImagePtr LLWorldMapView::sAvatarBelowImage = NULL; | 79 | LLUIImagePtr LLWorldMapView::sAvatarBelowImage = NULL; |
79 | 80 | ||
@@ -113,11 +114,12 @@ std::map<std::string,std::string> LLWorldMapView::sStringsMap; | |||
113 | 114 | ||
114 | void LLWorldMapView::initClass() | 115 | void LLWorldMapView::initClass() |
115 | { | 116 | { |
116 | sAvatarYouSmallImage = LLUI::getUIImage("map_avatar_you_8.tga"); | ||
117 | sAvatarSmallImage = LLUI::getUIImage("map_avatar_8.tga"); | 117 | sAvatarSmallImage = LLUI::getUIImage("map_avatar_8.tga"); |
118 | sAvatarLargeImage = LLUI::getUIImage("map_avatar_16.tga"); | 118 | sAvatarYouImage = LLUI::getUIImage("map_avatar_16.tga"); |
119 | sAvatarAboveImage = LLUI::getUIImage("map_avatar_above_8.tga"); | 119 | sAvatarYouLargeImage = LLUI::getUIImage("map_avatar_you_32.tga"); |
120 | sAvatarBelowImage = LLUI::getUIImage("map_avatar_below_8.tga"); | 120 | sAvatarLevelImage = LLUI::getUIImage("map_avatar_32.tga"); |
121 | sAvatarAboveImage = LLUI::getUIImage("map_avatar_above_32.tga"); | ||
122 | sAvatarBelowImage = LLUI::getUIImage("map_avatar_below_32.tga"); | ||
121 | 123 | ||
122 | sHomeImage = LLUI::getUIImage("map_home.tga"); | 124 | sHomeImage = LLUI::getUIImage("map_home.tga"); |
123 | sTelehubImage = LLUI::getUIImage("map_telehub.tga"); | 125 | sTelehubImage = LLUI::getUIImage("map_telehub.tga"); |
@@ -137,9 +139,10 @@ void LLWorldMapView::initClass() | |||
137 | // static | 139 | // static |
138 | void LLWorldMapView::cleanupClass() | 140 | void LLWorldMapView::cleanupClass() |
139 | { | 141 | { |
140 | sAvatarYouSmallImage = NULL; | ||
141 | sAvatarSmallImage = NULL; | 142 | sAvatarSmallImage = NULL; |
142 | sAvatarLargeImage = NULL; | 143 | sAvatarYouImage = NULL; |
144 | sAvatarYouLargeImage = NULL; | ||
145 | sAvatarLevelImage = NULL; | ||
143 | sAvatarAboveImage = NULL; | 146 | sAvatarAboveImage = NULL; |
144 | sAvatarBelowImage = NULL; | 147 | sAvatarBelowImage = NULL; |
145 | 148 | ||
@@ -606,7 +609,11 @@ void LLWorldMapView::draw() | |||
606 | gGL.end(); | 609 | gGL.end(); |
607 | } | 610 | } |
608 | 611 | ||
609 | // If this is mature, and you are not, draw a line across it | 612 | // As part of the AO project, we no longer want to draw access indicators; |
613 | // it's too complicated to get all the rules straight and will only | ||
614 | // cause confusion. | ||
615 | /********************** | ||
616 | // If this is mature, and you are not, draw a line across it | ||
610 | if (info->mAccess != SIM_ACCESS_DOWN | 617 | if (info->mAccess != SIM_ACCESS_DOWN |
611 | && info->mAccess > SIM_ACCESS_PG | 618 | && info->mAccess > SIM_ACCESS_PG |
612 | && gAgent.isTeen()) | 619 | && gAgent.isTeen()) |
@@ -622,6 +629,7 @@ void LLWorldMapView::draw() | |||
622 | gGL.vertex2f(right, top); | 629 | gGL.vertex2f(right, top); |
623 | gGL.end(); | 630 | gGL.end(); |
624 | } | 631 | } |
632 | **********************/ | ||
625 | 633 | ||
626 | // Draw the region name in the lower left corner | 634 | // Draw the region name in the lower left corner |
627 | LLFontGL* font = LLFontGL::sSansSerifSmall; | 635 | LLFontGL* font = LLFontGL::sSansSerifSmall; |
@@ -651,6 +659,33 @@ void LLWorldMapView::draw() | |||
651 | { | 659 | { |
652 | mesg = llformat( "%s (%s)", info->mName.c_str(), sStringsMap["offline"].c_str()); | 660 | mesg = llformat( "%s (%s)", info->mName.c_str(), sStringsMap["offline"].c_str()); |
653 | } | 661 | } |
662 | else if (gSavedSettings.getBOOL("MapShowAgentCount") && gSavedSettings.getBOOL("MapShowPeople")) | ||
663 | { | ||
664 | // Display the agent count after the region name | ||
665 | S32 agent_count = LLWorldMap::getInstance()->mNumAgents[handle]; | ||
666 | LLViewerRegion *region = gAgent.getRegion(); | ||
667 | |||
668 | if (region && region->getHandle() == info->mHandle) | ||
669 | { | ||
670 | ++agent_count; // Bump by 1 if we're in this region | ||
671 | } | ||
672 | |||
673 | if (agent_count > 0) | ||
674 | { | ||
675 | //TODO: move this and the tooltip strings into XML | ||
676 | std::string count = llformat("%d %s", agent_count, agent_count > 1 ? "avatars" : "avatar"); | ||
677 | font->renderUTF8( | ||
678 | count, 0, | ||
679 | llfloor(left + 3), | ||
680 | llfloor(bottom + 20), | ||
681 | LLColor4::white, | ||
682 | LLFontGL::LEFT, | ||
683 | LLFontGL::BASELINE, | ||
684 | LLFontGL::DROP_SHADOW); | ||
685 | |||
686 | mesg = info->mName; | ||
687 | } | ||
688 | } | ||
654 | else | 689 | else |
655 | { | 690 | { |
656 | mesg = info->mName; | 691 | mesg = info->mName; |
@@ -732,7 +767,7 @@ void LLWorldMapView::draw() | |||
732 | 767 | ||
733 | // Now draw your avatar after all that other stuff. | 768 | // Now draw your avatar after all that other stuff. |
734 | LLVector3d pos_global = gAgent.getPositionGlobal(); | 769 | LLVector3d pos_global = gAgent.getPositionGlobal(); |
735 | drawImage(pos_global, sAvatarLargeImage); | 770 | drawImage(pos_global, sAvatarYouImage); |
736 | 771 | ||
737 | LLVector3 pos_map = globalPosToView(pos_global); | 772 | LLVector3 pos_map = globalPosToView(pos_global); |
738 | if (!pointInView(llround(pos_map.mV[VX]), llround(pos_map.mV[VY]))) | 773 | if (!pointInView(llround(pos_map.mV[VX]), llround(pos_map.mV[VY]))) |
@@ -1161,11 +1196,11 @@ BOOL LLWorldMapView::handleToolTip( S32 x, S32 y, std::string& msg, LLRect* stic | |||
1161 | 1196 | ||
1162 | if (agent_count == 1) | 1197 | if (agent_count == 1) |
1163 | { | 1198 | { |
1164 | message += "person"; | 1199 | message += "avatar"; |
1165 | } | 1200 | } |
1166 | else | 1201 | else |
1167 | { | 1202 | { |
1168 | message += "people"; | 1203 | message += "avatars"; |
1169 | } | 1204 | } |
1170 | } | 1205 | } |
1171 | } | 1206 | } |
@@ -1241,7 +1276,7 @@ void LLWorldMapView::drawAvatar(F32 x_pixels, | |||
1241 | F32 dot_radius) | 1276 | F32 dot_radius) |
1242 | { | 1277 | { |
1243 | const F32 HEIGHT_THRESHOLD = 7.f; | 1278 | const F32 HEIGHT_THRESHOLD = 7.f; |
1244 | LLUIImagePtr dot_image = sAvatarSmallImage; | 1279 | LLUIImagePtr dot_image = sAvatarLevelImage; |
1245 | if(relative_z < -HEIGHT_THRESHOLD) | 1280 | if(relative_z < -HEIGHT_THRESHOLD) |
1246 | { | 1281 | { |
1247 | dot_image = sAvatarBelowImage; | 1282 | dot_image = sAvatarBelowImage; |
@@ -1250,9 +1285,13 @@ void LLWorldMapView::drawAvatar(F32 x_pixels, | |||
1250 | { | 1285 | { |
1251 | dot_image = sAvatarAboveImage; | 1286 | dot_image = sAvatarAboveImage; |
1252 | } | 1287 | } |
1288 | |||
1289 | S32 dot_width = llround(dot_radius * 2.f); | ||
1253 | dot_image->draw( | 1290 | dot_image->draw( |
1254 | llround(x_pixels) - dot_image->getWidth()/2, | 1291 | llround(x_pixels - dot_radius), |
1255 | llround(y_pixels) - dot_image->getHeight()/2, | 1292 | llround(y_pixels - dot_radius), |
1293 | dot_width, | ||
1294 | dot_width, | ||
1256 | color); | 1295 | color); |
1257 | } | 1296 | } |
1258 | 1297 | ||
diff --git a/linden/indra/newview/llworldmapview.h b/linden/indra/newview/llworldmapview.h index b97dfb5..b6ab855 100644 --- a/linden/indra/newview/llworldmapview.h +++ b/linden/indra/newview/llworldmapview.h | |||
@@ -136,11 +136,13 @@ protected: | |||
136 | public: | 136 | public: |
137 | LLColor4 mBackgroundColor; | 137 | LLColor4 mBackgroundColor; |
138 | 138 | ||
139 | static LLUIImagePtr sAvatarYouSmallImage; | ||
140 | static LLUIImagePtr sAvatarSmallImage; | 139 | static LLUIImagePtr sAvatarSmallImage; |
141 | static LLUIImagePtr sAvatarLargeImage; | 140 | static LLUIImagePtr sAvatarYouImage; |
141 | static LLUIImagePtr sAvatarYouLargeImage; | ||
142 | static LLUIImagePtr sAvatarLevelImage; | ||
142 | static LLUIImagePtr sAvatarAboveImage; | 143 | static LLUIImagePtr sAvatarAboveImage; |
143 | static LLUIImagePtr sAvatarBelowImage; | 144 | static LLUIImagePtr sAvatarBelowImage; |
145 | |||
144 | static LLUIImagePtr sTelehubImage; | 146 | static LLUIImagePtr sTelehubImage; |
145 | static LLUIImagePtr sInfohubImage; | 147 | static LLUIImagePtr sInfohubImage; |
146 | static LLUIImagePtr sHomeImage; | 148 | static LLUIImagePtr sHomeImage; |
diff --git a/linden/indra/newview/skins/default/colors_base.xml b/linden/indra/newview/skins/default/colors_base.xml index 42cb0ac..9ad1787 100644 --- a/linden/indra/newview/skins/default/colors_base.xml +++ b/linden/indra/newview/skins/default/colors_base.xml | |||
@@ -69,7 +69,9 @@ | |||
69 | <TextEmbeddedItemColor value="0, 0, 128, 255" /> <!-- Text of items embedded in notecards --> | 69 | <TextEmbeddedItemColor value="0, 0, 128, 255" /> <!-- Text of items embedded in notecards --> |
70 | <TextDefaultColor value="0, 20, 0, 255"/> <!-- Non-keyword text in the script editor --> | 70 | <TextDefaultColor value="0, 20, 0, 255"/> <!-- Non-keyword text in the script editor --> |
71 | <ScriptBgReadOnlyColor value="100, 100, 100, 255" /> <!-- Not used --> | 71 | <ScriptBgReadOnlyColor value="100, 100, 100, 255" /> <!-- Not used --> |
72 | 72 | <TextLinkColor value="144, 165, 208, 255"/> | |
73 | <TextLinkHoverColor value="255, 255, 255, 255"/> | ||
74 | |||
73 | <!-- LISTBOXES --> | 75 | <!-- LISTBOXES --> |
74 | <ScrollBgReadOnlyColor value="200, 209, 204, 255" /> <!-- Background of read only lists --> | 76 | <ScrollBgReadOnlyColor value="200, 209, 204, 255" /> <!-- Background of read only lists --> |
75 | <ScrollBgWriteableColor value="200, 209, 204, 255" /> <!-- Background of editable lists, e.g. groups--> | 77 | <ScrollBgWriteableColor value="200, 209, 204, 255" /> <!-- Background of editable lists, e.g. groups--> |
@@ -160,6 +162,7 @@ | |||
160 | <MapAvatar value="0, 255, 0, 255" /> <!-- Your avatar's glyph color --> | 162 | <MapAvatar value="0, 255, 0, 255" /> <!-- Your avatar's glyph color --> |
161 | <MapFriend value="255, 255, 0, 255" /> <!-- Your friends' glyph color --> | 163 | <MapFriend value="255, 255, 0, 255" /> <!-- Your friends' glyph color --> |
162 | <MapMuted value="128, 128, 128, 255" /> <!-- Muted avatars' glyph color --> | 164 | <MapMuted value="128, 128, 128, 255" /> <!-- Muted avatars' glyph color --> |
165 | <MapSelected value="255, 0, 0, 255" /> <!-- Selected avatars' glyph color --> | ||
163 | 166 | ||
164 | <!-- MINI-MAP --> | 167 | <!-- MINI-MAP --> |
165 | <NetMapBackgroundColor value="0, 0, 0, 77" /> <!-- Mini-map floater background --> | 168 | <NetMapBackgroundColor value="0, 0, 0, 77" /> <!-- Mini-map floater background --> |
diff --git a/linden/indra/newview/skins/default/textures/arrow_left.tga b/linden/indra/newview/skins/default/textures/arrow_left.tga new file mode 100644 index 0000000..68e6280 --- /dev/null +++ b/linden/indra/newview/skins/default/textures/arrow_left.tga | |||
Binary files differ | |||
diff --git a/linden/indra/newview/skins/default/textures/arrow_right.tga b/linden/indra/newview/skins/default/textures/arrow_right.tga new file mode 100644 index 0000000..7a5a30e --- /dev/null +++ b/linden/indra/newview/skins/default/textures/arrow_right.tga | |||
Binary files differ | |||
diff --git a/linden/indra/newview/skins/default/textures/map_avatar_32.tga b/linden/indra/newview/skins/default/textures/map_avatar_32.tga new file mode 100644 index 0000000..aebeab4 --- /dev/null +++ b/linden/indra/newview/skins/default/textures/map_avatar_32.tga | |||
Binary files differ | |||
diff --git a/linden/indra/newview/skins/default/textures/map_avatar_above_32.tga b/linden/indra/newview/skins/default/textures/map_avatar_above_32.tga new file mode 100644 index 0000000..65bd056 --- /dev/null +++ b/linden/indra/newview/skins/default/textures/map_avatar_above_32.tga | |||
Binary files differ | |||
diff --git a/linden/indra/newview/skins/default/textures/map_avatar_below_32.tga b/linden/indra/newview/skins/default/textures/map_avatar_below_32.tga new file mode 100644 index 0000000..496c44b --- /dev/null +++ b/linden/indra/newview/skins/default/textures/map_avatar_below_32.tga | |||
Binary files differ | |||
diff --git a/linden/indra/newview/skins/default/textures/map_avatar_you_32.tga b/linden/indra/newview/skins/default/textures/map_avatar_you_32.tga new file mode 100644 index 0000000..782207e --- /dev/null +++ b/linden/indra/newview/skins/default/textures/map_avatar_you_32.tga | |||
Binary files differ | |||
diff --git a/linden/indra/newview/skins/default/textures/textures.xml b/linden/indra/newview/skins/default/textures/textures.xml index 9e1d9b5..9b0e4c7 100644 --- a/linden/indra/newview/skins/default/textures/textures.xml +++ b/linden/indra/newview/skins/default/textures/textures.xml | |||
@@ -150,7 +150,6 @@ | |||
150 | 150 | ||
151 | <texture name="map_avatar_16.tga"/> | 151 | <texture name="map_avatar_16.tga"/> |
152 | <texture name="map_avatar_8.tga"/> | 152 | <texture name="map_avatar_8.tga"/> |
153 | <texture name="map_avatar_you_8.tga"/> | ||
154 | <texture name="map_event.tga"/> | 153 | <texture name="map_event.tga"/> |
155 | <texture name="map_event_mature.tga"/> | 154 | <texture name="map_event_mature.tga"/> |
156 | <texture name="map_home.tga"/> | 155 | <texture name="map_home.tga"/> |
@@ -365,6 +364,9 @@ | |||
365 | <texture name="icn_label_music.tga"/> | 364 | <texture name="icn_label_music.tga"/> |
366 | <texture name="icn_label_media.tga"/> | 365 | <texture name="icn_label_media.tga"/> |
367 | <texture name="arrow_down.tga"/> | 366 | <texture name="arrow_down.tga"/> |
367 | <texture name="arrow_up.tga"/> | ||
368 | <texture name="arrow_left.tga"/> | ||
369 | <texture name="arrow_right.tga"/> | ||
368 | <texture name="cloud-particle.j2c" use_mips="true"/> | 370 | <texture name="cloud-particle.j2c" use_mips="true"/> |
369 | 371 | ||
370 | <texture name="skin_thumbnail_default.png" preload="true" /> | 372 | <texture name="skin_thumbnail_default.png" preload="true" /> |
diff --git a/linden/indra/newview/skins/default/xui/en-us/floater_inventory.xml b/linden/indra/newview/skins/default/xui/en-us/floater_inventory.xml index 3d1c569..f0c97f2 100644 --- a/linden/indra/newview/skins/default/xui/en-us/floater_inventory.xml +++ b/linden/indra/newview/skins/default/xui/en-us/floater_inventory.xml | |||
@@ -205,5 +205,23 @@ | |||
205 | <on_click filter="" function="Inventory.SetSortBy" userdata="systemfolderstotop" /> | 205 | <on_click filter="" function="Inventory.SetSortBy" userdata="systemfolderstotop" /> |
206 | </menu_item_check> | 206 | </menu_item_check> |
207 | </menu> | 207 | </menu> |
208 | <menu bottom_delta="64" drop_shadow="true" height="49" | ||
209 | label="Search" left="0" mouse_opaque="false" name="Sort" opaque="true" | ||
210 | tear_off="true" width="118"> | ||
211 | <menu_item_check bottom_delta="-18" control_name="Inventory.SearchByName" height="18" | ||
212 | label="By Name" left="0" mouse_opaque="true" name="By Name" width="118"> | ||
213 | <on_click filter="" function="Inventory.SetSearchBy" userdata="name" /> | ||
214 | </menu_item_check> | ||
215 | <menu_item_check bottom_delta="-18" control_name="Inventory.SearchByCreator" height="18" | ||
216 | label="By Creator" left="0" mouse_opaque="true" name="By Creator" width="118"> | ||
217 | <on_click filter="" function="Inventory.SetSearchBy" userdata="creator" /> | ||
218 | </menu_item_check> | ||
219 | <menu_item_separator bottom_delta="-8" height="8" left="0" mouse_opaque="true" name="separator" | ||
220 | width="118" /> | ||
221 | <menu_item_check bottom_delta="-18" control_name="Inventory.SearchByAll" height="18" | ||
222 | label="By All" left="0" mouse_opaque="true" name="By All" width="118"> | ||
223 | <on_click filter="" function="Inventory.SetSearchBy" userdata="all" /> | ||
224 | </menu_item_check> | ||
225 | </menu> | ||
208 | </menu_bar> | 226 | </menu_bar> |
209 | </floater> | 227 | </floater> |
diff --git a/linden/indra/newview/skins/default/xui/en-us/floater_media_browser.xml b/linden/indra/newview/skins/default/xui/en-us/floater_media_browser.xml index 318f46a..7beb7e4 100644 --- a/linden/indra/newview/skins/default/xui/en-us/floater_media_browser.xml +++ b/linden/indra/newview/skins/default/xui/en-us/floater_media_browser.xml | |||
@@ -1,7 +1,7 @@ | |||
1 | <?xml version="1.0" encoding="utf-8" standalone="yes" ?> | 1 | <?xml version="1.0" encoding="utf-8" standalone="yes" ?> |
2 | <floater can_close="true" can_drag_on_left="false" can_minimize="true" can_resize="true" | 2 | <floater can_close="true" can_drag_on_left="false" can_minimize="true" can_resize="true" |
3 | height="440" min_height="140" min_width="467" name="floater_about" | 3 | height="440" min_height="140" min_width="467" name="floater_about" |
4 | rect_control="FloaterMediaRect" title="Media Browser" width="560"> | 4 | rect_control="FloaterMediaRect" title="Web Browser" width="560"> |
5 | <layout_stack name="stack1" bottom="0" follows="left|right|top|bottom" left="10" top="-20" width="540"> | 5 | <layout_stack name="stack1" bottom="0" follows="left|right|top|bottom" left="10" top="-20" width="540"> |
6 | <layout_panel auto_resize="false" bottom="0" height="20" left="0" name="nav_controls" user_resize="false" | 6 | <layout_panel auto_resize="false" bottom="0" height="20" left="0" name="nav_controls" user_resize="false" |
7 | width="540"> | 7 | width="540"> |
diff --git a/linden/indra/newview/skins/default/xui/en-us/floater_mini_map.xml b/linden/indra/newview/skins/default/xui/en-us/floater_mini_map.xml index 9f1e164..3485812 100644 --- a/linden/indra/newview/skins/default/xui/en-us/floater_mini_map.xml +++ b/linden/indra/newview/skins/default/xui/en-us/floater_mini_map.xml | |||
@@ -1,7 +1,98 @@ | |||
1 | <?xml version="1.0" encoding="utf-8" standalone="yes" ?> | 1 | <?xml version="1.0" encoding="utf-8" standalone="yes" ?> |
2 | <floater can_close="true" can_drag_on_left="false" can_minimize="false" can_resize="true" | 2 | <floater can_close="true" can_drag_on_left="false" can_minimize="false" can_resize="true" |
3 | can_tear_off="false" follows="top|right" height="220" min_height="64" min_width="64" | 3 | can_tear_off="false" follows="top|right" height="455" min_height="400" min_width="240" |
4 | name="minimap" rect_control="FloaterMiniMapRect" width="200"> | 4 | name="minimap" rect_control="FloaterMiniMapRect" width="200"> |
5 | <panel bottom="2" follows="left|top|right|bottom" height="216" label="Mini Map" | 5 | |
6 | left="2" mouse_opaque="false" name="mini_mapview" width="196" /> | 6 | <panel label="Mini Map" name="mini_mapview" |
7 | top="-2" left="2" bottom="196" right="196" | ||
8 | follows="left|top|right|bottom" mouse_opaque="false" /> | ||
9 | |||
10 | <panel name="RadarPanel" label="Radar" | ||
11 | background_visible="true" bg_alpha_color="NetMapBackgroundColor" | ||
12 | left="2" top="196" right="196" height="120" | ||
13 | follows="left|right|bottom" border="false" mouse_opaque="true"> | ||
14 | |||
15 | <text bg_visible="false" border_drop_shadow_visible="false" border_visible="false" | ||
16 | bottom="-20" drop_shadow_visible="true" follows="left|top" | ||
17 | font="SansSerifSmall" h_pad="0" halign="left" height="16" left="10" | ||
18 | mouse_opaque="true" name="lblAvatarCount" v_pad="0" | ||
19 | width="220"> | ||
20 | 0 | ||
21 | </text> | ||
22 | <text bg_visible="false" border_drop_shadow_visible="false" border_visible="false" | ||
23 | bottom="-20" drop_shadow_visible="true" follows="left|top" | ||
24 | font="SansSerifSmall" h_pad="0" halign="left" height="16" left="27" | ||
25 | mouse_opaque="true" name="avatars_in" v_pad="0" | ||
26 | width="220"> | ||
27 | Avatars in | ||
28 | </text> | ||
29 | <slider bottom_delta="0" left_delta="55" follows="left|top" width="110" height="15" | ||
30 | name="near_me_range" label="" control_name="NearMeRange" | ||
31 | min_val="5" max_val="512" increment="1" initial_val="96" decimal_digits="0" /> | ||
32 | <text bg_visible="false" border_drop_shadow_visible="false" border_visible="false" | ||
33 | bottom_delta="0" left="190" drop_shadow_visible="true" follows="left|top" | ||
34 | font="SansSerifSmall" h_pad="0" halign="left" height="15" | ||
35 | mouse_opaque="true" name="meters" v_pad="0" | ||
36 | width="40"> | ||
37 | Meters | ||
38 | </text> | ||
39 | <tab_container border="false" bottom_delta="-176" height="172" left="0" mouse_opaque="false" | ||
40 | name="button_container" tab_position="top" follows="left|right|bottom" width="198"> | ||
41 | <panel border="true" bottom="-180" follows="left|top|right|bottom" height="160" | ||
42 | label="Avatars" left="1" mouse_opaque="true" name="avatar_tab" width="198"> | ||
43 | <button bottom="-25" follows="top|right" height="22" label="IM/Call" | ||
44 | left="-85" name="im_btn" tool_tip="Open Instant Message session" | ||
45 | width="80" /> | ||
46 | <button bottom_delta="-25" follows="top|right" height="22" label="Profile" | ||
47 | left_delta="0" name="profile_btn" | ||
48 | tool_tip="Show picture, groups, and other information" width="80" /> | ||
49 | <button bottom_delta="-25" follows="top|right" height="22" label="Teleport..." | ||
50 | left_delta="0" name="offer_teleport_btn" | ||
51 | tool_tip="Offer this friend a teleport to your current location" width="80" /> | ||
52 | <button bottom_delta="-25" follows="top|right" height="22" label="Track" | ||
53 | left_delta="0" name="track_btn" | ||
54 | tool_tip="Create a beacon to track this avatar" width="80" /> | ||
55 | <button bottom_delta="-25" follows="top|right" height="22" label="Invite..." | ||
56 | left_delta="0" name="invite_btn" | ||
57 | tool_tip="Remove this person from your friends list" width="80" /> | ||
58 | <button bottom_delta="-25" follows="top|right" height="22" label="Add..." | ||
59 | left_delta="0" name="add_btn" tool_tip="Offer friendship to a resident" | ||
60 | width="80" /> | ||
61 | </panel> | ||
62 | <panel border="true" bottom="-160" follows="left|top|right|bottom" height="160" | ||
63 | label="Estate" left="1" mouse_opaque="true" name="estate_tab" width="198"> | ||
64 | <button bottom="-25" follows="top|right" height="22" label="Freeze..." | ||
65 | left="-85" name="freeze_btn" tool_tip="" | ||
66 | width="80" /> | ||
67 | <button bottom_delta="-25" follows="top|right" height="22" label="Eject..." | ||
68 | left_delta="0" name="eject_btn" | ||
69 | tool_tip="" width="80" /> | ||
70 | <button bottom_delta="-25" follows="top|right" height="22" label="Mute..." | ||
71 | left_delta="0" name="mute_btn" | ||
72 | tool_tip="" width="80" /> | ||
73 | <button bottom_delta="-25" follows="top|right" height="22" label="Unmute..." | ||
74 | left_delta="0" name="unmute_btn" | ||
75 | tool_tip="" width="80" /> | ||
76 | <button bottom_delta="-25" follows="top|right" height="22" label="Report..." | ||
77 | left_delta="0" name="ar_btn" | ||
78 | tool_tip="" width="80" /> | ||
79 | <button bottom_delta="-25" follows="top|right" height="22" label="Kick..." | ||
80 | left_delta="0" name="estate_eject_btn" tool_tip="" | ||
81 | width="80" /> | ||
82 | </panel> | ||
83 | </tab_container> | ||
84 | <scroll_list bottom="-190" width="104" height="143" left="4" | ||
85 | follows="left|bottom|right" draw_border="false" draw_heading="true" | ||
86 | draw_stripes="true" column_padding="5" sort_column="1" mouse_opaque="true" | ||
87 | background_visible="true" multi_select="false" name="RadarList"> | ||
88 | <column name="avatar_name" label="Name" dynamicwidth="true" /> | ||
89 | <column name="avatar_distance" label="Dist." width="48" /> | ||
90 | </scroll_list> | ||
91 | </panel> | ||
92 | <string name="no_one_near"> | ||
93 | No avatars within range | ||
94 | </string> | ||
95 | <string name="muted"> | ||
96 | (muted) | ||
97 | </string> | ||
7 | </floater> | 98 | </floater> |
diff --git a/linden/indra/newview/skins/default/xui/en-us/floater_object_im_info.xml b/linden/indra/newview/skins/default/xui/en-us/floater_object_im_info.xml new file mode 100644 index 0000000..615b7d1 --- /dev/null +++ b/linden/indra/newview/skins/default/xui/en-us/floater_object_im_info.xml | |||
@@ -0,0 +1,54 @@ | |||
1 | <?xml version="1.0" encoding="utf-8" standalone="yes" ?> | ||
2 | <floater bottom="0" can_close="true" can_drag_on_left="false" can_minimize="true" | ||
3 | can_resize="false" can_tear_off="true" enabled="true" height="140" left="0" | ||
4 | mouse_opaque="true" name="object im info" width="300" | ||
5 | rect_control="FloaterObjectIMInfo" short_title="Object Info" title="Object Information" > | ||
6 | |||
7 | <text bg_visible="false" border_drop_shadow_visible="false" border_visible="false" | ||
8 | bottom="-35" drop_shadow_visible="true" follows="left|top" | ||
9 | font="SansSerif" h_pad="0" halign="left" height="10" left="10" | ||
10 | mouse_opaque="true" name="LabelItemNameTitle" v_pad="0" width="78"> | ||
11 | Object: | ||
12 | </text> | ||
13 | <text bevel_style="none" border_style="line" border_visible="false" | ||
14 | border_thickness="0" bottom_delta="-10" enabled="true" follows="left|top" | ||
15 | font="SansSerif" height="20" is_unicode="false" left="70" | ||
16 | max_length="254" mouse_opaque="false" name="ObjectName" | ||
17 | width="200" /> | ||
18 | |||
19 | <text bg_visible="false" border_drop_shadow_visible="false" border_visible="false" | ||
20 | bottom="-60" drop_shadow_visible="true" follows="left|top" | ||
21 | font="SansSerif" h_pad="0" halign="left" height="10" left="10" | ||
22 | mouse_opaque="true" name="LabelSlurlTitle" v_pad="0" width="78"> | ||
23 | Location: | ||
24 | </text> | ||
25 | <text bevel_style="none" border_style="line" border_visible="false" | ||
26 | border_thickness="0" bottom_delta="-10" enabled="true" follows="left|top" | ||
27 | font="SansSerif" height="20" is_unicode="false" left="70" hover="true" | ||
28 | max_length="254" mouse_opaque="true" name="Slurl" font-style="UNDERLINE" | ||
29 | width="200" hover_cursor="UI_CURSOR_HAND" text_color="TextLinkColor" hover_color="TextLinkHoverColor"/> | ||
30 | |||
31 | <!-- A new viewer talking to an old sim will not have a slurl available and will show this. --> | ||
32 | <text bevel_style="none" border_style="line" border_visible="false" | ||
33 | border_thickness="0" bottom_delta="0" enabled="true" follows="left|top" | ||
34 | font="SansSerif" height="20" is_unicode="false" left_delta="0" hover="false" | ||
35 | max_length="254" mouse_opaque="false" name="Unknown_Slurl" width="200"> | ||
36 | (Location Info Not Available) | ||
37 | </text> | ||
38 | |||
39 | <text bg_visible="false" border_drop_shadow_visible="false" border_visible="false" | ||
40 | bottom="-85" drop_shadow_visible="true" follows="left|top" | ||
41 | font="SansSerif" h_pad="0" halign="left" height="10" left="10" | ||
42 | mouse_opaque="true" name="LabelOwnerNameTitle" v_pad="0" width="78"> | ||
43 | Owner: | ||
44 | </text> | ||
45 | <text bevel_style="none" border_style="line" border_visible="false" | ||
46 | border_thickness="0" bottom_delta="-10" enabled="true" follows="left|top" | ||
47 | font="SansSerif" height="20" is_unicode="false" left="70" hover="true" | ||
48 | max_length="254" mouse_opaque="true" name="OwnerName" font-style="UNDERLINE" | ||
49 | width="200" hover_cursor="UI_CURSOR_HAND" text_color="TextLinkColor" hover_color="TextLinkHoverColor"/> | ||
50 | |||
51 | <button bottom_delta="-30" font="SansSerif" halign="center" height="20" label="Mute Owner" | ||
52 | label_selected="Mute Owner" left="70" mouse_opaque="true" name="Mute" | ||
53 | width="160" /> | ||
54 | </floater> | ||
diff --git a/linden/indra/newview/skins/default/xui/en-us/floater_profile.xml b/linden/indra/newview/skins/default/xui/en-us/floater_profile.xml index daf45cf..c67443f 100644 --- a/linden/indra/newview/skins/default/xui/en-us/floater_profile.xml +++ b/linden/indra/newview/skins/default/xui/en-us/floater_profile.xml | |||
@@ -1,6 +1,6 @@ | |||
1 | <?xml version="1.0" encoding="utf-8" standalone="yes" ?> | 1 | <?xml version="1.0" encoding="utf-8" standalone="yes" ?> |
2 | <floater can_close="true" can_drag_on_left="false" can_minimize="true" | 2 | <floater can_close="true" can_drag_on_left="false" can_minimize="true" |
3 | can_resize="false" height="520" min_height="0" min_width="0" | 3 | can_resize="false" height="545" min_height="0" min_width="0" |
4 | name="avatarinfo" title="Profile" width="420"> | 4 | name="avatarinfo" title="Profile" width="420"> |
5 | <panel bottom="-520" height="486" left="0" name="Panel Avatar" width="430" /> | 5 | <panel bottom="-545" height="511" left="0" name="Panel Avatar" width="430" /> |
6 | </floater> | 6 | </floater> |
diff --git a/linden/indra/newview/skins/default/xui/en-us/floater_snapshot.xml b/linden/indra/newview/skins/default/xui/en-us/floater_snapshot.xml index a9ac7fa..9333153 100644 --- a/linden/indra/newview/skins/default/xui/en-us/floater_snapshot.xml +++ b/linden/indra/newview/skins/default/xui/en-us/floater_snapshot.xml | |||
@@ -1,5 +1,5 @@ | |||
1 | <?xml version="1.0" encoding="utf-8" standalone="yes" ?> | 1 | <?xml version="1.0" encoding="utf-8" standalone="yes" ?> |
2 | <floater bottom="-300" can_close="true" can_drag_on_left="false" can_minimize="false" | 2 | <floater bottom="-300" can_close="true" can_drag_on_left="false" can_minimize="true" |
3 | can_resize="false" follows="left|top" height="526" name="Snapshot" | 3 | can_resize="false" follows="left|top" height="526" name="Snapshot" |
4 | rect_control="FloaterSnapshotRect" title="Snapshot Preview" width="215"> | 4 | rect_control="FloaterSnapshotRect" title="Snapshot Preview" width="215"> |
5 | <text bottom_delta="-40" follows="top|left" height="15" left="10" name="type_label" | 5 | <text bottom_delta="-40" follows="top|left" height="15" left="10" name="type_label" |
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 bc18f44..a57c568 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 | |||
@@ -660,15 +660,15 @@ | |||
660 | </text> | 660 | </text> |
661 | <spinner bottom_delta="-20" decimal_digits="3" follows="left|top" height="16" | 661 | <spinner bottom_delta="-20" decimal_digits="3" follows="left|top" height="16" |
662 | increment="0.01" initial_val="0" label="X" label_width="10" left="10" | 662 | increment="0.01" initial_val="0" label="X" label_width="10" left="10" |
663 | max_val="10" min_val="0.01" mouse_opaque="true" name="Scale X" | 663 | min_val="0.01" mouse_opaque="true" name="Scale X" |
664 | text_enabled_color="1, 1, 1, 1" width="96" /> | 664 | text_enabled_color="1, 1, 1, 1" width="96" /> |
665 | <spinner bottom_delta="-18" decimal_digits="3" follows="left|top" height="16" | 665 | <spinner bottom_delta="-18" decimal_digits="3" follows="left|top" height="16" |
666 | increment="0.01" initial_val="0" label="Y" label_width="10" left="10" | 666 | increment="0.01" initial_val="0" label="Y" label_width="10" left="10" |
667 | max_val="10" min_val="0.01" mouse_opaque="true" name="Scale Y" | 667 | min_val="0.01" mouse_opaque="true" name="Scale Y" |
668 | text_enabled_color="1, 1, 1, 1" width="96" /> | 668 | text_enabled_color="1, 1, 1, 1" width="96" /> |
669 | <spinner bottom_delta="-18" decimal_digits="3" follows="left|top" height="16" | 669 | <spinner bottom_delta="-18" decimal_digits="3" follows="left|top" height="16" |
670 | increment="0.01" initial_val="0" label="Z" label_width="10" left="10" | 670 | increment="0.01" initial_val="0" label="Z" label_width="10" left="10" |
671 | max_val="10" min_val="0.01" mouse_opaque="true" name="Scale Z" | 671 | min_val="0.01" mouse_opaque="true" name="Scale Z" |
672 | text_enabled_color="1, 1, 1, 1" width="96" /> | 672 | text_enabled_color="1, 1, 1, 1" width="96" /> |
673 | <text bg_visible="false" border_drop_shadow_visible="false" border_visible="false" | 673 | <text bg_visible="false" border_drop_shadow_visible="false" border_visible="false" |
674 | bottom_delta="-16" drop_shadow_visible="true" follows="left|top" | 674 | bottom_delta="-16" drop_shadow_visible="true" follows="left|top" |
diff --git a/linden/indra/newview/skins/default/xui/en-us/floater_windlight_options.xml b/linden/indra/newview/skins/default/xui/en-us/floater_windlight_options.xml index 906e7de..471b3e5 100644 --- a/linden/indra/newview/skins/default/xui/en-us/floater_windlight_options.xml +++ b/linden/indra/newview/skins/default/xui/en-us/floater_windlight_options.xml | |||
@@ -4,29 +4,35 @@ | |||
4 | min_width="400" mouse_opaque="true" name="WindLight floater" | 4 | min_width="400" mouse_opaque="true" name="WindLight floater" |
5 | rect_control="FloaterAdvancedSkyRect" title="Advanced Sky Editor" | 5 | rect_control="FloaterAdvancedSkyRect" title="Advanced Sky Editor" |
6 | width="700"> | 6 | width="700"> |
7 | <text type="string" length="1" bg_visible="false" border_drop_shadow_visible="false" border_visible="false" | 7 | <text type="string" length="1" bg_visible="false" border_drop_shadow_visible="false" border_visible="false" |
8 | bottom="-50" drop_shadow_visible="true" follows="left|top|right" | 8 | bottom="-50" drop_shadow_visible="true" follows="left|top|right" |
9 | font="SansSerif" h_pad="0" halign="left" height="16" | 9 | font="SansSerif" h_pad="0" halign="left" height="16" |
10 | left="10" mouse_opaque="true" name="KeyFramePresetsText" v_pad="0" | 10 | left="10" mouse_opaque="true" name="KeyFramePresetsText" v_pad="0" |
11 | width="110"> | 11 | width="110"> |
12 | Sky Presets: | 12 | Sky Presets: |
13 | </text> | 13 | </text> |
14 | <combo_box allow_text_entry="false" bottom="-50" follows="left|top" height="18" | 14 | <combo_box allow_text_entry="false" bottom="-52" follows="left|top" height="18" |
15 | left_delta="110" max_chars="20" mouse_opaque="true" name="WLPresetsCombo" | 15 | left_delta="110" max_chars="20" mouse_opaque="true" name="WLPresetsCombo" |
16 | width="150" /> | 16 | width="150" /> |
17 | <button bottom="-53" enabled="true" font="SansSerif" halign="center" height="20" | ||
18 | label="" label_selected="" left_delta="-25" image_overlay="arrow_left.tga" | ||
19 | mouse_opaque="true" name="prev" scale_image="true" width="20" /> | ||
20 | <button bottom="-53" enabled="true" font="SansSerif" halign="center" height="20" | ||
21 | label="" label_selected="" left_delta="180" image_overlay="arrow_right.tga" | ||
22 | mouse_opaque="true" name="next" scale_image="true" width="20" /> | ||
17 | <button bottom="-53" enabled="true" font="SansSerif" halign="center" height="20" | 23 | <button bottom="-53" enabled="true" font="SansSerif" halign="center" height="20" |
18 | label="New" label_selected="New" left_delta="170" | 24 | label="New" label_selected="New" left_delta="40" |
19 | mouse_opaque="true" name="WLNewPreset" scale_image="true" width="70" /> | 25 | mouse_opaque="true" name="WLNewPreset" scale_image="true" width="70" /> |
20 | <button bottom_delta="0" enabled="true" font="SansSerif" halign="center" height="20" | 26 | <button bottom_delta="0" enabled="true" font="SansSerif" halign="center" height="20" |
21 | label="Save" label_selected="Save" left_delta="80" | 27 | label="Save" label_selected="Save" left_delta="70" |
22 | mouse_opaque="true" name="WLSavePreset" scale_image="true" width="70" /> | 28 | mouse_opaque="true" name="WLSavePreset" scale_image="true" width="70" /> |
23 | <button bottom_delta="0" enabled="true" font="SansSerif" halign="center" height="20" | 29 | <button bottom_delta="0" enabled="true" font="SansSerif" halign="center" height="20" |
24 | label="Delete" label_selected="Delete" left_delta="80" | 30 | label="Delete" label_selected="Delete" left_delta="70" |
25 | mouse_opaque="true" name="WLDeletePreset" scale_image="true" width="70" /> | 31 | mouse_opaque="true" name="WLDeletePreset" scale_image="true" width="70" /> |
26 | <button bottom_delta="0" enabled="true" font="SansSerif" halign="center" height="20" | 32 | <button bottom_delta="0" enabled="true" font="SansSerif" halign="center" height="20" |
27 | label="Day Cycle Editor" label_selected="Day Cycle Editor" | 33 | label="Day Cycle Editor" label_selected="Day Cycle Editor" |
28 | left_delta="120" mouse_opaque="true" name="WLDayCycleMenuButton" | 34 | left_delta="100" mouse_opaque="true" name="WLDayCycleMenuButton" |
29 | scale_image="true" width="120" /> | 35 | scale_image="true" width="125" /> |
30 | <tab_container bottom="-220" follows="left|top" height="160" left="0" | 36 | <tab_container bottom="-220" follows="left|top" height="160" left="0" |
31 | mouse_opaque="false" name="WindLight Tabs" tab_position="top" width="700"> | 37 | mouse_opaque="false" name="WindLight Tabs" tab_position="top" width="700"> |
32 | <panel border="true" bottom="-220" follows="left|top|right|bottom" height="160" | 38 | <panel border="true" bottom="-220" follows="left|top|right|bottom" height="160" |
diff --git a/linden/indra/newview/skins/default/xui/en-us/menu_mini_map.xml b/linden/indra/newview/skins/default/xui/en-us/menu_mini_map.xml index 485ae9f..0172b41 100644 --- a/linden/indra/newview/skins/default/xui/en-us/menu_mini_map.xml +++ b/linden/indra/newview/skins/default/xui/en-us/menu_mini_map.xml | |||
@@ -19,6 +19,11 @@ | |||
19 | <on_click function="MiniMap.Center" userdata="1" /> | 19 | <on_click function="MiniMap.Center" userdata="1" /> |
20 | <on_check function="MiniMap.CheckCenter" userdata="1" /> | 20 | <on_check function="MiniMap.CheckCenter" userdata="1" /> |
21 | </menu_item_check> | 21 | </menu_item_check> |
22 | <menu_item_check bottom_delta="-18" enabled="true" height="18" label="Rotate Mini-Map" | ||
23 | left="0" mouse_opaque="true" name="Rotate Mini-Map" width="128"> | ||
24 | <on_click function="MiniMap.Rotate" userdata="" /> | ||
25 | <on_check function="MiniMap.CheckRotate" userdata="" /> | ||
26 | </menu_item_check> | ||
22 | <menu_item_separator /> | 27 | <menu_item_separator /> |
23 | <menu_item_call bottom_delta="-18" enabled = "false" height="18" label="Show Map" | 28 | <menu_item_call bottom_delta="-18" enabled = "false" height="18" label="Show Map" |
24 | left="0" mouse_opaque="true" name="Show Map" width="128"> | 29 | left="0" mouse_opaque="true" name="Show Map" width="128"> |
diff --git a/linden/indra/newview/skins/default/xui/en-us/notify.xml b/linden/indra/newview/skins/default/xui/en-us/notify.xml index 99fe75a..01e2546 100644 --- a/linden/indra/newview/skins/default/xui/en-us/notify.xml +++ b/linden/indra/newview/skins/default/xui/en-us/notify.xml | |||
@@ -835,6 +835,11 @@ Use the controls on the right to find things | |||
835 | and display different backgrounds. | 835 | and display different backgrounds. |
836 | </message> | 836 | </message> |
837 | </notify> | 837 | </notify> |
838 | <notify name="FirstMiniMap" tip="false"> | ||
839 | <message name="message"> | ||
840 | Right-click the Mini-Map for more options. | ||
841 | </message> | ||
842 | </notify> | ||
838 | <notify name="FirstBuild" tip="false"> | 843 | <notify name="FirstBuild" tip="false"> |
839 | <message name="message"> | 844 | <message name="message"> |
840 | You can build new objects in some areas of [SECOND_LIFE]. | 845 | You can build new objects in some areas of [SECOND_LIFE]. |
diff --git a/linden/indra/newview/skins/default/xui/en-us/panel_avatar.xml b/linden/indra/newview/skins/default/xui/en-us/panel_avatar.xml index a3a4b1a..2ea8890 100644 --- a/linden/indra/newview/skins/default/xui/en-us/panel_avatar.xml +++ b/linden/indra/newview/skins/default/xui/en-us/panel_avatar.xml | |||
@@ -1,430 +1,414 @@ | |||
1 | <?xml version="1.0" encoding="utf-8" standalone="yes" ?> | 1 | <?xml version="1.0" encoding="utf-8" standalone="yes" ?> |
2 | <panel bottom="-550" height="486" left="350" name="Panel Avatar" width="430"> | 2 | <panel bottom="-575" height="511" left="350" name="Panel Avatar" width="430"> |
3 | <tab_container bottom="-486" height="486" left="0" mouse_opaque="false" name="tab" | 3 | <tab_container bottom="-511" height="511" left="0" mouse_opaque="false" name="tab" |
4 | tab_min_width="50" tab_position="top" width="419"> | 4 | tab_min_width="50" tab_position="top" width="419"> |
5 | <panel border="true" bottom="-482" follows="left|top|right|bottom" height="466" | 5 | <panel border="true" bottom="-507" follows="left|top|right|bottom" height="491" |
6 | label="2nd Life" left="1" mouse_opaque="true" name="2nd Life" width="418"> | 6 | label="2nd Life" left="1" mouse_opaque="true" name="2nd Life" width="418"> |
7 | <string name="CaptionTextAcctInfo"> | 7 | <string name="CaptionTextAcctInfo"> |
8 | [ACCTTYPE] | 8 | [ACCTTYPE] |
9 | [PAYMENTINFO] | 9 | [PAYMENTINFO] |
10 | [AGEVERIFICATION] | 10 | [AGEVERIFICATION] |
11 | </string> | 11 | </string> |
12 | <string name="AcctTypeResident"> | 12 | <string name="AcctTypeResident"> |
13 | Resident | 13 | Resident |
14 | </string> | 14 | </string> |
15 | <string name="AcctTypeTrial"> | 15 | <string name="AcctTypeTrial"> |
16 | Trial | 16 | Trial |
17 | </string> | 17 | </string> |
18 | <string name="AcctTypeCharterMember"> | 18 | <string name="AcctTypeCharterMember"> |
19 | Charter Member | 19 | Charter Member |
20 | </string> | 20 | </string> |
21 | <string name="AcctTypeEmployee"> | 21 | <string name="AcctTypeEmployee"> |
22 | Linden Lab Employee | 22 | Linden Lab Employee |
23 | </string> | 23 | </string> |
24 | <string name="PaymentInfoUsed"> | 24 | <string name="PaymentInfoUsed"> |
25 | Payment Info Used | 25 | Payment Info Used |
26 | </string> | 26 | </string> |
27 | <string name="PaymentInfoOnFile"> | 27 | <string name="PaymentInfoOnFile"> |
28 | Payment Info On File | 28 | Payment Info On File |
29 | </string> | 29 | </string> |
30 | <string name="NoPaymentInfoOnFile"> | 30 | <string name="NoPaymentInfoOnFile"> |
31 | No Payment Info On File | 31 | No Payment Info On File |
32 | </string> | 32 | </string> |
33 | <string name="AgeVerified"> | 33 | <string name="AgeVerified"> |
34 | Age-verified | 34 | Age-verified |
35 | </string> | 35 | </string> |
36 | <string name="NotAgeVerified"> | 36 | <string name="NotAgeVerified"> |
37 | Not Age-verified | 37 | Not Age-verified |
38 | </string> | 38 | </string> |
39 | <text bg_visible="false" border_drop_shadow_visible="false" border_visible="false" | 39 | <text bg_visible="false" border_drop_shadow_visible="false" border_visible="false" |
40 | bottom="-24" drop_shadow_visible="true" follows="left|top" | 40 | bottom="-23" drop_shadow_visible="true" follows="left|top" |
41 | font="SansSerifSmall" h_pad="0" halign="right" height="16" left="4" | 41 | font="SansSerifsmall" h_pad="0" halign="left" height="16" right="-15" |
42 | mouse_opaque="true" name="Name:" v_pad="0" width="70"> | 42 | mouse_opaque="true" name="online_yes" v_pad="0" width="130"> |
43 | Name: | 43 | Currently: Online |
44 | </text> | 44 | </text> |
45 | <name_editor bevel_style="in" border_style="line" | 45 | <text bg_visible="false" border_drop_shadow_visible="false" border_visible="false" |
46 | border_thickness="1" bottom="-24" enabled="false" follows="left|top" | 46 | bottom_delta="0" drop_shadow_visible="true" follows="left|top" |
47 | font="SansSerifSmall" height="16" is_unicode="false" left_delta="75" | 47 | font="SansSerifsmall" h_pad="0" halign="left" height="16" left_delta="0" |
48 | max_length="254" mouse_opaque="false" name="name" | 48 | mouse_opaque="true" name="online_no" v_pad="0" width="130"> |
49 | width="180" /> | 49 | Currently: Offline |
50 | <text bg_visible="false" border_drop_shadow_visible="false" border_visible="false" | 50 | </text> |
51 | bottom="-24" drop_shadow_visible="true" follows="left|top" | 51 | <button bottom_delta="-19" font="SansSerif" halign="center" height="20" |
52 | font="SansSerifsmall" h_pad="0" halign="left" height="16" left="279" | 52 | label="Instant Message..." label_selected="Instant Message..." |
53 | mouse_opaque="true" name="online_yes" v_pad="0" width="121"> | 53 | right="-15" mouse_opaque="true" name="Instant Message..." |
54 | Currently Online | 54 | tool_tip="Instant Message (IM)" width="130" /> |
55 | </text> | 55 | <button bottom_delta="-23" font="SansSerif" halign="center" height="20" |
56 | <text bg_visible="false" border_drop_shadow_visible="false" border_visible="false" | 56 | label="Offer Teleport..." label_selected="Offer Teleport..." |
57 | bottom_delta="-20" drop_shadow_visible="true" follows="left|top" | 57 | left_delta="0" mouse_opaque="true" name="Offer Teleport..." width="130" /> |
58 | font="SansSerifSmall" h_pad="0" halign="left" height="16" left="279" | 58 | <button bottom_delta="-34" font="SansSerif" halign="center" height="20" |
59 | mouse_opaque="true" name="label" v_pad="0" width="121"> | 59 | label="Add to Friends..." label_selected="Add to Friends..." left_delta="0" |
60 | Born: | 60 | mouse_opaque="true" name="Add Friend..." width="130" /> |
61 | </text> | 61 | <button bottom_delta="-23" font="SansSerif" halign="center" height="20" |
62 | <line_editor bevel_style="in" border_style="line" | 62 | label="Invite to Group..." label_selected="Invite to Group..." left_delta="0" |
63 | mouse_opaque="true" name="Invite to Group..." width="130" /> | ||
64 | <button bottom_delta="-23" font="SansSerif" halign="center" height="20" label="Find on Map" | ||
65 | label_selected="Find on Map" left_delta="0" mouse_opaque="true" | ||
66 | name="Find on Map" width="130" /> | ||
67 | <button bottom_delta="-34" font="SansSerif" halign="center" height="20" label="Pay..." | ||
68 | label_selected="Pay..." left_delta="0" mouse_opaque="true" name="Pay..." | ||
69 | width="130" /> | ||
70 | <button bottom_delta="-23" font="SansSerif" halign="center" height="20" label="Mute" | ||
71 | label_selected="Mute" left_delta="0" mouse_opaque="true" name="Mute" | ||
72 | width="130" /> | ||
73 | <text bg_visible="false" border_drop_shadow_visible="false" border_visible="false" | ||
74 | bottom_delta="-29" drop_shadow_visible="true" follows="left|top" | ||
75 | font="SansSerifSmall" h_pad="0" halign="left" height="16" right="-15" | ||
76 | mouse_opaque="true" name="label" v_pad="0" width="130"> | ||
77 | Born: | ||
78 | </text> | ||
79 | <line_editor bevel_style="in" border_style="line" | ||
63 | border_thickness="1" bottom_delta="-16" enabled="true" follows="left|top" | 80 | border_thickness="1" bottom_delta="-16" enabled="true" follows="left|top" |
64 | font="SansSerifSmall" height="16" is_unicode="false" left="279" | 81 | font="SansSerifSmall" height="18" is_unicode="false" right="-15" |
65 | max_length="254" mouse_opaque="false" name="born" | 82 | max_length="254" mouse_opaque="false" name="born" |
66 | width="121" /> | 83 | width="130" /> |
67 | <text bg_visible="false" border_drop_shadow_visible="false" border_visible="false" | 84 | <text bg_visible="false" border_drop_shadow_visible="false" border_visible="false" |
68 | bottom_delta="-20" drop_shadow_visible="true" follows="left|top" | 85 | bottom_delta="-24" drop_shadow_visible="true" follows="left|top" |
69 | font="SansSerifSmall" h_pad="0" halign="left" height="16" left="279" | 86 | font="SansSerifSmall" h_pad="0" halign="left" height="16" right="-15" |
70 | mouse_opaque="true" name="label2" v_pad="0" width="121"> | 87 | mouse_opaque="true" name="label2" v_pad="0" width="130"> |
71 | Account: | 88 | Account: |
72 | </text> | 89 | </text> |
73 | <view_border bevel_style="in" bottom_delta="-48" follows="left|top" height="48" left="279" | 90 | <view_border bevel_style="in" bottom_delta="-48" follows="left|top" height="50" right="-15" |
74 | mouse_opaque="false" name="acct_border" width="121" /> | 91 | mouse_opaque="false" name="acct_border" width="130" /> |
75 | <text bg_visible="false" border_drop_shadow_visible="false" | 92 | <text bg_visible="false" border_drop_shadow_visible="false" |
76 | border_visible="true" bottom_delta="0" drop_shadow_visible="true" | 93 | border_visible="true" bottom_delta="0" drop_shadow_visible="true" |
77 | follows="left|top" font="SansSerifSmall" height="48" left="279" | 94 | follows="left|top" font="SansSerifSmall" height="48" left="279" |
78 | mouse_opaque="false" name="acct" width="121" /> | 95 | mouse_opaque="false" name="acct" width="121" /> |
79 | <text bg_visible="false" border_drop_shadow_visible="false" border_visible="false" | 96 | <text bg_visible="false" border_drop_shadow_visible="false" border_visible="false" |
80 | bottom_delta="-20" drop_shadow_visible="true" follows="left|top" | 97 | bottom_delta="-24" drop_shadow_visible="true" follows="left|top" |
81 | font="SansSerifSmall" h_pad="0" halign="left" height="16" left="279" | 98 | font="SansSerifSmall" h_pad="0" halign="left" height="16" right="-15" |
82 | mouse_opaque="true" name="partner_label" | 99 | mouse_opaque="true" name="partner_label" |
83 | tool_tip="Second Life partner. For more info on how to set, see www.secondlife.com/partner" | 100 | tool_tip="Second Life partner. For more info on how to set, see www.secondlife.com/partner" |
84 | v_pad="0" width="130"> | 101 | v_pad="0" width="130"> |
85 | Partner: | 102 | Partner: |
86 | </text> | 103 | </text> |
87 | <button bottom_delta="2" follows="left|top" font="SansSerif" halign="center" | 104 | <button bottom_delta="1" follows="left|top" font="SansSerif" halign="center" |
88 | height="18" label="i" label_selected="i" left_delta="44" | 105 | height="18" label="i" label_selected="i" left_delta="44" |
89 | mouse_opaque="true" name="partner_info" | 106 | mouse_opaque="true" name="partner_info" |
90 | tool_tip="Click to open partner's profile" width="18" /> | 107 | tool_tip="Click to open partner's profile" width="20" /> |
91 | <button bottom_delta="0" follows="left|top" font="SansSerif" halign="center" | 108 | <button bottom_delta="0" follows="left|top" font="SansSerif" halign="center" |
92 | height="18" label="?" label_selected="?" left_delta="24" | 109 | height="18" label="?" label_selected="?" left_delta="24" |
93 | mouse_opaque="true" name="partner_help" width="18" /> | 110 | mouse_opaque="true" name="partner_help" width="20" /> |
94 | <line_editor bevel_style="in" border_style="line" | 111 | <line_editor bevel_style="in" border_style="line" |
95 | border_thickness="1" bottom_delta="-16" enabled="true" follows="left|top" | 112 | border_thickness="1" bottom_delta="-19" enabled="true" follows="left|top" |
96 | font="SansSerifSmall" height="16" is_unicode="false" left="279" | 113 | font="SansSerifSmall" height="18" is_unicode="false" right="-15" |
97 | max_length="254" mouse_opaque="false" name="partner_edit" | 114 | max_length="254" mouse_opaque="false" name="partner_edit" |
98 | tool_tip="Second Life partner. For more info on how to set, see www.secondlife.com/partner" | 115 | tool_tip="Second Life partner. For more info on how to set, see www.secondlife.com/partner" |
99 | width="121"> | 116 | width="130"> |
100 | [FIRST] [LAST] | 117 | [FIRST] [LAST] |
101 | </line_editor> | 118 | </line_editor> |
102 | <text bg_visible="false" border_drop_shadow_visible="false" border_visible="false" | 119 | <texture_picker allow_no_texture="true" bottom="289" can_apply_immediately="false" |
103 | bottom="-44" drop_shadow_visible="true" follows="left|top" | 120 | default_image_name="None" follows="left|top" height="192" label="" |
104 | font="SansSerifSmall" h_pad="0" halign="right" height="16" left="4" | 121 | left="20" mouse_opaque="true" name="img" scale_image="false" auto-resize="false" |
105 | mouse_opaque="true" name="Photo:" v_pad="0" width="70"> | 122 | tool_tip="Click to choose a picture" width="235" /> |
106 | Photo: | 123 | <text bg_visible="false" border_drop_shadow_visible="false" border_visible="false" |
107 | </text> | 124 | bottom_delta="-6" drop_shadow_visible="true" follows="left|top" |
108 | <texture_picker allow_no_texture="true" bottom="-179" can_apply_immediately="false" | 125 | font="SansSerifSmall" h_pad="0" halign="left" height="16" left_delta="0" |
109 | default_image_name="None" follows="left|top" height="151" label="" | 126 | mouse_opaque="true" name="About:" v_pad="0" width="170"> |
110 | left="79" mouse_opaque="true" name="img" | 127 | About (500 chars): |
111 | tool_tip="Click to choose a picture" width="180" /> | 128 | </text> |
112 | <text bg_visible="false" border_drop_shadow_visible="false" border_visible="false" | 129 | <text_editor bottom_delta="-155" embedded_items="false" |
113 | bottom="-183" drop_shadow_visible="true" follows="left|top" | 130 | enabled="true" follows="left|top" font="SansSerifSmall" height="155" |
114 | font="SansSerifSmall" h_pad="0" halign="right" height="16" left="4" | 131 | is_unicode="false" left_delta="0" max_length="511" mouse_opaque="true" |
115 | mouse_opaque="true" name="Groups:" v_pad="0" width="70"> | 132 | name="about" width="235" word_wrap="true" /> |
116 | Groups: | 133 | |
117 | </text> | 134 | <text bg_visible="false" border_drop_shadow_visible="false" border_visible="false" |
118 | <scroll_list background_visible="true" bottom="-258" column_padding="5" draw_border="true" | 135 | bottom_delta="-20" drop_shadow_visible="true" follows="left|top" |
119 | follows="left|top" height="90" left="79" mouse_opaque="false" | 136 | font="SansSerifSmall" halign="left" height="16" left="20" |
120 | multi_select="false" name="groups" width="321" /> | 137 | mouse_opaque="true" name="Groups:" width="70"> |
121 | <text bg_visible="false" border_drop_shadow_visible="false" border_visible="false" | 138 | Groups: |
122 | bottom="-280" drop_shadow_visible="true" follows="left|top" | 139 | </text> |
123 | font="SansSerifSmall" h_pad="0" halign="right" height="16" left="4" | 140 | <scroll_list background_visible="true" bottom_delta="-80" column_padding="5" draw_border="true" |
124 | mouse_opaque="true" name="About:" v_pad="0" width="70"> | 141 | follows="left|top" height="80" left_delta="0" mouse_opaque="false" |
125 | About: | 142 | multi_select="false" name="groups" width="235" /> |
126 | </text> | 143 | <view_border blevel_style="in" bottom_delta="0" follows="left|top" height="80" right="-15" |
127 | <text bg_visible="false" border_drop_shadow_visible="false" border_visible="false" | 144 | mouse_opaque="false" name="drop_target_rect_vis" width="130" /> |
128 | bottom_delta="-16" drop_shadow_visible="true" follows="left|top" | 145 | <view_border blevel_style="in" border_thickness="0" bottom_delta="0" follows="left|top" |
129 | font="SansSerifSmall" h_pad="0" halign="right" height="16" left="0" | 146 | height="80" left_delta="0" mouse_opaque="false" name="drop_target_rect" |
130 | mouse_opaque="true" name="(500 chars)" v_pad="0" width="70"> | 147 | width="130" /> |
131 | (500 chars) | 148 | <text bg_visible="false" border_drop_shadow_visible="false" border_visible="false" |
132 | </text> | 149 | bottom_delta="40" drop_shadow_visible="true" follows="left|top" |
133 | <text_editor bottom="-375" embedded_items="false" | 150 | font="SansSerifSmall" h_pad="0" halign="center" height="16" right="-22" |
134 | enabled="true" follows="left|top" font="SansSerifSmall" height="110" | ||
135 | is_unicode="false" left="79" max_length="511" mouse_opaque="true" | ||
136 | name="about" width="321" word_wrap="true" /> | ||
137 | <text bg_visible="false" border_drop_shadow_visible="false" border_visible="false" | ||
138 | bottom="-403" drop_shadow_visible="true" follows="left|top" | ||
139 | font="SansSerifSmall" h_pad="0" halign="right" height="16" left="0" | ||
140 | mouse_opaque="true" name="Give item:" v_pad="0" width="75"> | ||
141 | Give item: | ||
142 | </text> | ||
143 | <view_border blevel_style="in" border_thickness="0" bottom="-466" follows="left|top" | ||
144 | height="466" left_delta="4" mouse_opaque="false" name="drop_target_rect" | ||
145 | width="409" /> | ||
146 | <view_border blevel_style="in" bottom="-403" follows="left|top" height="16" left_delta="75" | ||
147 | mouse_opaque="false" name="drop_target_rect_vis" width="321" /> | ||
148 | <text bg_visible="false" border_drop_shadow_visible="false" border_visible="false" | ||
149 | bottom_delta="0" drop_shadow_visible="true" follows="left|top" | ||
150 | font="SansSerifSmall" h_pad="0" halign="center" height="16" left_delta="0" | ||
151 | mouse_opaque="true" name="Give inventory" | 151 | mouse_opaque="true" name="Give inventory" |
152 | tool_tip="Drop inventory items here to give them to this person." v_pad="2" | 152 | tool_tip="Drop inventory items here to give them to this resident." v_pad="2" |
153 | width="321"> | 153 | width="115"> |
154 | Drop inventory item here. | 154 | Drop inventory here |
155 | </text> | 155 | </text> |
156 | <check_box bottom_delta="-20" follows="left|top" font="SansSerifSmall" height="16" | 156 | <text bg_visible="false" border_drop_shadow_visible="false" border_visible="false" |
157 | initial_value="false" label="Show in search" left="75" mouse_opaque="true" | 157 | bottom_delta="-18" drop_shadow_visible="true" follows="left|top" |
158 | font="SansSerifSmall" h_pad="0" halign="center" height="16" left_delta="0" | ||
159 | mouse_opaque="true" name="Give inventory 2" width="115" | ||
160 | tool_tip="Drop inventory items here to give them to this resident."> | ||
161 | to give to resident | ||
162 | </text> | ||
163 | <name_editor bevel_style="in" border_style="line" | ||
164 | border_thickness="0" bottom="0" enabled="false" follows="left|top" | ||
165 | font="SansSerifSmall" height="0" is_unicode="false" left="1" | ||
166 | max_length="254" mouse_opaque="false" name="name" | ||
167 | width="0" /> | ||
168 | <check_box bottom="1" follows="left|top" font="SansSerifSmall" height="16" | ||
169 | initial_value="false" label="Show profile in search" left="18" mouse_opaque="true" | ||
158 | name="allow_publish" | 170 | name="allow_publish" |
159 | tool_tip="Publish extra profile information such as description and image in Search." | 171 | tool_tip="Publish extra profile information such as description and image in Search." |
160 | width="130" /> | 172 | width="130" /> |
161 | <button bottom="-425" follows="left|top" font="SansSerif" halign="center" height="20" | 173 | <button bottom_delta="0" follows="left|top" font="SansSerif" halign="center" height="18" |
162 | label="?" label_selected="?" left_delta="145" mouse_opaque="true" name="?" | 174 | label="?" label_selected="?" left_delta="150" mouse_opaque="true" name="?" |
163 | width="20" /> | 175 | width="20" /> |
164 | <button bottom="-428" font="SansSerif" halign="center" height="20" label="Find on Map" | 176 | </panel> |
165 | label_selected="Find on Map" left="24" mouse_opaque="true" | 177 | <panel border="true" bottom="-482" follows="left|top|right|bottom" height="466" |
166 | name="Find on Map" width="100" /> | 178 | label="Web" left="1" mouse_opaque="true" name="WebProfile" width="418"> |
167 | <button bottom="-428" font="SansSerif" halign="center" height="20" | 179 | <line_editor bevel_style="in" border_style="line" |
168 | label="Offer Teleport..." label_selected="Offer Teleport..." | ||
169 | left_delta="102" mouse_opaque="true" name="Offer Teleport..." width="140" /> | ||
170 | <button bottom="-428" font="SansSerif" halign="center" height="20" | ||
171 | label="Add Friend..." label_selected="Add Friend..." left_delta="142" | ||
172 | mouse_opaque="true" name="Add Friend..." width="130" /> | ||
173 | <button bottom_delta="-24" font="SansSerif" halign="center" height="20" label="Pay..." | ||
174 | label_selected="Pay..." left="24" mouse_opaque="true" name="Pay..." | ||
175 | width="100" /> | ||
176 | <button bottom_delta="0" font="SansSerif" halign="center" height="20" | ||
177 | label="Instant Message..." label_selected="Instant Message..." | ||
178 | left_delta="102" mouse_opaque="true" name="Instant Message..." | ||
179 | tool_tip="Instant Message (IM)" width="140" /> | ||
180 | <button bottom_delta="0" font="SansSerif" halign="center" height="20" label="Mute" | ||
181 | label_selected="Mute" left_delta="142" mouse_opaque="true" name="Mute" | ||
182 | width="130" /> | ||
183 | </panel> | ||
184 | <panel border="true" bottom="-482" follows="left|top|right|bottom" height="466" | ||
185 | label="Web" left="1" mouse_opaque="true" name="WebProfile" width="418"> | ||
186 | <line_editor bevel_style="in" border_style="line" | ||
187 | border_thickness="1" bottom_delta="-18" enabled="false" follows="left|top" | 180 | border_thickness="1" bottom_delta="-18" enabled="false" follows="left|top" |
188 | font="SansSerifSmall" height="16" is_unicode="false" left="10" | 181 | font="SansSerifSmall" height="16" is_unicode="false" left="10" |
189 | max_length="254" mouse_opaque="true" name="url_edit" | 182 | max_length="254" mouse_opaque="true" name="url_edit" |
190 | width="400" /> | 183 | width="400" /> |
191 | <flyout_button bottom_delta="-22" follows="left|top" font="SansSerifSmall" halign="center" | 184 | <flyout_button bottom_delta="-22" follows="left|top" font="SansSerifSmall" halign="center" |
192 | height="18" label="Load" label_selected="Load" left="10" | 185 | height="18" label="Load" label_selected="Load" left="10" |
193 | mouse_opaque="true" name="load" enabled="false" | 186 | mouse_opaque="true" name="load" enabled="false" |
194 | tool_tip="Load this profile page with embedded web browser." width="80" > | 187 | tool_tip="Load this profile page with embedded web browser." width="80" > |
195 | <flyout_button_item value="open" name="open_item">In external browser</flyout_button_item> | 188 | <flyout_button_item value="open" name="open_item">In external browser</flyout_button_item> |
196 | <flyout_button_item value="home" name="home_item">Home URL</flyout_button_item> | 189 | <flyout_button_item value="home" name="home_item">Home URL</flyout_button_item> |
197 | </flyout_button> | 190 | </flyout_button> |
198 | <button bottom_delta="0" follows="left|top" font="SansSerif" halign="center" | 191 | <button bottom_delta="0" follows="left|top" font="SansSerif" halign="center" |
199 | height="18" label="?" label_selected="?" left_delta="85" | 192 | height="18" label="?" label_selected="?" left_delta="85" |
200 | mouse_opaque="true" name="web_profile_help" width="18" /> | 193 | mouse_opaque="true" name="web_profile_help" width="18" /> |
201 | <check_box bottom_delta="0" follows="right|top" font="SansSerifSmall" height="16" | 194 | <check_box bottom_delta="0" follows="right|top" font="SansSerifSmall" height="16" |
202 | initial_value="false" label="Automatically load web profiles" | 195 | initial_value="false" label="Automatically load web profiles" |
203 | left_delta="30" mouse_opaque="true" name="auto_load" | 196 | left_delta="30" mouse_opaque="true" name="auto_load" |
204 | tool_tip="Automatically load ALL profile webpages without asking first." | 197 | tool_tip="Automatically load ALL profile webpages without asking first." |
205 | width="127" /> | 198 | width="127" /> |
206 | <web_browser border_visible="false" bottom="-444" follows="top|left|right" height="400" | 199 | <web_browser border_visible="false" bottom="-444" follows="top|left|right" height="400" |
207 | ignore_ui_scale="false" left="10" name="profile_html" start_url="" | 200 | ignore_ui_scale="false" left="10" name="profile_html" start_url="" |
208 | width="400" /> | 201 | width="400" /> |
209 | <text bottom="5" follows="bottom|left|right" left="15" name="status_text" right="-70" | 202 | <text bottom="5" follows="bottom|left|right" left="15" name="status_text" right="-70" |
210 | top="25" /> | 203 | top="25" /> |
211 | </panel> | 204 | </panel> |
212 | <panel border="true" bottom="-482" follows="left|top|right|bottom" height="466" | 205 | <panel border="true" bottom="-482" follows="left|top|right|bottom" height="466" |
213 | label="Interests" left="1" mouse_opaque="true" name="Interests" width="418"> | 206 | label="Interests" left="1" mouse_opaque="true" name="Interests" width="418"> |
214 | <text bg_visible="false" border_drop_shadow_visible="false" border_visible="false" | 207 | <text bg_visible="false" border_drop_shadow_visible="false" border_visible="false" |
215 | bottom="-36" drop_shadow_visible="true" follows="left|top" | 208 | bottom="-36" drop_shadow_visible="true" follows="left|top" |
216 | font="SansSerifSmall" h_pad="0" halign="right" height="16" left="4" | 209 | font="SansSerifSmall" h_pad="0" halign="right" height="16" left="4" |
217 | mouse_opaque="true" name="I Want To:" v_pad="0" width="70"> | 210 | mouse_opaque="true" name="I Want To:" v_pad="0" width="70"> |
218 | I Want To: | 211 | I Want To: |
219 | </text> | 212 | </text> |
220 | <check_box bottom_delta="0" follows="left|top" font="SansSerifSmall" height="16" | 213 | <check_box bottom_delta="0" follows="left|top" font="SansSerifSmall" height="16" |
221 | initial_value="false" label="Build" left_delta="70" mouse_opaque="true" | 214 | initial_value="false" label="Build" left_delta="70" mouse_opaque="true" |
222 | name="chk0" width="90" /> | 215 | name="chk0" width="90" /> |
223 | <check_box bottom_delta="0" follows="left|top" font="SansSerifSmall" height="16" | 216 | <check_box bottom_delta="0" follows="left|top" font="SansSerifSmall" height="16" |
224 | initial_value="false" label="Explore" left_delta="170" mouse_opaque="true" | 217 | initial_value="false" label="Explore" left_delta="170" mouse_opaque="true" |
225 | name="chk1" width="90" /> | 218 | name="chk1" width="90" /> |
226 | <check_box bottom_delta="-20" follows="left|top" font="SansSerifSmall" height="16" | 219 | <check_box bottom_delta="-20" follows="left|top" font="SansSerifSmall" height="16" |
227 | initial_value="false" label="Meet" left_delta="-170" mouse_opaque="true" | 220 | initial_value="false" label="Meet" left_delta="-170" mouse_opaque="true" |
228 | name="chk2" width="57" /> | 221 | name="chk2" width="57" /> |
229 | <check_box bottom_delta="0" follows="left|top" font="SansSerifSmall" height="16" | 222 | <check_box bottom_delta="0" follows="left|top" font="SansSerifSmall" height="16" |
230 | initial_value="false" label="Be Hired" left_delta="170" mouse_opaque="true" | 223 | initial_value="false" label="Be Hired" left_delta="170" mouse_opaque="true" |
231 | name="chk6" width="92" /> | 224 | name="chk6" width="92" /> |
232 | <check_box bottom_delta="-20" follows="left|top" font="SansSerifSmall" height="16" | 225 | <check_box bottom_delta="-20" follows="left|top" font="SansSerifSmall" height="16" |
233 | initial_value="false" label="Group" left_delta="-170" mouse_opaque="true" | 226 | initial_value="false" label="Group" left_delta="-170" mouse_opaque="true" |
234 | name="chk3" width="90" /> | 227 | name="chk3" width="90" /> |
235 | <check_box bottom_delta="0" follows="left|top" font="SansSerifSmall" height="16" | 228 | <check_box bottom_delta="0" follows="left|top" font="SansSerifSmall" height="16" |
236 | initial_value="false" label="Buy" left_delta="170" mouse_opaque="true" | 229 | initial_value="false" label="Buy" left_delta="170" mouse_opaque="true" |
237 | name="chk4" width="90" /> | 230 | name="chk4" width="90" /> |
238 | <check_box bottom_delta="-20" follows="left|top" font="SansSerifSmall" height="16" | 231 | <check_box bottom_delta="-20" follows="left|top" font="SansSerifSmall" height="16" |
239 | initial_value="false" label="Sell" left_delta="-170" mouse_opaque="true" | 232 | initial_value="false" label="Sell" left_delta="-170" mouse_opaque="true" |
240 | name="chk5" width="50" /> | 233 | name="chk5" width="50" /> |
241 | <check_box bottom_delta="0" follows="left|top" font="SansSerifSmall" height="16" | 234 | <check_box bottom_delta="0" follows="left|top" font="SansSerifSmall" height="16" |
242 | initial_value="false" label="Hire" left_delta="170" mouse_opaque="true" | 235 | initial_value="false" label="Hire" left_delta="170" mouse_opaque="true" |
243 | name="chk7" width="92" /> | 236 | name="chk7" width="92" /> |
244 | <line_editor bevel_style="in" border_style="line" | 237 | <line_editor bevel_style="in" border_style="line" |
245 | border_thickness="1" bottom_delta="-20" enabled="true" follows="left|top" | 238 | border_thickness="1" bottom_delta="-20" enabled="true" follows="left|top" |
246 | font="SansSerifSmall" height="16" is_unicode="false" left="74" | 239 | font="SansSerifSmall" height="16" is_unicode="false" left="74" |
247 | max_length="254" mouse_opaque="true" name="want_to_edit" | 240 | max_length="254" mouse_opaque="true" name="want_to_edit" |
248 | width="330" /> | 241 | width="330" /> |
249 | <text bg_visible="false" border_drop_shadow_visible="false" border_visible="false" | 242 | <text bg_visible="false" border_drop_shadow_visible="false" border_visible="false" |
250 | bottom_delta="-26" drop_shadow_visible="true" follows="left|top" | 243 | bottom_delta="-26" drop_shadow_visible="true" follows="left|top" |
251 | font="SansSerifSmall" h_pad="0" halign="right" height="16" left="4" | 244 | font="SansSerifSmall" h_pad="0" halign="right" height="16" left="4" |
252 | mouse_opaque="true" name="Skills:" v_pad="0" width="70"> | 245 | mouse_opaque="true" name="Skills:" v_pad="0" width="70"> |
253 | Skills: | 246 | Skills: |
254 | </text> | 247 | </text> |
255 | <check_box bottom_delta="0" follows="left|top" font="SansSerifSmall" height="16" | 248 | <check_box bottom_delta="0" follows="left|top" font="SansSerifSmall" height="16" |
256 | initial_value="false" label="Textures" left_delta="70" mouse_opaque="true" | 249 | initial_value="false" label="Textures" left_delta="70" mouse_opaque="true" |
257 | name="schk0" width="90" /> | 250 | name="schk0" width="90" /> |
258 | <check_box bottom_delta="0" follows="left|top" font="SansSerifSmall" height="16" | 251 | <check_box bottom_delta="0" follows="left|top" font="SansSerifSmall" height="16" |
259 | initial_value="false" label="Architecture" left_delta="170" | 252 | initial_value="false" label="Architecture" left_delta="170" |
260 | mouse_opaque="true" name="schk1" width="93" /> | 253 | mouse_opaque="true" name="schk1" width="93" /> |
261 | <check_box bottom_delta="-20" follows="left|top" font="SansSerifSmall" height="16" | 254 | <check_box bottom_delta="-20" follows="left|top" font="SansSerifSmall" height="16" |
262 | initial_value="false" label="Event Planning" left_delta="0" | 255 | initial_value="false" label="Event Planning" left_delta="0" |
263 | mouse_opaque="true" name="schk2" width="105" /> | 256 | mouse_opaque="true" name="schk2" width="105" /> |
264 | <check_box bottom_delta="0" follows="left|top" font="SansSerifSmall" height="16" | 257 | <check_box bottom_delta="0" follows="left|top" font="SansSerifSmall" height="16" |
265 | initial_value="false" label="Modeling" left_delta="-170" | 258 | initial_value="false" label="Modeling" left_delta="-170" |
266 | mouse_opaque="true" name="schk3" width="90" /> | 259 | mouse_opaque="true" name="schk3" width="90" /> |
267 | <check_box bottom_delta="-20" follows="left|top" font="SansSerifSmall" height="16" | 260 | <check_box bottom_delta="-20" follows="left|top" font="SansSerifSmall" height="16" |
268 | initial_value="false" label="Scripting" left_delta="0" mouse_opaque="true" | 261 | initial_value="false" label="Scripting" left_delta="0" mouse_opaque="true" |
269 | name="schk4" width="90" /> | 262 | name="schk4" width="90" /> |
270 | <check_box bottom_delta="0" follows="left|top" font="SansSerifSmall" height="16" | 263 | <check_box bottom_delta="0" follows="left|top" font="SansSerifSmall" height="16" |
271 | initial_value="false" label="Custom Characters" left_delta="170" | 264 | initial_value="false" label="Custom Characters" left_delta="170" |
272 | mouse_opaque="true" name="schk5" width="127" /> | 265 | mouse_opaque="true" name="schk5" width="127" /> |
273 | <line_editor bevel_style="in" border_style="line" | 266 | <line_editor bevel_style="in" border_style="line" |
274 | border_thickness="1" bottom_delta="-20" enabled="true" follows="left|top" | 267 | border_thickness="1" bottom_delta="-20" enabled="true" follows="left|top" |
275 | font="SansSerifSmall" height="16" is_unicode="false" left="74" | 268 | font="SansSerifSmall" height="16" is_unicode="false" left="74" |
276 | max_length="254" mouse_opaque="true" name="skills_edit" | 269 | max_length="254" mouse_opaque="true" name="skills_edit" |
277 | width="330" /> | 270 | width="330" /> |
278 | <text bg_visible="false" border_drop_shadow_visible="false" border_visible="false" | 271 | <text bg_visible="false" border_drop_shadow_visible="false" border_visible="false" |
279 | bottom_delta="-30" drop_shadow_visible="true" follows="left|top" | 272 | bottom_delta="-30" drop_shadow_visible="true" follows="left|top" |
280 | font="SansSerifSmall" h_pad="0" halign="right" height="16" left="4" | 273 | font="SansSerifSmall" h_pad="0" halign="right" height="16" left="4" |
281 | mouse_opaque="true" name="Languages:" v_pad="0" width="70"> | 274 | mouse_opaque="true" name="Languages:" v_pad="0" width="70"> |
282 | Languages: | 275 | Languages: |
283 | </text> | 276 | </text> |
284 | <line_editor bevel_style="in" border_style="line" | 277 | <line_editor bevel_style="in" border_style="line" |
285 | border_thickness="1" bottom_delta="0" enabled="true" follows="left|top" | 278 | border_thickness="1" bottom_delta="0" enabled="true" follows="left|top" |
286 | font="SansSerifSmall" height="16" is_unicode="false" left="74" | 279 | font="SansSerifSmall" height="16" is_unicode="false" left="74" |
287 | max_length="254" mouse_opaque="true" name="languages_edit" | 280 | max_length="254" mouse_opaque="true" name="languages_edit" |
288 | width="330" /> | 281 | width="330" /> |
289 | </panel> | 282 | </panel> |
290 | <panel border="true" bottom="-482" follows="left|top|right|bottom" height="466" | 283 | <panel border="true" bottom="-482" follows="left|top|right|bottom" height="466" |
291 | label="Picks" left="1" mouse_opaque="true" name="Picks" width="418"> | 284 | label="Picks" left="1" mouse_opaque="true" name="Picks" width="418"> |
292 | <text bg_visible="false" border_drop_shadow_visible="false" border_visible="false" | 285 | <text bg_visible="false" border_drop_shadow_visible="false" border_visible="false" |
293 | bottom="-20" drop_shadow_visible="true" follows="left|top" | 286 | bottom="-20" drop_shadow_visible="true" follows="left|top" |
294 | font="SansSerifSmall" h_pad="0" halign="left" height="16" left="114" | 287 | font="SansSerifSmall" h_pad="0" halign="left" height="16" left="114" |
295 | mouse_opaque="true" | 288 | mouse_opaque="true" |
296 | name="Tell everyone about your favorite places in Second Life." v_pad="0" | 289 | name="Tell everyone about your favorite places in Second Life." v_pad="0" |
297 | width="302"> | 290 | width="302"> |
298 | Tell everyone about your favorite places in Second Life. | 291 | Tell everyone about your favorite places in Second Life. |
299 | </text> | 292 | </text> |
300 | <button bottom_delta="-24" follows="left|top" font="SansSerif" halign="center" | 293 | <button bottom_delta="-24" follows="left|top" font="SansSerif" halign="center" |
301 | height="20" label="New..." label_selected="New..." left="114" | 294 | height="20" label="New..." label_selected="New..." left="114" |
302 | mouse_opaque="true" name="New..." width="75" /> | 295 | mouse_opaque="true" name="New..." width="75" /> |
303 | <button bottom="-44" follows="left|top" font="SansSerif" halign="center" height="20" | 296 | <button bottom="-44" follows="left|top" font="SansSerif" halign="center" height="20" |
304 | label="Delete..." label_selected="Delete..." left_delta="79" | 297 | label="Delete..." label_selected="Delete..." left_delta="79" |
305 | mouse_opaque="true" name="Delete..." width="75" /> | 298 | mouse_opaque="true" name="Delete..." width="75" /> |
306 | <tab_container bottom="-411" follows="left|top" height="363" left="4" mouse_opaque="false" | 299 | <tab_container bottom="-411" follows="left|top" height="363" left="4" mouse_opaque="false" |
307 | name="picks tab" tab_position="left" width="412" /> | 300 | name="picks tab" tab_position="left" width="412" /> |
308 | <text bg_visible="false" border_drop_shadow_visible="false" border_visible="false" | 301 | <text bg_visible="false" border_drop_shadow_visible="false" border_visible="false" |
309 | bottom="-70" drop_shadow_visible="true" follows="left|top" font="SansSerif" | 302 | bottom="-70" drop_shadow_visible="true" follows="left|top" font="SansSerif" |
310 | h_pad="0" halign="left" height="20" left="114" mouse_opaque="false" | 303 | h_pad="0" halign="left" height="20" left="114" mouse_opaque="false" |
311 | name="loading_text" v_pad="0" width="302"> | 304 | name="loading_text" v_pad="0" width="302"> |
312 | Loading... | 305 | Loading... |
313 | </text> | 306 | </text> |
314 | </panel> | 307 | </panel> |
315 | <panel border="true" bottom="-482" follows="left|top|right|bottom" height="466" | 308 | <panel border="true" bottom="-482" follows="left|top|right|bottom" height="466" |
316 | label="Classified" left="1" mouse_opaque="true" name="Classified" | 309 | label="Classified" left="1" mouse_opaque="true" name="Classified" |
317 | width="418"> | 310 | width="418"> |
318 | <text bg_visible="false" border_drop_shadow_visible="false" border_visible="false" | 311 | <text bg_visible="false" border_drop_shadow_visible="false" border_visible="false" |
319 | bottom="-20" drop_shadow_visible="true" follows="left|top" | 312 | bottom="-20" drop_shadow_visible="true" follows="left|top" |
320 | font="SansSerifSmall" h_pad="0" halign="left" height="16" left="114" | 313 | font="SansSerifSmall" h_pad="0" halign="left" height="16" left="114" |
321 | mouse_opaque="true" | 314 | mouse_opaque="true" |
322 | name="Place an ad in Second Life's classified listings." v_pad="0" | 315 | name="Place an ad in Second Life's classified listings." v_pad="0" |
323 | width="302"> | 316 | width="302"> |
324 | Place an ad in Second Life's classified listings. | 317 | Place an ad in Second Life's classified listings. |
325 | </text> | 318 | </text> |
326 | <button bottom_delta="-24" follows="left|top" font="SansSerif" halign="center" | 319 | <button bottom_delta="-24" follows="left|top" font="SansSerif" halign="center" |
327 | height="20" label="New..." label_selected="New..." left="114" | 320 | height="20" label="New..." label_selected="New..." left="114" |
328 | mouse_opaque="true" name="New..." width="75" /> | 321 | mouse_opaque="true" name="New..." width="75" /> |
329 | <button bottom="-44" follows="left|top" font="SansSerif" halign="center" height="20" | 322 | <button bottom="-44" follows="left|top" font="SansSerif" halign="center" height="20" |
330 | label="Delete..." label_selected="Delete..." left_delta="79" | 323 | label="Delete..." label_selected="Delete..." left_delta="79" |
331 | mouse_opaque="true" name="Delete..." width="75" /> | 324 | mouse_opaque="true" name="Delete..." width="75" /> |
332 | <tab_container bottom="-443" follows="left|top" height="395" left="4" mouse_opaque="false" | 325 | <tab_container bottom="-443" follows="left|top" height="395" left="4" mouse_opaque="false" |
333 | name="classified tab" tab_position="left" width="412" /> | 326 | name="classified tab" tab_position="left" width="412" /> |
334 | <text bg_visible="false" border_drop_shadow_visible="false" border_visible="false" | 327 | <text bg_visible="false" border_drop_shadow_visible="false" border_visible="false" |
335 | bottom="-70" drop_shadow_visible="true" follows="left|top" font="SansSerif" | 328 | bottom="-70" drop_shadow_visible="true" follows="left|top" font="SansSerif" |
336 | h_pad="0" halign="left" height="20" left="114" mouse_opaque="false" | 329 | h_pad="0" halign="left" height="20" left="114" mouse_opaque="false" |
337 | name="loading_text" v_pad="0" width="302"> | 330 | name="loading_text" v_pad="0" width="302"> |
338 | Loading... | 331 | Loading... |
339 | </text> | 332 | </text> |
340 | </panel> | 333 | </panel> |
341 | <panel border="true" bottom="-482" follows="left|top|right|bottom" height="466" | 334 | <panel border="true" bottom="-482" follows="left|top|right|bottom" height="466" |
342 | label="1st Life" left="1" mouse_opaque="true" name="1st Life" width="418"> | 335 | label="1st Life" left="1" mouse_opaque="true" name="1st Life" width="418"> |
343 | <text bg_visible="false" border_drop_shadow_visible="false" border_visible="false" | 336 | <texture_picker allow_no_texture="true" bottom="220" can_apply_immediately="false" |
344 | bottom="-36" drop_shadow_visible="true" follows="left|top" | 337 | default_image_name="None" follows="left|top" height="235" label="" |
345 | font="SansSerifSmall" h_pad="0" halign="right" height="16" left="4" | 338 | left="20" mouse_opaque="true" name="img" |
346 | mouse_opaque="true" name="Photo:" v_pad="0" width="61"> | 339 | tool_tip="Click to choose a picture" width="235" /> |
347 | Photo: | 340 | <text bg_visible="false" border_drop_shadow_visible="false" border_visible="false" |
348 | </text> | 341 | bottom_delta="-8" drop_shadow_visible="true" follows="left|top" |
349 | <texture_picker allow_no_texture="true" bottom="-171" can_apply_immediately="false" | 342 | font="SansSerifSmall" h_pad="0" halign="left" height="16" left="20" |
350 | default_image_name="None" follows="left|top" height="151" label="" | 343 | mouse_opaque="true" name="Info:" v_pad="0" width="161"> |
351 | left="70" mouse_opaque="true" name="img" | 344 | Info (250 chars): |
352 | tool_tip="Click to choose a picture" width="135" /> | 345 | </text> |
353 | <text bg_visible="false" border_drop_shadow_visible="false" border_visible="false" | 346 | <text_editor bottom_delta="-179" embedded_items="false" |
354 | bottom="-203" drop_shadow_visible="true" follows="left|top" | 347 | enabled="true" follows="left|top" font="SansSerifSmall" height="178" |
355 | font="SansSerifSmall" h_pad="0" halign="right" height="16" left="4" | 348 | is_unicode="false" left="20" max_length="254" mouse_opaque="false" |
356 | mouse_opaque="true" name="Info:" v_pad="0" width="61"> | 349 | name="about" width="378" word_wrap="true" /> |
357 | Info: | 350 | </panel> |
358 | </text> | 351 | <panel border="true" bottom="-482" follows="left|top|right|bottom" height="466" |
359 | <text bg_visible="false" border_drop_shadow_visible="false" border_visible="false" | ||
360 | bottom_delta="-16" drop_shadow_visible="true" follows="left|top" | ||
361 | font="SansSerifSmall" h_pad="0" halign="right" height="16" left="0" | ||
362 | mouse_opaque="true" name="(250 chars)" v_pad="0" width="65"> | ||
363 | (250 chars) | ||
364 | </text> | ||
365 | <text_editor bottom="-347" embedded_items="false" | ||
366 | enabled="true" follows="left|top" font="SansSerifSmall" height="160" | ||
367 | is_unicode="false" left="70" max_length="254" mouse_opaque="false" | ||
368 | name="about" width="330" word_wrap="true" /> | ||
369 | </panel> | ||
370 | <panel border="true" bottom="-482" follows="left|top|right|bottom" height="466" | ||
371 | label="My Notes" left="1" mouse_opaque="true" name="My Notes" width="418"> | 352 | label="My Notes" left="1" mouse_opaque="true" name="My Notes" width="418"> |
372 | <string name="Loading"> | 353 | <string name="Loading"> |
373 | Loading... | 354 | Loading... |
374 | </string> | 355 | </string> |
375 | <text bg_visible="false" border_drop_shadow_visible="false" border_visible="false" | 356 | <text bg_visible="false" border_drop_shadow_visible="false" border_visible="false" |
376 | bottom="-52" drop_shadow_visible="true" follows="left|top" | 357 | bottom="-52" drop_shadow_visible="true" follows="left|top" |
377 | font="SansSerifSmall" h_pad="0" halign="left" height="48" left="10" | 358 | font="SansSerifSmall" h_pad="0" halign="left" height="48" left="10" |
378 | mouse_opaque="true" name="label" v_pad="0" width="412"> | 359 | mouse_opaque="true" name="label" v_pad="0" width="412"> |
379 | Use this space to record your notes about this person. Keep track | 360 | Use this space to record your notes about this person. Keep track |
380 | of trades in progress, joint projects, etc. Only you can see these | 361 | of trades in progress, joint projects, etc. Only you can see these |
381 | notes. This person cannot see them, nor can other people. | 362 | notes. This person cannot see them, nor can other people. |
382 | </text> | 363 | </text> |
383 | <text_editor bottom_delta="-260" embedded_items="false" enabled="true" follows="left|top" | 364 | <text_editor bottom_delta="-260" embedded_items="false" enabled="true" follows="left|top" |
384 | font="SansSerif" height="256" is_unicode="false" left="10" | 365 | font="SansSerif" height="256" is_unicode="false" left="10" |
385 | max_length="1023" mouse_opaque="true" name="notes edit" width="400" | 366 | max_length="1023" mouse_opaque="true" name="notes edit" width="400" |
386 | word_wrap="false" /> | 367 | word_wrap="false" /> |
387 | </panel> | 368 | </panel> |
388 | </tab_container> | 369 | </tab_container> |
389 | <button bottom="-483" font="SansSerif" halign="center" height="20" label="OK" | 370 | <button bottom="-508" font="SansSerif" halign="center" height="20" label="OK" |
390 | label_selected="OK" left="208" mouse_opaque="true" name="OK" width="100" /> | 371 | label_selected="OK" left="208" mouse_opaque="true" name="OK" width="100" /> |
391 | <button bottom_delta="0" font="SansSerif" halign="center" height="20" label="Cancel" | 372 | <button bottom="-508" font="SansSerif" halign="center" height="20" label="Cancel" |
392 | label_selected="Cancel" left_delta="105" mouse_opaque="true" name="Cancel" | 373 | label_selected="Cancel" left_delta="105" mouse_opaque="true" name="Cancel" |
393 | width="100" /> | 374 | width="100" /> |
394 | <button bottom_delta="132" font="SansSerif" halign="center" height="20" label="Kick" | 375 | <button bottom_delta="0" font="SansSerif" halign="center" height="20" label="Kick" |
395 | label_selected="Kick" left="4" mouse_opaque="true" name="Kick" width="72" /> | 376 | label_selected="Kick" left="4" mouse_opaque="true" name="Kick" width="72" /> |
396 | <button bottom_delta="-24" font="SansSerif" halign="center" height="20" label="Freeze" | 377 | <button bottom_delta="0" font="SansSerif" halign="center" height="20" label="Freeze" |
397 | label_selected="Freeze" left="4" mouse_opaque="true" name="Freeze" | 378 | label_selected="Freeze" left_delta="76" mouse_opaque="true" name="Freeze" |
398 | tool_tip="Stop this resident's movement and chat." width="72" /> | 379 | tool_tip="Stop this resident's movement and chat." width="72" /> |
399 | <button bottom_delta="-24" font="SansSerif" halign="center" height="20" | 380 | <button bottom_delta="0" font="SansSerif" halign="center" height="20" |
400 | label="Unfreeze" label_selected="Unfreeze" left="4" mouse_opaque="true" | 381 | label="Unfreeze" label_selected="Unfreeze" left_delta="76" mouse_opaque="true" |
401 | name="Unfreeze" tool_tip="Thaw resident" width="72" /> | 382 | name="Unfreeze" tool_tip="Thaw resident" width="72" /> |
402 | <button bottom_delta="-24" font="SansSerif" halign="center" height="20" label="CSR" | 383 | <button bottom_delta="0" font="SansSerif" halign="center" height="20" label="CSR" |
403 | label_selected="CSR" left="4" mouse_opaque="true" name="csr_btn" | 384 | label_selected="CSR" left_delta="76" mouse_opaque="true" name="csr_btn" |
404 | tool_tip="Open customer service tool for this resident" width="72" /> | 385 | tool_tip="Open customer service tool for this resident" width="72" /> |
405 | <string name="ShowOnMapNonFriend"> | 386 | <string name="ShowOnMapNonFriend"> |
406 | Show location on the map. | 387 | Show location on the map. |
407 | Disabled because you have not | 388 | Disabled because you have not |
408 | formed a friendship with them. | 389 | formed a friendship with them. |
409 | </string> | 390 | </string> |
410 | <string name="ShowOnMapFriendOffline"> | 391 | <string name="ShowOnMapFriendOffline"> |
411 | Show location on the map. | 392 | Show location on the map. |
412 | Disabled because they are not online. | 393 | Disabled because they are not online. |
413 | </string> | 394 | </string> |
414 | <string name="ShowOnMapFriendOnline"> | 395 | <string name="ShowOnMapFriendOnline"> |
415 | Show location on the map. | 396 | Show location on the map. |
416 | </string> | 397 | </string> |
417 | <string name="TeleportGod"> | 398 | <string name="TeleportGod"> |
418 | Force a teleport to your location. | 399 | Force a teleport to your location. |
419 | </string> | 400 | </string> |
420 | <string name="TeleportPrelude"> | 401 | <string name="TeleportPrelude"> |
421 | Offer a teleport to your location. | 402 | Offer a teleport to your location. |
422 | Disabled until you leave Orientation Island. | 403 | Disabled until you leave Orientation Island. |
423 | </string> | 404 | </string> |
424 | <string name="TeleportNormal"> | 405 | <string name="TeleportNormal"> |
425 | Offer a teleport to your location. | 406 | Offer a teleport to your location. |
426 | </string> | 407 | </string> |
427 | <string name="Loading"> | 408 | <string name="Loading"> |
428 | Loading... | 409 | Loading... |
429 | </string> | 410 | </string> |
411 | <string name="HiddenLabel"> | ||
412 | (hidden) | ||
413 | </string> | ||
430 | </panel> | 414 | </panel> |
diff --git a/linden/indra/newview/skins/default/xui/en-us/panel_mini_map.xml b/linden/indra/newview/skins/default/xui/en-us/panel_mini_map.xml index 1a93341..19faa62 100644 --- a/linden/indra/newview/skins/default/xui/en-us/panel_mini_map.xml +++ b/linden/indra/newview/skins/default/xui/en-us/panel_mini_map.xml | |||
@@ -1,6 +1,6 @@ | |||
1 | <?xml version="1.0" encoding="utf-8" standalone="yes" ?> | 1 | <?xml version="1.0" encoding="utf-8" standalone="yes" ?> |
2 | <panel background_opaque="false" background_visible="true" bg_alpha_color="NetMapBackgroundColor" | 2 | <panel background_opaque="false" background_visible="true" bg_alpha_color="NetMapBackgroundColor" |
3 | border="false" follows="left|top|right|bottom" height="216" label="Mini Map" | 3 | border="false" follows="left|top|right|bottom" height="716" label="Mini Map" |
4 | mouse_opaque="false" name="mini_mapview" width="196"> | 4 | mouse_opaque="false" name="mini_mapview" width="196"> |
5 | <text bg_visible="false" border_drop_shadow_visible="false" border_visible="false" | 5 | <text bg_visible="false" border_drop_shadow_visible="false" border_visible="false" |
6 | bottom="-40" drop_shadow_visible="false" font="SansSerifSmall" h_pad="0" | 6 | bottom="-40" drop_shadow_visible="false" font="SansSerifSmall" h_pad="0" |
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 e785909..8ad4fff 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 | |||
@@ -45,16 +45,21 @@ | |||
45 | use_bounding_rect="true" width="395" /> | 45 | use_bounding_rect="true" width="395" /> |
46 | </layout_stack> | 46 | </layout_stack> |
47 | </layout_panel> | 47 | </layout_panel> |
48 | <layout_panel auto_resize="false" bottom="0" left="0" min_width="220" mouse_opaque="false" | 48 | <layout_panel auto_resize="false" bottom="0" left="0" min_width="184" mouse_opaque="false" |
49 | name="windlight_remote_container" use_bounding_rect="true" user_resize="false" | ||
50 | width="186"> | ||
51 | <panel background_visible="false" border="false" bottom="0" name="windlight_remote" /> | ||
52 | </layout_panel> | ||
53 | <layout_panel auto_resize="false" bottom="0" left="0" min_width="220" mouse_opaque="false" | ||
49 | name="media_remote_container" use_bounding_rect="true" user_resize="false" | 54 | name="media_remote_container" use_bounding_rect="true" user_resize="false" |
50 | width="220"> | 55 | width="220"> |
51 | <panel background_visible="false" border="false" bottom="0" name="media_remote" /> | 56 | <panel background_visible="false" border="false" bottom="0" name="media_remote" /> |
52 | </layout_panel> | 57 | </layout_panel> |
53 | <layout_panel auto_resize="false" bottom="0" left="0" min_width="130" mouse_opaque="false" | 58 | <layout_panel auto_resize="false" bottom="0" left="0" min_width="130" mouse_opaque="false" |
54 | name="voice_remote_container" use_bounding_rect="true" user_resize="false" | 59 | name="voice_remote_container" use_bounding_rect="true" user_resize="false" |
55 | width="128"> | 60 | width="128"> |
56 | <panel background_visible="false" border="false" bottom="0" name="voice_remote" /> | 61 | <panel background_visible="false" border="false" bottom="0" name="voice_remote" /> |
57 | </layout_panel> | 62 | </layout_panel> |
58 | </layout_stack> | 63 | </layout_stack> |
59 | <string name="unread_count_string_plural"> | 64 | <string name="unread_count_string_plural"> |
60 | New IMs | 65 | New IMs |
diff --git a/linden/indra/newview/skins/default/xui/en-us/panel_preferences_audio.xml b/linden/indra/newview/skins/default/xui/en-us/panel_preferences_audio.xml index 92978ab..c960d36 100644 --- a/linden/indra/newview/skins/default/xui/en-us/panel_preferences_audio.xml +++ b/linden/indra/newview/skins/default/xui/en-us/panel_preferences_audio.xml | |||
@@ -15,7 +15,7 @@ | |||
15 | Streaming Preferences: | 15 | Streaming Preferences: |
16 | </text> | 16 | </text> |
17 | <text type="string" length="1" bg_visible="false" border_drop_shadow_visible="false" border_visible="false" | 17 | <text type="string" length="1" bg_visible="false" border_drop_shadow_visible="false" border_visible="false" |
18 | bottom="-280" drop_shadow_visible="true" enabled="true" follows="left|top" | 18 | bottom="-300" drop_shadow_visible="true" enabled="true" follows="left|top" |
19 | font="SansSerifSmall" h_pad="0" halign="left" height="12" left="10" | 19 | font="SansSerifSmall" h_pad="0" halign="left" height="12" left="10" |
20 | mouse_opaque="true" name="audio_prefs_text" v_pad="0" width="128"> | 20 | mouse_opaque="true" name="audio_prefs_text" v_pad="0" width="128"> |
21 | Audio Preferences: | 21 | Audio Preferences: |
@@ -28,6 +28,10 @@ | |||
28 | label="Play Streaming Music When Available (uses more bandwidth)" | 28 | label="Play Streaming Music When Available (uses more bandwidth)" |
29 | left="142" mouse_opaque="true" name="streaming_music" radio_style="false" | 29 | left="142" mouse_opaque="true" name="streaming_music" radio_style="false" |
30 | width="339" /> | 30 | width="339" /> |
31 | <check_box bottom_delta="-20" control_name="ShowStreamTitle" enabled="true" | ||
32 | follows="left|top" font="SansSerifSmall" height="16" initial_value="true" | ||
33 | label="Show stream info in chat" left="162" mouse_opaque="true" | ||
34 | name="show_stream_title" radio_style="false" width="338" /> | ||
31 | <check_box bottom_delta="-20" control_name="AudioStreamingVideo" enabled="true" | 35 | <check_box bottom_delta="-20" control_name="AudioStreamingVideo" enabled="true" |
32 | follows="left|top" font="SansSerifSmall" height="16" initial_value="true" | 36 | follows="left|top" font="SansSerifSmall" height="16" initial_value="true" |
33 | label="Play Streaming Media When Available (uses more bandwidth)" | 37 | label="Play Streaming Media When Available (uses more bandwidth)" |
diff --git a/linden/indra/newview/skins/default/xui/en-us/panel_preferences_general.xml b/linden/indra/newview/skins/default/xui/en-us/panel_preferences_general.xml index ea04dfc..e8a2625 100644 --- a/linden/indra/newview/skins/default/xui/en-us/panel_preferences_general.xml +++ b/linden/indra/newview/skins/default/xui/en-us/panel_preferences_general.xml | |||
@@ -73,10 +73,6 @@ | |||
73 | follows="left|top" height="16" increment="1" initial_val="300" | 73 | follows="left|top" height="16" increment="1" initial_val="300" |
74 | label="Away Timeout:" label_width="141" left="10" max_val="600" | 74 | label="Away Timeout:" label_width="141" left="10" max_val="600" |
75 | min_val="30" mouse_opaque="true" name="afk_timeout_spinner" width="202" /> | 75 | min_val="30" mouse_opaque="true" name="afk_timeout_spinner" width="202" /> |
76 | <check_box bottom="-286" enabled="true" follows="left|top" | ||
77 | font="SansSerifSmall" height="16" initial_value="false" | ||
78 | label="Rotate Mini-Map" left="151" mouse_opaque="true" | ||
79 | name="rotate_mini_map_checkbox" radio_style="false" width="256" /> | ||
80 | <check_box bottom="-304" enabled="true" | 76 | <check_box bottom="-304" enabled="true" |
81 | follows="left|top" font="SansSerifSmall" height="16" initial_value="false" | 77 | follows="left|top" font="SansSerifSmall" height="16" initial_value="false" |
82 | label="Notify when Linden dollars (L$) spent or received" left="151" | 78 | label="Notify when Linden dollars (L$) spent or received" left="151" |
diff --git a/linden/indra/newview/skins/default/xui/en-us/panel_preferences_graphics1.xml b/linden/indra/newview/skins/default/xui/en-us/panel_preferences_graphics1.xml index 527309e..d5d43b1 100644 --- a/linden/indra/newview/skins/default/xui/en-us/panel_preferences_graphics1.xml +++ b/linden/indra/newview/skins/default/xui/en-us/panel_preferences_graphics1.xml | |||
@@ -8,6 +8,10 @@ | |||
8 | height="16" initial_value="false" | 8 | height="16" initial_value="false" |
9 | label="Run Second Life in a window" left="10" mouse_opaque="true" | 9 | label="Run Second Life in a window" left="10" mouse_opaque="true" |
10 | name="windowed mode" radio_style="false" width="100" /> | 10 | name="windowed mode" radio_style="false" width="100" /> |
11 | <check_box bottom_delta="0" enabled="true" follows="left|top" | ||
12 | font="SansSerifSmall" height="16" initial_value="false" | ||
13 | label="Show environment control in toolbar" left="248" mouse_opaque="true" | ||
14 | name="toggle_windlight_control" radio_style="false" width="237" /> | ||
11 | <text_editor type="string" length="1" allow_html="false" bg_readonly_color="0 0 0 0" bottom="-43" | 15 | <text_editor type="string" length="1" allow_html="false" bg_readonly_color="0 0 0 0" bottom="-43" |
12 | embedded_items="false" enabled="false" follows="left|top" | 16 | embedded_items="false" enabled="false" follows="left|top" |
13 | font="SansSerifSmall" height="20" hide_border="true" | 17 | font="SansSerifSmall" height="20" hide_border="true" |
diff --git a/linden/indra/newview/skins/default/xui/en-us/panel_preferences_network.xml b/linden/indra/newview/skins/default/xui/en-us/panel_preferences_network.xml index 48da432..d4ec307 100644 --- a/linden/indra/newview/skins/default/xui/en-us/panel_preferences_network.xml +++ b/linden/indra/newview/skins/default/xui/en-us/panel_preferences_network.xml | |||
@@ -10,8 +10,8 @@ | |||
10 | </text> | 10 | </text> |
11 | <slider bottom_delta="-25" can_edit_text="true" | 11 | <slider bottom_delta="-25" can_edit_text="true" |
12 | decimal_digits="0" enabled="true" follows="left|top" height="15" | 12 | decimal_digits="0" enabled="true" follows="left|top" height="15" |
13 | increment="10" initial_val="50" left_delta="0" max_val="1500" min_val="50" | 13 | increment="10" initial_val="1000" left_delta="0" max_val="5000" min_val="50" |
14 | mouse_opaque="true" name="max_bandwidth" show_text="true" value="500" | 14 | mouse_opaque="true" name="max_bandwidth" show_text="true" value="1000" |
15 | width="180" /> | 15 | width="180" /> |
16 | <text type="string" length="1" bg_visible="false" border_drop_shadow_visible="false" border_visible="false" | 16 | <text type="string" length="1" bg_visible="false" border_drop_shadow_visible="false" border_visible="false" |
17 | bottom_delta="4" drop_shadow_visible="true" enabled="true" | 17 | bottom_delta="4" drop_shadow_visible="true" enabled="true" |
diff --git a/linden/indra/newview/skins/default/xui/en-us/panel_windlight_controls.xml b/linden/indra/newview/skins/default/xui/en-us/panel_windlight_controls.xml new file mode 100644 index 0000000..b9c6fc3 --- /dev/null +++ b/linden/indra/newview/skins/default/xui/en-us/panel_windlight_controls.xml | |||
@@ -0,0 +1,14 @@ | |||
1 | <?xml version="1.0" encoding="utf-8" standalone="yes" ?> | ||
2 | <panel bg_visible="false" border="false" border_visible="false" bottom="1" | ||
3 | enabled="true" follows="right|bottom" height="20" left="0" | ||
4 | name="windlight_controls" width="182"> | ||
5 | <button bottom="-21" follows="left|bottom" font="SansSerif" halign="center" height="20" | ||
6 | label="Editor" left="4" name="Environment" | ||
7 | tool_tip="Click here to adjust world environment" width="80" /> | ||
8 | <flyout_button bottom="-21" follows="left|bottom" height="20" label="Sky" left_delta="82" width="71" | ||
9 | list_position="above" mouse_opaque="true" name="Presets" tool_tip="Windlight presets"> | ||
10 | </flyout_button> | ||
11 | <button bottom="-22" follows="left|bottom" font="SansSerif" halign="center" height="22" toggle="true" | ||
12 | label="" left_delta="72" name="Popup" scale_image="true" control_name="ShowWindlightSettingsPopup" | ||
13 | tool_tip="Click here to adjust draw distance" width="22" /> | ||
14 | </panel> | ||
diff --git a/linden/indra/newview/skins/default/xui/en-us/panel_windlight_remote.xml b/linden/indra/newview/skins/default/xui/en-us/panel_windlight_remote.xml new file mode 100644 index 0000000..ead9ad7 --- /dev/null +++ b/linden/indra/newview/skins/default/xui/en-us/panel_windlight_remote.xml | |||
@@ -0,0 +1,22 @@ | |||
1 | <?xml version="1.0" encoding="utf-8" standalone="yes" ?> | ||
2 | <panel bg_visible="false" border="false" border_visible="false" bottom="0" | ||
3 | enabled="true" follows="right|bottom" height="20" left="0" mouse_opaque="true" | ||
4 | name="windlight_remote" use_bounding_rect="true" width="182"> | ||
5 | <panel bottom="1" filename="panel_bg_tab.xml" name="panel_bg_tab" height="22" left="0" width="182" /> | ||
6 | <panel bottom="3" filename="panel_windlight_controls.xml" name="panel_windlight_controls" height="20" left="0" width="182" /> | ||
7 | <string name="sunrise"> | ||
8 | Sunrise | ||
9 | </string> | ||
10 | <string name="sunset"> | ||
11 | Midday | ||
12 | </string> | ||
13 | <string name="noon"> | ||
14 | Noon | ||
15 | </string> | ||
16 | <string name="midnight"> | ||
17 | Midnight | ||
18 | </string> | ||
19 | <string name="revert_region"> | ||
20 | Revert to Region Default | ||
21 | </string> | ||
22 | </panel> | ||
diff --git a/linden/indra/newview/skins/default/xui/en-us/panel_windlight_remote_expanded.xml b/linden/indra/newview/skins/default/xui/en-us/panel_windlight_remote_expanded.xml new file mode 100644 index 0000000..2fd9be5 --- /dev/null +++ b/linden/indra/newview/skins/default/xui/en-us/panel_windlight_remote_expanded.xml | |||
@@ -0,0 +1,34 @@ | |||
1 | <?xml version="1.0" encoding="utf-8" standalone="yes" ?> | ||
2 | <panel bg_visible="false" border="false" border_visible="false" bottom="0" | ||
3 | follows="right|bottom" height="47" left="0" mouse_opaque="true" | ||
4 | name="windlight_remote" use_bounding_rect="true" width="182"> | ||
5 | <panel bottom="1" filename="panel_bg_tab.xml" name="panel_bg_tab" height="47" left="0" width="182" /> | ||
6 | <slider bottom="-20" can_edit_text="false" control_name="RenderFarClip" | ||
7 | decimal_digits="0" enabled="true" height="18" | ||
8 | increment="8" initial_val="160" label="Draw Distance:" | ||
9 | label_width="78" left="6" max_val="512" min_val="64" mouse_opaque="true" | ||
10 | name="DrawDistance" show_text="true" width="170" /> | ||
11 | <text type="string" length="1" bg_visible="false" border_drop_shadow_visible="false" border_visible="false" | ||
12 | bottom="-14" drop_shadow_visible="true" enabled="true" follows="left|top" | ||
13 | font="SansSerifSmall" h_pad="0" halign="left" height="12" | ||
14 | left="170" mouse_opaque="true" name="DrawDistanceMeterText2" v_pad="0" | ||
15 | width="8"> | ||
16 | m | ||
17 | </text> | ||
18 | <panel bottom="13" filename="panel_windlight_controls.xml" left="0" width="182" /> | ||
19 | <string name="sunrise"> | ||
20 | Sunrise | ||
21 | </string> | ||
22 | <string name="sunset"> | ||
23 | Midday | ||
24 | </string> | ||
25 | <string name="noon"> | ||
26 | Noon | ||
27 | </string> | ||
28 | <string name="midnight"> | ||
29 | Midnight | ||
30 | </string> | ||
31 | <string name="revert_region"> | ||
32 | Revert to Region Default | ||
33 | </string> | ||
34 | </panel> | ||
diff --git a/linden/indra/newview/skins/silver/colors_base.xml b/linden/indra/newview/skins/silver/colors_base.xml index a69f43f..abe61bf 100644 --- a/linden/indra/newview/skins/silver/colors_base.xml +++ b/linden/indra/newview/skins/silver/colors_base.xml | |||
@@ -69,6 +69,8 @@ | |||
69 | <TextEmbeddedItemColor value="0, 0, 128, 255" /> <!-- Text of items embedded in notecards --> | 69 | <TextEmbeddedItemColor value="0, 0, 128, 255" /> <!-- Text of items embedded in notecards --> |
70 | <TextDefaultColor value="0, 20, 0, 255"/> <!-- Non-keyword text in the script editor --> | 70 | <TextDefaultColor value="0, 20, 0, 255"/> <!-- Non-keyword text in the script editor --> |
71 | <ScriptBgReadOnlyColor value="180, 180, 180, 255" /> <!-- Not used --> | 71 | <ScriptBgReadOnlyColor value="180, 180, 180, 255" /> <!-- Not used --> |
72 | <TextLinkColor value="0, 20, 255, 255"/> | ||
73 | <TextLinkHoverColor value="0, 50, 255, 255"/> | ||
72 | 74 | ||
73 | <!-- LISTBOXES --> | 75 | <!-- LISTBOXES --> |
74 | <ScrollBgReadOnlyColor value="255, 255, 255, 140" /> <!-- Background of read only lists --> | 76 | <ScrollBgReadOnlyColor value="255, 255, 255, 140" /> <!-- Background of read only lists --> |
diff --git a/linden/indra/newview/skins/silver/textures/arrow_left.tga b/linden/indra/newview/skins/silver/textures/arrow_left.tga new file mode 100644 index 0000000..43fbf12 --- /dev/null +++ b/linden/indra/newview/skins/silver/textures/arrow_left.tga | |||
Binary files differ | |||
diff --git a/linden/indra/newview/skins/silver/textures/arrow_right.tga b/linden/indra/newview/skins/silver/textures/arrow_right.tga new file mode 100644 index 0000000..a92ac9c --- /dev/null +++ b/linden/indra/newview/skins/silver/textures/arrow_right.tga | |||
Binary files differ | |||
diff --git a/linden/indra/newview/skins/silver/xui/en-us/panel_avatar.xml b/linden/indra/newview/skins/silver/xui/en-us/panel_avatar.xml deleted file mode 100644 index 62738dc..0000000 --- a/linden/indra/newview/skins/silver/xui/en-us/panel_avatar.xml +++ /dev/null | |||
@@ -1,430 +0,0 @@ | |||
1 | <?xml version="1.0" encoding="utf-8" standalone="yes" ?> | ||
2 | <panel bottom="-550" height="486" left="350" name="Panel Avatar" width="430"> | ||
3 | <tab_container bottom="-486" height="486" left="0" mouse_opaque="false" name="tab" | ||
4 | tab_min_width="50" tab_position="top" width="419"> | ||
5 | <panel border="true" bottom="-482" follows="left|top|right|bottom" height="466" | ||
6 | label="2nd Life" left="1" mouse_opaque="true" name="2nd Life" width="418"> | ||
7 | <string name="CaptionTextAcctInfo"> | ||
8 | [ACCTTYPE] | ||
9 | [PAYMENTINFO] | ||
10 | [AGEVERIFICATION] | ||
11 | </string> | ||
12 | <string name="AcctTypeResident"> | ||
13 | Resident | ||
14 | </string> | ||
15 | <string name="AcctTypeTrial"> | ||
16 | Trial | ||
17 | </string> | ||
18 | <string name="AcctTypeCharterMember"> | ||
19 | Charter Member | ||
20 | </string> | ||
21 | <string name="AcctTypeEmployee"> | ||
22 | Linden Lab Employee | ||
23 | </string> | ||
24 | <string name="PaymentInfoUsed"> | ||
25 | Payment Info Used | ||
26 | </string> | ||
27 | <string name="PaymentInfoOnFile"> | ||
28 | Payment Info On File | ||
29 | </string> | ||
30 | <string name="NoPaymentInfoOnFile"> | ||
31 | No Payment Info On File | ||
32 | </string> | ||
33 | <string name="AgeVerified"> | ||
34 | Age-verified | ||
35 | </string> | ||
36 | <string name="NotAgeVerified"> | ||
37 | Not Age-verified | ||
38 | </string> | ||
39 | <text bg_visible="false" border_drop_shadow_visible="false" border_visible="false" | ||
40 | bottom="-24" drop_shadow_visible="true" follows="left|top" | ||
41 | font="SansSerifSmall" h_pad="0" halign="right" height="16" left="4" | ||
42 | mouse_opaque="true" name="Name:" v_pad="0" width="70"> | ||
43 | Name: | ||
44 | </text> | ||
45 | <name_editor bevel_style="in" border_style="line" | ||
46 | border_thickness="1" bottom="-24" enabled="false" follows="left|top" | ||
47 | font="SansSerifSmall" height="16" is_unicode="false" left_delta="75" | ||
48 | max_length="254" mouse_opaque="false" name="name" | ||
49 | width="180" /> | ||
50 | <text bg_visible="false" border_drop_shadow_visible="false" border_visible="false" | ||
51 | bottom="-24" drop_shadow_visible="true" follows="left|top" | ||
52 | font="SansSerifsmall" h_pad="0" halign="left" height="16" left="279" | ||
53 | mouse_opaque="true" name="online_yes" v_pad="0" width="121"> | ||
54 | Currently Online | ||
55 | </text> | ||
56 | <text bg_visible="false" border_drop_shadow_visible="false" border_visible="false" | ||
57 | bottom_delta="-20" drop_shadow_visible="true" follows="left|top" | ||
58 | font="SansSerifSmall" h_pad="0" halign="left" height="16" left="279" | ||
59 | mouse_opaque="true" name="label" v_pad="0" width="121"> | ||
60 | Born: | ||
61 | </text> | ||
62 | <line_editor bevel_style="in" border_style="line" | ||
63 | border_thickness="1" bottom_delta="-16" enabled="true" follows="left|top" | ||
64 | font="SansSerifSmall" height="16" is_unicode="false" left="279" | ||
65 | max_length="254" mouse_opaque="false" name="born" | ||
66 | width="121" /> | ||
67 | <text bg_visible="false" border_drop_shadow_visible="false" border_visible="false" | ||
68 | bottom_delta="-20" drop_shadow_visible="true" follows="left|top" | ||
69 | font="SansSerifSmall" h_pad="0" halign="left" height="16" left="279" | ||
70 | mouse_opaque="true" name="label2" v_pad="0" width="121"> | ||
71 | Account: | ||
72 | </text> | ||
73 | <view_border bevel_style="in" bottom_delta="-48" follows="left|top" height="48" left="279" | ||
74 | mouse_opaque="false" name="acct_border" width="121" /> | ||
75 | <text bg_visible="false" border_drop_shadow_visible="false" | ||
76 | border_visible="true" bottom_delta="0" drop_shadow_visible="true" | ||
77 | follows="left|top" font="SansSerifSmall" height="48" left="279" | ||
78 | mouse_opaque="false" name="acct" width="121" /> | ||
79 | <text bg_visible="false" border_drop_shadow_visible="false" border_visible="false" | ||
80 | bottom_delta="-20" drop_shadow_visible="true" follows="left|top" | ||
81 | font="SansSerifSmall" h_pad="0" halign="left" height="16" left="279" | ||
82 | mouse_opaque="true" name="partner_label" | ||
83 | tool_tip="Second Life partner. For more info on how to set, see www.secondlife.com/partner" | ||
84 | v_pad="0" width="130"> | ||
85 | Partner: | ||
86 | </text> | ||
87 | <button bottom_delta="2" follows="left|top" font="SansSerif" halign="center" | ||
88 | height="16" label="i" label_selected="i" left_delta="44" | ||
89 | mouse_opaque="true" name="partner_info" | ||
90 | tool_tip="Click to open partner's profile" width="18" /> | ||
91 | <button bottom_delta="0" follows="left|top" font="SansSerif" halign="center" | ||
92 | height="16" label="?" label_selected="?" left_delta="24" | ||
93 | mouse_opaque="true" name="partner_help" width="18" /> | ||
94 | <line_editor bevel_style="in" border_style="line" | ||
95 | border_thickness="1" bottom_delta="-16" enabled="true" follows="left|top" | ||
96 | font="SansSerifSmall" height="16" is_unicode="false" left="279" | ||
97 | max_length="254" mouse_opaque="false" name="partner_edit" | ||
98 | tool_tip="Second Life partner. For more info on how to set, see www.secondlife.com/partner" | ||
99 | width="121"> | ||
100 | [FIRST] [LAST] | ||
101 | </line_editor> | ||
102 | <text bg_visible="false" border_drop_shadow_visible="false" border_visible="false" | ||
103 | bottom="-44" drop_shadow_visible="true" follows="left|top" | ||
104 | font="SansSerifSmall" h_pad="0" halign="right" height="16" left="4" | ||
105 | mouse_opaque="true" name="Photo:" v_pad="0" width="70"> | ||
106 | Photo: | ||
107 | </text> | ||
108 | <texture_picker allow_no_texture="true" bottom="-179" can_apply_immediately="false" | ||
109 | default_image_name="None" follows="left|top" height="151" label="" | ||
110 | left="79" mouse_opaque="true" name="img" | ||
111 | tool_tip="Click to choose a picture" width="180" /> | ||
112 | <text bg_visible="false" border_drop_shadow_visible="false" border_visible="false" | ||
113 | bottom="-183" drop_shadow_visible="true" follows="left|top" | ||
114 | font="SansSerifSmall" h_pad="0" halign="right" height="16" left="4" | ||
115 | mouse_opaque="true" name="Groups:" v_pad="0" width="70"> | ||
116 | Groups: | ||
117 | </text> | ||
118 | <scroll_list background_visible="true" bottom="-258" column_padding="5" draw_border="true" | ||
119 | follows="left|top" height="90" left="79" mouse_opaque="false" | ||
120 | multi_select="false" name="groups" width="321" /> | ||
121 | <text bg_visible="false" border_drop_shadow_visible="false" border_visible="false" | ||
122 | bottom="-280" drop_shadow_visible="true" follows="left|top" | ||
123 | font="SansSerifSmall" h_pad="0" halign="right" height="16" left="4" | ||
124 | mouse_opaque="true" name="About:" v_pad="0" width="70"> | ||
125 | About: | ||
126 | </text> | ||
127 | <text bg_visible="false" border_drop_shadow_visible="false" border_visible="false" | ||
128 | bottom_delta="-16" drop_shadow_visible="true" follows="left|top" | ||
129 | font="SansSerifSmall" h_pad="0" halign="right" height="16" left="0" | ||
130 | mouse_opaque="true" name="(500 chars)" v_pad="0" width="70"> | ||
131 | (500 chars) | ||
132 | </text> | ||
133 | <text_editor bottom="-375" embedded_items="false" | ||
134 | enabled="true" follows="left|top" font="SansSerifSmall" height="110" | ||
135 | is_unicode="false" left="79" max_length="511" mouse_opaque="true" | ||
136 | name="about" width="321" word_wrap="true" /> | ||
137 | <text bg_visible="false" border_drop_shadow_visible="false" border_visible="false" | ||
138 | bottom="-403" drop_shadow_visible="true" follows="left|top" | ||
139 | font="SansSerifSmall" h_pad="0" halign="right" height="16" left="0" | ||
140 | mouse_opaque="true" name="Give item:" v_pad="0" width="75"> | ||
141 | Give item: | ||
142 | </text> | ||
143 | <view_border blevel_style="in" border_thickness="0" bottom="-466" follows="left|top" | ||
144 | height="466" left_delta="4" mouse_opaque="false" name="drop_target_rect" | ||
145 | width="409" /> | ||
146 | <view_border blevel_style="in" bottom="-403" follows="left|top" height="16" left_delta="75" | ||
147 | mouse_opaque="false" name="drop_target_rect_vis" width="321" /> | ||
148 | <text bg_visible="false" border_drop_shadow_visible="false" border_visible="false" | ||
149 | bottom_delta="0" drop_shadow_visible="true" follows="left|top" | ||
150 | font="SansSerifSmall" h_pad="0" halign="center" height="16" left_delta="0" | ||
151 | mouse_opaque="true" name="Give inventory" | ||
152 | tool_tip="Drop inventory items here to give them to this person." v_pad="2" | ||
153 | width="321"> | ||
154 | Drop inventory item here. | ||
155 | </text> | ||
156 | <check_box bottom_delta="-20" follows="left|top" font="SansSerifSmall" height="16" | ||
157 | initial_value="false" label="Show in search" left="75" mouse_opaque="true" | ||
158 | name="allow_publish" | ||
159 | tool_tip="Publish extra profile information such as description and image in Search." | ||
160 | width="130" /> | ||
161 | <button bottom="-423" follows="left|top" font="SansSerif" halign="center" height="16" | ||
162 | label="?" label_selected="?" left_delta="145" mouse_opaque="true" name="?" | ||
163 | width="20" /> | ||
164 | <button bottom="-428" font="SansSerif" halign="center" height="20" label="Find on Map" | ||
165 | label_selected="Find on Map" left="24" mouse_opaque="true" | ||
166 | name="Find on Map" width="100" /> | ||
167 | <button bottom="-428" font="SansSerif" halign="center" height="20" | ||
168 | label="Offer Teleport..." label_selected="Offer Teleport..." | ||
169 | left_delta="102" mouse_opaque="true" name="Offer Teleport..." width="140" /> | ||
170 | <button bottom="-428" font="SansSerif" halign="center" height="20" | ||
171 | label="Add Friend..." label_selected="Add Friend..." left_delta="142" | ||
172 | mouse_opaque="true" name="Add Friend..." width="130" /> | ||
173 | <button bottom_delta="-24" font="SansSerif" halign="center" height="20" label="Pay..." | ||
174 | label_selected="Pay..." left="24" mouse_opaque="true" name="Pay..." | ||
175 | width="100" /> | ||
176 | <button bottom_delta="0" font="SansSerif" halign="center" height="20" | ||
177 | label="Instant Message..." label_selected="Instant Message..." | ||
178 | left_delta="102" mouse_opaque="true" name="Instant Message..." | ||
179 | tool_tip="Instant Message (IM)" width="140" /> | ||
180 | <button bottom_delta="0" font="SansSerif" halign="center" height="20" label="Mute" | ||
181 | label_selected="Mute" left_delta="142" mouse_opaque="true" name="Mute" | ||
182 | width="130" /> | ||
183 | </panel> | ||
184 | <panel border="true" bottom="-482" follows="left|top|right|bottom" height="466" | ||
185 | label="Web" left="1" mouse_opaque="true" name="WebProfile" width="418"> | ||
186 | <line_editor bevel_style="in" border_style="line" | ||
187 | border_thickness="1" bottom_delta="-18" enabled="false" follows="left|top" | ||
188 | font="SansSerifSmall" height="16" is_unicode="false" left="10" | ||
189 | max_length="254" mouse_opaque="true" name="url_edit" | ||
190 | width="400" /> | ||
191 | <flyout_button bottom_delta="-22" follows="left|top" font="SansSerifSmall" halign="center" | ||
192 | height="18" label="Load" label_selected="Load" left="10" | ||
193 | mouse_opaque="true" name="load" enabled="false" | ||
194 | tool_tip="Load this profile page with embedded web browser." width="80" > | ||
195 | <flyout_button_item value="open" name="open_item">In external browser</flyout_button_item> | ||
196 | <flyout_button_item value="home" name="home_item">Home URL</flyout_button_item> | ||
197 | </flyout_button> | ||
198 | <button bottom_delta="0" follows="left|top" font="SansSerif" halign="center" | ||
199 | height="18" label="?" label_selected="?" left_delta="85" | ||
200 | mouse_opaque="true" name="web_profile_help" width="18" /> | ||
201 | <check_box bottom_delta="0" follows="right|top" font="SansSerifSmall" height="16" | ||
202 | initial_value="false" label="Automatically load web profiles" | ||
203 | left_delta="30" mouse_opaque="true" name="auto_load" | ||
204 | tool_tip="Automatically load ALL profile webpages without asking first." | ||
205 | width="127" /> | ||
206 | <web_browser border_visible="false" bottom="-444" follows="top|left|right" height="400" | ||
207 | ignore_ui_scale="false" left="10" name="profile_html" start_url="" | ||
208 | width="400" /> | ||
209 | <text bottom="5" follows="bottom|left|right" left="15" name="status_text" right="-70" | ||
210 | top="25" /> | ||
211 | </panel> | ||
212 | <panel border="true" bottom="-482" follows="left|top|right|bottom" height="466" | ||
213 | label="Interests" left="1" mouse_opaque="true" name="Interests" width="418"> | ||
214 | <text bg_visible="false" border_drop_shadow_visible="false" border_visible="false" | ||
215 | bottom="-36" drop_shadow_visible="true" follows="left|top" | ||
216 | font="SansSerifSmall" h_pad="0" halign="right" height="16" left="4" | ||
217 | mouse_opaque="true" name="I Want To:" v_pad="0" width="70"> | ||
218 | I Want To: | ||
219 | </text> | ||
220 | <check_box bottom_delta="0" follows="left|top" font="SansSerifSmall" height="16" | ||
221 | initial_value="false" label="Build" left_delta="70" mouse_opaque="true" | ||
222 | name="chk0" width="90" /> | ||
223 | <check_box bottom_delta="0" follows="left|top" font="SansSerifSmall" height="16" | ||
224 | initial_value="false" label="Explore" left_delta="170" mouse_opaque="true" | ||
225 | name="chk1" width="90" /> | ||
226 | <check_box bottom_delta="-20" follows="left|top" font="SansSerifSmall" height="16" | ||
227 | initial_value="false" label="Meet" left_delta="-170" mouse_opaque="true" | ||
228 | name="chk2" width="57" /> | ||
229 | <check_box bottom_delta="0" follows="left|top" font="SansSerifSmall" height="16" | ||
230 | initial_value="false" label="Be Hired" left_delta="170" mouse_opaque="true" | ||
231 | name="chk6" width="92" /> | ||
232 | <check_box bottom_delta="-20" follows="left|top" font="SansSerifSmall" height="16" | ||
233 | initial_value="false" label="Group" left_delta="-170" mouse_opaque="true" | ||
234 | name="chk3" width="90" /> | ||
235 | <check_box bottom_delta="0" follows="left|top" font="SansSerifSmall" height="16" | ||
236 | initial_value="false" label="Buy" left_delta="170" mouse_opaque="true" | ||
237 | name="chk4" width="90" /> | ||
238 | <check_box bottom_delta="-20" follows="left|top" font="SansSerifSmall" height="16" | ||
239 | initial_value="false" label="Sell" left_delta="-170" mouse_opaque="true" | ||
240 | name="chk5" width="50" /> | ||
241 | <check_box bottom_delta="0" follows="left|top" font="SansSerifSmall" height="16" | ||
242 | initial_value="false" label="Hire" left_delta="170" mouse_opaque="true" | ||
243 | name="chk7" width="92" /> | ||
244 | <line_editor bevel_style="in" border_style="line" | ||
245 | border_thickness="1" bottom_delta="-20" enabled="true" follows="left|top" | ||
246 | font="SansSerifSmall" height="16" is_unicode="false" left="74" | ||
247 | max_length="254" mouse_opaque="true" name="want_to_edit" | ||
248 | width="330" /> | ||
249 | <text bg_visible="false" border_drop_shadow_visible="false" border_visible="false" | ||
250 | bottom_delta="-26" drop_shadow_visible="true" follows="left|top" | ||
251 | font="SansSerifSmall" h_pad="0" halign="right" height="16" left="4" | ||
252 | mouse_opaque="true" name="Skills:" v_pad="0" width="70"> | ||
253 | Skills: | ||
254 | </text> | ||
255 | <check_box bottom_delta="0" follows="left|top" font="SansSerifSmall" height="16" | ||
256 | initial_value="false" label="Textures" left_delta="70" mouse_opaque="true" | ||
257 | name="schk0" width="90" /> | ||
258 | <check_box bottom_delta="0" follows="left|top" font="SansSerifSmall" height="16" | ||
259 | initial_value="false" label="Architecture" left_delta="170" | ||
260 | mouse_opaque="true" name="schk1" width="93" /> | ||
261 | <check_box bottom_delta="-20" follows="left|top" font="SansSerifSmall" height="16" | ||
262 | initial_value="false" label="Event Planning" left_delta="0" | ||
263 | mouse_opaque="true" name="schk2" width="105" /> | ||
264 | <check_box bottom_delta="0" follows="left|top" font="SansSerifSmall" height="16" | ||
265 | initial_value="false" label="Modeling" left_delta="-170" | ||
266 | mouse_opaque="true" name="schk3" width="90" /> | ||
267 | <check_box bottom_delta="-20" follows="left|top" font="SansSerifSmall" height="16" | ||
268 | initial_value="false" label="Scripting" left_delta="0" mouse_opaque="true" | ||
269 | name="schk4" width="90" /> | ||
270 | <check_box bottom_delta="0" follows="left|top" font="SansSerifSmall" height="16" | ||
271 | initial_value="false" label="Custom Characters" left_delta="170" | ||
272 | mouse_opaque="true" name="schk5" width="127" /> | ||
273 | <line_editor bevel_style="in" border_style="line" | ||
274 | border_thickness="1" bottom_delta="-20" enabled="true" follows="left|top" | ||
275 | font="SansSerifSmall" height="16" is_unicode="false" left="74" | ||
276 | max_length="254" mouse_opaque="true" name="skills_edit" | ||
277 | width="330" /> | ||
278 | <text bg_visible="false" border_drop_shadow_visible="false" border_visible="false" | ||
279 | bottom_delta="-30" drop_shadow_visible="true" follows="left|top" | ||
280 | font="SansSerifSmall" h_pad="0" halign="right" height="16" left="4" | ||
281 | mouse_opaque="true" name="Languages:" v_pad="0" width="70"> | ||
282 | Languages: | ||
283 | </text> | ||
284 | <line_editor bevel_style="in" border_style="line" | ||
285 | border_thickness="1" bottom_delta="0" enabled="true" follows="left|top" | ||
286 | font="SansSerifSmall" height="16" is_unicode="false" left="74" | ||
287 | max_length="254" mouse_opaque="true" name="languages_edit" | ||
288 | width="330" /> | ||
289 | </panel> | ||
290 | <panel border="true" bottom="-482" follows="left|top|right|bottom" height="466" | ||
291 | label="Picks" left="1" mouse_opaque="true" name="Picks" width="418"> | ||
292 | <text bg_visible="false" border_drop_shadow_visible="false" border_visible="false" | ||
293 | bottom="-20" drop_shadow_visible="true" follows="left|top" | ||
294 | font="SansSerifSmall" h_pad="0" halign="left" height="16" left="114" | ||
295 | mouse_opaque="true" | ||
296 | name="Tell everyone about your favorite places in Second Life." v_pad="0" | ||
297 | width="302"> | ||
298 | Tell everyone about your favorite places in Second Life. | ||
299 | </text> | ||
300 | <button bottom_delta="-24" follows="left|top" font="SansSerif" halign="center" | ||
301 | height="20" label="New..." label_selected="New..." left="114" | ||
302 | mouse_opaque="true" name="New..." width="75" /> | ||
303 | <button bottom="-44" follows="left|top" font="SansSerif" halign="center" height="20" | ||
304 | label="Delete..." label_selected="Delete..." left_delta="79" | ||
305 | mouse_opaque="true" name="Delete..." width="75" /> | ||
306 | <tab_container bottom="-411" follows="left|top" height="363" left="4" mouse_opaque="false" | ||
307 | name="picks tab" tab_position="left" width="412" /> | ||
308 | <text bg_visible="false" border_drop_shadow_visible="false" border_visible="false" | ||
309 | bottom="-70" drop_shadow_visible="true" follows="left|top" font="SansSerif" | ||
310 | h_pad="0" halign="left" height="20" left="114" mouse_opaque="false" | ||
311 | name="loading_text" v_pad="0" width="302"> | ||
312 | Loading... | ||
313 | </text> | ||
314 | </panel> | ||
315 | <panel border="true" bottom="-482" follows="left|top|right|bottom" height="466" | ||
316 | label="Classified" left="1" mouse_opaque="true" name="Classified" | ||
317 | width="418"> | ||
318 | <text bg_visible="false" border_drop_shadow_visible="false" border_visible="false" | ||
319 | bottom="-20" drop_shadow_visible="true" follows="left|top" | ||
320 | font="SansSerifSmall" h_pad="0" halign="left" height="16" left="114" | ||
321 | mouse_opaque="true" | ||
322 | name="Place an ad in Second Life's classified listings." v_pad="0" | ||
323 | width="302"> | ||
324 | Place an ad in Second Life's classified listings. | ||
325 | </text> | ||
326 | <button bottom_delta="-24" follows="left|top" font="SansSerif" halign="center" | ||
327 | height="20" label="New..." label_selected="New..." left="114" | ||
328 | mouse_opaque="true" name="New..." width="75" /> | ||
329 | <button bottom="-44" follows="left|top" font="SansSerif" halign="center" height="20" | ||
330 | label="Delete..." label_selected="Delete..." left_delta="79" | ||
331 | mouse_opaque="true" name="Delete..." width="75" /> | ||
332 | <tab_container bottom="-443" follows="left|top" height="395" left="4" mouse_opaque="false" | ||
333 | name="classified tab" tab_position="left" width="412" /> | ||
334 | <text bg_visible="false" border_drop_shadow_visible="false" border_visible="false" | ||
335 | bottom="-70" drop_shadow_visible="true" follows="left|top" font="SansSerif" | ||
336 | h_pad="0" halign="left" height="20" left="114" mouse_opaque="false" | ||
337 | name="loading_text" v_pad="0" width="302"> | ||
338 | Loading... | ||
339 | </text> | ||
340 | </panel> | ||
341 | <panel border="true" bottom="-482" follows="left|top|right|bottom" height="466" | ||
342 | label="1st Life" left="1" mouse_opaque="true" name="1st Life" width="418"> | ||
343 | <text bg_visible="false" border_drop_shadow_visible="false" border_visible="false" | ||
344 | bottom="-36" drop_shadow_visible="true" follows="left|top" | ||
345 | font="SansSerifSmall" h_pad="0" halign="right" height="16" left="4" | ||
346 | mouse_opaque="true" name="Photo:" v_pad="0" width="61"> | ||
347 | Photo: | ||
348 | </text> | ||
349 | <texture_picker allow_no_texture="true" bottom="-171" can_apply_immediately="false" | ||
350 | default_image_name="None" follows="left|top" height="151" label="" | ||
351 | left="70" mouse_opaque="true" name="img" | ||
352 | tool_tip="Click to choose a picture" width="135" /> | ||
353 | <text bg_visible="false" border_drop_shadow_visible="false" border_visible="false" | ||
354 | bottom="-203" drop_shadow_visible="true" follows="left|top" | ||
355 | font="SansSerifSmall" h_pad="0" halign="right" height="16" left="4" | ||
356 | mouse_opaque="true" name="Info:" v_pad="0" width="61"> | ||
357 | Info: | ||
358 | </text> | ||
359 | <text bg_visible="false" border_drop_shadow_visible="false" border_visible="false" | ||
360 | bottom_delta="-16" drop_shadow_visible="true" follows="left|top" | ||
361 | font="SansSerifSmall" h_pad="0" halign="right" height="16" left="0" | ||
362 | mouse_opaque="true" name="(250 chars)" v_pad="0" width="65"> | ||
363 | (250 chars) | ||
364 | </text> | ||
365 | <text_editor bottom="-347" embedded_items="false" | ||
366 | enabled="true" follows="left|top" font="SansSerifSmall" height="160" | ||
367 | is_unicode="false" left="70" max_length="254" mouse_opaque="false" | ||
368 | name="about" width="330" word_wrap="true" /> | ||
369 | </panel> | ||
370 | <panel border="true" bottom="-482" follows="left|top|right|bottom" height="466" | ||
371 | label="My Notes" left="1" mouse_opaque="true" name="My Notes" width="418"> | ||
372 | <string name="Loading"> | ||
373 | Loading... | ||
374 | </string> | ||
375 | <text bg_visible="false" border_drop_shadow_visible="false" border_visible="false" | ||
376 | bottom="-52" drop_shadow_visible="true" follows="left|top" | ||
377 | font="SansSerifSmall" h_pad="0" halign="left" height="48" left="10" | ||
378 | mouse_opaque="true" name="label" v_pad="0" width="412"> | ||
379 | Use this space to record your notes about this person. Keep track | ||
380 | of trades in progress, joint projects, etc. Only you can see these | ||
381 | notes. This person cannot see them, nor can other people. | ||
382 | </text> | ||
383 | <text_editor bottom_delta="-260" embedded_items="false" enabled="true" follows="left|top" | ||
384 | font="SansSerif" height="256" is_unicode="false" left="10" | ||
385 | max_length="1023" mouse_opaque="true" name="notes edit" width="400" | ||
386 | word_wrap="false" /> | ||
387 | </panel> | ||
388 | </tab_container> | ||
389 | <button bottom="-483" font="SansSerif" halign="center" height="20" label="OK" | ||
390 | label_selected="OK" left="208" mouse_opaque="true" name="OK" width="100" /> | ||
391 | <button bottom_delta="0" font="SansSerif" halign="center" height="20" label="Cancel" | ||
392 | label_selected="Cancel" left_delta="105" mouse_opaque="true" name="Cancel" | ||
393 | width="100" /> | ||
394 | <button bottom_delta="132" font="SansSerif" halign="center" height="20" label="Kick" | ||
395 | label_selected="Kick" left="4" mouse_opaque="true" name="Kick" width="72" /> | ||
396 | <button bottom_delta="-24" font="SansSerif" halign="center" height="20" label="Freeze" | ||
397 | label_selected="Freeze" left="4" mouse_opaque="true" name="Freeze" | ||
398 | tool_tip="Stop this resident's movement and chat." width="72" /> | ||
399 | <button bottom_delta="-24" font="SansSerif" halign="center" height="20" | ||
400 | label="Unfreeze" label_selected="Unfreeze" left="4" mouse_opaque="true" | ||
401 | name="Unfreeze" tool_tip="Thaw resident" width="72" /> | ||
402 | <button bottom_delta="-24" font="SansSerif" halign="center" height="20" label="CSR" | ||
403 | label_selected="CSR" left="4" mouse_opaque="true" name="csr_btn" | ||
404 | tool_tip="Open customer service tool for this resident" width="72" /> | ||
405 | <string name="ShowOnMapNonFriend"> | ||
406 | Show location on the map. | ||
407 | Disabled because you have not | ||
408 | formed a friendship with them. | ||
409 | </string> | ||
410 | <string name="ShowOnMapFriendOffline"> | ||
411 | Show location on the map. | ||
412 | Disabled because they are not online. | ||
413 | </string> | ||
414 | <string name="ShowOnMapFriendOnline"> | ||
415 | Show location on the map. | ||
416 | </string> | ||
417 | <string name="TeleportGod"> | ||
418 | Force a teleport to your location. | ||
419 | </string> | ||
420 | <string name="TeleportPrelude"> | ||
421 | Offer a teleport to your location. | ||
422 | Disabled until you leave Orientation Island. | ||
423 | </string> | ||
424 | <string name="TeleportNormal"> | ||
425 | Offer a teleport to your location. | ||
426 | </string> | ||
427 | <string name="Loading"> | ||
428 | Loading... | ||
429 | </string> | ||
430 | </panel> | ||