Mini-merge up to FS-tip. Note: Reverted OSX Lion build sdk changes, due to failure to produce a viable build on snowleopard.
commit
61cb88c510
|
|
@ -50,7 +50,8 @@ typedef enum e_chat_type
|
|||
CHAT_TYPE_STOP = 5,
|
||||
CHAT_TYPE_DEBUG_MSG = 6,
|
||||
CHAT_TYPE_REGION = 7,
|
||||
CHAT_TYPE_OWNER = 8
|
||||
CHAT_TYPE_OWNER = 8,
|
||||
CHAT_TYPE_IM = 9 // Ansariel: Special type for IMs in nearby chat
|
||||
} EChatType;
|
||||
|
||||
typedef enum e_chat_audible_level
|
||||
|
|
|
|||
|
|
@ -30,7 +30,7 @@
|
|||
const S32 LL_VERSION_MAJOR = 2;
|
||||
const S32 LL_VERSION_MINOR = 6;
|
||||
const S32 LL_VERSION_PATCH = 9;
|
||||
const S32 LL_VERSION_BUILD = 16953;
|
||||
const S32 LL_VERSION_BUILD = 18325;
|
||||
|
||||
const char * const LL_CHANNEL = "Second Life Server";
|
||||
|
||||
|
|
|
|||
|
|
@ -30,7 +30,7 @@
|
|||
const S32 LL_VERSION_MAJOR = 2;
|
||||
const S32 LL_VERSION_MINOR = 6;
|
||||
const S32 LL_VERSION_PATCH = 9;
|
||||
const S32 LL_VERSION_BUILD = 16953;
|
||||
const S32 LL_VERSION_BUILD = 18325;
|
||||
|
||||
const char * const LL_CHANNEL = "Firestorm-private-Romana";
|
||||
|
||||
|
|
|
|||
|
|
@ -24,8 +24,8 @@ LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US
|
|||
//
|
||||
|
||||
VS_VERSION_INFO VERSIONINFO
|
||||
FILEVERSION 2,6,9,16953
|
||||
PRODUCTVERSION 2,6,9,16953
|
||||
FILEVERSION 2,6,9,18325
|
||||
PRODUCTVERSION 2,6,9,18325
|
||||
FILEFLAGSMASK 0x3fL
|
||||
#ifdef _DEBUG
|
||||
FILEFLAGS 0x1L
|
||||
|
|
@ -42,12 +42,12 @@ BEGIN
|
|||
BEGIN
|
||||
VALUE "CompanyName", "Phoenix Viewer"
|
||||
VALUE "FileDescription", "Phoenix Firestorm Viewer Common Library"
|
||||
VALUE "FileVersion", "2.6.9.16953"
|
||||
VALUE "FileVersion", "2.6.9.18325"
|
||||
VALUE "InternalName", "llcommon.dll"
|
||||
VALUE "LegalCopyright", "Copyright © 2010 Phoenix Viewer"
|
||||
VALUE "OriginalFilename", "llcommon.dll"
|
||||
VALUE "ProductName", "Phoenix Firestorm Viewer"
|
||||
VALUE "ProductVersion", "2.6.9.16953"
|
||||
VALUE "ProductVersion", "2.6.9.18325"
|
||||
END
|
||||
END
|
||||
BLOCK "VarFileInfo"
|
||||
|
|
|
|||
|
|
@ -189,6 +189,8 @@ S32 LLFontGL::render(const LLWString &wstr, S32 begin_offset, F32 x, F32 y, cons
|
|||
origin.mV[VX] -= llround((F32)sCurOrigin.mX) - (sCurOrigin.mX);
|
||||
origin.mV[VY] -= llround((F32)sCurOrigin.mY) - (sCurOrigin.mY);
|
||||
|
||||
// don't forget to do the depth translation, too. -Zi
|
||||
gGL.translatef(0.f,0.f,sCurOrigin.mZ);
|
||||
|
||||
S32 chars_drawn = 0;
|
||||
S32 i;
|
||||
|
|
|
|||
|
|
@ -1234,7 +1234,12 @@ void LLRender::vertexBatchPreTransformed(LLVector3* verts, S32 vert_count)
|
|||
mColorsp[mCount] = mColorsp[mCount-1];
|
||||
}
|
||||
|
||||
mVerticesp[mCount] = mVerticesp[mCount-1];
|
||||
// Often happens with LLFontGL::render(), especially in LLScrollListText::draw()
|
||||
// Can be observed by opening the V1 style friends list for example
|
||||
if (mCount == 0)
|
||||
lldebugs << "Vertex count was 0, prevented crashing." << llendl;
|
||||
else
|
||||
mVerticesp[mCount] = mVerticesp[mCount-1];
|
||||
}
|
||||
|
||||
void LLRender::vertexBatchPreTransformed(LLVector3* verts, LLVector2* uvs, S32 vert_count)
|
||||
|
|
@ -1254,8 +1259,15 @@ void LLRender::vertexBatchPreTransformed(LLVector3* verts, LLVector2* uvs, S32 v
|
|||
mColorsp[mCount] = mColorsp[mCount-1];
|
||||
}
|
||||
|
||||
mVerticesp[mCount] = mVerticesp[mCount-1];
|
||||
mTexcoordsp[mCount] = mTexcoordsp[mCount-1];
|
||||
// Often happens with LLFontGL::render(), especially in LLScrollListText::draw()
|
||||
// Can be observed by opening the V1 style friends list for example
|
||||
if (mCount == 0)
|
||||
lldebugs << "Vertex count was 0, prevented crashing." << llendl;
|
||||
else
|
||||
{
|
||||
mVerticesp[mCount] = mVerticesp[mCount-1];
|
||||
mTexcoordsp[mCount] = mTexcoordsp[mCount-1];
|
||||
}
|
||||
}
|
||||
|
||||
void LLRender::vertexBatchPreTransformed(LLVector3* verts, LLVector2* uvs, LLColor4U* colors, S32 vert_count)
|
||||
|
|
@ -1275,9 +1287,16 @@ void LLRender::vertexBatchPreTransformed(LLVector3* verts, LLVector2* uvs, LLCol
|
|||
mCount++;
|
||||
}
|
||||
|
||||
mVerticesp[mCount] = mVerticesp[mCount-1];
|
||||
mTexcoordsp[mCount] = mTexcoordsp[mCount-1];
|
||||
mColorsp[mCount] = mColorsp[mCount-1];
|
||||
// Often happens with LLFontGL::render(), especially in LLScrollListText::draw()
|
||||
// Can be observed by opening the V1 style friends list for example
|
||||
if (mCount == 0)
|
||||
lldebugs << "Vertex count was 0, prevented crashing." << llendl;
|
||||
else
|
||||
{
|
||||
mVerticesp[mCount] = mVerticesp[mCount-1];
|
||||
mTexcoordsp[mCount] = mTexcoordsp[mCount-1];
|
||||
mColorsp[mCount] = mColorsp[mCount-1];
|
||||
}
|
||||
}
|
||||
|
||||
void LLRender::vertex2i(const GLint& x, const GLint& y)
|
||||
|
|
|
|||
|
|
@ -449,3 +449,15 @@ void LLConsole::update()
|
|||
}
|
||||
}
|
||||
|
||||
void LLConsole::removeExtraLines()
|
||||
{
|
||||
mMutex.lock() ;
|
||||
while ((S32)mLines.size() > llmax((S32)0, (S32)(mMaxLines - 1)))
|
||||
{
|
||||
mLines.pop_front();
|
||||
mAddTimes.pop_front();
|
||||
mLineLengths.pop_front();
|
||||
mLineColors.pop_front();
|
||||
}
|
||||
mMutex.unlock() ;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -102,8 +102,7 @@ public:
|
|||
typedef std::list<Line> lines_t;
|
||||
typedef std::list<ParagraphColorSegment> paragraph_color_segments_t;
|
||||
|
||||
typedef std::list<LLColor4> line_colors_t;
|
||||
line_colors_t mLineColors;
|
||||
std::deque<LLColor4> mLineColors;
|
||||
|
||||
//A paragraph is a processed element containing the entire text of the
|
||||
//message (used for recalculating positions on screen resize)
|
||||
|
|
@ -147,6 +146,9 @@ public:
|
|||
void addConsoleLine(const LLWString& wline, const LLColor4 &color);
|
||||
void clear();
|
||||
|
||||
protected:
|
||||
void removeExtraLines();
|
||||
|
||||
private:
|
||||
void update();
|
||||
|
||||
|
|
|
|||
|
|
@ -2240,7 +2240,15 @@ void LLFloaterView::restoreAll()
|
|||
for ( child_list_const_iter_t child_it = getChildList()->begin(); child_it != getChildList()->end(); ++child_it)
|
||||
{
|
||||
LLFloater* floaterp = (LLFloater*)*child_it;
|
||||
floaterp->setMinimized(FALSE);
|
||||
|
||||
// Ansariel: Don't restore "closed" sidebar floaters that are hidden
|
||||
// minimized to emulate closed state!
|
||||
std::string pat = "side_bar_tab";
|
||||
size_t found = floaterp->getInstanceName().find(pat);
|
||||
if (found == std::string::npos)
|
||||
{
|
||||
floaterp->setMinimized(FALSE);
|
||||
}
|
||||
}
|
||||
|
||||
// *FIX: make sure dependents are restored
|
||||
|
|
|
|||
|
|
@ -1525,6 +1525,25 @@ LLTextBase::segment_set_t::iterator LLTextBase::getSegIterContaining(S32 index)
|
|||
index_segment->setStart(index);
|
||||
index_segment->setEnd(index);
|
||||
segment_set_t::iterator it = mSegments.upper_bound(index_segment);
|
||||
|
||||
// FIXME: I tried to put this into its own function but ended up with errors,
|
||||
// so this is duplicated in the const version of this function for now. -Zi
|
||||
|
||||
// This goes reports one segment backwards if the cursor is inside a non-editable segment,
|
||||
// but only if that segment is editable -Zi
|
||||
LLTextSegment* seg=*it;
|
||||
if(!seg->canEdit())
|
||||
{
|
||||
if(it!=mSegments.begin())
|
||||
{
|
||||
--it;
|
||||
|
||||
seg=*it;
|
||||
if(!seg->canEdit())
|
||||
++it;
|
||||
}
|
||||
}
|
||||
|
||||
return it;
|
||||
}
|
||||
|
||||
|
|
@ -1540,6 +1559,25 @@ LLTextBase::segment_set_t::const_iterator LLTextBase::getSegIterContaining(S32 i
|
|||
index_segment->setStart(index);
|
||||
index_segment->setEnd(index);
|
||||
LLTextBase::segment_set_t::const_iterator it = mSegments.upper_bound(index_segment);
|
||||
|
||||
// FIXME: I tried to put this into its own function but ended up with errors,
|
||||
// so this is duplicated in the non-const version of this function for now. -Zi
|
||||
|
||||
// This goes reports one segment backwards if the cursor is inside a non-editable segment,
|
||||
// but only if that segment is editable -Zi
|
||||
LLTextSegment* seg=*it;
|
||||
if(!seg->canEdit())
|
||||
{
|
||||
if(it!=mSegments.begin())
|
||||
{
|
||||
--it;
|
||||
|
||||
seg=*it;
|
||||
if(!seg->canEdit())
|
||||
++it;
|
||||
}
|
||||
}
|
||||
|
||||
return it;
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -60,7 +60,7 @@
|
|||
</dict>
|
||||
</array>
|
||||
<key>CFBundleVersion</key>
|
||||
<string>2.6.9.16953</string>
|
||||
<string>2.6.9.18325</string>
|
||||
<key>CSResourcesFileMapped</key>
|
||||
<true/>
|
||||
</dict>
|
||||
|
|
|
|||
|
|
@ -14,6 +14,50 @@
|
|||
<integer>1</integer>
|
||||
</map>
|
||||
|
||||
<key>FSShowIMInChatHistory</key>
|
||||
<map>
|
||||
<key>Comment</key>
|
||||
<string>If true, IM will also be shown in the nearby chat history.</string>
|
||||
<key>Persist</key>
|
||||
<integer>1</integer>
|
||||
<key>Type</key>
|
||||
<string>Boolean</string>
|
||||
<key>Value</key>
|
||||
<integer>0</integer>
|
||||
</map>
|
||||
<key>FSLogIMInChatHistory</key>
|
||||
<map>
|
||||
<key>Comment</key>
|
||||
<string>If true, IM will also be logged in the nearby chat history if logging nearby chat and showing IMs in nearby chat is enabled.</string>
|
||||
<key>Persist</key>
|
||||
<integer>1</integer>
|
||||
<key>Type</key>
|
||||
<string>Boolean</string>
|
||||
<key>Value</key>
|
||||
<integer>0</integer>
|
||||
</map>
|
||||
<key>FSPaymentInfoInChat</key>
|
||||
<map>
|
||||
<key>Comment</key>
|
||||
<string>If true, L$ balance changes will be shown in nearby chat instead of toasts.</string>
|
||||
<key>Persist</key>
|
||||
<integer>1</integer>
|
||||
<key>Type</key>
|
||||
<string>Boolean</string>
|
||||
<key>Value</key>
|
||||
<integer>0</integer>
|
||||
</map>
|
||||
<key>FSScriptDialogNoTransparency</key>
|
||||
<map>
|
||||
<key>Comment</key>
|
||||
<string>If true, script dialogs will be shown opaque and ignore the floater opacity settings.</string>
|
||||
<key>Persist</key>
|
||||
<integer>1</integer>
|
||||
<key>Type</key>
|
||||
<string>Boolean</string>
|
||||
<key>Value</key>
|
||||
<integer>0</integer>
|
||||
</map>
|
||||
<key>ShowStreamMetadata</key>
|
||||
<map>
|
||||
<key>Comment</key>
|
||||
|
|
@ -71,17 +115,38 @@
|
|||
<key>Value</key>
|
||||
<integer>0</integer>
|
||||
</map>
|
||||
|
||||
<key>PhoenixDoubleClickAddInventoryObjects</key>
|
||||
<map>
|
||||
<key>Comment</key>
|
||||
<string>Whether or not to add items instead of wearing them</string>
|
||||
<key>Persist</key>
|
||||
<integer>1</integer>
|
||||
<key>Type</key>
|
||||
<string>Boolean</string>
|
||||
<key>Value</key>
|
||||
<integer>0</integer>
|
||||
</map>
|
||||
<key>PhoenixKeepUnpackedCacheFiles</key>
|
||||
<map>
|
||||
<key>Comment</key>
|
||||
<string>If TRUE, the viewer won't delete unpacked cache files when logging out (improves overall performance and fixes sound bugs)</string>
|
||||
<key>Persist</key>
|
||||
<integer>1</integer>
|
||||
<key>Type</key>
|
||||
<string>Boolean</string>
|
||||
<key>Value</key>
|
||||
<integer>0</integer>
|
||||
</map>
|
||||
<key>RadarAlertChannel</key>
|
||||
<map>
|
||||
<key>Comment</key>
|
||||
<string>Positive Numbered Channel for whispering radar alerts</string>
|
||||
<string>Channel for whispering radar alerts</string>
|
||||
<key>Persist</key>
|
||||
<integer>1</integer>
|
||||
<key>Type</key>
|
||||
<string>U32</string>
|
||||
<string>S32</string>
|
||||
<key>Value</key>
|
||||
<integer>777777777</integer>
|
||||
<integer>-777777777</integer>
|
||||
</map>
|
||||
|
||||
<key>RadarLegacyChannelAlertRefreshUUID</key>
|
||||
|
|
@ -475,6 +540,28 @@
|
|||
<key>Value</key>
|
||||
<integer>0</integer>
|
||||
</map>
|
||||
<key>FSLeaveMouselookOnFocus</key>
|
||||
<map>
|
||||
<key>Comment</key>
|
||||
<string>Exit mouselook mode when regaining focus</string>
|
||||
<key>Persist</key>
|
||||
<integer>1</integer>
|
||||
<key>Type</key>
|
||||
<string>Boolean</string>
|
||||
<key>Value</key>
|
||||
<integer>1</integer>
|
||||
</map>
|
||||
<key>FSSaveInventoryScriptsAsMono</key>
|
||||
<map>
|
||||
<key>Comment</key>
|
||||
<string>Saves scripts edited directly from inventory as Mono instead of LSL</string>
|
||||
<key>Persist</key>
|
||||
<integer>1</integer>
|
||||
<key>Type</key>
|
||||
<string>Boolean</string>
|
||||
<key>Value</key>
|
||||
<integer>0</integer>
|
||||
</map>
|
||||
<key>AutoCloseOOC</key>
|
||||
<map>
|
||||
<key>Comment</key>
|
||||
|
|
@ -621,10 +708,10 @@
|
|||
<key>Value</key>
|
||||
<integer>0</integer>
|
||||
</map>
|
||||
<key>RestrainedLoveOffsetAvatarZ</key>
|
||||
<key>AvatarZOffset</key>
|
||||
<map>
|
||||
<key>Comment</key>
|
||||
<string>Offset the avatar.</string>
|
||||
<string>Height offset the avatar.</string>
|
||||
<key>Persist</key>
|
||||
<integer>1</integer>
|
||||
<key>Type</key>
|
||||
|
|
@ -4634,7 +4721,7 @@
|
|||
<key>Type</key>
|
||||
<string>String</string>
|
||||
<key>Value</key>
|
||||
<string>https://marketplace.secondlife.com/products/search?search[category_id]=200</string>
|
||||
<string>https://marketplace.secondlife.com/products/search?search[category_id]=200&search[page]=1&search[per_page]=12</string>
|
||||
</map>
|
||||
<key>GridCrossSections</key>
|
||||
<map>
|
||||
|
|
@ -6442,6 +6529,17 @@
|
|||
<key>Value</key>
|
||||
<real>16.0</real>
|
||||
</map>
|
||||
<key>MiniMapPrimMaxVertDistance</key>
|
||||
<map>
|
||||
<key>Comment</key>
|
||||
<string>Max height difference between avatar and prim to be shown on the MiniMap. Set to 0.0 to disable.</string>
|
||||
<key>Persist</key>
|
||||
<integer>1</integer>
|
||||
<key>Type</key>
|
||||
<string>F32</string>
|
||||
<key>Value</key>
|
||||
<real>256.0</real>
|
||||
</map>
|
||||
<key>MiniMapChatRing</key>
|
||||
<map>
|
||||
<key>Comment</key>
|
||||
|
|
|
|||
|
|
@ -0,0 +1,21 @@
|
|||
The Ubuntu Font Family is very long-term endeavour, and the first time
|
||||
that a professionally-designed font has been funded specifically with
|
||||
the intent of being an on-going community expanded project:
|
||||
|
||||
http://font.ubuntu.com/
|
||||
|
||||
Development of the Ubuntu Font Family is undertaken on Launchpad:
|
||||
|
||||
http://launchpad.net/ubuntu-font-family/
|
||||
|
||||
and this is where milestones, bug management and releases are handled.
|
||||
|
||||
Contributions are welcomed. Your work will be used on millions of
|
||||
computers every single day! Following the initial bootstrapping of
|
||||
Latin, Cyrillic, Greek, Arabic and Hebrew expansion will be undertaken
|
||||
by font designers from the font design and Ubuntu communities.
|
||||
|
||||
To ensure that the Ubuntu Font Family can be re-licensed to future
|
||||
widely-used libre font licences, copyright assignment is being required:
|
||||
|
||||
https://launchpad.net/~uff-contributors
|
||||
|
|
@ -0,0 +1,190 @@
|
|||
|
||||
Copyright (c) 2005-2008, The Android Open Source Project
|
||||
|
||||
Licensed under the Apache License, Version 2.0 (the "License");
|
||||
you may not use this file except in compliance with the License.
|
||||
|
||||
Unless required by applicable law or agreed to in writing, software
|
||||
distributed under the License is distributed on an "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
See the License for the specific language governing permissions and
|
||||
limitations under the License.
|
||||
|
||||
|
||||
Apache License
|
||||
Version 2.0, January 2004
|
||||
http://www.apache.org/licenses/
|
||||
|
||||
TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
|
||||
|
||||
1. Definitions.
|
||||
|
||||
"License" shall mean the terms and conditions for use, reproduction,
|
||||
and distribution as defined by Sections 1 through 9 of this document.
|
||||
|
||||
"Licensor" shall mean the copyright owner or entity authorized by
|
||||
the copyright owner that is granting the License.
|
||||
|
||||
"Legal Entity" shall mean the union of the acting entity and all
|
||||
other entities that control, are controlled by, or are under common
|
||||
control with that entity. For the purposes of this definition,
|
||||
"control" means (i) the power, direct or indirect, to cause the
|
||||
direction or management of such entity, whether by contract or
|
||||
otherwise, or (ii) ownership of fifty percent (50%) or more of the
|
||||
outstanding shares, or (iii) beneficial ownership of such entity.
|
||||
|
||||
"You" (or "Your") shall mean an individual or Legal Entity
|
||||
exercising permissions granted by this License.
|
||||
|
||||
"Source" form shall mean the preferred form for making modifications,
|
||||
including but not limited to software source code, documentation
|
||||
source, and configuration files.
|
||||
|
||||
"Object" form shall mean any form resulting from mechanical
|
||||
transformation or translation of a Source form, including but
|
||||
not limited to compiled object code, generated documentation,
|
||||
and conversions to other media types.
|
||||
|
||||
"Work" shall mean the work of authorship, whether in Source or
|
||||
Object form, made available under the License, as indicated by a
|
||||
copyright notice that is included in or attached to the work
|
||||
(an example is provided in the Appendix below).
|
||||
|
||||
"Derivative Works" shall mean any work, whether in Source or Object
|
||||
form, that is based on (or derived from) the Work and for which the
|
||||
editorial revisions, annotations, elaborations, or other modifications
|
||||
represent, as a whole, an original work of authorship. For the purposes
|
||||
of this License, Derivative Works shall not include works that remain
|
||||
separable from, or merely link (or bind by name) to the interfaces of,
|
||||
the Work and Derivative Works thereof.
|
||||
|
||||
"Contribution" shall mean any work of authorship, including
|
||||
the original version of the Work and any modifications or additions
|
||||
to that Work or Derivative Works thereof, that is intentionally
|
||||
submitted to Licensor for inclusion in the Work by the copyright owner
|
||||
or by an individual or Legal Entity authorized to submit on behalf of
|
||||
the copyright owner. For the purposes of this definition, "submitted"
|
||||
means any form of electronic, verbal, or written communication sent
|
||||
to the Licensor or its representatives, including but not limited to
|
||||
communication on electronic mailing lists, source code control systems,
|
||||
and issue tracking systems that are managed by, or on behalf of, the
|
||||
Licensor for the purpose of discussing and improving the Work, but
|
||||
excluding communication that is conspicuously marked or otherwise
|
||||
designated in writing by the copyright owner as "Not a Contribution."
|
||||
|
||||
"Contributor" shall mean Licensor and any individual or Legal Entity
|
||||
on behalf of whom a Contribution has been received by Licensor and
|
||||
subsequently incorporated within the Work.
|
||||
|
||||
2. Grant of Copyright License. Subject to the terms and conditions of
|
||||
this License, each Contributor hereby grants to You a perpetual,
|
||||
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
|
||||
copyright license to reproduce, prepare Derivative Works of,
|
||||
publicly display, publicly perform, sublicense, and distribute the
|
||||
Work and such Derivative Works in Source or Object form.
|
||||
|
||||
3. Grant of Patent License. Subject to the terms and conditions of
|
||||
this License, each Contributor hereby grants to You a perpetual,
|
||||
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
|
||||
(except as stated in this section) patent license to make, have made,
|
||||
use, offer to sell, sell, import, and otherwise transfer the Work,
|
||||
where such license applies only to those patent claims licensable
|
||||
by such Contributor that are necessarily infringed by their
|
||||
Contribution(s) alone or by combination of their Contribution(s)
|
||||
with the Work to which such Contribution(s) was submitted. If You
|
||||
institute patent litigation against any entity (including a
|
||||
cross-claim or counterclaim in a lawsuit) alleging that the Work
|
||||
or a Contribution incorporated within the Work constitutes direct
|
||||
or contributory patent infringement, then any patent licenses
|
||||
granted to You under this License for that Work shall terminate
|
||||
as of the date such litigation is filed.
|
||||
|
||||
4. Redistribution. You may reproduce and distribute copies of the
|
||||
Work or Derivative Works thereof in any medium, with or without
|
||||
modifications, and in Source or Object form, provided that You
|
||||
meet the following conditions:
|
||||
|
||||
(a) You must give any other recipients of the Work or
|
||||
Derivative Works a copy of this License; and
|
||||
|
||||
(b) You must cause any modified files to carry prominent notices
|
||||
stating that You changed the files; and
|
||||
|
||||
(c) You must retain, in the Source form of any Derivative Works
|
||||
that You distribute, all copyright, patent, trademark, and
|
||||
attribution notices from the Source form of the Work,
|
||||
excluding those notices that do not pertain to any part of
|
||||
the Derivative Works; and
|
||||
|
||||
(d) If the Work includes a "NOTICE" text file as part of its
|
||||
distribution, then any Derivative Works that You distribute must
|
||||
include a readable copy of the attribution notices contained
|
||||
within such NOTICE file, excluding those notices that do not
|
||||
pertain to any part of the Derivative Works, in at least one
|
||||
of the following places: within a NOTICE text file distributed
|
||||
as part of the Derivative Works; within the Source form or
|
||||
documentation, if provided along with the Derivative Works; or,
|
||||
within a display generated by the Derivative Works, if and
|
||||
wherever such third-party notices normally appear. The contents
|
||||
of the NOTICE file are for informational purposes only and
|
||||
do not modify the License. You may add Your own attribution
|
||||
notices within Derivative Works that You distribute, alongside
|
||||
or as an addendum to the NOTICE text from the Work, provided
|
||||
that such additional attribution notices cannot be construed
|
||||
as modifying the License.
|
||||
|
||||
You may add Your own copyright statement to Your modifications and
|
||||
may provide additional or different license terms and conditions
|
||||
for use, reproduction, or distribution of Your modifications, or
|
||||
for any such Derivative Works as a whole, provided Your use,
|
||||
reproduction, and distribution of the Work otherwise complies with
|
||||
the conditions stated in this License.
|
||||
|
||||
5. Submission of Contributions. Unless You explicitly state otherwise,
|
||||
any Contribution intentionally submitted for inclusion in the Work
|
||||
by You to the Licensor shall be under the terms and conditions of
|
||||
this License, without any additional terms or conditions.
|
||||
Notwithstanding the above, nothing herein shall supersede or modify
|
||||
the terms of any separate license agreement you may have executed
|
||||
with Licensor regarding such Contributions.
|
||||
|
||||
6. Trademarks. This License does not grant permission to use the trade
|
||||
names, trademarks, service marks, or product names of the Licensor,
|
||||
except as required for reasonable and customary use in describing the
|
||||
origin of the Work and reproducing the content of the NOTICE file.
|
||||
|
||||
7. Disclaimer of Warranty. Unless required by applicable law or
|
||||
agreed to in writing, Licensor provides the Work (and each
|
||||
Contributor provides its Contributions) on an "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
|
||||
implied, including, without limitation, any warranties or conditions
|
||||
of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
|
||||
PARTICULAR PURPOSE. You are solely responsible for determining the
|
||||
appropriateness of using or redistributing the Work and assume any
|
||||
risks associated with Your exercise of permissions under this License.
|
||||
|
||||
8. Limitation of Liability. In no event and under no legal theory,
|
||||
whether in tort (including negligence), contract, or otherwise,
|
||||
unless required by applicable law (such as deliberate and grossly
|
||||
negligent acts) or agreed to in writing, shall any Contributor be
|
||||
liable to You for damages, including any direct, indirect, special,
|
||||
incidental, or consequential damages of any character arising as a
|
||||
result of this License or out of the use or inability to use the
|
||||
Work (including but not limited to damages for loss of goodwill,
|
||||
work stoppage, computer failure or malfunction, or any and all
|
||||
other commercial damages or losses), even if such Contributor
|
||||
has been advised of the possibility of such damages.
|
||||
|
||||
9. Accepting Warranty or Additional Liability. While redistributing
|
||||
the Work or Derivative Works thereof, You may choose to offer,
|
||||
and charge a fee for, acceptance of support, warranty, indemnity,
|
||||
or other liability obligations and/or rights consistent with this
|
||||
License. However, in accepting such obligations, You may act only
|
||||
on Your own behalf and on Your sole responsibility, not on behalf
|
||||
of any other Contributor, and only if You agree to indemnify,
|
||||
defend, and hold each Contributor harmless for any liability
|
||||
incurred by, or claims asserted against, such Contributor by reason
|
||||
of your accepting any such warranty or additional liability.
|
||||
|
||||
END OF TERMS AND CONDITIONS
|
||||
|
||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
|
|
@ -0,0 +1,211 @@
|
|||
This is the FONTLOG file for the Ubuntu Font Family and attempts to follow
|
||||
the recommendations at: http://scripts.sil.org/OFL-FAQ_web#43cecb44
|
||||
|
||||
|
||||
Overview
|
||||
|
||||
The new Ubuntu Font Family was started to enable the personality of
|
||||
Ubuntu to be seen and felt in every menu, button and dialog.
|
||||
The typeface is sans-serif, uses OpenType features and is manually
|
||||
hinted for clarity on desktop and mobile computing screens.
|
||||
|
||||
The scope of the Ubuntu Font Family includes all the languages used by
|
||||
the various Ubuntu users around the world in tune with Ubuntu's
|
||||
philosophy which states that every user should be able to use their
|
||||
software in the language of their choice. So the Ubuntu Font Family
|
||||
project will be extended to cover many more written languages.
|
||||
|
||||
|
||||
History
|
||||
|
||||
The Ubuntu Font Family has been creating during 2010. As of December 2010
|
||||
coverage is provided for Latin, Cyrillic and Greek across Regular, Italic,
|
||||
Bold and Bold-Italic.
|
||||
|
||||
|
||||
ChangeLog
|
||||
|
||||
2010-03-08 (Paul Sladen) Ubuntu Font Family version 0.71.2
|
||||
|
||||
* (Production) Adjust Medium WeightClass to 500 (Md, MdIt) (LP: #730912)
|
||||
|
||||
2010-03-07 (Paul Sladen) Ubuntu Font Family version 0.71.1
|
||||
|
||||
* (Design) Add Capitalised version of glyphs and kern. (Lt, LtIt,
|
||||
Md, MdIt) DM (LP: #677446)
|
||||
* (Design) Re-space and tighen Regular and Italic by amount specified
|
||||
by Mark Shuttleworth (minus 4 FUnits). (Rg, It) (LP: #677149)
|
||||
* (Design) Design: Latin (U+0192) made straight more like l/c f with
|
||||
tail (LP: #670768)
|
||||
* (Design) (U+01B3) should have hook on right, as the lowercase
|
||||
(U+01B4) (LP: #681026)
|
||||
* (Design) Tail of Light Italic germandbls, longs and lowercase 'f'
|
||||
to match Italic/BoldItalic (LP: #623925)
|
||||
* (Production) Update <case> feature (Lt, LtIt, Md, MdIt). DM
|
||||
(LP: #676538, #676539)
|
||||
* (Production) Remove Bulgarian locl feature for Italics. (LP: #708578)
|
||||
* (Production) Update Description information with new string:
|
||||
"The Ubuntu Font Family are libre fonts funded by Canonical Ltd
|
||||
on behalf of the Ubuntu project. The font design work and
|
||||
technical implementation is being undertaken by Dalton Maag. The
|
||||
typeface is sans-serif, uses OpenType features and is manually
|
||||
hinted for clarity on desktop and mobile computing screens. The
|
||||
scope of the Ubuntu Font Family includes all the languages used
|
||||
by the various Ubuntu users around the world in tune with
|
||||
Ubuntu's philosophy which states that every user should be able
|
||||
to use their software in the language of their choice. The
|
||||
project is ongoing, and we expect the family will be extended to
|
||||
cover many written languages in the coming years."
|
||||
(Rg, It, Bd, BdIt, Lt, LtIt, Md, MdIt) (LP: #690590)
|
||||
* (Production) Pixel per em indicator added at U+F000 (Lt, LtIt, Md,
|
||||
MdIt) (LP: #615787)
|
||||
* (Production) Version number indicator added at U+EFFD (Lt, LtIt, Md,
|
||||
MdIt) (LP: #640623)
|
||||
* (Production) fstype bit set to 0 - Editable (Lt, LtIt, Md, MdIt)
|
||||
(LP: #648406)
|
||||
* (Production) Localisation of name table has been removed because
|
||||
of problems with Mac OS/X interpretation of localisation. DM
|
||||
(LP: #730785)
|
||||
* (Hinting) Regular '?' dot non-circular (has incorrect control
|
||||
value). (LP: #654336)
|
||||
* (Hinting) Too much space after latin capital 'G' in 13pt
|
||||
regular. Now reduced. (LP: #683437)
|
||||
* (Hinting) Balance Indian Rupee at 18,19pt (LP: #662177)
|
||||
* (Hinting) Make Regular '£' less ambiguous at 13-15 ppm (LP: #685562)
|
||||
* (Hinting) Regular capital 'W' made symmetrical at 31 ppem (LP: #686168)
|
||||
|
||||
2010-12-14 (Paul Sladen) Ubuntu Font Family version 0.70.1
|
||||
|
||||
Packaging, rebuilt from '2010-12-08 UbuntuFontsSourceFiles_070.zip':
|
||||
* (Midstream) Fstype bit != 0 (LP: #648406)
|
||||
* (Midstream) Add unit test to validate fstype bits (LP: #648406)
|
||||
* (Midstream) Add unit test to validate licence
|
||||
|
||||
2010-12-14 (Paul Sladen) Ubuntu Font Family version 0.70
|
||||
|
||||
Release notes 0.70:
|
||||
* (Design) Add Capitalised version of glyphs and kern. (Rg, It, Bd,
|
||||
BdIt) DM (LP: #676538, #677446)
|
||||
* (Design) Give acute and grave a slight upright move to more match
|
||||
the Hungarian double acute angle. (Rg, It, Bd, BdIt) (LP: #656647)
|
||||
* (Design) Shift Bold Italic accent glyphs to be consistent with the
|
||||
Italic. (BdIt only) DM (LP: #677449)
|
||||
* (Design) Check spacing and kerning of dcaron, lcaron and
|
||||
tcaron. (Rg, It, Bd, BdIt) (LP: #664722)
|
||||
* (Design) Add positive kerning to () {} [] to open out the
|
||||
combinations so they are less like a closed box. (Rg, It, Bd,
|
||||
BdIt) (LP: #671228)
|
||||
* (Design) Change design of acute.asc and check highest points (Bd
|
||||
and BdIt only) DM
|
||||
* (Production) Update <case> feature. DM (LP: #676538, #676539)
|
||||
* (Production) Remove Romanian locl feature. (Rg, It, Bd, BdIt)
|
||||
(LP: #635615)
|
||||
* (Production) Update Copyright information with new
|
||||
strings. "Copyright 2010 Canonical Ltd. Licensed under the Ubuntu
|
||||
Font Licence 1.0" Trademark string "Ubuntu and Canonical are
|
||||
registered trademarks of Canonical Ltd." (Rg, It, Bd, BdIt) DM
|
||||
(LP: #677450)
|
||||
* (Design) Check aligning of hyphen, math signs em, en, check braces
|
||||
and other brackets. 16/11 (LP: #676465)
|
||||
* (Production) Pixel per em indicator added at U+F000 (Rg, It, Bd,
|
||||
BdIt) (LP: #615787)
|
||||
* (Production) Version number indicator added at U+EFFD (Rg, It, Bd,
|
||||
BdIt) (LP: #640623)
|
||||
* (Production) fstype bit set to 0 - Editable (Rg, It, Bd, BdIt)
|
||||
(LP: #648406)
|
||||
|
||||
2010-10-05 (Paul Sladen) Ubuntu Font Family version 0.69
|
||||
|
||||
[Dalton Maag]
|
||||
* Italic,
|
||||
- Hinting on lowercase Italic l amended 19ppm (LP: #632451)
|
||||
- Hinting on lowercase Italic u amended 12ppm (LP: #626376)
|
||||
|
||||
* Regular, Italic, Bold, BoldItalic
|
||||
- New Rupee Sign added @ U+20B9 (LP: #645987)
|
||||
- Ubuntu Roundel added @ U+E0FF (LP: #651606)
|
||||
|
||||
[Paul Sladen]
|
||||
* All
|
||||
- Removed "!ubu" GSUB.calt ligature for U+E0FF (LP: #651606)
|
||||
|
||||
|
||||
Acknowledgements
|
||||
|
||||
If you make modifications be sure to add your name (N), email (E),
|
||||
web-address (if you have one) (W) and description (D). This list is in
|
||||
alphabetical order.
|
||||
|
||||
N: Amélie Bonet
|
||||
W: http://ameliebonet.com/
|
||||
D: Type design with Dalton Maag, particularly Ubuntu Mono
|
||||
|
||||
N: Ron Carpenter
|
||||
N: Vincent Connare
|
||||
N: Lukas Paltram
|
||||
W: http://www.daltonmaag.com/
|
||||
D: Type design and engineering with Dalton Maag
|
||||
|
||||
N: Dave Crossland
|
||||
E: dave@understandingfonts.com
|
||||
W: http://understandingfonts.com/
|
||||
D: Documentation and libre licensing guidance
|
||||
|
||||
N: Iain Farrell
|
||||
W: http://www.flickr.com/photos/iain
|
||||
D: Ubuntu Font Family delivery for the Ubuntu UX team
|
||||
|
||||
N: Shiraaz Gabru
|
||||
W: http://www.daltonmaag.com/
|
||||
D: Ubuntu Font Family project management at Dalton Maag
|
||||
|
||||
N: Marcus Haslam
|
||||
W: http://design.canonical.com/author/marcus-haslam/
|
||||
D: Creative inspiration
|
||||
|
||||
N: Ben Laenen
|
||||
D: Inspiration behind the pixels-per-em (PPEM) readout debugging glyph at U+F000
|
||||
(for this font the concept was re-implemented from scratch by Dalton-Maag)
|
||||
|
||||
N: Bruno Maag
|
||||
W: http://www.daltonmaag.com/
|
||||
D: Stylistic direction of the Ubuntu Font Family, as head of Dalton Maag
|
||||
|
||||
N: Ivanka Majic
|
||||
W: http://www.ivankamajic.com/
|
||||
D: Guiding the UX team and Cyrillic feedback
|
||||
|
||||
N: David Marshall
|
||||
N: Malcolm Wooden
|
||||
W: http://www.daltonmaag.com/
|
||||
D: Font Engineering and technical direction
|
||||
|
||||
N: Rodrigo Rivas
|
||||
D: Indian Rupee Sign glyph
|
||||
|
||||
N: Mark Shuttleworth
|
||||
E: mark@ubuntu.com
|
||||
W: http://www.markshuttleworth.com/
|
||||
D: Executive quality-control and funding
|
||||
|
||||
N: Paul Sladen
|
||||
E: ubuntu@paul.sladen.org
|
||||
W: http://www.paul.sladen.org/
|
||||
D: Bug triaging, packaging
|
||||
|
||||
N: Nicolas Spalinger
|
||||
W: http://planet.open-fonts.org
|
||||
D: Continuous guidance on libre/open font licensing, best practises in source
|
||||
tree layout, release and packaging (pkg-fonts Debian team)
|
||||
|
||||
N: Kenneth Wimer
|
||||
D: Initial PPA packaging
|
||||
|
||||
* Canonical Ltd is the primary commercial sponsor of the Ubuntu and
|
||||
Kubuntu operating systems
|
||||
* Dalton Maag are a custom type foundry headed by Bruno Maag
|
||||
|
||||
For further documentation, information on contributors, source code
|
||||
downloads and those involved with the Ubuntu Font Family, visit:
|
||||
|
||||
http://font.ubuntu.com/
|
||||
|
|
@ -0,0 +1,177 @@
|
|||
Ubuntu Font Family Licensing FAQ
|
||||
|
||||
Stylistic Foundations
|
||||
|
||||
The Ubuntu Font Family is the first time that a libre typeface has been
|
||||
designed professionally and explicitly with the intent of developing a
|
||||
public and long-term community-based development process.
|
||||
|
||||
When developing an open project, it is generally necessary to have firm
|
||||
foundations: a font needs to maintain harmony within itself even across
|
||||
many type designers and writing systems. For the [1]Ubuntu Font Family,
|
||||
the process has been guided with the type foundry Dalton Maag setting
|
||||
the project up with firm stylistic foundation covering several
|
||||
left-to-right scripts: Latin, Greek and Cyrillic; and right-to-left
|
||||
scripts: Arabic and Hebrew (due in 2011).
|
||||
|
||||
With this starting point the community will, under the supervision of
|
||||
[2]Canonical and [3]Dalton Maag, be able to build on the existing font
|
||||
sources to expand their character coverage. Ultimately everybody will
|
||||
be able to use the Ubuntu Font Family in their own written languages
|
||||
across the whole of Unicode (and this will take some time!).
|
||||
|
||||
Licensing
|
||||
|
||||
The licence chosen by any free software project is one of the
|
||||
foundational decisions that sets out how derivatives and contributions
|
||||
can occur, and in turn what kind of community will form around the
|
||||
project.
|
||||
|
||||
Using a licence that is compatible with other popular licences is a
|
||||
powerful constraint because of the [4]network effects: the freedom to
|
||||
share improvements between projects allows free software to reach
|
||||
high-quality over time. Licence-proliferation leads to many
|
||||
incompatible licences, undermining the network effect, the freedom to
|
||||
share and ultimately making the libre movement that Ubuntu is a part of
|
||||
less effective. For all kinds of software, writing a new licence is not
|
||||
to be taken lightly and is a choice that needs to be thoroughly
|
||||
justified if this path is taken.
|
||||
|
||||
Today it is not clear to Canonical what the best licence for a font
|
||||
project like the Ubuntu Font Family is: one that starts life designed
|
||||
by professionals and continues with the full range of community
|
||||
development, from highly commercial work in new directions to curious
|
||||
beginners' experimental contributions. The fast and steady pace of the
|
||||
Ubuntu release cycle means that an interim libre licence has been
|
||||
necessary to enable the consideration of the font family as part of
|
||||
Ubuntu 10.10 operating system release.
|
||||
|
||||
Before taking any decision on licensing, Canonical as sponsor and
|
||||
backer of the project has reviewed the many existing licenses used for
|
||||
libre/open fonts and engaged the stewards of the most popular licenses
|
||||
in detailed discussions. The current interim licence is the first step
|
||||
in progressing the state-of-the-art in licensing for libre/open font
|
||||
development.
|
||||
|
||||
The public discussion must now involve everyone in the (comparatively
|
||||
new) area of the libre/open font community; including font users,
|
||||
software freedom advocates, open source supporters and existing libre
|
||||
font developers. Most importantly, the minds and wishes of professional
|
||||
type designers considering entering the free software business
|
||||
community must be taken on board.
|
||||
|
||||
Conversations and discussion has taken place, privately, with
|
||||
individuals from the following groups (generally speaking personally on
|
||||
behalf of themselves, rather than their affiliations):
|
||||
* [5]SIL International
|
||||
* [6]Open Font Library
|
||||
* [7]Software Freedom Law Center
|
||||
* [8]Google Font API
|
||||
|
||||
Document embedding
|
||||
|
||||
One issue highlighted early on in the survey of existing font licences
|
||||
is that of document embedding. Almost all font licences, both free and
|
||||
unfree, permit embedding a font into a document to a certain degree.
|
||||
Embedding a font with other works that make up a document creates a
|
||||
"combined work" and copyleft would normally require the whole document
|
||||
to be distributed under the terms of the font licence. As beautiful as
|
||||
the font might be, such a licence makes a font too restrictive for
|
||||
useful general purpose digital publishing.
|
||||
|
||||
The situation is not entirely unique to fonts and is encountered also
|
||||
with tools such as GNU Bison: a vanilla GNU GPL licence would require
|
||||
anything generated with Bison to be made available under the terms of
|
||||
the GPL as well. To avoid this, Bison is [9]published with an
|
||||
additional permission to the GPL which allows the output of Bison to be
|
||||
made available under any licence.
|
||||
|
||||
The conflict between licensing of fonts and licensing of documents, is
|
||||
addressed in two popular libre font licences, the SIL OFL and GNU GPL:
|
||||
* [10]SIL Open Font Licence: When OFL fonts are embedded in a
|
||||
document, the OFL's terms do not apply to that document. (See
|
||||
[11]OFL-FAQ for details.
|
||||
* [12]GPL Font Exception: The situation is resolved by granting an
|
||||
additional permission to allow documents to not be covered by the
|
||||
GPL. (The exception is being reviewed).
|
||||
|
||||
The Ubuntu Font Family must also resolve this conflict, ensuring that
|
||||
if the font is embedded and then extracted it is once again clearly
|
||||
under the terms of its libre licence.
|
||||
|
||||
Long-term licensing
|
||||
|
||||
Those individuals involved, especially from Ubuntu and Canonical, are
|
||||
interested in finding a long-term libre licence that finds broad favour
|
||||
across the whole libre/open font community. The deliberation during the
|
||||
past months has been on how to licence the Ubuntu Font Family in the
|
||||
short-term, while knowingly encouraging everyone to pursue a long-term
|
||||
goal.
|
||||
* [13]Copyright assignment will be required so that the Ubuntu Font
|
||||
Family's licensing can be progressively expanded to one (or more)
|
||||
licences, as best practice continues to evolve within the
|
||||
libre/open font community.
|
||||
* Canonical will support and fund legal work on libre font licensing.
|
||||
It is recognised that the cost and time commitments required are
|
||||
likely to be significant. We invite other capable parties to join
|
||||
in supporting this activity.
|
||||
|
||||
The GPL version 3 (GPLv3) will be used for Ubuntu Font Family build
|
||||
scripts and the CC-BY-SA for associated documentation and non-font
|
||||
content: all items which do not end up embedded in general works and
|
||||
documents.
|
||||
|
||||
Ubuntu Font Licence
|
||||
|
||||
For the short-term only, the initial licence is the [14]Ubuntu Font
|
||||
License (UFL). This is loosely inspired from the work on the SIL
|
||||
OFL 1.1, and seeks to clarify the issues that arose during discussions
|
||||
and legal review, from the perspective of the backers, Canonical Ltd.
|
||||
Those already using established licensing models such as the GPL, OFL
|
||||
or Creative Commons licensing should have no worries about continuing
|
||||
to use them. The Ubuntu Font Licence (UFL) and the SIL Open Font
|
||||
Licence (SIL OFL) are not identical and should not be confused with
|
||||
each other. Please read the terms precisely. The UFL is only intended
|
||||
as an interim license, and the overriding aim is to support the
|
||||
creation of a more suitable and generic libre font licence. As soon as
|
||||
such a licence is developed, the Ubuntu Font Family will migrate to
|
||||
it—made possible by copyright assignment in the interium. Between the
|
||||
OFL 1.1, and the UFL 1.0, the following changes are made to produce the
|
||||
Ubuntu Font Licence:
|
||||
* Clarification:
|
||||
|
||||
1. Document embedding (see [15]embedding section above).
|
||||
2. Apply at point of distribution, instead of receipt
|
||||
3. Author vs. copyright holder disambiguation (type designers are
|
||||
authors, with the copyright holder normally being the funder)
|
||||
4. Define "Propagate" (for internationalisation, similar to the GPLv3)
|
||||
5. Define "Substantially Changed"
|
||||
6. Trademarks are explicitly not transferred
|
||||
7. Refine renaming requirement
|
||||
|
||||
Streamlining:
|
||||
8. Remove "not to be sold separately" clause
|
||||
9. Remove "Reserved Font Name(s)" declaration
|
||||
|
||||
A visual demonstration of how these points were implemented can be
|
||||
found in the accompanying coloured diff between SIL OFL 1.1 and the
|
||||
Ubuntu Font Licence 1.0: [16]ofl-1.1-ufl-1.0.diff.html
|
||||
|
||||
References
|
||||
|
||||
1. http://font.ubuntu.com/
|
||||
2. http://www.canonical.com/
|
||||
3. http://www.daltonmaag.com/
|
||||
4. http://en.wikipedia.org/wiki/Network_effect
|
||||
5. http://scripts.sil.org/
|
||||
6. http://openfontlibrary.org/
|
||||
7. http://www.softwarefreedom.org/
|
||||
8. http://code.google.com/webfonts
|
||||
9. http://www.gnu.org/licenses/gpl-faq.html#CanIUseGPLToolsForNF
|
||||
10. http://scripts.sil.org/OFL_web
|
||||
11. http://scripts.sil.org/OFL-FAQ_web
|
||||
12. http://www.gnu.org/licenses/gpl-faq.html#FontException
|
||||
13. https://launchpad.net/~uff-contributors
|
||||
14. http://font.ubuntu.com/ufl/ubuntu-font-licence-1.0.txt
|
||||
15. http://font.ubuntu.com/ufl/FAQ.html#embedding
|
||||
16. http://font.ubuntu.com/ufl/ofl-1.1-ufl-1.0.diff.html
|
||||
|
|
@ -0,0 +1,96 @@
|
|||
-------------------------------
|
||||
UBUNTU FONT LICENCE Version 1.0
|
||||
-------------------------------
|
||||
|
||||
PREAMBLE
|
||||
This licence allows the licensed fonts to be used, studied, modified and
|
||||
redistributed freely. The fonts, including any derivative works, can be
|
||||
bundled, embedded, and redistributed provided the terms of this licence
|
||||
are met. The fonts and derivatives, however, cannot be released under
|
||||
any other licence. The requirement for fonts to remain under this
|
||||
licence does not require any document created using the fonts or their
|
||||
derivatives to be published under this licence, as long as the primary
|
||||
purpose of the document is not to be a vehicle for the distribution of
|
||||
the fonts.
|
||||
|
||||
DEFINITIONS
|
||||
"Font Software" refers to the set of files released by the Copyright
|
||||
Holder(s) under this licence and clearly marked as such. This may
|
||||
include source files, build scripts and documentation.
|
||||
|
||||
"Original Version" refers to the collection of Font Software components
|
||||
as received under this licence.
|
||||
|
||||
"Modified Version" refers to any derivative made by adding to, deleting,
|
||||
or substituting -- in part or in whole -- any of the components of the
|
||||
Original Version, by changing formats or by porting the Font Software to
|
||||
a new environment.
|
||||
|
||||
"Copyright Holder(s)" refers to all individuals and companies who have a
|
||||
copyright ownership of the Font Software.
|
||||
|
||||
"Substantially Changed" refers to Modified Versions which can be easily
|
||||
identified as dissimilar to the Font Software by users of the Font
|
||||
Software comparing the Original Version with the Modified Version.
|
||||
|
||||
To "Propagate" a work means to do anything with it that, without
|
||||
permission, would make you directly or secondarily liable for
|
||||
infringement under applicable copyright law, except executing it on a
|
||||
computer or modifying a private copy. Propagation includes copying,
|
||||
distribution (with or without modification and with or without charging
|
||||
a redistribution fee), making available to the public, and in some
|
||||
countries other activities as well.
|
||||
|
||||
PERMISSION & CONDITIONS
|
||||
This licence does not grant any rights under trademark law and all such
|
||||
rights are reserved.
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a
|
||||
copy of the Font Software, to propagate the Font Software, subject to
|
||||
the below conditions:
|
||||
|
||||
1) Each copy of the Font Software must contain the above copyright
|
||||
notice and this licence. These can be included either as stand-alone
|
||||
text files, human-readable headers or in the appropriate machine-
|
||||
readable metadata fields within text or binary files as long as those
|
||||
fields can be easily viewed by the user.
|
||||
|
||||
2) The font name complies with the following:
|
||||
(a) The Original Version must retain its name, unmodified.
|
||||
(b) Modified Versions which are Substantially Changed must be renamed to
|
||||
avoid use of the name of the Original Version or similar names entirely.
|
||||
(c) Modified Versions which are not Substantially Changed must be
|
||||
renamed to both (i) retain the name of the Original Version and (ii) add
|
||||
additional naming elements to distinguish the Modified Version from the
|
||||
Original Version. The name of such Modified Versions must be the name of
|
||||
the Original Version, with "derivative X" where X represents the name of
|
||||
the new work, appended to that name.
|
||||
|
||||
3) The name(s) of the Copyright Holder(s) and any contributor to the
|
||||
Font Software shall not be used to promote, endorse or advertise any
|
||||
Modified Version, except (i) as required by this licence, (ii) to
|
||||
acknowledge the contribution(s) of the Copyright Holder(s) or (iii) with
|
||||
their explicit written permission.
|
||||
|
||||
4) The Font Software, modified or unmodified, in part or in whole, must
|
||||
be distributed entirely under this licence, and must not be distributed
|
||||
under any other licence. The requirement for fonts to remain under this
|
||||
licence does not affect any document created using the Font Software,
|
||||
except any version of the Font Software extracted from a document
|
||||
created using the Font Software may only be distributed under this
|
||||
licence.
|
||||
|
||||
TERMINATION
|
||||
This licence becomes null and void if any of the above conditions are
|
||||
not met.
|
||||
|
||||
DISCLAIMER
|
||||
THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
||||
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF
|
||||
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF
|
||||
COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE
|
||||
COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
|
||||
INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL
|
||||
DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
||||
FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM OTHER
|
||||
DEALINGS IN THE FONT SOFTWARE.
|
||||
|
|
@ -0,0 +1,15 @@
|
|||
----------------------
|
||||
Ubuntu Font Family
|
||||
======================
|
||||
|
||||
The Ubuntu Font Family are a set of matching new libre/open fonts in
|
||||
development during 2010--2011. The development is being funded by
|
||||
Canonical Ltd on behalf the wider Free Software community and the
|
||||
Ubuntu project. The technical font design work and implementation is
|
||||
being undertaken by Dalton Maag.
|
||||
|
||||
Both the final font Truetype/OpenType files and the design files used
|
||||
to produce the font family are distributed under an open licence and
|
||||
you are expressly encouraged to experiment, modify, share and improve.
|
||||
|
||||
http://font.ubuntu.com/
|
||||
|
|
@ -0,0 +1,4 @@
|
|||
Ubuntu and Canonical are registered trademarks of Canonical Ltd.
|
||||
|
||||
The licence accompanying these works does not grant any rights
|
||||
under trademark law and all such rights are reserved.
|
||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
|
|
@ -0,0 +1,5 @@
|
|||
Copyright 2010 Canonical Ltd.
|
||||
|
||||
This Font Software is licensed under the Ubuntu Font Licence, Version
|
||||
1.0. https://launchpad.net/ubuntu-font-licence
|
||||
|
||||
|
|
@ -3,21 +3,15 @@
|
|||
* @brief Floater for beam colors
|
||||
* @copyright Copyright (c) 2011 LordGregGreg Back
|
||||
*
|
||||
* This library is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Lesser General Public
|
||||
* License as published by the Free Software Foundation; either
|
||||
* version 2.1 of the License, or (at your option) any later version.
|
||||
*
|
||||
* This library is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public
|
||||
* License along with this library; if not, write to the Free Software
|
||||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
* This code is free. It comes
|
||||
* WITHOUT ANY WARRANTY, without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. You can redistribute it
|
||||
* and/or modify it under the terms of the Do What The Fuck You Want
|
||||
* To Public License, Version 2, as published by Sam Hocevar. See
|
||||
* http://sam.zoy.org/wtfpl/COPYING for more details.
|
||||
*/
|
||||
|
||||
|
||||
#include "llviewerprecompiledheaders.h"
|
||||
|
||||
#include "lggbeamcolormapfloater.h"
|
||||
|
|
|
|||
|
|
@ -3,21 +3,15 @@
|
|||
* @brief Floater for beam colors
|
||||
* @copyright Copyright (c) 2011 LordGregGreg Back
|
||||
*
|
||||
* This library is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Lesser General Public
|
||||
* License as published by the Free Software Foundation; either
|
||||
* version 2.1 of the License, or (at your option) any later version.
|
||||
*
|
||||
* This library is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public
|
||||
* License along with this library; if not, write to the Free Software
|
||||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
* This code is free. It comes
|
||||
* WITHOUT ANY WARRANTY, without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. You can redistribute it
|
||||
* and/or modify it under the terms of the Do What The Fuck You Want
|
||||
* To Public License, Version 2, as published by Sam Hocevar. See
|
||||
* http://sam.zoy.org/wtfpl/COPYING for more details.
|
||||
*/
|
||||
|
||||
|
||||
#include "llviewerprecompiledheaders.h"
|
||||
|
||||
#include "llagentdata.h"
|
||||
|
|
|
|||
|
|
@ -3,20 +3,14 @@
|
|||
* @brief Floater for beam shapes
|
||||
* @copyright Copyright (c) 2011 LordGregGreg Back
|
||||
*
|
||||
* This library is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Lesser General Public
|
||||
* License as published by the Free Software Foundation; either
|
||||
* version 2.1 of the License, or (at your option) any later version.
|
||||
*
|
||||
* This library is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public
|
||||
* License along with this library; if not, write to the Free Software
|
||||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
* This code is free. It comes
|
||||
* WITHOUT ANY WARRANTY, without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. You can redistribute it
|
||||
* and/or modify it under the terms of the Do What The Fuck You Want
|
||||
* To Public License, Version 2, as published by Sam Hocevar. See
|
||||
* http://sam.zoy.org/wtfpl/COPYING for more details.
|
||||
*/
|
||||
|
||||
#include "llviewerprecompiledheaders.h"
|
||||
|
||||
#include "lggbeammapfloater.h"
|
||||
|
|
|
|||
|
|
@ -3,19 +3,12 @@
|
|||
* @brief Floater for beam shapes
|
||||
* @copyright Copyright (c) 2011 LordGregGreg Back
|
||||
*
|
||||
* This library is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Lesser General Public
|
||||
* License as published by the Free Software Foundation; either
|
||||
* version 2.1 of the License, or (at your option) any later version.
|
||||
*
|
||||
* This library is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public
|
||||
* License along with this library; if not, write to the Free Software
|
||||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
* This code is free. It comes
|
||||
* WITHOUT ANY WARRANTY, without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. You can redistribute it
|
||||
* and/or modify it under the terms of the Do What The Fuck You Want
|
||||
* To Public License, Version 2, as published by Sam Hocevar. See
|
||||
* http://sam.zoy.org/wtfpl/COPYING for more details.
|
||||
*/
|
||||
|
||||
#include "llviewerprecompiledheaders.h"
|
||||
|
|
|
|||
|
|
@ -3,21 +3,15 @@
|
|||
* @brief Manager for beam shapes
|
||||
* @copyright Copyright (c) 2011 LordGregGreg Back
|
||||
*
|
||||
* This library is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Lesser General Public
|
||||
* License as published by the Free Software Foundation; either
|
||||
* version 2.1 of the License, or (at your option) any later version.
|
||||
*
|
||||
* This library is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public
|
||||
* License along with this library; if not, write to the Free Software
|
||||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
* This code is free. It comes
|
||||
* WITHOUT ANY WARRANTY, without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. You can redistribute it
|
||||
* and/or modify it under the terms of the Do What The Fuck You Want
|
||||
* To Public License, Version 2, as published by Sam Hocevar. See
|
||||
* http://sam.zoy.org/wtfpl/COPYING for more details.
|
||||
*/
|
||||
|
||||
|
||||
#include "llviewerprecompiledheaders.h"
|
||||
#include "lggbeammaps.h"
|
||||
#include "lggbeamscolors.h"
|
||||
|
|
|
|||
|
|
@ -3,22 +3,14 @@
|
|||
* @brief Manager for Beam Shapes
|
||||
* @copyright Copyright (c) 2011 LordGregGreg Back
|
||||
*
|
||||
* This library is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Lesser General Public
|
||||
* License as published by the Free Software Foundation; either
|
||||
* version 2.1 of the License, or (at your option) any later version.
|
||||
*
|
||||
* This library is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public
|
||||
* License along with this library; if not, write to the Free Software
|
||||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
* This code is free. It comes
|
||||
* WITHOUT ANY WARRANTY, without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. You can redistribute it
|
||||
* and/or modify it under the terms of the Do What The Fuck You Want
|
||||
* To Public License, Version 2, as published by Sam Hocevar. See
|
||||
* http://sam.zoy.org/wtfpl/COPYING for more details.
|
||||
*/
|
||||
|
||||
|
||||
#include "llhudeffecttrail.h"
|
||||
#include "llviewerprecompiledheaders.h"
|
||||
#include "lggbeamscolors.h"
|
||||
|
|
|
|||
|
|
@ -3,21 +3,15 @@
|
|||
* @brief Manager for beams colors
|
||||
* @copyright Copyright (c) 2011 LordGregGreg Back
|
||||
*
|
||||
* This library is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Lesser General Public
|
||||
* License as published by the Free Software Foundation; either
|
||||
* version 2.1 of the License, or (at your option) any later version.
|
||||
*
|
||||
* This library is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public
|
||||
* License along with this library; if not, write to the Free Software
|
||||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
* This code is free. It comes
|
||||
* WITHOUT ANY WARRANTY, without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. You can redistribute it
|
||||
* and/or modify it under the terms of the Do What The Fuck You Want
|
||||
* To Public License, Version 2, as published by Sam Hocevar. See
|
||||
* http://sam.zoy.org/wtfpl/COPYING for more details.
|
||||
*/
|
||||
|
||||
|
||||
////////////////////////////////////////////////////
|
||||
//////////////DATA TYPE/////////////////////////////
|
||||
|
||||
|
|
|
|||
|
|
@ -3,20 +3,14 @@
|
|||
* @brief Manager for beams colors
|
||||
* @copyright Copyright (c) 2011 LordGregGreg Back
|
||||
*
|
||||
* This library is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Lesser General Public
|
||||
* License as published by the Free Software Foundation; either
|
||||
* version 2.1 of the License, or (at your option) any later version.
|
||||
*
|
||||
* This library is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public
|
||||
* License along with this library; if not, write to the Free Software
|
||||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
* This code is free. It comes
|
||||
* WITHOUT ANY WARRANTY, without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. You can redistribute it
|
||||
* and/or modify it under the terms of the Do What The Fuck You Want
|
||||
* To Public License, Version 2, as published by Sam Hocevar. See
|
||||
* http://sam.zoy.org/wtfpl/COPYING for more details.
|
||||
*/
|
||||
|
||||
#ifndef LGGBEAMCOLORDATA
|
||||
#define LGGBEAMCOLORDATA
|
||||
|
||||
|
|
|
|||
|
|
@ -343,7 +343,7 @@ LLAgent::~LLAgent()
|
|||
//-----------------------------------------------------------------------------
|
||||
void LLAgent::onAppFocusGained()
|
||||
{
|
||||
if (CAMERA_MODE_MOUSELOOK == gAgentCamera.getCameraMode())
|
||||
if (CAMERA_MODE_MOUSELOOK == gAgentCamera.getCameraMode() && gSavedSettings.getBOOL("FSLeaveMouselookOnFocus"))
|
||||
{
|
||||
gAgentCamera.changeCameraToDefault();
|
||||
LLToolMgr::getInstance()->clearSavedTool();
|
||||
|
|
@ -1079,18 +1079,11 @@ F32 LLAgent::clampPitchToLimits(F32 angle)
|
|||
LLVector3 skyward = getReferenceUpVector();
|
||||
|
||||
F32 look_down_limit;
|
||||
F32 look_up_limit = 10.f * DEG_TO_RAD;
|
||||
F32 look_up_limit = 1.f * DEG_TO_RAD;
|
||||
|
||||
F32 angle_from_skyward = acos( mFrameAgent.getAtAxis() * skyward );
|
||||
|
||||
if (isAgentAvatarValid() && gAgentAvatarp->isSitting())
|
||||
{
|
||||
look_down_limit = 130.f * DEG_TO_RAD;
|
||||
}
|
||||
else
|
||||
{
|
||||
look_down_limit = 170.f * DEG_TO_RAD;
|
||||
}
|
||||
look_down_limit = 179.f * DEG_TO_RAD;
|
||||
|
||||
// clamp pitch to limits
|
||||
if ((angle >= 0.f) && (angle_from_skyward + angle > look_down_limit))
|
||||
|
|
@ -3449,7 +3442,7 @@ bool LLAgent::teleportCore(bool is_local)
|
|||
if(TELEPORT_NONE != mTeleportState)
|
||||
{
|
||||
llwarns << "Attempt to teleport when already teleporting." << llendl;
|
||||
return false;
|
||||
//return false; //LO - yea, lets not return here, we may be stuck in TP and if we are, letting this go through will get us out;
|
||||
}
|
||||
|
||||
#if 0
|
||||
|
|
|
|||
|
|
@ -1570,7 +1570,10 @@ bool LLAppViewer::cleanup()
|
|||
removeCacheFiles("*.tmp");
|
||||
removeCacheFiles("*.lso");
|
||||
removeCacheFiles("*.out");
|
||||
removeCacheFiles("*.dsf");
|
||||
if(!gSavedSettings.getBOOL("PhoenixKeepUnpackedCacheFiles"))
|
||||
{
|
||||
removeCacheFiles("*.dsf");
|
||||
}
|
||||
removeCacheFiles("*.bodypart");
|
||||
removeCacheFiles("*.clothing");
|
||||
|
||||
|
|
|
|||
|
|
@ -171,7 +171,7 @@ BOOL LLAvatarListItem::postBuild()
|
|||
mInfoBtn = getChild<LLButton>("info_btn");
|
||||
mProfileBtn = getChild<LLButton>("profile_btn");
|
||||
|
||||
mInfoBtn->setVisible(false);
|
||||
mInfoBtn->setVisible(true); // changed from false to have the info button always shown -WoLf
|
||||
mInfoBtn->setClickedCallback(boost::bind(&LLAvatarListItem::onInfoBtnClick, this));
|
||||
|
||||
mProfileBtn->setVisible(false);
|
||||
|
|
@ -238,7 +238,7 @@ void LLAvatarListItem::onMouseLeave(S32 x, S32 y, MASK mask)
|
|||
{
|
||||
getChildView("hovered_icon")->setVisible( false);
|
||||
|
||||
mInfoBtn->setVisible(false);
|
||||
// mInfoBtn->setVisible(false); // commented out to have the info button always shown -WoLf
|
||||
mHovered = false;
|
||||
LLPanel::onMouseLeave(x, y, mask);
|
||||
updateChildren();
|
||||
|
|
|
|||
|
|
@ -304,12 +304,13 @@ public:
|
|||
{
|
||||
user_name->setValue( LLSD() );
|
||||
LLAvatarNameCache::get(mAvatarID,
|
||||
boost::bind(&LLChatHistoryHeader::onAvatarNameCache, this, _1, _2));
|
||||
boost::bind(&LLChatHistoryHeader::onAvatarNameCache, this, _1, _2, chat.mChatType));
|
||||
}
|
||||
else
|
||||
{
|
||||
// If the agent's chat was subject to @shownames=n we should display their anonimized name
|
||||
mFrom = chat.mFromName;
|
||||
if (chat.mChatType == CHAT_TYPE_IM) mFrom = LLTrans::getString("IMPrefix") + " " + mFrom;
|
||||
user_name->setValue(mFrom);
|
||||
user_name->setToolTip(mFrom);
|
||||
setToolTip(mFrom);
|
||||
|
|
@ -345,12 +346,13 @@ public:
|
|||
user_name->appendText(" - " + username, FALSE, style_params_name);
|
||||
}
|
||||
*/
|
||||
LLAvatarNameCache::get(mAvatarID, boost::bind(&LLChatHistoryHeader::onAvatarNameCache, this, _1, _2));
|
||||
LLAvatarNameCache::get(mAvatarID, boost::bind(&LLChatHistoryHeader::onAvatarNameCache, this, _1, _2, chat.mChatType));
|
||||
}
|
||||
else
|
||||
{
|
||||
// If the agent's chat was subject to @shownames=n we should display their anonimized name
|
||||
mFrom = chat.mFromName;
|
||||
if (chat.mChatType == CHAT_TYPE_IM) mFrom = LLTrans::getString("IMPrefix") + " " + mFrom;
|
||||
user_name->setValue(mFrom);
|
||||
user_name->setToolTip(mFrom);
|
||||
setToolTip(mFrom);
|
||||
|
|
@ -470,12 +472,13 @@ public:
|
|||
}
|
||||
}
|
||||
|
||||
void onAvatarNameCache(const LLUUID& agent_id, const LLAvatarName& av_name)
|
||||
void onAvatarNameCache(const LLUUID& agent_id, const LLAvatarName& av_name, EChatType chat_type)
|
||||
{
|
||||
mFrom = av_name.mDisplayName;
|
||||
if (chat_type == CHAT_TYPE_IM) mFrom = LLTrans::getString("IMPrefix") + " " + mFrom;
|
||||
|
||||
LLTextBox* user_name = getChild<LLTextBox>("user_name");
|
||||
user_name->setValue( LLSD(av_name.mDisplayName ) );
|
||||
user_name->setValue( LLSD(mFrom) );
|
||||
user_name->setToolTip( av_name.mUsername );
|
||||
|
||||
if (gSavedSettings.getBOOL("NameTagShowUsernames") && LLAvatarNameCache::useDisplayNames())
|
||||
|
|
@ -955,6 +958,12 @@ void LLChatHistory::appendMessage(const LLChat& chat, const LLSD &args, const LL
|
|||
// reset the style parameter for the header only -AO
|
||||
link_params.color(header_name_color);
|
||||
link_params.readonly_color(header_name_color);
|
||||
|
||||
if (chat.mChatType == CHAT_TYPE_IM)
|
||||
{
|
||||
mEditor->appendText(LLTrans::getString("IMPrefix") + " ", false, link_params);
|
||||
}
|
||||
|
||||
if ((gSavedSettings.getBOOL("NameTagShowUsernames")) && (gSavedSettings.getBOOL("UseDisplayNames")))
|
||||
{
|
||||
checkDisplayName();
|
||||
|
|
@ -976,7 +985,14 @@ void LLChatHistory::appendMessage(const LLChat& chat, const LLSD &args, const LL
|
|||
}
|
||||
else
|
||||
{
|
||||
mEditor->appendText(chat.mFromName + delimiter, false, style_params);
|
||||
if (chat.mChatType == CHAT_TYPE_IM)
|
||||
{
|
||||
mEditor->appendText(LLTrans::getString("IMPrefix") + " " + chat.mFromName + delimiter, false, style_params);
|
||||
}
|
||||
else
|
||||
{
|
||||
mEditor->appendText(chat.mFromName + delimiter, false, style_params);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -990,7 +1006,10 @@ void LLChatHistory::appendMessage(const LLChat& chat, const LLSD &args, const LL
|
|||
|
||||
LLDate new_message_time = LLDate::now();
|
||||
|
||||
if (mLastFromName == chat.mFromName
|
||||
std::string tmp_from_name(chat.mFromName);
|
||||
if (chat.mChatType == CHAT_TYPE_IM) tmp_from_name = LLTrans::getString("IMPrefix") + " " + tmp_from_name;
|
||||
|
||||
if (mLastFromName == tmp_from_name
|
||||
&& mLastFromID == chat.mFromID
|
||||
&& mLastMessageTime.notNull()
|
||||
&& (new_message_time.secondsSinceEpoch() - mLastMessageTime.secondsSinceEpoch()) < 60.0
|
||||
|
|
@ -1031,7 +1050,9 @@ void LLChatHistory::appendMessage(const LLChat& chat, const LLSD &args, const LL
|
|||
widget_associated_text += chat.mFromName + delimiter;
|
||||
|
||||
mEditor->appendWidget(p, widget_associated_text, false);
|
||||
|
||||
mLastFromName = chat.mFromName;
|
||||
if (chat.mChatType == CHAT_TYPE_IM) mLastFromName = LLTrans::getString("IMPrefix") + " " + mLastFromName;
|
||||
mLastFromID = chat.mFromID;
|
||||
mLastMessageTime = new_message_time;
|
||||
mIsLastMessageFromLog = message_from_log;
|
||||
|
|
|
|||
|
|
@ -72,6 +72,7 @@ LLFloaterMap::LLFloaterMap(const LLSD& key)
|
|||
mTextBoxNorthEast(NULL),
|
||||
mTextBoxNorthWest(NULL),
|
||||
mTextBoxSouthWest(NULL),
|
||||
mPopupMenu(NULL),
|
||||
mMap(NULL)
|
||||
{
|
||||
}
|
||||
|
|
@ -102,6 +103,22 @@ BOOL LLFloaterMap::postBuild()
|
|||
mTextBoxSouthWest = getChild<LLTextBox> ("floater_map_southwest");
|
||||
mTextBoxNorthWest = getChild<LLTextBox> ("floater_map_northwest");
|
||||
|
||||
// <Firestorm Minimap changes>
|
||||
LLUICtrl::CommitCallbackRegistry::ScopedRegistrar registrar;
|
||||
|
||||
registrar.add("Minimap.Zoom", boost::bind(&LLFloaterMap::handleZoom, this, _2));
|
||||
registrar.add("Minimap.Tracker", boost::bind(&LLFloaterMap::handleStopTracking, this, _2));
|
||||
|
||||
registrar.add("Minimap.Mark", boost::bind(&LLFloaterMap::handleMark, this, _2));
|
||||
registrar.add("Minimap.ClearMarks", boost::bind(&LLFloaterMap::handleClearMarks, this));
|
||||
|
||||
mPopupMenu = LLUICtrlFactory::getInstance()->createFromFile<LLMenuGL>("menu_mini_map.xml", gMenuHolder, LLViewerMenuHolderGL::child_registry_t::instance());
|
||||
if (mPopupMenu && !LLTracker::isTracking(0))
|
||||
{
|
||||
mPopupMenu->setItemEnabled ("Stop Tracking", false);
|
||||
}
|
||||
// </Firestorm minimap changes>
|
||||
|
||||
stretchMiniMap(getRect().getWidth() - MAP_PADDING_LEFT - MAP_PADDING_RIGHT
|
||||
,getRect().getHeight() - MAP_PADDING_TOP - MAP_PADDING_BOTTOM);
|
||||
|
||||
|
|
@ -145,9 +162,22 @@ BOOL LLFloaterMap::handleDoubleClick( S32 x, S32 y, MASK mask )
|
|||
// If DoubleClickTeleport is on, double clicking the minimap will teleport there
|
||||
gAgent.teleportViaLocationLookAt(pos_global);
|
||||
}
|
||||
else if (gSavedSettings.getBOOL("DoubleClickShowWorldMap"))
|
||||
else if (gSavedSettings.getBOOL("DoubleClickShowWorldMap"))
|
||||
{
|
||||
LLFloaterReg::showInstance("world_map");
|
||||
}
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
BOOL LLFloaterMap::handleRightMouseDown(S32 x, S32 y, MASK mask)
|
||||
{
|
||||
mMap->saveClosestAgentAtLastRightClick();
|
||||
|
||||
if (mPopupMenu)
|
||||
{
|
||||
LLFloaterReg::showInstance("world_map");
|
||||
mPopupMenu->buildDrawLabels();
|
||||
mPopupMenu->updateParent(LLMenuGL::sMenuContainer);
|
||||
LLMenuGL::showPopup(this, mPopupMenu, x, y);
|
||||
}
|
||||
return TRUE;
|
||||
}
|
||||
|
|
@ -221,6 +251,12 @@ void LLFloaterMap::draw()
|
|||
setMouseOpaque(TRUE);
|
||||
getDragHandle()->setMouseOpaque(TRUE);
|
||||
}
|
||||
|
||||
if (LLTracker::isTracking(0))
|
||||
{
|
||||
mPopupMenu->setItemEnabled ("Stop Tracking", true);
|
||||
}
|
||||
|
||||
|
||||
LLFloater::draw();
|
||||
}
|
||||
|
|
@ -301,3 +337,22 @@ void LLFloaterMap::setMinimized(BOOL b)
|
|||
setTitle("");
|
||||
}
|
||||
}
|
||||
|
||||
void LLFloaterMap::handleMark(const LLSD& userdata)
|
||||
{
|
||||
mMap->setAvatarMark(userdata);
|
||||
}
|
||||
|
||||
void LLFloaterMap::handleClearMarks()
|
||||
{
|
||||
mMap->clearAvatarMarks();
|
||||
}
|
||||
|
||||
void LLFloaterMap::handleStopTracking (const LLSD& userdata)
|
||||
{
|
||||
if (mPopupMenu)
|
||||
{
|
||||
mPopupMenu->setItemEnabled ("Stop Tracking", false);
|
||||
LLTracker::stopTracking ((void*)LLTracker::isTracking(NULL));
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -29,6 +29,7 @@
|
|||
|
||||
#include "llfloater.h"
|
||||
|
||||
class LLMenuGL;
|
||||
class LLNetMap;
|
||||
class LLTextBox;
|
||||
|
||||
|
|
@ -43,6 +44,7 @@ public:
|
|||
|
||||
/*virtual*/ BOOL postBuild();
|
||||
/*virtual*/ BOOL handleDoubleClick( S32 x, S32 y, MASK mask );
|
||||
/*virtual*/ BOOL handleRightMouseDown( S32 x, S32 y, MASK mask );
|
||||
/*virtual*/ void reshape(S32 width, S32 height, BOOL called_from_parent = TRUE);
|
||||
/*virtual*/ void draw();
|
||||
/*virtual*/ void onFocusLost();
|
||||
|
|
@ -52,11 +54,16 @@ public:
|
|||
|
||||
private:
|
||||
void handleZoom(const LLSD& userdata);
|
||||
void handleStopTracking (const LLSD& userdata);
|
||||
void setDirectionPos( LLTextBox* text_box, F32 rotation );
|
||||
void updateMinorDirections();
|
||||
void handleMark(const LLSD& userdata);
|
||||
void handleClearMarks();
|
||||
|
||||
void stretchMiniMap(S32 width,S32 height);
|
||||
|
||||
LLMenuGL* mPopupMenu;
|
||||
|
||||
LLTextBox* mTextBoxEast;
|
||||
LLTextBox* mTextBoxNorth;
|
||||
LLTextBox* mTextBoxWest;
|
||||
|
|
|
|||
|
|
@ -940,17 +940,25 @@ void LLPanelRegionDebugInfo::onClickTopScripts(void* data)
|
|||
// static
|
||||
void LLPanelRegionDebugInfo::onClickRestart(void* data)
|
||||
{
|
||||
// <Ansariel FIRE-1073>
|
||||
LLPanelRegionDebugInfo* self = (LLPanelRegionDebugInfo*)data;
|
||||
LLSD delay;
|
||||
|
||||
if (self) delay = self->getChild<LLSpinCtrl>("restart_delay")->getValue();
|
||||
else delay = LLSD(120);
|
||||
// </Ansariel FIRE-1073>
|
||||
|
||||
LLNotificationsUtil::add("ConfirmRestart", LLSD(), LLSD(),
|
||||
boost::bind(&LLPanelRegionDebugInfo::callbackRestart, (LLPanelRegionDebugInfo*)data, _1, _2));
|
||||
boost::bind(&LLPanelRegionDebugInfo::callbackRestart, (LLPanelRegionDebugInfo*)data, _1, _2, delay));
|
||||
}
|
||||
|
||||
bool LLPanelRegionDebugInfo::callbackRestart(const LLSD& notification, const LLSD& response)
|
||||
bool LLPanelRegionDebugInfo::callbackRestart(const LLSD& notification, const LLSD& response, const LLSD& seconds)
|
||||
{
|
||||
S32 option = LLNotificationsUtil::getSelectedOption(notification, response);
|
||||
if (option != 0) return false;
|
||||
|
||||
strings_t strings;
|
||||
strings.push_back("120");
|
||||
strings.push_back(seconds.asString());
|
||||
LLUUID invoice(LLFloaterRegionInfo::getLastInvoice());
|
||||
sendEstateOwnerMessage(gMessageSystem, "restart", invoice, strings);
|
||||
return false;
|
||||
|
|
|
|||
|
|
@ -194,7 +194,7 @@ protected:
|
|||
static void onClickTopColliders(void*);
|
||||
static void onClickTopScripts(void*);
|
||||
static void onClickRestart(void* data);
|
||||
bool callbackRestart(const LLSD& notification, const LLSD& response);
|
||||
bool callbackRestart(const LLSD& notification, const LLSD& response, const LLSD& seconds); // Ansariel, added seconds for FIRE-1073
|
||||
static void onClickCancelRestart(void* data);
|
||||
|
||||
private:
|
||||
|
|
|
|||
|
|
@ -383,7 +383,7 @@ void LLGroupActions::refresh_notices()
|
|||
//-TT - Patch : ShowGroupFloaters
|
||||
if (!gSavedSettings.getBOOL("ShowGroupFloaters"))
|
||||
{
|
||||
//-TT
|
||||
//-TT
|
||||
// AO: We don't change modals on people unless they manually request this
|
||||
//LLSideTray::getInstance()->showPanel("panel_group_info_sidetray", params);
|
||||
//-TT - Patch : ShowGroupFloaters
|
||||
|
|
|
|||
|
|
@ -72,28 +72,29 @@ void LLIMHandler::updatePhoenixLogImToChatConsole(const LLSD &data)
|
|||
PhoenixLogImToChatConsole = data.asBoolean();
|
||||
}
|
||||
|
||||
//<Ansariel> better DN lookups
|
||||
//void LLIMHandler::lookupDisplayNames(const LLUUID& agent_id)
|
||||
//{
|
||||
// LLAvatarNameCache::get(agent_id, boost::bind(&LLIMHandler::onAvatarNameCache, this, _1, _2));
|
||||
//}
|
||||
//
|
||||
//void LLIMHandler::onAvatarNameCache(const LLUUID& agent_id, const LLAvatarName& av_name)
|
||||
//{
|
||||
// mAvatarName = av_name;
|
||||
//}
|
||||
//
|
||||
//bool LLIMHandler::checkDisplayName()
|
||||
//{
|
||||
// for (int i = 0; i <=20; i++)
|
||||
// {
|
||||
// if (mAvatarName.mDisplayName.empty())
|
||||
// ms_sleep(50);
|
||||
// else
|
||||
// return true;
|
||||
// }
|
||||
// return false;
|
||||
//}
|
||||
|
||||
void LLIMHandler::lookupDisplayNames(const LLUUID& agent_id)
|
||||
{
|
||||
LLAvatarNameCache::get(agent_id, boost::bind(&LLIMHandler::onAvatarNameCache, this, _1, _2));
|
||||
}
|
||||
|
||||
void LLIMHandler::onAvatarNameCache(const LLUUID& agent_id, const LLAvatarName& av_name)
|
||||
{
|
||||
mAvatarName = av_name;
|
||||
}
|
||||
|
||||
bool LLIMHandler::checkDisplayName()
|
||||
{
|
||||
for (int i = 0; i <=20; i++)
|
||||
{
|
||||
if (mAvatarName.mDisplayName.empty())
|
||||
ms_sleep(50);
|
||||
else
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
|
||||
//--------------------------------------------------------------------------
|
||||
|
|
@ -118,49 +119,10 @@ bool LLIMHandler::processNotification(const LLSD& notify)
|
|||
// Filter notifications with empty ID and empty message
|
||||
if (substitutions["FROM_ID"].asString() == "" && substitutions["MESSAGE"].asString() == "") return false;
|
||||
|
||||
lookupDisplayNames(LLUUID(substitutions["FROM_ID"].asString()));
|
||||
|
||||
std::string senderName;
|
||||
std::string message(substitutions["MESSAGE"].asString());
|
||||
std::string delimiter = ": ";
|
||||
std::string prefix = message.substr(0, 4);
|
||||
LLStringUtil::toLower(prefix);
|
||||
|
||||
// irc styled messages
|
||||
if (prefix == "/me " || prefix == "/me'")
|
||||
{
|
||||
delimiter = LLStringUtil::null;
|
||||
message = message.substr(3);
|
||||
}
|
||||
|
||||
if ((gSavedSettings.getBOOL("NameTagShowUsernames")) && (gSavedSettings.getBOOL("UseDisplayNames")))
|
||||
{
|
||||
checkDisplayName();
|
||||
senderName = mAvatarName.getCompleteName();
|
||||
}
|
||||
else if (gSavedSettings.getBOOL("UseDisplayNames"))
|
||||
{
|
||||
checkDisplayName();
|
||||
senderName = mAvatarName.mDisplayName;
|
||||
}
|
||||
else
|
||||
{
|
||||
checkDisplayName();
|
||||
senderName = mAvatarName.getLegacyName();
|
||||
}
|
||||
|
||||
if (rlv_handler_t::isEnabled() && gRlvHandler.hasBehaviour(RLV_BHVR_SHOWNAMES))
|
||||
{
|
||||
senderName = RlvStrings::getAnonym(senderName);
|
||||
}
|
||||
|
||||
gConsole->addConsoleLine("IM: " + senderName + delimiter + message, LLUIColorTable::instance().getColor("AgentChatColor"));
|
||||
|
||||
LLNearbyChat* nearby_chat = LLFloaterReg::getTypedInstance<LLNearbyChat>("nearby_chat", LLSD());
|
||||
gConsole->setVisible(!nearby_chat->getVisible());
|
||||
// Ansarial, replace long lock of local DN handling with the following call
|
||||
LLAvatarNameCache::get(LLUUID(substitutions["FROM_ID"].asString()), boost::bind(&LLIMHandler::onAvatarNameLookup, this, _1, _2, substitutions["MESSAGE"].asString()));
|
||||
}
|
||||
}
|
||||
|
||||
else
|
||||
{
|
||||
// arrange a channel on a screen
|
||||
|
|
@ -220,4 +182,42 @@ void LLIMHandler::onDeleteToast(LLToast* toast)
|
|||
|
||||
//--------------------------------------------------------------------------
|
||||
|
||||
void LLIMHandler::onAvatarNameLookup(const LLUUID& agent_id, const LLAvatarName& av_name, const std::string& message_str)
|
||||
//Ansariel Hiller
|
||||
{
|
||||
std::string senderName;
|
||||
std::string message(message_str);
|
||||
std::string delimiter = ": ";
|
||||
std::string prefix = message.substr(0, 4);
|
||||
LLStringUtil::toLower(prefix);
|
||||
|
||||
// irc styled messages
|
||||
if (prefix == "/me " || prefix == "/me'")
|
||||
{
|
||||
delimiter = LLStringUtil::null;
|
||||
message = message.substr(3);
|
||||
}
|
||||
|
||||
if ((gSavedSettings.getBOOL("NameTagShowUsernames")) && (gSavedSettings.getBOOL("UseDisplayNames")))
|
||||
{
|
||||
senderName = av_name.getCompleteName();
|
||||
}
|
||||
else if (gSavedSettings.getBOOL("UseDisplayNames"))
|
||||
{
|
||||
senderName = av_name.mDisplayName;
|
||||
}
|
||||
else
|
||||
{
|
||||
senderName = av_name.getLegacyName();
|
||||
}
|
||||
|
||||
if (rlv_handler_t::isEnabled() && gRlvHandler.hasBehaviour(RLV_BHVR_SHOWNAMES))
|
||||
{
|
||||
senderName = RlvStrings::getAnonym(senderName);
|
||||
}
|
||||
|
||||
gConsole->addConsoleLine("IM: " + senderName + delimiter + message, LLUIColorTable::instance().getColor("AgentChatColor"));
|
||||
|
||||
LLNearbyChat* nearby_chat = LLFloaterReg::getTypedInstance<LLNearbyChat>("nearby_chat", LLSD());
|
||||
gConsole->setVisible(!nearby_chat->getVisible());
|
||||
}
|
||||
|
|
|
|||
|
|
@ -809,8 +809,26 @@ bool LLIMModel::addToHistory(const LLUUID& session_id, const std::string& from,
|
|||
llwarns << "session " << session_id << "does not exist " << llendl;
|
||||
return false;
|
||||
}
|
||||
|
||||
// <Ansariel> Forward IM to nearby chat if wanted
|
||||
std::string timestr = LLLogChat::timestamp(false);
|
||||
session->addMessage(from, from_id, utf8_text, timestr); //might want to add date separately
|
||||
|
||||
session->addMessage(from, from_id, utf8_text, LLLogChat::timestamp(false)); //might want to add date separately
|
||||
static LLCachedControl<bool> show_im_in_chat(gSavedSettings, "FSShowIMInChatHistory");
|
||||
if (show_im_in_chat)
|
||||
{
|
||||
LLChat chat;
|
||||
chat.mChatStyle = CHAT_STYLE_NORMAL;
|
||||
chat.mChatType = CHAT_TYPE_IM;
|
||||
chat.mFromID = from_id;
|
||||
chat.mFromName = from;
|
||||
chat.mSourceType = CHAT_SOURCE_AGENT;
|
||||
chat.mText = utf8_text;
|
||||
chat.mTimeStr = timestr;
|
||||
LLNearbyChat* nearby_chat = LLFloaterReg::getTypedInstance<LLNearbyChat>("nearby_chat", LLSD());
|
||||
nearby_chat->addMessage(chat, true, LLSD());
|
||||
}
|
||||
// </Ansariel>
|
||||
|
||||
return true;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -4386,7 +4386,7 @@ void LLObjectBridge::openItem()
|
|||
{
|
||||
// object double-click action is to wear/unwear object
|
||||
performAction(getInventoryModel(),
|
||||
get_is_item_worn(mUUID) ? "detach" : "attach");
|
||||
get_is_item_worn(mUUID) ? "detach" : gSavedSettings.getBOOL("PhoenixDoubleClickAddInventoryObjects") ? "wear_add" : "attach");
|
||||
}
|
||||
|
||||
std::string LLObjectBridge::getLabelSuffix() const
|
||||
|
|
|
|||
|
|
@ -575,6 +575,18 @@ bool LLChatLogParser::parse(std::string& raw, LLSD& im)
|
|||
bool has_name = name_and_text[IDX_NAME].matched;
|
||||
std::string name = name_and_text[IDX_NAME];
|
||||
|
||||
// Ansariel: Handle the case an IM was stored in nearby chat history
|
||||
if (name == "IM:")
|
||||
{
|
||||
U32 divider_pos = stuff.find(NAME_TEXT_DIVIDER, 3);
|
||||
if (divider_pos != std::string::npos && divider_pos < (stuff.length() - NAME_TEXT_DIVIDER.length()))
|
||||
{
|
||||
im[IM_FROM] = stuff.substr(0, divider_pos);
|
||||
im[IM_TEXT] = stuff.substr(divider_pos + NAME_TEXT_DIVIDER.length());
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
//we don't need a name/text separator
|
||||
if (has_name && name.length() && name[name.length()-1] == ':')
|
||||
{
|
||||
|
|
|
|||
|
|
@ -56,6 +56,7 @@
|
|||
#include "llhudrender.h"
|
||||
#include "llworld.h"
|
||||
#include "v2math.h"
|
||||
#include "llviewerregion.h"
|
||||
#include "llvoavatar.h"
|
||||
|
||||
|
||||
|
|
@ -821,6 +822,15 @@ void LLManipScale::drag( S32 x, S32 y )
|
|||
gAgentCamera.clearFocusObject();
|
||||
}
|
||||
|
||||
// patch up for mesh, to be removed during real mesh merge -Zi
|
||||
// also affects many max_prim_scale factors. Check the changeset 4e777db5f7e4
|
||||
F32 llmanipscale_max_prim_scale()
|
||||
{
|
||||
if(gAgent.getRegion()->getCapability("GetMesh").empty())
|
||||
return DEFAULT_MAX_PRIM_SCALE;
|
||||
return 64.f;
|
||||
}
|
||||
|
||||
// Scale around the
|
||||
void LLManipScale::dragCorner( S32 x, S32 y )
|
||||
{
|
||||
|
|
@ -948,8 +958,8 @@ void LLManipScale::dragCorner( S32 x, S32 y )
|
|||
mInSnapRegime = FALSE;
|
||||
}
|
||||
|
||||
F32 max_scale_factor = DEFAULT_MAX_PRIM_SCALE / MIN_PRIM_SCALE;
|
||||
F32 min_scale_factor = MIN_PRIM_SCALE / DEFAULT_MAX_PRIM_SCALE;
|
||||
F32 max_scale_factor = llmanipscale_max_prim_scale() / MIN_PRIM_SCALE;
|
||||
F32 min_scale_factor = MIN_PRIM_SCALE / llmanipscale_max_prim_scale();
|
||||
|
||||
// find max and min scale factors that will make biggest object hit max absolute scale and smallest object hit min absolute scale
|
||||
for (LLObjectSelection::iterator iter = mObjectSelection->begin();
|
||||
|
|
@ -961,7 +971,7 @@ void LLManipScale::dragCorner( S32 x, S32 y )
|
|||
{
|
||||
const LLVector3& scale = selectNode->mSavedScale;
|
||||
|
||||
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] );
|
||||
F32 cur_max_scale_factor = llmin( llmanipscale_max_prim_scale() / scale.mV[VX], llmanipscale_max_prim_scale() / scale.mV[VY], llmanipscale_max_prim_scale() / scale.mV[VZ] );
|
||||
max_scale_factor = llmin( max_scale_factor, cur_max_scale_factor );
|
||||
|
||||
F32 cur_min_scale_factor = llmax( MIN_PRIM_SCALE / scale.mV[VX], MIN_PRIM_SCALE / scale.mV[VY], MIN_PRIM_SCALE / scale.mV[VZ] );
|
||||
|
|
@ -1258,7 +1268,7 @@ void LLManipScale::stretchFace( const LLVector3& drag_start_agent, const LLVecto
|
|||
|
||||
F32 denom = axis * dir_local;
|
||||
F32 desired_delta_size = is_approx_zero(denom) ? 0.f : (delta_local_mag / denom); // in meters
|
||||
F32 desired_scale = llclamp(selectNode->mSavedScale.mV[axis_index] + desired_delta_size, MIN_PRIM_SCALE, DEFAULT_MAX_PRIM_SCALE);
|
||||
F32 desired_scale = llclamp(selectNode->mSavedScale.mV[axis_index] + desired_delta_size, MIN_PRIM_SCALE, llmanipscale_max_prim_scale());
|
||||
// propagate scale constraint back to position offset
|
||||
desired_delta_size = desired_scale - selectNode->mSavedScale.mV[axis_index]; // propagate constraint back to position
|
||||
|
||||
|
|
@ -1958,7 +1968,7 @@ F32 LLManipScale::partToMaxScale( S32 part, const LLBBox &bbox ) const
|
|||
max_extent = bbox_extents.mV[i];
|
||||
}
|
||||
}
|
||||
max_scale_factor = bbox_extents.magVec() * DEFAULT_MAX_PRIM_SCALE / max_extent;
|
||||
max_scale_factor = bbox_extents.magVec() * llmanipscale_max_prim_scale() / max_extent;
|
||||
|
||||
if (getUniform())
|
||||
{
|
||||
|
|
@ -1973,7 +1983,7 @@ F32 LLManipScale::partToMinScale( S32 part, const LLBBox &bbox ) const
|
|||
{
|
||||
LLVector3 bbox_extents = unitVectorToLocalBBoxExtent( partToUnitVector( part ), bbox );
|
||||
bbox_extents.abs();
|
||||
F32 min_extent = DEFAULT_MAX_PRIM_SCALE;
|
||||
F32 min_extent = llmanipscale_max_prim_scale();
|
||||
for (U32 i = VX; i <= VZ; i++)
|
||||
{
|
||||
if (bbox_extents.mV[i] > 0.f && bbox_extents.mV[i] < min_extent)
|
||||
|
|
|
|||
|
|
@ -291,6 +291,16 @@ void LLNearbyChat::addMessage(const LLChat& chat,bool archive,const LLSD &args)
|
|||
{
|
||||
from_name = av_name.getCompleteName();
|
||||
}
|
||||
|
||||
// Ansariel: Handle IMs in nearby chat
|
||||
if (gSavedSettings.getBOOL("FSShowIMInChatHistory") && chat.mChatType == CHAT_TYPE_IM)
|
||||
{
|
||||
if (gSavedSettings.getBOOL("FSLogIMInChatHistory"))
|
||||
{
|
||||
from_name = "IM: " + from_name;
|
||||
}
|
||||
else return;
|
||||
}
|
||||
}
|
||||
|
||||
LLLogChat::saveHistory("chat", from_name, chat.mFromID, chat.mText);
|
||||
|
|
@ -566,6 +576,7 @@ void LLNearbyChat::loadHistory()
|
|||
std::list<LLSD>::const_iterator it = history.begin();
|
||||
while (it != history.end())
|
||||
{
|
||||
bool im_type = false;
|
||||
const LLSD& msg = *it;
|
||||
|
||||
std::string from = msg[IM_FROM];
|
||||
|
|
@ -576,6 +587,17 @@ void LLNearbyChat::loadHistory()
|
|||
}
|
||||
else
|
||||
{
|
||||
// Ansariel: Strip IM prefix so we can properly
|
||||
// retrieve the UUID in case we got a
|
||||
// saved IM in nearby chat history.
|
||||
std::string im_prefix = "IM: ";
|
||||
size_t im_prefix_found = from.find(im_prefix);
|
||||
if (im_prefix_found != std::string::npos)
|
||||
{
|
||||
from = from.substr(im_prefix.length());
|
||||
im_type = true;
|
||||
}
|
||||
|
||||
std::string legacy_name = gCacheName->buildLegacyName(from);
|
||||
gCacheName->getUUID(legacy_name, from_id);
|
||||
}
|
||||
|
|
@ -587,6 +609,8 @@ void LLNearbyChat::loadHistory()
|
|||
chat.mTimeStr = msg[IM_TIME].asString();
|
||||
chat.mChatStyle = CHAT_STYLE_HISTORY;
|
||||
|
||||
if (im_type) chat.mChatType = CHAT_TYPE_IM;
|
||||
|
||||
chat.mSourceType = CHAT_SOURCE_AGENT;
|
||||
if (from_id.isNull() && SYSTEM_FROM == from)
|
||||
{
|
||||
|
|
|
|||
|
|
@ -617,7 +617,6 @@ void LLNearbyChatHandler::processChat(const LLChat& chat_msg, const LLSD &args)
|
|||
}
|
||||
else if (chat_msg.mSourceType == CHAT_SOURCE_OBJECT)
|
||||
{
|
||||
|
||||
std::string senderName(chat_msg.mFromName);
|
||||
std::string prefix = chat_msg.mText.substr(0, 4);
|
||||
LLStringUtil::toLower(prefix);
|
||||
|
|
@ -644,6 +643,16 @@ void LLNearbyChatHandler::processChat(const LLChat& chat_msg, const LLSD &args)
|
|||
}
|
||||
|
||||
std::string message = irc_me ? chat_msg.mText.substr(3) : chat_msg.mText;
|
||||
// <Ansariel> console support
|
||||
consoleChat = senderName + delimiter + message;
|
||||
LLColor4 chatcolor;
|
||||
LLViewerChat::getChatColor(chat_msg, chatcolor);
|
||||
gConsole->addConsoleLine(consoleChat, chatcolor);
|
||||
// </Ansariel>
|
||||
}
|
||||
else
|
||||
{
|
||||
consoleChat = chat_msg.mText;
|
||||
|
||||
//// Get the display name of the sender if required
|
||||
//if (!chat_msg.mRlvNamesFiltered)
|
||||
|
|
@ -659,16 +668,8 @@ void LLNearbyChatHandler::processChat(const LLChat& chat_msg, const LLSD &args)
|
|||
// senderName = mDisplayName;
|
||||
// }
|
||||
//}
|
||||
|
||||
consoleChat = senderName + delimiter + message;
|
||||
LLColor4 chatcolor;
|
||||
LLViewerChat::getChatColor(chat_msg, chatcolor);
|
||||
gConsole->addConsoleLine(consoleChat, chatcolor);
|
||||
gConsole->setVisible(!nearby_chat->getVisible());
|
||||
}
|
||||
else
|
||||
{
|
||||
consoleChat = chat_msg.mText;
|
||||
//
|
||||
///consoleChat = senderName + delimiter + message;
|
||||
|
||||
LLColor4 chatcolor;
|
||||
LLViewerChat::getChatColor(chat_msg, chatcolor);
|
||||
|
|
@ -804,13 +805,53 @@ void LLNearbyChatHandler::onAvatarNameLookup(const LLUUID& agent_id, const LLAva
|
|||
/*
|
||||
void LLNearbyChatHandler::lookupDisplayNames(const LLChat& chat)
|
||||
{
|
||||
// resolve display names if necessary
|
||||
if (gSavedSettings.getBOOL("UseDisplayNames"))
|
||||
std::string consoleChat;
|
||||
std::string senderName(chat_msg.mFromName);
|
||||
std::string prefix = chat_msg.mText.substr(0, 4);
|
||||
LLStringUtil::toLower(prefix);
|
||||
|
||||
//IRC styled /me messages.
|
||||
bool irc_me = prefix == "/me " || prefix == "/me'";
|
||||
|
||||
// Delimiter after a name in header copy/past and in plain text mode
|
||||
std::string delimiter = ": ";
|
||||
std::string shout = LLTrans::getString("shout");
|
||||
std::string whisper = LLTrans::getString("whisper");
|
||||
if (chat_msg.mChatType == CHAT_TYPE_SHOUT ||
|
||||
chat_msg.mChatType == CHAT_TYPE_WHISPER ||
|
||||
chat_msg.mText.compare(0, shout.length(), shout) == 0 ||
|
||||
chat_msg.mText.compare(0, whisper.length(), whisper) == 0)
|
||||
{
|
||||
mDisplayName=chat.mFromName;
|
||||
mDisplayName_Username=chat.mFromName;
|
||||
LLAvatarNameCache::get(chat.mFromID,boost::bind(&LLNearbyChatHandler::onAvatarNameCache, this, _1, _2));
|
||||
delimiter = " ";
|
||||
}
|
||||
|
||||
// Don't add any delimiter after name in irc styled messages
|
||||
if (irc_me || chat_msg.mChatStyle == CHAT_STYLE_IRC)
|
||||
{
|
||||
delimiter = LLStringUtil::null;
|
||||
}
|
||||
|
||||
std::string message = irc_me ? chat_msg.mText.substr(3) : chat_msg.mText;
|
||||
|
||||
// Get the display name of the sender if required
|
||||
if (!chat_msg.mRlvNamesFiltered)
|
||||
{
|
||||
if ((gSavedSettings.getBOOL("NameTagShowUsernames")) && (gSavedSettings.getBOOL("UseDisplayNames")))
|
||||
{
|
||||
senderName = av_name.getCompleteName();
|
||||
}
|
||||
else if (gSavedSettings.getBOOL("UseDisplayNames"))
|
||||
{
|
||||
senderName = av_name.mDisplayName;
|
||||
}
|
||||
}
|
||||
|
||||
consoleChat = senderName + delimiter + message;
|
||||
LLColor4 chatcolor;
|
||||
LLViewerChat::getChatColor(chat_msg, chatcolor);
|
||||
gConsole->addConsoleLine(consoleChat, chatcolor);
|
||||
LLNearbyChat* nearby_chat = LLFloaterReg::getTypedInstance<LLNearbyChat>("nearby_chat", LLSD());
|
||||
gConsole->setVisible(!nearby_chat->getVisible());
|
||||
}
|
||||
|
||||
void LLNearbyChatHandler::onAvatarNameCache(const LLUUID& agent_id, const LLAvatarName& av_name)
|
||||
|
|
|
|||
|
|
@ -49,14 +49,13 @@ protected:
|
|||
virtual void onDeleteToast(LLToast* toast);
|
||||
virtual void initChannel();
|
||||
|
||||
void lookupDisplayNames(const LLChat& chat);
|
||||
void onAvatarNameCache(const LLUUID& agent_id, const LLAvatarName& av_name);
|
||||
// <Ansariel> replaced local DN handling with onAvatarNameLookup
|
||||
// void lookupDisplayNames(const LLChat& chat);
|
||||
// void onAvatarNameCache(const LLUUID& agent_id, const LLAvatarName& av_name);
|
||||
void onAvatarNameLookup(const LLUUID& agent_id, const LLAvatarName& av_name, const LLChat& chat_msg);
|
||||
bool checkDisplayName();
|
||||
// bool checkDisplayName();
|
||||
|
||||
BOOL PhoenixUseNearbyChatConsole;
|
||||
std::string mDisplayName;
|
||||
std::string mDisplayName_Username;
|
||||
};
|
||||
|
||||
}
|
||||
|
|
|
|||
|
|
@ -88,6 +88,9 @@ const S32 MOUSE_DRAG_SLOP = 2; // How far the mouse needs to move before we thi
|
|||
const F32 WIDTH_PIXELS = 2.f;
|
||||
const S32 CIRCLE_STEPS = 100;
|
||||
|
||||
std::map<LLUUID, LLColor4> LLNetMap::sAvatarMarksMap; // Ansariel
|
||||
|
||||
|
||||
LLNetMap::LLNetMap (const Params & p)
|
||||
: LLUICtrl (p),
|
||||
mBackgroundColor (p.bg_color()),
|
||||
|
|
@ -128,7 +131,10 @@ BOOL LLNetMap::postBuild()
|
|||
|
||||
registrar.add("Minimap.Zoom", boost::bind(&LLNetMap::handleZoom, this, _2));
|
||||
registrar.add("Minimap.Tracker", boost::bind(&LLNetMap::handleStopTracking, this, _2));
|
||||
|
||||
// <Ansariel>
|
||||
registrar.add("Minimap.Mark", boost::bind(&LLNetMap::handleMark, this, _2));
|
||||
registrar.add("Minimap.ClearMarks", boost::bind(&LLNetMap::handleClearMarks, this));
|
||||
// </Ansariel>
|
||||
mPopupMenu = LLUICtrlFactory::getInstance()->createFromFile<LLMenuGL>("menu_mini_map.xml", gMenuHolder, LLViewerMenuHolderGL::child_registry_t::instance());
|
||||
return TRUE;
|
||||
}
|
||||
|
|
@ -430,6 +436,12 @@ void LLNetMap::draw()
|
|||
isHeightUnknown = false;
|
||||
}
|
||||
}
|
||||
|
||||
// Mark Avatars with special colors - Ansariel
|
||||
if (LLNetMap::sAvatarMarksMap.find(uuid) != LLNetMap::sAvatarMarksMap.end())
|
||||
{
|
||||
color = LLNetMap::sAvatarMarksMap[uuid];
|
||||
}
|
||||
}
|
||||
|
||||
// Ansariel: Moved down here so we can take precise
|
||||
|
|
@ -1024,6 +1036,8 @@ BOOL LLNetMap::handleMouseUp( S32 x, S32 y, MASK mask )
|
|||
|
||||
BOOL LLNetMap::handleRightMouseDown(S32 x, S32 y, MASK mask)
|
||||
{
|
||||
saveClosestAgentAtLastRightClick(); // Ansariel
|
||||
|
||||
if (mPopupMenu)
|
||||
{
|
||||
mPopupMenu->buildDrawLabels();
|
||||
|
|
@ -1161,3 +1175,36 @@ void LLNetMap::handleStopTracking (const LLSD& userdata)
|
|||
LLTracker::stopTracking ((void*)LLTracker::isTracking(NULL));
|
||||
}
|
||||
}
|
||||
|
||||
// <Ansariel> additional functions
|
||||
void LLNetMap::handleMark(const LLSD& userdata)
|
||||
{
|
||||
setAvatarMark(userdata);
|
||||
}
|
||||
|
||||
void LLNetMap::handleClearMarks()
|
||||
{
|
||||
clearAvatarMarks();
|
||||
}
|
||||
|
||||
void LLNetMap::setAvatarMark(const LLSD& userdata)
|
||||
{
|
||||
if (mClosestAgentAtLastRightClick.notNull())
|
||||
{
|
||||
// Use the name as color definition name from colors.xml
|
||||
LLColor4 color = LLUIColorTable::instance().getColor(userdata.asString(), LLColor4::green);
|
||||
LLNetMap::sAvatarMarksMap[mClosestAgentAtLastRightClick] = color;
|
||||
llinfos << "Minimap: Marking " << mClosestAgentAtLastRightClick.asString() << " in " << userdata.asString() << llendl;
|
||||
}
|
||||
}
|
||||
|
||||
void LLNetMap::saveClosestAgentAtLastRightClick()
|
||||
{
|
||||
mClosestAgentAtLastRightClick = mClosestAgentToCursor;
|
||||
}
|
||||
|
||||
void LLNetMap::clearAvatarMarks()
|
||||
{
|
||||
LLNetMap::sAvatarMarksMap.clear();
|
||||
}
|
||||
//</Ansariel>
|
||||
|
|
|
|||
|
|
@ -129,12 +129,19 @@ private:
|
|||
|
||||
std::string mToolTipMsg;
|
||||
|
||||
static std::map<LLUUID, LLColor4> sAvatarMarksMap;
|
||||
|
||||
public:
|
||||
void setSelected(uuid_vec_t uuids) { gmSelected=uuids; };
|
||||
void setAvatarMark(const LLSD& userdata);
|
||||
void saveClosestAgentAtLastRightClick();
|
||||
void clearAvatarMarks();
|
||||
|
||||
private:
|
||||
void handleZoom(const LLSD& userdata);
|
||||
void handleStopTracking (const LLSD& userdata);
|
||||
void handleMark(const LLSD& userdata);
|
||||
void handleClearMarks();
|
||||
|
||||
LLMenuGL* mPopupMenu;
|
||||
uuid_vec_t gmSelected;
|
||||
|
|
|
|||
|
|
@ -163,12 +163,16 @@ protected:
|
|||
virtual void onDeleteToast(LLToast* toast);
|
||||
virtual void initChannel();
|
||||
|
||||
void lookupDisplayNames(const LLUUID& agent_id);
|
||||
void onAvatarNameCache(const LLUUID& agent_id, const LLAvatarName& av_name);
|
||||
bool checkDisplayName();
|
||||
// <Ansariel>: removed local DN processing in favor of onAvatarNameLookup
|
||||
// void lookupDisplayNames(const LLUUID& agent_id);
|
||||
// void onAvatarNameCache(const LLUUID& agent_id, const LLAvatarName& av_name);
|
||||
// bool checkDisplayName();
|
||||
// LLAvatarName mAvatarName;
|
||||
// </Ansariel>
|
||||
|
||||
void onAvatarNameLookup(const LLUUID& agent_id, const LLAvatarName& av_name, const std::string& message_str);
|
||||
|
||||
BOOL PhoenixLogImToChatConsole;
|
||||
LLAvatarName mAvatarName;
|
||||
};
|
||||
|
||||
/**
|
||||
|
|
|
|||
|
|
@ -1042,6 +1042,10 @@ void LLPanelMainInventory::onCustomAction(const LLSD& userdata)
|
|||
const LLSD arg = "systemfolderstotop";
|
||||
setSortBy(arg);
|
||||
}
|
||||
if (command_name == "add_objects_on_double_click")
|
||||
{
|
||||
gSavedSettings.setBOOL("PhoenixDoubleClickAddInventoryObjects",!gSavedSettings.getBOOL("PhoenixDoubleClickAddInventoryObjects"));
|
||||
}
|
||||
if (command_name == "show_filters")
|
||||
{
|
||||
toggleFindOptions();
|
||||
|
|
@ -1239,6 +1243,11 @@ BOOL LLPanelMainInventory::isActionChecked(const LLSD& userdata)
|
|||
return sort_order_mask & LLInventoryFilter::SO_SYSTEM_FOLDERS_TO_TOP;
|
||||
}
|
||||
|
||||
if (command_name == "add_objects_on_double_click")
|
||||
{
|
||||
return gSavedSettings.getBOOL("PhoenixDoubleClickAddInventoryObjects");
|
||||
}
|
||||
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -430,9 +430,9 @@ void LLPanelObject::getState( )
|
|||
}
|
||||
|
||||
// can move or rotate only linked group with move permissions, or sub-object with move and modify perms
|
||||
BOOL enable_move = objectp->permMove() && !objectp->isAttachment() && (objectp->permModify() || !gSavedSettings.getBOOL("EditLinkedParts"));
|
||||
BOOL enable_move = objectp->permMove() && (objectp->permModify() || !gSavedSettings.getBOOL("EditLinkedParts"));
|
||||
BOOL enable_scale = objectp->permMove() && objectp->permModify();
|
||||
BOOL enable_rotate = objectp->permMove() && ( (objectp->permModify() && !objectp->isAttachment()) || !gSavedSettings.getBOOL("EditLinkedParts"));
|
||||
BOOL enable_rotate = objectp->permMove() && (objectp->permModify() || !gSavedSettings.getBOOL("EditLinkedParts"));
|
||||
|
||||
S32 selected_count = LLSelectMgr::getInstance()->getSelection()->getObjectCount();
|
||||
BOOL single_volume = (LLSelectMgr::getInstance()->selectionAllPCode( LL_PCODE_VOLUME ))
|
||||
|
|
@ -1928,18 +1928,28 @@ void LLPanelObject::sendRotation(BOOL btn_down)
|
|||
}
|
||||
}
|
||||
|
||||
// patch up for mesh, to be removed during real mesh merge -Zi
|
||||
F32 llpanelobject_max_prim_scale()
|
||||
{
|
||||
if(gAgent.getRegion()->getCapability("GetMesh").empty())
|
||||
return DEFAULT_MAX_PRIM_SCALE;
|
||||
return 64.f;
|
||||
}
|
||||
|
||||
// BUG: Make work with multiple objects
|
||||
void LLPanelObject::sendScale(BOOL btn_down)
|
||||
{
|
||||
if (mObject.isNull()) return;
|
||||
|
||||
LLVector3 newscale(mCtrlScaleX->get(), mCtrlScaleY->get(), mCtrlScaleZ->get());
|
||||
// make sure not to send larger/smaller values than permitted -Zi
|
||||
LLVector3 newscale(llclamp(mCtrlScaleX->get(), MIN_PRIM_SCALE, llpanelobject_max_prim_scale()),
|
||||
llclamp(mCtrlScaleY->get(), MIN_PRIM_SCALE, llpanelobject_max_prim_scale()),
|
||||
llclamp(mCtrlScaleZ->get(), MIN_PRIM_SCALE, llpanelobject_max_prim_scale()));
|
||||
|
||||
LLVector3 delta = newscale - mObject->getScale();
|
||||
if (delta.magVec() >= 0.0005f)
|
||||
if (delta.magVec() >= 0.00005f)
|
||||
{
|
||||
// scale changed by more than 1/2 millimeter
|
||||
// scale changed by more than 1/20 millimeter
|
||||
|
||||
// check to see if we aren't scaling the textures
|
||||
// (in which case the tex coord's need to be recomputed)
|
||||
|
|
@ -2007,8 +2017,8 @@ void LLPanelObject::sendPosition(BOOL btn_down)
|
|||
// send only if the position is changed, that is, the delta vector is not zero
|
||||
LLVector3d old_pos_global = mObject->getPositionGlobal();
|
||||
LLVector3d delta = new_pos_global - old_pos_global;
|
||||
// moved more than 1/2 millimeter
|
||||
if (delta.magVec() >= 0.0005f)
|
||||
// moved more than 1/20 millimeter
|
||||
if (delta.magVec() >= 0.00005f)
|
||||
{
|
||||
if (mRootObject != mObject)
|
||||
{
|
||||
|
|
@ -2381,9 +2391,9 @@ void LLPanelObject::onPasteSize(const LLSD& data)
|
|||
{
|
||||
if(mClipboardSize.isNull()) return;
|
||||
|
||||
mClipboardSize.mV[VX] = llclamp(mClipboardSize.mV[VX], MIN_PRIM_SCALE, DEFAULT_MAX_PRIM_SCALE);
|
||||
mClipboardSize.mV[VY] = llclamp(mClipboardSize.mV[VY], MIN_PRIM_SCALE, DEFAULT_MAX_PRIM_SCALE);
|
||||
mClipboardSize.mV[VZ] = llclamp(mClipboardSize.mV[VZ], MIN_PRIM_SCALE, DEFAULT_MAX_PRIM_SCALE);
|
||||
mClipboardSize.mV[VX] = llclamp(mClipboardSize.mV[VX], MIN_PRIM_SCALE, llpanelobject_max_prim_scale());
|
||||
mClipboardSize.mV[VY] = llclamp(mClipboardSize.mV[VY], MIN_PRIM_SCALE, llpanelobject_max_prim_scale());
|
||||
mClipboardSize.mV[VZ] = llclamp(mClipboardSize.mV[VZ], MIN_PRIM_SCALE, llpanelobject_max_prim_scale());
|
||||
|
||||
mCtrlScaleX->set( mClipboardSize.mV[VX] );
|
||||
mCtrlScaleY->set( mClipboardSize.mV[VY] );
|
||||
|
|
|
|||
|
|
@ -1160,8 +1160,7 @@ void LLPanelPeople::updateNearbyList()
|
|||
if (mRadarEnterAlerts.size() > 0)
|
||||
{
|
||||
mRadarFrameCount++;
|
||||
S32 chan = (S32)gSavedSettings.getU32("RadarAlertChannel");
|
||||
if (chan < 0) { chan = chan * -1; } // make sure chan is always positive
|
||||
S32 chan = gSavedSettings.getS32("RadarAlertChannel");
|
||||
std::string msg = llformat("/%d %d,%d",chan,mRadarFrameCount,(int)mRadarEnterAlerts.size());
|
||||
while(mRadarEnterAlerts.size() > 0)
|
||||
{
|
||||
|
|
@ -1171,7 +1170,17 @@ void LLPanelPeople::updateNearbyList()
|
|||
msg = llformat("%s,%s",msg.c_str(),mRadarEnterAlerts.back().asString().c_str());
|
||||
mRadarEnterAlerts.pop_back();
|
||||
}
|
||||
LLNearbyChatBar::sendChatFromViewer(msg,CHAT_TYPE_WHISPER,FALSE);
|
||||
LLMessageSystem* msgs = gMessageSystem;
|
||||
msgs->newMessage("ScriptDialogReply");
|
||||
msgs->nextBlock("AgentData");
|
||||
msgs->addUUID("AgentID", gAgent.getID());
|
||||
msgs->addUUID("SessionID", gAgent.getSessionID());
|
||||
msgs->nextBlock("Data");
|
||||
msgs->addUUID("ObjectID", gAgent.getID());
|
||||
msgs->addS32("ChatChannel", chan);
|
||||
msgs->addS32("ButtonIndex", 1);
|
||||
msgs->addString("ButtonLabel", msg.c_str());
|
||||
gAgent.sendReliableMessage();
|
||||
}
|
||||
}
|
||||
if (mRadarLeaveAlerts.size() > 0)
|
||||
|
|
@ -1712,6 +1721,15 @@ void LLPanelPeople::onChatButtonClicked()
|
|||
if (group_id.notNull())
|
||||
LLGroupActions::startIM(group_id);
|
||||
}
|
||||
void LLPanelPeople::requestRadarChannelAlertSync()
|
||||
{
|
||||
F32 timeNow = gFrameTimeSeconds;
|
||||
if( (timeNow - RADAR_CHAT_MIN_SPACING)>mRadarLastRequestTime)
|
||||
{
|
||||
mRadarLastRequestTime=timeNow;
|
||||
mRadarAlertRequest = true;
|
||||
}
|
||||
}
|
||||
|
||||
void LLPanelPeople::teleportToAvatar(LLUUID targetAv)
|
||||
// Teleports user to last scanned location of nearby avatar
|
||||
|
|
|
|||
|
|
@ -45,9 +45,11 @@ class LLTabContainer;
|
|||
class LLMenuButton;
|
||||
class LLMenuGL;
|
||||
|
||||
const U32 MAX_AVATARS_PER_ALERT = 27; // maximum number of UUIDs we can cram into a single channel radar alert message
|
||||
const U32 MAX_AVATARS_PER_ALERT = 7; // maximum number of UUIDs we can cram into a single channel radar alert message
|
||||
const U32 COARSE_OFFSET_INTERVAL = 31; // seconds after which we query the bridge for a coarse location adjustment
|
||||
const U32 NAMEFORMAT_DISPLAYNAME = 0;
|
||||
const U32 RADAR_CHAT_MIN_SPACING = 6; //minimum delay between radar chat messages
|
||||
|
||||
const U32 NAMEFORMAT_USERNAME = 1;
|
||||
const U32 NAMEFORMAT_DISPLAYNAME_USERNAME = 2;
|
||||
const U32 NAMEFORMAT_USERNAME_DISPLAYNAME = 3;
|
||||
|
|
@ -65,7 +67,7 @@ public:
|
|||
/*virtual*/ void onOpen(const LLSD& key);
|
||||
/*virtual*/ bool notifyChildren(const LLSD& info);
|
||||
void teleportToAvatar(LLUUID targetAv);
|
||||
void requestRadarChannelAlertSync() {mRadarAlertRequest = true;}
|
||||
void requestRadarChannelAlertSync();
|
||||
// Implements LLVoiceClientStatusObserver::onChange() to enable call buttons
|
||||
// when voice is available
|
||||
/*virtual*/ void onChange(EStatusType status, const std::string &channelURI, bool proximal);
|
||||
|
|
@ -218,6 +220,7 @@ private:
|
|||
|
||||
S32 mRadarFrameCount;
|
||||
bool mRadarAlertRequest;
|
||||
F32 mRadarLastRequestTime;
|
||||
};
|
||||
|
||||
#endif //LL_LLPANELPEOPLE_H
|
||||
|
|
|
|||
|
|
@ -536,7 +536,8 @@ void LLPanelPermissions::refresh()
|
|||
}
|
||||
// The edit fields are only enabled if you can sell this object
|
||||
// and the sale price is not mixed.
|
||||
BOOL enable_edit = (num_for_sale && can_transfer) ? !is_for_sale_mixed : FALSE;
|
||||
//BOOL enable_edit = (num_for_sale && can_transfer) ? !is_for_sale_mixed : FALSE;
|
||||
BOOL enable_edit = can_transfer ? !is_for_sale_mixed : FALSE;
|
||||
getChildView("Cost")->setEnabled(enable_edit);
|
||||
|
||||
// Dont update and clear the price if change is pending
|
||||
|
|
@ -1100,7 +1101,8 @@ void LLPanelPermissions::setAllSaleInfo()
|
|||
S32 price = -1;
|
||||
|
||||
LLSpinCtrl *edit_price = getChild<LLSpinCtrl>("Edit Cost");
|
||||
price = (edit_price->getTentative()) ? DEFAULT_PRICE : edit_price->getValue().asInteger();
|
||||
//price = (edit_price->getTentative()) ? DEFAULT_PRICE : edit_price->getValue().asInteger();
|
||||
price = edit_price->getValue().asInteger();
|
||||
|
||||
// If somehow an invalid price, turn the sale off.
|
||||
if (price < 0)
|
||||
|
|
|
|||
|
|
@ -340,7 +340,7 @@ void LLPanelWearing::copyToClipboard()
|
|||
iter++;
|
||||
if (item != NULL)
|
||||
{
|
||||
// Append a CR to all but the last line
|
||||
// Append a newline to all but the last line
|
||||
text += iter != data.end() ? item->getName() + "\n" : item->getName();
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1381,7 +1381,14 @@ void LLPreviewLSL::uploadAssetViaCaps(const std::string& url,
|
|||
llinfos << "Update Agent Inventory via capability" << llendl;
|
||||
LLSD body;
|
||||
body["item_id"] = item_id;
|
||||
body["target"] = "lsl2";
|
||||
if (gSavedSettings.getBOOL("FSSaveInventoryScriptsAsMono"))
|
||||
{
|
||||
body["target"] = "mono";
|
||||
}
|
||||
else
|
||||
{
|
||||
body["target"] = "lsl2";
|
||||
}
|
||||
LLHTTPClient::post(url, body, new LLUpdateAgentInventoryResponder(body, filename, LLAssetType::AT_LSL_TEXT));
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -576,7 +576,7 @@ void LLStatusBar::onMouseEnterVolume()
|
|||
LLRect volume_pulldown_rect = mPanelVolumePulldown->getRect();
|
||||
volume_pulldown_rect.setLeftTopAndSize(
|
||||
(vol_btn_rect.mLeft + media_panel_rect.mLeft) -
|
||||
(volume_pulldown_rect.getWidth() - vol_btn_rect.getWidth())/2,
|
||||
(volume_pulldown_rect.getWidth() - vol_btn_rect.getWidth()),
|
||||
vol_btn_rect.mBottom,
|
||||
volume_pulldown_rect.getWidth(),
|
||||
volume_pulldown_rect.getHeight());
|
||||
|
|
|
|||
|
|
@ -472,6 +472,14 @@ bool handleSettingF32Change(const LLSD& sdValue, F32* pValue)
|
|||
}
|
||||
// [/SL:KB]
|
||||
|
||||
// ## Zi: Moved Avatar Z offset from RLVa to here
|
||||
bool handleAvatarZOffsetChanged(const LLSD& sdValue)
|
||||
{
|
||||
gAgent.sendAgentSetAppearance();
|
||||
return true;
|
||||
}
|
||||
// ## Zi: Moved Avatar Z offset from RLVa to here
|
||||
|
||||
bool handleForceShowGrid(const LLSD& newvalue)
|
||||
{
|
||||
LLPanelLogin::updateServer( );
|
||||
|
|
@ -718,6 +726,7 @@ void settings_setup_listeners()
|
|||
gSavedSettings.getControl("DragAndDropCommitDelay")->getSignal()->connect(boost::bind(&handleSettingF32Change, _2, &DELAY_DRAG_HOVER_COMMIT));
|
||||
// [/SL:KB]
|
||||
gSavedSettings.getControl("ImagePipelineHTTPMaxFailCountFallback")->getSignal()->connect(boost::bind(&handleImagePipelineHTTPMaxFailCountFallback, _2));
|
||||
gSavedSettings.getControl("AvatarZOffset")->getSignal()->connect(boost::bind(&handleAvatarZOffsetChanged, _2)); // ## Zi: Moved Avatar Z offset from RLVa to here
|
||||
}
|
||||
|
||||
#if TEST_CACHED_CONTROL
|
||||
|
|
|
|||
|
|
@ -5645,10 +5645,24 @@ static void money_balance_group_notify(const LLUUID& group_id,
|
|||
LLSD args,
|
||||
LLSD payload)
|
||||
{
|
||||
// Message uses name SLURLs, don't actually have to substitute in
|
||||
// the name. We're just making sure it's available.
|
||||
// Notification is either PaymentReceived or PaymentSent
|
||||
LLNotificationsUtil::add(notification, args, payload);
|
||||
static LLCachedControl<bool> balance_change_in_chat(gSavedSettings, "FSPaymentInfoInChat");
|
||||
|
||||
if (balance_change_in_chat)
|
||||
{
|
||||
LLChat chat;
|
||||
chat.mText = llformat(args["MESSAGE"].asString().c_str(), name.c_str());
|
||||
chat.mSourceType = CHAT_SOURCE_SYSTEM;
|
||||
LLSD chat_args;
|
||||
chat_args["type"] = LLNotificationsUI::NT_NEARBYCHAT;
|
||||
LLNotificationsUI::LLNotificationManager::instance().onChat(chat, chat_args);
|
||||
}
|
||||
else
|
||||
{
|
||||
// Message uses name SLURLs, don't actually have to substitute in
|
||||
// the name. We're just making sure it's available.
|
||||
// Notification is either PaymentReceived or PaymentSent
|
||||
LLNotificationsUtil::add(notification, args, payload);
|
||||
}
|
||||
}
|
||||
|
||||
static void money_balance_avatar_notify(const LLUUID& agent_id,
|
||||
|
|
@ -5657,10 +5671,24 @@ static void money_balance_avatar_notify(const LLUUID& agent_id,
|
|||
LLSD args,
|
||||
LLSD payload)
|
||||
{
|
||||
// Message uses name SLURLs, don't actually have to substitute in
|
||||
// the name. We're just making sure it's available.
|
||||
// Notification is either PaymentReceived or PaymentSent
|
||||
LLNotificationsUtil::add(notification, args, payload);
|
||||
static LLCachedControl<bool> balance_change_in_chat(gSavedSettings, "FSPaymentInfoInChat");
|
||||
|
||||
if (balance_change_in_chat)
|
||||
{
|
||||
LLChat chat;
|
||||
chat.mText = llformat(args["MESSAGE"].asString().c_str(), av_name.getCompleteName().c_str());
|
||||
chat.mSourceType = CHAT_SOURCE_SYSTEM;
|
||||
LLSD chat_args;
|
||||
chat_args["type"] = LLNotificationsUI::NT_NEARBYCHAT;
|
||||
LLNotificationsUI::LLNotificationManager::instance().onChat(chat, chat_args);
|
||||
}
|
||||
else
|
||||
{
|
||||
// Message uses name SLURLs, don't actually have to substitute in
|
||||
// the name. We're just making sure it's available.
|
||||
// Notification is either PaymentReceived or PaymentSent
|
||||
LLNotificationsUtil::add(notification, args, payload);
|
||||
}
|
||||
}
|
||||
|
||||
static void process_money_balance_reply_extended(LLMessageSystem* msg)
|
||||
|
|
@ -5675,6 +5703,11 @@ static void process_money_balance_reply_extended(LLMessageSystem* msg)
|
|||
S32 amount = 0;
|
||||
std::string item_description;
|
||||
|
||||
// Ansariel: If we output to chat history and probably console,
|
||||
// don't create an SLURL for the name or we will end
|
||||
// up with a SLURL in the console
|
||||
static LLCachedControl<bool> balance_change_in_chat(gSavedSettings, "FSPaymentInfoInChat");
|
||||
|
||||
msg->getS32("TransactionInfo", "TransactionType", transaction_type);
|
||||
msg->getUUID("TransactionInfo", "SourceID", source_id);
|
||||
msg->getBOOL("TransactionInfo", "IsSourceGroup", is_source_group);
|
||||
|
|
@ -5736,7 +5769,7 @@ static void process_money_balance_reply_extended(LLMessageSystem* msg)
|
|||
bool you_paid_someone = (source_id == gAgentID);
|
||||
if (you_paid_someone)
|
||||
{
|
||||
args["NAME"] = dest_slurl;
|
||||
args["NAME"] = balance_change_in_chat ? "%s" : dest_slurl;
|
||||
is_name_group = is_dest_group;
|
||||
name_id = dest_id;
|
||||
if (!reason.empty())
|
||||
|
|
@ -5768,7 +5801,7 @@ static void process_money_balance_reply_extended(LLMessageSystem* msg)
|
|||
}
|
||||
else {
|
||||
// ...someone paid you
|
||||
args["NAME"] = source_slurl;
|
||||
args["NAME"] = balance_change_in_chat ? "%s" : source_slurl;
|
||||
is_name_group = is_source_group;
|
||||
name_id = source_id;
|
||||
if (!reason.empty())
|
||||
|
|
|
|||
|
|
@ -1195,32 +1195,37 @@ void LLViewerObjectList::renderObjectsForMap(LLNetMap &netmap)
|
|||
LLColor4 group_own_below_water_color =
|
||||
LLUIColorTable::instance().getColor( "NetMapGroupOwnBelowWater" );
|
||||
|
||||
F32 max_radius = gSavedSettings.getF32("MiniMapPrimMaxRadius");
|
||||
static LLCachedControl<F32> max_radius(gSavedSettings, "MiniMapPrimMaxRadius");
|
||||
static LLCachedControl<F32> max_zdistance_from_avatar(gSavedSettings, "MiniMapPrimMaxVertDistance");
|
||||
|
||||
for (vobj_list_t::iterator iter = mMapObjects.begin(); iter != mMapObjects.end(); ++iter)
|
||||
{
|
||||
LLViewerObject* objectp = *iter;
|
||||
|
||||
if(objectp->isDead())//some dead objects somehow not cleaned.
|
||||
{
|
||||
continue ;
|
||||
}
|
||||
|
||||
if (!objectp->getRegion() || objectp->isOrphaned() || objectp->isAttachment())
|
||||
if (!objectp || objectp->isDead() || !objectp->getRegion() || objectp->isOrphaned() || objectp->isAttachment())
|
||||
{
|
||||
continue;
|
||||
}
|
||||
const LLVector3& scale = objectp->getScale();
|
||||
const LLVector3d pos = objectp->getPositionGlobal();
|
||||
const F64 water_height = F64( objectp->getRegion()->getWaterHeight() );
|
||||
// LLWorld::getInstance()->getWaterHeight();
|
||||
|
||||
F32 approx_radius = (scale.mV[VX] + scale.mV[VY]) * 0.5f * 0.5f * 1.3f; // 1.3 is a fudge
|
||||
// Skip all objects that are more than MiniMapPrimMaxVertDistance above or below the avatar
|
||||
if (max_zdistance_from_avatar > 0.0)
|
||||
{
|
||||
F64 zdistance = pos.mdV[VZ] - gAgent.getPositionGlobal().mdV[VZ];
|
||||
if (zdistance < (-max_zdistance_from_avatar) || zdistance > max_zdistance_from_avatar)
|
||||
{
|
||||
continue;
|
||||
}
|
||||
}
|
||||
|
||||
F32 approx_radius = (scale.mV[VX] + scale.mV[VY]) * 0.325; // <- 0.5f * 0.5f * 1.3f; // 1.3 is a fudge
|
||||
|
||||
// Limit the size of megaprims so they don't blot out everything on the minimap.
|
||||
// Attempting to draw very large megaprims also causes client lag.
|
||||
// See DEV-17370 and DEV-29869/SNOW-79 for details.
|
||||
approx_radius = llmin(approx_radius, max_radius);
|
||||
approx_radius = llmin(approx_radius, F32(max_radius));
|
||||
|
||||
LLColor4U color = above_water_color;
|
||||
if( objectp->permYouOwner() )
|
||||
|
|
@ -1239,8 +1244,8 @@ void LLViewerObjectList::renderObjectsForMap(LLNetMap &netmap)
|
|||
}
|
||||
else
|
||||
{
|
||||
color = you_own_above_water_color;
|
||||
}
|
||||
color = you_own_above_water_color;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
|
|
@ -1248,14 +1253,13 @@ void LLViewerObjectList::renderObjectsForMap(LLNetMap &netmap)
|
|||
{
|
||||
color = group_own_below_water_color;
|
||||
}
|
||||
else
|
||||
{
|
||||
color = you_own_below_water_color;
|
||||
else
|
||||
{
|
||||
color = you_own_below_water_color;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
if( pos.mdV[VZ] < water_height )
|
||||
else if( pos.mdV[VZ] < water_height )
|
||||
{
|
||||
color = below_water_color;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1505,6 +1505,7 @@ void LLViewerRegion::setSeedCapability(const std::string& url)
|
|||
|
||||
capabilityNames.append("GetDisplayNames");
|
||||
capabilityNames.append("GetTexture");
|
||||
capabilityNames.append("GetMesh"); // detect mesh
|
||||
capabilityNames.append("GroupProposalBallot");
|
||||
capabilityNames.append("HomeLocation");
|
||||
capabilityNames.append("LandResources");
|
||||
|
|
|
|||
|
|
@ -1419,13 +1419,21 @@ void LLVOAvatar::updateSpatialExtents(LLVector3& newMin, LLVector3 &newMax)
|
|||
}
|
||||
}
|
||||
|
||||
// patch up for mesh, to be removed during real mesh merge -Zi
|
||||
F32 llvoavatar_max_prim_scale()
|
||||
{
|
||||
if(gAgent.getRegion()->getCapability("GetMesh").empty())
|
||||
return DEFAULT_MAX_PRIM_SCALE;
|
||||
return 64.f;
|
||||
}
|
||||
|
||||
void LLVOAvatar::getSpatialExtents(LLVector3& newMin, LLVector3& newMax)
|
||||
{
|
||||
LLVector3 buffer(0.25f, 0.25f, 0.25f);
|
||||
LLVector3 pos = getRenderPosition();
|
||||
newMin = pos - buffer;
|
||||
newMax = pos + buffer;
|
||||
float max_attachment_span = DEFAULT_MAX_PRIM_SCALE * 5.0f;
|
||||
float max_attachment_span = llvoavatar_max_prim_scale() * 5.0f;
|
||||
|
||||
//stretch bounding box by joint positions
|
||||
for (polymesh_map_t::iterator i = mMeshes.begin(); i != mMeshes.end(); ++i)
|
||||
|
|
|
|||
|
|
@ -98,9 +98,6 @@ void RlvSettings::initClass()
|
|||
gSavedPerAccountSettings.getControl(RLV_SETTING_LOGINLASTLOCATION)->setHiddenFromSettingsEditor(true);
|
||||
#endif // RLV_EXTENSION_STARTLOCATION
|
||||
|
||||
if (gSavedSettings.controlExists(RLV_SETTING_AVATAROFFSET_Z))
|
||||
gSavedSettings.getControl(RLV_SETTING_AVATAROFFSET_Z)->getSignal()->connect(boost::bind(&onChangedAvatarOffset, _2));
|
||||
|
||||
fInitialized = true;
|
||||
}
|
||||
}
|
||||
|
|
@ -121,13 +118,6 @@ void RlvSettings::initClass()
|
|||
}
|
||||
#endif // RLV_EXTENSION_STARTLOCATION
|
||||
|
||||
// Checked: 2010-10-11 (RLVa-1.2.0e) | Added: RLVa-1.2.0e
|
||||
bool RlvSettings::onChangedAvatarOffset(const LLSD& sdValue)
|
||||
{
|
||||
gAgent.sendAgentSetAppearance();
|
||||
return true;
|
||||
}
|
||||
|
||||
// Checked: 2010-02-27 (RLVa-1.2.0a) | Added: RLVa-1.1.0i
|
||||
bool RlvSettings::onChangedSettingBOOL(const LLSD& sdValue, bool* pfSetting)
|
||||
{
|
||||
|
|
|
|||
|
|
@ -104,7 +104,6 @@ public:
|
|||
|
||||
static void initClass();
|
||||
protected:
|
||||
static bool onChangedAvatarOffset(const LLSD& sdValue);
|
||||
static bool onChangedSettingBOOL(const LLSD& sdValue, bool* pfSetting);
|
||||
|
||||
#ifdef RLV_EXPERIMENTAL_COMPOSITEFOLDERS
|
||||
|
|
|
|||
|
|
@ -101,7 +101,7 @@ const S32 RLVa_VERSION_BUILD = 1;
|
|||
#define RLV_ROOT_FOLDER "#RLV"
|
||||
#define RLV_CMD_PREFIX '@'
|
||||
#define RLV_PUTINV_PREFIX "#RLV/~"
|
||||
#define RLV_SETROT_OFFSET F_PI_BY_TWO // @setrot is off by 90° with the rest of SL
|
||||
#define RLV_SETROT_OFFSET F_PI_BY_TWO // @setrot is off by 90 degrees with the rest of SL
|
||||
|
||||
#define RLV_FOLDER_FLAG_NOSTRIP "nostrip"
|
||||
#define RLV_FOLDER_PREFIX_HIDDEN '.'
|
||||
|
|
@ -292,7 +292,7 @@ enum ERlvAttachGroupType
|
|||
|
||||
#define RLV_SETTING_MAIN "RestrainedLove"
|
||||
#define RLV_SETTING_DEBUG "RestrainedLoveDebug"
|
||||
#define RLV_SETTING_AVATAROFFSET_Z "RestrainedLoveOffsetAvatarZ"
|
||||
#define RLV_SETTING_AVATAROFFSET_Z "AvatarZOffset"
|
||||
#define RLV_SETTING_FORBIDGIVETORLV "RestrainedLoveForbidGiveToRLV"
|
||||
#define RLV_SETTING_NOSETENV "RestrainedLoveNoSetEnv"
|
||||
#define RLV_SETTING_WEARADDPREFIX "RestrainedLoveStackWhenFolderBeginsWith"
|
||||
|
|
|
|||
|
|
@ -28,7 +28,7 @@
|
|||
<text name="Height Offset" width="105">
|
||||
Höhenabstand:
|
||||
</text>
|
||||
<slider left_delta="87" name="RestrainedLoveOffsetAvatarZ"/>
|
||||
<slider left_delta="87" name="AvatarZOffset"/>
|
||||
<text name="WL Sky" width="67">
|
||||
WL-Himmel:
|
||||
</text>
|
||||
|
|
|
|||
|
|
@ -26,7 +26,7 @@ Hoch solln sie leben! Elche forever! Und auch Mungos!
|
|||
<text name="group_cost">
|
||||
Mitgliedschaft: 123 L$
|
||||
</text>
|
||||
<button label="Zusammen" name="join_btn"/>
|
||||
<button label="Beitreten" name="join_btn"/>
|
||||
<button label="Verlassen" name="leave_btn"/>
|
||||
<button label="Profil anzeigen" name="view_profile_btn"/>
|
||||
</floater>
|
||||
|
|
|
|||
|
|
@ -6,6 +6,14 @@
|
|||
<menu_item_call label="Zoom-Standard" name="Zoom Default"/>
|
||||
<menu_item_check label="Karte drehen" name="Rotate Map"/>
|
||||
<menu_item_check label="Automatisch zentrieren" name="Auto Center"/>
|
||||
<menu_item_check label="Chatdistanz-Markierung" name="Chat Distance Ring"/>
|
||||
<menu name="MarkAvatar" label="Markieren...">
|
||||
<menu_item_call label="Rot" name="MarkRed"/>
|
||||
<menu_item_call label="Lila" name="MarkPurple"/>
|
||||
<menu_item_call label="Grün" name="MarkGreen"/>
|
||||
<menu_item_call label="Gelb" name="MarkYellow"/>
|
||||
<menu_item_call label="Markierungen löschen" name="Clear Marks"/>
|
||||
</menu>
|
||||
<menu_item_call label="Verfolgung abschalten" name="Stop Tracking"/>
|
||||
<menu_item_call label="Weltkarte" name="World Map"/>
|
||||
</menu>
|
||||
|
|
|
|||
|
|
@ -19,12 +19,11 @@
|
|||
<menu_item_check label="Fliegen" name="Fly"/>
|
||||
<menu_item_check label="Immer rennen" name="Always Run"/>
|
||||
<menu_item_check label="Sitzen erzwingen" name="Force Toggle Sitting"/>
|
||||
<menu_item_call label="Animation meines Avatars stoppen" name="Stop Animating My Avatar"/>
|
||||
<menu_item_check label="Phantom-Modus" name="Avatar Phantom"/>
|
||||
</menu>
|
||||
<menu_item_check label="Kamerasteuerung" name="Camera Controls"/>
|
||||
<menu label="Avatar-Befinden" name="avhealth">
|
||||
<menu_item_call label="Avatar-Animatonen stoppen" name="Stop Animating My Avatar"/>
|
||||
<menu_item_call label="Avatar-Animationen stoppen" name="Stop Animating My Avatar"/>
|
||||
<menu_item_call label="Aktualisiere Aussehen (Rebake)" name="Rebake Texture"/>
|
||||
<menu_item_call label="Auf männlichen Standard-Avatar zurücksetzen" name="ResetDefaultAvM"/>
|
||||
<menu_item_call label="Auf weiblichen Standard-Avatar zurücksetzen" name="ResetDefaultAvF"/>
|
||||
|
|
|
|||
|
|
@ -34,7 +34,11 @@
|
|||
<button label="?" name="top_colliders_help"/>
|
||||
<button label="Top-Skripts..." name="top_scripts_btn" tool_tip="Zeigt eine Liste der Objekte an, die die meiste Zeit benötigen, um Skripts auszuführen."/>
|
||||
<button label="?" name="top_scripts_help"/>
|
||||
<button label="Region neu starten" name="restart_btn" tool_tip="2-Minuten-Countdown und Region neu starten"/>
|
||||
<button label="Region neu starten" name="restart_btn" tool_tip="Countdown von ausgewählter Anzahl an Sekunden und Region neu starten"/>
|
||||
<button label="?" name="restart_help"/>
|
||||
<text name="label_restart_delay" width="60">
|
||||
Sekunden:
|
||||
</text>
|
||||
<spinner name="restart_delay" left_delta="65"/>
|
||||
<button label="Neustart verzögern" name="cancel_restart_btn" tool_tip="Regionsneustart um eine Stunde verschieben"/>
|
||||
</panel>
|
||||
|
|
|
|||
|
|
@ -70,7 +70,7 @@ Right Click Changes End Position.
|
|||
follows="left|top"
|
||||
height="18"
|
||||
increment="1"
|
||||
initial_val="100"
|
||||
initial_value="100"
|
||||
label="Rotation Speed:"
|
||||
label_width="85"
|
||||
max_val="300"
|
||||
|
|
|
|||
|
|
@ -22,34 +22,6 @@
|
|||
height="200"
|
||||
follows="all"
|
||||
layout="topleft">
|
||||
<text
|
||||
type="string"
|
||||
length="1"
|
||||
follows="left|top"
|
||||
height="10"
|
||||
layout="topleft"
|
||||
left="5"
|
||||
name="Maximum bandwidth"
|
||||
mouse_opaque="false"
|
||||
top="10"
|
||||
width="90">
|
||||
Max Bandwidth:
|
||||
</text>
|
||||
<slider
|
||||
can_edit_text="true"
|
||||
control_name="ThrottleBandwidthKBPS"
|
||||
decimal_digits="0"
|
||||
follows="left|top"
|
||||
height="15"
|
||||
increment="100"
|
||||
initial_value="500"
|
||||
layout="topleft"
|
||||
left_delta="100"
|
||||
max_val="10000"
|
||||
min_val="100"
|
||||
name="max_bandwidth"
|
||||
top_delta="-2"
|
||||
width="150" />
|
||||
<text
|
||||
type="string"
|
||||
length="1"
|
||||
|
|
@ -59,7 +31,7 @@
|
|||
left="5"
|
||||
name="Draw Distance"
|
||||
mouse_opaque="false"
|
||||
top_delta="20"
|
||||
top="10"
|
||||
width="90">
|
||||
Draw Distance:
|
||||
</text>
|
||||
|
|
@ -79,6 +51,34 @@
|
|||
top_delta="-2"
|
||||
width="150"
|
||||
label_width="3"/>
|
||||
<text
|
||||
type="string"
|
||||
length="1"
|
||||
follows="left|top"
|
||||
height="10"
|
||||
layout="topleft"
|
||||
left="5"
|
||||
name="Maximum bandwidth"
|
||||
mouse_opaque="false"
|
||||
top_delta="20"
|
||||
width="90">
|
||||
Max Bandwidth:
|
||||
</text>
|
||||
<slider
|
||||
can_edit_text="true"
|
||||
control_name="ThrottleBandwidthKBPS"
|
||||
decimal_digits="0"
|
||||
follows="left|top"
|
||||
height="15"
|
||||
increment="100"
|
||||
initial_value="500"
|
||||
layout="topleft"
|
||||
left_delta="100"
|
||||
max_val="10000"
|
||||
min_val="100"
|
||||
name="max_bandwidth"
|
||||
top_delta="-2"
|
||||
width="150" />
|
||||
<text
|
||||
type="string"
|
||||
length="1"
|
||||
|
|
@ -210,7 +210,7 @@
|
|||
</text>
|
||||
<slider
|
||||
can_edit_text="true"
|
||||
control_name="RestrainedLoveOffsetAvatarZ"
|
||||
control_name="AvatarZOffset"
|
||||
decimal_digits="2"
|
||||
follows="left|top"
|
||||
height="15"
|
||||
|
|
@ -220,7 +220,7 @@
|
|||
left_delta="79"
|
||||
max_val="2"
|
||||
min_val="-2"
|
||||
name="RestrainedLoveOffsetAvatarZ"
|
||||
name="AvatarZOffset"
|
||||
top_delta="-2"
|
||||
width="164"
|
||||
label_width="17"/>
|
||||
|
|
|
|||
|
|
@ -1517,7 +1517,7 @@ even though the user gets a free copy.
|
|||
label_width="10"
|
||||
layout="topleft"
|
||||
left_delta="0"
|
||||
max_val="10"
|
||||
max_val="64"
|
||||
min_val="0.01"
|
||||
name="Scale X"
|
||||
text_enabled_color="White"
|
||||
|
|
@ -1542,7 +1542,7 @@ even though the user gets a free copy.
|
|||
label_width="10"
|
||||
layout="topleft"
|
||||
left="10"
|
||||
max_val="10"
|
||||
max_val="64"
|
||||
min_val="0.01"
|
||||
name="Scale Y"
|
||||
text_enabled_color="White"
|
||||
|
|
@ -1567,7 +1567,7 @@ even though the user gets a free copy.
|
|||
label_width="10"
|
||||
layout="topleft"
|
||||
left="10"
|
||||
max_val="10"
|
||||
max_val="64"
|
||||
min_val="0.01"
|
||||
name="Scale Z"
|
||||
text_enabled_color="White"
|
||||
|
|
|
|||
|
|
@ -135,7 +135,7 @@
|
|||
width="280">
|
||||
<avatar_list
|
||||
follows="all"
|
||||
height="132"
|
||||
height="120"
|
||||
ignore_online_status="true"
|
||||
layout="topleft"
|
||||
multi_select="true"
|
||||
|
|
@ -152,4 +152,33 @@
|
|||
width="276" />
|
||||
</layout_panel>
|
||||
</layout_stack>
|
||||
</floater>
|
||||
<slider
|
||||
enabled="false"
|
||||
follows="left|bottom|right"
|
||||
height="23"
|
||||
increment="0.01"
|
||||
left="1"
|
||||
max_val="0.95"
|
||||
min_val="0.05"
|
||||
name="volume_slider"
|
||||
show_text="false"
|
||||
tool_tip="Voice volume"
|
||||
bottom_delta="12"
|
||||
value="0.5"
|
||||
width="150"/>
|
||||
<button
|
||||
enabled="false"
|
||||
follows="bottom|left"
|
||||
height="16"
|
||||
image_disabled="Audio_Off"
|
||||
image_disabled_selected="AudioMute_Off"
|
||||
image_hover_selected="AudioMute_Over"
|
||||
image_selected="AudioMute_Off"
|
||||
image_unselected="Audio_Off"
|
||||
is_toggle="true"
|
||||
left_pad="5"
|
||||
top_delta="4"
|
||||
name="mute_btn"
|
||||
width="16"
|
||||
scale_image="false"/>
|
||||
</floater>
|
||||
|
|
|
|||
|
|
@ -0,0 +1,165 @@
|
|||
<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
|
||||
<fonts>
|
||||
|
||||
<font name="default" comment="default font files (global fallbacks)">
|
||||
<file>Ubuntu-R.ttf</file>
|
||||
<os name="Windows">
|
||||
<file>MSGOTHIC.TTC</file>
|
||||
<file>gulim.ttc</file>
|
||||
<file>simhei.ttf</file>
|
||||
<file>ArialUni.ttf</file>
|
||||
</os>
|
||||
<os name="Mac">
|
||||
<file>ヒラギノ角ゴ Pro W3.otf</file>
|
||||
<file>ヒラギノ角ゴ ProN W3.otf</file>
|
||||
<file>AppleGothic.dfont</file>
|
||||
<file>AppleGothic.ttf</file>
|
||||
<file>华文细黑.ttf</file>
|
||||
</os>
|
||||
</font>
|
||||
|
||||
<font name="SansSerifBold"
|
||||
comment="Name of bold sans-serif font">
|
||||
<file>Ubuntu-B.ttf</file>
|
||||
<os name="Windows">
|
||||
<file>arialbd.ttf</file>
|
||||
</os>
|
||||
<os name="Mac">
|
||||
<file>Helvetica.dfont</file>
|
||||
</os>
|
||||
</font>
|
||||
|
||||
<font name="SansSerif" comment="Name of san-serif font (Truetype file name)">
|
||||
<file>Ubuntu-R.ttf</file>
|
||||
<os name="Windows">
|
||||
<file>arial.ttf</file>
|
||||
</os>
|
||||
<os name="Mac">
|
||||
<file>Helvetica.dfont</file>
|
||||
</os>
|
||||
</font>
|
||||
|
||||
<font name="SansSerif"
|
||||
comment="Name of bold sans-serif font"
|
||||
font_style="BOLD">
|
||||
<file>Ubuntu-B.ttf</file>
|
||||
</font>
|
||||
|
||||
<font name="SansSerif"
|
||||
comment="Name of italic sans-serif font"
|
||||
font_style="ITALIC">
|
||||
<file>Ubuntu-RI.ttf</file>
|
||||
</font>
|
||||
|
||||
<font name="SansSerif"
|
||||
comment="Name of bold italic sans-serif font"
|
||||
font_style="BOLD|ITALIC">
|
||||
<file>Ubuntu-BI.ttf</file>
|
||||
</font>
|
||||
|
||||
<font name="Monospace"
|
||||
comment="Name of monospace font">
|
||||
<file>DejaVuSansMono.ttf</file>
|
||||
</font>
|
||||
|
||||
<font name="DejaVu"
|
||||
comment="Name of DejaVu font">
|
||||
<file>DejaVuSans.ttf</file>
|
||||
</font>
|
||||
|
||||
<font name="DejaVu"
|
||||
comment="Name of DejaVu font (bold)"
|
||||
font_style="BOLD">
|
||||
<file>DejaVuSans-Bold.ttf</file>
|
||||
</font>
|
||||
|
||||
<font name="DejaVu"
|
||||
comment="Name of DejaVu font (italic)"
|
||||
font_style="ITALIC">
|
||||
<file>DejaVuSans-Oblique.ttf</file>
|
||||
</font>
|
||||
|
||||
<font name="DejaVu"
|
||||
comment="Name of DejaVu font (bold italic)"
|
||||
font_style="BOLD|ITALIC">
|
||||
<file>DejaVuSans-BoldOblique.ttf</file>
|
||||
</font>
|
||||
|
||||
<font name="Helvetica"
|
||||
comment="Name of Helvetica font">
|
||||
<file>DejaVuSans.ttf</file>
|
||||
<os name="Windows">
|
||||
<file>arial.ttf</file>
|
||||
</os>
|
||||
<os name="Mac">
|
||||
<file>arial.ttf</file>
|
||||
</os>
|
||||
</font>
|
||||
|
||||
<font name="Helvetica"
|
||||
comment="Name of Helvetica font (bold)"
|
||||
font_style="BOLD">
|
||||
<file>DejaVuSans-Bold.ttf</file>
|
||||
<os name="Windows">
|
||||
<file>arialbd.ttf</file>
|
||||
</os>
|
||||
<os name="Mac">
|
||||
<file>arialbd.ttf</file>
|
||||
</os>
|
||||
</font>
|
||||
|
||||
<font name="Helvetica"
|
||||
comment="Name of Helvetica font (italic)"
|
||||
font_style="ITALIC">
|
||||
<file>DejaVuSans-Oblique.ttf</file>
|
||||
<os name="Windows">
|
||||
<file>ariali.ttf</file>
|
||||
</os>
|
||||
<os name="Mac">
|
||||
<file>ariali.ttf</file>
|
||||
</os>
|
||||
</font>
|
||||
|
||||
<font name="Helvetica"
|
||||
comment="Name of Helvetica font (bold italic)"
|
||||
font_style="BOLD|ITALIC">
|
||||
<file>DejaVuSans-BoldOblique.ttf</file>
|
||||
<os name="Windows">
|
||||
<file>arialbi.ttf</file>
|
||||
</os>
|
||||
<os name="Mac">
|
||||
<file>arialbi.ttf</file>
|
||||
</os>
|
||||
</font>
|
||||
|
||||
<font name="OverrideTest"
|
||||
comment="Name of font to test overriding">
|
||||
<file>times.ttf</file>
|
||||
<file>DejaVuSans.ttf</file>
|
||||
</font>
|
||||
|
||||
<font_size name="Monospace"
|
||||
comment="Size for monospaced font (points, or 1/72 of an inch)"
|
||||
size="8.0"
|
||||
/>
|
||||
<font_size name="Huge"
|
||||
comment="Size of huge font (points, or 1/72 of an inch)"
|
||||
size="16.0"
|
||||
/>
|
||||
<font_size name="Large"
|
||||
comment="Size of large font (points, or 1/72 of an inch)"
|
||||
size="11.0"
|
||||
/>
|
||||
<font_size name="Medium"
|
||||
comment="Size of medium font (points, or 1/72 of an inch)"
|
||||
size="9.0"
|
||||
/>
|
||||
<font_size name="Small"
|
||||
comment="Size of small font (points, or 1/72 of an inch)"
|
||||
size="8.0"
|
||||
/>
|
||||
<font_size name="Pie"
|
||||
comment="Size of pie menu font (points, or 1/72 of an inch)"
|
||||
size="8.0"
|
||||
/>
|
||||
</fonts>
|
||||
|
|
@ -60,6 +60,19 @@
|
|||
function="Inventory.GearDefault.Check"
|
||||
parameter="sort_system_folders_to_top" />
|
||||
</menu_item_check>
|
||||
<menu_item_separator
|
||||
layout="topleft" />
|
||||
<menu_item_check
|
||||
label="Add objects on double click"
|
||||
layout="topleft"
|
||||
name="add_inv_toggle">
|
||||
<on_click
|
||||
function="Inventory.GearDefault.Custom.Action"
|
||||
parameter="add_objects_on_double_click" />
|
||||
<on_check
|
||||
function="Inventory.GearDefault.Check"
|
||||
parameter="add_objects_on_double_click" />
|
||||
</menu_item_check>
|
||||
<menu_item_separator
|
||||
layout="topleft" />
|
||||
<menu_item_call
|
||||
|
|
|
|||
|
|
@ -65,6 +65,43 @@
|
|||
parameter="MiniMapChatRing" />
|
||||
</menu_item_check>
|
||||
<menu_item_separator />
|
||||
<menu name="MarkAvatar" label="Mark...">
|
||||
<menu_item_call
|
||||
label="Red"
|
||||
name="MarkRed">
|
||||
<menu_item_call.on_click
|
||||
function="Minimap.Mark"
|
||||
parameter="Red" />
|
||||
</menu_item_call>
|
||||
<menu_item_call
|
||||
label="Purple"
|
||||
name="MarkPurple">
|
||||
<menu_item_call.on_click
|
||||
function="Minimap.Mark"
|
||||
parameter="Purple" />
|
||||
</menu_item_call>
|
||||
<menu_item_call
|
||||
label="Green"
|
||||
name="MarkGreen">
|
||||
<menu_item_call.on_click
|
||||
function="Minimap.Mark"
|
||||
parameter="Green" />
|
||||
</menu_item_call>
|
||||
<menu_item_call
|
||||
label="Yellow"
|
||||
name="MarkYellow">
|
||||
<menu_item_call.on_click
|
||||
function="Minimap.Mark"
|
||||
parameter="LtYellow" />
|
||||
</menu_item_call>
|
||||
<menu_item_separator />
|
||||
<menu_item_call
|
||||
label="Clear Marks"
|
||||
name="Clear Marks">
|
||||
<menu_item_call.on_click
|
||||
function="Minimap.ClearMarks"/>
|
||||
</menu_item_call>
|
||||
</menu>
|
||||
<menu_item_call
|
||||
label="Stop Tracking"
|
||||
name="Stop Tracking">
|
||||
|
|
|
|||
|
|
@ -62,7 +62,7 @@
|
|||
name="Freeze...">
|
||||
<pie_slice.on_click
|
||||
function="Avatar.Freeze" />
|
||||
<pie_slice.on_visible
|
||||
<pie_slice.on_enable
|
||||
function="Avatar.EnableFreezeEject"/>
|
||||
</pie_slice>
|
||||
<pie_slice
|
||||
|
|
@ -86,7 +86,7 @@
|
|||
name="Eject...">
|
||||
<pie_slice.on_click
|
||||
function="Avatar.Eject" />
|
||||
<pie_slice.on_visible
|
||||
<pie_slice.on_enable
|
||||
function="Avatar.EnableFreezeEject"/>
|
||||
</pie_slice>
|
||||
|
||||
|
|
|
|||
|
|
@ -62,7 +62,7 @@
|
|||
name="Freeze...">
|
||||
<pie_slice.on_click
|
||||
function="Avatar.Freeze" />
|
||||
<pie_slice.on_visible
|
||||
<pie_slice.on_enable
|
||||
function="Avatar.EnableFreezeEject"/>
|
||||
</pie_slice>
|
||||
<pie_slice
|
||||
|
|
@ -86,7 +86,7 @@
|
|||
name="Eject...">
|
||||
<pie_slice.on_click
|
||||
function="Avatar.Eject" />
|
||||
<pie_slice.on_visible
|
||||
<pie_slice.on_enable
|
||||
function="Avatar.EnableFreezeEject"/>
|
||||
</pie_slice>
|
||||
|
||||
|
|
|
|||
|
|
@ -173,7 +173,7 @@
|
|||
name="avhealth"
|
||||
tear_off="true">
|
||||
<menu_item_call
|
||||
label="Stop Avatar Animatons"
|
||||
label="Stop Avatar Animations"
|
||||
name="Stop Animating My Avatar">
|
||||
<menu_item_call.on_click
|
||||
function="Tools.StopAllAnimations" />
|
||||
|
|
@ -1978,7 +1978,7 @@
|
|||
tear_off="true"
|
||||
visible="false">
|
||||
<menu_item_call
|
||||
label="Image (L$[COST])..."
|
||||
label="Upload Image (L$[COST])..."
|
||||
name="Upload Image"
|
||||
shortcut="control|U">
|
||||
<menu_item_call.on_click
|
||||
|
|
|
|||
|
|
@ -63,7 +63,7 @@
|
|||
layout="topleft"
|
||||
left_pad="5"
|
||||
name="user_name"
|
||||
text_color="White"
|
||||
text_color="SL-White"
|
||||
top="8"
|
||||
translate="false"
|
||||
use_ellipses="true"
|
||||
|
|
|
|||
|
|
@ -75,21 +75,6 @@ background_opaque="false"
|
|||
|
||||
<!-- Replaces LLs button panel as they had not put buttons in -->
|
||||
|
||||
<button
|
||||
follows="bottom|left"
|
||||
enabled="false"
|
||||
tool_tip="Show additional options"
|
||||
height="25"
|
||||
image_hover_unselected="Toolbar_Left_Over"
|
||||
image_overlay="OptionsMenu_Off"
|
||||
image_selected="Toolbar_Left_Selected"
|
||||
image_unselected="Toolbar_Left_Off"
|
||||
layout="topleft"
|
||||
left="0"
|
||||
name="gear_menu_btn"
|
||||
top="0"
|
||||
width="31" />
|
||||
|
||||
<button
|
||||
follows="bottom|left"
|
||||
height="25"
|
||||
|
|
@ -98,7 +83,7 @@ background_opaque="false"
|
|||
image_selected="Toolbar_Middle_Selected"
|
||||
image_unselected="Toolbar_Middle_Off"
|
||||
layout="topleft"
|
||||
left_pad="2"
|
||||
left="0"
|
||||
name="new_btn"
|
||||
tool_tip="Create a new pick or classified at the current location"
|
||||
top="0"
|
||||
|
|
@ -113,7 +98,7 @@ background_opaque="false"
|
|||
left_pad="2"
|
||||
top="0"
|
||||
name="dummy_icon"
|
||||
width="211" />
|
||||
width="237" />
|
||||
|
||||
<dnd_button
|
||||
follows="bottom|right"
|
||||
|
|
@ -122,7 +107,7 @@ background_opaque="false"
|
|||
image_overlay="TrashItem_Off"
|
||||
image_selected="Toolbar_Right_Selected"
|
||||
image_unselected="Toolbar_Right_Off"
|
||||
right="-1"
|
||||
right="-10"
|
||||
layout="topleft"
|
||||
name="trash_btn"
|
||||
top="0"
|
||||
|
|
|
|||
|
|
@ -390,7 +390,7 @@
|
|||
label_width="155"
|
||||
layout="topleft"
|
||||
left="210"
|
||||
max_val="30"
|
||||
max_val="60"
|
||||
name="NearbyToastLifetime"
|
||||
top_pad="7"
|
||||
width="266" />
|
||||
|
|
|
|||
|
|
@ -82,6 +82,80 @@
|
|||
left="30"
|
||||
name="show_develop_menu_check"
|
||||
top_pad="5"
|
||||
width="237"/>
|
||||
|
||||
</panel>
|
||||
width="237"/>
|
||||
<text
|
||||
type="string"
|
||||
length="1"
|
||||
follows="left|top"
|
||||
height="10"
|
||||
layout="topleft"
|
||||
left="15"
|
||||
name="Media Rolloff"
|
||||
mouse_opaque="false"
|
||||
top_delta="40"
|
||||
width="155">
|
||||
Media audio rolloff distance:
|
||||
</text>
|
||||
<slider
|
||||
can_edit_text="true"
|
||||
control_name="MediaRollOffMin"
|
||||
decimal_digits="0"
|
||||
label="Min"
|
||||
follows="left|top"
|
||||
height="15"
|
||||
increment="1"
|
||||
initial_value="5"
|
||||
layout="topleft"
|
||||
left="15"
|
||||
max_val="512"
|
||||
min_val="1"
|
||||
name="MediaRollOffMin"
|
||||
top_delta="20"
|
||||
width="200"
|
||||
label_width="25"
|
||||
tool_tip="Minimum distance from the source for rolloff to begin taking effect."/>
|
||||
<text
|
||||
type="string"
|
||||
length="1"
|
||||
follows="left|top"
|
||||
height="10"
|
||||
layout="topleft"
|
||||
left_delta="205"
|
||||
name="Meters"
|
||||
mouse_opaque="false"
|
||||
top_delta="2"
|
||||
width="90">
|
||||
meters
|
||||
</text>
|
||||
<slider
|
||||
can_edit_text="true"
|
||||
control_name="MediaRollOffMax"
|
||||
decimal_digits="0"
|
||||
label="Max"
|
||||
follows="left|top"
|
||||
height="15"
|
||||
increment="1"
|
||||
initial_value="30"
|
||||
layout="topleft"
|
||||
left="15"
|
||||
max_val="512"
|
||||
min_val="1"
|
||||
name="MediaRollOffMax"
|
||||
top_delta="15"
|
||||
width="200"
|
||||
label_width="25"
|
||||
tool_tip="Maximum distance from the source for rolloff to completely mute the sound."/>
|
||||
<text
|
||||
type="string"
|
||||
length="1"
|
||||
follows="left|top"
|
||||
height="10"
|
||||
layout="topleft"
|
||||
left_delta="205"
|
||||
name="Meters"
|
||||
mouse_opaque="false"
|
||||
top_delta="2"
|
||||
width="90">
|
||||
meters
|
||||
</text>
|
||||
</panel>
|
||||
|
|
|
|||
|
|
@ -163,8 +163,16 @@
|
|||
width="270"
|
||||
control_name="TurnAroundWhenWalkingBackwards"
|
||||
tool_tip="Turns your avatar around to face the camera when you are walking backwards."/>
|
||||
|
||||
<text
|
||||
<check_box top_pad="5"
|
||||
follows="left|top"
|
||||
height="16"
|
||||
label="Show look at target"
|
||||
left="15"
|
||||
name="showlookat"
|
||||
width="270"
|
||||
control_name="DebugLookAt"
|
||||
tool_tip="Enable crosshairs marking where people are looking."/>
|
||||
<text
|
||||
type="string"
|
||||
length="1"
|
||||
follows="left|top"
|
||||
|
|
@ -697,7 +705,7 @@
|
|||
right="-1"
|
||||
follows="all"
|
||||
label="Chat"
|
||||
name="tab1-2" >
|
||||
name="firestorm_chat" >
|
||||
|
||||
<tab_container
|
||||
label="Firestorm Prefs"
|
||||
|
|
@ -713,7 +721,7 @@
|
|||
<!--Chat: General-->
|
||||
<panel
|
||||
border="true"
|
||||
top_pad="5"
|
||||
top_pad="1"
|
||||
bottom="-1"
|
||||
left="1"
|
||||
right="-1"
|
||||
|
|
@ -725,7 +733,7 @@
|
|||
name="chat_and_in_enhancements"
|
||||
follows="left|top"
|
||||
layout="topleft"
|
||||
top_pad="15"
|
||||
top_pad="5"
|
||||
left="24"
|
||||
height="10"
|
||||
width="180">
|
||||
|
|
@ -746,7 +754,7 @@
|
|||
label="Emotes use italic font"
|
||||
layout="topleft"
|
||||
top_pad="0"
|
||||
height="20"
|
||||
height="18"
|
||||
width="400" />
|
||||
<check_box
|
||||
control_name="AutoCloseOOC"
|
||||
|
|
@ -754,7 +762,7 @@
|
|||
label="Auto-close ((OOC)) parentheses"
|
||||
layout="topleft"
|
||||
top_pad="0"
|
||||
height="20"
|
||||
height="18"
|
||||
width="400" />
|
||||
<check_box
|
||||
control_name="OnlineOfflinetoNearbyChat"
|
||||
|
|
@ -762,7 +770,7 @@
|
|||
label="Friend on/off-line notices to Nearby Chat"
|
||||
layout="topleft"
|
||||
top_pad="0"
|
||||
height="20"
|
||||
height="18"
|
||||
width="400" />
|
||||
<check_box
|
||||
control_name="ShowStreamMetadata"
|
||||
|
|
@ -770,7 +778,7 @@
|
|||
label="Show stream title in local chat"
|
||||
layout="topleft"
|
||||
top_pad="0"
|
||||
height="20"
|
||||
height="18"
|
||||
width="400" />
|
||||
<check_box
|
||||
control_name="StreamMetadataAnnounceToChat"
|
||||
|
|
@ -778,7 +786,7 @@
|
|||
label="Announce stream title to chat channel:"
|
||||
layout="topleft"
|
||||
top_pad="0"
|
||||
height="20"
|
||||
height="18"
|
||||
width="240" />
|
||||
<spinner
|
||||
top_delta="-2"
|
||||
|
|
@ -786,7 +794,7 @@
|
|||
decimal_digits="0"
|
||||
layout="topleft"
|
||||
follows="left|top"
|
||||
height="20"
|
||||
height="18"
|
||||
left_pad="5"
|
||||
increment="1"
|
||||
initial_val="362394"
|
||||
|
|
@ -809,7 +817,7 @@
|
|||
follows="left|top"
|
||||
layout="topleft"
|
||||
left_pad="0"
|
||||
height="20"
|
||||
height="18"
|
||||
width="130"
|
||||
text_color="White_25">
|
||||
(requires restart)
|
||||
|
|
@ -820,7 +828,39 @@
|
|||
top_pad="0"
|
||||
left="20"
|
||||
width="400"
|
||||
height="20"
|
||||
height="18"
|
||||
name="FSShowIMInChatHistory"
|
||||
control_name="FSShowIMInChatHistory"
|
||||
label="Show IMs in nearby chat window"/>
|
||||
<check_box
|
||||
layout="topleft"
|
||||
follows="left|top"
|
||||
top_pad="0"
|
||||
left="30"
|
||||
width="155"
|
||||
height="18"
|
||||
name="FSLogIMInChatHistory"
|
||||
control_name="FSLogIMInChatHistory"
|
||||
label="Save IMs in nearby chat"/>
|
||||
<text
|
||||
top_delta="2"
|
||||
name="requires_save_chat_logs"
|
||||
follows="left|top"
|
||||
layout="topleft"
|
||||
left_pad="0"
|
||||
height="18"
|
||||
width="200"
|
||||
text_color="White_25">
|
||||
(requires saving nearby chat logs)
|
||||
</text>
|
||||
<check_box
|
||||
layout="topleft"
|
||||
follows="left|top"
|
||||
top_pad="0"
|
||||
left="20"
|
||||
width="400"
|
||||
height="18"
|
||||
name="PhoenixUseNearbyChatConsole"
|
||||
control_name="PhoenixUseNearbyChatConsole"
|
||||
label="Use console for chat popups instead of floating toasts (Viewer 1.x style)"/>
|
||||
<check_box
|
||||
|
|
@ -828,7 +868,8 @@
|
|||
follows="left|top"
|
||||
top_pad="0"
|
||||
width="50"
|
||||
height="20"
|
||||
height="18"
|
||||
name="PhoenixLogImToChatConsole"
|
||||
control_name="PhoenixLogImToChatConsole"
|
||||
label="Show IMs and group chat in chat console"/>
|
||||
<check_box
|
||||
|
|
@ -836,7 +877,8 @@
|
|||
follows="left|top"
|
||||
top_pad="0"
|
||||
width="200"
|
||||
height="20"
|
||||
height="18"
|
||||
name="ChatFullWidth"
|
||||
control_name="ChatFullWidth"
|
||||
label="Use full screen width for console"/>
|
||||
<text
|
||||
|
|
@ -862,7 +904,7 @@
|
|||
label="Fade chat after"
|
||||
label_width="90"
|
||||
left="35"
|
||||
max_val="30"
|
||||
max_val="60"
|
||||
min_val="2"
|
||||
name="fade_chat_time"
|
||||
width="130" />
|
||||
|
|
@ -902,27 +944,40 @@
|
|||
width="50"
|
||||
height="20"
|
||||
control_name="PhoenixBoldGroupMods"
|
||||
name="PhoenixBoldGroupMods"
|
||||
label="Show group moderator messages in bold"/>
|
||||
<check_box
|
||||
layout="topleft"
|
||||
follows="left|top"
|
||||
top_pad="0"
|
||||
left="20"
|
||||
width="50"
|
||||
height="20"
|
||||
height="18"
|
||||
control_name="FSPaymentInfoInChat"
|
||||
name="FSPaymentInfoInChat"
|
||||
label="Show L$ transactions in local chat instead of toasts"/>
|
||||
<check_box
|
||||
layout="topleft"
|
||||
follows="left|top"
|
||||
top_pad="0"
|
||||
width="50"
|
||||
height="18"
|
||||
control_name="PhoenixMuteAllGroups"
|
||||
name="PhoenixMuteAllGroups"
|
||||
label="Disable ALL group chats"/>
|
||||
<check_box
|
||||
layout="topleft"
|
||||
follows="left|top"
|
||||
top_pad="0"
|
||||
width="50"
|
||||
height="20"
|
||||
height="18"
|
||||
control_name="PhoenixMuteGroupWhenNoticesDisabled"
|
||||
name="PhoenixMuteGroupWhenNoticesDisabled"
|
||||
label="When 'Receive group notices' is disabled, disable group chat as well"/>
|
||||
<button
|
||||
layout="topleft"
|
||||
follows="left|top"
|
||||
top_pad="10"
|
||||
top_pad="5"
|
||||
width="250"
|
||||
height="22"
|
||||
mouse_opaque="true"
|
||||
|
|
@ -1704,6 +1759,14 @@
|
|||
name="PhoenixCommitForSaleOnChange_toggle"
|
||||
control_name="PhoenixCommitForSaleOnChange"/>
|
||||
|
||||
<check_box
|
||||
follows="left|top"
|
||||
height="16"
|
||||
label="Save scripts edited from inventory as Mono"
|
||||
tool_tip="When checked, editing a script directly from inventory and then saving it saves as Mono instead of LSL."
|
||||
name="FSSaveInventoryScriptsAsMono_toggle"
|
||||
control_name="FSSaveInventoryScriptsAsMono"/>
|
||||
|
||||
</panel>
|
||||
</tab_container>
|
||||
</panel>
|
||||
|
|
|
|||
|
|
@ -1067,7 +1067,7 @@
|
|||
</text>
|
||||
|
||||
<check_box
|
||||
control_name="RenderUnloadedAvatars"
|
||||
control_name="RenderUnloadedAvatar"
|
||||
height="16"
|
||||
initial_value="false"
|
||||
label="Show avatars that haven't finished loading"
|
||||
|
|
|
|||
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue