Ansariel 2020-08-01 09:46:00 +02:00
commit 2e179112c7
91 changed files with 899 additions and 338 deletions

View File

@ -754,9 +754,9 @@
<key>archive</key>
<map>
<key>hash</key>
<string>d778c6a3475bc35ee8b9615dfc38b4a9</string>
<string>2d59bb6f4bd38a18d9250ff010a13b59</string>
<key>url</key>
<string>http://automated-builds-secondlife-com.s3.amazonaws.com/ct2/55025/511964/dictionaries-1.538984-common-538984.tar.bz2</string>
<string>http://downloads.phoenixviewer.com/dictionaries-2.46203-common-46203.tar.bz2</string>
</map>
<key>name</key>
<string>common</string>
@ -796,9 +796,9 @@
<key>archive</key>
<map>
<key>hash</key>
<string>7253c6787a9aa04b160f450a47bc8d93</string>
<string>e11da8884e44c27df3bf3adce01d5760</string>
<key>url</key>
<string>http://3p.firestormviewer.org/dullahan-1.8.0.202007201344_81.3.10_gb223419_chromium-81.0.4044.138-windows-202021141.tar.bz2</string>
<string>http://3p.firestormviewer.org/dullahan-1.8.0.202007201344_81.3.10_gb223419_chromium-81.0.4044.138-windows-202072245.tar.bz2</string>
</map>
<key>name</key>
<string>windows</string>
@ -808,9 +808,9 @@
<key>archive</key>
<map>
<key>hash</key>
<string>0b24ebef4ea891e5fbf94445acac42bf</string>
<string>609dd2d70b73d83c382f73734c648156</string>
<key>url</key>
<string>http://3p.firestormviewer.org/dullahan-1.8.0.202007201344_81.3.10_gb223419_chromium-81.0.4044.138-windows64-202021146.tar.bz2</string>
<string>http://3p.firestormviewer.org/dullahan-1.8.0.202007201344_81.3.10_gb223419_chromium-81.0.4044.138-windows64-202072240.tar.bz2</string>
</map>
<key>name</key>
<string>windows64</string>
@ -1938,9 +1938,9 @@
<key>archive</key>
<map>
<key>hash</key>
<string>a33b5a416daba549898b215f3e4ae7ea</string>
<string>995f807a91bd251408ad0f18c13bbcf4</string>
<key>url</key>
<string>file:///c:/cygwin/opt/firestorm/kdu-7.A.7-windows-vs2017-1906061512.tar.bz2</string>
<string>file:///c:/cygwin/opt/firestorm/kdu-8.0.5-windows-202060400.tar.bz2</string>
</map>
<key>name</key>
<string>windows</string>
@ -1950,9 +1950,9 @@
<key>archive</key>
<map>
<key>hash</key>
<string>a33b5a416daba549898b215f3e4ae7ea</string>
<string>995f807a91bd251408ad0f18c13bbcf4</string>
<key>url</key>
<string>file:///c:/cygwin/opt/firestorm/kdu-7.A.7-windows-vs2017-1906061512.tar.bz2</string>
<string>file:///c:/cygwin/opt/firestorm/kdu-8.0.5-windows-202060400.tar.bz2</string>
</map>
<key>name</key>
<string>windows64</string>
@ -2521,7 +2521,7 @@
<key>hash</key>
<string>2aa4ec0d72bbe4b755730f1bf92b39e7</string>
<key>url</key>
<string>http://s3-proxy.lindenlab.com/private-builds-secondlife-com/ct2/30340/257304/llphysicsextensions_tpv-1.0.542327-darwin64-542327.tar.bz2</string>
<string>file:///opt/firestorm/llphysicsextensions_tpv-1.0.542327-darwin64-542327.tar.bz2</string>
</map>
<key>name</key>
<string>darwin64</string>
@ -2545,7 +2545,7 @@
<key>hash</key>
<string>ad9aba5e2c43a37b6530a0d2de64df1c</string>
<key>url</key>
<string>http://s3-proxy.lindenlab.com/private-builds-secondlife-com/ct2/30341/257307/llphysicsextensions_tpv-1.0.542327-windows-542327.tar.bz2</string>
<string>file:///c:/cygwin/opt/firestorm/llphysicsextensions_tpv-1.0.542327-windows-542327.tar.bz2</string>
</map>
<key>name</key>
<string>windows</string>
@ -2557,7 +2557,7 @@
<key>hash</key>
<string>46689ff1442a8eccac3a7f3258308e1e</string>
<key>url</key>
<string>http://s3-proxy.lindenlab.com/private-builds-secondlife-com/ct2/30341/257307/llphysicsextensions_tpv-1.0.542327-windows64-542327.tar.bz2</string>
<string>file:///c:/cygwin/opt/firestorm/llphysicsextensions_tpv-1.0.542327-windows64-542327.tar.bz2</string>
</map>
<key>name</key>
<string>windows</string>
@ -2984,9 +2984,9 @@ Copyright (c) 2012, 2014, 2015, 2016 nghttp2 contributors</string>
<key>archive</key>
<map>
<key>hash</key>
<string>222a406ecb4071a9cc9635353afa337e</string>
<string>b20c18f66ae63c9d3b1970af8866aeb9</string>
<key>url</key>
<string>http://automated-builds-secondlife-com.s3.amazonaws.com/ct2/54977/511775/openjpeg-1.5.1.538970-windows-538970.tar.bz2</string>
<string>http://downloads.phoenixviewer.com/openjpeg-1.4.202102107-windows-202102107.tar.bz2</string>
</map>
<key>name</key>
<string>windows</string>
@ -2996,9 +2996,9 @@ Copyright (c) 2012, 2014, 2015, 2016 nghttp2 contributors</string>
<key>archive</key>
<map>
<key>hash</key>
<string>5b5c80807fa8161f3480be3d89fe9516</string>
<string>6f1e1d8796301c4e5737cb0db0f696d2</string>
<key>url</key>
<string>http://automated-builds-secondlife-com.s3.amazonaws.com/ct2/54974/511767/openjpeg-1.5.1.538970-windows64-538970.tar.bz2</string>
<string>http://downloads.phoenixviewer.com/openjpeg-1.4.202102110-windows64-202102110.tar.bz2</string>
</map>
<key>name</key>
<string>windows64</string>

View File

@ -25,7 +25,7 @@
*/
// <FS:Ansariel> Get rid of LNK4221 linker warning since we don't run the unit tests anyway
#include "linden_common.h"
//#include "linden_common.h"
// implementation is all in the header, this include dep ensures the unit test is rerun if the implementation changes.
#include "llbitpack.h"
//#include "llbitpack.h"

View File

@ -23,7 +23,8 @@
* $/LicenseInfo$
*/
#include "linden_common.h"
#include "llthreadsafequeue.h"
// <FS:Ansariel> Get rid of LNK4221 linker warning since we don't run the unit tests anyway
//#include "linden_common.h"
//#include "llthreadsafequeue.h"

View File

@ -1119,6 +1119,14 @@ void set_default_colour_weights(kdu_params *siz)
{
return;
}
// <FS:Ansariel> Fix image encoding for KDU >= 8.0.4
#if KDU_MAJOR_VERSION >= 8 && KDU_MINOR_VERSION >= 0 && KDU_PATCH_VERSION >= 4
cod = siz->access_cluster(ENC_params);
assert(cod != NULL);
#endif
// </FS:Ansariel>
float weight;
if (cod->get(Clev_weights,0,0,weight) || cod->get(Cband_weights,0,0,weight))
{

View File

@ -86,8 +86,8 @@ AtmosphericModelSettings::AtmosphericModelSettings()
, m_sunArcRadians(0.00045f)
, m_mieAnisotropy(0.8f)
{
DensityLayer rayleigh_density(0.0, 1.0, -1.0 / kRayleighScaleHeight, 0.0, 0.0);
DensityLayer mie_density(0.0, 1.0, -1.0 / kMieScaleHeight, 0.0, 0.0);
DensityLayer rayleigh_density(0.0f, 1.0f, -1.0f / (F32)kRayleighScaleHeight, 0.0f, 0.0f);
DensityLayer mie_density(0.0f, 1.0f, -1.0f / (F32)kMieScaleHeight, 0.0f, 0.0f);
m_rayleighProfile.push_back(rayleigh_density);
m_mieProfile.push_back(mie_density);

View File

@ -3132,6 +3132,7 @@ void LLFloaterView::adjustToFitScreen(LLFloater* floater, BOOL allow_partial_out
S32 delta_right = right_toolbar_rect.notEmpty() ? right_toolbar_rect.mLeft - floater_rect.mLeft : 0;
// <FS:Ansariel> Prevent floaters being dragged under main chat bar
S32 delta_bottom_chatbar = mMainChatbarRect.notEmpty() ? mMainChatbarRect.mTop - floater_rect.mTop : 0;
S32 delta_utility_bar = mUtilityBarRect.notEmpty() ? mUtilityBarRect.mTop - floater_rect.mTop : 0;
// <FS:Ansariel> Fix floater relocation for vertical toolbars; Only header guarantees that floater can be dragged!
S32 header_height = floater->getHeaderHeight();
@ -3173,6 +3174,11 @@ void LLFloaterView::adjustToFitScreen(LLFloater* floater, BOOL allow_partial_out
{
floater->translate(0, delta_bottom_chatbar);
}
else if (delta_utility_bar > 0 && (floater_rect.mLeft > mUtilityBarRect.mLeft && floater_rect.mRight < mUtilityBarRect.mRight))
{
// Utility bar on legacy skins
floater->translate(0, delta_utility_bar);
}
// </FS:Ansariel>
}
@ -3406,6 +3412,14 @@ void LLFloaterView::setMainChatbarRect(LLLayoutPanel* panel, const LLRect& chatb
panel->localRectToScreen(chatbar_rect, &mMainChatbarRect);
mMainChatbarRect.stretch(FLOATER_MIN_VISIBLE_PIXELS);
}
void LLFloaterView::setUtilityBarRect(LLLayoutPanel* panel, const LLRect& utility_bar_rect)
{
panel->localRectToScreen(utility_bar_rect, &mUtilityBarRect);
mUtilityBarRect.mLeft = mUtilityBarRect.mRight;
// Just assume right end of utility bar is always the border of the window
mUtilityBarRect.mRight = S32_MAX;
}
// </FS:Ansariel>
void LLFloater::setInstanceName(const std::string& name)

View File

@ -627,6 +627,7 @@ public:
// <FS:Ansariel> Prevent floaters being dragged under main chat bar
void setMainChatbarRect(LLLayoutPanel* panel, const LLRect& chatbar_rect);
void setUtilityBarRect(LLLayoutPanel* panel, const LLRect& utility_bar_rect);
private:
void hiddenFloaterClosed(LLFloater* floater);
@ -648,6 +649,7 @@ private:
// <FS:Ansariel> Prevent floaters being dragged under main chat bar
LLRect mMainChatbarRect;
LLRect mUtilityBarRect;
};
//

View File

@ -1936,6 +1936,7 @@ void LLPostponedNotification::lookupName(const LLUUID& id,
}
else
{
mFromId = id; // <FS:Ansariel> FIRE-29943: Item shared messaged logging to wrong IM logfile if user is offline
fetchAvatarName(id);
}
}

View File

@ -1043,7 +1043,8 @@ protected:
LLPostponedNotification()
: mParams(),
mName(),
mAvatarNameCacheConnection()
mAvatarNameCacheConnection(),
mFromId(LLUUID::null) // <FS:Ansariel> FIRE-29943: Item shared messaged logging to wrong IM logfile if user is offline
{}
virtual ~LLPostponedNotification()
@ -1064,6 +1065,7 @@ protected:
LLNotification::Params mParams;
std::string mName;
boost::signals2::connection mAvatarNameCacheConnection;
LLUUID mFromId; // <FS:Ansariel> FIRE-29943: Item shared messaged logging to wrong IM logfile if user is offline
};
// Stores only persistent notifications.

View File

@ -24679,6 +24679,7 @@ Change of this parameter will affect the layout of buttons in notification toast
<string>de</string>
<string>en</string>
<string>es</string>
<string>fr</string>
<string>it</string>
<string>ja</string>
<string>pl</string>

View File

@ -961,7 +961,18 @@
<key>Type</key>
<string>Boolean</string>
<key>Value</key>
<integer>0</integer>
<integer>1</integer>
</map>
<key>MoveLockInfoVisibleOnScreen</key>
<map>
<key>Comment</key>
<string>If movelock built-in into LSL Bridge is active, then show info on screen all the time</string>
<key>Persist</key>
<integer>1</integer>
<key>Type</key>
<string>Boolean</string>
<key>Value</key>
<integer>1</integer>
</map>
<key>BridgeIntegrationOC</key>
<map>

View File

@ -19,22 +19,20 @@
#include "llviewerprecompiledheaders.h"
#include "exogroupmutelist.h"
#include "llagent.h"
#include "lldir.h"
#include "llfile.h"
#include "llgroupactions.h"
#include "llsdserialize.h"
#include "exogroupmutelist.h"
// <FS:Ansariel> Server-side storage
#include "llimview.h"
#include "llmutelist.h"
#include "llsdserialize.h"
#include "llviewercontrol.h"
#include "llviewernetwork.h"
exoGroupMuteList::exoGroupMuteList()
: mMuted()
{
// <FS:Ansariel> Server-side storage
//loadMuteList();
#ifdef OPENSIM
if (LLGridManager::instance().isInOpenSim())
{
@ -45,8 +43,6 @@ exoGroupMuteList::exoGroupMuteList()
bool exoGroupMuteList::isMuted(const LLUUID& group) const
{
// <FS:Ansariel> Server-side storage
//return mMuted.count(group);
#ifdef OPENSIM
if (LLGridManager::instance().isInOpenSim())
{
@ -54,22 +50,27 @@ bool exoGroupMuteList::isMuted(const LLUUID& group) const
}
#endif
return (bool)LLMuteList::instance().isMuted(LLUUID::null, getMutelistString(group));
// </FS:Ansariel> Server-side storage
}
bool exoGroupMuteList::isLoaded() const
{
#ifdef OPENSIM
if (LLGridManager::instance().isInOpenSim())
{
return true;
}
#endif
return LLMuteList::instance().isLoaded();
}
void exoGroupMuteList::add(const LLUUID& group)
{
LLGroupActions::endIM(group); // Actually kill ongoing conversation
// <FS:Ansariel> Server-side storage
//if(mMuted.insert(group).second)
//{
// saveMuteList();
//}
#ifdef OPENSIM
if (LLGridManager::instance().isInOpenSim())
{
if(mMuted.insert(group).second)
if (mMuted.insert(group).second)
{
saveMuteList();
}
@ -77,20 +78,14 @@ void exoGroupMuteList::add(const LLUUID& group)
}
#endif
LLMuteList::instance().add(LLMute(LLUUID::null, getMutelistString(group), LLMute::BY_NAME));
// </FS:Ansariel> Server-side storage
}
void exoGroupMuteList::remove(const LLUUID& group)
{
// <FS:Ansariel> Server-side storage
//if(mMuted.erase(group))
//{
// saveMuteList();
//}
#ifdef OPENSIM
if (LLGridManager::instance().isInOpenSim())
{
if(mMuted.erase(group))
if (mMuted.erase(group))
{
saveMuteList();
}
@ -98,13 +93,12 @@ void exoGroupMuteList::remove(const LLUUID& group)
}
#endif
LLMuteList::instance().remove(LLMute(LLUUID::null, getMutelistString(group), LLMute::BY_NAME));
// </FS:Ansariel> Server-side storage
}
bool exoGroupMuteList::loadMuteList()
{
std::string path = getFilePath();
if(!LLFile::isfile(path))
if (!LLFile::isfile(path))
{
// We consider the absence of a mute file to be a successful load
// because it won't exist if the user's never muted a group.
@ -112,7 +106,7 @@ bool exoGroupMuteList::loadMuteList()
return true;
}
llifstream file(path.c_str());
if(!file.is_open())
if (!file.is_open())
{
LL_WARNS("GroupMute") << "Failed to open group muting list." << LL_ENDL;
return false;
@ -129,13 +123,13 @@ bool exoGroupMuteList::saveMuteList()
{
LLSD data;
// LLSD doesn't seem to expose insertion using iterators.
for(std::set<LLUUID>::iterator it = mMuted.begin(); it != mMuted.end(); ++it)
for (auto& it : mMuted)
{
data.append(*it);
data.append(it);
}
llofstream file(getFilePath().c_str());
if(!file.is_open())
if (!file.is_open())
{
LL_WARNS("GroupMute") << "Unable to save group muting list!" << LL_ENDL;
return false;
@ -150,9 +144,46 @@ std::string exoGroupMuteList::getFilePath() const
return gDirUtilp->getExpandedFilename(LL_PATH_PER_SL_ACCOUNT, "muted_groups.xml");
}
// <FS:Ansariel> Server-side storage
void exoGroupMuteList::addDeferredGroupChat(const LLUUID& group)
{
if (mDeferredGroupChatSessionIDs.find(group) == mDeferredGroupChatSessionIDs.end())
{
mDeferredGroupChatSessionIDs.insert(group);
}
}
bool exoGroupMuteList::restoreDeferredGroupChat(const LLUUID& group)
{
if (!isLoaded())
{
return false;
}
auto groupIt = mDeferredGroupChatSessionIDs.find(group);
if (groupIt != mDeferredGroupChatSessionIDs.end())
{
mDeferredGroupChatSessionIDs.erase(groupIt);
LLGroupData groupData;
if (gAgent.getGroupData(group, groupData))
{
gIMMgr->addSession(groupData.mName, IM_SESSION_INVITE, group);
uuid_vec_t ids;
LLIMModel::sendStartSession(group, group, ids, IM_SESSION_GROUP_START);
if (!gAgent.isDoNotDisturb() && gSavedSettings.getU32("PlayModeUISndNewIncomingGroupIMSession") != 0)
{
make_ui_sound("UISndNewIncomingGroupIMSession");
}
return true;
}
}
return false;
}
std::string exoGroupMuteList::getMutelistString(const LLUUID& group) const
{
return std::string("Group:" + group.asString());
}
// </FS:Ansariel> Server-side storage

View File

@ -28,17 +28,20 @@ class exoGroupMuteList : public LLSingleton<exoGroupMuteList>
public:
bool isMuted(const LLUUID &group) const;
bool isLoaded() const;
void add(const LLUUID &group);
void remove(const LLUUID &group);
bool loadMuteList();
void addDeferredGroupChat(const LLUUID& group);
bool restoreDeferredGroupChat(const LLUUID& group);
private:
bool saveMuteList();
std::string getFilePath() const;
std::set<LLUUID> mMuted;
uuid_set_t mMuted;
uuid_set_t mDeferredGroupChatSessionIDs;
// <FS:Ansariel> Server-side storage
std::string getMutelistString(const LLUUID& group) const;
};

View File

@ -362,94 +362,94 @@ public:
void onAvatarIconContextMenuItemClicked(const LLSD& userdata)
{
std::string level = userdata.asString();
std::string param = userdata.asString();
if (level == "profile")
if (param == "profile")
{
LLAvatarActions::showProfile(getAvatarId());
}
else if (level == "im")
else if (param == "im")
{
LLAvatarActions::startIM(getAvatarId());
}
else if (level == "teleport_to")
else if (param == "teleport_to")
{
LLAvatarActions::teleportTo(getAvatarId());
}
else if (level == "teleport")
else if (param == "teleport")
{
LLAvatarActions::offerTeleport(getAvatarId());
}
else if (level == "request_teleport")
else if (param == "request_teleport")
{
LLAvatarActions::teleportRequest(getAvatarId());
}
else if (level == "voice_call")
else if (param == "voice_call")
{
LLAvatarActions::startCall(getAvatarId());
}
else if (level == "chat_history")
else if (param == "chat_history")
{
LLAvatarActions::viewChatHistory(getAvatarId());
}
else if (level == "add")
else if (param == "add")
{
LLAvatarActions::requestFriendshipDialog(getAvatarId(), mFrom);
}
else if (level == "add_set")
else if (param == "add_set")
{
LLAvatarActions::addToContactSet(getAvatarId());
}
else if (level == "remove")
else if (param == "remove")
{
LLAvatarActions::removeFriendDialog(getAvatarId());
}
else if (level == "invite_to_group")
else if (param == "invite_to_group")
{
LLAvatarActions::inviteToGroup(getAvatarId());
}
else if (level == "zoom_in")
else if (param == "zoom_in")
{
handle_zoom_to_object(getAvatarId());
}
else if (level == "map")
else if (param == "map")
{
LLAvatarActions::showOnMap(getAvatarId());
}
else if (level == "track")
else if (param == "track")
{
LLAvatarActions::track(getAvatarId());
}
else if (level == "share")
else if (param == "share")
{
LLAvatarActions::share(getAvatarId());
}
else if (level == "pay")
else if (param == "pay")
{
LLAvatarActions::pay(getAvatarId());
}
else if (level == "copy_name")
else if (param == "copy_name")
{
LLUrlAction::copyLabelToClipboard(LLSLURL("agent", getAvatarId(), "inspect").getSLURLString());
}
else if (level == "copy_url")
else if (param == "copy_url")
{
LLUrlAction::copyURLToClipboard(LLSLURL("agent", getAvatarId(), "about").getSLURLString());
}
else if(level == "block_unblock")
else if (param == "block_unblock")
{
LLAvatarActions::toggleMute(getAvatarId(), LLMute::flagVoiceChat);
}
else if(level == "mute_unmute")
else if (param == "mute_unmute")
{
LLAvatarActions::toggleMute(getAvatarId(), LLMute::flagTextChat);
}
else if(level == "toggle_allow_text_chat")
else if (param == "toggle_allow_text_chat")
{
LLIMSpeakerMgr* speaker_mgr = LLIMModel::getInstance()->getSpeakerManager(mSessionID);
speaker_mgr->toggleAllowTextChat(getAvatarId());
}
else if(level == "group_mute")
else if (param == "group_mute")
{
LLIMSpeakerMgr* speaker_mgr = LLIMModel::getInstance()->getSpeakerManager(mSessionID);
if (speaker_mgr)
@ -457,7 +457,7 @@ public:
speaker_mgr->moderateVoiceParticipant(getAvatarId(), false);
}
}
else if(level == "group_unmute")
else if (param == "group_unmute")
{
LLIMSpeakerMgr* speaker_mgr = LLIMModel::getInstance()->getSpeakerManager(mSessionID);
if (speaker_mgr)
@ -465,7 +465,7 @@ public:
speaker_mgr->moderateVoiceParticipant(getAvatarId(), true);
}
}
else if(level == "ban_member")
else if (param == "ban_member")
{
banGroupMember(getAvatarId());
}
@ -473,17 +473,17 @@ public:
bool onAvatarIconContextMenuItemChecked(const LLSD& userdata)
{
std::string level = userdata.asString();
std::string param = userdata.asString();
if (level == "is_blocked")
if (param == "is_blocked")
{
return LLMuteList::getInstance()->isMuted(getAvatarId(), LLMute::flagVoiceChat);
}
if (level == "is_muted")
if (param == "is_muted")
{
return LLMuteList::getInstance()->isMuted(getAvatarId(), LLMute::flagTextChat);
}
else if (level == "is_allowed_text_chat")
else if (param == "is_allowed_text_chat")
{
if (gAgent.isInGroup(mSessionID))
{
@ -502,13 +502,13 @@ public:
bool onAvatarIconContextMenuItemEnabled(const LLSD& userdata)
{
std::string level = userdata.asString();
std::string param = userdata.asString();
if (level == "can_allow_text_chat" || level == "can_mute" || level == "can_unmute")
if (param == "can_allow_text_chat" || param == "can_mute" || param == "can_unmute")
{
return canModerate(userdata);
}
else if (level == "can_ban_member")
else if (param == "can_ban_member")
{
return canBanGroupMember(getAvatarId());
}
@ -517,9 +517,9 @@ public:
bool onAvatarIconContextMenuItemVisible(const LLSD& userdata)
{
std::string level = userdata.asString();
std::string param = userdata.asString();
if (level == "show_mute")
if (param == "show_mute")
{
LLSpeakerMgr * speaker_mgr = LLIMModel::getInstance()->getSpeakerManager(mSessionID);
if (speaker_mgr)
@ -532,7 +532,7 @@ public:
}
return false;
}
else if (level == "show_unmute")
else if (param == "show_unmute")
{
LLSpeakerMgr * speaker_mgr = LLIMModel::getInstance()->getSpeakerManager(mSessionID);
if (speaker_mgr)
@ -782,12 +782,6 @@ public:
// Set up the icon.
LLAvatarIconCtrl* icon = getChild<LLAvatarIconCtrl>("avatar_icon");
// Hacky preference to hide avatar icons for people who don't like them by overdrawing them. Will change to disable soon. -AO
if (!gSavedSettings.getBOOL("ShowChatMiniIcons"))
{
icon->setColor(LLUIColorTable::instance().getColor("Transparent"));
}
if(mSourceType != CHAT_SOURCE_AGENT || mAvatarID.isNull())
icon->setDrawTooltip(false);

View File

@ -137,6 +137,10 @@ bool FSChatOptionsMenu::onMenuItemVisible(const LLSD& userdata, LLUICtrl* source
{
return (dynamic_cast<FSFloaterIM*>(source) != NULL);
}
else if (option == "show_mini_icons")
{
return !gSavedSettings.getBOOL("PlainTextChatHistory");
}
return false;
}

View File

@ -38,6 +38,7 @@
#include "llavatarappearance.h"
#include "llinventoryfunctions.h"
#include "llmaniptranslate.h"
#include "llnotificationsutil.h"
#include "llpreviewscript.h"
#include "llselectmgr.h"
#include "llsdutil.h"
@ -272,6 +273,7 @@ bool FSLSLBridge::lslToViewer(const std::string& message, const LLUUID& fromID,
{
updateBoolSettingValue("UseMoveLock");
report_to_nearby_chat(LLTrans::getString("MovelockEnabling"));
make_ui_sound("UISndMovelockToggle");
}
// </FS:PP>
@ -284,6 +286,7 @@ bool FSLSLBridge::lslToViewer(const std::string& message, const LLUUID& fromID,
// Not called right after logging in, and only if movelock was enabled during transition
else if (gSavedPerAccountSettings.getBOOL("UseMoveLock"))
{
make_ui_sound("UISndMovelockToggle");
if (!gSavedSettings.getBOOL("RelockMoveLockAfterRegionChange"))
{
// Don't call for update here and only change setting to 'false', getCommitSignal()->connect->boost in llviewercontrol.cpp will send a message to Bridge anyway
@ -450,11 +453,11 @@ bool FSLSLBridge::lslToViewer(const std::string& message, const LLUUID& fromID,
{
if (message.substr(valuepos + FS_STATE_ATTRIBUTE.size(), 1) == "1")
{
report_to_nearby_chat(LLTrans::getString("MovelockEnabled"));
LLNotificationsUtil::add("MovelockEnabled", LLSD());
}
else if (message.substr(valuepos + FS_STATE_ATTRIBUTE.size(), 1) == "0")
{
report_to_nearby_chat(LLTrans::getString("MovelockDisabled"));
LLNotificationsUtil::add("MovelockDisabled", LLSD());
}
else
{

View File

@ -55,7 +55,7 @@ RequestExecutionLevel admin # For when we write to Program Files
##!include "%%SOURCE%%\installers\windows\lang_da.nsi"
!include "%%SOURCE%%\installers\windows\lang_de.nsi"
!include "%%SOURCE%%\installers\windows\lang_es.nsi"
##!include "%%SOURCE%%\installers\windows\lang_fr.nsi"
!include "%%SOURCE%%\installers\windows\lang_fr.nsi"
!include "%%SOURCE%%\installers\windows\lang_ja.nsi"
!include "%%SOURCE%%\installers\windows\lang_it.nsi"
!include "%%SOURCE%%\installers\windows\lang_pl.nsi" ;<FS:Ansariel> Polish is supported
@ -69,7 +69,7 @@ RequestExecutionLevel admin # For when we write to Program Files
LangString LanguageCode ${LANG_GERMAN} "de"
LangString LanguageCode ${LANG_ENGLISH} "en"
LangString LanguageCode ${LANG_SPANISH} "es"
##LangString LanguageCode ${LANG_FRENCH} "fr"
LangString LanguageCode ${LANG_FRENCH} "fr"
LangString LanguageCode ${LANG_JAPANESE} "ja"
LangString LanguageCode ${LANG_ITALIAN} "it"
LangString LanguageCode ${LANG_POLISH} "pl"
@ -403,10 +403,10 @@ CreateShortCut "$SMPROGRAMS\$INSTSHORTCUT\$INSTSHORTCUT.lnk" \
WriteINIStr "$SMPROGRAMS\$INSTSHORTCUT\SL Create Account.url" \
"InternetShortcut" "URL" \
"http://join.secondlife.com/"
"https://join.secondlife.com/"
WriteINIStr "$SMPROGRAMS\$INSTSHORTCUT\SL Your Account.url" \
"InternetShortcut" "URL" \
"http://www.secondlife.com/account/"
"https://www.secondlife.com/account/"
WriteINIStr "$SMPROGRAMS\$INSTSHORTCUT\LSL Scripting Language Help.url" \
"InternetShortcut" "URL" \
"http://wiki.secondlife.com/wiki/LSL_Portal"
@ -436,9 +436,9 @@ WriteRegStr SHELL_CONTEXT "${INSTNAME_KEY}" "Version" "${VERSION_LONG}"
WriteRegStr SHELL_CONTEXT "${INSTNAME_KEY}" "Shortcut" "$INSTSHORTCUT"
WriteRegStr SHELL_CONTEXT "${INSTNAME_KEY}" "Exe" "$VIEWER_EXE"
WriteRegStr SHELL_CONTEXT "${MSUNINSTALL_KEY}" "Publisher" "The Phoenix Firestorm Project, Inc."
WriteRegStr SHELL_CONTEXT "${MSUNINSTALL_KEY}" "URLInfoAbout" "http://www.firestormviewer.org"
WriteRegStr SHELL_CONTEXT "${MSUNINSTALL_KEY}" "URLUpdateInfo" "http://www.firestormviewer.org/downloads"
WriteRegStr SHELL_CONTEXT "${MSUNINSTALL_KEY}" "HelpLink" "http://www.firestormviewer.org/support"
WriteRegStr SHELL_CONTEXT "${MSUNINSTALL_KEY}" "URLInfoAbout" "https://www.firestormviewer.org"
WriteRegStr SHELL_CONTEXT "${MSUNINSTALL_KEY}" "URLUpdateInfo" "https://www.firestormviewer.org/downloads"
WriteRegStr SHELL_CONTEXT "${MSUNINSTALL_KEY}" "HelpLink" "https://www.firestormviewer.org/support"
WriteRegStr SHELL_CONTEXT "${MSUNINSTALL_KEY}" "DisplayName" "$INSTNAME"
WriteRegStr SHELL_CONTEXT "${MSUNINSTALL_KEY}" "UninstallString" '"$INSTDIR\uninst.exe"'
WriteRegStr SHELL_CONTEXT "${MSUNINSTALL_KEY}" "DisplayVersion" "${VERSION_LONG}"
@ -447,7 +447,7 @@ WriteRegStr SHELL_CONTEXT "${MSUNINSTALL_KEY}" "DisplayVersion" "${VERSION_LONG}
${If} ${IS64BIT} == "1"
WriteRegDWORD SHELL_CONTEXT "${MSUNINSTALL_KEY}" "EstimatedSize" "0x00064000" # 400 MB
${Else}
WriteRegDWORD SHELL_CONTEXT "${MSUNINSTALL_KEY}" "EstimatedSize" "0x00057800" # 350 MB
WriteRegDWORD SHELL_CONTEXT "${MSUNINSTALL_KEY}" "EstimatedSize" "0x00061800" # 390 MB
${EndIf}
# from FS:Ansariel
@ -458,6 +458,9 @@ WriteRegDWORD SHELL_CONTEXT "${MSNTCURRVER_KEY}\Image File Execution Options\$VI
WriteRegDWORD SHELL_CONTEXT "${MSUNINSTALL_KEY}" "NoModify" 1
WriteRegDWORD SHELL_CONTEXT "${MSUNINSTALL_KEY}" "NoRepair" 1
# <FS:Ansariel> Ask before creating protocol registry entries
MessageBox MB_YESNO|MB_ICONQUESTION $(CreateUrlRegistryEntries) IDNO skip_create_url_registry_entries
# Write URL registry info
WriteRegStr HKEY_CLASSES_ROOT "${URLNAME}" "(default)" "URL:Second Life"
WriteRegStr HKEY_CLASSES_ROOT "${URLNAME}" "URL Protocol" ""
@ -473,9 +476,6 @@ WriteRegStr HKEY_CLASSES_ROOT "x-grid-location-info\DefaultIcon" "" '"$INSTDIR\$
# URL param must be last item passed to viewer, it ignores subsequent params to avoid parameter injection attacks.
WriteRegExpandStr HKEY_CLASSES_ROOT "x-grid-location-info\shell\open\command" "" '"$INSTDIR\$VIEWER_EXE" -url "%1"'
WriteRegStr HKEY_CLASSES_ROOT "Applications\$INSTEXE" "IsHostApp" ""
##WriteRegStr HKEY_CLASSES_ROOT "Applications\${VIEWER_EXE}" "NoStartPage" ""
# <FS:CR> Register hop:// protocol registry info
WriteRegStr HKEY_CLASSES_ROOT "hop" "(default)" "URL:Second Life"
WriteRegStr HKEY_CLASSES_ROOT "hop" "URL Protocol" ""
@ -483,6 +483,12 @@ WriteRegStr HKEY_CLASSES_ROOT "hop\DefaultIcon" "" '"$INSTDIR\$VIEWER_EXE"'
WriteRegExpandStr HKEY_CLASSES_ROOT "hop\shell\open\command" "" '"$INSTDIR\$VIEWER_EXE" -url "%1"'
# </FS:CR>
# <FS:Ansariel> Ask before creating protocol registry entries
skip_create_url_registry_entries:
WriteRegStr HKEY_CLASSES_ROOT "Applications\$INSTEXE" "IsHostApp" ""
##WriteRegStr HKEY_CLASSES_ROOT "Applications\${VIEWER_EXE}" "NoStartPage" ""
# Write out uninstaller
WriteUninstaller "$INSTDIR\uninst.exe"
@ -800,8 +806,10 @@ NOFOLDER:
MessageBox MB_YESNO $(DeleteRegistryKeysMB) IDYES DeleteKeys IDNO NoDelete
DeleteKeys:
DeleteRegKey SHELL_CONTEXT "SOFTWARE\Classes\hop" # <FS:Ansariel> Unregister hop:// protocol registry info
DeleteRegKey SHELL_CONTEXT "SOFTWARE\Classes\x-grid-location-info"
DeleteRegKey SHELL_CONTEXT "SOFTWARE\Classes\secondlife"
DeleteRegKey HKEY_CLASSES_ROOT "hop" # <FS:Ansariel> Unregister hop:// protocol registry info
DeleteRegKey HKEY_CLASSES_ROOT "x-grid-location-info"
DeleteRegKey HKEY_CLASSES_ROOT "secondlife"

View File

@ -1640,7 +1640,7 @@ void LLAgent::setAFK()
// <FS:AO> Gsit on away, antigrief protection
if (gSavedSettings.getBOOL("AvatarSitOnAway"))
{
if (!gAgentAvatarp->isSitting() && !gRlvHandler.hasBehaviour(RLV_BHVR_SIT))
if (isAgentAvatarValid() && !gAgentAvatarp->isSitting() && !gRlvHandler.hasBehaviour(RLV_BHVR_SIT))
{
gAgent.sitDown();
gAgent.setIsAfkSitting(true);
@ -5535,6 +5535,7 @@ void LLAgent::renderAutoPilotTarget()
// <FS> Phantom mode
void LLAgent::togglePhantom()
{
make_ui_sound("UISndMovelockToggle");
mPhantom = !mPhantom;
if (mPhantom)
{

View File

@ -578,7 +578,10 @@ void LLFloaterCamera::onClickCameraItem(const LLSD& param)
LLFloaterCamera* camera_floater = LLFloaterCamera::findInstance();
if (camera_floater)
{
camera_floater->switchMode(CAMERA_CTRL_MODE_FREE_CAMERA);
// <FS:Ansariel> FIRE-29950: Re-add weird legacy object view camera toggle
//camera_floater->switchMode(CAMERA_CTRL_MODE_FREE_CAMERA);
camera_floater->mCurrMode == CAMERA_CTRL_MODE_FREE_CAMERA ? camera_floater->switchMode(CAMERA_CTRL_MODE_PAN) : camera_floater->switchMode(CAMERA_CTRL_MODE_FREE_CAMERA);
// </FS:Ansariel>
camera_floater->updateItemsSelection();
camera_floater->fromFreeToPresets();
}
@ -587,7 +590,10 @@ void LLFloaterCamera::onClickCameraItem(const LLSD& param)
camera_floater = LLFloaterCamera::findPhototoolsInstance();
if (camera_floater)
{
camera_floater->switchMode(CAMERA_CTRL_MODE_FREE_CAMERA);
// <FS:Ansariel> FIRE-29950: Re-add weird legacy object view camera toggle
//camera_floater->switchMode(CAMERA_CTRL_MODE_FREE_CAMERA);
camera_floater->mCurrMode == CAMERA_CTRL_MODE_FREE_CAMERA ? camera_floater->switchMode(CAMERA_CTRL_MODE_PAN) : camera_floater->switchMode(CAMERA_CTRL_MODE_FREE_CAMERA);
// </FS:Ansariel>
camera_floater->updateItemsSelection();
camera_floater->fromFreeToPresets();
}
@ -726,7 +732,14 @@ void LLFloaterCamera::onSavePreset()
LLFloaterReg::hideInstance("delete_pref_preset", PRESETS_CAMERA);
LLFloaterReg::hideInstance("load_pref_preset", PRESETS_CAMERA);
LLFloaterReg::showInstance("save_camera_preset");
// <FS:Ansariel> Preselect correct radio button on save camera presets floater
//LLFloaterReg::showInstance("save_camera_preset");
LLSD key;
std::string current_preset = gSavedSettings.getString("PresetCameraActive");
bool is_custom_preset = current_preset != "" && !LLPresetsManager::getInstance()->isDefaultCameraPreset(current_preset);
key["index"] = is_custom_preset ? 1 : 0;
LLFloaterReg::showInstance("save_camera_preset", key);
// </FS:Ansariel>
}
void LLFloaterCamera::onCustomPresetSelected()

View File

@ -54,6 +54,7 @@ BOOL LLFloaterSaveCameraPreset::postBuild()
mNameEditor = getChild<LLLineEditor>("preset_txt_editor");
mNameEditor->setKeystrokeCallback(boost::bind(&LLFloaterSaveCameraPreset::onPresetNameEdited, this), NULL);
mNameEditor->setCommitCallback(boost::bind(&LLFloaterSaveCameraPreset::onBtnSave, this)); // <FS:Ansariel> Save on pressing enter
mSaveButton = getChild<LLButton>("save");
mSaveButton->setCommitCallback(boost::bind(&LLFloaterSaveCameraPreset::onBtnSave, this));
@ -99,6 +100,13 @@ void LLFloaterSaveCameraPreset::onBtnSave()
bool is_saving_new = mSaveRadioGroup->getSelectedIndex() == 0;
std::string name = is_saving_new ? mNameEditor->getText() : mPresetCombo->getSimple();
// <FS:Ansariel> Save on pressing enter
if (name.empty())
{
return;
}
// </FS:Ansariel>
if ((name == LLTrans::getString(PRESETS_DEFAULT)) || (name == PRESETS_DEFAULT))
{
LLNotificationsUtil::add("DefaultPresetNotSaved");

View File

@ -51,7 +51,10 @@ BOOL LLFloaterSavePrefPreset::postBuild()
}
getChild<LLComboBox>("preset_combo")->setTextEntryCallback(boost::bind(&LLFloaterSavePrefPreset::onPresetNameEdited, this));
getChild<LLComboBox>("preset_combo")->setCommitCallback(boost::bind(&LLFloaterSavePrefPreset::onPresetNameEdited, this));
// <FS:Ansariel> Save on pressing enter
//getChild<LLComboBox>("preset_combo")->setCommitCallback(boost::bind(&LLFloaterSavePrefPreset::onPresetNameEdited, this));
getChild<LLComboBox>("preset_combo")->setCommitCallback(boost::bind(&LLFloaterSavePrefPreset::onBtnSave, this));
// </FS:Ansariel>
getChild<LLButton>("save")->setCommitCallback(boost::bind(&LLFloaterSavePrefPreset::onBtnSave, this));
getChild<LLButton>("cancel")->setCommitCallback(boost::bind(&LLFloaterSavePrefPreset::onBtnCancel, this));
@ -86,6 +89,13 @@ void LLFloaterSavePrefPreset::onBtnSave()
{
std::string name = mPresetCombo->getSimple();
// <FS:Ansariel> Save on pressing enter
if (name.empty())
{
return;
}
// </FS:Ansariel>
std::string upper_name(name);
LLStringUtil::toUpper(upper_name);

View File

@ -25,6 +25,7 @@
#include "llinventorymodel.h"
#include "llinventorypanel.h"
#include "llscrolllistctrl.h"
#include "lltrans.h"
#include "llviewerassettype.h"
#include "llviewerinventory.h"
#include "llviewerregion.h"
@ -159,13 +160,30 @@ void LLScriptRecoverQueue::recoverIfNeeded()
{
// Build a friendly name for the file
std::string strName = gDirUtilp->getBaseFileName(strFilename, true);
std::string agent_id_str = gAgentID.asString();
LLStringUtil::replaceString(agent_id_str, "-", "");
std::string::size_type agent_delim_offset = strName.find_first_of("_");
if (agent_delim_offset != std::string::npos && agent_delim_offset != 0)
{
std::string file_agent_id_str = strName.substr(0, agent_delim_offset);
if (file_agent_id_str != agent_id_str)
{
continue;
}
else
{
strName.erase(0, agent_delim_offset + 1);
}
}
std::string::size_type offset = strName.find_last_of("-");
if ( (std::string::npos != offset) && (offset != 0) && (offset == strName.length() - 9))
strName.erase(strName.length() - 9);
LLStringUtil::trim(strName);
if (0 == strName.length())
strName = "(Unknown script)";
strName = LLTrans::getString("unknown_script");
sdFiles.append(LLSD().with("path", strTempPath + strFilename).with("name", strName));
}

View File

@ -69,6 +69,7 @@
// [/RLVa:KB]
// Firestorm includes
#include "exogroupmutelist.h"
#include "fscommon.h"
#include "fsdata.h"
#include "fskeywords.h"
@ -182,7 +183,22 @@ protected:
void modifyNotificationParams()
{
LLSD payload = mParams.payload;
payload["SESSION_NAME"] = mName;
// <FS:Ansariel> FIRE-29943: Item shared messaged logging to wrong IM logfile if user is offline
//payload["SESSION_NAME"] = mName;
LLAvatarName av_name;
// This should work since modifyNotificationParams() is invoked after we already
// retrieved the avatar name
if (mFromId.notNull() && LLAvatarNameCache::instance().getName(mFromId, &av_name))
{
// LLHandlerUtil::logToIM() will transform this into the correct filename
payload["SESSION_NAME"] = av_name.getLegacyName();
}
else
{
payload["SESSION_NAME"] = mName;
}
// </FS:Ansariel>
mParams.payload = payload;
}
};
@ -1621,8 +1637,8 @@ void LLIMProcessing::processNewMessage(LLUUID from_id,
// should happen after you get an "invitation"
// [SL:KB] - Patch: Chat-GroupSnooze | Checked: 2012-06-16 (Catznip-3.3)
//if ( !gIMMgr->hasSession(session_id) )
if ( (!gIMMgr->hasSession(session_id)) &&
( (!gAgent.isInGroup(session_id)) || (!gIMMgr->checkSnoozeExpiration(session_id)) || LLAvatarActions::isBlocked(from_id) || (!gIMMgr->restoreSnoozedSession(session_id)) ) )
if (!gIMMgr->hasSession(session_id) &&
(!gAgent.isInGroup(session_id) || LLAvatarActions::isBlocked(from_id) || (!exoGroupMuteList::instance().restoreDeferredGroupChat(session_id) && (!gIMMgr->checkSnoozeExpiration(session_id) || !gIMMgr->restoreSnoozedSession(session_id)) )))
// [/SL:KB]
{
return;

View File

@ -2991,9 +2991,9 @@ void LLIMMgr::addMessage(
static LLCachedControl<U32> PlayModeUISndNewIncomingIMSession(gSavedSettings, "PlayModeUISndNewIncomingIMSession");
static LLCachedControl<U32> PlayModeUISndNewIncomingGroupIMSession(gSavedSettings, "PlayModeUISndNewIncomingGroupIMSession");
static LLCachedControl<U32> PlayModeUISndNewIncomingConfIMSession(gSavedSettings, "PlayModeUISndNewIncomingConfIMSession");
BOOL do_not_disturb = gAgent.isDoNotDisturb();
BOOL is_group_chat = FALSE;
if (!new_session && dialog != IM_NOTHING_SPECIAL)
bool do_not_disturb = gAgent.isDoNotDisturb();
bool is_group_chat = false;
if (dialog != IM_NOTHING_SPECIAL)
{
is_group_chat = gAgent.isInGroup(new_session_id);
}
@ -3010,6 +3010,13 @@ void LLIMMgr::addMessage(
// <FS:Ansariel> Clear muted group chat early to prevent contacts floater
// (re-)gaining focus; the server already knows the correct
// session id, so we can leave it!
if (is_group_chat && !exoGroupMuteList::instance().isLoaded())
{
LL_INFOS() << "Received group chat from " << fixed_session_name << " (" << new_session_id.asString() << ") before must list has been loaded - skipping message" << LL_ENDL;
exoGroupMuteList::instance().addDeferredGroupChat(new_session_id);
return;
}
if (exoGroupMuteList::instance().isMuted(new_session_id))
{
LL_INFOS() << "Muting group chat from " << new_session_id.asString() << ": " << fixed_session_name << LL_ENDL;
@ -3033,6 +3040,7 @@ void LLIMMgr::addMessage(
gAgent.isInGroup(new_session_id) && LLMuteList::getInstance()->isMuted(other_participant_id) && !from_linden)
{
LL_INFOS() << "Ignoring group chat initiated by muted resident." << LL_ENDL;
exoGroupMuteList::instance().addDeferredGroupChat(new_session_id);
return;
}
// </FS:Ansariel>
@ -3084,11 +3092,6 @@ void LLIMMgr::addMessage(
// //Play sound for new conversations
// if (!gAgent.isDoNotDisturb() && (gSavedSettings.getBOOL("PlaySoundNewConversation") == TRUE))
if (dialog != IM_NOTHING_SPECIAL)
{
is_group_chat = gAgent.isInGroup(new_session_id);
}
// <FS:PP> Option to automatically ignore and leave all conference (ad-hoc) chats
static LLCachedControl<bool> ignoreAdHocSessions(gSavedSettings, "FSIgnoreAdHocSessions");
if (dialog != IM_NOTHING_SPECIAL && !is_group_chat && ignoreAdHocSessions && !from_linden)

View File

@ -204,5 +204,6 @@ extern const std::string LL_IM_TEXT; //("message");
extern const std::string LL_IM_FROM; //("from");
extern const std::string LL_IM_FROM_ID; //("from_id");
extern const std::string LL_TRANSCRIPT_FILE_EXTENSION; //("txt");
extern const std::string GROUP_CHAT_SUFFIX; // <FS:Ansariel> FIRE-29911: Group notices logging to wrong file
#endif

View File

@ -114,14 +114,17 @@ void LLHandlerUtil::logToIM(const EInstantMessage& session_type,
// to use it for a history log filename.
// <FS:Ansariel> [Legacy IM logfile names]
//std::string user_name = LLCacheName::buildUsername(session_name);
std::string user_name;
if (gSavedSettings.getBOOL("UseLegacyIMLogNames"))
std::string user_name(session_name);
if (!gAgent.isInGroup(session_owner_id))
{
user_name = session_name.substr(0, session_name.find(" Resident"));;
}
else
{
user_name = LLCacheName::buildUsername(session_name);
if (gSavedSettings.getBOOL("UseLegacyIMLogNames"))
{
user_name = session_name.substr(0, session_name.find(" Resident"));;
}
else
{
user_name = LLCacheName::buildUsername(session_name);
}
}
// </FS:Ansariel> [Legacy IM logfile names]
LLIMModel::instance().logToFile(user_name, from, from_id, message);
@ -236,6 +239,8 @@ void LLHandlerUtil::logGroupNoticeToIMGroup(
}
// <FS:KC> Better group notices to IM log
//logToIM(IM_SESSION_GROUP_START, group_name, sender_name, payload["message"],
// payload["group_id"], sender_id);
if (gSavedSettings.getBOOL("FSBetterGroupNoticesToIMLog"))
{
std::string msg = llformat(
@ -247,14 +252,14 @@ void LLHandlerUtil::logGroupNoticeToIMGroup(
payload["message"].asString().c_str()
);
logToIM(IM_SESSION_GROUP_START, group_name, sender_name, msg, payload["group_id"], sender_id);
logToIM(IM_SESSION_GROUP_START, group_name + GROUP_CHAT_SUFFIX, sender_name, msg, payload["group_id"], sender_id);
}
else
{
logToIM(IM_SESSION_GROUP_START, group_name + GROUP_CHAT_SUFFIX, sender_name, payload["message"],
payload["group_id"], sender_id);
}
// </FS:KC> Better group notices to IM log
logToIM(IM_SESSION_GROUP_START, group_name, sender_name, payload["message"],
payload["group_id"], sender_id);
}// <FS:KC> Better group notices to IM log
}
// static

View File

@ -2022,6 +2022,10 @@ std::string LLScriptEdContainer::getBackupFileName() const
// NOTE: this function is not guaranteed to return the same filename every time (i.e. the item name may have changed)
std::string strFile = LLFile::tmpdir();
std::string agent_id_str = gAgentID.asString();
LLStringUtil::replaceString(agent_id_str, "-", "");
strFile += agent_id_str + "_";
// Find the inventory item for this script
const LLInventoryItem* pItem = getItem();
if (pItem)

View File

@ -518,6 +518,15 @@ const void upload_bulk(const std::vector<std::string>& filenames, LLFilePicker::
LLSD args;
args["COST"] = expected_upload_cost;
args["COUNT"] = expected_upload_count;
// <FS:Ansariel> Check balance before trying to upload
S32 current_balance = gStatusBar->getBalance();
if (expected_upload_cost > current_balance)
{
args["BALANCE"] = current_balance;
LLNotificationsUtil::add("NotEnoughMoneyForBulkUpload", args);
return;
}
// </FS:Ansariel>
LLNotificationsUtil::add("BulkUploadCostConfirmation", args, LLSD(), boost::bind(do_bulk_upload, filtered_filenames, _1, _2));
if (filtered_filenames.size() > expected_upload_count)

View File

@ -1110,9 +1110,15 @@ void LLOcclusionCullingGroup::checkOcclusion()
static LLCachedControl<bool> wait_for_query(gSavedSettings, "RenderSynchronousOcclusion", true);
if (wait_for_query && mOcclusionIssued[LLViewerCamera::sCurCameraID] < gFrameCount)
// <FS:Ansariel> Restore occlusion query performance optimization - except for Intel GPUs
//if (wait_for_query && mOcclusionIssued[LLViewerCamera::sCurCameraID] < gFrameCount)
U32 target_read_frame = !gGLManager.mIsIntel ? ((gFrameCount > 2) ? (gFrameCount - 2) : 0) : gFrameCount;
if (wait_for_query && mOcclusionIssued[LLViewerCamera::sCurCameraID] < target_read_frame)
// </FS:Ansariel>
{ //query was issued last frame, wait until it's available
S32 max_loop = 1024;
// <FS:Ansariel> Restore occlusion query performance optimization - except for Intel GPUs
//S32 max_loop = 1024;
S32 max_loop = !gGLManager.mIsIntel ? 64 : 1024;
LL_RECORD_BLOCK_TIME(FTM_OCCLUSION_WAIT);
while (!available && max_loop-- > 0)
{

View File

@ -389,6 +389,7 @@ public:
static const std::string beacon_sun = LLTrans::getString("BeaconSun");
static const std::string beacon_moon = LLTrans::getString("BeaconMoon");
static const std::string particle_hiding = LLTrans::getString("ParticleHiding");
static const std::string movelock_enabled = LLTrans::getString("MovelockEnabled"); // <FS:PP> FIRE-29880: Movelock
// Draw the statistics in a light gray
// and in a thin font
@ -794,6 +795,16 @@ public:
ypos += y_inc;
}
// <FS:PP> FIRE-29880: Movelock
static LLCachedControl<bool> fsRenderMovelockState(gSavedPerAccountSettings, "UseMoveLock");
static LLCachedControl<bool> fsRenderMovelockText(gSavedPerAccountSettings, "MoveLockInfoVisibleOnScreen");
if (fsRenderMovelockState && fsRenderMovelockText)
{
addText(xpos, ypos, movelock_enabled);
ypos += y_inc;
}
// </FS:PP>
// <FS:LO> pull the text saying if particles are hidden out from beacons
if (LLPipeline::toggleRenderTypeControlNegated(LLPipeline::RENDER_TYPE_PARTICLES))
{
@ -2186,6 +2197,14 @@ void LLViewerWindow::initBase()
chatbar_panel->setReshapePanelCallback(boost::bind(&LLFloaterView::setMainChatbarRect, gFloaterView, _1, _2));
gFloaterView->setMainChatbarRect(chatbar_panel, chatbar_panel->getRect());
}
// Utility bar on legacy skins
LLLayoutPanel* legacy_chat_panel = LLUI::getInstance()->getRootView()->findChild<LLLayoutPanel>("chat_panel");
if (legacy_chat_panel)
{
legacy_chat_panel->setReshapePanelCallback(boost::bind(&LLFloaterView::setUtilityBarRect, gFloaterView, _1, _2));
gFloaterView->setUtilityBarRect(legacy_chat_panel, legacy_chat_panel->getRect());
}
// </FS:Ansariel>
// optionally forward warnings to chat console/chat floater

View File

@ -50,8 +50,9 @@
</panel_camera_item>
</panel>
<combo_box name="preset_combo">
<combo_box.item label="Voreinstellung verwenden" name="Use preset"/>
<combo_box.item label="Voreinstell. verw." name="Use preset"/>
</combo_box>
<button name="gear_btn" tool_tip="Kamera-Voreinstellungen"/>
<button label="Kamera-Position..." name="camera_position_btn"/>
<button label="Position..." name="camera_position_btn"/>
<button label="Speichern" name="save_btn"/>
</floater>

View File

@ -223,7 +223,7 @@
mouse_opaque="true"
name="preset_combo"
top_pad="7"
width="122">
width="116">
<combo_list
mouse_wheel_opaque="true"/>
<combo_box.item
@ -232,46 +232,42 @@
value="default" />
</combo_box>
<button
height="16"
width="16"
height="23"
width="24"
layout="topleft"
mouse_opaque="true"
name="gear_btn"
tool_tip="Camera Presets"
top_delta="3"
top_delta="0"
left_pad="3"
image_selected="Icon_Gear"
image_pressed="Icon_Gear"
image_unselected="Icon_Gear"
image_overlay="Icon_Gear"
is_toggle="true">
<button.commit_callback
function="CameraPresets.ShowPresetsList"/>
</button>
<!--
<button
follows="top|left"
height="23"
label="Save as preset..."
label="Position..."
layout="topleft"
left="0"
name="save_preset_btn"
top_pad="7"
width="143">
<button.commit_callback
function="CameraPresets.Save"/>
</button>
-->
<button
follows="top|left"
height="23"
label="Camera Position..."
layout="topleft"
left_delta="-125"
left_delta="-119"
name="camera_position_btn"
top_pad="9"
width="143">
top_pad="5"
width="70">
<button.commit_callback
function="Floater.Show"
parameter="prefs_view_advanced"/>
</button>
<button
follows="top|left"
height="23"
label="Save"
layout="topleft"
left_pad="3"
name="save_btn"
top_delta="0"
width="70">
<button.commit_callback
function="CameraPresets.Save"/>
</button>
</floater>

View File

@ -34,5 +34,6 @@
<combo_box.item label="Użyj ustawienia" name="Use preset" />
</combo_box>
<button name="gear_btn" tool_tip="Ustawienia kamery" />
<button label="Pozycja kamery..." name="camera_position_btn" />
<button label="Pozycja..." name="camera_position_btn" />
<button label="Zapisz" name="save_btn" />
</floater>

View File

@ -32,5 +32,6 @@
<combo_box.item label="Предустановки" name="Use preset"/>
</combo_box>
<button name="gear_btn" tool_tip="Предустановки Камеры"/>
<button label="Позиция Камеры..." name="camera_position_btn"/>
<button label="Позиция..." name="camera_position_btn"/>
<button label="Сохранить" name="save_btn" />
</floater>

View File

@ -48,10 +48,11 @@
<panel_camera_item.text name="reset_view_text">
</panel_camera_item.text>
</panel_camera_item>
<button label="Position..." name="camera_position_btn"/>
<button label="Position..." name="camera_position_btn"/>
</panel>
<combo_box name="preset_combo">
<combo_box.item label="Voreinstellung verwend." name="Use preset"/>
<combo_box.item label="Voreinstellung verw." name="Use preset"/>
</combo_box>
<button name="gear_btn" tool_tip="Kamera-Voreinstellungen"/>
<button name="save_preset_btn" tool_tip="Als Voreinstellung speichern"/>
</floater>

View File

@ -14,6 +14,9 @@
<button label="Laden" name="btn_load" tool_tip="Einstellungen aus dem Inventar laden"/>
<button label="Importieren" name="btn_import" tool_tip="Alte Einstellungen von Datenträger importieren."/>
</layout_panel>
<layout_panel name="tab_area">
<tab_container name="tab_settings" tab_width="165"/>
</layout_panel>
<layout_panel name="button_panel">
<layout_stack name="button_bar_ls">
<layout_panel name="save_btn_lp">

View File

@ -2,25 +2,25 @@
<floater title="Fototools" name="phototools">
<tab_container name="tabs">
<panel name="EnvironmentTab" label="WL">
<panel name="EnvironmentTab" label="Umg.">
<panel name="PT_WL_Settings">
<text name="T_WL_Settings">
Windlight-Einstellungen
Umgebungseinstellungen
</text>
</panel>
<panel name="P_WL_Settings">
<check_box name="WindLightUseAtmosShaders" label="Atmosphären-Shader aktivieren (Windlight)" tool_tip="Diese Einstellung aktiviert die komplette Windlight-Funktionalität (Atmosphären-Shader). Falls diese Einstellung nicht aktiviert werden kann, bitte prüfen, ob „Einfache Shader“ weiter unten aktiviert sind."/>
<check_box name="WindLightUseAtmosShaders" label="Atmosphären-Shader aktivieren" tool_tip="Diese Einstellung aktiviert die komplette EEP-Funktionalität (Atmosphären-Shader). Falls diese Einstellung nicht aktiviert werden kann, bitte prüfen, ob „Einfache Shader“ weiter unten aktiviert sind."/>
</panel>
<panel name="P_WL_Sky_Water">
<text name="WL Sky" tool_tip="Windlight-Voreinstellungen für den Himmel.">
<text name="WL Sky" tool_tip="Voreinstellungen für den Himmel.">
Himmel
</text>
<text name="WL Water" tool_tip="Windlight-Voreinstellungen für Wasser.">
<text name="WL Water" tool_tip="Voreinstellungen für Wasser.">
Wasser
</text>
<text name="Day Cycle" tool_tip="Windlight-Voreinstellungen für den Tageszyklus.">
<text name="Day Cycle" tool_tip="Voreinstellungen für den Tageszyklus.">
Tageszykl.
</text>
<button name="btn_personal_lighting" label="Persönliche Beleuchtung..."/>
@ -30,7 +30,7 @@
<panel name="P_Q_Windlights">
<text name="T_Q_Windlights">
Standard-Windlights
Standard-Umgebungen
</text>
<view_border name="horiz_separator1"/>
<button name="Sunrise" label="Sonnenaufgang"/>

View File

@ -19,15 +19,15 @@
<text name="IndirectMaxComplexityText" width="60">
Kein Limit
</text>
<text name="WL Sky" width="67" tool_tip="Windlight-Voreinstellung für den Himmel.">
WL-Himmel:
<text name="WL Sky" width="67" tool_tip="Voreinstellungen für den Himmel.">
Himmel:
</text>
<combo_box left_delta="77" name="WLPresetsCombo"/>
<text name="WL Water" width="67" tool_tip="Windlight-Voreinstellung für das Wasser.">
WL-Wasser:
<text name="WL Water" width="67" tool_tip="Voreinstellungen für das Wasser.">
Wasser:
</text>
<combo_box left_delta="77" name="WaterPresetsCombo"/>
<text name="Day Cycle" width="67" tool_tip="Windlight-Voreinstellung für den Tageszyklus.">
<text name="Day Cycle" width="67" tool_tip="Voreinstellungen für den Tageszyklus.">
Tageszyklus:
</text>
<combo_box left_delta="77" name="DCPresetsCombo"/>

View File

@ -4,6 +4,7 @@
<menu_item_check label="Stimmen in der Nähe anzeigen..." name="nearby_voice"/>
<menu_item_check label="Blockierliste anzeigen..." name="block_list"/>
<menu_item_check label="V1-Stil für Chatverlauf verwenden" name="plain_text_chat_history"/>
<menu_item_check label="Profilbild in Chatüberschrift anzeigen" name="chat_header_icons"/>
<context_menu label="Schriftgröße..." name="font_size">
<menu_item_check label="Klein" name="font_size_small"/>
<menu_item_check label="Mittel" name="font_size_medium"/>

View File

@ -2575,6 +2575,11 @@ Möchten Sie den Nicht-stören-Modus deaktivieren, bevor Sie diese Transaktion a
Sind Sie sicher, dass Sie den Inhalt Ihres Ordners Fundbüro löschen möchten?
<usetemplate ignoretext="Bestätigen, bevor der Ordner Fundbüro im Inventar geleert wird" name="okcancelignore" notext="Nein" yestext="Ja"/>
</notification>
<notification icon="alertmodal.tga" name="ConfirmReplaceLink">
Sie sind dabei ein Körperteil vom Typ „[TYPE]“ mit einem anderen Gegenstand zu ersetzen, der nicht vom selben Typ ist.
Sind Sie sicher, dass Sie fortfahren möchten?
<usetemplate ignoretext="Bestätigen bevor eine Verknüpfung ersetzt wird" name="okcancelignore" notext="Nein" yestext="Ja"/>
</notification>
<notification name="CopySLURL">
Die folgende SLurl wurde in die Zwischenablage kopiert:
[SLURL]
@ -3545,7 +3550,11 @@ Voreinstellung überschreiben oder einen anderen Namen wählen
</notification>
<notification name="BulkUploadCostConfirmation">
Das Hochladen von [COUNT] Gegenständen wird insgesamt [COST] L$ kosten. Möchten Sie mit dem Hochladen fortfahren?
<usetemplate name="okcancelbuttons" notext="Abbrechen" yestext="Hochladen"/>
<usetemplate name="okcancelignore" notext="Abbrechen" yestext="Hochladen" ignoretext="Mehrfach-Uploads bestätigen"/>
</notification>
<notification name="NotEnoughMoneyForBulkUpload">
Ihr aktueller Kontostand von [BALANCE] L$ reicht nicht aus, um [COUNT] Gegenstände für insgesamt [COST] L$ hochzuladen.
<usetemplate name="okbutton" yestext="OK"/>
</notification>
<notification name="BulkUploadNoCompatibleFiles">
Die ausgewählten Dateien können nicht per Mehrfach-Upload hochgeladen werden.
@ -4906,6 +4915,12 @@ Möchten Sie diese Informationen übermitteln?
<notification name="PhantomOff">
Phantom-Modus ausgeschaltet.
</notification>
<notification name="MovelockEnabled">
Movelock aktiviert. Verwenden Sie Avatar &gt; Bewegung &gt; Movelock zum deaktivieren.
</notification>
<notification name="MovelockDisabled">
Movelock deaktiviert.
</notification>
<notification label="Alle Einstellungen zurücksetzen" name="FirestormClearSettingsPrompt">
Ein Zurücksetzen aller Einstellungen kann bei Problemen hilfreich sein, allerdings müssen Sie anschließend jegliche Anpassungen erneut vornehmen.

View File

@ -1,5 +1,5 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<panel label="Atmosphäre und Beleuchtung" name="panel_settings_sky_atmos">
<panel label="Atmosphäre &amp; Beleuchtung" name="panel_settings_sky_atmos">
<layout_stack name="main_ls">
<layout_panel name="top_lp">
<text name="ambient_color_label">

View File

@ -7126,4 +7126,7 @@ Ihre aktuelle Position: [AVATAR_POS]
<string name="TexturePickerOutfitHeader">
Foto für Outfit
</string>
<string name="unknown_script">
(Unbekanntes Skript)
</string>
</strings>

View File

@ -1,7 +1,7 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<floater layout="topleft"
name="env_adjust_snapshot"
help_topic="day_presets"
help_topic="fs_personal_lighting"
save_rect="false"
title="Personal Lighting"
width="845"

View File

@ -235,7 +235,7 @@ legacy_header_height="0"
height="23"
mouse_opaque="true"
name="preset_combo"
width="162">
width="135">
<combo_list
mouse_wheel_opaque="true"/>
<combo_box.item
@ -244,33 +244,30 @@ legacy_header_height="0"
value="default" />
</combo_box>
<button
height="16"
width="16"
height="23"
width="24"
layout="topleft"
mouse_opaque="true"
name="gear_btn"
tool_tip="Camera Presets"
top_delta="3"
left_pad="8"
image_selected="Icon_Gear"
image_pressed="Icon_Gear"
image_unselected="Icon_Gear"
top_delta="0"
left_pad="3"
image_overlay="Icon_Gear"
is_toggle="true">
<button.commit_callback
function="CameraPresets.ShowPresetsList"/>
</button>
<!--
<button
follows="top|left"
height="23"
label="Save as preset..."
layout="topleft"
left="0"
left_pad="3"
name="save_preset_btn"
top_pad="7"
width="143">
tool_tip="Save as Preset"
image_overlay="Activate_Checkmark"
top_delta="0"
width="24">
<button.commit_callback
function="CameraPresets.Save"/>
</button>
-->
</floater>

View File

@ -7,6 +7,7 @@
title="Camera Presets"
layout="topleft"
name="floater_camera_presets"
positioning="centered"
single_instance="true"
min_width="185"
width="250">

View File

@ -5,6 +5,7 @@
help_topic="floater_delete_preset"
layout="topleft"
name="delete_pref_preset"
positioning="centered"
save_rect="true"
title="Delete Pref Preset"
width="240">

View File

@ -2,7 +2,7 @@
<floater
layout="topleft"
name="env_edit_extdaycycle"
help_topic="day_presets"
help_topic="fs_day_cycle"
save_rect="false"
title="Edit Day Cycle"
width="705"

View File

@ -12,7 +12,7 @@
save_rect="true"
title="Fixed Environment"
save_visibility="false"
help_topic="fixed_environment"
help_topic="fs_fixed_environment"
single_instance="true"
width="750">
<string name="edit_sky">Edit Sky:</string>

View File

@ -34,7 +34,7 @@
layout="topleft"
width="285"
top="0"
label="WL"
label="Env"
left="0">
<panel
@ -57,7 +57,7 @@
font="SansSerif"
height="17"
width="200">
Windlight Settings
Environment Settings
</text>
</panel>
@ -75,12 +75,12 @@
control_name="WindLightUseAtmosShaders"
height="16"
initial_value="true"
label="Enable Atmospheric Shaders (Windlight)"
label="Enable Atmospheric Shaders"
layout="topleft"
left="5"
name="WindLightUseAtmosShaders"
top_pad="8"
tool_tip="This will enable full WindLight functionality (atmospheric shaders). If you cannot enable this feature, ensure that Basic Shaders are enabled below."
tool_tip="This will enable full EEP functionality (atmospheric shaders). If you cannot enable this feature, ensure that Basic Shaders are enabled below."
width="240">
</check_box>
</panel>
@ -103,11 +103,11 @@
layout="topleft"
left="5"
name="WL Sky"
tool_tip="Windlight presets for your sky."
tool_tip="Presets for your sky."
mouse_opaque="false"
top_pad="10"
width="90">
WL Sky
Sky
</text>
<combo_box
allow_text_entry="true"
@ -147,11 +147,11 @@
layout="topleft"
left="5"
name="WL Water"
tool_tip="Windlight presets for your water."
tool_tip="Presets for your water."
mouse_opaque="false"
top_pad="8"
width="90">
WL Water
Water
</text>
<combo_box
allow_text_entry="true"
@ -191,11 +191,11 @@
layout="topleft"
left="5"
name="Day Cycle"
tool_tip="Windlight presets for your day cycle."
tool_tip="Presets for your day cycle."
mouse_opaque="false"
top_pad="8"
width="90">
Day Cycle
Day Cycle
</text>
<combo_box
allow_text_entry="true"
@ -300,7 +300,7 @@
height="20"
word_wrap="true"
width="155">
Quick Windlights
Quick Environments
</text>
<view_border
bevel_style="none"

View File

@ -179,11 +179,11 @@
layout="topleft"
left="5"
name="WL Sky"
tool_tip="Windlight presets for your sky"
tool_tip="Presets for your sky"
mouse_opaque="false"
top_delta="24"
width="90">
WL Sky:
Sky:
</text>
<combo_box
follows="left|top"
@ -225,11 +225,11 @@
layout="topleft"
left="5"
name="WL Water"
tool_tip="Windlight presets for your water"
tool_tip="Presets for your water"
mouse_opaque="false"
top_delta="25"
width="90">
WL Water:
Water:
</text>
<combo_box
follows="left|top"
@ -271,7 +271,7 @@
layout="topleft"
left="5"
name="Day Cycle"
tool_tip="Windlight presets for your day cycle"
tool_tip="Presets for your day cycle"
mouse_opaque="false"
top_delta="24"
width="90">

View File

@ -5,6 +5,7 @@
help_topic="floater_save_preset"
layout="topleft"
name="save_camera_preset"
positioning="centered"
save_rect="true"
title="Save Camera Preset"
width="240">
@ -34,7 +35,7 @@
value="1"/>
</radio_group>
<line_editor
commit_on_focus_lost = "true"
commit_on_focus_lost="false"
follows="top|left"
height="23"
layout="topleft"

View File

@ -5,6 +5,7 @@
help_topic="floater_save_preset"
layout="topleft"
name="save_pref_preset"
positioning="centered"
save_rect="true"
title="Save Graphic Preset"
width="245">

View File

@ -41,6 +41,19 @@
function="ToggleControl"
parameter="PlainTextChatHistory"/>
</menu_item_check>
<menu_item_check
label="Show profile icons in chat headers"
name="chat_header_icons">
<menu_item_check.on_check
function="CheckControl"
parameter="ShowChatMiniIcons"/>
<menu_item_check.on_click
function="ToggleControl"
parameter="ShowChatMiniIcons"/>
<menu_item_check.on_visible
function="ChatOptions.Visible"
parameter="show_mini_icons"/>
</menu_item_check>
<context_menu
label="Font size..."
name="font_size">

View File

@ -9255,10 +9255,21 @@ Your voice has been muted by a moderator.
type="alertmodal">
This will upload [COUNT] items at a total cost of L$[COST]. Do you wish to continue with the upload?
<usetemplate
name="okcancelbuttons"
ignoretext="Confirm bulk uploads"
name="okcancelignore"
notext="Cancel"
yestext="Upload"/>
</notification>
<notification
icon="alertmodal.tga"
name="NotEnoughMoneyForBulkUpload"
type="alertmodal">
Your current balance of L$[BALANCE] is not enough to upload [COUNT] items at a total cost of L$[COST].
<usetemplate
name="okbutton"
yestext="OK"/>
</notification>
<notification
icon="alertmodal.tga"
@ -10525,6 +10536,20 @@ Phantom mode on.
Phantom mode off.
</notification>
<notification
icon="notifytip.tga"
name="MovelockEnabled"
type="notifytip">
Movelock enabled. Use Avatar &gt; Movement &gt; Movelock to disable.
</notification>
<notification
icon="notifytip.tga"
name="MovelockDisabled"
type="notifytip">
Movelock disabled.
</notification>
<!-- Firestorm Phantom -->
<!-- Firestorm Reset Settings -->

View File

@ -1,44 +1,67 @@
<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
<panel
background_visible="true"
background_visible="true"
bevel_style="in"
bg_opaque_color="ChatHeaderOpaqueBackground"
bg_alpha_color="ChatHeaderAlphaBackground"
follows="top|left|right"
height="24"
label="im_header"
layout="topleft"
layout="topleft"
name="im_header"
width="310">
<avatar_icon
follows="left"
height="18"
image_name="Generic_Person"
layout="topleft"
left="3"
mouse_opaque="true"
name="avatar_icon"
top="3"
width="18" />
<text
parse_urls="false"
allow_scroll="false"
v_pad = "6"
read_only = "true"
follows="left|right"
font.style="BOLD"
height="24"
layout="topleft"
left_pad="5"
right="-120"
name="user_name"
text_color="ChatNameColor"
bg_readonly_color="Black"
top="0"
translate="false"
use_ellipses="true"
valign="top"
value="TestString PleaseIgnore" />
<layout_stack
top="0"
height="24"
right="-120"
name="header_ls"
layout="topleft"
follows="top|left|right"
animate="false">
<layout_panel
name="icon_lp"
auto_resize="false"
user_resize="false"
width="21"
height="24"
visibility_control="ShowChatMiniIcons">
<avatar_icon
follows="left"
height="18"
image_name="Generic_Person"
layout="topleft"
left="3"
mouse_opaque="true"
name="avatar_icon"
top="3"
width="18" />
</layout_panel>
<layout_panel
name="name_lp"
auto_resize="true"
user_resize="false"
height="24">
<text
parse_urls="false"
allow_scroll="false"
v_pad="6"
read_only="true"
follows="left|right"
font.style="BOLD"
height="24"
layout="topleft"
left="4"
right="-1"
name="user_name"
text_color="ChatNameColor"
bg_readonly_color="Black"
top="0"
translate="false"
use_ellipses="true"
valign="top"
value="TestString PleaseIgnore" />
</layout_panel>
</layout_stack>
<text
allow_scroll="false"
font="SansSerifSmall"

View File

@ -53,13 +53,11 @@
label="Español (Spanish) - Beta"
name="Spanish"
value="es" />
<!--
<combo_box.item
enabled="true"
label="Français (French) - Beta"
name="French"
value="fr" />
-->
<combo_box.item
enabled="true"
label="Italiano (Italian) - Beta"

View File

@ -5,7 +5,6 @@
label="Water"
layout="topleft"
left="0"
help_topic="land_general_tab"
name="panel_settings_water"
top="0">
<layout_stack name="water_stack1"

View File

@ -3191,4 +3191,5 @@ Your current position: [AVATAR_POS]
<string name="No">No</string>
<string name="FSUrlEntryWearLabel">Wear inventory folder</string>
<string name="TexturePickerOutfitHeader">Picture for Outfit</string>
<string name="unknown_script">(Unknown script)</string>
</strings>

View File

@ -5431,6 +5431,12 @@ El nombre NO puede contener los caracteres ":" o "|".
<notification name="PhantomOff">
Modo fantasma desactivado.
</notification>
<notification name="MovelockEnabled">
Bloqueo de movimiento activado.
</notification>
<notification name="MovelockDisabled">
Bloqueo de movimiento desactivado.
</notification>
<notification label="Restablecer todas las configuraciones" name="FirestormClearSettingsPrompt">
Restablecer todas las configuraciones puede ser útil si estás experimentando problemas, aunque tendrás que repetir todas las personalizaciones que hayas podido hacer a la configuración por defecto.

View File

@ -3,20 +3,70 @@
<layout_stack name="outer_stack">
<layout_panel name="env_controls">
<layout_stack name="settings_stack">
<layout_panel>
<button label="Réinitialiser" name="btn_reset" tool_tip="Fermer et réinitialiser vers l&apos;environnement partagé"/>
<layout_panel name="lp_1">
<text name="ambient_lbl">
Ambiance :
</text>
<text name="blue_horizon_lbl">
Bleu horizon :
</text>
<text name="blue_density_lbl">
Densité bleu :
</text>
<button label="Réinitialiser" tool_tip="Fermer et repasser à l'environnement partagé" name="btn_reset"/>
<text name="sun_color_lbl">
Soleil :
</text>
<text name="cloud_color_lbl">
Nuages :
</text>
<text name="cloud_map_label">
Image du nuage :
Image de nuage :
</text>
<text name="water_map_label">
Image d'eau :
</text>
</layout_panel>
<layout_panel>
<layout_panel name="lp_2">
<text name="haze_horizon_label">
Horizon de la brume :
</text>
<text name="haze_density_label">
Densité de la brume :
</text>
<text name="cloud_coverage_label">
Couverture nuageuse :
</text>
<text name="cloud_scale_label">
Taille des nuages :
</text>
<text name="scene_gamma_label">
Gamma de la scène :
</text>
</layout_panel>
<layout_panel name="lp_3">
<text name="label">
Soleil :
</text>
<check_box label="Afficher la balise" name="sunbeacon"/>
<check_box label="Montrer la balise" name="sunbeacon"/>
<text name="scale_label">
Échelle :
</text>
<text name="glow_focus_label">
Glow Focus :
</text>
<text name="glow_size_label">
Taille de la lueur :
</text>
<text name="star_brightness_label">
Brillance des étoiles :
</text>
</layout_panel>
<layout_panel>
<check_box label="Afficher la balise" name="moonbeacon"/>
<layout_panel name="lp_4">
<text name="label">
Lune :
</text>
<check_box label="Montrer la balise" name="moonbeacon"/>
</layout_panel>
</layout_stack>
</layout_panel>

View File

@ -0,0 +1,40 @@
<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
<floater name="floater_discord" title="Discord">
<string name="discord_connected">
Connecté(e) à Discord en tant que :
</string>
<string name="discord_disconnected">
Non connecté(e) Discord.
</string>
<string name="SocialDiscordConnecting">
En cours de connexion à Discord...
</string>
<string name="SocialDiscordErrorConnecting">
Problème de connexion à Discord
</string>
<string name="SocialDiscordDisconnecting">
En cours de déconnexion de Discord...
</string>
<text name="account_caption_label">
Non connecté à Discord.
</text>
<check_box label="Connexion automatique lors du login" name="startup_check"/>
<check_box label="Partager le nom d'utilisateur" name="name_check"/>
<button label="Se connecter..." name="connect_btn"/>
<button label="Se déconnecter" name="disconnect_btn"/>
<text name="rating_label">
Partager dans Discord le nom des régions ayant la classification suivante :
</text>
<combo_box name="maturity_desired_combobox">
<combo_box.item label="Général, Modéré, Adulte" name="Desired_Adult"/>
<combo_box.item label="Général et modéré" name="Desired_Mature"/>
<combo_box.item label="Général" name="Desired_PG"/>
<combo_box.item label="Ne pas partager" name="Desired_None"/>
</combo_box>
<text name="dont_names_label">
Ne pas partager dans Discord le noms des régions qui sont dans la liste ci-dessous :
</text>
<text name="connection_status_text">
En cours de chargement...
</text>
</floater>

View File

@ -1,17 +1,15 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<floater label="Endroits" name="my_environments" title="MES ENVIRONNEMENTS">
<layout_stack>
<floater name="my_environments" title="Mes environnements">
<layout_stack name="main_layout">
<layout_panel label="Filtres" name="filter_panel">
<check_box label="Jours" name="chk_days"/>
<check_box label="Ciels" name="chk_skies"/>
<check_box label="Eau" name="chk_water"/>
<filter_editor label="Filtrer les environnements" name="flt_search"/>
</layout_panel>
<layout_panel label="Environnements" name="list_panel">
<panel label="pnl_inv_wrap" name="pnl_inv_wrap"/>
</layout_panel>
<layout_panel>
<check_box initial_value="false" label="Afficher tous les dossiers" name="chk_showfolders"/>
<layout_panel label="Environnements" name="list_panel" />
<layout_panel name="lp_showfolders">
<check_box label="Afficher tous les dossiers" name="chk_showfolders"/>
</layout_panel>
<layout_panel name="pnl_control">
<panel label="bottom_panel" name="pnl_bottom">

View File

@ -107,6 +107,16 @@
<menu_item_check label="Menu Avancé" name="Show Advanced Menu"/>
</menu>
<menu_item_call label="Me téléporter chez moi" name="Teleport Home"/>
<menu label="Environnement" name="Environment">
<menu_item_check label="Lever du soleil" name="Sunrise"/>
<menu_item_check label="Midi" name="Noon"/>
<menu_item_check label="Coucher du soleil" name="Sunset"/>
<menu_item_check label="Minuit" name="Midnight"/>
<menu_item_check label="Utiliser l'environnement partagé" name="Use Shared Environment"/>
<menu_item_call label="Mes environnements..." name="my_environs"/>
<menu_item_call label="Éclairage personnel..." name="adjustment_tool"/>
<menu_item_check label="Arrêter les nuages" name="pause_clouds"/>
</menu>
<menu label="Photo et vidéo" name="photo_and_video"/>
<menu_item_call label="Recherche dans la région" name="area_search"/>
<menu_item_call label="Explorateur de sons" name="Sound Explorer"/>

View File

@ -1,16 +1,15 @@
<?xml version="1.0" encoding="utf-8"?>
<panel name="animation_overrider_outer_panel">
<panel name="animation_overrider_panel">
<combo_box name="ao_set_selection_combo" tool_tip="Sélectionner un set d'animations à éditer."/>
<button name="ao_activate" tool_tip="Activer ce set d'animations maintenant."/>
<check_box name="ao_default" label="Par défaut" tool_tip="Faire de ce set d'animation celui qui se lancera par défaut à la connexion."/>
<button name="ao_add" tool_tip="Créer un nouveau set d'animations."/>
<button name="ao_remove" tool_tip="Effacer ce set d'animations."/>
<check_box name="ao_sit_override" label="Outrepasser assis." tool_tip="Activer cette option pour outrepasser les animations de poses assises."/>
<combo_box name="ao_set_selection_combo" tool_tip="Sélectionner un ensemble d'animations à éditer."/>
<button name="ao_activate" tool_tip="Activer cet ensemble d'animations maintenant."/>
<check_box name="ao_default" label="Par défaut" tool_tip="Faire de cet ensemble d'animation celui qui se lancera par défaut à la connexion."/>
<button name="ao_add" tool_tip="Créer un nouveau ensemble d'animations."/>
<button name="ao_remove" tool_tip="Effacer cet ensemble d'animations."/>
<check_box name="ao_sit_override" label="Outrepasser assis." tool_tip="Activer cette option pour que les animations de l'ao soient prioritaires sur celles de l'objet."/>
<check_box name="ao_smart" label="Intell." left_pad="20" tool_tip="Le mode intelligent détermine si outrepasser les poses assises entrera en conflit avec les animations des objets, et arrêtera de passer outre temporairement."/>
<check_box name="ao_disable_stands_in_mouselook" label="Désact. debout en 1ère pers." tool_tip="Si vous avez besoin de garder vos animations personelles en vue subjective, cochez cette case."/>
<combo_box name="ao_state_selection_combo" tool_tip="Sélectionner l'état d'animation à éditer."/>
<scroll_list name="ao_state_animation_list"></scroll_list>
<panel name="ao_animation_move_trash_panel">
<button name="ao_move_up" tool_tip="Déplacer l'animation sélectionnée plus haut dans la liste."/>
<button name="ao_move_down" tool_tip="Déplacer l'animation sélectionnée plus bas dans la liste."/>
@ -37,10 +36,10 @@
</panel>
</panel>
<panel name="animation_overrider_panel_small">
<combo_box name="ao_set_selection_combo_small" tool_tip="Sélectionner le set d'animations à éditer."/>
<combo_box name="ao_set_selection_combo_small" tool_tip="Sélectionner l'ensemble d'animations à éditer."/>
<button name="ao_more" tool_tip="Afficher l'interface complète de configuration."/>
<button name="ao_previous_small" tool_tip="Passer à l'animation précédente."/>
<button name="ao_next_small" tool_tip="Passer à l'animation suivante."/>
<check_box name="ao_sit_override_small" label="Poses assises" tool_tip="Cocher si vous voulez outrepasser les animations de poses assises."/>
<check_box name="ao_sit_override_small" label="Assis" tool_tip="Activer cette option pour que les animations de l'ao soient prioritaires sur celles de l'objet."/>
</panel>
</panel>

View File

@ -5369,7 +5369,7 @@ Essayez avec le chemin d&apos;accès à l&apos;éditeur entre guillemets doubles
Conversations
</string>
<string name="Command_Conversations_Label">
Conversations
Discuter
</string>
<string name="Command_Compass_Label">
Boussole
@ -5449,6 +5449,93 @@ Essayez avec le chemin d&apos;accès à l&apos;éditeur entre guillemets doubles
<string name="Command_Voice_Label">
Paramètres vocaux
</string>
<string name="Command_AO_Label">
Remplacement d'animations
</string>
<string name="Command_Areasearch_Label">
Recherche Zonale
</string>
<string name="Command_Asset_Blacklist_Label">
Liste Noire active
</string>
<string name="Command_Blocklist_Label">
Liste noire
</string>
<string name="Command_Beacons_Label">
Balises
</string>
<string name="Command_Default_Chat_Bar_Label">
Conversation
</string>
<string name="Command_Contact_Sets_Label">
Liste de contacts
</string>
<string name="Command_Conversation_Log_Label">
Enregistrement de conversation
</string>
<string name="Command_Landmark_Here_Label">
Creation de repère
</string>
<string name="Command_Settings_Debug_Label">
Paramètres de débogage
</string>
<string name="Command_Wearable_Favorites_Label">
Vêtements favoris
</string>
<string name="Command_Fly_Label">
Voler
</string>
<string name="Command_Groundsit_Label">
S'asseoir au sol
</string>
<string name="Command_Group_Titles_Label">
Titres de Groupe
</string>
<string name="Command_Move_Lock_Label">
Immobiliser
</string>
<string name="Command_Phototools_Label">
Outils photo
</string>
<string name="Command_Phototools_View_Label">
Outils pour caméra
</string>
<string name="Command_Quickprefs_Label">
Préférences rapides
</string>
<string name="Command_RegionTracker_Label">
Suivi de région
</string>
<string name="Command_Region_Label">
Région/Domaine
</string>
<string name="Command_ResyncAnimations_Label">
Resynchroniser les animations
</string>
<string name="Command_RFO_Label">
Ne montrer que les amis
</string>
<string name="Command_Snapshot_To_Disk_Label">
Sauvegarder une photo sur disque
</string>
<string name="Command_Sound_Explorer_Label">
Explorateur de sons
</string>
<string name="Command_Statistics_Label">
Statistiques
</string>
<string name="Command_Teleport_History_Label">
Historique de téléportation
</string>
<string name="Command_Webbrowser_Label">
Navigateur web
</string>
<string name="Command_Mouselook_Label">
Vue subjective
</string>
<string name="Command_Pose_Stand_Label">
Pose Stand
</string>
<string name="Command_AboutLand_Tooltip">
Information sur le terrain que vous visitez
</string>
@ -5560,6 +5647,96 @@ Essayez avec le chemin d&apos;accès à l&apos;éditeur entre guillemets doubles
<string name="Command_Stop_Animations_Tooltip">
Arrêter mon animation
</string>
<string name="Command_AO_Tooltip">
Remplacement d'animation
</string>
<string name="Command_Areasearch_Tooltip">
Recherche des objets dans la zone
</string>
<string name="Command_Asset_Blacklist_Tooltip">
Affiche la liste de tous les éléments mis dans la liste noire
</string>
<string name="Command_Blocklist_Tooltip">
Ouvre la liste des éléments bloqués/ignorés
</string>
<string name="Command_Beacons_Tooltip">
Montrer les balises
</string>
<string name="Command_Default_Chat_Bar_Tooltip">
Montre ou cache la barre de conversation
</string>
<string name="Command_Contact_Sets_Tooltip">
Ouvre les listes de contacts (CTRL+ALT+SHIFT+C)
</string>
<string name="Command_Conversation_Log_Tooltip">
Ouvre l'historique des conversations pour consulter les transcriptions des conversations passées
</string>
<string name="Command_Landmark_Here_Tooltip">
Crée un repère à votre position actuelle
</string>
<string name="Command_Settings_Debug_Tooltip">
Changer les paramètres de débogage du logiciel (CTRL+ALT+SHIFT+S)
</string>
<string name="Command_Wearable_Favorites_Tooltip">
Ouvre la liste des vêtements favoris
</string>
<string name="Command_Fly_Tooltip">
Voler/Arrêter de voler (HOME)
</string>
<string name="Command_Groundsit_Tooltip">
S'asseoir sur le sol/Se relever (CTRL+ALT+S)
</string>
<string name="Command_Group_Titles_Tooltip">
Modifier le titre de groupe affiché
</string>
<string name="Command_Move_Lock_Tooltip">
Immobilise l'avatar dans sa position actuelle (CTRL+ALT+P)
</string>
<string name="Command_Phototools_Tooltip">
Outils pour la création d'image (ATL+P).
</string>
<string name="Command_Phototools_View_Tooltip">
Contrôles avancés de la caméra (CTRL+SHIFT+C)
</string>
<string name="Command_Quickprefs_Tooltip">
Préférences rapides pour modifier des paramètres souvent utilisés
</string>
<string name="Command_RegionTracker_Tooltip">
Suivre le statut de différentes régions
</string>
<string name="Command_Region_Tooltip">
Ouvre les outils de gestion région et domaine (ALT+R)
</string>
<string name="Command_ResyncAnimations_Tooltip">
Synchronise les animations de l'avatar
</string>
<string name="Command_RFO_Tooltip">
Ne montrez que vos amis, tous les autres avatars seront supprimés. Une fois activé, une téléportation est nécessaire pour rétablir la visibilité des autres.
</string>
<string name="Command_Snapshot_To_Disk_Tooltip">
Prend un cliché rapide et le sauvegarde sur le disque dur
</string>
<string name="Command_Sound_Explorer_Tooltip">
Ouvre l'explorateur de sons
</string>
<string name="Command_Statistics_Tooltip">
Affiche les statistiques du navigateur (CTRL+SHIFT+1)
</string>
<string name="Command_Teleport_History_Tooltip">
Ouverture de l'historique de téléportation (ALT+H)
</string>
<string name="Command_Webbrowser_Tooltip">
Ouvre le navigateur web interne (CTRL+SHIFT+Z)
</string>
<string name="Command_Mouselook_Tooltip">
Passer en mode Vue subjective (M)
</string>
<string name="Command_Pose_Stand_Tooltip">
Met l'avatar en pose pour ajuster les objets attachés
</string>
<string name="Command_Radar_Tooltip">
Ouvre le radar pour détecter les avatars à proximité
</string>
<string name="Retain%">
Garder%
</string>

View File

@ -3857,6 +3857,12 @@ Inviare queste informazioni?
<notification name="PhantomOff">
Modalità fantasma non attiva.
</notification>
<notification name="MovelockEnabled">
Blocco movimenti attivo.
</notification>
<notification name="MovelockDisabled">
Blocco movimenti inattivo.
</notification>
<notification label="Ripristino della configurazione" name="FirestormClearSettingsPrompt">
Ripristinare completamente la configurazione può essere utile in caso di problemi. Tuttavia tutte le personalizzazioni rispetto all&apos;originale dovranno essere rifatte.

View File

@ -4280,6 +4280,12 @@ AO セット "[AO_SET_NAME]" の名前を変更できません。
<notification name="PhantomOff">
ファントム・モードがオフになりました。
</notification>
<notification name="MovelockEnabled">
ムーブメントロックが有効になりました
</notification>
<notification name="MovelockDisabled">
ムーブメントロックが解除されました
</notification>
<!-- Firestorm Phantom -->
<!-- Firestorm Reset Settings -->

View File

@ -35,5 +35,5 @@
<combo_box.item label="Użyj ustawienia" name="Use preset" />
</combo_box>
<button name="gear_btn" tool_tip="Ustawienia kamery" />
<!-- <button label="Zapisz jako ustawienie" name="save_preset_btn" /> -->
<button tool_tip="Zapisz jako ustawienie" name="save_preset_btn" />
</floater>

View File

@ -1,23 +1,23 @@
<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
<floater title="Fotograf" name="phototools">
<tab_container name="tabs">
<panel name="EnvironmentTab">
<panel name="EnvironmentTab" label="Otocz.">
<panel name="PT_WL_Settings">
<text name="T_WL_Settings">
Ustawienia systemu Windlight
Ustawienia otoczenia
</text>
</panel>
<panel name="P_WL_Settings">
<check_box label="Włącz shadery atmosfery (Windlight)" name="WindLightUseAtmosShaders" tool_tip="Ta opcja włącza pełną funkcjonalność systemu Windlight (shadery atmosfery). Jeśli nie można włączyć tej funkcji to należy upewnić się, że są zaznaczone 'podstawowe shadery' powyżej."/>
<check_box label="Włącz shadery atmosfery" name="WindLightUseAtmosShaders" tool_tip="Ta opcja włącza pełną funkcjonalność systemu EEP (shadery atmosfery). Jeśli nie można włączyć tej funkcji to należy upewnić się, że są zaznaczone 'podstawowe shadery' powyżej."/>
</panel>
<panel name="P_WL_Sky_Water">
<text name="WL Sky" tool_tip="Zapisane ustawienia systemu Windlight dla nieba.">
Niebo WL
<text name="WL Sky" tool_tip="Zapisane ustawienia dla nieba.">
Niebo
</text>
<text name="WL Water" tool_tip="Zapisane ustawienia systemu Windlight dla wody.">
Woda WL
<text name="WL Water" tool_tip="Zapisane ustawienia dla wody.">
Woda
</text>
<text name="Day Cycle" tool_tip="Zapisane ustawienia systemu Windlight dla cyklów dnia.">
<text name="Day Cycle" tool_tip="Zapisane ustawienia dla cyklów dnia.">
Cykl dnia
</text>
<button name="btn_personal_lighting" label="Własne oświetlenie..." />
@ -26,7 +26,7 @@
</panel>
<panel name="P_Q_Windlights">
<text name="T_Q_Windlights">
Szybkie Windlighty
Szybkie otoczenia
</text>
<button name="Sunrise" label="Wschód"/>
<button name="Noon" label="Południe"/>
@ -36,7 +36,7 @@
</panel>
<panel name="P_WL_Presets">
<text name="T_WL_Presets" tool_tip="Kliknij na jakiś element, aby utworzyć nowe ustawienie lub zmodyfikować istniejące.">
Zapisane Windlighty
Zapisane otoczenia
</text>
<button name="new_sky_preset" label="Nowe ust. nieba"/>
<button name="edit_sky_preset" label="Edytuj ust. nieba"/>

View File

@ -15,13 +15,13 @@
<text name="IndirectMaxComplexityText">
Nielimit.
</text>
<text name="WL Sky" tool_tip="Ustawienia systemu Windlight dla Twojego nieba">
Niebo WL:
<text name="WL Sky" tool_tip="Ustawienia systemu EEP dla Twojego nieba">
Niebo:
</text>
<text name="WL Water" tool_tip="Ustawienia systemu Windlight dla Twojej wody">
Woda WL:
<text name="WL Water" tool_tip="Ustawienia systemu EEP dla Twojej wody">
Woda:
</text>
<text name="Day Cycle" tool_tip="Zapisane ustawienia systemu Windlight dla cyklów dnia.">
<text name="Day Cycle" tool_tip="Zapisane ustawienia systemu EEP dla cyklów dnia.">
Cykl dnia:
</text>
<button name="btn_personal_lighting" label="Własne oświetlenie..." />

View File

@ -4,6 +4,7 @@
<menu_item_check label="Pokaż głos w pobliżu" name="nearby_voice" />
<menu_item_check label="Pokaż listę zablokowanych" name="block_list" />
<menu_item_check label="Używaj nagłówków czatów stylu V1" name="plain_text_chat_history" />
<menu_item_check label="Pokaż ikony profili w nagłówkach czatu" name="chat_header_icons" />
<context_menu label="Rozmiar czcionki" name="font_size">
<menu_item_check label="Mała" name="font_size_small" />
<menu_item_check label="Średnia" name="font_size_medium" />

View File

@ -1580,14 +1580,17 @@ Pobierz ją z https://secondlife.com/support/downloads/
</notification>
<notification name="PauseForUpdate">
Do zalogowania się wymagana jest wersja [VERSION].
Informacje o wydaniu: [URL]
Kliknij OK, aby pobrać i zainstalować.
</notification>
<notification name="OptionalUpdateReady">
Wersja [VERSION] została pobrana i jest gotowa do zainstalowania.
Informacje o wydaniu: [URL]
Kliknij OK, aby zainstalować.
</notification>
<notification name="PromptOptionalUpdate">
Wersja [VERSION] została pobrana i jest gotowa do zainstalowania.
Informacje o wydaniu: [URL]
Kontynuować?
<usetemplate canceltext="Nie teraz" name="yesnocancelbuttons" notext="Pomiń" yestext="Instaluj" />
</notification>
@ -3432,7 +3435,10 @@ to ustawienie lub wybrać inną nazwę.
</notification>
<notification name="BulkUploadCostConfirmation">
Spowoduje to przesłanie [COUNT] elementów o łącznym koszcie [COST]L$. Czy chcesz kontynuować przesyłanie?
<usetemplate name="okcancelbuttons" notext="Anuluj" yestext="Prześlij"/>
<usetemplate name="okcancelignore" ignoretext="Potwierdź przesyłanie zbioru wielu plików" notext="Anuluj" yestext="Prześlij"/>
</notification>
<notification name="NotEnoughMoneyForBulkUpload">
Twój obecny stan konta ([BALANCE]L$) nie wystarczy do przesłania [COUNT] elementów - łączny koszt to [COST]L$.
</notification>
<notification name="BulkUploadNoCompatibleFiles">
Wybranych plików nie można przesłać zbiorczo.
@ -3930,6 +3936,12 @@ Czy chcesz jej/mu wysłać te informacje?
<notification name="PhantomOff">
Tryb widmowy wyłączony.
</notification>
<notification name="MovelockEnabled">
Blokada pozycji została włączona. Użyj Awatar &gt; Ruch &gt; Unieruchom, aby wyłączyć.
</notification>
<notification name="MovelockDisabled">
Blokada pozycji została wyłączona.
</notification>
<notification label="Resetuj wszystkie ustawienia" name="FirestormClearSettingsPrompt">
Resetowanie ustawień może się przydać, gdy napotykasz na jakieś problemy - pamiętaj jednak, że trzeba będzie wprowadzić od nowa wszystkie zmiany, jakie zostały przez Ciebie ustawione do tej pory.

View File

@ -6408,4 +6408,7 @@ Twoja aktualna pozycja: [AVATAR_POS]
<string name="TexturePickerOutfitHeader">
Zdjęcie dla Stroju
</string>
<string name="unknown_script">
(Nieznany skrypt)
</string>
</strings>

View File

@ -4034,6 +4034,12 @@ URL: [AUDIOURL]
<notification name="PhantomOff">
Фантомный режим выключен.
</notification>
<notification name="MovelockEnabled">
Блокировка движения включена.
</notification>
<notification name="MovelockDisabled">
Блокировка движения выключена.
</notification>
<notification label="Сброс всех настроек" name="FirestormClearSettingsPrompt">
Сброс всех настроек может быть полезен, если вы испытываете проблемы; Однако, вам нужно будет переделывать настройки, которые вы сделали ранее.

View File

@ -150,7 +150,7 @@
<!-- Nearby chat panel, resting on top of the bottom toolbar -->
<layout_panel
name="bottom_chat_bar_panel"
height="185"
height="46"
width="1024"
auto_resize="false"
mouse_opaque="false"
@ -161,7 +161,7 @@
name="chat_bar_utility_bar_stack"
top="0"
left="0"
height="185"
height="46"
width="1024"
follows="all"
border_size="0"
@ -264,8 +264,8 @@
<!-- Utility Bar layout panel -->
<layout_panel
name="utility_bar_layout_panel"
height="185"
width="225"
height="46"
width="229"
follows="bottom|left"
layout="topleft"
auto_resize="false"
@ -274,23 +274,10 @@
mouse_opaque="false"
user_resize="false"
>
<!-- Volume controls -->
<panel
name="global_volume_controls_panel"
top="10"
left="2"
height="155"
width="225"
follows="bottom|left"
layout="topleft"
filename="panel_volume_pulldown.xml"
visibility_control="FSVolumeControlsPanelOpen"
>
</panel>
<!-- Utility Bar panel -->
<panel
name="utility_bar_panel"
top="159"
top="20"
left="2"
height="26"
width="225"
@ -411,9 +398,11 @@
follows="bottom|left"
is_toggle="true"
image_unselected="PushButton_Up"
image_selected="PushButton_Down"
control_name="FSVolumeControlsPanelOpen"
/>
image_selected="PushButton_Down">
<button.commit_callback
function="Floater.ToggleOrBringToFront"
parameter="fs_volume_controls" />
</button>
<!-- Volume controls -->
</panel>
<!-- Utility Bar panel -->

View File

@ -29,14 +29,6 @@
name="Hour">
hr.
</floater.string>
<floater.string
name="Hours">
[HOURS] hrs.
</floater.string>
<floater.string
name="Hour">
hr.
</floater.string>
<floater.string
name="Minutes">
[MINUTES] min.

View File

@ -768,18 +768,6 @@ class WindowsManifest(ViewerManifest):
self.path(src='../win_crash_logger/%s/windows-crash-logger.exe' % self.args['configuration'],
dst="win_crash_logger.exe")
# <FS:Ansariel> This is still needed! The method to copy the Visual C++ Runtime files
# in Copy3rdPartyLibs is copying the wrong files for 64bit because Autobuild
# is a 32bit process and Windows will silently copy the 32bit versions from
# the SysWOW64 folder, even if explicitly trying to copy from System32!
if (self.address_size == 64):
with self.prefix(src=os.path.join(self.args['build'], os.pardir, os.pardir, 'indra', 'newview', 'installers', 'windows_x64'), dst="llplugin"):
self.path("msvcp120.dll")
self.path("msvcr120.dll")
with self.prefix(src=os.path.join(self.args['build'], os.pardir, os.pardir, 'indra', 'newview', 'installers', 'windows_x64')):
self.path("msvcp120.dll")
self.path("msvcr120.dll")
if not self.is_packaging_viewer():
self.package_file = "copied_deps"