Merge Firestorm LGPL
commit
e35c22b8ee
2
.hgtags
2
.hgtags
|
|
@ -39,6 +39,7 @@ ab632018105ccfdf8a9e5ea1a8302badd58b686e Firestorm_5.0.1_Release
|
|||
8888a131acad19c49fcff1ad2cf75c54c8a41bb8 Firestorm_6.0.1_Beta
|
||||
ba5e1592f3a79317a3ebac441ee5946a81b97fab Firestorm_6.0.2_Release
|
||||
7b5a98fba31fa019bddb3ae900c6dd94604bc8be Firestorm_6.2.4_Release
|
||||
381d04b870a59ef98cc442a5d4aeb6b38cfdbed7 Firestorm_6.3.2_Release
|
||||
bb38ff1a763738609e1b3cada6d15fa61e5e84b9 2.1.1-release
|
||||
003dd9461bfa479049afcc34545ab3431b147c7c v2start
|
||||
52d96ad3d39be29147c5b2181b3bb46af6164f0e alpha-3
|
||||
|
|
@ -595,3 +596,4 @@ ab2ec5c5423b277d23fd0511ce50c15123ff2e03 6.2.3-release
|
|||
67297f9902857e357570c44722ad84de3aff974e 6.2.4-release
|
||||
9777aec6dc4a30a24537297ac040861ce16b82ae 6.3.0-release
|
||||
ece699718f163921717bb95a6131e94af4c4138f 6.3.1-release
|
||||
07f5d5bc9faebb45695853d40a9549773db816c0 6.3.2-release
|
||||
|
|
|
|||
|
|
@ -41,5 +41,3 @@ Logs:
|
|||
|
||||
Output:
|
||||
Look for output in build-linux-x86_64/newview/Release
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -52,5 +52,3 @@ Logs:
|
|||
|
||||
Output:
|
||||
Look for output in build-vc120-32/newview/Release for 32bit builds and build-vc120-64/newview/Release for 64bit
|
||||
|
||||
|
||||
|
|
@ -258,7 +258,7 @@
|
|||
<key>hash</key>
|
||||
<string>b760b4f3ab7794a897cf7f464d92e587</string>
|
||||
<key>url</key>
|
||||
<uri>http://downloads.phoenixviewer.com/discord_rpc-3.4.0-windows-192510505.tar.bz2</uri>
|
||||
<uri>http://3p.firestormviewer.org/discord_rpc-3.4.0-windows-192510505.tar.bz2</uri>
|
||||
</map>
|
||||
<key>name</key>
|
||||
<string>windows</string>
|
||||
|
|
@ -270,7 +270,7 @@
|
|||
<key>hash</key>
|
||||
<string>cefa1cdb50a85e36114ca89df66c0b5a</string>
|
||||
<key>url</key>
|
||||
<uri>http://downloads.phoenixviewer.com/discord_rpc-3.4.0-linux64-192540843.tar.bz2</uri>
|
||||
<uri>http://3p.firestormviewer.org/discord_rpc-3.4.0-linux64-192540843.tar.bz2</uri>
|
||||
</map>
|
||||
<key>name</key>
|
||||
<string>linux64</string>
|
||||
|
|
@ -282,7 +282,7 @@
|
|||
<key>hash</key>
|
||||
<string>3bc297a0fa47094bb52d361f80186387</string>
|
||||
<key>url</key>
|
||||
<uri>http://downloads.phoenixviewer.com/discord_rpc-3.4.0-darwin64-192522358.tar.bz2</uri>
|
||||
<uri>http://3p.firestormviewer.org/discord_rpc-3.4.0-darwin64-192522358.tar.bz2</uri>
|
||||
</map>
|
||||
<key>name</key>
|
||||
<string>darwin64</string>
|
||||
|
|
@ -1058,11 +1058,11 @@
|
|||
<key>archive</key>
|
||||
<map>
|
||||
<key>hash</key>
|
||||
<string>0fcdc89c60271eda1fb37879b0c4a373</string>
|
||||
<string>d892f61440dd1888327d764b04158c88</string>
|
||||
<key>hash_algorithm</key>
|
||||
<string>md5</string>
|
||||
<key>url</key>
|
||||
<string>file:///opt/firestorm/fmodstudio-2.00.03-darwin-192401637.tar.bz2</string>
|
||||
<string>file:///opt/firestorm/fmodstudio-2.00.05-darwin-192862021.tar.bz2</string>
|
||||
</map>
|
||||
<key>name</key>
|
||||
<string>darwin</string>
|
||||
|
|
@ -1072,11 +1072,11 @@
|
|||
<key>archive</key>
|
||||
<map>
|
||||
<key>hash</key>
|
||||
<string>09f22b6a3ac41739073418bb6b8544d6</string>
|
||||
<string>4bf66af7313c2a859bde553a563698e3</string>
|
||||
<key>hash_algorithm</key>
|
||||
<string>md5</string>
|
||||
<key>url</key>
|
||||
<string>file:///opt/firestorm/fmodstudio-2.00.03-linux64-192401637.tar.bz2</string>
|
||||
<string>file:///opt/firestorm/fmodstudio-2.00.05-linux64-192862026.tar.bz2</string>
|
||||
</map>
|
||||
<key>name</key>
|
||||
<string>linux64</string>
|
||||
|
|
@ -1086,11 +1086,11 @@
|
|||
<key>archive</key>
|
||||
<map>
|
||||
<key>hash</key>
|
||||
<string>a0d1821154e7ce5c418e3cdc2f26f3fc</string>
|
||||
<string>c668bd6961489c9bd6f07f1203a9d6eb</string>
|
||||
<key>hash_algorithm</key>
|
||||
<string>md5</string>
|
||||
<key>url</key>
|
||||
<string>file:///c:/cygwin/opt/firestorm/fmodstudio-2.00.03-windows-192171947.tar.bz2</string>
|
||||
<string>file:///c:/cygwin/opt/firestorm/fmodstudio-2.00.05-windows-192861134.tar.bz2</string>
|
||||
</map>
|
||||
<key>name</key>
|
||||
<string>windows</string>
|
||||
|
|
@ -1100,18 +1100,18 @@
|
|||
<key>archive</key>
|
||||
<map>
|
||||
<key>hash</key>
|
||||
<string>b98d2da1ed02f8ba218de414a83d0edc</string>
|
||||
<string>2cf52c44f8943f69b91c950ae7ea356a</string>
|
||||
<key>hash_algorithm</key>
|
||||
<string>md5</string>
|
||||
<key>url</key>
|
||||
<string>file:///c:/cygwin/opt/firestorm/fmodstudio-2.00.03-windows64-192171948.tar.bz2</string>
|
||||
<string>file:///c:/cygwin/opt/firestorm/fmodstudio-2.00.05-windows64-192861136.tar.bz2</string>
|
||||
</map>
|
||||
<key>name</key>
|
||||
<string>windows64</string>
|
||||
</map>
|
||||
</map>
|
||||
<key>version</key>
|
||||
<string>2.00.03</string>
|
||||
<string>2.00.05</string>
|
||||
</map>
|
||||
<key>fmodex</key>
|
||||
<map>
|
||||
|
|
@ -3512,9 +3512,9 @@ Copyright (c) 2012, 2014, 2015, 2016 nghttp2 contributors</string>
|
|||
<key>archive</key>
|
||||
<map>
|
||||
<key>hash</key>
|
||||
<string>aaf04f5ed1d28477781d976dc04871ee</string>
|
||||
<string>c5ab9d9d7482e48cd76f4bf391900a8c</string>
|
||||
<key>url</key>
|
||||
<string>http://automated-builds-secondlife-com.s3.amazonaws.com/ct2/31904/266163/viewer_manager-2.0.524157-darwin64-524157.tar.bz2</string>
|
||||
<string>http://automated-builds-secondlife-com.s3.amazonaws.com/ct2/43369/385585/viewer_manager-2.0.531000-darwin64-531000.tar.bz2</string>
|
||||
</map>
|
||||
<key>name</key>
|
||||
<string>darwin64</string>
|
||||
|
|
@ -3548,9 +3548,9 @@ Copyright (c) 2012, 2014, 2015, 2016 nghttp2 contributors</string>
|
|||
<key>archive</key>
|
||||
<map>
|
||||
<key>hash</key>
|
||||
<string>4604624f11b215b052f4a840f4da4bf8</string>
|
||||
<string>6b10d7407686d9e12e63576256581e3e</string>
|
||||
<key>url</key>
|
||||
<string>http://automated-builds-secondlife-com.s3.amazonaws.com/ct2/31906/266177/viewer_manager-2.0.524157-windows-524157.tar.bz2</string>
|
||||
<string>http://automated-builds-secondlife-com.s3.amazonaws.com/ct2/43370/385592/viewer_manager-2.0.531000-windows-531000.tar.bz2</string>
|
||||
</map>
|
||||
<key>name</key>
|
||||
<string>windows</string>
|
||||
|
|
@ -3561,7 +3561,7 @@ Copyright (c) 2012, 2014, 2015, 2016 nghttp2 contributors</string>
|
|||
<key>source_type</key>
|
||||
<string>hg</string>
|
||||
<key>version</key>
|
||||
<string>2.0.524157</string>
|
||||
<string>2.0.531000</string>
|
||||
</map>
|
||||
<key>vlc-bin</key>
|
||||
<map>
|
||||
|
|
|
|||
|
|
@ -1456,6 +1456,7 @@ Tonya Souther
|
|||
STORM-1905
|
||||
BUG-3875
|
||||
BUG-3968
|
||||
OPEN-345
|
||||
Torben Trautman
|
||||
TouchaHoney Perhaps
|
||||
TraductoresAnonimos Alter
|
||||
|
|
|
|||
|
|
@ -1,23 +1,17 @@
|
|||
# -*- cmake -*-
|
||||
|
||||
if (DISCORD_API_KEY)
|
||||
include(Prebuilt)
|
||||
use_prebuilt_binary(discord-rpc)
|
||||
set(DISCORD_INCLUDE_DIRS ${LIBS_PREBUILT_DIR}/include/discord-rpc)
|
||||
include(Prebuilt)
|
||||
use_prebuilt_binary(discord-rpc)
|
||||
set(DISCORD_INCLUDE_DIRS ${LIBS_PREBUILT_DIR}/include/discord-rpc)
|
||||
|
||||
if (WINDOWS)
|
||||
if (ADDRESS_SIZE EQUAL 32)
|
||||
set(DISCORD_LIBRARY discord-rpc)
|
||||
else ()
|
||||
set(DISCORD_LIBRARY discord-rpc_x64)
|
||||
endif(ADDRESS_SIZE EQUAL 32)
|
||||
elseif (LINUX)
|
||||
set(DISCORD_LIBRARY discord-rpc)
|
||||
elseif (DARWIN)
|
||||
set(DISCORD_LIBRARY discord-rpc)
|
||||
endif (WINDOWS)
|
||||
|
||||
add_definitions( -DDISCORD_API_KEY=\"${DISCORD_API_KEY}\")
|
||||
add_definitions( -DHAS_DISCORD )
|
||||
set(USE_DISCORD TRUE)
|
||||
endif (DISCORD_API_KEY)
|
||||
if (WINDOWS)
|
||||
if (ADDRESS_SIZE EQUAL 32)
|
||||
set(DISCORD_LIBRARY discord-rpc)
|
||||
else ()
|
||||
set(DISCORD_LIBRARY discord-rpc_x64)
|
||||
endif(ADDRESS_SIZE EQUAL 32)
|
||||
elseif (LINUX)
|
||||
set(DISCORD_LIBRARY discord-rpc)
|
||||
elseif (DARWIN)
|
||||
set(DISCORD_LIBRARY discord-rpc)
|
||||
endif (WINDOWS)
|
||||
|
|
|
|||
|
|
@ -147,6 +147,9 @@ endif (${CMAKE_SYSTEM_NAME} MATCHES "Linux")
|
|||
if (${CMAKE_SYSTEM_NAME} MATCHES "Darwin")
|
||||
set(DARWIN 1)
|
||||
|
||||
set(CMAKE_XCODE_ATTRIBUTE_CODE_SIGN_IDENTITY "")
|
||||
message(STATUS "CMAKE_XCODE_ATTRIBUTE_CODE_SIGN_IDENTITY = '${CMAKE_XCODE_ATTRIBUTE_CODE_SIGN_IDENTITY}'")
|
||||
|
||||
string(REGEX MATCH "-mmacosx-version-min=([^ ]+)" scratch "$ENV{LL_BUILD}")
|
||||
set(CMAKE_OSX_DEPLOYMENT_TARGET "${CMAKE_MATCH_1}")
|
||||
message(STATUS "CMAKE_OSX_DEPLOYMENT_TARGET = '${CMAKE_OSX_DEPLOYMENT_TARGET}'")
|
||||
|
|
@ -210,6 +213,9 @@ set(GRID agni CACHE STRING "Target Grid")
|
|||
set(FLICKR_API_KEY "daaabff93a967e0f37fa18863bb43b29")
|
||||
set(FLICKR_API_SECRET "846f0958020b553e")
|
||||
|
||||
# Discord client key.
|
||||
set(DDISCORD_API_KEY "427641535253708801")
|
||||
|
||||
set(ENABLE_SIGNING OFF CACHE BOOL "Enable signing the viewer")
|
||||
set(SIGNING_IDENTITY "" CACHE STRING "Specifies the signing identity to use, if necessary.")
|
||||
|
||||
|
|
|
|||
|
|
@ -56,7 +56,7 @@ LLControlGroup gWarningSettings("Warnings"); // persists ignored dialogs/warning
|
|||
#include "llavatarname.h"
|
||||
|
||||
// Stub for rlvGetAnonym
|
||||
const std::string& rlvGetAnonym(const LLAvatarName& avName)
|
||||
std::string rlvGetAnonym(const LLAvatarName& avName)
|
||||
{
|
||||
static std::string strAnonym = "A resident";
|
||||
return strAnonym;
|
||||
|
|
|
|||
|
|
@ -205,14 +205,10 @@ private:
|
|||
friend BlockTimer timeThisBlock(BlockTimerStatHandle&);
|
||||
|
||||
BlockTimer(BlockTimerStatHandle& timer);
|
||||
#if !defined(MSC_VER) || MSC_VER < 1700
|
||||
// Visual Studio 2010 has a bug where capturing an object returned by value
|
||||
// into a local reference requires access to the copy constructor at the call site.
|
||||
// This appears to be fixed in 2012.
|
||||
public:
|
||||
#endif
|
||||
|
||||
// no-copy
|
||||
BlockTimer(const BlockTimer& other) {};
|
||||
BlockTimer(const BlockTimer& other);
|
||||
BlockTimer& operator=(const BlockTimer& other);
|
||||
|
||||
private:
|
||||
U64 mStartTime;
|
||||
|
|
|
|||
|
|
@ -37,6 +37,42 @@ LLMortician::~LLMortician()
|
|||
sGraveyard.remove(this);
|
||||
}
|
||||
|
||||
U32 LLMortician::logClass(std::stringstream &str)
|
||||
{
|
||||
U32 size = sGraveyard.size();
|
||||
str << "Mortician graveyard count: " << size;
|
||||
str << " Zealous: " << (sDestroyImmediate ? "True" : "False");
|
||||
if (size == 0)
|
||||
{
|
||||
return size;
|
||||
}
|
||||
str << " Output:\n";
|
||||
std::list<LLMortician*>::iterator iter = sGraveyard.begin();
|
||||
std::list<LLMortician*>::iterator end = sGraveyard.end();
|
||||
while (iter!=end)
|
||||
{
|
||||
LLMortician* dead = *iter;
|
||||
iter++;
|
||||
// Be as detailed and safe as possible to figure out issues
|
||||
str << "Pointer: " << dead;
|
||||
if (dead)
|
||||
{
|
||||
try
|
||||
{
|
||||
str << " Is dead: " << (dead->isDead() ? "True" : "False");
|
||||
str << " Name: " << typeid(*dead).name();
|
||||
}
|
||||
catch (...)
|
||||
{
|
||||
|
||||
}
|
||||
}
|
||||
str << "\n";
|
||||
}
|
||||
str << "--------------------------------------------";
|
||||
return size;
|
||||
}
|
||||
|
||||
void LLMortician::updateClass()
|
||||
{
|
||||
while (!sGraveyard.empty())
|
||||
|
|
|
|||
|
|
@ -34,6 +34,8 @@ class LL_COMMON_API LLMortician
|
|||
{
|
||||
public:
|
||||
LLMortician() { mIsDead = FALSE; }
|
||||
static U32 graveyardCount() { return sGraveyard.size(); };
|
||||
static U32 logClass(std::stringstream &str);
|
||||
static void updateClass();
|
||||
virtual ~LLMortician();
|
||||
void die();
|
||||
|
|
|
|||
|
|
@ -5293,22 +5293,15 @@ bool LLVolumeFace::cacheOptimize()
|
|||
// LLVCacheVertexData suddenly does point to unrelated vertices. It is an interesting fact that this is no problem for the
|
||||
// windows version.
|
||||
//
|
||||
// To solve the issue with the pointer invalidation it would make sense to use a std::vector< U16 > for triangle indices, sort this
|
||||
// using
|
||||
// To solve the issue with the pointer invalidation it use a std::vector< U16 > for triangle indices, sort this using
|
||||
// std::sort( v.begin(), v.end(), [&triangle_data](U16 rhs, U16 lhs ){ return triangle_data[rhs].mScore > triangle_data[lhs].mScore; }
|
||||
// Then access all LLVCacheTriangleData> via triangle_data[ v[ idx ] ].
|
||||
//
|
||||
// This will help indeed with the destroyed triangles; but the result will still not be perfect and there are problems with alpha due to
|
||||
// what looks like z order.
|
||||
//
|
||||
// It is peculiar that none of this happens when compiling with MSVC.
|
||||
// Sadly for Linux it seems to be a decision between two evils
|
||||
// - Disable cacheOptimize and have correct meshes but potentially a bit of less FPS.
|
||||
// - Enable/fix cacheOptimize, potentially have a bit higher FPS but broken meshes.
|
||||
//
|
||||
// Having meshes correctly seems to be a bit of a lesser evil. Then do some wider testing on different systems to test for any other potential sideeffects.
|
||||
// Unfortunately this is a bit of a messy interwoven change all of this method, alternative is to copy a Linux specific version. Which
|
||||
// won't be that great either
|
||||
// NB The change really should be safe for Winows too, in fact it is surprising Windows does not suffer fro the sae bug. Just cannot test
|
||||
// the windows versions right now.
|
||||
|
||||
#ifndef LL_LINUX
|
||||
LLVCacheLRU cache;
|
||||
|
||||
if (mNumVertices < 3)
|
||||
|
|
@ -5343,6 +5336,13 @@ bool LLVolumeFace::cacheOptimize()
|
|||
triangle_data[tri_idx].mVertex[i%3] = &(vertex_data[idx]);
|
||||
}
|
||||
|
||||
// <FS:ND> FIRE-23370/BUG-8801/MAIN-5060
|
||||
#ifdef LL_LINUX
|
||||
std::vector< U32 > v;
|
||||
for (U32 j = 0; j < triangle_data.size(); ++j)
|
||||
v.push_back( j );
|
||||
#endif
|
||||
|
||||
/*F32 pre_acmr = 1.f;
|
||||
//measure cache misses from before rebuild
|
||||
{
|
||||
|
|
@ -5374,14 +5374,28 @@ bool LLVolumeFace::cacheOptimize()
|
|||
}
|
||||
|
||||
//sort triangle data by score
|
||||
// <FS:ND> FIRE-23370/BUG-8801/MAIN-5060
|
||||
#ifndef LL_LINUX
|
||||
std::sort(triangle_data.begin(), triangle_data.end());
|
||||
|
||||
#else
|
||||
std::sort( v.begin(), v.end(),
|
||||
[&triangle_data](U16 rhs, U16 lhs )
|
||||
{ return triangle_data[rhs].mScore > triangle_data[lhs].mScore; }
|
||||
);
|
||||
#endif
|
||||
|
||||
std::vector<U16> new_indices;
|
||||
|
||||
LLVCacheTriangleData* tri;
|
||||
|
||||
//prime pump by adding first triangle to cache;
|
||||
// <FS:ND> FIRE-23370/BUG-8801/MAIN-5060
|
||||
#ifndef LL_LINUX
|
||||
tri = &(triangle_data[0]);
|
||||
#else
|
||||
tri = &(triangle_data[v[0]]);
|
||||
#endif
|
||||
|
||||
cache.addTriangle(tri);
|
||||
new_indices.push_back(tri->mVertex[0]->mIdx);
|
||||
new_indices.push_back(tri->mVertex[1]->mIdx);
|
||||
|
|
@ -5398,11 +5412,21 @@ bool LLVolumeFace::cacheOptimize()
|
|||
breaks++;
|
||||
for (U32 j = 0; j < triangle_data.size(); ++j)
|
||||
{
|
||||
// <FS:ND> FIRE-23370/BUG-8801/MAIN-5060
|
||||
#ifndef LL_LINUX
|
||||
if (triangle_data[j].mActive)
|
||||
{
|
||||
tri = &(triangle_data[j]);
|
||||
break;
|
||||
}
|
||||
#else
|
||||
if (triangle_data[v[j]].mActive)
|
||||
{
|
||||
tri = &(triangle_data[v[j]]);
|
||||
break;
|
||||
}
|
||||
#endif
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -5534,8 +5558,6 @@ bool LLVolumeFace::cacheOptimize()
|
|||
//std::string result = llformat("ACMR pre/post: %.3f/%.3f -- %d triangles %d breaks", pre_acmr, post_acmr, mNumIndices/3, breaks);
|
||||
//LL_INFOS() << result << LL_ENDL;
|
||||
|
||||
#endif // <FS:ND/>
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -44,6 +44,7 @@ bool LLTransUtil::parseStrings(const std::string& xml_filename, const std::set<s
|
|||
bool success = LLUICtrlFactory::getLayeredXMLNode(xml_filename, root, LLDir::ALL_SKINS);
|
||||
if (!success)
|
||||
{
|
||||
gDirUtilp->dumpCurrentDirectories(LLError::LEVEL_WARN);
|
||||
LL_ERRS() << "Couldn't load string table " << xml_filename << ". Please reinstall viewer from https://secondlife.com/support/downloads/ and contact https://support.secondlife.com if issue persists after reinstall." << LL_ENDL;
|
||||
return false;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -929,7 +929,7 @@ std::string LLUrlEntryAgentUserName::getName(const LLAvatarName& avatar_name)
|
|||
// [RLVa:KB] - Checked: 2010-11-01 (RLVa-1.2.2a) | Added: RLVa-1.2.2a
|
||||
|
||||
// Defined in rlvcommon.cpp - redirects to RlvStrings::getAnonym() since we can't really get to that class from here
|
||||
extern const std::string& rlvGetAnonym(const LLAvatarName& avName);
|
||||
extern std::string rlvGetAnonym(const LLAvatarName& avName);
|
||||
|
||||
//
|
||||
// LLUrlEntryAgentRLVAnonymizedName Describes an RLV anonymized agent name Url, e.g.,
|
||||
|
|
|
|||
|
|
@ -37,7 +37,7 @@
|
|||
|
||||
// [RLVa:KB] - Checked: 2010-11-12 (RLVa-1.2.2a) | Added: RLVa-1.2.2a
|
||||
// Stub for rlvGetAnonym
|
||||
const std::string& rlvGetAnonym(const LLAvatarName& avName)
|
||||
std::string rlvGetAnonym(const LLAvatarName& avName)
|
||||
{
|
||||
static std::string strAnonym = "A resident";
|
||||
return strAnonym;
|
||||
|
|
|
|||
|
|
@ -1185,26 +1185,26 @@ bool LLDir::setSoundCacheDir(const std::string& path)
|
|||
}
|
||||
// </FS:Ansariel>
|
||||
|
||||
void LLDir::dumpCurrentDirectories()
|
||||
void LLDir::dumpCurrentDirectories(LLError::ELevel level)
|
||||
{
|
||||
LL_DEBUGS("AppInit","Directories") << "Current Directories:" << LL_ENDL;
|
||||
LL_VLOGS(level, "AppInit","Directories") << "Current Directories:" << LL_ENDL;
|
||||
|
||||
LL_DEBUGS("AppInit","Directories") << " CurPath: " << getCurPath() << LL_ENDL;
|
||||
LL_DEBUGS("AppInit","Directories") << " AppName: " << getAppName() << LL_ENDL;
|
||||
LL_DEBUGS("AppInit","Directories") << " ExecutableFilename: " << getExecutableFilename() << LL_ENDL;
|
||||
LL_DEBUGS("AppInit","Directories") << " ExecutableDir: " << getExecutableDir() << LL_ENDL;
|
||||
LL_DEBUGS("AppInit","Directories") << " ExecutablePathAndName: " << getExecutablePathAndName() << LL_ENDL;
|
||||
LL_DEBUGS("AppInit","Directories") << " WorkingDir: " << getWorkingDir() << LL_ENDL;
|
||||
LL_DEBUGS("AppInit","Directories") << " AppRODataDir: " << getAppRODataDir() << LL_ENDL;
|
||||
LL_DEBUGS("AppInit","Directories") << " OSUserDir: " << getOSUserDir() << LL_ENDL;
|
||||
LL_DEBUGS("AppInit","Directories") << " OSUserAppDir: " << getOSUserAppDir() << LL_ENDL;
|
||||
LL_DEBUGS("AppInit","Directories") << " LindenUserDir: " << getLindenUserDir() << LL_ENDL;
|
||||
LL_DEBUGS("AppInit","Directories") << " TempDir: " << getTempDir() << LL_ENDL;
|
||||
LL_DEBUGS("AppInit","Directories") << " CAFile: " << getCAFile() << LL_ENDL;
|
||||
LL_DEBUGS("AppInit","Directories") << " SkinBaseDir: " << getSkinBaseDir() << LL_ENDL;
|
||||
LL_DEBUGS("AppInit","Directories") << " SkinDir: " << getSkinDir() << LL_ENDL;
|
||||
LL_VLOGS(level, "AppInit", "Directories") << " CurPath: " << getCurPath() << LL_ENDL;
|
||||
LL_VLOGS(level, "AppInit", "Directories") << " AppName: " << getAppName() << LL_ENDL;
|
||||
LL_VLOGS(level, "AppInit", "Directories") << " ExecutableFilename: " << getExecutableFilename() << LL_ENDL;
|
||||
LL_VLOGS(level, "AppInit", "Directories") << " ExecutableDir: " << getExecutableDir() << LL_ENDL;
|
||||
LL_VLOGS(level, "AppInit", "Directories") << " ExecutablePathAndName: " << getExecutablePathAndName() << LL_ENDL;
|
||||
LL_VLOGS(level, "AppInit", "Directories") << " WorkingDir: " << getWorkingDir() << LL_ENDL;
|
||||
LL_VLOGS(level, "AppInit", "Directories") << " AppRODataDir: " << getAppRODataDir() << LL_ENDL;
|
||||
LL_VLOGS(level, "AppInit", "Directories") << " OSUserDir: " << getOSUserDir() << LL_ENDL;
|
||||
LL_VLOGS(level, "AppInit", "Directories") << " OSUserAppDir: " << getOSUserAppDir() << LL_ENDL;
|
||||
LL_VLOGS(level, "AppInit", "Directories") << " LindenUserDir: " << getLindenUserDir() << LL_ENDL;
|
||||
LL_VLOGS(level, "AppInit", "Directories") << " TempDir: " << getTempDir() << LL_ENDL;
|
||||
LL_VLOGS(level, "AppInit", "Directories") << " CAFile: " << getCAFile() << LL_ENDL;
|
||||
LL_VLOGS(level, "AppInit", "Directories") << " SkinBaseDir: " << getSkinBaseDir() << LL_ENDL;
|
||||
LL_VLOGS(level, "AppInit", "Directories") << " SkinDir: " << getSkinDir() << LL_ENDL;
|
||||
// [SL:KB] - Patch: Viewer-Skins | Checked: 2011-02-14 (Catznip-2.5)
|
||||
LL_DEBUGS("AppInit","Directories") << " SkinThemeDir: " << getSkinThemeDir() << LL_ENDL;
|
||||
LL_VLOGS(level, "AppInit", "Directories") << " SkinThemeDir: " << getSkinThemeDir() << LL_ENDL;
|
||||
// [/SL:KB]
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -251,7 +251,7 @@ class LLDir
|
|||
virtual bool setSoundCacheDir(const std::string& path);
|
||||
// </FS:Ansariel>
|
||||
|
||||
virtual void dumpCurrentDirectories();
|
||||
virtual void dumpCurrentDirectories(LLError::ELevel level = LLError::LEVEL_DEBUG);
|
||||
|
||||
// Utility routine
|
||||
std::string buildSLOSCacheDir() const;
|
||||
|
|
|
|||
|
|
@ -27,11 +27,6 @@
|
|||
#import <Cocoa/Cocoa.h>
|
||||
#import "llopenglview-objc.h"
|
||||
|
||||
// [Cinder] Override NSApplication to give us access to sendEvent
|
||||
@interface LLNSApplication : NSApplication
|
||||
@end
|
||||
// [/Cinder]
|
||||
|
||||
@interface LLAppDelegate : NSObject <NSApplicationDelegate> {
|
||||
LLNSWindow *window;
|
||||
NSWindow *inputWindow;
|
||||
|
|
@ -51,3 +46,6 @@
|
|||
- (void) languageUpdated;
|
||||
- (bool) romanScript;
|
||||
@end
|
||||
|
||||
@interface LLApplication : NSApplication
|
||||
@end
|
||||
|
|
|
|||
|
|
@ -519,17 +519,6 @@ attributedStringInfo getSegments(NSAttributedString *str)
|
|||
{
|
||||
[[self inputContext] handleEvent:theEvent];
|
||||
}
|
||||
|
||||
// OS X intentionally does not send us key-up information on cmd-key combinations.
|
||||
// This behaviour is not a bug, and only applies to cmd-combinations (no others).
|
||||
// Since SL assumes we receive those, we fake it here.
|
||||
// <FS:Ansariel> Cinder Roxley's fix for FIRE-11648
|
||||
//if (mModifiers & NSCommandKeyMask && !mHasMarkedText)
|
||||
//{
|
||||
// eventData.mKeyEvent = NativeKeyEventData::KEYUP;
|
||||
// callKeyUp([theEvent keyCode], mModifiers);
|
||||
//}
|
||||
// </FS:Ansariel>
|
||||
}
|
||||
|
||||
- (void)flagsChanged:(NSEvent *)theEvent
|
||||
|
|
@ -837,7 +826,9 @@ attributedStringInfo getSegments(NSAttributedString *str)
|
|||
[super setMarkedText:aString selectedRange:selectedRange replacementRange:replacementRange];
|
||||
if ([aString length] == 0) // this means Input Widow becomes empty
|
||||
{
|
||||
[_window orderOut:_window]; // Close this to avoid empty Input Window
|
||||
//[_window orderOut:_window]; // Close this to avoid empty Input Window
|
||||
// <FS:TS> Xcode 11 compile fix
|
||||
[self.window orderOut:self.window]; // Close this to avoid empty Input Window
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -861,7 +852,9 @@ attributedStringInfo getSegments(NSAttributedString *str)
|
|||
(mKeyPressed >= 0xF700 && mKeyPressed <= 0xF8FF))
|
||||
{
|
||||
// this is case a) of above comment
|
||||
[_window orderOut:_window]; // to avoid empty Input Window
|
||||
// <FS:TS> Xcode 11 compile fix
|
||||
//[_window orderOut:_window]; // to avoid empty Input Window
|
||||
[self.window orderOut:self.window]; // to avoid empty Input Window
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -77,7 +77,7 @@ BOOL check_for_card(const char* RENDERER, const char* bad_card)
|
|||
"\n"
|
||||
"If you own a supported card and continue to receive this message, try \n"
|
||||
"updating to the latest video card drivers. Otherwise contact the\n"
|
||||
"Phoenix Viewer Support group in world, or visit www.phoenixviewer.com\n"
|
||||
"Phoenix Viewer Support group in world, or visit www.firestormviewer.org\n"
|
||||
"for support.\n"
|
||||
"\n"
|
||||
"You can try to run Firestorm, but it will probably crash or run\n"
|
||||
|
|
|
|||
|
|
@ -1631,6 +1631,18 @@ configure_file(
|
|||
list(APPEND viewer_HEADER_FILES ${CMAKE_CURRENT_BINARY_DIR}/exoflickrkeys.h)
|
||||
# </exodus>
|
||||
|
||||
#<FS:LO> Discord rich presence
|
||||
|
||||
configure_file(
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/fsdiscordkey.h.in
|
||||
${CMAKE_CURRENT_BINARY_DIR}/fsdiscordkey.h
|
||||
@ONLY
|
||||
)
|
||||
list(APPEND viewer_HEADER_FILES ${CMAKE_CURRENT_BINARY_DIR}/fsdiscordkey.h)
|
||||
LIST(APPEND viewer_HEADER_FILES fsfloaterdiscord.h fsdiscordconnect.h)
|
||||
LIST(APPEND viewer_SOURCE_FILES fsfloaterdiscord.cpp fsdiscordconnect.cpp)
|
||||
#</FS:LO>
|
||||
|
||||
# <FS:TS> Generate the version information header file.
|
||||
configure_file(
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/fsversionvalues.h.in
|
||||
|
|
@ -1687,13 +1699,6 @@ if (DARWIN)
|
|||
)
|
||||
# [FS]
|
||||
|
||||
#<FS:LO> Discord rich presence
|
||||
if( USE_DISCORD )
|
||||
LIST(APPEND viewer_HEADER_FILES fsfloaterdiscord.h fsdiscordconnect.h)
|
||||
LIST(APPEND viewer_SOURCE_FILES fsfloaterdiscord.cpp fsdiscordconnect.cpp)
|
||||
endif()
|
||||
#</FS:LO>
|
||||
|
||||
find_library(AGL_LIBRARY AGL)
|
||||
find_library(APPKIT_LIBRARY AppKit)
|
||||
find_library(COCOA_LIBRARY Cocoa)
|
||||
|
|
@ -1753,13 +1758,6 @@ if (LINUX)
|
|||
LIST(APPEND viewer_SOURCE_FILES desktopnotifierlinux.cpp growlmanager.cpp)
|
||||
# [FS] Growl support
|
||||
|
||||
#<FS:LO> Discord rich presence
|
||||
if( USE_DISCORD )
|
||||
LIST(APPEND viewer_HEADER_FILES fsfloaterdiscord.h fsdiscordconnect.h)
|
||||
LIST(APPEND viewer_SOURCE_FILES fsfloaterdiscord.cpp fsdiscordconnect.cpp)
|
||||
endif()
|
||||
#</FS:LO>
|
||||
|
||||
SET(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -Wl,--as-needed")
|
||||
|
||||
set(viewer_LIBRARIES
|
||||
|
|
@ -1803,13 +1801,6 @@ if (WINDOWS)
|
|||
# [FS]
|
||||
)
|
||||
|
||||
#<FS:LO> Discord rich presence
|
||||
if( USE_DISCORD )
|
||||
LIST(APPEND viewer_HEADER_FILES fsfloaterdiscord.h fsdiscordconnect.h)
|
||||
LIST(APPEND viewer_SOURCE_FILES fsfloaterdiscord.cpp fsdiscordconnect.cpp)
|
||||
endif()
|
||||
#</FS:LO>
|
||||
|
||||
# precompiled header configuration
|
||||
# llviewerprecompiledheaders.cpp generates
|
||||
# the .pch file.
|
||||
|
|
@ -2452,9 +2443,7 @@ target_link_libraries(${VIEWER_BINARY_NAME}
|
|||
${GROWL_LIBRARY}
|
||||
)
|
||||
|
||||
if( USE_DISCORD )
|
||||
target_link_libraries(${VIEWER_BINARY_NAME} ${DISCORD_LIBRARY} )
|
||||
endif()
|
||||
target_link_libraries(${VIEWER_BINARY_NAME} ${DISCORD_LIBRARY} )
|
||||
|
||||
if (BUGSPLAT_DB)
|
||||
target_link_libraries(${VIEWER_BINARY_NAME}
|
||||
|
|
@ -2573,7 +2562,7 @@ if (DARWIN)
|
|||
set(MACOSX_BUNDLE_BUNDLE_VERSION "${VIEWER_SHORT_VERSION}${VIEWER_MACOSX_PHASE}${VIEWER_REVISION}")
|
||||
set(MACOSX_BUNDLE_COPYRIGHT "Copyright 2010-2019 The Phoenix Firestorm Project, Inc.")
|
||||
set(MACOSX_BUNDLE_NSMAIN_NIB_FILE "Firestorm.nib")
|
||||
set(MACOSX_BUNDLE_NSPRINCIPAL_CLASS "LLNSApplication")
|
||||
set(MACOSX_BUNDLE_NSPRINCIPAL_CLASS "LLApplication")
|
||||
|
||||
# https://blog.kitware.com/upcoming-in-cmake-2-8-12-osx-rpath-support/
|
||||
set(CMAKE_MACOSX_RPATH 1)
|
||||
|
|
|
|||
|
|
@ -1 +1 @@
|
|||
6.3.2
|
||||
6.3.3
|
||||
|
|
|
|||
|
|
@ -6733,7 +6733,7 @@
|
|||
<key>Type</key>
|
||||
<string>String</string>
|
||||
<key>Value</key>
|
||||
<string>http://wiki.phoenixviewer.com/[TOPIC]</string>
|
||||
<string>https://wiki.firestormviewer.org/[TOPIC]</string>
|
||||
<key>Backup</key>
|
||||
<integer>0</integer>
|
||||
</map>
|
||||
|
|
@ -6746,7 +6746,7 @@
|
|||
<key>Type</key>
|
||||
<string>String</string>
|
||||
<key>Value</key>
|
||||
<string>http://www.phoenixviewer.com/viewerfloater/howtofloater/index.html</string>
|
||||
<string>https://wiki.firestormviewer.org/start#basic_functions</string>
|
||||
<key>Backup</key>
|
||||
<integer>0</integer>
|
||||
</map>
|
||||
|
|
@ -18590,7 +18590,6 @@ Change of this parameter will affect the layout of buttons in notification toast
|
|||
<string>script_floater</string>
|
||||
<string>world_map</string>
|
||||
<string>preferences</string>
|
||||
<string>facebook</string>
|
||||
<string>flickr</string>
|
||||
<string>twitter</string>
|
||||
</array>
|
||||
|
|
|
|||
|
|
@ -1238,7 +1238,7 @@
|
|||
<key>FSEnableDiscordIntegration</key>
|
||||
<map>
|
||||
<key>Comment</key>
|
||||
<string>If enabled, well allow Firestorm to connect to discord if open and share location data with. Default (false)</string>
|
||||
<string>If enabled, will allow Firestorm to connect to discord if open and share location data with. Default (false)</string>
|
||||
<key>Persist</key>
|
||||
<integer>1</integer>
|
||||
<key>Type</key>
|
||||
|
|
@ -1268,5 +1268,16 @@
|
|||
<key>Value</key>
|
||||
<array></array>
|
||||
</map>
|
||||
<key>FSShareNameToDiscord</key>
|
||||
<map>
|
||||
<key>Comment</key>
|
||||
<string>If enabled, will allow Firestorm to share avatar user and display name with discord. Default (false)</string>
|
||||
<key>Persist</key>
|
||||
<integer>1</integer>
|
||||
<key>Type</key>
|
||||
<string>Boolean</string>
|
||||
<key>Value</key>
|
||||
<integer>0</integer>
|
||||
</map>
|
||||
</map>
|
||||
</llsd>
|
||||
|
|
|
|||
|
|
@ -15,8 +15,8 @@
|
|||
<file>nirmala.ttf</file>
|
||||
<file>tahoma.ttf</file>
|
||||
<file load_collection="true">Cambria.ttc</file>
|
||||
<file>malgun.ttf</file>
|
||||
</os>
|
||||
<file>malgun.ttf</file>
|
||||
</os>
|
||||
<os name="Mac">
|
||||
<file>ヒラギノ角ゴシック W3.ttc</file>
|
||||
<file>ヒラギノ角ゴ Pro W3.otf</file>
|
||||
|
|
|
|||
|
|
@ -48,9 +48,7 @@
|
|||
|
||||
#include "boost/algorithm/string/case_conv.hpp"
|
||||
|
||||
#ifndef DISCORD_API_KEY
|
||||
#define DISCORD_API_KEY ""
|
||||
#endif
|
||||
#include "fsdiscordkey.h"
|
||||
|
||||
boost::scoped_ptr<LLEventPump> FSDiscordConnect::sStateWatcher(new LLEventStream("DiscordConnectState"));
|
||||
boost::scoped_ptr<LLEventPump> FSDiscordConnect::sInfoWatcher(new LLEventStream("DiscordConnectInfo"));
|
||||
|
|
@ -207,10 +205,11 @@ void FSDiscordConnect::updateRichPresence()
|
|||
DiscordRichPresence discordPresence;
|
||||
memset(&discordPresence, 0, sizeof(discordPresence));
|
||||
discordPresence.state = region_name.c_str();
|
||||
LLAvatarName av_name;
|
||||
|
||||
std::string name;
|
||||
if (RlvActions::canShowName(RlvActions::SNC_DEFAULT, gAgentID))
|
||||
if (RlvActions::canShowName(RlvActions::SNC_DEFAULT, gAgentID) && gSavedPerAccountSettings.getBOOL("FSShareNameToDiscord"))
|
||||
{
|
||||
LLAvatarName av_name;
|
||||
if (LLAvatarNameCache::get(gAgentID, &av_name))
|
||||
{
|
||||
name = av_name.getCompleteName(true, true);
|
||||
|
|
@ -219,12 +218,9 @@ void FSDiscordConnect::updateRichPresence()
|
|||
{
|
||||
name = gAgentUsername;
|
||||
}
|
||||
discordPresence.details = name.c_str();
|
||||
}
|
||||
else
|
||||
{
|
||||
name = RlvStrings::getAnonym(av_name);
|
||||
}
|
||||
discordPresence.details = name.c_str();
|
||||
|
||||
discordPresence.startTimestamp = mConnectTime;
|
||||
|
||||
discordPresence.largeImageKey = "secondlife_512";
|
||||
|
|
@ -233,7 +229,8 @@ void FSDiscordConnect::updateRichPresence()
|
|||
std::string appName = std::string("via " + APP_NAME);
|
||||
discordPresence.smallImageText = appName.c_str();
|
||||
|
||||
discordPresence.partyId = gAgent.getRegion()->getRegionID().asString().c_str();
|
||||
std::string regionId = gAgent.getRegion()->getRegionID().asString();
|
||||
discordPresence.partyId = regionId.c_str();
|
||||
discordPresence.partySize = gAgent.getRegion()->mMapAvatars.size();
|
||||
discordPresence.partyMax = LLRegionInfoModel::instance().mAgentLimit;
|
||||
Discord_UpdatePresence(&discordPresence);
|
||||
|
|
|
|||
|
|
@ -0,0 +1,4 @@
|
|||
// THIS FILE IS AUTOGENERATED BY THE BUILD PROCESS
|
||||
// You can either set the keys in Variables.cmake or at the autobuild command
|
||||
|
||||
#define DISCORD_API_KEY "@DDISCORD_API_KEY@"
|
||||
|
|
@ -29,16 +29,16 @@
|
|||
|
||||
#include "fsfloaterdiscord.h"
|
||||
|
||||
#include "fsdiscordconnect.h"
|
||||
#include "llagent.h"
|
||||
#include "llagentui.h"
|
||||
#include "llcheckboxctrl.h"
|
||||
#include "llcombobox.h"
|
||||
#include "fsdiscordconnect.h"
|
||||
#include "llfloaterreg.h"
|
||||
#include "lltrans.h"
|
||||
#include "llviewerregion.h"
|
||||
#include "llviewercontrol.h"
|
||||
#include "lltabcontainer.h"
|
||||
#include "lltrans.h"
|
||||
#include "llviewercontrol.h"
|
||||
#include "llviewerregion.h"
|
||||
|
||||
#include "boost/algorithm/string/case_conv.hpp"
|
||||
|
||||
|
|
@ -48,7 +48,7 @@
|
|||
|
||||
void FSFloaterDiscord::onVisibilityChange(BOOL visible)
|
||||
{
|
||||
if(visible)
|
||||
if (visible)
|
||||
{
|
||||
LLEventPumps::instance().obtain("DiscordConnectState").stopListening("FSDiscordAccountPanel");
|
||||
LLEventPumps::instance().obtain("DiscordConnectState").listen("FSDiscordAccountPanel", boost::bind(&FSFloaterDiscord::onDiscordConnectStateChange, this, _1));
|
||||
|
|
@ -64,7 +64,7 @@ void FSFloaterDiscord::onVisibilityChange(BOOL visible)
|
|||
}
|
||||
|
||||
//Connected
|
||||
if(FSDiscordConnect::instance().isConnected())
|
||||
if (FSDiscordConnect::instance().isConnected())
|
||||
{
|
||||
showConnectedLayout();
|
||||
}
|
||||
|
|
@ -86,14 +86,9 @@ void FSFloaterDiscord::onVisibilityChange(BOOL visible)
|
|||
}
|
||||
}
|
||||
|
||||
void FSFloaterDiscord::onAllow()
|
||||
{
|
||||
gSavedPerAccountSettings.setBOOL("FSEnableDiscordIntegration", mAllowCheckbox->get());
|
||||
}
|
||||
|
||||
bool FSFloaterDiscord::onDiscordConnectStateChange(const LLSD& data)
|
||||
{
|
||||
if(FSDiscordConnect::instance().isConnected())
|
||||
if (FSDiscordConnect::instance().isConnected())
|
||||
{
|
||||
mAccountCaptionLabel->setText(getString("discord_connected"));
|
||||
showConnectedLayout();
|
||||
|
|
@ -111,7 +106,7 @@ bool FSFloaterDiscord::onDiscordConnectInfoChange()
|
|||
{
|
||||
LLSD info = FSDiscordConnect::instance().getInfo();
|
||||
|
||||
if(info.has("name"))
|
||||
if (info.has("name"))
|
||||
{
|
||||
mAccountNameLabel->setText(info["name"].asString());
|
||||
}
|
||||
|
|
@ -121,7 +116,7 @@ bool FSFloaterDiscord::onDiscordConnectInfoChange()
|
|||
|
||||
void FSFloaterDiscord::showConnectButton()
|
||||
{
|
||||
if(!mConnectButton->getVisible())
|
||||
if (!mConnectButton->getVisible())
|
||||
{
|
||||
mConnectButton->setVisible(TRUE);
|
||||
mDisconnectButton->setVisible(FALSE);
|
||||
|
|
@ -130,7 +125,7 @@ void FSFloaterDiscord::showConnectButton()
|
|||
|
||||
void FSFloaterDiscord::hideConnectButton()
|
||||
{
|
||||
if(mConnectButton->getVisible())
|
||||
if (mConnectButton->getVisible())
|
||||
{
|
||||
mConnectButton->setVisible(FALSE);
|
||||
mDisconnectButton->setVisible(TRUE);
|
||||
|
|
@ -140,7 +135,7 @@ void FSFloaterDiscord::hideConnectButton()
|
|||
void FSFloaterDiscord::showDisconnectedLayout()
|
||||
{
|
||||
mAccountCaptionLabel->setText(getString("discord_disconnected"));
|
||||
mAccountNameLabel->setText(std::string(""));
|
||||
mAccountNameLabel->setText(std::string());
|
||||
showConnectButton();
|
||||
}
|
||||
|
||||
|
|
@ -161,23 +156,16 @@ void FSFloaterDiscord::onDisconnect()
|
|||
}
|
||||
|
||||
FSFloaterDiscord::FSFloaterDiscord(const LLSD& key) : LLFloater(key),
|
||||
mStatusText(nullptr)
|
||||
mStatusText(nullptr)
|
||||
{
|
||||
mCommitCallbackRegistrar.add("FSDiscord.Connect", boost::bind(&FSFloaterDiscord::onConnect, this));
|
||||
mCommitCallbackRegistrar.add("FSDiscord.Disconnect", boost::bind(&FSFloaterDiscord::onDisconnect, this));
|
||||
mCommitCallbackRegistrar.add("FSDiscord.Allow", boost::bind(&FSFloaterDiscord::onAllow, this));
|
||||
mCommitCallbackRegistrar.add("FSDiscord.Combo", boost::bind(&FSFloaterDiscord::onCombo, this));
|
||||
mCommitCallbackRegistrar.add("FSDiscord.Add", boost::bind(&FSFloaterDiscord::onAdd, this));
|
||||
mCommitCallbackRegistrar.add("FSDiscord.Rem", boost::bind(&FSFloaterDiscord::onRemove, this));
|
||||
|
||||
setVisibleCallback(boost::bind(&FSFloaterDiscord::onVisibilityChange, this, _2));
|
||||
}
|
||||
|
||||
void FSFloaterDiscord::onCombo()
|
||||
{
|
||||
gSavedPerAccountSettings.setU32("FSMaxSharedMaturity", mMaturityCombo->getSelectedValue().asInteger());
|
||||
}
|
||||
|
||||
void FSFloaterDiscord::onAdd()
|
||||
{
|
||||
std::string name = mBlacklistEntry->getText();
|
||||
|
|
@ -257,12 +245,8 @@ BOOL FSFloaterDiscord::postBuild()
|
|||
mAccountNameLabel = getChild<LLTextBox>("account_name_label");
|
||||
mDisconnectButton = getChild<LLButton>("disconnect_btn");
|
||||
mConnectButton = getChild<LLButton>("connect_btn");
|
||||
mAllowCheckbox = getChild<LLCheckBoxCtrl>("startup_check");
|
||||
mMaturityCombo = getChild<LLComboBox>("maturity_desired_combobox");
|
||||
mBlacklistedNames = getChild<LLScrollListCtrl>("blacklisted_names");
|
||||
mBlacklistEntry = getChild<LLLineEditor>("blacklist_entry");
|
||||
mAddBlacklist = getChild<LLButton>("blacklist_entry_add");
|
||||
mRemBlacklist = getChild<LLButton>("blacklist_entry_rem");
|
||||
|
||||
LLSD list = gSavedPerAccountSettings.getLLSD("FSBlacklistedRegionNames");
|
||||
for (LLSD::array_const_iterator iter = list.beginArray();
|
||||
|
|
@ -272,10 +256,6 @@ BOOL FSFloaterDiscord::postBuild()
|
|||
mBlacklistedNames->addSimpleElement(iter->asString());
|
||||
}
|
||||
|
||||
mMaturityCombo->selectByValue((LLSD::Integer)gSavedPerAccountSettings.getU32("FSMaxSharedMaturity"));
|
||||
|
||||
mAllowCheckbox->set(gSavedPerAccountSettings.getBOOL("FSEnableDiscordIntegration"));
|
||||
|
||||
// Connection status widgets
|
||||
mStatusText = getChild<LLTextBox>("connection_status_text");
|
||||
|
||||
|
|
@ -320,4 +300,3 @@ void FSFloaterDiscord::draw()
|
|||
}
|
||||
LLFloater::draw();
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -28,12 +28,12 @@
|
|||
#define FS_FSFLOATERDISCORD_H
|
||||
|
||||
#include "llfloater.h"
|
||||
#include "lltextbox.h"
|
||||
|
||||
class LLCheckBoxCtrl;
|
||||
class LLComboBox;
|
||||
class LLScrollListCtrl;
|
||||
class LLLineEditor;
|
||||
class LLTextBox;
|
||||
|
||||
class FSFloaterDiscord : public LLFloater
|
||||
{
|
||||
|
|
@ -48,10 +48,7 @@ private:
|
|||
bool onDiscordConnectStateChange(const LLSD& data);
|
||||
bool onDiscordConnectInfoChange();
|
||||
void onConnect();
|
||||
void onUseAnotherAccount();
|
||||
void onDisconnect();
|
||||
void onAllow();
|
||||
void onCombo();
|
||||
void onAdd();
|
||||
void onRemove();
|
||||
|
||||
|
|
@ -60,19 +57,13 @@ private:
|
|||
void showDisconnectedLayout();
|
||||
void showConnectedLayout();
|
||||
|
||||
LLTextBox * mAccountCaptionLabel;
|
||||
LLTextBox * mAccountNameLabel;
|
||||
LLButton * mConnectButton;
|
||||
LLButton * mDisconnectButton;
|
||||
LLCheckBoxCtrl * mAllowCheckbox;
|
||||
LLComboBox * mMaturityCombo;
|
||||
LLScrollListCtrl * mBlacklistedNames;
|
||||
LLLineEditor * mBlacklistEntry;
|
||||
LLButton * mAddBlacklist;
|
||||
LLButton * mRemBlacklist;
|
||||
|
||||
LLTextBox* mStatusText;
|
||||
LLTextBox* mAccountCaptionLabel;
|
||||
LLTextBox* mAccountNameLabel;
|
||||
LLButton* mConnectButton;
|
||||
LLButton* mDisconnectButton;
|
||||
LLScrollListCtrl* mBlacklistedNames;
|
||||
LLLineEditor* mBlacklistEntry;
|
||||
LLTextBox* mStatusText;
|
||||
};
|
||||
|
||||
#endif // FS_FSFLOATERDISCORD_H
|
||||
|
||||
|
|
|
|||
|
|
@ -791,7 +791,9 @@ RMDir "$INSTDIR"
|
|||
IfFileExists "$INSTDIR" FOLDERFOUND NOFOLDER
|
||||
|
||||
FOLDERFOUND:
|
||||
MessageBox MB_OK $(DeleteProgramFilesMB) /SD IDOK IDOK NOFOLDER
|
||||
# Silent uninstall always removes all files (/SD IDYES)
|
||||
MessageBox MB_YESNO $(DeleteProgramFilesMB) /SD IDYES IDNO NOFOLDER
|
||||
RMDir /r "$INSTDIR"
|
||||
|
||||
NOFOLDER:
|
||||
|
||||
|
|
|
|||
Binary file not shown.
Binary file not shown.
|
|
@ -126,7 +126,7 @@ SOLUTION:- Usually this indicates that your graphics card does not meet
|
|||
<https://help.ubuntu.com/community/BinaryDriverHowto>
|
||||
* If your distribution does not make it easy, then you can download the
|
||||
required Linux drivers straight from your graphics card manufacturer:
|
||||
- <http://wiki.phoenixviewer.com/phoenix_downloads#video_drivers>
|
||||
- <https://wiki.firestormviewer.org/downloads#video_drivers>
|
||||
|
||||
PROBLEM 2:- My whole system seems to hang when running Firestorm.
|
||||
SOLUTION:- This is typically a hardware/driver issue. The first thing to
|
||||
|
|
@ -201,19 +201,19 @@ configuration options for advanced troubleshooters.
|
|||
|
||||
We're pleased to have released Firestorm client's source code under
|
||||
an Open Source license compatible with the 'LGPL'.
|
||||
<http://wiki.phoenixviewer.com/phoenix_downloads#source_code>
|
||||
<https://wiki.firestormviewer.org/downloads#source_code>
|
||||
|
||||
|
||||
8. GETTING MORE HELP AND REPORTING PROBLEMS
|
||||
-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
|
||||
|
||||
For general help and support with Firestorm:
|
||||
<http://wiki.phoenixviewer.com>
|
||||
<http://wiki.firestormviewer.org>
|
||||
|
||||
In-world discussion:
|
||||
|
||||
Main support: Join one of our in-world support groups.
|
||||
<http://wiki.phoenixviewer.com/firestorm_in-world_groups>
|
||||
<http://wiki.firestormviewer.org/firestorm_in-world_groups>
|
||||
|
||||
There is also a 'Linux Client Users' group inside Second Life which
|
||||
is free to join. You can find it by pressing the 'Search' button at
|
||||
|
|
@ -222,7 +222,7 @@ searching for 'Linux'. This group is useful for discussing Linux
|
|||
issues with fellow Linux client users who are online.
|
||||
|
||||
The Firestorm Issue Tracker:
|
||||
<http://jira.phoenixviewer.com/>
|
||||
<https://jira.firestormviewer.org/>
|
||||
This is the right place for finding known issues and reporting new
|
||||
bugs in all Firestorm releases if you find that the Troubleshooting
|
||||
section in this file hasn't helped.
|
||||
|
|
|
|||
|
|
@ -13,7 +13,7 @@ function install_desktop_entry()
|
|||
local desktop_entry="\
|
||||
[Desktop Entry]\n\
|
||||
Name=Firestorm Viewer\n\
|
||||
Comment=Client for accessing 3D virtual words\n\
|
||||
Comment=Client for accessing 3D virtual worlds\n\
|
||||
Exec=${installation_prefix}/firestorm\n\
|
||||
Icon=${installation_prefix}/firestorm_icon.png\n\
|
||||
Terminal=false\n\
|
||||
|
|
|
|||
|
|
@ -183,7 +183,7 @@ most common problems when launching the Viewer (particularly
|
|||
loading shared libraries') may be solved by enabling 32-bit
|
||||
architecture and installing one or more 32-bit compatibility libraries.
|
||||
Consult the Firestorm wiki at
|
||||
http://wiki.phoenixviewer.com/32-bit_viewer_in_64-bit_linux
|
||||
http://wiki.firestormviewer.org/32-bit_viewer_in_64-bit_linux
|
||||
EOFMARKER
|
||||
fi
|
||||
fi
|
||||
|
|
|
|||
|
|
@ -4416,6 +4416,23 @@ BOOL LLAgent::getHomePosGlobal( LLVector3d* pos_global )
|
|||
return TRUE;
|
||||
}
|
||||
|
||||
bool LLAgent::isInHomeRegion()
|
||||
{
|
||||
if(!mHaveHomePosition)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
if (!getRegion())
|
||||
{
|
||||
return false;
|
||||
}
|
||||
if (getRegion()->getHandle() != mHomeRegionHandle)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
void LLAgent::clearVisualParams(void *data)
|
||||
{
|
||||
if (isAgentAvatarValid())
|
||||
|
|
|
|||
|
|
@ -237,6 +237,8 @@ public:
|
|||
void setStartPosition(U32 location_id); // Marks current location as start, sends information to servers
|
||||
void setHomePosRegion(const U64& region_handle, const LLVector3& pos_region);
|
||||
BOOL getHomePosGlobal(LLVector3d* pos_global);
|
||||
bool isInHomeRegion();
|
||||
|
||||
private:
|
||||
void setStartPositionSuccess(const LLSD &result);
|
||||
|
||||
|
|
|
|||
|
|
@ -37,21 +37,6 @@
|
|||
#include "llappviewermacosx-for-objc.h"
|
||||
#include <Carbon/Carbon.h> // Used for Text Input Services ("Safe" API - it's supported)
|
||||
|
||||
// [Cinder] We need to override sendEvent in NSApplication and force those
|
||||
// Apple bastards to send us Command keyUp events!
|
||||
@implementation LLNSApplication
|
||||
|
||||
- (void)sendEvent:(NSEvent *)event {
|
||||
// Fuck you, conventions!
|
||||
if ([event type] == NSKeyUp && ([event modifierFlags] & NSCommandKeyMask))
|
||||
[[self keyWindow] sendEvent:event];
|
||||
else
|
||||
[super sendEvent:event];
|
||||
}
|
||||
|
||||
@end
|
||||
// [Cinder]
|
||||
|
||||
@implementation LLAppDelegate
|
||||
|
||||
@synthesize window;
|
||||
|
|
@ -359,3 +344,16 @@ struct AttachmentInfo
|
|||
#endif // LL_BUGSPLAT
|
||||
|
||||
@end
|
||||
|
||||
@implementation LLApplication
|
||||
|
||||
- (void)sendEvent:(NSEvent *)event
|
||||
{
|
||||
[super sendEvent:event];
|
||||
if ([event type] == NSKeyUp && ([event modifierFlags] & NSCommandKeyMask))
|
||||
{
|
||||
[[self keyWindow] sendEvent:event];
|
||||
}
|
||||
}
|
||||
|
||||
@end
|
||||
|
|
|
|||
|
|
@ -3443,6 +3443,7 @@ void LLAppViewer::initStrings()
|
|||
if (strings_path_full.empty() || !LLFile::isfile(strings_path_full))
|
||||
{
|
||||
// initial check to make sure files are there failed
|
||||
gDirUtilp->dumpCurrentDirectories(LLError::LEVEL_WARN);
|
||||
LL_ERRS() << "Viewer failed to find localization and UI files. Please reinstall viewer from https://secondlife.com/support/downloads/ and contact https://support.secondlife.com if issue persists after reinstall." << LL_ENDL;
|
||||
}
|
||||
LLTransUtil::parseStrings(strings_file, default_trans_args);
|
||||
|
|
@ -3733,7 +3734,7 @@ LLSD LLAppViewer::getViewerInfo() const
|
|||
// https://releasenotes.secondlife.com/viewer/2.1.0.123456.html
|
||||
std::string url = LLTrans::getString("RELEASE_NOTES_BASE_URL");
|
||||
// <FS:Ansariel> FIRE-13993: Leave out channel so we can use a URL like
|
||||
// http://wiki.phoenixviewer.com/firestorm_change_log_x.y.z.rev
|
||||
// http://wiki.firestormviewer.org/firestorm_change_log_x.y.z.rev
|
||||
//if (! LLStringUtil::endsWith(url, "/"))
|
||||
// url += "/";
|
||||
//url += LLURI::escape(LLVersionInfo::getVersion()) + ".html";
|
||||
|
|
@ -5345,10 +5346,37 @@ void LLAppViewer::saveFinalSnapshot()
|
|||
|
||||
std::string snap_filename = gDirUtilp->getLindenUserDir();
|
||||
snap_filename += gDirUtilp->getDirDelimiter();
|
||||
snap_filename += SCREEN_LAST_FILENAME;
|
||||
snap_filename += LLStartUp::getScreenLastFilename();
|
||||
// use full pixel dimensions of viewer window (not post-scale dimensions)
|
||||
gViewerWindow->saveSnapshot(snap_filename, gViewerWindow->getWindowWidthRaw(), gViewerWindow->getWindowHeightRaw(), FALSE, TRUE);
|
||||
gViewerWindow->saveSnapshot(snap_filename,
|
||||
gViewerWindow->getWindowWidthRaw(),
|
||||
gViewerWindow->getWindowHeightRaw(),
|
||||
FALSE,
|
||||
TRUE,
|
||||
LLSnapshotModel::SNAPSHOT_TYPE_COLOR,
|
||||
LLSnapshotModel::SNAPSHOT_FORMAT_PNG);
|
||||
mSavedFinalSnapshot = TRUE;
|
||||
|
||||
if (gAgent.isInHomeRegion())
|
||||
{
|
||||
LLVector3d home;
|
||||
if (gAgent.getHomePosGlobal(&home) && dist_vec(home, gAgent.getPositionGlobal()) < 10)
|
||||
{
|
||||
// We are at home position or close to it, see if we need to create home screenshot
|
||||
// Notes:
|
||||
// 1. It might be beneficial to also replace home if file is too old
|
||||
// 2. This is far from best way/place to update screenshot since location might be not fully loaded,
|
||||
// but we don't have many options
|
||||
std::string snap_home = gDirUtilp->getLindenUserDir();
|
||||
snap_home += gDirUtilp->getDirDelimiter();
|
||||
snap_home += LLStartUp::getScreenHomeFilename();
|
||||
if (!gDirUtilp->fileExists(snap_home))
|
||||
{
|
||||
// We are at home position yet no home image exist, fix it
|
||||
LLFile::copy(snap_filename, snap_home);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -385,12 +385,12 @@ void ll_nvapi_init(NvDRSSessionHandle hSession)
|
|||
#if DEBUGGING_SEH_FILTER
|
||||
# define WINMAIN DebuggingWinMain
|
||||
#else
|
||||
# define WINMAIN WinMain
|
||||
# define WINMAIN wWinMain
|
||||
#endif
|
||||
|
||||
int APIENTRY WINMAIN(HINSTANCE hInstance,
|
||||
HINSTANCE hPrevInstance,
|
||||
LPSTR lpCmdLine,
|
||||
PWSTR pCmdLine,
|
||||
int nCmdShow)
|
||||
{
|
||||
const S32 MAX_HEAPS = 255;
|
||||
|
|
@ -430,8 +430,8 @@ int APIENTRY WINMAIN(HINSTANCE hInstance,
|
|||
// *FIX: global
|
||||
gIconResource = MAKEINTRESOURCE(IDI_LL_ICON);
|
||||
|
||||
LLAppViewerWin32* viewer_app_ptr = new LLAppViewerWin32(lpCmdLine);
|
||||
|
||||
LLAppViewerWin32* viewer_app_ptr = new LLAppViewerWin32(ll_convert_wide_to_string(pCmdLine).c_str());
|
||||
|
||||
gOldTerminateHandler = std::set_terminate(exceptionTerminateHandler);
|
||||
|
||||
viewer_app_ptr->setErrorHandler(LLAppViewer::handleViewerCrash);
|
||||
|
|
@ -543,9 +543,9 @@ int APIENTRY WINMAIN(HINSTANCE hInstance,
|
|||
// in a method that uses object destructors. Go figure.
|
||||
// This winmain just calls the real winmain inside __try.
|
||||
// The __except calls our exception filter function. For debugging purposes.
|
||||
int APIENTRY WinMain(HINSTANCE hInstance,
|
||||
int APIENTRY wWinMain(HINSTANCE hInstance,
|
||||
HINSTANCE hPrevInstance,
|
||||
LPSTR lpCmdLine,
|
||||
PWSTR lpCmdLine,
|
||||
int nCmdShow)
|
||||
{
|
||||
__try
|
||||
|
|
|
|||
|
|
@ -522,13 +522,14 @@ void LLCOFWearables::populateAttachmentsAndBodypartsLists(const LLInventoryModel
|
|||
{
|
||||
mAttachments->sort();
|
||||
mAttachments->notify(REARRANGE); //notifying the parent about the list's size change (cause items were added with rearrange=false)
|
||||
setAttachmentsTitle();
|
||||
}
|
||||
else
|
||||
{
|
||||
mAttachments->setNoItemsCommentText(LLTrans::getString("no_attachments"));
|
||||
}
|
||||
|
||||
setAttachmentsTitle();
|
||||
|
||||
if (mBodyParts->size())
|
||||
{
|
||||
mBodyParts->sort();
|
||||
|
|
|
|||
|
|
@ -327,10 +327,13 @@ LLControlAvatar *LLControlAvatar::createControlAvatar(LLVOVolume *obj)
|
|||
{
|
||||
LLControlAvatar *cav = (LLControlAvatar*)gObjectList.createObjectViewer(LL_PCODE_LEGACY_AVATAR, gAgent.getRegion(), CO_FLAG_CONTROL_AVATAR);
|
||||
|
||||
cav->mRootVolp = obj;
|
||||
if (cav)
|
||||
{
|
||||
cav->mRootVolp = obj;
|
||||
|
||||
// Sync up position/rotation with object
|
||||
cav->matchVolumeTransform();
|
||||
// Sync up position/rotation with object
|
||||
cav->matchVolumeTransform();
|
||||
}
|
||||
|
||||
return cav;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1745,6 +1745,12 @@ bool LLDrawPoolAvatar::getRiggedGeometry(
|
|||
face->setIndicesIndex(0);
|
||||
|
||||
//rigged faces do not batch textures
|
||||
|
||||
// <FS:ND> if needed reset drawinfo as the face was set up for texture for batching
|
||||
if (face->getTextureIndex() != 0xFF )
|
||||
face->setDrawInfo(nullptr);
|
||||
// <FS:ND>
|
||||
|
||||
face->setTextureIndex(255);
|
||||
|
||||
if (buffer.isNull() || buffer->getTypeMask() != data_mask || !buffer->isWriteable())
|
||||
|
|
|
|||
|
|
@ -478,7 +478,10 @@ void LLFace::setTextureIndex(U8 index)
|
|||
}
|
||||
else
|
||||
{
|
||||
// <FS:ND> Restore old test, as the new one would also crash on empty texture list, which is exactly what the original test did avoid
|
||||
//if (mDrawInfo && mDrawInfo->mTextureList.size() <= 1)
|
||||
if (mDrawInfo && !mDrawInfo->mTextureList.empty())
|
||||
// </FS:ND>
|
||||
{
|
||||
LL_ERRS() << "Face with no texture index references indexed texture draw info." << LL_ENDL;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -2332,9 +2332,6 @@ void LLPanelLandOptions::refresh()
|
|||
mCheckShowDirectory->setLabel(getString("DirectoryFee", map));
|
||||
}
|
||||
}
|
||||
|
||||
// <FS:Ansariel> Disable label text for show avi checkbox as well
|
||||
getChild<LLTextBox>("allow_label5")->setColor(LLUIColorTable::instance().getColor(mSeeAvatarsCtrl->getEnabled() ? "LabelTextColor" : "LabelDisabledColor"));
|
||||
}
|
||||
|
||||
S32 LLPanelLandOptions::getDirectoryFee()
|
||||
|
|
|
|||
|
|
@ -41,6 +41,7 @@ const S32 SIZE_OF_ONE_KB = 1024;
|
|||
LLFloaterMyScripts::LLFloaterMyScripts(const LLSD& seed)
|
||||
: LLFloater(seed),
|
||||
mGotAttachmentMemoryUsed(false),
|
||||
mAttachmentDetailsRequested(false),
|
||||
mAttachmentMemoryMax(0),
|
||||
mAttachmentMemoryUsed(0),
|
||||
mGotAttachmentURLsUsed(false),
|
||||
|
|
@ -55,12 +56,24 @@ BOOL LLFloaterMyScripts::postBuild()
|
|||
|
||||
std::string msg_waiting = LLTrans::getString("ScriptLimitsRequestWaiting");
|
||||
getChild<LLUICtrl>("loading_text")->setValue(LLSD(msg_waiting));
|
||||
return requestAttachmentDetails();
|
||||
mAttachmentDetailsRequested = requestAttachmentDetails();
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
BOOL LLFloaterMyScripts::requestAttachmentDetails()
|
||||
// virtual
|
||||
void LLFloaterMyScripts::onOpen(const LLSD& key)
|
||||
{
|
||||
if (!gAgent.getRegion()) return FALSE;
|
||||
if (!mAttachmentDetailsRequested)
|
||||
{
|
||||
mAttachmentDetailsRequested = requestAttachmentDetails();
|
||||
}
|
||||
|
||||
LLFloater::onOpen(key);
|
||||
}
|
||||
|
||||
bool LLFloaterMyScripts::requestAttachmentDetails()
|
||||
{
|
||||
if (!gAgent.getRegion()) return false;
|
||||
|
||||
LLSD body;
|
||||
std::string url = gAgent.getRegion()->getCapability("AttachmentResources");
|
||||
|
|
@ -68,11 +81,11 @@ BOOL LLFloaterMyScripts::requestAttachmentDetails()
|
|||
{
|
||||
LLCoros::instance().launch("LLFloaterMyScripts::getAttachmentLimitsCoro",
|
||||
boost::bind(&LLFloaterMyScripts::getAttachmentLimitsCoro, this, url));
|
||||
return TRUE;
|
||||
return true;
|
||||
}
|
||||
else
|
||||
{
|
||||
return FALSE;
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -284,7 +297,7 @@ void LLFloaterMyScripts::onClickRefresh(void* userdata)
|
|||
btn->setEnabled(false);
|
||||
}
|
||||
instance->clearList();
|
||||
instance->requestAttachmentDetails();
|
||||
instance->mAttachmentDetailsRequested = instance->requestAttachmentDetails();
|
||||
}
|
||||
else
|
||||
{
|
||||
|
|
|
|||
|
|
@ -36,15 +36,17 @@ public:
|
|||
LLFloaterMyScripts(const LLSD& seed);
|
||||
|
||||
BOOL postBuild();
|
||||
/*virtual*/ void onOpen(const LLSD& key);
|
||||
void setAttachmentDetails(LLSD content);
|
||||
void setAttachmentSummary(LLSD content);
|
||||
BOOL requestAttachmentDetails();
|
||||
bool requestAttachmentDetails();
|
||||
void clearList();
|
||||
|
||||
private:
|
||||
void getAttachmentLimitsCoro(std::string url);
|
||||
|
||||
bool mGotAttachmentMemoryUsed;
|
||||
bool mAttachmentDetailsRequested;
|
||||
S32 mAttachmentMemoryMax;
|
||||
S32 mAttachmentMemoryUsed;
|
||||
|
||||
|
|
|
|||
|
|
@ -38,7 +38,7 @@
|
|||
#include "llcallbacklist.h"
|
||||
#include "llcheckboxctrl.h"
|
||||
#include "llfontgl.h"
|
||||
#include "llimagebmp.h"
|
||||
#include "llimagepng.h"
|
||||
#include "llimagej2c.h"
|
||||
#include "llinventory.h"
|
||||
#include "llnotificationsutil.h"
|
||||
|
|
@ -89,7 +89,7 @@
|
|||
#include "llcorehttputil.h"
|
||||
#include "llviewerassetupload.h"
|
||||
|
||||
const std::string SCREEN_PREV_FILENAME = "screen_report_last.bmp";
|
||||
const std::string SCREEN_PREV_FILENAME = "screen_report_last.png";
|
||||
|
||||
//=========================================================================
|
||||
//-----------------------------------------------------------------------------
|
||||
|
|
@ -886,10 +886,10 @@ void LLFloaterReporter::takeScreenshot(bool use_prev_screenshot)
|
|||
if(!use_prev_screenshot)
|
||||
{
|
||||
std::string screenshot_filename(gDirUtilp->getLindenUserDir() + gDirUtilp->getDirDelimiter() + SCREEN_PREV_FILENAME);
|
||||
LLPointer<LLImageBMP> bmp_image = new LLImageBMP;
|
||||
if(bmp_image->encode(mImageRaw, 0.0f))
|
||||
LLPointer<LLImagePNG> png_image = new LLImagePNG;
|
||||
if(png_image->encode(mImageRaw, 0.0f))
|
||||
{
|
||||
bmp_image->save(screenshot_filename);
|
||||
png_image->save(screenshot_filename);
|
||||
}
|
||||
}
|
||||
else
|
||||
|
|
@ -969,10 +969,10 @@ void LLFloaterReporter::takeNewSnapshot(bool refresh)
|
|||
{
|
||||
std::string screenshot_filename(gDirUtilp->getLindenUserDir() + gDirUtilp->getDirDelimiter() + SCREEN_PREV_FILENAME);
|
||||
mPrevImageRaw = new LLImageRaw;
|
||||
LLPointer<LLImageBMP> start_image_bmp = new LLImageBMP;
|
||||
if(start_image_bmp->load(screenshot_filename))
|
||||
LLPointer<LLImagePNG> start_image_png = new LLImagePNG;
|
||||
if(start_image_png->load(screenshot_filename))
|
||||
{
|
||||
if (start_image_bmp->decode(mPrevImageRaw, 0.0f))
|
||||
if (start_image_png->decode(mPrevImageRaw, 0.0f))
|
||||
{
|
||||
LLNotificationsUtil::add("LoadPreviousReportScreenshot", LLSD(), LLSD(), boost::bind(&LLFloaterReporter::onLoadScreenshotDialog,this, _1, _2));
|
||||
return;
|
||||
|
|
|
|||
|
|
@ -136,6 +136,7 @@ void LLFloaterSearch::onOpen(const LLSD& key)
|
|||
|
||||
// </FS:AW opensim search support>
|
||||
LLFloaterWebContent::onOpen(p);
|
||||
mWebBrowser->setFocus(TRUE);
|
||||
search(p.search);
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -1083,6 +1083,18 @@ void LLFloaterTools::onOpen(const LLSD& key)
|
|||
{
|
||||
mTab->selectTabByName(panel);
|
||||
}
|
||||
|
||||
LLTool* tool = LLToolMgr::getInstance()->getCurrentTool();
|
||||
if (tool == LLToolCompInspect::getInstance()
|
||||
|| tool == LLToolDragAndDrop::getInstance())
|
||||
{
|
||||
// Something called floater up while it was supressed (during drag n drop, inspect),
|
||||
// so it won't be getting any layout or visibility updates, update once
|
||||
// further updates will come from updateLayout()
|
||||
LLCoordGL select_center_screen;
|
||||
MASK mask = gKeyboard->currentMask(TRUE);
|
||||
updatePopup(select_center_screen, mask);
|
||||
}
|
||||
|
||||
//gMenuBarView->setItemVisible("BuildTools", TRUE);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -129,6 +129,7 @@ bool move_task_inventory_callback(const LLSD& notification, const LLSD& response
|
|||
bool confirm_attachment_rez(const LLSD& notification, const LLSD& response);
|
||||
void teleport_via_landmark(const LLUUID& asset_id);
|
||||
static BOOL can_move_to_outfit(LLInventoryItem* inv_item, BOOL move_is_into_current_outfit);
|
||||
static bool can_move_to_my_outfits(LLInventoryModel* model, LLInventoryCategory* inv_cat, U32 wear_limit);
|
||||
static BOOL can_move_to_landmarks(LLInventoryItem* inv_item);
|
||||
// <FS:CR> Function left unused from FIRE-7219
|
||||
//static bool check_category(LLInventoryModel* model,
|
||||
|
|
@ -2522,7 +2523,7 @@ public:
|
|||
// Can be destroyed (or moved to trash)
|
||||
BOOL LLFolderBridge::isItemRemovable() const
|
||||
{
|
||||
if (!get_is_category_removable(getInventoryModel(), mUUID))
|
||||
if (!get_is_category_removable(getInventoryModel(), mUUID) || isMarketplaceListingsFolder())
|
||||
{
|
||||
return FALSE;
|
||||
}
|
||||
|
|
@ -2538,11 +2539,6 @@ BOOL LLFolderBridge::isItemRemovable() const
|
|||
return FALSE;
|
||||
}
|
||||
}
|
||||
|
||||
if (isMarketplaceListingsFolder() && LLMarketplaceData::instance().getActivationState(mUUID))
|
||||
{
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
|
@ -2777,9 +2773,28 @@ BOOL LLFolderBridge::dragCategoryIntoFolder(LLInventoryCategory* inv_cat,
|
|||
is_movable = FALSE;
|
||||
// tooltip?
|
||||
}
|
||||
|
||||
U32 max_items_to_wear = gSavedSettings.getU32("WearFolderLimit");
|
||||
if (is_movable && move_is_into_outfit)
|
||||
{
|
||||
if((mUUID == my_outifts_id) || (getCategory() && getCategory()->getPreferredType() == LLFolderType::FT_NONE))
|
||||
if (mUUID == my_outifts_id)
|
||||
{
|
||||
if (source != LLToolDragAndDrop::SOURCE_AGENT || move_is_from_marketplacelistings)
|
||||
{
|
||||
tooltip_msg = LLTrans::getString("TooltipOutfitNotInInventory");
|
||||
is_movable = false;
|
||||
}
|
||||
else if (can_move_to_my_outfits(model, inv_cat, max_items_to_wear))
|
||||
{
|
||||
is_movable = true;
|
||||
}
|
||||
else
|
||||
{
|
||||
tooltip_msg = LLTrans::getString("TooltipCantCreateOutfit");
|
||||
is_movable = false;
|
||||
}
|
||||
}
|
||||
else if(getCategory() && getCategory()->getPreferredType() == LLFolderType::FT_NONE)
|
||||
{
|
||||
is_movable = ((inv_cat->getPreferredType() == LLFolderType::FT_NONE) || (inv_cat->getPreferredType() == LLFolderType::FT_OUTFIT));
|
||||
}
|
||||
|
|
@ -2824,7 +2839,6 @@ BOOL LLFolderBridge::dragCategoryIntoFolder(LLInventoryCategory* inv_cat,
|
|||
}
|
||||
}
|
||||
}
|
||||
U32 max_items_to_wear = gSavedSettings.getU32("WearFolderLimit");
|
||||
if (is_movable
|
||||
&& move_is_into_current_outfit
|
||||
&& descendent_items.size() > max_items_to_wear)
|
||||
|
|
@ -2990,8 +3004,14 @@ BOOL LLFolderBridge::dragCategoryIntoFolder(LLInventoryCategory* inv_cat,
|
|||
}
|
||||
}
|
||||
|
||||
if (mUUID == my_outifts_id)
|
||||
{
|
||||
// Category can contains objects,
|
||||
// create a new folder and populate it with links to original objects
|
||||
dropToMyOutfits(inv_cat);
|
||||
}
|
||||
// if target is current outfit folder we use link
|
||||
if (move_is_into_current_outfit &&
|
||||
else if (move_is_into_current_outfit &&
|
||||
(inv_cat->getPreferredType() == LLFolderType::FT_NONE ||
|
||||
inv_cat->getPreferredType() == LLFolderType::FT_OUTFIT))
|
||||
{
|
||||
|
|
@ -4044,12 +4064,40 @@ void LLFolderBridge::perform_pasteFromClipboard()
|
|||
return;
|
||||
}
|
||||
}
|
||||
if (move_is_into_current_outfit || move_is_into_outfit)
|
||||
if (move_is_into_outfit)
|
||||
{
|
||||
if (!move_is_into_my_outfits && item && can_move_to_outfit(item, move_is_into_current_outfit))
|
||||
{
|
||||
dropToOutfit(item, move_is_into_current_outfit);
|
||||
}
|
||||
else if (move_is_into_my_outfits && LLAssetType::AT_CATEGORY == obj->getType())
|
||||
{
|
||||
LLInventoryCategory* cat = model->getCategory(item_id);
|
||||
U32 max_items_to_wear = gSavedSettings.getU32("WearFolderLimit");
|
||||
if (cat && can_move_to_my_outfits(model, cat, max_items_to_wear))
|
||||
{
|
||||
dropToMyOutfits(cat);
|
||||
}
|
||||
else
|
||||
{
|
||||
LLNotificationsUtil::add("MyOutfitsPasteFailed");
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
LLNotificationsUtil::add("MyOutfitsPasteFailed");
|
||||
}
|
||||
}
|
||||
else if (move_is_into_current_outfit)
|
||||
{
|
||||
if (item && can_move_to_outfit(item, move_is_into_current_outfit))
|
||||
{
|
||||
dropToOutfit(item, move_is_into_current_outfit);
|
||||
}
|
||||
else
|
||||
{
|
||||
LLNotificationsUtil::add("MyOutfitsPasteFailed");
|
||||
}
|
||||
}
|
||||
else if (move_is_into_favorites)
|
||||
{
|
||||
|
|
@ -5085,6 +5133,46 @@ static BOOL can_move_to_outfit(LLInventoryItem* inv_item, BOOL move_is_into_curr
|
|||
return TRUE;
|
||||
}
|
||||
|
||||
// Returns true if folder's content can be moved to Current Outfit or any outfit folder.
|
||||
static bool can_move_to_my_outfits(LLInventoryModel* model, LLInventoryCategory* inv_cat, U32 wear_limit)
|
||||
{
|
||||
LLInventoryModel::cat_array_t *cats;
|
||||
LLInventoryModel::item_array_t *items;
|
||||
model->getDirectDescendentsOf(inv_cat->getUUID(), cats, items);
|
||||
|
||||
if (items->size() > wear_limit)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
if (items->size() == 0)
|
||||
{
|
||||
// Nothing to move(create)
|
||||
return false;
|
||||
}
|
||||
|
||||
if (cats->size() > 0)
|
||||
{
|
||||
// We do not allow subfolders in outfits of "My Outfits" yet
|
||||
return false;
|
||||
}
|
||||
|
||||
LLInventoryModel::item_array_t::iterator iter = items->begin();
|
||||
LLInventoryModel::item_array_t::iterator end = items->end();
|
||||
|
||||
while (iter != end)
|
||||
{
|
||||
LLViewerInventoryItem *item = *iter;
|
||||
if (!can_move_to_outfit(item, false))
|
||||
{
|
||||
return false;
|
||||
}
|
||||
iter++;
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
// Returns TRUE if item is a landmark or a link to a landmark
|
||||
// and can be moved to Favorites or Landmarks folder.
|
||||
static BOOL can_move_to_landmarks(LLInventoryItem* inv_item)
|
||||
|
|
@ -5153,6 +5241,56 @@ void LLFolderBridge::dropToOutfit(LLInventoryItem* inv_item, BOOL move_is_into_c
|
|||
}
|
||||
}
|
||||
|
||||
void LLFolderBridge::dropToMyOutfits(LLInventoryCategory* inv_cat)
|
||||
{
|
||||
// make a folder in the My Outfits directory.
|
||||
const LLUUID dest_id = getInventoryModel()->findCategoryUUIDForType(LLFolderType::FT_MY_OUTFITS);
|
||||
|
||||
// Note: creation will take time, so passing folder id to callback is slightly unreliable,
|
||||
// but so is collecting and passing descendants' ids
|
||||
inventory_func_type func = boost::bind(&LLFolderBridge::outfitFolderCreatedCallback, this, inv_cat->getUUID(), _1);
|
||||
gInventory.createNewCategory(dest_id,
|
||||
LLFolderType::FT_OUTFIT,
|
||||
inv_cat->getName(),
|
||||
func);
|
||||
}
|
||||
|
||||
void LLFolderBridge::outfitFolderCreatedCallback(LLUUID cat_source_id, LLUUID cat_dest_id)
|
||||
{
|
||||
LLInventoryModel::cat_array_t* categories;
|
||||
LLInventoryModel::item_array_t* items;
|
||||
getInventoryModel()->getDirectDescendentsOf(cat_source_id, categories, items);
|
||||
|
||||
LLInventoryObject::const_object_list_t link_array;
|
||||
|
||||
|
||||
LLInventoryModel::item_array_t::iterator iter = items->begin();
|
||||
LLInventoryModel::item_array_t::iterator end = items->end();
|
||||
while (iter!=end)
|
||||
{
|
||||
const LLViewerInventoryItem* item = (*iter);
|
||||
// By this point everything is supposed to be filtered,
|
||||
// but there was a delay to create folder so something could have changed
|
||||
LLInventoryType::EType inv_type = item->getInventoryType();
|
||||
if ((inv_type == LLInventoryType::IT_WEARABLE) ||
|
||||
(inv_type == LLInventoryType::IT_GESTURE) ||
|
||||
(inv_type == LLInventoryType::IT_ATTACHMENT) ||
|
||||
(inv_type == LLInventoryType::IT_OBJECT) ||
|
||||
(inv_type == LLInventoryType::IT_SNAPSHOT) ||
|
||||
(inv_type == LLInventoryType::IT_TEXTURE))
|
||||
{
|
||||
link_array.push_back(LLConstPointer<LLInventoryObject>(item));
|
||||
}
|
||||
iter++;
|
||||
}
|
||||
|
||||
if (!link_array.empty())
|
||||
{
|
||||
LLPointer<LLInventoryCallback> cb = NULL;
|
||||
link_inventory_array(cat_dest_id, link_array, cb);
|
||||
}
|
||||
}
|
||||
|
||||
// Callback for drop item if DAMA required...
|
||||
void LLFolderBridge::callback_dropItemIntoFolder(const LLSD& notification, const LLSD& response, LLInventoryItem* inv_item)
|
||||
{
|
||||
|
|
|
|||
|
|
@ -383,6 +383,7 @@ protected:
|
|||
|
||||
void dropToFavorites(LLInventoryItem* inv_item);
|
||||
void dropToOutfit(LLInventoryItem* inv_item, BOOL move_is_into_current_outfit);
|
||||
void dropToMyOutfits(LLInventoryCategory* inv_cat);
|
||||
|
||||
//--------------------------------------------------------------------
|
||||
// Messy hacks for handling folder options
|
||||
|
|
@ -392,6 +393,7 @@ public:
|
|||
static void staticFolderOptionsMenu();
|
||||
|
||||
protected:
|
||||
void outfitFolderCreatedCallback(LLUUID cat_source_id, LLUUID cat_dest_id);
|
||||
void callback_pasteFromClipboard(const LLSD& notification, const LLSD& response);
|
||||
void perform_pasteFromClipboard();
|
||||
void gatherMessage(std::string& message, S32 depth, LLError::ELevel log_level);
|
||||
|
|
|
|||
|
|
@ -2378,6 +2378,7 @@ void LLMeshUploadThread::wholeModelToLLSD(LLSD& dest, bool include_textures)
|
|||
instance_entry["material"] = LL_MCODE_WOOD;
|
||||
instance_entry["physics_shape_type"] = data.mModel[LLModel::LOD_PHYSICS].notNull() ? (U8)(LLViewerObject::PHYSICS_SHAPE_PRIM) : (U8)(LLViewerObject::PHYSICS_SHAPE_CONVEX_HULL);
|
||||
instance_entry["mesh"] = mesh_index[data.mBaseModel];
|
||||
instance_entry["mesh_name"] = instance.mLabel;
|
||||
|
||||
instance_entry["face_list"] = LLSD::emptyArray();
|
||||
|
||||
|
|
|
|||
|
|
@ -1546,7 +1546,7 @@ void LLPanelObject::activateMeshFields(LLViewerObject * objectp)
|
|||
childSetVisible("ObjectLODbehaviourLabel", true);
|
||||
|
||||
// Setup the LL defaults
|
||||
factor = 1.125f; // LL default for most people http://wiki.phoenixviewer.com/support:whirly_fizzle#lod_comparison
|
||||
factor = 1.125f; // LL default for most people http://wiki.firestormviewer.org/support:whirly_fizzle#lod_comparison
|
||||
args["FACTOR"] = llformat("%.3f", factor);
|
||||
tb = getChild<LLTextBox>("LOD_swap_ll_default");
|
||||
tb->setToolTip(getString("ll_lod_tooltip_msg",args));
|
||||
|
|
|
|||
|
|
@ -56,7 +56,7 @@ public:
|
|||
// llview
|
||||
void draw() override;
|
||||
// [SL:KB] - Patch: UI-FloaterSearchReplace | Checked: 2010-11-05 (Catznip-2.3.0a) | Added: Catznip-2.3.0a
|
||||
virtual bool hasAccelerators() const;
|
||||
virtual bool hasAccelerators() const override;
|
||||
// [/SL:KB]
|
||||
virtual BOOL handleKeyHere(KEY key, MASK mask) override;
|
||||
virtual void setEnabled( BOOL enabled ) override;
|
||||
|
|
|
|||
|
|
@ -119,7 +119,7 @@ void LLSky::restoreGL()
|
|||
|
||||
void LLSky::resetVertexBuffers()
|
||||
{
|
||||
if (gSky.mVOSkyp.notNull())
|
||||
if (gSky.mVOSkyp.notNull() && gSky.mVOGroundp.notNull())
|
||||
{
|
||||
gPipeline.resetVertexBuffers(gSky.mVOSkyp->mDrawable);
|
||||
gPipeline.resetVertexBuffers(gSky.mVOGroundp->mDrawable);
|
||||
|
|
|
|||
|
|
@ -119,7 +119,7 @@
|
|||
#include "llhudeffecttrail.h"
|
||||
#include "llhudmanager.h"
|
||||
#include "llbufferstream.h" // <FS:PP> For SL Grid Status
|
||||
#include "llimagebmp.h"
|
||||
#include "llimage.h"
|
||||
#include "llinventorybridge.h"
|
||||
#include "llinventorymodel.h"
|
||||
#include "llinventorymodelbackgroundfetch.h"
|
||||
|
|
@ -170,6 +170,7 @@
|
|||
#include "llviewerparcelmgr.h"
|
||||
#include "llviewerregion.h"
|
||||
#include "llviewerstats.h"
|
||||
#include "llviewerstatsrecorder.h"
|
||||
#include "llviewerthrottle.h"
|
||||
#include "llviewerwindow.h"
|
||||
#include "llvoavatar.h"
|
||||
|
|
@ -255,8 +256,8 @@
|
|||
bool gAgentMovementCompleted = false;
|
||||
S32 gMaxAgentGroups;
|
||||
|
||||
std::string SCREEN_HOME_FILENAME = "screen_home.bmp";
|
||||
std::string SCREEN_LAST_FILENAME = "screen_last.bmp";
|
||||
const std::string SCREEN_HOME_FILENAME = "screen_home%s.png";
|
||||
const std::string SCREEN_LAST_FILENAME = "screen_last%s.png";
|
||||
|
||||
LLPointer<LLViewerTexture> gStartTexture;
|
||||
|
||||
|
|
@ -605,6 +606,14 @@ bool idle_startup()
|
|||
// to work.
|
||||
gIdleCallbacks.callFunctions();
|
||||
gViewerWindow->updateUI();
|
||||
|
||||
// There is a crash on updateClass, this is an attempt to get more information
|
||||
if (LLMortician::graveyardCount())
|
||||
{
|
||||
std::stringstream log_stream;
|
||||
LLMortician::logClass(log_stream);
|
||||
LL_INFOS() << log_stream.str() << LL_ENDL;
|
||||
}
|
||||
LLMortician::updateClass();
|
||||
|
||||
const std::string delims (" ");
|
||||
|
|
@ -1889,6 +1898,7 @@ bool idle_startup()
|
|||
//
|
||||
// Initialize classes w/graphics stuff.
|
||||
//
|
||||
LLViewerStatsRecorder::instance(); // Since textures work in threads
|
||||
gTextureList.doPrefetchImages();
|
||||
display_startup();
|
||||
|
||||
|
|
@ -3479,6 +3489,37 @@ bool callback_choose_gender(const LLSD& notification, const LLSD& response)
|
|||
return false;
|
||||
}
|
||||
|
||||
std::string get_screen_filename(const std::string& pattern)
|
||||
{
|
||||
// <FS:Ansariel> OpenSim support
|
||||
//if (LLGridManager::getInstance()->isInProductionGrid())
|
||||
if (LLGridManager::getInstance()->isInSLMain())
|
||||
// </FS:Ansariel>
|
||||
{
|
||||
return llformat(pattern.c_str(), "");
|
||||
}
|
||||
else
|
||||
{
|
||||
const std::string& grid_id_str = LLGridManager::getInstance()->getGridId();
|
||||
const std::string& grid_id_lower = utf8str_tolower(grid_id_str);
|
||||
std::string grid = "." + grid_id_lower;
|
||||
return llformat(pattern.c_str(), grid.c_str());
|
||||
}
|
||||
}
|
||||
|
||||
//static
|
||||
std::string LLStartUp::getScreenLastFilename()
|
||||
{
|
||||
return get_screen_filename(SCREEN_LAST_FILENAME);
|
||||
}
|
||||
|
||||
//static
|
||||
std::string LLStartUp::getScreenHomeFilename()
|
||||
{
|
||||
return get_screen_filename(SCREEN_HOME_FILENAME);
|
||||
}
|
||||
|
||||
//static
|
||||
void LLStartUp::loadInitialOutfit( const std::string& outfit_folder_name,
|
||||
const std::string& gender_name )
|
||||
{
|
||||
|
|
@ -3577,19 +3618,35 @@ void init_start_screen(S32 location_id)
|
|||
|
||||
LL_DEBUGS("AppInit") << "Loading startup bitmap..." << LL_ENDL;
|
||||
|
||||
U8 image_codec = IMG_CODEC_PNG;
|
||||
std::string temp_str = gDirUtilp->getLindenUserDir() + gDirUtilp->getDirDelimiter();
|
||||
|
||||
if ((S32)START_LOCATION_ID_LAST == location_id)
|
||||
{
|
||||
temp_str += SCREEN_LAST_FILENAME;
|
||||
temp_str += LLStartUp::getScreenLastFilename();
|
||||
}
|
||||
else
|
||||
{
|
||||
temp_str += SCREEN_HOME_FILENAME;
|
||||
std::string path = temp_str + LLStartUp::getScreenHomeFilename();
|
||||
|
||||
// <FS:Ansariel> OpenSim support
|
||||
//if (!gDirUtilp->fileExists(path) && LLGridManager::getInstance()->isInProductionGrid())
|
||||
if (!gDirUtilp->fileExists(path) && LLGridManager::getInstance()->isInSLMain())
|
||||
// </FS:Ansariel>
|
||||
{
|
||||
// Fallback to old file, can be removed later
|
||||
// Home image only sets when user changes home, so it will take time for users to switch to pngs
|
||||
temp_str += "screen_home.bmp";
|
||||
image_codec = IMG_CODEC_BMP;
|
||||
}
|
||||
else
|
||||
{
|
||||
temp_str = path;
|
||||
}
|
||||
}
|
||||
|
||||
LLPointer<LLImageBMP> start_image_bmp = new LLImageBMP;
|
||||
|
||||
LLPointer<LLImageFormatted> start_image_frmted = LLImageFormatted::createFromType(image_codec);
|
||||
|
||||
// Turn off start screen to get around the occasional readback
|
||||
// driver bug
|
||||
if(!gSavedSettings.getBOOL("UseStartScreen"))
|
||||
|
|
@ -3597,18 +3654,18 @@ void init_start_screen(S32 location_id)
|
|||
LL_INFOS("AppInit") << "Bitmap load disabled" << LL_ENDL;
|
||||
return;
|
||||
}
|
||||
else if(!start_image_bmp->load(temp_str) )
|
||||
else if(!start_image_frmted->load(temp_str) )
|
||||
{
|
||||
LL_WARNS("AppInit") << "Bitmap load failed" << LL_ENDL;
|
||||
gStartTexture = NULL;
|
||||
}
|
||||
else
|
||||
{
|
||||
gStartImageWidth = start_image_bmp->getWidth();
|
||||
gStartImageHeight = start_image_bmp->getHeight();
|
||||
gStartImageWidth = start_image_frmted->getWidth();
|
||||
gStartImageHeight = start_image_frmted->getHeight();
|
||||
|
||||
LLPointer<LLImageRaw> raw = new LLImageRaw;
|
||||
if (!start_image_bmp->decode(raw, 0.0f))
|
||||
if (!start_image_frmted->decode(raw, 0.0f))
|
||||
{
|
||||
LL_WARNS("AppInit") << "Bitmap decode failed" << LL_ENDL;
|
||||
gStartTexture = NULL;
|
||||
|
|
|
|||
|
|
@ -41,10 +41,6 @@ bool idle_startup();
|
|||
void release_start_screen();
|
||||
bool login_alert_done(const LLSD& notification, const LLSD& response);
|
||||
|
||||
// constants, variables, & enumerations
|
||||
extern std::string SCREEN_HOME_FILENAME;
|
||||
extern std::string SCREEN_LAST_FILENAME;
|
||||
|
||||
// start location constants
|
||||
enum EStartLocation
|
||||
{
|
||||
|
|
@ -105,6 +101,8 @@ public:
|
|||
static void setStartupState( EStartupState state );
|
||||
static EStartupState getStartupState() { return gStartupState; };
|
||||
static std::string getStartupStateString() { return startupStateToString(gStartupState); };
|
||||
static std::string getScreenLastFilename(); // screenshot taken on exit
|
||||
static std::string getScreenHomeFilename(); // screenshot taken on setting Home
|
||||
|
||||
static void multimediaInit();
|
||||
// Initialize LLViewerMedia multimedia engine.
|
||||
|
|
|
|||
|
|
@ -204,7 +204,7 @@ LLVector2 LLSurfacePatch::getTexCoords(const U32 x, const U32 y) const
|
|||
void LLSurfacePatch::eval(const U32 x, const U32 y, const U32 stride, LLVector3 *vertex, LLVector3 *normal,
|
||||
LLVector2 *tex0, LLVector2 *tex1)
|
||||
{
|
||||
if (!mSurfacep || !mSurfacep->getRegion() || !mSurfacep->getGridsPerEdge())
|
||||
if (!mSurfacep || !mSurfacep->getRegion() || !mSurfacep->getGridsPerEdge() || !mVObjp)
|
||||
{
|
||||
return; // failsafe
|
||||
}
|
||||
|
|
|
|||
|
|
@ -2430,7 +2430,11 @@ S32 LLTextureFetchWorker::callbackHttpGet(LLCore::HttpResponse * response,
|
|||
mLoaded = TRUE;
|
||||
setPriority(LLWorkerThread::PRIORITY_HIGH | mWorkPriority);
|
||||
|
||||
LLViewerStatsRecorder::instance().log(0.2f);
|
||||
if (LLViewerStatsRecorder::instanceExists())
|
||||
{
|
||||
// Do not create this instance inside thread
|
||||
LLViewerStatsRecorder::instance().log(0.2f);
|
||||
}
|
||||
return data_size ;
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -143,6 +143,12 @@ BOOL LLToolPie::handleMouseDown(S32 x, S32 y, MASK mask)
|
|||
// !transparent_object check will be covered by transparent_object == visible_object.
|
||||
mPick = transparent_pick;
|
||||
}
|
||||
// <FS:ND> FIRE-29031; Handle transparent being nullptr (due to RLVa?). visible_object cannot be invalid here or the if above had been entered
|
||||
else if( !transp_object)
|
||||
{
|
||||
mPick = visible_pick;
|
||||
}
|
||||
// </FS:ND>
|
||||
else
|
||||
{
|
||||
// Select between two non-null picks
|
||||
|
|
|
|||
|
|
@ -42,7 +42,7 @@
|
|||
#include "llfeaturemanager.h"
|
||||
//#include "llfirstuse.h"
|
||||
#include "llhudmanager.h"
|
||||
#include "llimagebmp.h"
|
||||
#include "llimagepng.h"
|
||||
#include "llmemory.h"
|
||||
#include "llselectmgr.h"
|
||||
#include "llsky.h"
|
||||
|
|
@ -1740,17 +1740,17 @@ void render_disconnected_background()
|
|||
LL_INFOS() << "Loading last bitmap..." << LL_ENDL;
|
||||
|
||||
std::string temp_str;
|
||||
temp_str = gDirUtilp->getLindenUserDir() + gDirUtilp->getDirDelimiter() + SCREEN_LAST_FILENAME;
|
||||
temp_str = gDirUtilp->getLindenUserDir() + gDirUtilp->getDirDelimiter() + LLStartUp::getScreenLastFilename();
|
||||
|
||||
LLPointer<LLImageBMP> image_bmp = new LLImageBMP;
|
||||
if( !image_bmp->load(temp_str) )
|
||||
LLPointer<LLImagePNG> image_png = new LLImagePNG;
|
||||
if( !image_png->load(temp_str) )
|
||||
{
|
||||
//LL_INFOS() << "Bitmap load failed" << LL_ENDL;
|
||||
return;
|
||||
}
|
||||
|
||||
LLPointer<LLImageRaw> raw = new LLImageRaw;
|
||||
if (!image_bmp->decode(raw, 0.0f))
|
||||
if (!image_png->decode(raw, 0.0f))
|
||||
{
|
||||
LL_INFOS() << "Bitmap decode failed" << LL_ENDL;
|
||||
gDisconnectedImagep = NULL;
|
||||
|
|
@ -1758,7 +1758,7 @@ void render_disconnected_background()
|
|||
}
|
||||
|
||||
U8 *rawp = raw->getData();
|
||||
S32 npixels = (S32)image_bmp->getWidth()*(S32)image_bmp->getHeight();
|
||||
S32 npixels = (S32)image_png->getWidth()*(S32)image_png->getHeight();
|
||||
for (S32 i = 0; i < npixels; i++)
|
||||
{
|
||||
S32 sum = 0;
|
||||
|
|
|
|||
|
|
@ -181,9 +181,7 @@
|
|||
#include "fsfloateravatarrendersettings.h"
|
||||
#include "fsfloatercontacts.h"
|
||||
#include "fsfloatercontactsetconfiguration.h"
|
||||
#ifdef HAS_DISCORD
|
||||
#include "fsfloaterdiscord.h"
|
||||
#endif
|
||||
#include "fsfloaterexport.h"
|
||||
#include "fsfloaterblocklist.h"
|
||||
#include "fsfloatergroup.h"
|
||||
|
|
@ -468,9 +466,7 @@ void LLViewerFloaterReg::registerFloaters()
|
|||
LLFloaterReg::add("fs_blocklist", "floater_fs_blocklist.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<FSFloaterBlocklist>);
|
||||
LLFloaterReg::add("fs_add_contact", "floater_fs_contact_add.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<FSFloaterAddToContactSet>);
|
||||
LLFloaterReg::add("fs_contact_set_config", "floater_fs_contact_set_configuration.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<FSFloaterContactSetConfiguration>);
|
||||
#ifdef HAS_DISCORD
|
||||
LLFloaterReg::add("fs_discord", "floater_fs_discord.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<FSFloaterDiscord>);
|
||||
#endif
|
||||
LLFloaterReg::add("fs_group", "floater_fs_group.xml",&LLFloaterReg::build<FSFloaterGroup>);
|
||||
LLFloaterReg::add("fs_group_titles", "floater_fs_group_titles.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<FSFloaterGroupTitles>);
|
||||
LLFloaterReg::add("fs_export", "floater_fs_export.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<FSFloaterObjectExport>);
|
||||
|
|
|
|||
|
|
@ -6322,8 +6322,8 @@ bool attempt_standard_notification(LLMessageSystem* msgsystem)
|
|||
// save the home location image to disk
|
||||
std::string snap_filename = gDirUtilp->getLindenUserDir();
|
||||
snap_filename += gDirUtilp->getDirDelimiter();
|
||||
snap_filename += SCREEN_HOME_FILENAME;
|
||||
gViewerWindow->saveSnapshot(snap_filename, gViewerWindow->getWindowWidthRaw(), gViewerWindow->getWindowHeightRaw(), FALSE, FALSE);
|
||||
snap_filename += LLStartUp::getScreenHomeFilename();
|
||||
gViewerWindow->saveSnapshot(snap_filename, gViewerWindow->getWindowWidthRaw(), gViewerWindow->getWindowHeightRaw(), FALSE, FALSE, LLSnapshotModel::SNAPSHOT_TYPE_COLOR, LLSnapshotModel::SNAPSHOT_FORMAT_PNG);
|
||||
}
|
||||
|
||||
if (notificationID == "RegionRestartMinutes" ||
|
||||
|
|
@ -6384,14 +6384,14 @@ bool attempt_standard_notification(LLMessageSystem* msgsystem)
|
|||
// save the home location image to disk
|
||||
std::string snap_filename = gDirUtilp->getLindenUserDir();
|
||||
snap_filename += gDirUtilp->getDirDelimiter();
|
||||
snap_filename += SCREEN_HOME_FILENAME;
|
||||
if (gViewerWindow->saveSnapshot(snap_filename, gViewerWindow->getWindowWidthRaw(), gViewerWindow->getWindowHeightRaw(), FALSE, FALSE))
|
||||
snap_filename += LLStartUp::getScreenHomeFilename();
|
||||
if (gViewerWindow->saveSnapshot(snap_filename, gViewerWindow->getWindowWidthRaw(), gViewerWindow->getWindowHeightRaw(), FALSE, FALSE, LLSnapshotModel::SNAPSHOT_TYPE_COLOR, LLSnapshotModel::SNAPSHOT_FORMAT_PNG))
|
||||
{
|
||||
LL_INFOS() << SCREEN_HOME_FILENAME << " saved successfully." << LL_ENDL;
|
||||
LL_INFOS() << LLStartUp::getScreenHomeFilename() << " saved successfully." << LL_ENDL;
|
||||
}
|
||||
else
|
||||
{
|
||||
LL_WARNS() << SCREEN_HOME_FILENAME << " could not be saved." << LL_ENDL;
|
||||
LL_WARNS() << LLStartUp::getScreenHomeFilename() << " could not be saved." << LL_ENDL;
|
||||
}
|
||||
}
|
||||
// </FS:CR>
|
||||
|
|
@ -6441,8 +6441,8 @@ static void process_special_alert_messages(const std::string & message)
|
|||
// save the home location image to disk
|
||||
std::string snap_filename = gDirUtilp->getLindenUserDir();
|
||||
snap_filename += gDirUtilp->getDirDelimiter();
|
||||
snap_filename += SCREEN_HOME_FILENAME;
|
||||
gViewerWindow->saveSnapshot(snap_filename, gViewerWindow->getWindowWidthRaw(), gViewerWindow->getWindowHeightRaw(), FALSE, FALSE);
|
||||
snap_filename += LLStartUp::getScreenHomeFilename();
|
||||
gViewerWindow->saveSnapshot(snap_filename, gViewerWindow->getWindowWidthRaw(), gViewerWindow->getWindowHeightRaw(), FALSE, FALSE, LLSnapshotModel::SNAPSHOT_TYPE_COLOR, LLSnapshotModel::SNAPSHOT_FORMAT_PNG);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -1500,7 +1500,11 @@ BOOL LLViewerObjectList::killObject(LLViewerObject *objectp)
|
|||
|
||||
if (objectp)
|
||||
{
|
||||
objectp->markDead(); // does the right thing if object already dead
|
||||
// We are going to cleanup a lot of smart pointers to this object, they might be last,
|
||||
// and object being NULLed while inside it's own function won't be pretty
|
||||
// so create a pointer to make sure object will stay alive untill markDead() finishes
|
||||
LLPointer<LLViewerObject> sp(objectp);
|
||||
sp->markDead(); // does the right thing if object already dead
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -3864,9 +3864,9 @@ void LLViewerMediaTexture::removeFace(U32 channel, LLFace* facep)
|
|||
}
|
||||
}
|
||||
|
||||
if(te && te->getID().notNull()) //should have a texture
|
||||
if(te && te->getID().notNull()) //should have a texture but none found
|
||||
{
|
||||
LL_ERRS() << "mTextureList texture reference number is corrupted." << LL_ENDL;
|
||||
LL_ERRS() << "mTextureList texture reference number is corrupted. Texture id: " << te->getID() << " List size: " << (U32)mTextureList.size() << LL_ENDL;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -128,7 +128,7 @@
|
|||
#include "llhudmanager.h"
|
||||
#include "llhudobject.h"
|
||||
#include "llhudview.h"
|
||||
#include "llimagebmp.h"
|
||||
#include "llimage.h"
|
||||
#include "llimagej2c.h"
|
||||
#include "llimageworker.h"
|
||||
#include "llkeyboard.h"
|
||||
|
|
@ -5640,32 +5640,46 @@ void LLViewerWindow::movieSize(S32 new_width, S32 new_height)
|
|||
|
||||
}
|
||||
|
||||
BOOL LLViewerWindow::saveSnapshot(const std::string& filepath, S32 image_width, S32 image_height, BOOL show_ui, BOOL do_rebuild, LLSnapshotModel::ESnapshotLayerType type)
|
||||
BOOL LLViewerWindow::saveSnapshot(const std::string& filepath, S32 image_width, S32 image_height, BOOL show_ui, BOOL do_rebuild, LLSnapshotModel::ESnapshotLayerType type, LLSnapshotModel::ESnapshotFormat format)
|
||||
{
|
||||
LL_INFOS() << "Saving snapshot to: " << filepath << LL_ENDL;
|
||||
LL_INFOS() << "Saving snapshot to: " << filepath << LL_ENDL;
|
||||
|
||||
LLPointer<LLImageRaw> raw = new LLImageRaw;
|
||||
BOOL success = rawSnapshot(raw, image_width, image_height, TRUE, FALSE, show_ui, do_rebuild);
|
||||
LLPointer<LLImageRaw> raw = new LLImageRaw;
|
||||
BOOL success = rawSnapshot(raw, image_width, image_height, TRUE, FALSE, show_ui, do_rebuild);
|
||||
|
||||
if (success)
|
||||
{
|
||||
LLPointer<LLImageBMP> bmp_image = new LLImageBMP;
|
||||
success = bmp_image->encode(raw, 0.0f);
|
||||
if( success )
|
||||
{
|
||||
success = bmp_image->save(filepath);
|
||||
}
|
||||
else
|
||||
{
|
||||
LL_WARNS() << "Unable to encode bmp snapshot" << LL_ENDL;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
LL_WARNS() << "Unable to capture raw snapshot" << LL_ENDL;
|
||||
}
|
||||
if (success)
|
||||
{
|
||||
U8 image_codec = IMG_CODEC_BMP;
|
||||
switch (format)
|
||||
{
|
||||
case LLSnapshotModel::SNAPSHOT_FORMAT_PNG:
|
||||
image_codec = IMG_CODEC_PNG;
|
||||
break;
|
||||
case LLSnapshotModel::SNAPSHOT_FORMAT_JPEG:
|
||||
image_codec = IMG_CODEC_JPEG;
|
||||
break;
|
||||
default:
|
||||
image_codec = IMG_CODEC_BMP;
|
||||
break;
|
||||
}
|
||||
|
||||
return success;
|
||||
LLPointer<LLImageFormatted> formated_image = LLImageFormatted::createFromType(image_codec);
|
||||
success = formated_image->encode(raw, 0.0f);
|
||||
if (success)
|
||||
{
|
||||
success = formated_image->save(filepath);
|
||||
}
|
||||
else
|
||||
{
|
||||
LL_WARNS() << "Unable to encode snapshot of format " << format << LL_ENDL;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
LL_WARNS() << "Unable to capture raw snapshot" << LL_ENDL;
|
||||
}
|
||||
|
||||
return success;
|
||||
}
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -348,7 +348,7 @@ public:
|
|||
// snapshot functionality.
|
||||
// perhaps some of this should move to llfloatershapshot? -MG
|
||||
|
||||
BOOL saveSnapshot(const std::string& filename, S32 image_width, S32 image_height, BOOL show_ui = TRUE, BOOL do_rebuild = FALSE, LLSnapshotModel::ESnapshotLayerType type = LLSnapshotModel::SNAPSHOT_TYPE_COLOR);
|
||||
BOOL saveSnapshot(const std::string& filename, S32 image_width, S32 image_height, BOOL show_ui = TRUE, BOOL do_rebuild = FALSE, LLSnapshotModel::ESnapshotLayerType type = LLSnapshotModel::SNAPSHOT_TYPE_COLOR, LLSnapshotModel::ESnapshotFormat format = LLSnapshotModel::SNAPSHOT_FORMAT_BMP);
|
||||
BOOL rawSnapshot(LLImageRaw *raw, S32 image_width, S32 image_height, BOOL keep_window_aspect = TRUE, BOOL is_texture = FALSE,
|
||||
BOOL show_ui = TRUE, BOOL do_rebuild = FALSE, LLSnapshotModel::ESnapshotLayerType type = LLSnapshotModel::SNAPSHOT_TYPE_COLOR, S32 max_size = MAX_SNAPSHOT_IMAGE_SIZE);
|
||||
BOOL thumbnailSnapshot(LLImageRaw *raw, S32 preview_width, S32 preview_height, BOOL show_ui, BOOL do_rebuild, LLSnapshotModel::ESnapshotLayerType type);
|
||||
|
|
|
|||
File diff suppressed because it is too large
Load Diff
|
|
@ -1370,10 +1370,10 @@ void LLWorld::updateWaterObjects()
|
|||
}
|
||||
}
|
||||
|
||||
for (std::list<LLVOWater*>::iterator iter = mHoleWaterObjects.begin();
|
||||
for (std::list<LLPointer<LLVOWater> >::iterator iter = mHoleWaterObjects.begin();
|
||||
iter != mHoleWaterObjects.end(); ++ iter)
|
||||
{
|
||||
LLVOWater* waterp = *iter;
|
||||
LLVOWater* waterp = (*iter).get();
|
||||
gObjectList.killObject(waterp);
|
||||
}
|
||||
mHoleWaterObjects.clear();
|
||||
|
|
|
|||
|
|
@ -312,7 +312,7 @@ private:
|
|||
// Data for "Fake" objects
|
||||
//
|
||||
|
||||
std::list<LLVOWater*> mHoleWaterObjects;
|
||||
std::list<LLPointer<LLVOWater> > mHoleWaterObjects;
|
||||
LLPointer<LLVOWater> mEdgeWaterObjects[8];
|
||||
|
||||
LLPointer<LLViewerTexture> mDefaultWaterTexturep;
|
||||
|
|
|
|||
|
|
@ -344,8 +344,11 @@ void RlvStrings::saveToFile(const std::string& strFilePath)
|
|||
}
|
||||
|
||||
// Checked: 2009-11-11 (RLVa-1.1.0a) | Modified: RLVa-1.1.0a
|
||||
const std::string& RlvStrings::getAnonym(const std::string& strName)
|
||||
std::string RlvStrings::getAnonym(const std::string& strName)
|
||||
{
|
||||
if (!rlv_handler_t::isEnabled())
|
||||
return strName;
|
||||
|
||||
const char* pszName = strName.c_str(); U32 nHash = 0;
|
||||
|
||||
// Test with 11,264 SL names showed a 3.33% - 3.82% occurance for each so we *should* get a very even spread
|
||||
|
|
@ -906,7 +909,7 @@ BOOL rlvEnableSharedWearEnabler(void* pParam)
|
|||
*/
|
||||
|
||||
// Checked: 2010-11-01 (RLVa-1.2.2a) | Added: RLVa-1.2.2a
|
||||
const std::string& rlvGetAnonym(const LLAvatarName& avName)
|
||||
std::string rlvGetAnonym(const LLAvatarName& avName)
|
||||
{
|
||||
return RlvStrings::getAnonym(avName);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -145,8 +145,8 @@ public:
|
|||
static void loadFromFile(const std::string& strFilePath, bool fDefault);
|
||||
static void saveToFile(const std::string& strFilePath);
|
||||
|
||||
static const std::string& getAnonym(const LLAvatarName& avName); // @shownames
|
||||
static const std::string& getAnonym(const std::string& strName); // @shownames
|
||||
static std::string getAnonym(const LLAvatarName& avName); // @shownames
|
||||
static std::string getAnonym(const std::string& strName); // @shownames
|
||||
static const std::string& getString(const std::string& strStringName);
|
||||
static const char* getStringFromReturnCode(ERlvCmdRet eRet);
|
||||
static const std::string& getStringMapPath() { return m_StringMapPath; }
|
||||
|
|
@ -307,7 +307,7 @@ template<typename T> struct RlvPredValuesEqual
|
|||
//
|
||||
|
||||
// Checked: 2010-10-31 (RLVa-1.2.2a) | Added: RLVa-1.2.2a
|
||||
inline const std::string& RlvStrings::getAnonym(const LLAvatarName& avName)
|
||||
inline std::string RlvStrings::getAnonym(const LLAvatarName& avName)
|
||||
{
|
||||
return getAnonym(avName.getLegacyName());
|
||||
}
|
||||
|
|
|
|||
|
|
@ -3,7 +3,7 @@
|
|||
<tab_container name="max_bandwidth_layout">
|
||||
<panel label="Netværk" name="tab-conn">
|
||||
<text name="Maximum bandwidth">
|
||||
Maksimum båndbredde ([http://wiki.phoenixviewer.com/fs_speedtest need a suggestion?]):
|
||||
Maksimum båndbredde ([http://wiki.firestormviewer.org/fs_speedtest need a suggestion?]):
|
||||
</text>
|
||||
<check_box label="Speciel port" name="connection_port_enabled"/>
|
||||
<spinner label="Port nummer:" name="connection_port"/>
|
||||
|
|
@ -14,7 +14,7 @@
|
|||
</panel>
|
||||
<panel label="Placering" name="tab-dir">
|
||||
<text name="cache_size_label_l">
|
||||
Cache størrelse ([http://wiki.phoenixviewer.com/cache need a suggestion?]):
|
||||
Cache størrelse ([http://wiki.firestormviewer.org/cache need a suggestion?]):
|
||||
</text>
|
||||
<text name="Cache location">
|
||||
Cache placering:
|
||||
|
|
|
|||
|
|
@ -28,7 +28,7 @@
|
|||
Restzeit
|
||||
</floater.string>
|
||||
<floater.string name="Always">
|
||||
Permanent
|
||||
Immer
|
||||
</floater.string>
|
||||
<tab_container name="landtab" width="489">
|
||||
<panel label="Allgemein" name="land_general_panel">
|
||||
|
|
@ -353,18 +353,18 @@ Nur große Parzellen können in der Suche aufgeführt werden.
|
|||
<text name="allow_label2">
|
||||
Bauen:
|
||||
</text>
|
||||
<check_box label="Jeder" name="edit objects check" tool_tip="Falls aktiviert, können Einwohner auf Ihrem Land Objekte erstellen und rezzen."/>
|
||||
<check_box label="Gruppe" name="edit group objects check" tool_tip="Falls aktiviert, können Mitglieder der Parzellen-Gruppe auf Ihrem Land Objekte erstellen und rezzen."/>
|
||||
<check_box label="Jeder" name="edit objects check" tool_tip="Wenn aktiviert, können Einwohner auf Ihrem Land Objekte erstellen und rezzen."/>
|
||||
<check_box label="Gruppe" name="edit group objects check" tool_tip="Wenn aktiviert, können Parzellengruppen-Mitglieder auf Ihrem Land Objekte erstellen und rezzen."/>
|
||||
<text name="allow_label3">
|
||||
Objekteintritt:
|
||||
</text>
|
||||
<check_box label="Jeder" name="all object entry check" tool_tip="Falls aktiviert, können Einwohner bestehende Objekte von anderen Parzelen auf diese bewegen."/>
|
||||
<check_box label="Gruppe" name="group object entry check" tool_tip="Falls aktiviert, können Mitglieder der Parzellen-Gruppe bestehende Objekte von anderen Parzelen auf diese bewegen."/>
|
||||
<check_box label="Jeder" name="all object entry check" tool_tip="Wenn aktiviert, können Einwohner bestehende Objekte von anderen Parzellen auf diese Parzelle verschieben."/>
|
||||
<check_box label="Gruppe" name="group object entry check" tool_tip="Wenn aktiviert, können Parzellengruppen-Mitglieder bestehende Objekte von anderen Parzellen auf diese Parzelle verschieben."/>
|
||||
<text name="allow_label4">
|
||||
Skripts ausführen:
|
||||
</text>
|
||||
<check_box label="Jeder" name="check other scripts" tool_tip="Falls aktiviert, können Einwohner auf Ihrem Land Skripte ausführen, Anhänge eingeschlossen."/>
|
||||
<check_box label="Gruppe" name="check group scripts" tool_tip="Falls aktiviert, können Mitglieder der Parzellen-Gruppe auf Ihrem Land Skripte ausführen, Anhänge eingeschlossen."/>
|
||||
<check_box label="Jeder" name="check other scripts" tool_tip="Wenn aktiviert, können Einwohner auf Ihrer Parzelle Skripte inklusive Anhängen ausführen."/>
|
||||
<check_box label="Gruppe" name="check group scripts" tool_tip="Wenn aktiviert, können Parzellengruppen-Mitglieder auf Ihrer Parzelle Skripte inklusive Anhängen ausführen."/>
|
||||
<check_box label="Sicher (kein Schaden)" name="check safe" tool_tip="Falls aktiviert, wird Land auf Option „Sicher“ eingestellt, Kampfschäden sind deaktiviert. Ansonsten sind Kampfschäden aktiviert."/>
|
||||
<check_box label="Kein Stoßen" name="PushRestrictCheck" tool_tip="Verhindert Stoßen durch Skripte. Durch Aktivieren dieser Option verhindern Sie störendes Verhalten auf Ihrem Land."/>
|
||||
<check_box label="Ort in Suche anzeigen (30 L$/Woche)" name="ShowDirectoryCheck" tool_tip="Diese Parzelle in Suchergebnissen anzeigen."/>
|
||||
|
|
|
|||
|
|
@ -18,13 +18,16 @@ Texturen
|
|||
<texture_picker label="Haare" name="hair-baked"/>
|
||||
<texture_picker label="Haare" name="hair_grain"/>
|
||||
<texture_picker label="Alpha: Haare" name="hair_alpha"/>
|
||||
<texture_picker label="Haartätowierung" name="hair_tattoo"/>
|
||||
<texture_picker label="Kopf" name="head-baked"/>
|
||||
<texture_picker label="Make-Up" name="head_bodypaint"/>
|
||||
<texture_picker label="Kopf: Alpha" name="head_alpha"/>
|
||||
<texture_picker label="Kopftätowierung" name="head_tattoo"/>
|
||||
<texture_picker label="Kopf: Uni. Tattoo" name="head_universal_tattoo"/>
|
||||
<texture_picker label="Augen" name="eyes-baked"/>
|
||||
<texture_picker label="Auge" name="eyes_iris"/>
|
||||
<texture_picker label="Alpha: Augen" name="eyes_alpha"/>
|
||||
<texture_picker label="Augen: Uni. Tattoo" name="eyes_alpha"/>
|
||||
<texture_picker label="Oberkörper" name="upper-baked"/>
|
||||
<texture_picker label="Oberkörperfarbe" name="upper_bodypaint"/>
|
||||
<texture_picker label="Unterhemd" name="upper_undershirt"/>
|
||||
|
|
@ -33,6 +36,7 @@ Texturen
|
|||
<texture_picker label="Oberjacke" name="upper_jacket"/>
|
||||
<texture_picker label="Alpha: Oben" name="upper_alpha"/>
|
||||
<texture_picker label="Obere Tätowierung" name="upper_tattoo"/>
|
||||
<texture_picker label="Obere uni. Tät." name="upper_universal_tattoo"/>
|
||||
<texture_picker label="Unterkörper" name="lower-baked"/>
|
||||
<texture_picker label="Unterkörperfarbe" name="lower_bodypaint"/>
|
||||
<texture_picker label="Unterhose" name="lower_underpants"/>
|
||||
|
|
@ -41,9 +45,21 @@ Texturen
|
|||
<texture_picker label="Hose" name="lower_pants"/>
|
||||
<texture_picker label="Jacke" name="lower_jacket"/>
|
||||
<texture_picker label="Alpha: Unten" name="lower_alpha"/>
|
||||
<texture_picker label="Untere Tätowierung" name="lower_tattoo"/>
|
||||
<texture_picker label="Untere Tät." name="lower_tattoo"/>
|
||||
<texture_picker label="Untere uni. Tät." name="lower_universal_tattoo"/>
|
||||
<texture_picker label="Rock" name="skirt-baked"/>
|
||||
<texture_picker label="Rock" name="skirt"/>
|
||||
<texture_picker label="Rocktätowierung" name="skirt_tattoo"/>
|
||||
<texture_picker label="Linker Arm" name="leftarm-baked"/>
|
||||
<texture_picker label="L. Arm uni. Tät." name="leftarm_tattoo"/>
|
||||
<texture_picker label="Linkes Bein" name="leftleg-baked"/>
|
||||
<texture_picker label="L. Bein uni. Tät." name="leftleg_tattoo"/>
|
||||
<texture_picker label="AUX 1" name="aux1-baked"/>
|
||||
<texture_picker label="AUX 1-Tätow." name="aux1_tattoo"/>
|
||||
<texture_picker label="AUX 2" name="aux2-baked"/>
|
||||
<texture_picker label="AUX 2-Tätow." name="aux2_tattoo"/>
|
||||
<texture_picker label="AUX 3" name="aux3-baked"/>
|
||||
<texture_picker label="AUX 3-Tätow." name="aux3_tattoo"/>
|
||||
</panel>
|
||||
</panel>
|
||||
</scroll_container>
|
||||
|
|
|
|||
|
|
@ -1,15 +1,19 @@
|
|||
<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
|
||||
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
|
||||
<floater name="ban_duration" title="Verbannungsdauer">
|
||||
<text name="duration_textbox">
|
||||
Verbannungsdauer:
|
||||
</text>
|
||||
<radio_group name="ban_duration_radio">
|
||||
<radio_item label="Permanent" name="always_radio"/>
|
||||
<radio_item label="Temporär" name="temporary_radio"/>
|
||||
<radio_item label="Immer" name="always_radio">
|
||||
Immer
|
||||
</radio_item>
|
||||
<radio_item label="Temporär" name="temporary_radio">
|
||||
Temporär
|
||||
</radio_item>
|
||||
</radio_group>
|
||||
<text name="hours_textbox">
|
||||
Stunden.
|
||||
</text>
|
||||
<button label="Ok" name="ok_btn"/>
|
||||
<button label="OK" name="ok_btn"/>
|
||||
<button label="Abbrechen" name="cancel_btn"/>
|
||||
</floater>
|
||||
|
|
|
|||
|
|
@ -114,6 +114,7 @@
|
|||
<panel label="Erweitert" name="area_search_advanced_panel">
|
||||
<check_box name="double_click_touch" label="Doppelklick berührt Objekt"/>
|
||||
<check_box name="double_click_buy" label="Doppelklick kauft Objekt"/>
|
||||
<check_box name="double_click_sit" label="Doppelklick sitzt auf Objekt"/>
|
||||
</panel>
|
||||
</tab_container>
|
||||
</floater>
|
||||
|
|
|
|||
|
|
@ -1,7 +1,11 @@
|
|||
<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
|
||||
<floater name="floater_discord" title="Discord">
|
||||
<string name="discord_connected" value="Verbunden mit Discord als:" />
|
||||
<string name="discord_disconnected" value="Nicht mit Discord verbunden." />
|
||||
<string name="discord_connected">
|
||||
Verbunden mit Discord als:
|
||||
</string>
|
||||
<string name="discord_disconnected">
|
||||
Nicht mit Discord verbunden.
|
||||
</string>
|
||||
<string name="SocialDiscordConnecting">
|
||||
Verbinde mit Discord...
|
||||
</string>
|
||||
|
|
@ -15,6 +19,7 @@
|
|||
Nicht mit Discord verbunden.
|
||||
</text>
|
||||
<check_box label="Automatisch beim Login verbinden" name="startup_check"/>
|
||||
<check_box label="Name mit Discord teilen" name="name_check"/>
|
||||
<button label="Verbinden..." name="connect_btn"/>
|
||||
<button label="Trennen" name="disconnect_btn"/>
|
||||
<text name="rating_label">
|
||||
|
|
|
|||
|
|
@ -22,7 +22,7 @@
|
|||
<check_box label="Nur aktive" name="FSShowOnlyActiveGestures"/>
|
||||
<button name="del_btn" tool_tip="Diese Geste löschen"/>
|
||||
</panel>
|
||||
<button label="Bearbeiten" name="edit_btn" tool_tip="Öffnet das Fenster zum Bearbeiten der ausgewählten Geste."/>
|
||||
<button label="Abspielen" name="play_btn" tool_tip="Führt die ausgewählte Geste aus."/>
|
||||
<button label="Bearbeiten" name="edit_btn" tool_tip="Fenster zum Bearbeiten der ausgewählten Geste öffnen."/>
|
||||
<button label="Abspielen" name="play_btn" tool_tip="Ausgewählte Geste inworld ausführen."/>
|
||||
<button label="Stopp" name="stop_btn"/>
|
||||
</floater>
|
||||
|
|
|
|||
|
|
@ -26,7 +26,7 @@
|
|||
Das Medien-Browser-Plugin lädt gerade.
|
||||
Sollte das Plugin nicht laden, sind Informationen zur Problemlösung erhältlich unter
|
||||
|
||||
http://wiki.phoenixviewer.com/fs_media
|
||||
http://wiki.firestormviewer.org/fs_media
|
||||
</text>
|
||||
<button label="In meinem Browser öffnen" name="open_browser"/>
|
||||
<check_box label="Immer in meinem Browser öffnen" name="open_always"/>
|
||||
|
|
|
|||
|
|
@ -43,6 +43,7 @@
|
|||
<check_box label="Anisotropische Filterung (langsamer, wenn aktiviert)" name="ani"/>
|
||||
<check_box initial_value="true" label="OpenGL Vertex-Buffer-Objekte aktivieren" name="vbo" tool_tip="Wenn Sie über moderne Grafikhardware verfügen, können Sie durch Aktivieren dieser Option die Geschwindigkeit verbessern. Bei alter Hardware sind die VBO oft schlecht implementiert, was zu Abstürzen führen kann, wenn diese Option aktiviert ist."/>
|
||||
<check_box initial_value="true" label="Texturkomprimierung aktivieren (Neustart erforderlich)" name="texture compression" tool_tip="Komprimiert Texturen im Videospeicher, damit höher auflösende Texturen geladen werden können (leichte Beeinträchtigung der Farbqualität)."/>
|
||||
<check_box initial_value="true" label="Unterstützung für HiDPI-Displays aktivieren (Neustart erforderlich)" name="use HiDPI" tool_tip="OpenGL für hochauflösende Darstellung aktivieren."/>
|
||||
<text name="antialiasing label">
|
||||
Antialiasing:
|
||||
</text>
|
||||
|
|
|
|||
|
|
@ -55,7 +55,7 @@ Objekt:
|
|||
<combo_box.item label="Unsittliches Verhalten > Für Regionseinstufung unpassende Inhalte/Verhaltensweisen" name="Indecency__Mature_content_in_PG_region"/>
|
||||
<combo_box.item label="Intoleranz" name="Intolerance"/>
|
||||
<combo_box.item label="Land > Unbefugte Nutzung > Objekte oder Texturen" name="Land__Encroachment__Objects_textures"/>
|
||||
<combo_box.item label="Verstoß gegen die Glücksspielerichtlinie" name="Wagering_gambling"/>
|
||||
<combo_box.item label="Verstoß gegen die Geschicklichkeits-Spielerichtlinie" name="Wagering_gambling"/>
|
||||
</combo_box>
|
||||
<text name="abuser_name_title">
|
||||
Name des Beschuldigten:
|
||||
|
|
|
|||
|
|
@ -18,11 +18,11 @@
|
|||
Das Web-Browser-Plugin lädt gerade.
|
||||
Sollte das Plugin nicht laden, sind Informationen zur Problemlösung erhältlich unter
|
||||
|
||||
http://wiki.phoenixviewer.com/fs_search_issues
|
||||
http://wiki.firestormviewer.org/fs_search_issues
|
||||
|
||||
und
|
||||
|
||||
http://wiki.phoenixviewer.com/fs_media
|
||||
http://wiki.firestormviewer.org/fs_media
|
||||
</text>
|
||||
</layout_panel>
|
||||
</layout_stack>
|
||||
|
|
|
|||
|
|
@ -2,6 +2,7 @@
|
|||
<context_menu name="Object List popup">
|
||||
<menu_item_call label="Skript-Info" name="script_info"/>
|
||||
<menu_item_call label="Berühren" name="touch_object"/>
|
||||
<menu_item_call label="Sitzen" name="sit_on_object"/>
|
||||
<menu_item_call label="Zu Objekt teleportieren" name="teleport_to_object"/>
|
||||
<menu_item_call label="Heranzoomen" name="look_at_object"/>
|
||||
<menu_item_call label="Untersuchen" name="inspect_object"/>
|
||||
|
|
|
|||
|
|
@ -139,6 +139,10 @@ Marktplatzinitialisierung aufgrund eines System- oder Netzwerkfehlers fehlgeschl
|
|||
„[ERROR_CODE]“
|
||||
<usetemplate name="okbutton" yestext="OK"/>
|
||||
</notification>
|
||||
<notification name="MyOutfitsPasteFailed">
|
||||
Ein oder mehrere Objekte können nicht innerhalb von „Outfits“ verwendet werden.
|
||||
<usetemplate name="okbutton" yestext="OK"/>
|
||||
</notification>
|
||||
<notification name="MerchantPasteFailed">
|
||||
Kopieren oder Verschieben von Marktplatz-Auflistungen fehlgeschlagen mit Fehler:
|
||||
|
||||
|
|
@ -1619,7 +1623,7 @@ Ersetzen Sie die Textur [TEXTURE_NUM] mit einer Bilddatei von maximal 1024x1024
|
|||
[AGENT] wurden zur [LIST_TYPE]-Liste von [ESTATE] hinzugefügt.
|
||||
</notification>
|
||||
<notification name="AgentWasRemovedFromList">
|
||||
[AGENT] wurden von der [LIST_TYPE]-Liste von [ESTATE] entfernt.
|
||||
[AGENT] wurde von der [LIST_TYPE]-Liste von [ESTATE] entfernt.
|
||||
</notification>
|
||||
<notification name="AgentsWereRemovedFromList">
|
||||
[AGENT] wurden von der [LIST_TYPE]-Liste von [ESTATE] entfernt.
|
||||
|
|
@ -3608,7 +3612,7 @@ Bitte prüfen Sie Ihre Netzwerk- und Firewall-Konfiguration.
|
|||
Deaktivieren Sie alle SIP ALG-Funktionen in Ihrem Router.
|
||||
|
||||
Voice-Kommunikation ist leider nicht verfügbar.
|
||||
[https://wiki.phoenixviewer.com/fs_voice]
|
||||
[https://wiki.firestormviewer.org/fs_voice]
|
||||
<usetemplate name="okignore" yestext="OK" ignoretext="Warnen, wenn keine Verbindung zum Voice-Server hergestellt werden kann."/>
|
||||
</notification>
|
||||
<notification name="NoVoiceConnect-GIAB">
|
||||
|
|
@ -3616,7 +3620,7 @@ Voice-Kommunikation ist leider nicht verfügbar.
|
|||
|
||||
Voice-Kommunikation ist leider nicht verfügbar.
|
||||
Bitte überprüfen Sie Ihr Netzwerk- und Firewall-Setup.
|
||||
[https://wiki.phoenixviewer.com/fs_voice]
|
||||
[https://wiki.firestormviewer.org/fs_voice]
|
||||
<usetemplate name="okignore" yestext="OK"/>
|
||||
</notification>
|
||||
<notification name="AvatarRezLeftNotification">
|
||||
|
|
|
|||
|
|
@ -3,7 +3,7 @@
|
|||
<tab_container name="max_bandwidth_layout">
|
||||
<panel label="Verbindung" name="tab-conn">
|
||||
<text name="Maximum bandwidth">
|
||||
Maximale Bandbreite ([http://wiki.phoenixviewer.com/fs_speedtest Empfehlungen anzeigen?]):
|
||||
Maximale Bandbreite ([http://wiki.firestormviewer.org/fs_speedtest Empfehlungen anzeigen?]):
|
||||
</text>
|
||||
<text name="NetworkPrefText1">
|
||||
Funk
|
||||
|
|
@ -47,7 +47,7 @@
|
|||
</panel>
|
||||
<panel label="Verzeichnisse" name="tab-dir">
|
||||
<text name="cache_size_label_l">
|
||||
Cache-Größe ([http://wiki.phoenixviewer.com/cache Empfehlungen anzeigen?]):
|
||||
Cache-Größe ([http://wiki.firestormviewer.org/cache Empfehlungen anzeigen?]):
|
||||
</text>
|
||||
<button label="Inventar-Cache löschen" width="137" name="ClearInventoryCache"/>
|
||||
<text name="Cache location">
|
||||
|
|
|
|||
|
|
@ -27,7 +27,7 @@
|
|||
</panel>
|
||||
<panel label="Zulässige Gruppen" name="allowed_groups_panel">
|
||||
<panel label="top_panel" name="allowed_group_search_panel">
|
||||
<filter_editor label="Zulässige Gruppen Suchen" name="allowed_group_search_input"/>
|
||||
<filter_editor label="Zulässige Gruppen suchen" name="allowed_group_search_input"/>
|
||||
<button label="Kopieren" name="copy_allowed_group_list_btn"/>
|
||||
</panel>
|
||||
<text name="allow_group_label">
|
||||
|
|
|
|||
|
|
@ -17,7 +17,7 @@
|
|||
</text>
|
||||
|
||||
<radio_group name="externally_visible_radio" width="310">
|
||||
<radio_item label="Nur Einwohner und Gruppen zulassen, die im Reiter "Zugang" aufgelistet sind." name="estate_restricted_access"/>
|
||||
<radio_item label="Nur Einwohner und Gruppen zulassen, die im Reiter "Zugang" aufgelistet sind" name="estate_restricted_access"/>
|
||||
<radio_item label="Zugang für jeden" name="estate_public_access"/>
|
||||
</radio_group>
|
||||
<check_box label="18 Jahre oder älter sind" name="limit_age_verified" tool_tip="Um diesen Grundbesitz besuchen zu können, müssen Einwohner mindestens 18 Jahre oder älter sein. Weitere Informationen finden Sie auf [SUPPORT_SITE]."/>
|
||||
|
|
|
|||
|
|
@ -82,7 +82,7 @@ Texturspeicher: [TEXTUREMEMORY] MB ([TEXTUREMEMORYMULTIPLIER])
|
|||
VFS (Cache) Erstellungszeit: [VFS_DATE]
|
||||
</string>
|
||||
<string name="AboutOSXHiDPI">
|
||||
HiDPI-Display-Modus: [HIDPI]
|
||||
HiDPI-Anzeigemodus: [HIDPI]
|
||||
</string>
|
||||
<string name="AboutLibs">
|
||||
RestrainedLove API: [RLV_VERSION]
|
||||
|
|
@ -648,6 +648,12 @@ Warten Sie kurz und versuchen Sie dann noch einmal, sich anzumelden.
|
|||
<string name="TooltipOutboxMixedStock">
|
||||
Alle Objekte in einem Bestandsordner müssen vom gleichen Typ sein und die gleiche Berechtigung haben
|
||||
</string>
|
||||
<string name="TooltipOutfitNotInInventory">
|
||||
Sie können nur Objekte oder Outfits aus Ihrem persönlichen Inventar zu „Outfits“ hinzufügen.
|
||||
</string>
|
||||
<string name="TooltipCantCreateOutfit">
|
||||
Ein oder mehrere Objekte können nicht innerhalb von „Outfits“ verwendet werden.
|
||||
</string>
|
||||
<string name="TooltipDragOntoOwnChild">
|
||||
Sie können einen Ordner nicht in einen seiner untergeordneten Ordner verschieben
|
||||
</string>
|
||||
|
|
@ -1683,13 +1689,13 @@ http://www.firestormviewer.org/support für Hilfe zum Lösen des Problems.
|
|||
https://marketplace.[MARKETPLACE_DOMAIN_NAME]/learn_more
|
||||
</string>
|
||||
<string name="InventoryPlayAnimationTooltip">
|
||||
Öffnet Fenster mit Abspieloptionen.
|
||||
Fenster mit Spieloptionen öffnen.
|
||||
</string>
|
||||
<string name="InventoryPlayGestureTooltip">
|
||||
Führt die ausgewählte Geste aus.
|
||||
Ausgewählte Geste inworld ausführen.
|
||||
</string>
|
||||
<string name="InventoryPlaySoundTooltip">
|
||||
Öffnet Fenster mit Abspieloptionen.
|
||||
Fenster mit Spieloptionen öffnen.
|
||||
</string>
|
||||
<string name="InventoryOutboxNotMerchantTitle">
|
||||
Jeder kann Artikel im Marktplatz verkaufen.
|
||||
|
|
@ -5714,9 +5720,6 @@ Setzen Sie den Editorpfad in Anführungszeichen
|
|||
<string name="Command_Destinations_Label">
|
||||
Ziele
|
||||
</string>
|
||||
<string name="Command_Facebook_Label">
|
||||
Facebook
|
||||
</string>
|
||||
<string name="Command_Flickr_Label">
|
||||
Flickr
|
||||
</string>
|
||||
|
|
@ -5916,9 +5919,6 @@ Setzen Sie den Editorpfad in Anführungszeichen
|
|||
<string name="Command_Destinations_Tooltip">
|
||||
Ziele von Interesse
|
||||
</string>
|
||||
<string name="Command_Facebook_Tooltip">
|
||||
Auf Facebook posten
|
||||
</string>
|
||||
<string name="Command_Flickr_Tooltip">
|
||||
Auf Flickr hochladen
|
||||
</string>
|
||||
|
|
|
|||
|
|
@ -8,14 +8,14 @@
|
|||
help_topic="floater_about"
|
||||
save_rect="true"
|
||||
title="About [APP_NAME]"
|
||||
width="500">
|
||||
width="515">
|
||||
|
||||
<tab_container
|
||||
follows="all"
|
||||
top="20"
|
||||
left="7"
|
||||
height="572"
|
||||
width="486"
|
||||
width="501"
|
||||
name="about_tab"
|
||||
tab_position="top">
|
||||
<panel
|
||||
|
|
@ -46,7 +46,7 @@ http://www.firestormviewer.org
|
|||
max_length="65536"
|
||||
name="support_editor"
|
||||
top_pad="5"
|
||||
width="474"
|
||||
width="489"
|
||||
word_wrap="true" />
|
||||
<button
|
||||
follows="left|top"
|
||||
|
|
@ -69,7 +69,7 @@ http://www.firestormviewer.org
|
|||
left="4"
|
||||
name="linden_intro"
|
||||
top="16"
|
||||
width="474"
|
||||
width="489"
|
||||
wrap="true">
|
||||
Firestorm would not be possible without the decision from Linden Lab to make their Second Life viewer source code available.
|
||||
|
||||
|
|
|
|||
|
|
@ -7,7 +7,7 @@
|
|||
help_topic="avatar_texture_debug"
|
||||
save_rect="true"
|
||||
title="Avatar Textures"
|
||||
width="940"
|
||||
width="1024"
|
||||
can_resize="false">
|
||||
<floater.string
|
||||
name="InvalidAvatar">
|
||||
|
|
@ -20,26 +20,28 @@
|
|||
follows="all"
|
||||
height="680"
|
||||
layout="topleft"
|
||||
left="5"
|
||||
left="1"
|
||||
top_pad="15"
|
||||
name="profile_scroll"
|
||||
reserve_scroll_corner="false"
|
||||
width="930">
|
||||
right="-1">
|
||||
<panel
|
||||
name="scroll_content_panel"
|
||||
follows="left|top"
|
||||
min_height="300"
|
||||
min_width="300"
|
||||
layout="topleft"
|
||||
top="0"
|
||||
background_visible="false"
|
||||
left="0"
|
||||
height="680">
|
||||
height="1165"
|
||||
width="1000">
|
||||
<text
|
||||
type="string"
|
||||
length="1"
|
||||
height="16"
|
||||
layout="topleft"
|
||||
left="15"
|
||||
left="10"
|
||||
name="label"
|
||||
top="20"
|
||||
width="90">
|
||||
|
|
@ -51,7 +53,7 @@ Textures
|
|||
length="1"
|
||||
height="16"
|
||||
layout="topleft"
|
||||
left_pad="22"
|
||||
left_pad="15"
|
||||
name="composite_label"
|
||||
top_delta="0"
|
||||
width="120">
|
||||
|
|
@ -91,7 +93,7 @@ Textures
|
|||
height="103"
|
||||
label="Hair"
|
||||
layout="topleft"
|
||||
left_pad="21"
|
||||
left_pad="10"
|
||||
name="hair_grain"
|
||||
top_delta="0"
|
||||
width="92" />
|
||||
|
|
@ -103,6 +105,14 @@ Textures
|
|||
name="hair_alpha"
|
||||
top_delta="0"
|
||||
width="92" />
|
||||
<texture_picker
|
||||
height="103"
|
||||
label="Hair Tattoo"
|
||||
layout="topleft"
|
||||
left_pad="7"
|
||||
name="hair_tattoo"
|
||||
top_delta="0"
|
||||
width="92" />
|
||||
|
||||
<texture_picker
|
||||
height="103"
|
||||
|
|
@ -116,7 +126,7 @@ Textures
|
|||
height="103"
|
||||
label="Makeup"
|
||||
layout="topleft"
|
||||
left_pad="21"
|
||||
left_pad="10"
|
||||
name="head_bodypaint"
|
||||
top_delta="0"
|
||||
width="92" />
|
||||
|
|
@ -136,6 +146,14 @@ Textures
|
|||
name="head_tattoo"
|
||||
top_delta="0"
|
||||
width="92" />
|
||||
<texture_picker
|
||||
height="103"
|
||||
label="Head Unv Tattoo"
|
||||
layout="topleft"
|
||||
left_pad="7"
|
||||
name="head_universal_tattoo"
|
||||
top_delta="0"
|
||||
width="92" />
|
||||
|
||||
<texture_picker
|
||||
height="103"
|
||||
|
|
@ -149,7 +167,7 @@ Textures
|
|||
height="103"
|
||||
label="Eye"
|
||||
layout="topleft"
|
||||
left_pad="21"
|
||||
left_pad="10"
|
||||
name="eyes_iris"
|
||||
top_delta="0"
|
||||
width="92" />
|
||||
|
|
@ -161,6 +179,14 @@ Textures
|
|||
name="eyes_alpha"
|
||||
top_delta="0"
|
||||
width="92" />
|
||||
<texture_picker
|
||||
height="103"
|
||||
label="Eyes Tattoo"
|
||||
layout="topleft"
|
||||
left_pad="7"
|
||||
name="eyes_tattoo"
|
||||
top_delta="0"
|
||||
width="92" />
|
||||
|
||||
<texture_picker
|
||||
height="103"
|
||||
|
|
@ -174,7 +200,7 @@ Textures
|
|||
height="103"
|
||||
label="Upper BodyPaint"
|
||||
layout="topleft"
|
||||
left_pad="21"
|
||||
left_pad="10"
|
||||
name="upper_bodypaint"
|
||||
top_delta="0"
|
||||
width="92" />
|
||||
|
|
@ -226,6 +252,14 @@ Textures
|
|||
name="upper_tattoo"
|
||||
top_delta="0"
|
||||
width="92" />
|
||||
<texture_picker
|
||||
height="103"
|
||||
label="Upper Unv Tattoo"
|
||||
layout="topleft"
|
||||
left_pad="7"
|
||||
name="upper_universal_tattoo"
|
||||
top_delta="0"
|
||||
width="92" />
|
||||
|
||||
<texture_picker
|
||||
height="103"
|
||||
|
|
@ -239,7 +273,7 @@ Textures
|
|||
height="103"
|
||||
label="Lower BodyPaint"
|
||||
layout="topleft"
|
||||
left_pad="21"
|
||||
left_pad="10"
|
||||
name="lower_bodypaint"
|
||||
top_delta="0"
|
||||
width="92" />
|
||||
|
|
@ -299,6 +333,14 @@ Textures
|
|||
name="lower_tattoo"
|
||||
top_delta="0"
|
||||
width="92" />
|
||||
<texture_picker
|
||||
height="103"
|
||||
label="Lower Unv Tattoo"
|
||||
layout="topleft"
|
||||
left_pad="7"
|
||||
name="lower_universal_tattoo"
|
||||
top_delta="0"
|
||||
width="92" />
|
||||
|
||||
<texture_picker
|
||||
height="103"
|
||||
|
|
@ -312,10 +354,103 @@ Textures
|
|||
height="103"
|
||||
label="Skirt"
|
||||
layout="topleft"
|
||||
left_pad="21"
|
||||
left_pad="10"
|
||||
name="skirt"
|
||||
top_delta="0"
|
||||
width="92" />
|
||||
<texture_picker
|
||||
height="103"
|
||||
label="Skirt Tattoo"
|
||||
layout="topleft"
|
||||
left_pad="7"
|
||||
name="skirt_tattoo"
|
||||
top_delta="0"
|
||||
width="92" />
|
||||
|
||||
<texture_picker
|
||||
height="103"
|
||||
label="Left Arm"
|
||||
layout="topleft"
|
||||
left="10"
|
||||
name="leftarm-baked"
|
||||
top_delta="100"
|
||||
width="92" />
|
||||
<texture_picker
|
||||
height="103"
|
||||
label="Left Arm Tattoo"
|
||||
layout="topleft"
|
||||
left_pad="10"
|
||||
name="leftarm_tattoo"
|
||||
top_delta="0"
|
||||
width="92" />
|
||||
|
||||
<texture_picker
|
||||
height="103"
|
||||
label="Left Leg"
|
||||
layout="topleft"
|
||||
left="10"
|
||||
name="leftleg-baked"
|
||||
top_delta="100"
|
||||
width="92" />
|
||||
<texture_picker
|
||||
height="103"
|
||||
label="Left Leg Tattoo"
|
||||
layout="topleft"
|
||||
left_pad="10"
|
||||
name="leftleg_tattoo"
|
||||
top_delta="0"
|
||||
width="92" />
|
||||
|
||||
<texture_picker
|
||||
height="103"
|
||||
label="AUX 1"
|
||||
layout="topleft"
|
||||
left="10"
|
||||
name="aux1-baked"
|
||||
top_delta="100"
|
||||
width="92" />
|
||||
<texture_picker
|
||||
height="103"
|
||||
label="AUX 1 Tattoo"
|
||||
layout="topleft"
|
||||
left_pad="10"
|
||||
name="aux1_tattoo"
|
||||
top_delta="0"
|
||||
width="92" />
|
||||
|
||||
<texture_picker
|
||||
height="103"
|
||||
label="AUX 2"
|
||||
layout="topleft"
|
||||
left="10"
|
||||
name="aux2-baked"
|
||||
top_delta="100"
|
||||
width="92" />
|
||||
<texture_picker
|
||||
height="103"
|
||||
label="AUX 2 Tattoo"
|
||||
layout="topleft"
|
||||
left_pad="10"
|
||||
name="aux2_tattoo"
|
||||
top_delta="0"
|
||||
width="92" />
|
||||
|
||||
<texture_picker
|
||||
height="103"
|
||||
label="AUX 3"
|
||||
layout="topleft"
|
||||
left="10"
|
||||
name="aux3-baked"
|
||||
top_delta="100"
|
||||
width="92" />
|
||||
<texture_picker
|
||||
height="103"
|
||||
label="AUX 3 Tattoo"
|
||||
layout="topleft"
|
||||
left_pad="10"
|
||||
name="aux3_tattoo"
|
||||
top_delta="0"
|
||||
width="92" />
|
||||
</panel>
|
||||
</panel>
|
||||
</scroll_container>
|
||||
|
|
|
|||
|
|
@ -1,109 +1,116 @@
|
|||
<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
|
||||
<floater
|
||||
positioning="cascading"
|
||||
can_close="true"
|
||||
can_resize="false"
|
||||
help_topic="floater_discord"
|
||||
layout="topleft"
|
||||
name="floater_discord"
|
||||
save_rect="true"
|
||||
single_instance="true"
|
||||
reuse_instance="true"
|
||||
title="Discord"
|
||||
height="462"
|
||||
width="272">
|
||||
<string
|
||||
name="discord_connected"
|
||||
value="You are connected to Discord as:" />
|
||||
<string
|
||||
name="discord_disconnected"
|
||||
value="Not connected to Discord." />
|
||||
<string name="SocialDiscordConnecting">Connecting to Discord...</string>
|
||||
<string name="SocialDiscordErrorConnecting">Problem connecting to Discord</string>
|
||||
<string name="SocialDiscordDisconnecting">Disconnecting from Discord...</string>
|
||||
<text
|
||||
layout="topleft"
|
||||
length="1"
|
||||
follows="top|left"
|
||||
font="SansSerif"
|
||||
height="16"
|
||||
left="10"
|
||||
name="account_caption_label"
|
||||
top="5"
|
||||
type="string">
|
||||
positioning="cascading"
|
||||
can_close="true"
|
||||
can_resize="false"
|
||||
help_topic="floater_discord"
|
||||
layout="topleft"
|
||||
name="floater_discord"
|
||||
save_rect="true"
|
||||
single_instance="true"
|
||||
reuse_instance="true"
|
||||
title="Discord"
|
||||
height="485"
|
||||
width="272">
|
||||
<string name="discord_connected">You are connected to Discord as:</string>
|
||||
<string name="discord_disconnected">Not connected to Discord.</string>
|
||||
<string name="SocialDiscordConnecting">Connecting to Discord...</string>
|
||||
<string name="SocialDiscordErrorConnecting">Problem connecting to Discord</string>
|
||||
<string name="SocialDiscordDisconnecting">Disconnecting from Discord...</string>
|
||||
<text
|
||||
layout="topleft"
|
||||
length="1"
|
||||
follows="top|left"
|
||||
font="SansSerif"
|
||||
height="16"
|
||||
left="10"
|
||||
name="account_caption_label"
|
||||
top="5"
|
||||
type="string">
|
||||
Not connected to Discord.
|
||||
</text>
|
||||
<text
|
||||
layout="topleft"
|
||||
top_pad="2"
|
||||
length="1"
|
||||
follows="top|left"
|
||||
font="SansSerif"
|
||||
height="16"
|
||||
left="10"
|
||||
name="account_name_label"
|
||||
parse_urls="true"
|
||||
type="string"/>
|
||||
<check_box
|
||||
layout="topleft"
|
||||
follows="left|top|right"
|
||||
top_pad="9"
|
||||
left="10"
|
||||
right="-10"
|
||||
visible="true"
|
||||
height="23"
|
||||
label="Automatically connect on login"
|
||||
name="startup_check"
|
||||
width="210">
|
||||
<commit_callback function="FSDiscord.Allow"/>
|
||||
</check_box>
|
||||
<button
|
||||
layout="topleft"
|
||||
follows="left|top|right"
|
||||
top_pad="9"
|
||||
left="10"
|
||||
right="-10"
|
||||
visible="true"
|
||||
height="23"
|
||||
label="Connect..."
|
||||
name="connect_btn"
|
||||
width="210">
|
||||
<commit_callback function="FSDiscord.Connect"/>
|
||||
</button>
|
||||
</text>
|
||||
<text
|
||||
layout="topleft"
|
||||
top_pad="2"
|
||||
length="1"
|
||||
follows="top|left"
|
||||
font="SansSerif"
|
||||
height="16"
|
||||
left="10"
|
||||
name="account_name_label"
|
||||
parse_urls="true"
|
||||
type="string"/>
|
||||
<check_box
|
||||
control_name="FSEnableDiscordIntegration"
|
||||
layout="topleft"
|
||||
follows="left|top|right"
|
||||
top_pad="9"
|
||||
left="10"
|
||||
right="-10"
|
||||
visible="true"
|
||||
height="23"
|
||||
label="Automatically connect on login"
|
||||
name="startup_check"
|
||||
width="210"/>
|
||||
<check_box
|
||||
control_name="FSShareNameToDiscord"
|
||||
layout="topleft"
|
||||
follows="left|top|right"
|
||||
left="10"
|
||||
right="-10"
|
||||
visible="true"
|
||||
height="23"
|
||||
label="Share username"
|
||||
name="name_check"
|
||||
width="210"/>
|
||||
<button
|
||||
layout="topleft"
|
||||
follows="left|top|right"
|
||||
top_pad="9"
|
||||
left="10"
|
||||
right="-10"
|
||||
visible="true"
|
||||
height="23"
|
||||
label="Connect..."
|
||||
name="connect_btn"
|
||||
width="210">
|
||||
<commit_callback function="FSDiscord.Connect"/>
|
||||
</button>
|
||||
|
||||
<button
|
||||
layout="topleft"
|
||||
follows="left|top|right"
|
||||
top_delta="0"
|
||||
left="10"
|
||||
right="-10"
|
||||
height="23"
|
||||
label="Disconnect"
|
||||
name="disconnect_btn"
|
||||
width="210"
|
||||
visible="false">
|
||||
<commit_callback function="FSDiscord.Disconnect"/>
|
||||
</button>
|
||||
<text
|
||||
layout="topleft"
|
||||
length="1"
|
||||
follows="top|left"
|
||||
font="SansSerif"
|
||||
height="26"
|
||||
word_wrap="true"
|
||||
left="10"
|
||||
right="-10"
|
||||
name="rating_label"
|
||||
top_pad="5"
|
||||
type="string">
|
||||
<button
|
||||
layout="topleft"
|
||||
follows="left|top|right"
|
||||
top_delta="0"
|
||||
left="10"
|
||||
right="-10"
|
||||
height="23"
|
||||
label="Disconnect"
|
||||
name="disconnect_btn"
|
||||
width="210"
|
||||
visible="false">
|
||||
<commit_callback function="FSDiscord.Disconnect"/>
|
||||
</button>
|
||||
<text
|
||||
layout="topleft"
|
||||
length="1"
|
||||
follows="top|left"
|
||||
font="SansSerif"
|
||||
height="26"
|
||||
word_wrap="true"
|
||||
left="10"
|
||||
right="-10"
|
||||
name="rating_label"
|
||||
top_pad="5"
|
||||
type="string">
|
||||
Share name of regions with following content rating to Discord:
|
||||
</text>
|
||||
<combo_box
|
||||
follows="left|top"
|
||||
height="23"
|
||||
layout="topleft"
|
||||
name="maturity_desired_combobox"
|
||||
width="200">
|
||||
control_name="FSMaxSharedMaturity"
|
||||
follows="left|top"
|
||||
height="23"
|
||||
layout="topleft"
|
||||
name="maturity_desired_combobox"
|
||||
width="200">
|
||||
<combo_box.item
|
||||
label="General, Moderate, Adult"
|
||||
name="Desired_Adult"
|
||||
|
|
@ -120,32 +127,31 @@
|
|||
label="Don't share"
|
||||
name="Desired_None"
|
||||
value="0" />
|
||||
<commit_callback function="FSDiscord.Combo"/>
|
||||
</combo_box>
|
||||
</combo_box>
|
||||
<text
|
||||
layout="topleft"
|
||||
length="1"
|
||||
follows="top|left"
|
||||
font="SansSerif"
|
||||
height="26"
|
||||
word_wrap="true"
|
||||
left="10"
|
||||
right="-10"
|
||||
name="dont_names_label"
|
||||
top_pad="5"
|
||||
type="string">
|
||||
layout="topleft"
|
||||
length="1"
|
||||
follows="top|left"
|
||||
font="SansSerif"
|
||||
height="26"
|
||||
word_wrap="true"
|
||||
left="10"
|
||||
right="-10"
|
||||
name="dont_names_label"
|
||||
top_pad="5"
|
||||
type="string">
|
||||
Don't share region names to Discord if they are listed below:
|
||||
</text>
|
||||
<scroll_list
|
||||
follows="top|left|right"
|
||||
height="215"
|
||||
layout="topleft"
|
||||
left="10"
|
||||
multi_select="true"
|
||||
name="blacklisted_names"
|
||||
sort_column="0"
|
||||
sort_ascending="true"
|
||||
width="250" />
|
||||
follows="top|left|right"
|
||||
height="215"
|
||||
layout="topleft"
|
||||
left="10"
|
||||
multi_select="true"
|
||||
name="blacklisted_names"
|
||||
sort_column="0"
|
||||
sort_ascending="true"
|
||||
width="250" />
|
||||
<line_editor
|
||||
follows="left|top"
|
||||
bottom_delta="24"
|
||||
|
|
@ -153,8 +159,8 @@
|
|||
max_length_chars="256"
|
||||
name="blacklist_entry"
|
||||
width="202">
|
||||
<commit_callback function="FSDiscord.Add"/>
|
||||
</line_editor>
|
||||
<commit_callback function="FSDiscord.Add"/>
|
||||
</line_editor>
|
||||
<button
|
||||
follows="left|top"
|
||||
height="20"
|
||||
|
|
@ -177,19 +183,19 @@
|
|||
width="20">
|
||||
<commit_callback function="FSDiscord.Rem"/>
|
||||
</button>
|
||||
<text
|
||||
name="connection_status_text"
|
||||
type="string"
|
||||
follows="left|bottom|right"
|
||||
bottom_delta="20"
|
||||
left="-262"
|
||||
width="223"
|
||||
height="20"
|
||||
wrap="true"
|
||||
halign="left"
|
||||
valign="center"
|
||||
text_color="EmphasisColor"
|
||||
font="SansSerif">
|
||||
Loading...
|
||||
</text>
|
||||
<text
|
||||
name="connection_status_text"
|
||||
type="string"
|
||||
follows="left|bottom|right"
|
||||
bottom_delta="20"
|
||||
left="-262"
|
||||
width="223"
|
||||
height="20"
|
||||
wrap="true"
|
||||
halign="left"
|
||||
valign="center"
|
||||
text_color="EmphasisColor"
|
||||
font="SansSerif">
|
||||
Loading...
|
||||
</text>
|
||||
</floater>
|
||||
|
|
|
|||
|
|
@ -202,7 +202,7 @@
|
|||
The web browser plugin seems to be taking a while to open.
|
||||
If the plugin never loads, please visit:
|
||||
|
||||
http://wiki.phoenixviewer.com/fs_media
|
||||
http://wiki.firestormviewer.org/fs_media
|
||||
|
||||
for possible steps to resolve this issue.
|
||||
</text>
|
||||
|
|
|
|||
|
|
@ -202,11 +202,11 @@
|
|||
The web browser plugin seems to be taking a while to open.
|
||||
If the plugin never loads, please visit:
|
||||
|
||||
http://wiki.phoenixviewer.com/fs_search_issues
|
||||
http://wiki.firestormviewer.org/fs_search_issues
|
||||
|
||||
and
|
||||
|
||||
http://wiki.phoenixviewer.com/fs_media
|
||||
http://wiki.firestormviewer.org/fs_media
|
||||
|
||||
for possible steps to resolve this issue.
|
||||
</text>
|
||||
|
|
|
|||
|
|
@ -63,7 +63,7 @@
|
|||
<menu_item_call.on_click
|
||||
function="PromptShowURL"
|
||||
name="script_library_url"
|
||||
parameter="WebLaunchExternalTarget,http://wiki.phoenixviewer.com/doku.php?id=start" />
|
||||
parameter="WebLaunchExternalTarget,http://wiki.firestormviewer.org/doku.php?id=start" />
|
||||
</menu_item_call>
|
||||
<menu_item_call
|
||||
label="Troubleshooting"
|
||||
|
|
@ -71,7 +71,7 @@
|
|||
<menu_item_call.on_click
|
||||
function="PromptShowURL"
|
||||
name="wiki_troubleshooting_url"
|
||||
parameter="WebLaunchExternalTarget,http://wiki.phoenixviewer.com/firestorm_troubleshooting" />
|
||||
parameter="WebLaunchExternalTarget,http://wiki.firestormviewer.org/firestorm_troubleshooting" />
|
||||
</menu_item_call>
|
||||
<!--
|
||||
<menu_item_separator />
|
||||
|
|
|
|||
|
|
@ -2071,7 +2071,7 @@
|
|||
<menu_item_call.on_click
|
||||
function="PromptShowURL"
|
||||
name="script_library_url"
|
||||
parameter="WebLaunchExternalTarget,http://wiki.phoenixviewer.com" />
|
||||
parameter="WebLaunchExternalTarget,http://wiki.firestormviewer.org" />
|
||||
</menu_item_call>
|
||||
|
||||
<menu_item_call
|
||||
|
|
@ -2080,7 +2080,7 @@
|
|||
<menu_item_call.on_click
|
||||
function="PromptShowURL"
|
||||
name="wiki_troubleshooting_url"
|
||||
parameter="WebLaunchExternalTarget,http://wiki.phoenixviewer.com/firestorm_troubleshooting" />
|
||||
parameter="WebLaunchExternalTarget,http://wiki.firestormviewer.org/firestorm_troubleshooting" />
|
||||
</menu_item_call>
|
||||
|
||||
<menu_item_call
|
||||
|
|
@ -2088,7 +2088,7 @@
|
|||
name="firestorm_support_group">
|
||||
<menu_item_call.on_click
|
||||
function="Advanced.WebBrowserTest"
|
||||
parameter="http://wiki.phoenixviewer.com/firestorm_support_groups_join" />
|
||||
parameter="http://wiki.firestormviewer.org/firestorm_support_groups_join" />
|
||||
<menu_item_call.on_visible
|
||||
function="GridCheck"
|
||||
parameter="secondlife" />
|
||||
|
|
@ -2100,7 +2100,7 @@
|
|||
<menu_item_call.on_click
|
||||
function="PromptShowURL"
|
||||
name="wiki_classes_url"
|
||||
parameter="WebLaunchExternalTarget,http://wiki.phoenixviewer.com/firestorm_classes" />
|
||||
parameter="WebLaunchExternalTarget,http://wiki.firestormviewer.org/firestorm_classes" />
|
||||
</menu_item_call>
|
||||
|
||||
<menu_item_call
|
||||
|
|
|
|||
|
|
@ -327,6 +327,16 @@ Initialization with the Marketplace failed because of a system or network error.
|
|||
name="okbutton"
|
||||
yestext="OK"/>
|
||||
</notification>
|
||||
|
||||
<notification
|
||||
icon="OutboxStatus_Error"
|
||||
name="MyOutfitsPasteFailed"
|
||||
type="alertmodal">
|
||||
One or more items can't be used inside "Outfits"
|
||||
<usetemplate
|
||||
name="okbutton"
|
||||
yestext="OK"/>
|
||||
</notification>
|
||||
|
||||
<notification
|
||||
icon="OutboxStatus_Error"
|
||||
|
|
@ -1803,13 +1813,6 @@ Visit [_URL] for more information?
|
|||
<tag>fail</tag>
|
||||
</notification>
|
||||
|
||||
<notification
|
||||
icon="alertmodal.tga"
|
||||
name="RunLauncher"
|
||||
type="alertmodal">
|
||||
Please do not directly run the viewer executable. Update any existing shortcuts to run SL_Launcher instead.
|
||||
</notification>
|
||||
|
||||
<notification
|
||||
icon="alertmodal.tga"
|
||||
name="OldGPUDriver"
|
||||
|
|
@ -2477,6 +2480,7 @@ Your search terms were too short so no search was performed.
|
|||
icon="alertmodal.tga"
|
||||
name="CouldNotTeleportReason"
|
||||
type="alertmodal">
|
||||
<unique/>
|
||||
Teleport failed.
|
||||
[REASON]
|
||||
<tag>fail</tag>
|
||||
|
|
@ -9286,7 +9290,7 @@ Please check your network and firewall setup.
|
|||
Disable any SIP ALG feature in your router.
|
||||
|
||||
Voice communications will not be available.
|
||||
[https://wiki.phoenixviewer.com/fs_voice]
|
||||
[https://wiki.firestormviewer.org/fs_voice]
|
||||
<tag>voice</tag>
|
||||
<tag>fail</tag>
|
||||
<usetemplate
|
||||
|
|
@ -9303,7 +9307,7 @@ We're having trouble connecting to your voice server.
|
|||
|
||||
Voice communications will not be available.
|
||||
Please check your network and firewall setup.
|
||||
[https://wiki.phoenixviewer.com/fs_voice]
|
||||
[https://wiki.firestormviewer.org/fs_voice]
|
||||
<tag>voice</tag>
|
||||
<tag>fail</tag>
|
||||
<usetemplate
|
||||
|
|
|
|||
|
|
@ -43,7 +43,7 @@
|
|||
mouse_opaque="false"
|
||||
top_pad="15"
|
||||
width="500">
|
||||
Maximum bandwidth ([http://wiki.phoenixviewer.com/fs_speedtest need a suggestion?]):
|
||||
Maximum bandwidth ([http://wiki.firestormviewer.org/fs_speedtest need a suggestion?]):
|
||||
</text>
|
||||
|
||||
<icon
|
||||
|
|
@ -411,7 +411,7 @@
|
|||
name="cache_size_label_l"
|
||||
top_pad="15"
|
||||
width="500">
|
||||
Cache size ([http://wiki.phoenixviewer.com/cache need a suggestion?]):
|
||||
Cache size ([http://wiki.firestormviewer.org/cache need a suggestion?]):
|
||||
</text>
|
||||
<slider
|
||||
can_edit_text="true"
|
||||
|
|
|
|||
|
|
@ -313,6 +313,8 @@ Please try logging in again in a minute.</string>
|
|||
<string name="TooltipOutboxDragActive">You can't move a listed listing</string>
|
||||
<string name="TooltipOutboxCannotMoveRoot">You can't move the marketplace listings root folder</string>
|
||||
<string name="TooltipOutboxMixedStock">All items in a stock folder must have the same type and permission</string>
|
||||
<string name="TooltipOutfitNotInInventory">You can only put items or outfits from your personal inventory into "Outfits"</string>
|
||||
<string name="TooltipCantCreateOutfit">One or more items can't be used inside "Outfits"</string>
|
||||
|
||||
<string name="TooltipDragOntoOwnChild">You can't move a folder into its child</string>
|
||||
<string name="TooltipDragOntoSelf">You can't move a folder into itself</string>
|
||||
|
|
@ -374,7 +376,7 @@ Please try logging in again in a minute.</string>
|
|||
|
||||
<string name="ReleaseNotes">Release Notes</string>
|
||||
<!-- Always mark translate="false" for strings that are nothing but URLs, as they don't need translation. -->
|
||||
<string name="RELEASE_NOTES_BASE_URL" translate="false">http://wiki.phoenixviewer.com/firestorm_change_log_</string>
|
||||
<string name="RELEASE_NOTES_BASE_URL" translate="false">http://wiki.firestormviewer.org/firestorm_change_log_</string>
|
||||
|
||||
<!-- Indicates something is being loaded. Maybe should be merged with RetrievingData -->
|
||||
<string name="LoadingData">Loading...</string>
|
||||
|
|
|
|||
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue