Merge Firestorm LGPL

master
Ansariel 2019-04-18 13:11:23 +02:00
commit c35758512e
132 changed files with 4352 additions and 2122 deletions

View File

@ -587,3 +587,4 @@ ac3b1332ad4f55b7182a8cbcc1254535a0069f75 5.1.7-release
21b7604680ef6b6ea67f8bebaaa588d6e263bdc1 6.0.1-release
a3143db58a0f6b005232bf9018e7fef17ff9ec90 6.1.0-release
50f0ece62ddb5a244ecb6d00ef5a89d80ad50efa 6.1.1-release
82a89165e5929a6c3073d6cd60a543cb395f147b 6.2.0-release

View File

@ -223,6 +223,7 @@ Ansariel Hiller
MAINT-8085
MAINT-8723
SL-10385
SL-10891
Aralara Rajal
Arare Chantilly
CHUIBUG-191

View File

@ -169,7 +169,7 @@ const U32 ESTATE_ACCESS_MANAGER_REMOVE = 1U << 9;
const U32 ESTATE_ACCESS_NO_REPLY = 1U << 10;
const U32 ESTATE_ACCESS_FAILED_BAN_ESTATE_MANAGER = 1U << 11;
const S32 ESTATE_MAX_MANAGERS = 10;
const S32 ESTATE_MAX_MANAGERS = 15;
const S32 ESTATE_MAX_ACCESS_IDS = 500; // max for access, banned
const S32 ESTATE_MAX_GROUP_IDS = (S32) ESTATE_ACCESS_MAX_ENTRIES_PER_PACKET;

View File

@ -520,6 +520,13 @@ void LLLineEditor::setCursorToEnd()
deselect();
}
void LLLineEditor::resetScrollPosition()
{
mScrollHPos = 0;
// make sure cursor says in visible range
setCursor(getCursor());
}
BOOL LLLineEditor::canDeselect() const
{
return hasSelection();

View File

@ -219,6 +219,9 @@ public:
void setCursor( S32 pos );
void setCursorToEnd();
// set scroll to earliest position it can reasonable set
void resetScrollPosition();
// Selects characters 'start' to 'end'.
void setSelection(S32 start, S32 end);
virtual void getSelectionRange(S32 *position, S32 *length) const;

View File

@ -327,6 +327,7 @@ void LLSpinCtrl::forceSetValue(const LLSD& value )
LLF32UICtrl::setValue(value);
updateEditor();
mEditor->resetScrollPosition();
}
}
@ -392,7 +393,9 @@ void LLSpinCtrl::onEditorCommit( const LLSD& data )
if( success )
{
updateEditor();
// We commited and clamped value
// try to display as much as possible
mEditor->resetScrollPosition();
}
else
{
@ -529,6 +532,7 @@ BOOL LLSpinCtrl::handleKeyHere(KEY key, MASK mask)
// text editors don't support revert normally (due to user confusion)
// but not allowing revert on a spinner seems dangerous
updateEditor();
mEditor->resetScrollPosition();
mEditor->setFocus(FALSE);
return TRUE;
}

View File

@ -264,13 +264,9 @@ void LLUI::dirtyRect(LLRect rect)
void LLUI::setMousePositionScreen(S32 x, S32 y)
{
S32 screen_x, screen_y;
#if defined(LL_DARWIN)
screen_x = ll_round((F32)x);
screen_y = ll_round((F32)y);
#else
screen_x = ll_round((F32)x * getScaleFactor().mV[VX]);
screen_y = ll_round((F32)y * getScaleFactor().mV[VY]);
#endif
LLView::getWindow()->setCursorPosition(LLCoordGL(screen_x, screen_y).convert());
}

View File

@ -353,6 +353,10 @@ attributedStringInfo getSegments(NSAttributedString *str)
- (void) mouseDown:(NSEvent *)theEvent
{
NSPoint mPoint = gHiDPISupport ? [self convertPointToBacking:[theEvent locationInWindow]] : [theEvent locationInWindow];
mMousePos[0] = mPoint.x;
mMousePos[1] = mPoint.y;
// Apparently people still use this?
if ([theEvent modifierFlags] & NSCommandKeyMask &&
!([theEvent modifierFlags] & NSControlKeyMask) &&
@ -390,11 +394,17 @@ attributedStringInfo getSegments(NSAttributedString *str)
- (void) rightMouseDown:(NSEvent *)theEvent
{
NSPoint mPoint = gHiDPISupport ? [self convertPointToBacking:[theEvent locationInWindow]] : [theEvent locationInWindow];
mMousePos[0] = mPoint.x;
mMousePos[1] = mPoint.y;
callRightMouseDown(mMousePos, [theEvent modifierFlags]);
}
- (void) rightMouseUp:(NSEvent *)theEvent
{
NSPoint mPoint = gHiDPISupport ? [self convertPointToBacking:[theEvent locationInWindow]] : [theEvent locationInWindow];
mMousePos[0] = mPoint.x;
mMousePos[1] = mPoint.y;
callRightMouseUp(mMousePos, [theEvent modifierFlags]);
}
@ -441,11 +451,17 @@ attributedStringInfo getSegments(NSAttributedString *str)
- (void) otherMouseDown:(NSEvent *)theEvent
{
NSPoint mPoint = gHiDPISupport ? [self convertPointToBacking:[theEvent locationInWindow]] : [theEvent locationInWindow];
mMousePos[0] = mPoint.x;
mMousePos[1] = mPoint.y;
callMiddleMouseDown(mMousePos, [theEvent modifierFlags]);
}
- (void) otherMouseUp:(NSEvent *)theEvent
{
NSPoint mPoint = gHiDPISupport ? [self convertPointToBacking:[theEvent locationInWindow]] : [theEvent locationInWindow];
mMousePos[0] = mPoint.x;
mMousePos[1] = mPoint.y;
callMiddleMouseUp(mMousePos, [theEvent modifierFlags]);
}

View File

@ -879,10 +879,11 @@ BOOL LLWindowMacOSX::getSize(LLCoordScreen *size)
size->mX = sz.width;
size->mY = sz.height;
err = noErr;
}
else
{
LL_ERRS() << "LLWindowMacOSX::getPosition(): no window and not fullscreen!" << LL_ENDL;
LL_ERRS() << "LLWindowMacOSX::getSize(): no window and not fullscreen!" << LL_ENDL;
}
return (err == noErr);
@ -904,10 +905,13 @@ BOOL LLWindowMacOSX::getSize(LLCoordWindow *size)
size->mX = sz.width;
size->mY = sz.height;
err = noErr;
}
else
{
LL_ERRS() << "LLWindowMacOSX::getPosition(): no window and not fullscreen!" << LL_ENDL;
LL_ERRS() << "LLWindowMacOSX::getSize(): no window and not fullscreen!" << LL_ENDL;
}
return (err == noErr);

View File

@ -4096,9 +4096,7 @@ void LLWindowWin32::setDPIAwareness()
F32 LLWindowWin32::getSystemUISize()
{
// <FS:Ansariel> Type fix
//float scale_value = 0;
F32 scale_value = 0.f;
F32 scale_value = 1.f;
HWND hWnd = (HWND)getPlatformWindow();
HDC hdc = GetDC(hWnd);
HMONITOR hMonitor;

View File

@ -159,7 +159,6 @@ set(viewer_SOURCE_FILES
fsfloateraddtocontactset.cpp
fsfloaterassetblacklist.cpp
fsfloateravatarrendersettings.cpp
fsfloaterbantime.cpp
fsfloaterblocklist.cpp
fsfloatercontacts.cpp
fsfloatercontactsetconfiguration.cpp
@ -330,6 +329,7 @@ set(viewer_SOURCE_FILES
llfloateravatarpicker.cpp
llfloateravatarrendersettings.cpp
llfloateravatartextures.cpp
llfloaterbanduration.cpp
llfloaterbeacons.cpp
llfloaterbigpreview.cpp
llfloaterbuildoptions.cpp
@ -913,7 +913,6 @@ set(viewer_HEADER_FILES
fsfloateraddtocontactset.h
fsfloaterassetblacklist.h
fsfloateravatarrendersettings.h
fsfloaterbantime.h
fsfloaterblocklist.h
fsfloatercontacts.h
fsfloatercontactsetconfiguration.h
@ -1087,6 +1086,7 @@ set(viewer_HEADER_FILES
llfloateravatarpicker.h
llfloateravatarrendersettings.h
llfloateravatartextures.h
llfloaterbanduration.h
llfloaterbeacons.h
llfloaterbigpreview.h
llfloaterbuildoptions.h

View File

@ -1 +1 @@
6.2.0
6.2.1

View File

@ -21500,6 +21500,19 @@ Change of this parameter will affect the layout of buttons in notification toast
<key>Value</key>
<integer>0</integer>
</map>
<key>ResetUIScaleOnFirstRun</key>
<map>
<key>Comment</key>
<string>Resets the UI scale factor on first run due to changed display scaling behavior</string>
<key>Persist</key>
<integer>1</integer>
<key>Type</key>
<string>Boolean</string>
<key>Value</key>
<integer>1</integer>
<key>Backup</key>
<integer>0</integer>
</map>
<key>FSShowServerVersionChangeNotice</key>
<map>
<key>Comment</key>
@ -25159,7 +25172,7 @@ Change of this parameter will affect the layout of buttons in notification toast
<key>Type</key>
<string>Boolean</string>
<key>Value</key>
<real>0</real>
<integer>0</integer>
</map>
<key>FSLookAtTargetMaxDistance</key>
<map>

View File

@ -815,6 +815,11 @@ bool cmd_line_chat(const std::string& revised_text, EChatType type, bool from_ge
gSavedPerAccountSettings.setF32("AvatarHoverOffsetZ", gSavedPerAccountSettings.getF32("AvatarHoverOffsetZ") - 0.05f);
return false;
}
else if (command == "/zoffset_reset")
{
gSavedPerAccountSettings.setF32("AvatarHoverOffsetZ", 0.f);
return false;
}
else if (command == sFSCmdLineOfferTp())
{
LLUUID target_key;

View File

@ -1,85 +0,0 @@
/**
* @file fsfloaterbantime.cpp
* @brief Floater for ban time dialog
*
* $LicenseInfo:firstyear=2012&license=fsviewerlgpl$
* Phoenix Firestorm Viewer Source Code
* Copyright (C) 2018, Liny Odell
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation;
* version 2.1 of the License only.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
*
* The Phoenix Firestorm Project, Inc., 1831 Oakwood Drive, Fairmont, Minnesota 56031-3225 USA
* http://www.firestormviewer.org
* $/LicenseInfo$
*/
#include "llviewerprecompiledheaders.h"
#include "fsfloaterbantime.h"
#include "llfloaterreg.h"
#include "llspinctrl.h"
FSFloaterBanTime::FSFloaterBanTime(const LLSD& target)
: LLFloater(target)
{
}
BOOL FSFloaterBanTime::postBuild()
{
childSetAction("BanConfirmButton", boost::bind(&FSFloaterBanTime::onClickBan, this));
childSetAction("BanCancelButton", boost::bind(&FSFloaterBanTime::onClickCancel, this));
return TRUE;
}
FSFloaterBanTime* FSFloaterBanTime::show(select_callback_t callback, const LLUUID& id)
{
FSFloaterBanTime* floater = LLFloaterReg::showTypedInstance<FSFloaterBanTime>("fs_ban_time");
if (!floater)
{
LL_WARNS() << "Cannot instantiate ban time floater" << LL_ENDL;
return NULL;
}
floater->mSelectionCallback = callback;
floater->mAvatar_id = id;
return floater;
}
void FSFloaterBanTime::onClickCancel()
{
closeFloater();
}
void FSFloaterBanTime::onClickBan()
{
if (mSelectionCallback)
{
LLSpinCtrl* timectrl = findChild<LLSpinCtrl>("ban_time");
if (timectrl)
{
S32 time = timectrl->getValue().asInteger();
if (time != 0)
{
LLDate now = LLDate::now();
time = now.secondsSinceEpoch() + (time * 3600);
}
mSelectionCallback(mAvatar_id, time);
timectrl->set(0.f);
}
}
closeFloater();
}

View File

@ -1,49 +0,0 @@
/**
* @file fsfloaterbantime.cpp
* @brief Floater for ban time dialog
*
* $LicenseInfo:firstyear=2012&license=fsviewerlgpl$
* Phoenix Firestorm Viewer Source Code
* Copyright (C) 2018, Liny Odell
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation;
* version 2.1 of the License only.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
*
* The Phoenix Firestorm Project, Inc., 1831 Oakwood Drive, Fairmont, Minnesota 56031-3225 USA
* http://www.firestormviewer.org
* $/LicenseInfo$
*/
#ifndef FS_FLOATERBANTIME_H
#define FS_FLOATERBANTIME_H
#include "llfloater.h"
class FSFloaterBanTime : public LLFloater
{
public:
FSFloaterBanTime(const LLSD& target);
BOOL postBuild();
typedef boost::function<void(const LLUUID&, const S32 time)> select_callback_t;
static FSFloaterBanTime* show(select_callback_t callback, const LLUUID& id);
private:
~FSFloaterBanTime(){};
void onClickBan();
void onClickCancel();
LLUUID mAvatar_id;
select_callback_t mSelectionCallback;
};
#endif // FS_FLOATERBANTIME_H

View File

@ -2298,8 +2298,8 @@ bool LLAvatarActions::callbackEstateBan(const LLSD& notification, const LLSD& re
}
}
LLEstateInfoModel::instance().nextInvoice();
LLPanelEstateInfo::sendEstateAccessDelta(flags, itAgent->asUUID());
LLFloaterRegionInfo::nextInvoice();
LLPanelEstateAccess::sendEstateAccessDelta(flags, itAgent->asUUID());
}
}
return false;

View File

@ -34,101 +34,15 @@
// viewer
#include "llagent.h"
#include "llfloaterregioninfo.h" // for invoice id
#include "llviewerregion.h"
#include "llcorehttputil.h"
//=========================================================================
namespace
{
class LLDispatchEstateUpdateInfo : public LLDispatchHandler
{
public:
LLDispatchEstateUpdateInfo() {}
virtual ~LLDispatchEstateUpdateInfo() {}
virtual bool operator()(const LLDispatcher* dispatcher, const std::string& key,
const LLUUID& invoice, const sparam_t& strings)
{
// key = "estateupdateinfo"
// strings[0] = estate name
// strings[1] = str(owner_id)
// strings[2] = str(estate_id)
// strings[3] = str(estate_flags)
// strings[4] = str((S32)(sun_hour * 1024))
// strings[5] = str(parent_estate_id)
// strings[6] = str(covenant_id)
// strings[7] = str(covenant_timestamp)
// strings[8] = str(send_to_agent_only)
// strings[9] = str(abuse_email_addr)
LL_DEBUGS("ESTATEINFOM") << "Received estate update" << LL_ENDL;
// Update estate info model.
// This will call LLPanelEstateInfo::refreshFromEstate().
// *TODO: Move estate message handling stuff to llestateinfomodel.cpp.
LLEstateInfoModel::instance().updateEstateInfo(strings);
return true;
}
};
class LLDispatchSetEstateAccess : public LLDispatchHandler
{
public:
LLDispatchSetEstateAccess() {}
virtual ~LLDispatchSetEstateAccess() {}
virtual bool operator()(
const LLDispatcher* dispatcher, const std::string& key,
const LLUUID& invoice, const sparam_t& strings)
{
// key = "setaccess"
// strings[0] = str(estate_id)
// strings[1] = str(packed_access_lists)
// strings[2] = str(num allowed agent ids)
// strings[3] = str(num allowed group ids)
// strings[4] = str(num banned agent ids)
// strings[5] = str(num estate manager agent ids)
// strings[6] = bin(uuid)
// strings[7] = bin(uuid)
// strings[8] = bin(uuid)
// ...
LLEstateInfoModel::instance().updateAccessInfo(strings);
return true;
}
};
class LLDispatchSetEstateExperience : public LLDispatchHandler
{
public:
virtual bool operator()(const LLDispatcher* dispatcher, const std::string& key,
const LLUUID& invoice, const sparam_t& strings)
{
// key = "setexperience"
// strings[0] = str(estate_id)
// strings[1] = str(send_to_agent_only)
// strings[2] = str(num blocked)
// strings[3] = str(num trusted)
// strings[4] = str(num allowed)
// strings[8] = bin(uuid) ...
// ...
LLEstateInfoModel::instance().updateExperienceInfo(strings);
return true;
}
};
}
//=========================================================================
LLEstateInfoModel::LLEstateInfoModel():
mID(0),
mFlags(0),
mSunHour(0),
mRegion(nullptr)
LLEstateInfoModel::LLEstateInfoModel()
: mID(0)
, mFlags(0)
, mSunHour(0)
{
}
@ -137,52 +51,40 @@ boost::signals2::connection LLEstateInfoModel::setUpdateCallback(const update_si
return mUpdateSignal.connect(cb);
}
boost::signals2::connection LLEstateInfoModel::setUpdateAccessCallback(const update_flaged_signal_t::slot_type& cb)
{
return mUpdateAccess.connect(cb);
}
boost::signals2::connection LLEstateInfoModel::setUpdateExperienceCallback(const update_signal_t::slot_type& cb)
{
return mUpdateExperience.connect(cb);
}
boost::signals2::connection LLEstateInfoModel::setCommitCallback(const update_signal_t::slot_type& cb)
{
return mCommitSignal.connect(cb);
}
void LLEstateInfoModel::setRegion(LLViewerRegion* region)
{
if (region != mRegion)
{
mRegion = region;
if (mRegion)
{
nextInvoice();
sendEstateOwnerMessage("getinfo", strings_t());
}
}
}
void LLEstateInfoModel::clearRegion()
{
mRegion = nullptr;
}
void LLEstateInfoModel::sendEstateInfo()
{
if (!commitEstateInfoCaps())
{
// the caps method failed, try the old way
nextInvoice();
LLFloaterRegionInfo::nextInvoice();
commitEstateInfoDataserver();
}
}
void LLEstateInfoModel::updateEstateInfo(const strings_t& strings)
bool LLEstateInfoModel::getUseFixedSun() const { return getFlag(REGION_FLAGS_SUN_FIXED); }
bool LLEstateInfoModel::getIsExternallyVisible() const { return getFlag(REGION_FLAGS_EXTERNALLY_VISIBLE); }
bool LLEstateInfoModel::getAllowDirectTeleport() const { return getFlag(REGION_FLAGS_ALLOW_DIRECT_TELEPORT); }
bool LLEstateInfoModel::getDenyAnonymous() const { return getFlag(REGION_FLAGS_DENY_ANONYMOUS); }
bool LLEstateInfoModel::getDenyAgeUnverified() const { return getFlag(REGION_FLAGS_DENY_AGEUNVERIFIED); }
bool LLEstateInfoModel::getAllowVoiceChat() const { return getFlag(REGION_FLAGS_ALLOW_VOICE); }
bool LLEstateInfoModel::getAllowAccessOverride() const { return getFlag(REGION_FLAGS_ALLOW_ACCESS_OVERRIDE); }
bool LLEstateInfoModel::getAllowEnvironmentOverride() const { return getFlag(REGION_FLAGS_ALLOW_ENVIRONMENT_OVERRIDE); }
void LLEstateInfoModel::setUseFixedSun(bool val) { setFlag(REGION_FLAGS_SUN_FIXED, val); }
void LLEstateInfoModel::setIsExternallyVisible(bool val) { setFlag(REGION_FLAGS_EXTERNALLY_VISIBLE, val); }
void LLEstateInfoModel::setAllowDirectTeleport(bool val) { setFlag(REGION_FLAGS_ALLOW_DIRECT_TELEPORT, val); }
void LLEstateInfoModel::setDenyAnonymous(bool val) { setFlag(REGION_FLAGS_DENY_ANONYMOUS, val); }
void LLEstateInfoModel::setDenyAgeUnverified(bool val) { setFlag(REGION_FLAGS_DENY_AGEUNVERIFIED, val); }
void LLEstateInfoModel::setAllowVoiceChat(bool val) { setFlag(REGION_FLAGS_ALLOW_VOICE, val); }
void LLEstateInfoModel::setAllowAccessOverride(bool val) { setFlag(REGION_FLAGS_ALLOW_ACCESS_OVERRIDE, val); }
void LLEstateInfoModel::setAllowEnvironmentOverride(bool val) { setFlag(REGION_FLAGS_ALLOW_ENVIRONMENT_OVERRIDE, val); }
void LLEstateInfoModel::update(const strings_t& strings)
{
// NOTE: LLDispatcher extracts strings with an extra \0 at the
// end. If we pass the std::string direct to the UI/renderer
@ -193,10 +95,10 @@ void LLEstateInfoModel::updateEstateInfo(const strings_t& strings)
mFlags = strtoul(strings[3].c_str(), NULL, 10);
mSunHour = ((F32)(strtod(strings[4].c_str(), NULL)))/1024.0f;
LL_DEBUGS("ESTATEINFOM") << "Received estate info: "
LL_DEBUGS("WindlightSync") << "Received estate info: "
<< "is_sun_fixed = " << getUseFixedSun()
<< ", sun_hour = " << getSunHour() << LL_ENDL;
LL_DEBUGS("ESTATEINFOM") << getInfoDump() << LL_ENDL;
LL_DEBUGS() << getInfoDump() << LL_ENDL;
// Update region owner.
LLViewerRegion* regionp = gAgent.getRegion();
@ -206,205 +108,20 @@ void LLEstateInfoModel::updateEstateInfo(const strings_t& strings)
mUpdateSignal();
}
void LLEstateInfoModel::updateAccessInfo(const strings_t& strings)
{
S32 index = 1; // skip estate_id
U32 access_flags = strtoul(strings[index++].c_str(), NULL, 10);
S32 num_allowed_agents = strtol(strings[index++].c_str(), NULL, 10);
S32 num_allowed_groups = strtol(strings[index++].c_str(), NULL, 10);
S32 num_banned_agents = strtol(strings[index++].c_str(), NULL, 10);
S32 num_estate_managers = strtol(strings[index++].c_str(), NULL, 10);
// sanity ckecks
if (num_allowed_agents > 0
&& !(access_flags & ESTATE_ACCESS_ALLOWED_AGENTS))
{
LL_WARNS("ESTATEINFOM") << "non-zero count for allowed agents, but no corresponding flag" << LL_ENDL;
}
if (num_allowed_groups > 0
&& !(access_flags & ESTATE_ACCESS_ALLOWED_GROUPS))
{
LL_WARNS("ESTATEINFOM") << "non-zero count for allowed groups, but no corresponding flag" << LL_ENDL;
}
if (num_banned_agents > 0
&& !(access_flags & ESTATE_ACCESS_BANNED_AGENTS))
{
LL_WARNS("ESTATEINFOM") << "non-zero count for banned agents, but no corresponding flag" << LL_ENDL;
}
if (num_estate_managers > 0
&& !(access_flags & ESTATE_ACCESS_MANAGERS))
{
LL_WARNS("ESTATEINFOM") << "non-zero count for managers, but no corresponding flag" << LL_ENDL;
}
// grab the UUID's out of the string fields
if (access_flags & ESTATE_ACCESS_ALLOWED_AGENTS)
{
mAllowedAgents.clear();
for (S32 i = 0; i < num_allowed_agents && i < ESTATE_MAX_ACCESS_IDS; i++)
{
LLUUID id;
memcpy(id.mData, strings[index++].data(), UUID_BYTES); /* Flawfinder: ignore */
mAllowedAgents.insert(id);
}
}
if (access_flags & ESTATE_ACCESS_ALLOWED_GROUPS)
{
mAllowedGroups.clear();
for (S32 i = 0; i < num_allowed_groups && i < ESTATE_MAX_GROUP_IDS; i++)
{
LLUUID id;
memcpy(id.mData, strings[index++].data(), UUID_BYTES); /* Flawfinder: ignore */
mAllowedGroups.insert(id);
}
}
if (access_flags & ESTATE_ACCESS_BANNED_AGENTS)
{
mBannedAgents.clear();
for (S32 i = 0; i < num_banned_agents && i < ESTATE_MAX_ACCESS_IDS; i++)
{
LLUUID id;
memcpy(id.mData, strings[index++].data(), UUID_BYTES); /* Flawfinder: ignore */
mBannedAgents.insert(id);
}
}
if (access_flags & ESTATE_ACCESS_MANAGERS)
{
mEstateManagers.clear();
// There should be only ESTATE_MAX_MANAGERS people in the list, but if the database gets more (SL-46107) don't
// truncate the list unless it's really big. Go ahead and show the extras so the user doesn't get confused,
// and they can still remove them.
for (S32 i = 0; i < num_estate_managers && i < (ESTATE_MAX_MANAGERS * 4); i++)
{
LLUUID id;
memcpy(id.mData, strings[index++].data(), UUID_BYTES); /* Flawfinder: ignore */
mEstateManagers.insert(id);
}
}
// Update the buttons which may change based on the list contents but also needs to account for general access features.
mUpdateAccess(access_flags);
}
void LLEstateInfoModel::updateExperienceInfo(const strings_t& strings)
{
strings_t::const_iterator it = strings.begin();
++it; // U32 estate_id = strtol((*it).c_str(), NULL, 10);
++it; // U32 send_to_agent_only = strtoul((*(++it)).c_str(), NULL, 10);
LLUUID id;
S32 num_blocked = strtol((*(it++)).c_str(), NULL, 10);
S32 num_trusted = strtol((*(it++)).c_str(), NULL, 10);
S32 num_allowed = strtol((*(it++)).c_str(), NULL, 10);
mExperienceAllowed.clear();
mExperienceTrusted.clear();
mExperienceBlocked.clear();
while (num_blocked-- > 0)
{
memcpy(id.mData, (*(it++)).data(), UUID_BYTES);
mExperienceBlocked.insert(id);
}
while (num_trusted-- > 0)
{
memcpy(id.mData, (*(it++)).data(), UUID_BYTES);
mExperienceTrusted.insert(id);
}
while (num_allowed-- > 0)
{
memcpy(id.mData, (*(it++)).data(), UUID_BYTES);
mExperienceAllowed.insert(id);
}
mUpdateExperience();
}
void LLEstateInfoModel::notifyCommit()
{
mCommitSignal();
}
void LLEstateInfoModel::initSingleton()
{
gMessageSystem->setHandlerFunc("EstateOwnerMessage", &processEstateOwnerRequest);
// name.assign("setowner");
// static LLDispatchSetEstateOwner set_owner;
// dispatch.addHandler(name, &set_owner);
static LLDispatchEstateUpdateInfo estate_update_info;
mDispatch.addHandler("estateupdateinfo", &estate_update_info);
static LLDispatchSetEstateAccess set_access;
mDispatch.addHandler("setaccess", &set_access);
static LLDispatchSetEstateExperience set_experience;
mDispatch.addHandler("setexperience", &set_experience);
}
void LLEstateInfoModel::sendEstateOwnerMessage(const std::string& request, const strings_t& strings)
{
if (!mRegion)
{
LL_WARNS("ESTATEINFOM") << "No selected region." << LL_ENDL;
return;
}
LLMessageSystem* msg(gMessageSystem);
LLUUID invoice(LLEstateInfoModel::instance().getLastInvoice());
LL_INFOS() << "Sending estate request '" << request << "'" << LL_ENDL;
msg->newMessage("EstateOwnerMessage");
msg->nextBlockFast(_PREHASH_AgentData);
msg->addUUIDFast(_PREHASH_AgentID, gAgent.getID());
msg->addUUIDFast(_PREHASH_SessionID, gAgent.getSessionID());
msg->addUUIDFast(_PREHASH_TransactionID, LLUUID::null); //not used
msg->nextBlock("MethodData");
msg->addString("Method", request);
msg->addUUID("Invoice", invoice);
if (strings.empty())
{
msg->nextBlock("ParamList");
msg->addString("Parameter", NULL);
}
else
{
strings_t::const_iterator it = strings.begin();
strings_t::const_iterator end = strings.end();
for (; it != end; ++it)
{
msg->nextBlock("ParamList");
msg->addString("Parameter", *it);
}
}
msg->sendReliable(mRegion->getHost());
}
//== PRIVATE STUFF ============================================================
// tries to send estate info using a cap; returns true if it succeeded
bool LLEstateInfoModel::commitEstateInfoCaps()
{
if (!mRegion)
{
LL_WARNS("ESTATEINFOM") << "Attempt to update estate caps with no anchor region! Don't do that!" << LL_ENDL;
return false;
}
std::string url = mRegion->getCapability("EstateChangeInfo");
std::string url = gAgent.getRegionCapability("EstateChangeInfo");
if (url.empty())
{
LL_WARNS("ESTATEINFOM") << "No EstateChangeInfo cap from region." << LL_ENDL;
// whoops, couldn't find the cap, so bail out
return false;
}
@ -433,14 +150,13 @@ void LLEstateInfoModel::commitEstateInfoCapsCoro(std::string url)
body["deny_age_unverified"] = getDenyAgeUnverified();
body["allow_voice_chat"] = getAllowVoiceChat();
body["override_public_access"] = getAllowAccessOverride();
body["override_environment"] = getAllowEnvironmentOverride();
body["invoice"] = getLastInvoice();
body["invoice"] = LLFloaterRegionInfo::getLastInvoice();
LL_DEBUGS("ESTATEINFOM") << "Sending estate caps: "
LL_DEBUGS("WindlightSync") << "Sending estate caps: "
<< "is_sun_fixed = " << getUseFixedSun()
<< ", sun_hour = " << getSunHour() << LL_ENDL;
LL_DEBUGS("ESTATEINFOM") << body << LL_ENDL;
LL_DEBUGS() << body << LL_ENDL;
LLSD result = httpAdapter->postAndSuspend(httpRequest, url, body);
@ -449,12 +165,12 @@ void LLEstateInfoModel::commitEstateInfoCapsCoro(std::string url)
if (status)
{
LL_INFOS("ESTATEINFOM") << "Committed estate info" << LL_ENDL;
LL_INFOS() << "Committed estate info" << LL_ENDL;
LLEstateInfoModel::instance().notifyCommit();
}
else
{
LL_WARNS("ESTATEINFOM") << "Failed to commit estate info " << LL_ENDL;
LL_WARNS() << "Failed to commit estate info " << LL_ENDL;
}
}
@ -467,15 +183,10 @@ void LLEstateInfoModel::commitEstateInfoCapsCoro(std::string url)
// strings[3] = str((S32)(sun_hour * 1024.f))
void LLEstateInfoModel::commitEstateInfoDataserver()
{
if (!mRegion)
{
LL_WARNS("ESTATEINFOM") << "No selected region." << LL_ENDL;
return;
}
LL_DEBUGS("ESTATEINFOM") << "Sending estate info: "
LL_DEBUGS("WindlightSync") << "Sending estate info: "
<< "is_sun_fixed = " << getUseFixedSun()
<< ", sun_hour = " << getSunHour() << LL_ENDL;
LL_DEBUGS("ESTATEINFOM") << getInfoDump() << LL_ENDL;
LL_DEBUGS() << getInfoDump() << LL_ENDL;
LLMessageSystem* msg = gMessageSystem;
msg->newMessage("EstateOwnerMessage");
@ -486,7 +197,7 @@ void LLEstateInfoModel::commitEstateInfoDataserver()
msg->nextBlock("MethodData");
msg->addString("Method", "estatechangeinfo");
msg->addUUID("Invoice", getLastInvoice());
msg->addUUID("Invoice", LLFloaterRegionInfo::getLastInvoice());
msg->nextBlock("ParamList");
msg->addString("Parameter", getName());
@ -497,7 +208,7 @@ void LLEstateInfoModel::commitEstateInfoDataserver()
msg->nextBlock("ParamList");
msg->addString("Parameter", llformat("%d", (S32) (getSunHour() * 1024.0f)));
msg->sendReliable(mRegion->getHost());
gAgent.sendMessage();
}
std::string LLEstateInfoModel::getInfoDump()
@ -513,28 +224,9 @@ std::string LLEstateInfoModel::getInfoDump()
dump["deny_age_unverified" ] = getDenyAgeUnverified();
dump["allow_voice_chat" ] = getAllowVoiceChat();
dump["override_public_access"] = getAllowAccessOverride();
dump["override_environment"] = getAllowEnvironmentOverride();
dump["override_environment"] = getAllowEnvironmentOverride();
std::stringstream dump_str;
dump_str << dump;
return dump_str.str();
}
// static
void LLEstateInfoModel::processEstateOwnerRequest(LLMessageSystem* msg, void**)
{
// unpack the message
std::string request;
LLUUID invoice;
LLDispatcher::sparam_t strings;
LLDispatcher::unpackMessage(msg, request, invoice, strings);
if (invoice != LLEstateInfoModel::instance().getLastInvoice())
{
LL_WARNS("ESTATEINFOM") << "Mismatched Estate message: " << request << LL_ENDL;
return;
}
//dispatch the message
LLEstateInfoModel::instance().mDispatch.dispatch(request, invoice, strings);
}

View File

@ -32,123 +32,78 @@ class LLMessageSystem;
#include "llsingleton.h"
#include "llcoros.h"
#include "lleventcoro.h"
#include "lldispatcher.h"
#include "llregionflags.h"
class LLViewerRegion;
/**
* Contains estate info, notifies interested parties of its changes.
*/
class LLEstateInfoModel : public LLSingleton<LLEstateInfoModel>
{
LLSINGLETON_C11(LLEstateInfoModel);
LLSINGLETON(LLEstateInfoModel);
LOG_CLASS(LLEstateInfoModel);
public:
typedef std::vector<std::string> strings_t;
typedef boost::signals2::signal<void()> update_signal_t;
typedef boost::signals2::signal<void(U32)> update_flaged_signal_t;
typedef boost::signals2::connection connection_t;
typedef boost::signals2::signal<void()> update_signal_t;
boost::signals2::connection setUpdateCallback(const update_signal_t::slot_type& cb); /// the model has been externally updated
boost::signals2::connection setCommitCallback(const update_signal_t::slot_type& cb); /// our changes have been applied
connection_t setUpdateCallback(const update_signal_t::slot_type& cb); /// the model has been externally updated
connection_t setUpdateAccessCallback(const update_flaged_signal_t::slot_type& cb);
connection_t setUpdateExperienceCallback(const update_signal_t::slot_type& cb);
connection_t setCommitCallback(const update_signal_t::slot_type& cb); /// our changes have been applied
void setRegion(LLViewerRegion* region);
void clearRegion();
void sendEstateInfo(); /// send estate info to the simulator
void sendEstateInfo(); /// send estate info to the simulator
// getters
bool getUseFixedSun() const { return getFlag(REGION_FLAGS_SUN_FIXED); }
bool getIsExternallyVisible() const { return getFlag(REGION_FLAGS_EXTERNALLY_VISIBLE); }
bool getAllowDirectTeleport() const { return getFlag(REGION_FLAGS_ALLOW_DIRECT_TELEPORT); }
bool getDenyAnonymous() const { return getFlag(REGION_FLAGS_DENY_ANONYMOUS); }
bool getDenyAgeUnverified() const { return getFlag(REGION_FLAGS_DENY_AGEUNVERIFIED); }
bool getAllowVoiceChat() const { return getFlag(REGION_FLAGS_ALLOW_VOICE); }
bool getAllowAccessOverride() const { return getFlag(REGION_FLAGS_ALLOW_ACCESS_OVERRIDE); }
bool getAllowEnvironmentOverride() const { return getFlag(REGION_FLAGS_ALLOW_ENVIRONMENT_OVERRIDE); }
bool getUseFixedSun() const;
bool getIsExternallyVisible() const;
bool getAllowDirectTeleport() const;
bool getDenyAnonymous() const;
bool getDenyAgeUnverified() const;
bool getAllowVoiceChat() const;
bool getAllowAccessOverride() const;
bool getAllowEnvironmentOverride() const;
const std::string& getName() const { return mName; }
const LLUUID& getOwnerID() const { return mOwnerID; }
U32 getID() const { return mID; }
F32 getSunHour() const { return getUseFixedSun() ? mSunHour : 0.f; }
const std::string& getName() const { return mName; }
const LLUUID& getOwnerID() const { return mOwnerID; }
U32 getID() const { return mID; }
F32 getSunHour() const { return getUseFixedSun() ? mSunHour : 0.f; }
// setters
void setUseFixedSun(bool val) { setFlag(REGION_FLAGS_SUN_FIXED, val); }
void setIsExternallyVisible(bool val) { setFlag(REGION_FLAGS_EXTERNALLY_VISIBLE, val); }
void setAllowDirectTeleport(bool val) { setFlag(REGION_FLAGS_ALLOW_DIRECT_TELEPORT, val); }
void setDenyAnonymous(bool val) { setFlag(REGION_FLAGS_DENY_ANONYMOUS, val); }
void setDenyAgeUnverified(bool val) { setFlag(REGION_FLAGS_DENY_AGEUNVERIFIED, val); }
void setAllowVoiceChat(bool val) { setFlag(REGION_FLAGS_ALLOW_VOICE, val); }
void setAllowAccessOverride(bool val) { setFlag(REGION_FLAGS_ALLOW_ACCESS_OVERRIDE, val); }
void setAllowEnvironmentOverride(bool val) { setFlag(REGION_FLAGS_ALLOW_ENVIRONMENT_OVERRIDE, val); }
void setUseFixedSun(bool val);
void setIsExternallyVisible(bool val);
void setAllowDirectTeleport(bool val);
void setDenyAnonymous(bool val);
void setDenyAgeUnverified(bool val);
void setAllowVoiceChat(bool val);
void setAllowAccessOverride(bool val);
void setAllowEnvironmentOverride(bool val);
void setSunHour(F32 sun_hour) { mSunHour = sun_hour; }
const uuid_set_t & getAllowedAgents() const { return mAllowedAgents; }
const uuid_set_t & getAllowedGroups() const { return mAllowedGroups; }
const uuid_set_t & getBannedAgents() const { return mBannedAgents; }
const uuid_set_t & getEstateManagers() const { return mEstateManagers; }
const uuid_set_t & getAllowedExperiences() const { return mExperienceAllowed; }
const uuid_set_t & getTrustedExperiences() const { return mExperienceTrusted; }
const uuid_set_t & getBlockedExperiences() const { return mExperienceBlocked; }
void sendEstateOwnerMessage(const std::string& request, const strings_t& strings);
//---------------------------------------------------------------------
/// refresh model with data from the incoming server message
void updateEstateInfo(const strings_t& strings);
void updateAccessInfo(const strings_t& strings);
void updateExperienceInfo(const strings_t& strings);
const LLUUID & getLastInvoice() { return mRequestInvoice; }
const LLUUID & nextInvoice() { mRequestInvoice.generate(); return mRequestInvoice; }
void setSunHour(F32 sun_hour) { mSunHour = sun_hour; }
protected:
typedef std::vector<std::string> strings_t;
void notifyCommit();
friend class LLDispatchEstateUpdateInfo;
virtual void initSingleton() override;
/// refresh model with data from the incoming server message
void update(const strings_t& strings);
void notifyCommit();
private:
bool commitEstateInfoCaps();
void commitEstateInfoDataserver();
inline bool getFlag(U64 flag) const;
inline void setFlag(U64 flag, bool val);
U64 getFlags() const { return mFlags; }
std::string getInfoDump();
bool commitEstateInfoCaps();
void commitEstateInfoDataserver();
inline bool getFlag(U64 flag) const;
inline void setFlag(U64 flag, bool val);
U64 getFlags() const { return mFlags; }
std::string getInfoDump();
// estate info
std::string mName; /// estate name
LLUUID mOwnerID; /// estate owner id
U32 mID; /// estate id
U64 mFlags; /// estate flags
F32 mSunHour; /// estate sun hour
std::string mName; /// estate name
LLUUID mOwnerID; /// estate owner id
U32 mID; /// estate id
U64 mFlags; /// estate flags
F32 mSunHour; /// estate sun hour
uuid_set_t mAllowedAgents;
uuid_set_t mAllowedGroups;
uuid_set_t mBannedAgents;
uuid_set_t mEstateManagers;
uuid_set_t mExperienceAllowed;
uuid_set_t mExperienceTrusted;
uuid_set_t mExperienceBlocked;
update_signal_t mUpdateSignal; /// emitted when we receive update from sim
update_flaged_signal_t mUpdateAccess;
update_signal_t mUpdateExperience;
update_signal_t mCommitSignal; /// emitted when our update gets applied to sim
LLDispatcher mDispatch;
LLUUID mRequestInvoice;
LLViewerRegion* mRegion;
void commitEstateInfoCapsCoro(std::string url);
static void processEstateOwnerRequest(LLMessageSystem* msg, void**);
update_signal_t mUpdateSignal; /// emitted when we receive update from sim
update_signal_t mCommitSignal; /// emitted when our update gets applied to sim
void commitEstateInfoCapsCoro(std::string url);
};
inline bool LLEstateInfoModel::getFlag(U64 flag) const

View File

@ -0,0 +1,92 @@
/**
* @file llfloaterbanduration.cpp
*
* $LicenseInfo:firstyear=2004&license=viewerlgpl$
* Second Life Viewer Source Code
* Copyright (C) 2018, Linden Research, Inc.
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation;
* version 2.1 of the License only.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
*
* Linden Research, Inc., 945 Battery Street, San Francisco, CA 94111 USA
* $/LicenseInfo$
*/
#include "llviewerprecompiledheaders.h"
#include "llfloaterbanduration.h"
#include "llfloaterreg.h"
#include "llspinctrl.h"
#include "llradiogroup.h"
LLFloaterBanDuration::LLFloaterBanDuration(const LLSD& target)
: LLFloater(target)
{
}
BOOL LLFloaterBanDuration::postBuild()
{
childSetAction("ok_btn", boost::bind(&LLFloaterBanDuration::onClickBan, this));
childSetAction("cancel_btn", boost::bind(&LLFloaterBanDuration::onClickCancel, this));
getChild<LLUICtrl>("ban_duration_radio")->setCommitCallback(boost::bind(&LLFloaterBanDuration::onClickRadio, this));
getChild<LLRadioGroup>("ban_duration_radio")->setSelectedIndex(0);
getChild<LLUICtrl>("ban_hours")->setEnabled(FALSE);
return TRUE;
}
LLFloaterBanDuration* LLFloaterBanDuration::show(select_callback_t callback, uuid_vec_t ids)
{
LLFloaterBanDuration* floater = LLFloaterReg::showTypedInstance<LLFloaterBanDuration>("ban_duration");
if (!floater)
{
LL_WARNS() << "Cannot instantiate ban duration floater" << LL_ENDL;
return NULL;
}
floater->mSelectionCallback = callback;
floater->mAvatar_ids = ids;
return floater;
}
void LLFloaterBanDuration::onClickRadio()
{
getChild<LLUICtrl>("ban_hours")->setEnabled(getChild<LLRadioGroup>("ban_duration_radio")->getSelectedIndex() != 0);
}
void LLFloaterBanDuration::onClickCancel()
{
closeFloater();
}
void LLFloaterBanDuration::onClickBan()
{
if (mSelectionCallback)
{
S32 time = 0;
if (getChild<LLRadioGroup>("ban_duration_radio")->getSelectedIndex() != 0)
{
LLSpinCtrl* hours_spin = getChild<LLSpinCtrl>("ban_hours");
if (hours_spin)
{
time = LLDate::now().secondsSinceEpoch() + (hours_spin->getValue().asInteger() * 3600);
}
}
mSelectionCallback(mAvatar_ids, time);
}
closeFloater();
}

View File

@ -0,0 +1,52 @@
/**
* @file llfloaterbanduration.h
*
* $LicenseInfo:firstyear=2004&license=viewerlgpl$
* Second Life Viewer Source Code
* Copyright (C) 2018, Linden Research, Inc.
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation;
* version 2.1 of the License only.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
*
* Linden Research, Inc., 945 Battery Street, San Francisco, CA 94111 USA
* $/LicenseInfo$
*/
#ifndef LL_FLOATERBANDURATION_H
#define LL_FLOATERBANDURATION_H
#include "llfloater.h"
class LLFloaterBanDuration : public LLFloater
{
typedef boost::function<void(const uuid_vec_t&, const S32 duration)> select_callback_t;
public:
LLFloaterBanDuration(const LLSD& target);
BOOL postBuild();
static LLFloaterBanDuration* show(select_callback_t callback, uuid_vec_t id);
private:
~LLFloaterBanDuration() {};
void onClickBan();
void onClickCancel();
void onClickRadio();
uuid_vec_t mAvatar_ids;
select_callback_t mSelectionCallback;
};
#endif // LL_FLOATERBANDURATION_H

View File

@ -46,6 +46,7 @@
#include "llfloaterreg.h"
#include "llfloateravatarpicker.h"
#include "llfloaterauction.h"
#include "llfloaterbanduration.h"
#include "llfloatergroups.h"
#include "llfloaterscriptlimits.h"
#include "llavataractions.h"
@ -89,7 +90,6 @@
#include "llworld.h" // <FS:Ansariel> For FIRE-1292
#include "llsdutil.h"
#include "llviewernetwork.h"
#include "fsfloaterbantime.h"
#include "fsnamelistavatarmenu.h"
#include "llfloaterauction.h"
@ -2759,33 +2759,49 @@ void LLPanelLandAccess::refresh()
cit != parcel->mBanList.end(); ++cit)
{
const LLAccessEntry& entry = (*cit).second;
std::string prefix;
std::string duration;
if (entry.mTime != 0)
{
LLStringUtil::format_map_t args;
S32 now = time(NULL);
S32 seconds = entry.mTime - now;
S32 seconds = entry.mTime - now;
if (seconds < 0) seconds = 0;
prefix.assign(" (");
if (seconds >= 120)
if (seconds >= 7200)
{
args["[MINUTES]"] = llformat("%d", (seconds/60));
std::string buf = parent_floater->getString ("Minutes", args);
prefix.append(buf);
args["[HOURS]"] = llformat("%d", (seconds / 3600));
duration = parent_floater->getString("Hours", args);
}
else if (seconds >= 3600)
{
duration = "1 " + parent_floater->getString("Hour");
}
else if (seconds >= 120)
{
args["[MINUTES]"] = llformat("%d", (seconds / 60));
duration = parent_floater->getString("Minutes", args);
}
else if (seconds >= 60)
{
prefix.append("1 " + parent_floater->getString("Minute"));
duration = "1 " + parent_floater->getString("Minute");
}
else
{
args["[SECONDS]"] = llformat("%d", seconds);
std::string buf = parent_floater->getString ("Seconds", args);
prefix.append(buf);
duration = parent_floater->getString("Seconds", args);
}
prefix.append(" " + parent_floater->getString("Remaining") + ") ");
}
mListBanned->addNameItem(entry.mID, ADD_DEFAULT, TRUE, "", prefix);
else
{
duration = parent_floater->getString("Always");
}
LLSD item;
item["id"] = entry.mID;
LLSD& columns = item["columns"];
columns[0]["column"] = "name"; // to be populated later
columns[1]["column"] = "duration";
columns[1]["value"] = duration;
mListBanned->addElement(item);
}
mListBanned->sortByName(TRUE);
}
@ -3158,7 +3174,7 @@ void LLPanelLandAccess::onClickAddBanned()
LLView * button = findChild<LLButton>("add_banned");
LLFloater * root_floater = gFloaterView->getParentFloater(this);
LLFloaterAvatarPicker* picker = LLFloaterAvatarPicker::show(
boost::bind(&LLPanelLandAccess::callbackAvatarCBBanned, this, _1), FALSE, FALSE, FALSE, root_floater->getName(), button);
boost::bind(&LLPanelLandAccess::callbackAvatarCBBanned, this, _1), TRUE, FALSE, FALSE, root_floater->getName(), button);
if (picker)
{
root_floater->addDependentFloater(picker);
@ -3168,52 +3184,42 @@ void LLPanelLandAccess::onClickAddBanned()
// static
void LLPanelLandAccess::callbackAvatarCBBanned(const uuid_vec_t& ids)
{
if (!ids.empty())
LLFloater * root_floater = gFloaterView->getParentFloater(this);
LLFloaterBanDuration* duration_floater = LLFloaterBanDuration::show(
boost::bind(&LLPanelLandAccess::callbackAvatarCBBanned2, this, _1, _2), ids);
if (duration_floater)
{
LLUUID id = ids[0];
/* <FS:LO> Add ability to do time based temp bans
LLParcel* parcel = mParcel->getParcel();
if (parcel && parcel->addToBanList(id, 0))
root_floater->addDependentFloater(duration_floater);
}
}
void LLPanelLandAccess::callbackAvatarCBBanned2(const uuid_vec_t& ids, S32 duration)
{
LLParcel* parcel = mParcel->getParcel();
if (!parcel) return;
U32 lists_to_update = 0;
for (uuid_vec_t::const_iterator it = ids.begin(); it < ids.end(); it++)
{
LLUUID id = *it;
if (parcel->addToBanList(id, duration))
{
U32 lists_to_update = AL_BAN;
lists_to_update |= AL_BAN;
// agent was successfully added to ban list
// but we also need to check access list to ensure that agent will not be in two lists simultaneously
if (parcel->removeFromAccessList(id))
{
lists_to_update |= AL_ACCESS;
}
LLViewerParcelMgr::getInstance()->sendParcelAccessListUpdate(lists_to_update);
refresh();
}
*/
LLFloater * root_floater = gFloaterView->getParentFloater(this);
FSFloaterBanTime* timer = FSFloaterBanTime::show(boost::bind(&LLPanelLandAccess::callbackAvatarCBBannedTimed, this, _1, _2), id);
if (timer)
{
root_floater->addDependentFloater(timer);
}
// </FS:LO>
}
}
//<FS:LO> Add ability to do time based temp bans
// static
void LLPanelLandAccess::callbackAvatarCBBannedTimed(const LLUUID& id, S32 time)
{
LLParcel* parcel = mParcel->getParcel();
if (parcel && parcel->addToBanList(id, time))
if (lists_to_update > 0)
{
U32 lists_to_update = AL_BAN;
// agent was successfully added to ban list
// but we also need to check access list to ensure that agent will not be in two lists simultaneously
if (parcel->removeFromAccessList(id))
{
lists_to_update |= AL_ACCESS;
}
LLViewerParcelMgr::getInstance()->sendParcelAccessListUpdate(lists_to_update);
refresh();
}
}
//</FS:LO>
// static
void LLPanelLandAccess::onClickRemoveBanned(void* data)

View File

@ -399,7 +399,7 @@ public:
void onClickAddAccess();
void onClickAddBanned();
void callbackAvatarCBBanned(const uuid_vec_t& ids);
void callbackAvatarCBBannedTimed(const LLUUID& id, S32 time); //<FS:LO> Add ability to do time based temp bans
void callbackAvatarCBBanned2(const uuid_vec_t& ids, S32 duration);
void callbackAvatarCBAccess(const uuid_vec_t& ids);
protected:

File diff suppressed because it is too large Load Diff

View File

@ -29,6 +29,7 @@
#define LL_LLFLOATERREGIONINFO_H
#include <vector>
#include "llagent.h"
#include "llassettype.h"
#include "llfloater.h"
#include "llhost.h"
@ -67,6 +68,7 @@ class LLPanelEstateCovenant;
class LLPanelExperienceListEditor;
class LLPanelExperiences;
class LLPanelRegionExperiences;
class LLPanelEstateAccess;
class LLPanelRegionEnvironment;
class LLEventTimer;
@ -78,15 +80,21 @@ public:
/*virtual*/ void onOpen(const LLSD& key);
/*virtual*/ void onClose(bool app_quitting);
/*virtual*/ BOOL postBuild();
static void processEstateOwnerRequest(LLMessageSystem* msg, void**);
// get and process region info if necessary.
static void processRegionInfo(LLMessageSystem* msg);
static const LLUUID& getLastInvoice() { return sRequestInvoice; }
static void nextInvoice() { sRequestInvoice.generate(); }
//static S32 getSerial() { return sRequestSerial; }
//static void incrementSerial() { sRequestSerial++; }
static LLPanelEstateInfo* getPanelEstate();
static LLPanelEstateAccess* getPanelAccess();
static LLPanelEstateCovenant* getPanelCovenant();
static LLPanelRegionTerrainInfo* getPanelRegionTerrain();
static LLPanelRegionExperiences* getPanelExperiences();
@ -109,20 +117,22 @@ private:
LLFloaterRegionInfo(const LLSD& seed);
~LLFloaterRegionInfo();
protected:
void onTabSelected(const LLSD& param);
void disableTabCtrls();
void refreshFromRegion(LLViewerRegion* region);
void onGodLevelChange(U8 god_level);
// member data
LLTabContainer* mTab;
typedef std::vector<LLPanelRegionInfo*> info_panels_t;
info_panels_t mInfoPanels;
LLPanelRegionEnvironment *mEnvironmentPanel;
//static S32 sRequestSerial; // serial # of last EstateOwnerRequest
static LLUUID sRequestInvoice;
private:
LLAgent::god_level_change_slot_t mGodLevelChangeSlot;
boost::signals2::connection mRegionChangedCallback;
};
@ -158,6 +168,15 @@ protected:
typedef std::vector<std::string> strings_t;
//typedef std::vector<U32> integers_t;
void sendEstateOwnerMessage(
LLMessageSystem* msg,
const std::string& request,
const LLUUID& invoice,
const strings_t& strings);
// member data
LLHost mHost;
};
/////////////////////////////////////////////////////////////////////////////
@ -283,9 +302,12 @@ private:
};
/////////////////////////////////////////////////////////////////////////////
class LLPanelEstateInfo : public LLPanelRegionInfo
{
public:
static void initDispatch(LLDispatcher& dispatch);
void onChangeFixedSun();
void onChangeUseGlobalTime();
void onChangeAccessOverride();
@ -295,35 +317,11 @@ public:
void onClickEditDayCycle();
void onClickEditDayCycleHelp();
void onClickAddAllowedAgent();
void onClickRemoveAllowedAgent();
void onClickAddAllowedGroup();
void onClickRemoveAllowedGroup();
void onClickAddBannedAgent();
void onClickRemoveBannedAgent();
void onClickAddEstateManager();
void onClickRemoveEstateManager();
void onClickKickUser();
// Group picker callback is different, can't use core methods below
bool addAllowedGroup(const LLSD& notification, const LLSD& response);
void addAllowedGroup2(LLUUID id);
// Core methods for all above add/remove button clicks
static void accessAddCore(U32 operation_flag, const std::string& dialog_name);
static bool accessAddCore2(const LLSD& notification, const LLSD& response);
static void accessAddCore3(const uuid_vec_t& ids, void* data);
static void accessRemoveCore(U32 operation_flag, const std::string& dialog_name, const std::string& list_ctrl_name);
static bool accessRemoveCore2(const LLSD& notification, const LLSD& response);
// used for both add and remove operations
static bool accessCoreConfirm(const LLSD& notification, const LLSD& response);
bool kickUserConfirm(const LLSD& notification, const LLSD& response);
// Send the actual EstateOwnerRequest "estateaccessdelta" message
static void sendEstateAccessDelta(U32 flags, const LLUUID& agent_id);
void onKickUserCommit(const uuid_vec_t& ids);
static void onClickMessageEstate(void* data);
bool onMessageCommit(const LLSD& notification, const LLSD& response);
@ -345,7 +343,6 @@ public:
virtual void refresh();
void refreshFromEstate();
void refreshAccessFromEstate(U32 flags);
static bool isLindenEstate();
@ -360,7 +357,6 @@ protected:
void commitEstateAccess();
void commitEstateManagers();
void clearAccessLists();
BOOL checkSunHourSlider(LLUICtrl* child_ctrl);
U32 mEstateID;
@ -448,7 +444,7 @@ public:
void sendPurchaseRequest()const;
void processResponse( const LLSD& content );
private:
void refreshExperiencesFromEstate();
void refreshRegionExperiences();
static std::string regionCapabilityQuery(LLViewerRegion* region, const std::string &cap);
@ -463,4 +459,70 @@ private:
LLUUID mDefaultExperience;
};
class LLPanelEstateAccess : public LLPanelRegionInfo
{
LOG_CLASS(LLPanelEnvironmentInfo);
public:
LLPanelEstateAccess();
virtual BOOL postBuild();
virtual void updateChild(LLUICtrl* child_ctrl);
void updateControls(LLViewerRegion* region);
void updateLists();
void setPendingUpdate(bool pending) { mPendingUpdate = pending; }
bool getPendingUpdate() { return mPendingUpdate; }
virtual bool refreshFromRegion(LLViewerRegion* region);
// <FS:Ansariel> Moved to public
static void sendEstateAccessDelta(U32 flags, const LLUUID& agent_id);
private:
void onClickAddAllowedAgent();
void onClickRemoveAllowedAgent();
void onClickCopyAllowedList();
void onClickAddAllowedGroup();
void onClickRemoveAllowedGroup();
void onClickCopyAllowedGroupList();
void onClickAddBannedAgent();
void onClickRemoveBannedAgent();
void onClickCopyBannedList();
void onClickAddEstateManager();
void onClickRemoveEstateManager();
void onAllowedSearchEdit(const std::string& search_string);
void onAllowedGroupsSearchEdit(const std::string& search_string);
void onBannedSearchEdit(const std::string& search_string);
// Group picker callback is different, can't use core methods below
bool addAllowedGroup(const LLSD& notification, const LLSD& response);
void addAllowedGroup2(LLUUID id);
// Core methods for all above add/remove button clicks
static void accessAddCore(U32 operation_flag, const std::string& dialog_name);
static bool accessAddCore2(const LLSD& notification, const LLSD& response);
static void accessAddCore3(const uuid_vec_t& ids, std::vector<LLAvatarName> names, void* data);
static void accessRemoveCore(U32 operation_flag, const std::string& dialog_name, const std::string& list_ctrl_name);
static bool accessRemoveCore2(const LLSD& notification, const LLSD& response);
// used for both add and remove operations
static bool accessCoreConfirm(const LLSD& notification, const LLSD& response);
// Send the actual EstateOwnerRequest "estateaccessdelta" message
// <FS:Ansariel> Moved to public
//static void sendEstateAccessDelta(U32 flags, const LLUUID& agent_id);
static void requestEstateGetAccessCoro(std::string url);
void searchAgent(LLNameListCtrl* listCtrl, const std::string& search_string);
void copyListToClipboard(std::string list_name);
bool mPendingUpdate;
BOOL mCtrlsEnabled;
};
#endif

View File

@ -32,6 +32,7 @@
#include "llavatarnamecache.h"
#include "llcachename.h"
#include "llfloater.h"
#include "llfloaterreg.h"
#include "llinventory.h"
#include "llscrolllistitem.h"
@ -221,7 +222,10 @@ BOOL LLNameListCtrl::handleToolTip(S32 x, S32 y, MASK mask)
BOOL handled = FALSE;
S32 column_index = getColumnIndexFromOffset(x);
LLNameListItem* hit_item = dynamic_cast<LLNameListItem*>(hitItem(x, y));
if (hit_item
LLFloater* floater = gFloaterView->getParentFloater(this);
if (floater
&& floater->isFrontmost()
&& hit_item
&& column_index == mNameColumnIndex)
{
// ...this is the column with the avatar name
@ -328,8 +332,19 @@ LLScrollListItem* LLNameListCtrl::addNameItemRow(
switch(name_item.target)
{
case GROUP:
gCacheName->getGroupName(id, fullname);
// fullname will be "nobody" if group not found
if (!gCacheName->getGroupName(id, fullname))
{
avatar_name_cache_connection_map_t::iterator it = mGroupNameCacheConnections.find(id);
if (it != mGroupNameCacheConnections.end())
{
if (it->second.connected())
{
it->second.disconnect();
}
mGroupNameCacheConnections.erase(it);
}
mGroupNameCacheConnections[id] = gCacheName->getGroup(id, boost::bind(&LLNameListCtrl::onGroupNameCache, this, _1, _2, item->getHandle()));
}
break;
case SPECIAL:
// just use supplied name
@ -433,6 +448,20 @@ void LLNameListCtrl::removeNameItem(const LLUUID& agent_id)
}
}
// public
LLScrollListItem* LLNameListCtrl::getNameItemByAgentId(const LLUUID& agent_id)
{
for (item_list::iterator it = getItemList().begin(); it != getItemList().end(); it++)
{
LLScrollListItem* item = *it;
if (item && item->getUUID() == agent_id)
{
return item;
}
}
return NULL;
}
void LLNameListCtrl::onAvatarNameCache(const LLUUID& agent_id,
const LLAvatarName& av_name,
std::string suffix,
@ -499,6 +528,31 @@ void LLNameListCtrl::onAvatarNameCache(const LLUUID& agent_id,
dirtyColumns();
}
void LLNameListCtrl::onGroupNameCache(const LLUUID& group_id, const std::string name, LLHandle<LLNameListItem> item)
{
avatar_name_cache_connection_map_t::iterator it = mGroupNameCacheConnections.find(group_id);
if (it != mGroupNameCacheConnections.end())
{
if (it->second.connected())
{
it->second.disconnect();
}
mGroupNameCacheConnections.erase(it);
}
LLNameListItem* list_item = item.get();
if (list_item && list_item->getUUID() == group_id)
{
LLScrollListCell* cell = list_item->getColumn(mNameColumnIndex);
if (cell)
{
cell->setValue(name);
setNeedsSort();
}
}
dirtyColumns();
}
void LLNameListCtrl::updateColumns(bool force_update)
{

View File

@ -166,6 +166,8 @@ public:
void removeNameItem(const LLUUID& agent_id);
LLScrollListItem* getNameItemByAgentId(const LLUUID& agent_id);
// LLView interface
/*virtual*/ BOOL handleDragAndDrop(S32 x, S32 y, MASK mask,
BOOL drop, EDragAndDropType cargo_type, void *cargo_data,
@ -183,6 +185,7 @@ public:
private:
void showInspector(const LLUUID& avatar_id, bool is_group, bool is_experience = false);
void onAvatarNameCache(const LLUUID& agent_id, const LLAvatarName& av_name, std::string suffix, std::string prefix, LLHandle<LLNameListItem> item);
void onGroupNameCache(const LLUUID& group_id, const std::string name, LLHandle<LLNameListItem> item);
private:
S32 mNameColumnIndex;
@ -191,6 +194,7 @@ private:
bool mShortNames; // display name only, no SLID
typedef std::map<LLUUID, boost::signals2::connection> avatar_name_cache_connection_map_t;
avatar_name_cache_connection_map_t mAvatarNameCacheConnections;
avatar_name_cache_connection_map_t mGroupNameCacheConnections;
// <FS:Ansariel> Fix Baker's NameListCtrl un-fix
// S32 mPendingLookupsRemaining;

View File

@ -40,6 +40,7 @@
#include "llfloateravatarpicker.h"
//#include "llfloateravatarrendersettings.h" // <FS:Ansariel> [FS Persisted Avatar Render Settings]
#include "llfloateravatartextures.h"
#include "llfloaterbanduration.h"
#include "llfloaterbigpreview.h"
#include "llfloaterbeacons.h"
#include "llfloaterbuildoptions.h"
@ -175,7 +176,6 @@
#include "fsfloateraddtocontactset.h"
#include "fsfloaterassetblacklist.h"
#include "fsfloateravatarrendersettings.h"
#include "fsfloaterbantime.h"
#include "fsfloatercontacts.h"
#include "fsfloatercontactsetconfiguration.h"
#include "fsfloaterexport.h"
@ -247,6 +247,7 @@ void LLViewerFloaterReg::registerFloaters()
//LLFloaterReg::add("avatar_render_settings", "floater_avatar_render_settings.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLFloaterAvatarRenderSettings>);
LLFloaterReg::add("avatar_textures", "floater_avatar_textures.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLFloaterAvatarTextures>);
LLFloaterReg::add("ban_duration", "floater_ban_duration.xml", &LLFloaterReg::build<LLFloaterBanDuration>);
LLFloaterReg::add("beacons", "floater_beacons.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLFloaterBeacons>);
LLFloaterReg::add("bulk_perms", "floater_bulk_perms.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLFloaterBulkPermission>);
LLFloaterReg::add("buy_currency", "floater_buy_currency.xml", &LLFloaterBuyCurrency::buildFloater);
@ -464,7 +465,6 @@ void LLViewerFloaterReg::registerFloaters()
LLFloaterReg::add("floater_profile", "floater_profile_view.xml",&LLFloaterReg::build<FSFloaterProfile>);
LLFloaterReg::add("fs_asset_blacklist", "floater_fs_asset_blacklist.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<FSFloaterAssetBlacklist>);
LLFloaterReg::add("fs_avatar_render_settings", "floater_fs_avatar_render_settings.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<FSFloaterAvatarRenderSettings>);
LLFloaterReg::add("fs_ban_time", "floater_fs_ban_duration.xml", &LLFloaterReg::build<FSFloaterBanTime>);
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>);

View File

@ -3080,6 +3080,7 @@ void LLViewerRegionImpl::buildCapabilityNames(LLSD& capabilityNames)
capabilityNames.append("DispatchRegionInfo");
capabilityNames.append("DirectDelivery");
capabilityNames.append("EnvironmentSettings");
capabilityNames.append("EstateAccess");
// <FS:CR> Aurora Sim
capabilityNames.append("DispatchOpenRegionSettings");
// </FS:CR> Aurora Sim

View File

@ -1857,9 +1857,19 @@ LLViewerWindow::LLViewerWindow(const Params& p)
LLCoordScreen scr;
mWindow->getSize(&scr);
// Reset UI scale factor on first run if OS's display scaling is not 100%
if (gSavedSettings.getBOOL("ResetUIScaleOnFirstRun"))
{
if (mWindow->getSystemUISize() != 1.f)
{
gSavedSettings.setF32("UIScaleFactor", 1.f);
}
gSavedSettings.setBOOL("ResetUIScaleOnFirstRun", FALSE);
}
// Get the real window rect the window was created with (since there are various OS-dependent reasons why
// the size of a window or fullscreen context may have been adjusted slightly...)
F32 ui_scale_factor = llclamp(gSavedSettings.getF32("UIScaleFactor"), MIN_UI_SCALE, MAX_UI_SCALE) * mWindow->getSystemUISize();
F32 ui_scale_factor = llclamp(gSavedSettings.getF32("UIScaleFactor") * mWindow->getSystemUISize(), MIN_UI_SCALE, MAX_UI_SCALE);
mDisplayScale.setVec(llmax(1.f / mWindow->getPixelAspectRatio(), 1.f), llmax(mWindow->getPixelAspectRatio(), 1.f));
mDisplayScale *= ui_scale_factor;
@ -6588,7 +6598,7 @@ F32 LLViewerWindow::getWorldViewAspectRatio() const
void LLViewerWindow::calcDisplayScale()
{
F32 ui_scale_factor = llclamp(gSavedSettings.getF32("UIScaleFactor"), MIN_UI_SCALE, MAX_UI_SCALE) * mWindow->getSystemUISize();
F32 ui_scale_factor = llclamp(gSavedSettings.getF32("UIScaleFactor") * mWindow->getSystemUISize(), MIN_UI_SCALE, MAX_UI_SCALE);
LLVector2 display_scale;
display_scale.setVec(llmax(1.f / mWindow->getPixelAspectRatio(), 1.f), llmax(mWindow->getPixelAspectRatio(), 1.f));
display_scale *= ui_scale_factor;

View File

@ -9,6 +9,12 @@
<floater.string name="maturity_icon_adult">
&quot;Parcel_R_Dark&quot;
</floater.string>
<floater.string name="Hours">
[HOURS] Std.
</floater.string>
<floater.string name="Hour">
Std.
</floater.string>
<floater.string name="Minutes">
[MINUTES] Min.
</floater.string>
@ -21,6 +27,9 @@
<floater.string name="Remaining">
Restzeit
</floater.string>
<floater.string name="Always">
Permanent
</floater.string>
<tab_container name="landtab" width="489">
<panel label="Allgemein" name="land_general_panel">
<panel.string name="new users only">
@ -486,9 +495,12 @@ Nur große Parzellen können in der Suche aufgeführt werden.
</panel>
<panel name="Banned_layout_panel">
<text label="Verbannen" name="BanCheck">
Immer verbannt ([COUNT]/[MAX])
Verbannt ([COUNT]/[MAX])
</text>
<name_list name="BannedList" tool_tip="([LISTED] aufgeführt, [MAX] max)"/>
<name_list name="BannedList" tool_tip="([LISTED] aufgeführt, [MAX] max)">
<columns label="Name" name="name"/>
<columns label="Dauer" name="duration"/>
</name_list>
<button label="Hinzufügen" name="add_banned"/>
<button label="Entfernen" label_selected="Entfernen" name="remove_banned"/>
</panel>

View File

@ -4,7 +4,7 @@
Parzellen, die bereits zum Verkauf stehen, können nicht auktioniert werden.
</floater.string>
<check_box initial_value="true" label="Gelben Auswahlrahmen einschließen" name="fence_check"/>
<button label="Foto" label_selected="Foto" name="snapshot_btn"/>
<button label="Screenshot" label_selected="Screenshot" name="snapshot_btn"/>
<button label="An jeden verkaufen" label_selected="An jeden verkaufen" name="sell_to_anyone_btn"/>
<button label="Einstellungen löschen" label_selected="Einstellungen löschen" name="reset_parcel_btn"/>
<button label="Auktion beginnen" label_selected="Auktion beginnen" name="start_auction_btn"/>

View File

@ -0,0 +1,15 @@
<?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_group>
<text name="hours_textbox">
Stunden.
</text>
<button label="Ok" name="ok_btn"/>
<button label="Abbrechen" name="cancel_btn"/>
</floater>

View File

@ -1,15 +0,0 @@
<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
<floater name="Ban duration" title="Ban-Dauer" width="180">
<text name="duration_textbox" width="68">
Ban-Dauer:
</text>
<spinner name="ban_time" tool_tip="Legt fest, wie lange der Einwohner gebannt wird - 0 bedeutet unbeschränkt"/>
<text name="hours_textbox">
Stunden.
</text>
<text name="info_textbox">
0 bedeutet unbeschränkt.
</text>
<button label="OK" name="BanConfirmButton"/>
<button label="Abbrechen" name="BanCancelButton"/>
</floater>

View File

@ -226,7 +226,7 @@
<combo_box.item label="Objekt bezahlen" name="Payobject"/>
<combo_box.item label="Öffnen" name="Open"/>
<combo_box.item label="Zoom" name="Zoom"/>
<combo_box.item label="Keine Aktion" name="None"/>
<combo_box.item label="Keine" name="None"/>
</combo_box>
<check_box label="Zum Verkauf:" name="checkbox for sale"/>
<spinner label="Preis: L$" name="Edit Cost"/>

View File

@ -16,6 +16,7 @@
<menu_item_call label="Avatar auswählen" name="Avatar Picker"/>
<menu label="Bewegung" name="Movement">
<menu_item_call label="Hinsetzen" name="Sit Down Here"/>
<menu_item_call label="Aufstehen" name="Stand up"/>
<menu_item_check label="Fliegen" name="Fly"/>
<menu_item_check label="Immer rennen" name="Always Run"/>
<menu_item_check label="Sitzen erzwingen" name="Force Toggle Sitting"/>

View File

@ -1596,6 +1596,30 @@ Ersetzen Sie die Textur [TEXTURE_NUM] mit einer Bilddatei von maximal 1024x1024
<notification name="ProblemAddingEstateManagerBanned">
Verbannter Einwohner kann nicht zur Grundbesitzverwalterliste hinzugefügt werden.
</notification>
<notification name="ProblemBanningEstateManager">
Grundbesitzverwalter [AGENT] kann nicht zur Bannliste hinzugefügt werden.
</notification>
<notification name="GroupIsAlreadyInList">
&lt;nolink&gt;[GROUP]&lt;/nolink&gt; befindet sich bereits auf der Liste der zulässigen Gruppen.
</notification>
<notification name="AgentIsAlreadyInList">
[AGENT] befindet sich bereits auf Ihrer [LIST_TYPE]-Liste.
</notification>
<notification name="AgentsAreAlreadyInList">
[AGENT] befinden sich bereits auf Ihrer [LIST_TYPE]-Liste.
</notification>
<notification name="AgentWasAddedToList">
[AGENT] wurde der [LIST_TYPE]-Liste von [ESTATE] hinzugefügt.
</notification>
<notification name="AgentsWereAddedToList">
[AGENT] wurden zur [LIST_TYPE]-Liste von [ESTATE] hinzugefügt.
</notification>
<notification name="AgentWasRemovedFromList">
[AGENT] wurden von der [LIST_TYPE]-Liste von [ESTATE] entfernt.
</notification>
<notification name="AgentsWereRemovedFromList">
[AGENT] wurden von der [LIST_TYPE]-Liste von [ESTATE] entfernt.
</notification>
<notification name="CanNotChangeAppearanceUntilLoaded">
Das Aussehen lässt sich erst ändern, wenn Kleider und Form/Gestalt geladen sind.
</notification>
@ -3356,22 +3380,22 @@ Klicken Sie auf &apos;Akzeptieren &apos;, um dem Chat beizutreten, oder auf &a
Verbindung zu [VOICE_CHANNEL_NAME] nicht möglich. Bitte versuchen Sie es später. Sie werden nun wieder mit dem Chat in Ihrer Nähe verbunden.
</notification>
<notification name="VoiceEffectsExpired">
Ein oder mehrere Ihrer Voice-Morph-Abos ist/sind abgelaufen.
[[URL] Hier klicken], um Ihr Abo zu erneuern.
Ein oder mehrere Ihrer Voice-Morph-Abos sind abgelaufen.
[[URL] Klicken Sie hier], um Ihr Abo zu erneuern.
Falls Sie Premium-Mitglied sind, klicken Sie [[PREMIUM_URL] hier], um Ihren Voice-Morph-Vorteil zu erhalten.
Wenn Sie Premium-Mitglied sind, [[PREMIUM_URL] klicken Sie hier], um Ihren Voice-Morphing-Vorteil zu nutzen.
</notification>
<notification name="VoiceEffectsExpiredInUse">
Das aktive Voice-Morph-Abo ist abgelaufen. Ihre normalen Voice-Einstellungen werden angewendet.
[[URL] Hier klicken], um Ihr Abo zu erneuern.
Das aktive Voice-Morph-Abo ist abgelaufen. Ihre normalen Voice-Einstellungen werden angewendet.
[[URL] Klicken Sie hier], um Ihr Abo zu erneuern.
Falls Sie Premium-Mitglied sind, klicken Sie [[PREMIUM_URL] hier], um Ihren Voice-Morph-Vorteil zu erhalten.
Wenn Sie Premium-Mitglied sind, [[PREMIUM_URL] klicken Sie hier], um Ihren Voice-Morphing-Vorteil zu nutzen.
</notification>
<notification name="VoiceEffectsWillExpire">
Ein oder mehrere Ihrer Voice-Morph-Abos werden in weniger als [INTERVAL] Tagen ablaufen.
[[URL] Hier klicken], um Ihr Abo zu erneuern.
Ein oder mehrere Ihrer Voice-Morph-Abos laufen in weniger als [INTERVAL] Tagen ab.
[[URL] Klicken Sie hier], um Ihr Abo zu erneuern.
Falls Sie Premium-Mitglied sind, klicken Sie [[PREMIUM_URL] hier], um Ihren Voice-Morph-Vorteil zu erhalten.
Wenn Sie Premium-Mitglied sind, [[PREMIUM_URL] klicken Sie hier], um Ihren Voice-Morphing-Vorteil zu nutzen.
</notification>
<notification name="VoiceEffectsNew">
Neue Voice-Morph-Effekte sind erhältlich!
@ -3423,6 +3447,9 @@ Diese werden für ein paar Sekunden sicherheitshalber gesperrt.
<notification name="SnapshotToComputerFailed">
Fehler beim Speichern des Bildes unter [PATH]: Zu wenig Speicherplatz auf dem Medium. [NEED_MEMORY]KB werden benötigt, es stehen jedoch nur [FREE_MEMORY]KB zur Verfügung.
</notification>
<notification name="SnapshotToLocalDirNotExist">
Fehler beim Speichern des Bildes unter [PATH]: Verzeichnis nicht vorhanden.
</notification>
<notification name="SnapshotToLocalDirNotExist">
Fehler beim Speichern des Bildes unter [PATH]: Verzeichnis existiert nicht.
</notification>

View File

@ -1,6 +1,11 @@
<?xml version="1.0" encoding="utf-8"?>
<panel name="panel_login">
<panel.string name="forgot_password_url">http://secondlife.com/account/request.php?lang=de</panel.string>
<panel.string name="forgot_password_url">
http://secondlife.com/account/request.php?lang=de
</panel.string>
<panel.string name="sign_up_url">
https://join.secondlife.com/
</panel.string>
<layout_stack name="ui_stack">
<layout_panel name="ui_container">
<combo_box label="Benutzername" name="username_combo" tool_tip="Bei der Registrierung gewählter Benutzername wie „berndschmidt12“ oder „Liebe Sonne“"/>
@ -11,8 +16,13 @@
</combo_box>
<button label="Anmelden" name="connect_btn"/>
<check_box label="Details speichern" name="remember_check"/>
<text name="forgot_password_text">Kennwort vergessen</text>
<text name="forgot_password_text">
Kennwort vergessen
</text>
<combo_box label="Grid auswählen" name="server_combo"/>
<text name="sign_up_text">
Registrieren
</text>
</layout_panel>
</layout_stack>
</panel>

View File

@ -3,6 +3,9 @@
<panel.string name="forgot_password_url">
http://secondlife.com/account/request.php?lang=de
</panel.string>
<panel.string name="sign_up_url">
https://join.secondlife.com/
</panel.string>
<layout_stack name="logo_stack">
<layout_panel name="parent_panel2">
<layout_stack name="widget_stack">
@ -14,6 +17,9 @@
<text name="forgot_password_text">
Kennwort vergessen
</text>
<text name="sign_up_text">
Registrieren
</text>
</layout_panel>
</layout_stack>
</layout_panel>

View File

@ -0,0 +1,60 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<panel label="Zugang" name="Access">
<tab_container name="tabs">
<panel label="Grundbesitzverwalter" name="estate_managers_panel">
<text name="estate_manager_label">
Grundbesitzverwalter:
</text>
<name_list name="estate_manager_name_list">
<columns label="Name" name="name"/>
</name_list>
<button label="Hinzufügen..." name="add_estate_manager_btn"/>
<button label="Entfernen..." name="remove_estate_manager_btn"/>
</panel>
<panel label="Zulässig" name="allowed_panel">
<panel label="top_panel" name="allowed_search_panel">
<filter_editor label="Zulässige Agenten suchen" name="allowed_search_input"/>
<button label="Kopieren" name="copy_allowed_list_btn"/>
</panel>
<text name="allow_resident_label">
Immer zugelassen:
</text>
<name_list name="allowed_avatar_name_list">
<columns label="Name" name="name"/>
</name_list>
<button label="Hinzufügen..." name="add_allowed_avatar_btn"/>
<button label="Entfernen..." name="remove_allowed_avatar_btn"/>
</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"/>
<button label="Kopieren" name="copy_allowed_group_list_btn"/>
</panel>
<text name="allow_group_label">
Immer zugelassene Gruppen:
</text>
<name_list name="allowed_group_name_list">
<columns label="Name" name="name"/>
</name_list>
<button label="Hinzufügen..." name="add_allowed_group_btn"/>
<button label="Entfernen..." name="remove_allowed_group_btn"/>
</panel>
<panel label="Verbannt" name="banned_panel">
<panel label="top_panel" name="banned_search_panel">
<filter_editor label="Verbannte Agenten suchen" name="banned_search_input"/>
<button label="Kopieren" name="copy_banned_list_btn"/>
</panel>
<text name="ban_resident_label">
Immer verbannt:
</text>
<name_list name="banned_avatar_name_list">
<columns label="Name" name="name"/>
<columns label="Letzter Login" name="last_login_date"/>
<columns label="Verbannt am" name="ban_date"/>
<columns label="Verbannt von" name="bannedby"/>
</name_list>
<button label="Hinzufügen..." name="add_banned_avatar_btn"/>
<button label="Entfernen..." name="remove_banned_avatar_btn"/>
</panel>
</tab_container>
</panel>

View File

@ -17,52 +17,14 @@
</text>
<radio_group name="externally_visible_radio" width="310">
<radio_item label="Nur unten gelistete Einwohner &amp; Gruppen erlauben" name="estate_restricted_access"/>
<radio_item label="Nur Einwohner und Gruppen zulassen, die im Reiter &quot;Zugang&quot; 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]."/>
<check_box label="Zahlungsinformationen hinterlegt haben" name="limit_payment" tool_tip="Um diesen Grundbesitz besuchen zu können, müssen Einwohner Zahlungsinformationen hinterlegt haben. Weitere Informationen finden Sie auf [SUPPORT_SITE]."/>
<check_box label="Parzellen-Eigentümer können restriktiver sein" name="parcel_access_override"/>
<check_box label="Voice-Chat erlauben" name="voice_chat_check" left="325"/>
<button label="Übernehmen" name="apply_btn"/>
<button label="Hinzufügen..." name="add_estate_manager_btn"/>
<button label="Entfernen..." name="remove_estate_manager_btn"/>
<check_box label="Globale Zeit verwenden" name="use_global_time_check"/>
<button label="?" name="use_global_time_help"/>
<check_box label="Sonne fest" name="fixed_sun_check"/>
<button label="?" name="fixed_sun_help"/>
<slider label="Phase" name="sun_hour_slider"/>
<check_box label="Freien Zugang erlauben" name="externally_visible_check"/>
<button label="?" name="externally_visible_help"/>
<check_box label="Voice-Chat erlauben" name="voice_chat_check"/>
<check_box label="Direktteleport zulassen" name="allow_direct_teleport"/>
<button label="?" name="allow_direct_teleport_help"/>
<text name="region_text_lbl">
Zugang nach Zahlungsstatus verweigern:
</text>
<check_box label="Verweigern - keine archivierte Zahlungsinfo" name="deny_anonymous"/>
<check_box label="Verweigern - Zahlungsinfo archiviert" name="deny_identified"/>
<check_box label="Verweigern - Zahlungsinfo verwendet" name="deny_transacted"/>
<text name="estate_manager_label">
Grundbesitzverwalter:
</text>
<text name="allow_resident_label">
Zulässige Einwohner:
</text>
<button label="?" name="allow_resident_help"/>
<button label="Hinzufügen..." name="add_allowed_avatar_btn"/>
<button label="Entfernen..." name="remove_allowed_avatar_btn"/>
<text name="allow_group_label">
Zulässige Gruppen:
</text>
<button label="?" name="allow_group_help"/>
<button label="Hinzufügen..." name="add_allowed_group_btn"/>
<button label="Entfernen..." name="remove_allowed_group_btn"/>
<text name="ban_resident_label">
Verbannte Einwohner:
</text>
<button label="?" name="ban_resident_help"/>
<button label="Hinzufügen..." name="add_banned_avatar_btn"/>
<button label="Entfernen..." name="remove_banned_avatar_btn"/>
<button label="Nachricht an Grundbesitz" name="message_estate_btn"/>
<button label="Einwohner hinauswerfen" name="kick_user_from_estate_btn"/>
</panel>

View File

@ -1,32 +1,72 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<panel name="object properties" title="Objektprofil">
<panel.string name="text deed continued">Übertragung</panel.string>
<panel.string name="text deed">Übertragung</panel.string>
<panel.string name="text modify info 1">Sie können dieses Objekt bearbeiten.</panel.string>
<panel.string name="text modify info 2">Sie können diese Objekte bearbeiten.</panel.string>
<panel.string name="text modify info 3">Sie können dieses Objekt nicht bearbeiten.</panel.string>
<panel.string name="text modify info 4">Sie können diese Objekte nicht bearbeiten.</panel.string>
<panel.string name="text modify info 5">Dieses Objekt kann nicht über eine Regionsgrenze hinweg geändert werden.</panel.string>
<panel.string name="text modify info 6">Diese Objekte können nicht über eine Regionsgrenze hinweg geändert werden.</panel.string>
<panel.string name="text modify warning">Dieses Objekt verfügt über verknüpfte Teile.</panel.string>
<panel.string name="Cost Default">Preis: L$</panel.string>
<panel.string name="Cost Total">Summe: L$</panel.string>
<panel.string name="Cost Per Unit">Stückpreis: L$</panel.string>
<panel.string name="Cost Mixed">Mischpreis</panel.string>
<panel.string name="Sale Mixed">Mischverkauf</panel.string>
<panel.string name="text deed continued">
Übertragung
</panel.string>
<panel.string name="text deed">
Übertragung
</panel.string>
<panel.string name="text modify info 1">
Sie können dieses Objekt bearbeiten.
</panel.string>
<panel.string name="text modify info 2">
Sie können diese Objekte bearbeiten.
</panel.string>
<panel.string name="text modify info 3">
Sie können dieses Objekt nicht bearbeiten.
</panel.string>
<panel.string name="text modify info 4">
Sie können diese Objekte nicht bearbeiten.
</panel.string>
<panel.string name="text modify info 5">
Dieses Objekt kann nicht über eine Regionsgrenze hinweg geändert werden
</panel.string>
<panel.string name="text modify info 6">
Diese Objekte können nicht über eine Regionsgrenze hinweg geändert werden
</panel.string>
<panel.string name="text modify warning">
Dieses Objekt verfügt über verknüpfte Teile
</panel.string>
<panel.string name="Cost Default">
Preis: L$
</panel.string>
<panel.string name="Cost Total">
Summenpreis: L$
</panel.string>
<panel.string name="Cost Per Unit">
Stückpreis: L$
</panel.string>
<panel.string name="Cost Mixed">
Mischpreis
</panel.string>
<panel.string name="Sale Mixed">
Mischverkauf
</panel.string>
<text name="title" value="Objektprofil"/>
<text name="where" value="(Inworld)"/>
<scroll_container name="item_profile_scroll">
<panel label="" name="properties_panel">
<text name="Name:">Name:</text>
<text name="Description:">Beschreibung:</text>
<text name="CreatorNameLabel">Ersteller:</text>
<text name="Owner:">Eigentümer:</text>
<text name="Group_label">Gruppe:</text>
<text name="Name:">
Name:
</text>
<text name="Description:">
Beschreibung:
</text>
<text name="CreatorNameLabel">
Ersteller:
</text>
<text name="Owner:">
Eigentümer:
</text>
<text name="Group_label">
Gruppe:
</text>
<button name="button set group" tool_tip="Eine Gruppe auswählen, um die Berechtigungen des Objekts zu teilen."/>
<name_box initial_value="Wird geladen..." name="Group Name Proxy"/>
<button label="Übertragung" label_selected="Übertragung" name="button deed" tool_tip="Eine Übertragung bedeutet, dass das Objekt mit den Berechtigungen „Nächster Eigentümer“ weitergegeben wird. Mit der Gruppe geteilte Objekte können von einem Gruppen-Officer übertragen werden."/>
<text name="label click action">Bei Linksklick:</text>
<text name="label click action">
Bei Linksklick:
</text>
<combo_box name="clickaction">
<combo_box.item label="Berühren" name="Touch/grab(default)"/>
<combo_box.item label="Sitzen" name="Sitonobject"/>
@ -34,16 +74,24 @@
<combo_box.item label="Bezahlen" name="Payobject"/>
<combo_box.item label="Öffnen" name="Open"/>
<combo_box.item label="Zoomen" name="Zoom"/>
<combo_box.item label="Keine Aktion" name="None"/>
<combo_box.item label="Keine" name="None"/>
</combo_box>
<panel name="perms_inv">
<text name="perm_modify">Sie können dieses Objekt bearbeiten.</text>
<text name="Anyone can:">Jeder:</text>
<text name="perm_modify">
Sie können dieses Objekt bearbeiten.
</text>
<text name="Anyone can:">
Jeder:
</text>
<check_box label="Kopieren" name="checkbox allow everyone copy"/>
<check_box label="Bewegen" name="checkbox allow everyone move"/>
<text name="GroupLabel">Gruppe:</text>
<text name="GroupLabel">
Gruppe:
</text>
<check_box label="Teilen" name="checkbox share with group" tool_tip="Mit allen Mitgliedern der zugeordneten Gruppe, Ihre Berechtigungen dieses Objekt zu ändern, teilen. Sie müssen Übereignen, um Rollenbeschränkungen zu aktivieren."/>
<text name="NextOwnerLabel">Nächster Eigentümer:</text>
<text name="NextOwnerLabel">
Nächster Eigentümer:
</text>
<check_box label="Bearbeiten" name="checkbox next owner can modify"/>
<check_box label="Kopieren" name="checkbox next owner can copy"/>
<check_box label="Transferieren" name="checkbox next owner can transfer" tool_tip="Nächster Eigentümer kann dieses Objekt weitergeben oder -verkaufen"/>
@ -56,13 +104,27 @@
</combo_box>
<spinner label="Preis: L$" name="Edit Cost"/>
<check_box label="In Suche anzeigen" name="search_check" tool_tip="Dieses Objekt in Suchergebnissen anzeigen"/>
<text name="pathfinding_attributes_label">Pathfinding-Attribute:</text>
<text name="B:">B:</text>
<text name="O:">O:</text>
<text name="G:">G:</text>
<text name="E:">E:</text>
<text name="N:">N:</text>
<text name="F:">F:</text>
<text name="pathfinding_attributes_label">
Pathfinding-Attribute:
</text>
<text name="B:">
B:
</text>
<text name="O:">
O:
</text>
<text name="G:">
G:
</text>
<text name="E:">
E:
</text>
<text name="N:">
N:
</text>
<text name="F:">
F:
</text>
</panel>
</scroll_container>
<layout_stack name="buttons_ls">

View File

@ -2446,6 +2446,18 @@ Falls diese Meldung weiterhin angezeigt wird, wenden Sie sich unter http://suppo
<string name="RegionInfoListTypeBannedAgents">
immer verbannter Einwohner
</string>
<string name="RegionInfoAllEstates">
alle Grundbesitze
</string>
<string name="RegionInfoManagedEstates">
verwaltete Grundbesitze
</string>
<string name="RegionInfoThisEstate">
dieser Grundbesitz
</string>
<string name="AndNMore">
und [EXTRA_COUNT] weitere
</string>
<string name="ScriptLimitsParcelScriptMemory">
Parzellenskript-Speicher
</string>

View File

@ -21,6 +21,14 @@
name="maturity_icon_adult">
"Parcel_R_Dark"
</floater.string>
<floater.string
name="Hours">
[HOURS] hrs.
</floater.string>
<floater.string
name="Hour">
hr.
</floater.string>
<floater.string
name="Minutes">
[MINUTES] min.
@ -37,6 +45,10 @@
name="Remaining">
remaining
</floater.string>
<floater.string
name="Always">
Always
</floater.string>
<tab_container
follows="all"
height="410"
@ -2172,19 +2184,29 @@ Only large parcels can be listed in search.
name="BanCheck"
top="0"
width="200">
Always banned ([COUNT]/[MAX])
Banned ([COUNT]/[MAX])
</text>
<name_list
column_padding="0"
follows="top|bottom"
heading_height="14"
heading_height="16"
height="125"
layout="topleft"
left="0"
multi_select="true"
draw_heading="true"
name="BannedList"
tool_tip="([LISTED] listed, [MAX] max)"
width="230" />
width="230">
<columns
label="Name"
name="name"
width="155" />
<columns
label="Duration"
name="duration"
width="75" />
</name_list>
<button
follows="bottom"
height="23"

View File

@ -0,0 +1,96 @@
<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
<floater
can_minimize="false"
can_tear_off="false"
can_resize="false"
can_drag_on_left="false"
can_close="true"
height="150"
layout="topleft"
name="ban_duration"
title="Ban duration"
single_instance="true"
width="180">
<text
type="string"
length="1"
follows="left|top"
height="15"
layout="topleft"
left="15"
name="duration_textbox"
top="10"
width="130">
Ban duration:
</text>
<radio_group
draw_border="false"
enabled="true"
follows="left|top"
height="40"
left="20"
mouse_opaque="true"
name="ban_duration_radio"
tab_stop="true"
width="200">
<radio_item
type="string"
follows="left|top"
height="20"
width="200"
label="Always"
name="always_radio"/>
<radio_item
type="string"
follows="left|top"
height="20"
width="200"
label="Temporary"
name="temporary_radio"/>
</radio_group>
<spinner
allow_digits_only="true"
decimal_digits="0"
follows="left|top"
height="20"
increment="1"
max_val="8766"
min_val="1"
initial_val="1"
name="ban_hours"
top_delta="50"
left="40"
width="60"/>
<text
type="string"
length="1"
follows="left|top"
height="15"
left_delta="70"
name="hours_textbox"
top_delta="5"
width="75">
hours.
</text>
<button
follows="left|top"
height="23"
label="Ok"
left="10"
name="ok_btn"
top_delta="30"
width="75">
</button>
<button
follows="left|top"
height="23"
label="Cancel"
left_pad="5"
name="cancel_btn"
top_delta="0"
width="75">
</button>
</floater>

View File

@ -1,83 +0,0 @@
<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
<floater
can_minimize="false"
can_tear_off="false"
can_resize="false"
can_drag_on_left="false"
can_close="true"
height="75"
layout="topleft"
name="Ban duration"
title="Ban duration"
single_instance="true"
width="175">
<text
type="string"
length="1"
follows="left|top"
height="15"
layout="topleft"
left="5"
name="duration_textbox"
top="10"
width="75">
Ban duration:
</text>
<spinner
allow_text_entry="true"
decimal_digits="0"
follows="left|top"
height="20"
increment="1"
layout="topleft"
left_pad="0"
max_val="8766"
min_val="0"
name="ban_time"
top_delta="-4"
width="50"
tool_tip="How long to ban for, 0 means forever"/>
<text
type="string"
length="1"
follows="left|top"
height="15"
layout="topleft"
left_pad="5"
name="hours_textbox"
top="10"
width="75">
hours.
</text>
<text
type="string"
length="200"
follows="left|top"
height="15"
layout="topleft"
left="5"
name="info_textbox"
top_delta="20">
0 means forever.
</text>
<button
follows="left|top"
height="23"
label="OK"
layout="topleft"
left="5"
name="BanConfirmButton"
top_delta="20"
width="80">
</button>
<button
follows="left|top"
height="23"
label="Cancel"
layout="topleft"
right="-5"
name="BanCancelButton"
top_delta="0"
width="80">
</button>
</floater>

View File

@ -3924,6 +3924,62 @@ Cannot add estate owner to estate &apos;Banned resident&apos; list.
type="alertmodal">
Unable to add banned resident to estate manager list.
</notification>
<notification
icon="alertmodal.tga"
name="ProblemBanningEstateManager"
type="alertmodal">
Unable to add estate manager [AGENT] to banned list.
</notification>
<notification
icon="alertmodal.tga"
name="GroupIsAlreadyInList"
type="alertmodal">
&lt;nolink&gt;[GROUP]&lt;/nolink&gt; is already in the Allowed Groups list.
</notification>
<notification
icon="alertmodal.tga"
name="AgentIsAlreadyInList"
type="alertmodal">
[AGENT] is already in your [LIST_TYPE] list.
</notification>
<notification
icon="alertmodal.tga"
name="AgentsAreAlreadyInList"
type="alertmodal">
[AGENT] are already in your [LIST_TYPE] list.
</notification>
<notification
icon="alertmodal.tga"
name="AgentWasAddedToList"
type="alertmodal">
[AGENT] was added to [LIST_TYPE] list of [ESTATE].
</notification>
<notification
icon="alertmodal.tga"
name="AgentsWereAddedToList"
type="alertmodal">
[AGENT] were added to [LIST_TYPE] list of [ESTATE].
</notification>
<notification
icon="alertmodal.tga"
name="AgentWasRemovedFromList"
type="alertmodal">
[AGENT] was removed from [LIST_TYPE] list of [ESTATE].
</notification>
<notification
icon="alertmodal.tga"
name="AgentsWereRemovedFromList"
type="alertmodal">
[AGENT] were removed from [LIST_TYPE] list of [ESTATE].
</notification>
<notification
icon="alertmodal.tga"
@ -4830,7 +4886,8 @@ Add to allowed list for this estate only or for [ALL_ESTATES]?
icon="alert.tga"
label="Select estate"
name="EstateAllowedAgentRemove"
type="alert">
type="alertmodal">
<unique/>
Remove from allowed list for this estate only or for [ALL_ESTATES]?
<tag>confirm</tag>
<usetemplate
@ -4859,7 +4916,8 @@ Add to group allowed list for this estate only or for [ALL_ESTATES]?
icon="alert.tga"
label="Select estate"
name="EstateAllowedGroupRemove"
type="alert">
type="alertmodal">
<unique/>
Remove from group allowed list for this estate only or [ALL_ESTATES]?
<tag>group</tag>
<tag>confirm</tag>
@ -4888,8 +4946,9 @@ Deny access for this estate only or for [ALL_ESTATES]?
icon="alert.tga"
label="Select estate"
name="EstateBannedAgentRemove"
type="alert">
Remove this resident from the ban list for access for this estate only or for [ALL_ESTATES]?
type="alertmodal">
<unique/>
Remove this Resident from the ban list for access for this estate only or for [ALL_ESTATES]?
<tag>confirm</tag>
<usetemplate
canceltext="Cancel"
@ -4916,7 +4975,8 @@ Add estate manager for this estate only or for [ALL_ESTATES]?
icon="alert.tga"
label="Select estate"
name="EstateManagerRemove"
type="alert">
type="alertmodal">
<unique/>
Remove estate manager for this estate only or for [ALL_ESTATES]?
<tag>confirm</tag>
<usetemplate

View File

@ -0,0 +1,414 @@
<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
<panel
border="true"
follows="top|left"
height="510"
help_topic="panel_region_access_tab"
label="Access"
layout="topleft"
left="0"
name="Access"
top="320"
width="485">
<tab_container
bottom="-10"
follows="all"
layout="topleft"
left="3"
name="tabs"
tab_min_width="70"
tab_position="top"
top="10"
halign="center"
right="-5">
<!-- ============================= ESTATE MANAGERS tab ====================== -->
<panel
background_opaque="true"
background_visible="true"
bg_alpha_color="DkGray"
bg_opaque_color="DkGray"
bottom="-1"
follows="all"
label="Estate Managers"
layout="topleft"
left="0"
help_topic="estate_managers_tab"
name="estate_managers_panel"
right="-1"
top="0">
<text
type="string"
length="1"
bottom="34"
follows="left|top"
height="20"
layout="topleft"
name="estate_manager_label"
top_pad="10"
left="10"
width="200">
Estate Managers:
</text>
<!-- Estate Managers box -->
<view_border
bevel_style="none"
follows="top|left"
height="400"
layout="topleft"
left="10"
top_pad="-5"
width="453" />
<name_list
follows="left|top"
height="400"
layout="topleft"
left_delta="0"
multi_select="true"
draw_heading="true"
name="estate_manager_name_list"
top_delta="0"
width="453">
<columns
label="Name"
name="name"
width="453" />
</name_list>
<!-- Estate Managers buttons -->
<button
follows="left|top"
height="23"
label="Add..."
layout="topleft"
left="10"
name="add_estate_manager_btn"
top_pad="6"
width="114" />
<button
follows="left|top"
height="23"
label="Remove..."
layout="topleft"
name="remove_estate_manager_btn"
left_pad="6"
width="114" />
</panel>
<!-- ================================ ALLOWED tab =========================== -->
<panel
background_opaque="true"
background_visible="true"
bg_alpha_color="DkGray"
bg_opaque_color="DkGray"
bottom="-1"
follows="all"
label="Allowed"
layout="topleft"
left="0"
help_topic="allowed_tab"
name="allowed_panel"
right="-1"
top="0">
<panel
follows="left|top|right"
height="27"
label="top_panel"
layout="topleft"
left="0"
name="allowed_search_panel"
right="-1"
top="0">
<filter_editor
follows="left|top|right"
height="23"
layout="topleft"
left="6"
label="Search allowed agents"
max_length_chars="300"
name="allowed_search_input"
top="4"
width="395" />
<button
follows="left|top"
height="23"
label="Copy"
layout="topleft"
left_pad="3"
name="copy_allowed_list_btn"
width="58" />
</panel>
<text
type="string"
length="1"
bottom="34"
follows="left|top"
height="20"
layout="topleft"
name="allow_resident_label"
top_pad="10"
left="10"
width="200">
Always allowed:
</text>
<!-- Always allowed box -->
<view_border
bevel_style="none"
follows="top|left"
height="370"
layout="topleft"
left="10"
top_pad="-5"
width="453" />
<name_list
follows="left|top"
height="370"
layout="topleft"
left_delta="0"
multi_select="true"
draw_heading="true"
name="allowed_avatar_name_list"
top_delta="0"
width="453">
<columns
label="Name"
name="name"
width="453" />
</name_list>
<!-- Always allowed buttons -->
<button
follows="left|top"
height="23"
label="Add..."
layout="topleft"
left="10"
name="add_allowed_avatar_btn"
top_pad="6"
width="114" />
<button
follows="left|top"
height="23"
label="Remove..."
layout="topleft"
name="remove_allowed_avatar_btn"
left_pad="6"
width="114" />
</panel>
<!-- ============================= ALLOWED GROUPS tab ======================= -->
<panel
background_opaque="true"
background_visible="true"
bg_alpha_color="DkGray"
bg_opaque_color="DkGray"
bottom="-1"
follows="all"
label="Allowed Groups"
layout="topleft"
left="0"
help_topic="allowed_groups_tab"
name="allowed_groups_panel"
right="-1"
top="0">
<panel
follows="left|top|right"
height="27"
label="top_panel"
layout="topleft"
left="0"
name="allowed_group_search_panel"
right="-1"
top="0">
<filter_editor
follows="left|top|right"
height="23"
layout="topleft"
left="6"
label="Search allowed groups"
max_length_chars="300"
name="allowed_group_search_input"
top="4"
width="395" />
<button
follows="left|top"
height="23"
label="Copy"
layout="topleft"
left_pad="3"
name="copy_allowed_group_list_btn"
width="58" />
</panel>
<text
type="string"
length="1"
follows="left|top"
height="20"
layout="topleft"
left="10"
name="allow_group_label"
top_pad="10"
width="200">
Groups always allowed:
</text>
<!-- Groups always allowed box -->
<view_border
bevel_style="none"
follows="top|left"
height="370"
layout="topleft"
left="10"
top_pad="-5"
width="453" />
<name_list
follows="left|top"
height="370"
layout="topleft"
left_delta="0"
multi_select="true"
draw_heading="true"
name="allowed_group_name_list"
top_delta="0"
width="453">
<columns
label="Name"
name="name"
width="453" />
</name_list>
<!-- Groups always allowed buttons -->
<button
follows="left|top"
height="23"
label="Add..."
layout="topleft"
left="10"
name="add_allowed_group_btn"
top_pad="6"
width="114" />
<button
follows="left|top"
height="23"
label="Remove..."
layout="topleft"
name="remove_allowed_group_btn"
left_pad="6"
top_delta="0"
width="114" />
</panel>
<!-- ================================ BANNED tab ============================ -->
<panel
background_opaque="true"
background_visible="true"
bg_alpha_color="DkGray"
bg_opaque_color="DkGray"
bottom="-1"
follows="all"
label="Banned"
layout="topleft"
left="0"
help_topic="banned_tab"
name="banned_panel"
right="-1"
top="0">
<panel
follows="left|top|right"
height="27"
label="top_panel"
layout="topleft"
left="0"
name="banned_search_panel"
right="-1"
top="0">
<filter_editor
follows="left|top|right"
height="23"
layout="topleft"
left="6"
label="Search banned agents"
max_length_chars="300"
name="banned_search_input"
top="4"
width="395" />
<button
follows="left|top"
height="23"
label="Copy"
layout="topleft"
left_pad="3"
name="copy_banned_list_btn"
width="58" />
</panel>
<text
type="string"
length="1"
follows="left|top"
height="20"
layout="topleft"
left="10"
name="ban_resident_label"
top_pad="10"
width="200">
Always banned:
</text>
<!-- Always banned box -->
<view_border
bevel_style="none"
follows="top|left"
height="370"
layout="topleft"
left="10"
top_pad="-5"
width="453" />
<name_list
follows="left|top"
height="370"
layout="topleft"
left_delta="0"
multi_select="true"
draw_heading="true"
name="banned_avatar_name_list"
top_delta="0"
width="453">
<columns
label="Name"
name="name"
width="120" />
<columns
label="Last login date"
name="last_login_date"
width="100" />
<columns
label="Date banned"
name="ban_date"
width="100" />
<columns
label="Banned by"
name="bannedby"
width="115" />
</name_list>
<!-- Always banned buttons -->
<button
follows="left|top"
height="23"
label="Add..."
layout="topleft"
left="10"
name="add_banned_avatar_btn"
top_pad="6"
width="114" />
<button
follows="left|top"
height="23"
label="Remove..."
layout="topleft"
name="remove_banned_avatar_btn"
left_pad="6"
top_delta="0"
width="114" />
</panel>
</tab_container>
</panel>

View File

@ -82,7 +82,7 @@
<view_border
bevel_style="none"
follows="top|left"
height="105"
height="185"
layout="topleft"
left="6"
top_pad="5"
@ -96,7 +96,7 @@
width="200">
<radio_item
height="16"
label="Allow only residents and groups listed below"
label="Allow only residents and groups listed on the Access tab"
layout="topleft"
name="estate_restricted_access" />
<radio_item
@ -137,10 +137,10 @@
height="18"
label="Allow Voice Chat"
layout="topleft"
left="290"
left="20"
name="voice_chat_check"
top_delta="-78"
width="200" />
top_pad="2"
width="240" />
<check_box
height="18"
label="Allow Direct Teleport"
@ -148,7 +148,7 @@
left_delta="0"
name="allow_direct_teleport"
top_pad="2"
width="80" />
width="240" />
<button
enabled="false"
follows="left|top"
@ -156,215 +156,9 @@
label="Apply"
layout="topleft"
name="apply_btn"
top_pad="30"
top_pad="10"
left_delta="0"
width="97" />
<text
type="string"
length="1"
bottom="34"
follows="left|top"
height="20"
layout="topleft"
name="estate_manager_label"
top_pad="20"
left="6"
width="200">
Estate Managers:
</text>
<text
type="string"
length="1"
follows="left|top"
height="20"
layout="topleft"
left="247"
name="allow_resident_label"
top_delta="0"
width="200">
Always allowed:
</text>
<!-- Estate Managers box -->
<view_border
bevel_style="none"
follows="top|left"
height="71"
layout="topleft"
left="6"
top_pad="-5"
width="233" />
<name_list
follows="left|top"
height="71"
layout="topleft"
left_delta="0"
multi_select="true"
name="estate_manager_name_list"
top_delta="0"
width="233" />
<!-- Always allowed box -->
<view_border
bevel_style="none"
follows="top|left"
height="71"
layout="topleft"
left="247"
top_delta="0"
width="233" />
<name_list
follows="left|top"
height="71"
layout="topleft"
left_delta="0"
multi_select="true"
name="allowed_avatar_name_list"
top_delta="0"
width="233" />
<!-- Estate Managers buttons -->
<button
follows="left|top"
height="23"
label="Add..."
layout="topleft"
left="6"
name="add_estate_manager_btn"
top_pad="6"
width="114" />
<button
follows="left|top"
height="23"
label="Remove..."
layout="topleft"
name="remove_estate_manager_btn"
left_pad="6"
width="114" />
<!-- Always allowed buttons -->
<button
follows="left|top"
height="23"
left="247"
label="Add..."
layout="topleft"
name="add_allowed_avatar_btn"
top_delta="0"
width="114" />
<button
follows="left|top"
height="23"
label="Remove..."
layout="topleft"
name="remove_allowed_avatar_btn"
left_pad="6"
top_delta="0"
width="114" />
<text
type="string"
length="1"
follows="left|top"
height="20"
layout="topleft"
left="6"
name="allow_group_label"
top_pad="10"
width="200">
Groups always allowed:
</text>
<text
type="string"
length="1"
follows="left|top"
height="20"
layout="topleft"
left="247"
name="ban_resident_label"
top_delta="0"
width="200">
Always banned:
</text>
<!-- Groups always allowed box -->
<view_border
bevel_style="none"
follows="top|left"
height="71"
layout="topleft"
left="6"
top_pad="-5"
width="233" />
<name_list
follows="left|top"
height="71"
layout="topleft"
left_delta="0"
multi_select="true"
name="allowed_group_name_list"
top_delta="0"
width="233" />
<!-- Always banned box -->
<view_border
bevel_style="none"
follows="top|left"
height="71"
layout="topleft"
left="247"
top_delta="0"
width="233" />
<name_list
follows="left|top"
height="71"
layout="topleft"
left_delta="0"
multi_select="true"
name="banned_avatar_name_list"
top_delta="0"
width="233" />
<!-- Groups always allowed buttons -->
<button
follows="left|top"
height="23"
label="Add..."
layout="topleft"
left="6"
name="add_allowed_group_btn"
top_pad="6"
width="114" />
<button
follows="left|top"
height="23"
label="Remove..."
layout="topleft"
name="remove_allowed_group_btn"
left_pad="6"
top_delta="0"
width="114" />
<!-- Always banned buttons -->
<button
follows="left|top"
height="23"
label="Add..."
layout="topleft"
left="247"
name="add_banned_avatar_btn"
top_delta="0"
width="114" />
<button
follows="left|top"
height="23"
label="Remove..."
layout="topleft"
name="remove_banned_avatar_btn"
top_delta="0"
left_pad="6"
width="114" />
<button
follows="left|top"
@ -373,7 +167,7 @@
layout="topleft"
left="3"
name="message_estate_btn"
top_pad="8"
top_pad="15"
width="235" />
<button
follows="left|top"

View File

@ -1132,6 +1132,10 @@ If you continue to receive this message, please contact Second Life support for
<string name="RegionInfoBannedResidents">Always banned: ([BANNEDAGENTS], max [MAXBANNED])</string>
<string name="RegionInfoListTypeAllowedAgents">always allowed residents</string>
<string name="RegionInfoListTypeBannedAgents">always banned residents</string>
<string name="RegionInfoAllEstates">all estates</string>
<string name="RegionInfoManagedEstates">managed estates</string>
<string name="RegionInfoThisEstate">this estate</string>
<string name="AndNMore">and [EXTRA_COUNT] more</string>
<!-- script limits floater -->
<string name="ScriptLimitsParcelScriptMemory">Parcel Script Memory</string>

View File

@ -1,11 +1,11 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<floater name="floater_auction" title="COMENZAR LA VENTA DE TERRENO LINDEN">
<floater.string name="already for sale">
No puede subastar parcelas que ya están en venta.
No puedes ofertar en parcelas que ya están en venta.
</floater.string>
<check_box initial_value="true" label="Incluir la valla amarilla de selección" name="fence_check"/>
<check_box initial_value="true" label="Incluir la cerca de selección amarilla" name="fence_check"/>
<button label="Foto" label_selected="Foto" name="snapshot_btn"/>
<button label="Vender a cualquiera" label_selected="Vender a cualquiera" name="sell_to_anyone_btn"/>
<button label="Limpiar las configuraciones" label_selected="Limpiar las configuraciones" name="reset_parcel_btn"/>
<button label="Borrar las configuraciones" label_selected="Borrar las configuraciones" name="reset_parcel_btn"/>
<button label="Comenzar subasta" label_selected="Comenzar subasta" name="start_auction_btn"/>
</floater>

View File

@ -215,6 +215,7 @@
<combo_box.item label="Pagar al objeto" name="Payobject"/>
<combo_box.item label="Abrir el objeto" name="Open"/>
<combo_box.item label="Enfocar el objeto" name="Zoom"/>
<combo_box.item label="Ninguno" name="None"/>
</combo_box>
<check_box label="En venta:" name="checkbox for sale"/>
<combo_box name="sale type">

View File

@ -17,6 +17,7 @@
<menu_item_check label="Controles del movimiento" name="Movement Controls"/>
<menu label="Movimiento" name="Movement">
<menu_item_call label="Sentarme" name="Sit Down Here"/>
<menu_item_call label="Levantarme" name="Stand up"/>
<menu_item_check label="Volar" name="Fly"/>
<menu_item_call label="Dejar de volar" name="Stop flying"/>
<menu_item_check label="Correr siempre" name="Always Run"/>

View File

@ -1573,6 +1573,30 @@ Se superan en [NUM_EXCESS] los [MAX_AGENTS] permitidos en [LIST_TYPE].
<notification name="ProblemAddingEstateManagerBanned">
No se puede añadir un residente expulsado a la lista de administradores de estado.
</notification>
<notification name="ProblemBanningEstateManager">
No fue posible agregar al administrador de estado [AGENT] a la lista de prohibidos.
</notification>
<notification name="GroupIsAlreadyInList">
&lt;nolink&gt;[GROUP]&lt;/nolink&gt; ya está en la lista de Grupos autorizados.
</notification>
<notification name="AgentIsAlreadyInList">
[AGENT] ya está en tu lista [LIST_TYPE].
</notification>
<notification name="AgentsAreAlreadyInList">
[AGENT] ya está en tu lista [LIST_TYPE].
</notification>
<notification name="AgentWasAddedToList">
[AGENT] fue añadido a la lista [LIST_TYPE] de [ESTATE].
</notification>
<notification name="AgentsWereAddedToList">
[AGENT] fueron añadidos a la lista [LIST_TYPE] de [ESTATE].
</notification>
<notification name="AgentWasRemovedFromList">
[AGENT] fue eliminado de la lista [LIST_TYPE] de [ESTATE].
</notification>
<notification name="AgentsWereRemovedFromList">
[AGENT] fueron eliminados de la lista [LIST_TYPE] de [ESTATE].
</notification>
<notification name="CanNotChangeAppearanceUntilLoaded">
No puedes cambiar la apariencia hasta que no se carguen la ropa y la anatomía.
</notification>
@ -1901,7 +1925,7 @@ Se cambiarán miles de regiones, y se provocará un colapso en el espacio del se
<usetemplate canceltext="Cancelar" name="yesnocancelbuttons" notext="Todos los estados" yestext="Este estado"/>
</notification>
<notification label="Seleccionar el estado" name="EstateBannedAgentRemove">
¿Quitar de la lista de prohibición de acceso a este residente para que acceda sólo a este estado o a [ALL_ESTATES]?
¿Quitar a este Residente de la lista de acceso prohibido para este estado únicamente o para [ALL_ESTATES]?
<usetemplate canceltext="Cancelar" name="yesnocancelbuttons" notext="Todos los estados" yestext="Este estado"/>
</notification>
<notification label="Seleccionar el estado" name="EstateManagerAdd">
@ -3347,16 +3371,22 @@ Pulsa Aceptar o Rehusar para coger o no la llamada. Pulsa Bloquear para ignorar
Fallo al conectar a [VOICE_CHANNEL_NAME]; por favor, inténtalo más tarde. Vas a ser reconectado al chat de voz.
</notification>
<notification name="VoiceEffectsExpired">
Uno o más filtros de voz a los que estás suscrito han caducado.
[Pulsa aquí [URL]] para renovar la suscripción.
Una o más de las transformaciones de voz a las que estás suscrito han caducado.
[[URL] Pulsa aquí] para renovar la suscripción.
Si eres un miembro Premium [[PREMIUM_URL] pulsa aquí] para recibir tu beneficio de transformación de voz.
</notification>
<notification name="VoiceEffectsExpiredInUse">
El filtro de voz activo ha caducado y se ha aplicado tu configuración de voz normal.
[Pulsa aquí [URL]] para renovar la suscripción.
La transformación de voz activa ha caducado y se ha aplicado tu configuración de voz normal.
[[URL] Pulsa aquí] para renovar la suscripción.
Si eres un miembro Premium [[PREMIUM_URL] pulsa aquí] para recibir tu beneficio de transformación de voz.
</notification>
<notification name="VoiceEffectsWillExpire">
Una o más filtros de voz caducarán en menos de [INTERVAL] días.
[Pulsa aquí [URL]] para renovar la suscripción.
Una o más de tus transformaciones de voz caducarán en menos de [INTERVAL] días.
[[URL] Pulsa aquí] para renovar la suscripción
Si eres un miembro Premium [[PREMIUM_URL] pulsa aquí] para recibir tu beneficio de transformación de voz.
</notification>
<notification name="VoiceEffectsNew">
Están disponibles nuevos filtros de voz.
@ -3405,6 +3435,9 @@ Por tu seguridad, serán bloqueadas durante unos segundos.
<notification name="AppearanceToXMLFailed">
Error al guardar el aspecto en XML.
</notification>
<notification name="SnapshotToLocalDirNotExist">
Error al guardar la foto en [PATH]: El directorio no existe.
</notification>
<notification name="PresetNotSaved">
Error al guardar el valor predefinido [NAME].
</notification>

View File

@ -1,6 +1,11 @@
<?xml version="1.0" encoding="utf-8"?>
<panel name="panel_login">
<panel.string name="forgot_password_url">http://secondlife.com/account/request.php?lang=es</panel.string>
<panel.string name="forgot_password_url">
http://secondlife.com/account/request.php?lang=es
</panel.string>
<panel.string name="sign_up_url">
https://join.secondlife.com/
</panel.string>
<layout_stack name="ui_stack">
<layout_panel name="ui_container">
<combo_box label="Nombre de usuario" name="username_combo" tool_tip="El nombre de usuario que elegiste al registrarte, como bobsmith12 o Steller Sunshine"/>
@ -11,8 +16,13 @@
</combo_box>
<button label="Iniciar sesión" name="connect_btn"/>
<check_box label="Recordarme" name="remember_check"/>
<text name="forgot_password_text">Contraseña olvidada</text>
<text name="forgot_password_text">
Contraseña olvidada
</text>
<combo_box label="Seleccionar cuadrícula" name="server_combo"/>
<text name="sign_up_text">
Regístrate
</text>
</layout_panel>
</layout_stack>
</panel>

View File

@ -3,6 +3,9 @@
<panel.string name="forgot_password_url">
http://secondlife.com/account/request.php?lang=es
</panel.string>
<panel.string name="sign_up_url">
https://join.secondlife.com/
</panel.string>
<layout_stack name="logo_stack">
<layout_panel name="parent_panel2">
<layout_stack name="widget_stack">
@ -14,6 +17,9 @@
<text name="forgot_password_text">
Contraseña olvidada
</text>
<text name="sign_up_text">
Regístrate
</text>
</layout_panel>
</layout_stack>
</layout_panel>

View File

@ -0,0 +1,57 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<panel label="Acceso" name="Access">
<tab_container name="tabs">
<panel label="ADMINISTRADORES DE ESTADO" name="estate_managers_panel">
<text name="estate_manager_label">
Administradores de estado:
</text>
<name_list name="estate_manager_name_list">
<columns label="Nombre" name="name"/>
</name_list>
<button label="Añadir..." name="add_estate_manager_btn"/>
<button label="Quitar..." name="remove_estate_manager_btn"/>
</panel>
<panel label="PERMITIDO" name="allowed_panel">
<panel label="top_panel" name="allowed_search_panel">
<filter_editor label="Buscar agentes autorizados" name="allowed_search_input"/>
</panel>
<text name="allow_resident_label">
Siempre autorizado:
</text>
<name_list name="allowed_avatar_name_list">
<columns label="Nombre" name="name"/>
</name_list>
<button label="Añadir..." name="add_allowed_avatar_btn"/>
<button label="Quitar..." name="remove_allowed_avatar_btn"/>
</panel>
<panel label="GRUPOS AUTORIZADOS:" name="allowed_groups_panel">
<panel label="top_panel" name="allowed_group_search_panel">
<filter_editor label="Buscar grupos autorizados" name="allowed_group_search_input"/>
</panel>
<text name="allow_group_label">
Grupos siempre autorizados:
</text>
<name_list name="allowed_group_name_list">
<columns label="Nombre" name="name"/>
</name_list>
<button label="Añadir..." name="add_allowed_group_btn"/>
<button label="Quitar..." name="remove_allowed_group_btn"/>
</panel>
<panel label="PROHIBIDO" name="banned_panel">
<panel label="top_panel" name="banned_search_panel">
<filter_editor label="Buscar agentes prohibidos" name="banned_search_input"/>
</panel>
<text name="ban_resident_label">
Siempre prohibido:
</text>
<name_list name="banned_avatar_name_list">
<columns label="Nombre" name="name"/>
<columns label="Última fecha de inicio de sesión" name="last_login_date"/>
<columns label="Fecha de prohibición" name="ban_date"/>
<columns label="Prohibido por" name="bannedby"/>
</name_list>
<button label="Añadir..." name="add_banned_avatar_btn"/>
<button label="Quitar..." name="remove_banned_avatar_btn"/>
</panel>
</tab_container>
</panel>

View File

@ -15,8 +15,13 @@
<text name="estate_owner">
(desconocido)
</text>
<view_border name="wb1" width="505"/>
<check_box label="Permitir el acceso público" name="externally_visible_check"/>
<radio_group name="externally_visible_radio">
<radio_item label="Permitir únicamente a los residentes y grupos indicados en la pestaña Acceso" name="estate_restricted_access"/>
<radio_item label="Cualquiera puede visitar" name="estate_public_access"/>
</radio_group>
<check_box label="Debe ser mayor de 18" name="limit_age_verified" tool_tip="Para poder acceder a este estado, los Residentes deben ser mayores de 18 años. Para más información, consulta [SUPPORT_SITE]."/>
<check_box label="Debe haber información archivada sobre el pago" name="limit_payment" tool_tip="Para poder acceder a este estado los Residentes deben haber aportado información de pago en su cuenta. Para más información, ver [SUPPORT_SITE]."/>
<check_box label="Los propietarios de parcelas pueden ser más restrictivos" name="parcel_access_override"/>
<check_box label="Permitir el chat de voz" name="voice_chat_check"/>
<check_box label="Permitir el teleporte a cualquier punto" name="allow_direct_teleport"/>
<button label="Aplicar" name="apply_btn"/>

View File

@ -2271,6 +2271,18 @@ Si sigues recibiendo el mismo mensaje, solicita ayuda al personal de asistencia
<string name="RegionInfoListTypeBannedAgents">
Residentes con acceso prohibido
</string>
<string name="RegionInfoAllEstates">
todos los estados
</string>
<string name="RegionInfoManagedEstates">
estados administrados
</string>
<string name="RegionInfoThisEstate">
este estado
</string>
<string name="AndNMore">
y [EXTRA_COUNT] más
</string>
<string name="ScriptLimitsParcelScriptMemory">
Memoria de scripts de la parcela
</string>

View File

@ -126,6 +126,7 @@
<combo_box.item label="Payer l'objet" name="Payobject"/>
<combo_box.item label="Ouvrir" name="Open"/>
<combo_box.item label="Zoomer" name="Zoom"/>
<combo_box.item label="Aucun" name="None"/>
</combo_box>
<check_box label="À vendre :" name="checkbox for sale"/>
<combo_box name="sale type">

View File

@ -13,6 +13,7 @@
<menu_item_call label="Sélectionner un avatar" name="Avatar Picker"/>
<menu label="Déplacement" name="Movement">
<menu_item_call label="S'asseoir" name="Sit Down Here"/>
<menu_item_call label="Se lever" name="Stand up"/>
<menu_item_check label="Voler" name="Fly"/>
<menu_item_call label="Arrêter de voler" name="Stop flying"/>
<menu_item_check label="Toujours courir" name="Always Run"/>

View File

@ -1528,6 +1528,30 @@ Dépasse la limite fixée à [MAX_AGENTS] [LIST_TYPE] de [NUM_EXCESS].
<notification name="ProblemAddingEstateManagerBanned">
Impossible dajouter un résident banni à la liste des gérants de domaine.
</notification>
<notification name="ProblemBanningEstateManager">
Impossible d&apos;ajouter le gérant de domaine à la liste interdite.
</notification>
<notification name="GroupIsAlreadyInList">
&lt;nolink&gt;[GROUP]&lt;/nolink&gt; est déjà dans la liste des groupes autorisés.
</notification>
<notification name="AgentIsAlreadyInList">
[AGENT] est déjà dans votre liste [LIST_TYPE].
</notification>
<notification name="AgentsAreAlreadyInList">
[AGENT] sont déjà dans votre liste [LIST_TYPE].
</notification>
<notification name="AgentWasAddedToList">
[AGENT] a été ajouté à la liste [LIST_TYPE] de [ESTATE].
</notification>
<notification name="AgentsWereAddedToList">
[AGENT] ont été ajoutéq à la liste [LIST_TYPE] de [ESTATE].
</notification>
<notification name="AgentWasRemovedFromList">
[AGENT] a été supprimé de la liste [LIST_TYPE] de [ESTATE].
</notification>
<notification name="AgentsWereRemovedFromList">
[AGENT] ont été supprimés de la liste [LIST_TYPE] de [ESTATE].
</notification>
<notification name="CanNotChangeAppearanceUntilLoaded">
Impossible de changer d&apos;apparence jusqu&apos;à ce que les habits et la silhouette soient chargés.
</notification>
@ -1829,7 +1853,7 @@ Cette action modifiera des milliers de régions et sera difficile à digérer po
<usetemplate canceltext="Annuler" name="yesnocancelbuttons" notext="Tous les domaines" yestext="Ce domaine"/>
</notification>
<notification label="Choisir le domaine" name="EstateBannedAgentRemove">
Supprimer ce résident de la liste des résidents bannis pour ce domaine uniquement ou pour [ALL_ESTATES] ?
Supprimer ce résident de la liste des résidents interdits pour ce domaine uniquement ou pour [ALL_ESTATES] ?
<usetemplate canceltext="Annuler" name="yesnocancelbuttons" notext="Tous les domaines" yestext="Ce domaine"/>
</notification>
<notification label="Choisir le domaine" name="EstateManagerAdd">
@ -3142,16 +3166,22 @@ Pour y participer, cliquez sur Accepter. Sinon, cliquez sur Refuser. Pour ignore
Échec de la connexion avec [VOICE_CHANNEL_NAME], veuillez réessayer ultérieurement. Vous allez maintenant être reconnecté(e) au chat vocal près de vous.
</notification>
<notification name="VoiceEffectsExpired">
Au moins l&apos;un des effets de voix auxquels vous êtes abonné a expiré.
[[URL] Cliquez ici] pour renouveler votre abonnement.
Au moins l&apos;un des effets de voix auxquels vous êtes abonné a expiré.
[[URL] Cliquez ici] pour renouveler votre abonnement.
Si vous êtes un membre Premium, [[PREMIUM_URL] cliquez ici] pour recevoir votre effet de voix.
</notification>
<notification name="VoiceEffectsExpiredInUse">
L&apos;effet de voix actif a expiré. Vos paramètres de voix normaux ont été rétablis.
[[URL] Cliquez ici] pour renouveler votre abonnement.
[[URL] Cliquez ici] pour renouveler votre abonnement.
Si vous êtes un membre Premium, [[PREMIUM_URL] cliquez ici] pour recevoir votre effet de voix.
</notification>
<notification name="VoiceEffectsWillExpire">
Au moins l&apos;un de vos effets de voix expirera dans moins de [INTERVAL] jours.
[[URL] Cliquez ici] pour renouveler votre abonnement.
Au moins l&apos;un de vos effets de voix expirera dans moins de [INTERVAL] jours.
[[URL] Cliquez ici] pour renouveler votre abonnement.
Si vous êtes un membre Premium, [[PREMIUM_URL] cliquez ici] pour recevoir votre effet de voix.
</notification>
<notification name="VoiceEffectsNew">
De nouveaux effets de voix sont disponibles !
@ -3200,6 +3230,9 @@ Elles vont être bloquées pendant quelques secondes pour votre sécurité.
<notification name="AppearanceToXMLFailed">
Échec de lenregistrement de lapparence au format XML.
</notification>
<notification name="SnapshotToLocalDirNotExist">
Échec denregistrement de la photo dans [PATH] : Le répertoire n&apos;existe pas.
</notification>
<notification name="PresetNotSaved">
Erreur denregistrement du préréglage [NAME].
</notification>

View File

@ -1,5 +1,11 @@
<?xml version="1.0"?>
<panel name="panel_login">
<panel.string name="forgot_password_url">
http://secondlife.com/account/request.php?lang=fr
</panel.string>
<panel.string name="sign_up_url">
https://join.secondlife.com/
</panel.string>
<layout_stack name="ui_stack">
<layout_panel name="ui_container">
<combo_box label="Nom d'utilisateur" tool_tip="Le nom d'utilisateur avec lequel vous vous êtes enregistré, comme bobsmith12 ou Steller Sunshine" name="username_combo"/>
@ -10,8 +16,13 @@
</combo_box>
<button label="Connexion" name="connect_btn"/>
<check_box label="Se souvenir de moi" name="remember_check"/>
<text name="forgot_password_text">Mot de passe oublié</text>
<combo_box label="Sélectionnez le monde" name="server_combo"/>
<text name="forgot_password_text">
Mot de passe oublié
</text>
<combo_box label="Sélectionner la grille" left_pad="20" name="server_combo"/>
<text name="sign_up_text">
S&apos;inscrire
</text>
</layout_panel>
</layout_stack>
</panel>

View File

@ -1,22 +1,37 @@
<?xml version="1.0"?>
<?xml version="1.0" encoding="utf-8"?>
<panel name="panel_login">
<panel.string name="forgot_password_url">
http://secondlife.com/account/request.php?lang=fr
</panel.string>
<panel.string name="sign_up_url">
https://join.secondlife.com/
</panel.string>
<layout_stack name="logo_stack">
<layout_panel name="parent_panel2">
<layout_stack name="widget_stack">
<layout_panel name="widget_container">
<combo_box label="Nom d'utilisateur" tool_tip="Le nom d'utilisateur avec lequel vous vous êtes enregistré, comme bobsmith12 ou Steller Sunshine" name="username_combo"/>
<line_editor name="password_edit" label="Mot de passe"/>
<combo_box label="Nom d&apos;utilisateur" name="username_combo" tool_tip="Nom d&apos;utilisateur que vous avez choisi lors de votre inscription (par exemple, bobsmith12 ou Steller Sunshine)."/>
<line_editor label="Mot de passe" name="password_edit"/>
<button label="Connexion" name="connect_btn"/>
<check_box label="Se souvenir de moi" name="remember_check"/>
<text name="forgot_password_text">Mot de passe oublié</text>
<check_box font="SansSerifSmall" label="Mémoriser mes informations" name="remember_check"/>
<text name="forgot_password_text">
Mot de passe oublié
</text>
<text name="sign_up_text">
S&apos;inscrire
</text>
</layout_panel>
</layout_stack>
</layout_panel>
<layout_panel name="parent_panel3">
<layout_stack name="images_stack">
<layout_panel name="images_container">
<text name="image_caption_left">Vos premiers pas se feront à Learning Island. Trouvez la sortie !</text>
<text name="image_caption_right">Explorez ensuite Social Island et rencontrez de nouveaux résidents !</text>
<text name="image_caption_left">
Votre première étape est Learning Island. Trouvez le portail de sortie.
</text>
<text name="image_caption_right">
Puis explorez Social Island et faites la connaissance d&apos;autres résidents.
</text>
</layout_panel>
</layout_stack>
</layout_panel>

View File

@ -0,0 +1,57 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<panel label="ACCÈS" name="Access">
<tab_container name="tabs">
<panel label="GÉRANTS DU DOMAINE" name="estate_managers_panel">
<text name="estate_manager_label">
Gérants du domaine :
</text>
<name_list name="estate_manager_name_list">
<columns label="Nom" name="name"/>
</name_list>
<button label="Ajouter..." name="add_estate_manager_btn"/>
<button label="Supprimer..." name="remove_estate_manager_btn"/>
</panel>
<panel label="AUTORISÉ" name="allowed_panel">
<panel label="top_panel" name="allowed_search_panel">
<filter_editor label="Rechercher des agents autorisés" name="allowed_search_input"/>
</panel>
<text name="allow_resident_label">
Toujours autorisé :
</text>
<name_list name="allowed_avatar_name_list">
<columns label="Nom" name="name"/>
</name_list>
<button label="Ajouter..." name="add_allowed_avatar_btn"/>
<button label="Supprimer..." name="remove_allowed_avatar_btn"/>
</panel>
<panel label="GROUPES AUTORISÉS" name="allowed_groups_panel">
<panel label="top_panel" name="allowed_group_search_panel">
<filter_editor label="Rechercher des groupes autorisés" name="allowed_group_search_input"/>
</panel>
<text name="allow_group_label">
Groupes toujours autorisés :
</text>
<name_list name="allowed_group_name_list">
<columns label="Nom" name="name"/>
</name_list>
<button label="Ajouter..." name="add_allowed_group_btn"/>
<button label="Supprimer" name="remove_allowed_group_btn"/>
</panel>
<panel label="INTERDIT" name="banned_panel">
<panel label="top_panel" name="banned_search_panel">
<filter_editor label="Rechercher des agents interdits" name="banned_search_input"/>
</panel>
<text name="ban_resident_label">
Toujours interdit :
</text>
<name_list name="banned_avatar_name_list">
<columns label="Nom" name="name"/>
<columns label="Date de la dernière connexion" name="last_login_date"/>
<columns label="Date d&apos;interdiction" name="ban_date"/>
<columns label="Interdit par" name="bannedby"/>
</name_list>
<button label="Ajouter..." name="add_banned_avatar_btn"/>
<button label="Supprimer..." name="remove_banned_avatar_btn"/>
</panel>
</tab_container>
</panel>

View File

@ -1,29 +1,52 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<panel label="Domaine" name="Estate">
<text name="estate_help_text">Les modifications de paramètre dans cet onglet affecteront toutes les régions de ce domaine.</text>
<text name="estate_text">Domaine :</text>
<text name="estate_name">(inconnu)</text>
<text name="owner_text">Propriétaire du domaine :</text>
<text name="estate_owner">(inconnu)</text>
<check_box label="Autoriser l'accès public" name="externally_visible_check"/>
<check_box label="Autoriser le chat vocal" name="voice_chat_check"/>
<text bottom="-34" name="estate_help_text">
Les modifications des paramètres de cet
onglet affecteront toutes les régions du
domaine.
</text>
<text bottom_delta="-34" name="estate_text" top_pad="8">
Domaine :
</text>
<text name="estate_name">
(inconnu)
</text>
<text name="owner_text">
Propriétaire :
</text>
<text name="estate_owner">
(inconnu)
</text>
<radio_group name="externally_visible_radio">
<radio_item label="Autoriser uniquement les résidents et les groupes indiqués dans l&apos;onglet Accès" name="estate_restricted_access"/>
<radio_item label="Visite ouverte à tous" name="estate_public_access"/>
</radio_group>
<check_box label="Doit avoir plus de 18 ans" name="limit_age_verified" tool_tip="Pour accéder à ce domaine, les résidents doivent avoir au moins 18 ans. Consultez le [SUPPORT_SITE] pour plus d&apos;informations."/>
<check_box label="Les infos de paiement doivent être enregistrées" name="limit_payment" tool_tip="Pour pouvoir accéder à ce domaine, les résidents doivent avoir enregistré des informations de paiement. Consultez le [SUPPORT_SITE] pour plus d&apos;informations."/>
<check_box label="Les propriétaires de terrain peuvent imposer plus de restrictions" name="parcel_access_override"/>
<check_box label="Autoriser les chats vocaux" name="voice_chat_check"/>
<check_box label="Autoriser la téléportation directe" name="allow_direct_teleport"/>
<button label="Appliquer" name="apply_btn"/>
<text name="Only Allow">N'autoriser l'accès aux résidents qui :</text>
<check_box label="Ont saisi leurs informations de paiement" name="limit_payment" tool_tip="Les résidents doivent avoir enregistré leurs informations de paiement pour accéder à ce terrain. Consultez le [SUPPORT_SITE] pour plus d'informations."/>
<check_box label="Sont majeurs" name="limit_age_verified" tool_tip="Les résidents doivent être majeurs pour accéder à ce terrain. Consultez le [SUPPORT_SITE] pour plus d'informations."/>
<text name="estate_manager_label">Gérants du domaine :</text>
<text name="allow_resident_label">Résidents autorisés :</text>
<text name="estate_manager_label">
Gérants du domaine :
</text>
<text name="allow_resident_label">
Toujours autorisé :
</text>
<button label="Ajouter..." name="add_estate_manager_btn"/>
<button label="Supprimer..." name="remove_estate_manager_btn"/>
<button label="Ajouter..." name="add_allowed_avatar_btn"/>
<button label="Supprimer..." name="remove_allowed_avatar_btn"/>
<text name="allow_group_label">Groupes autorisés :</text>
<text name="ban_resident_label">Résidents bannis :</text>
<text name="allow_group_label">
Groupes toujours autorisés :
</text>
<text name="ban_resident_label">
Toujours interdit :
</text>
<button label="Ajouter..." name="add_allowed_group_btn"/>
<button label="Supprimer..." name="remove_allowed_group_btn"/>
<button label="Ajouter..." name="add_banned_avatar_btn"/>
<button label="Supprimer..." name="remove_banned_avatar_btn"/>
<button label="Envoyer un message au domaine..." name="message_estate_btn"/>
<button label="Expulser un résident du domaine..." name="kick_user_from_estate_btn"/>
<button label="Message au domaine..." name="message_estate_btn"/>
<button label="Éjecter du domaine..." name="kick_user_from_estate_btn"/>
</panel>

View File

@ -2177,6 +2177,18 @@ Si vous continuez de recevoir ce message, contactez lassistance Second Life
<string name="RegionInfoListTypeBannedAgents">
Toujours interdit
</string>
<string name="RegionInfoAllEstates">
tous les domaines
</string>
<string name="RegionInfoManagedEstates">
domaines gérés
</string>
<string name="RegionInfoThisEstate">
ce domaine
</string>
<string name="AndNMore">
et [EXTRA_COUNT] plus
</string>
<string name="ScriptLimitsParcelScriptMemory">
Mémoire des scripts de parcelles
</string>

View File

@ -1,10 +1,10 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<floater name="floater_auction" title="Inizia la vendita di terreno Linden">
<floater.string name="already for sale">
Non si possono mettere in asta terreni che sono già in vendita.
Non puoi mettere allasta terreni che sono già in vendita.
</floater.string>
<check_box label="Includi barriere di selezione gialle" name="fence_check"/>
<button label="Fotografia" name="snapshot_btn"/>
<check_box initial_value="true" label="Includi la parte selezionata in giallo" name="fence_check"/>
<button label="Istantanea" label_selected="Istantanea" name="snapshot_btn"/>
<button label="Vendi a chiunque" name="sell_to_anyone_btn"/>
<button label="Cancella impostazioni" name="reset_parcel_btn"/>
<button label="Inizia l&apos;asta" name="start_auction_btn"/>

View File

@ -1,14 +0,0 @@
<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
<floater name="Ban duration" title="Durata bando">
<text name="duration_textbox" width="110">
Durata del bando:
</text>
<spinner name="ban_time" tool_tip="Per quanto tempo bandire, 0 vuol dire per sempre"/>
<text name="hours_textbox">
ore.
</text>
<text name="info_textbox">
0 significa per sempre.
</text>
<button label="Annulla" name="BanCancelButton" />
</floater>

View File

@ -1499,6 +1499,30 @@ Eccede il [MAX_AGENTS] [LIST_TYPE] limite di [NUM_EXCESS].
<notification name="ProblemAddingEstateManagerBanned">
Impossibile aggiungere un residente bloccato alla lista dei gestori della proprietà.
</notification>
<notification name="ProblemBanningEstateManager">
Impossibile aggiunere il gestore della proprietà immobiliare [AGENT] allelenco degli espulsi.
</notification>
<notification name="GroupIsAlreadyInList">
&lt;nolink&gt;[GROUP]&lt;/nolink&gt; si trova già nellelenco dei Gruppi ammessi.
</notification>
<notification name="AgentIsAlreadyInList">
[AGENT] è gia nel tuo elenco [LIST_TYPE].
</notification>
<notification name="AgentsAreAlreadyInList">
[AGENT] è gia nel tuo elenco [LIST_TYPE].
</notification>
<notification name="AgentWasAddedToList">
[AGENT] è stato aggiunto allelenco [LIST_TYPE] di [ESTATE].
</notification>
<notification name="AgentsWereAddedToList">
[AGENT] è stato aggiunto allelenco [LIST_TYPE] di [ESTATE].
</notification>
<notification name="AgentWasRemovedFromList">
[AGENT] è stato rimosso dallelenco [LIST_TYPE] di [ESTATE].
</notification>
<notification name="AgentsWereRemovedFromList">
[AGENT] è stato rimosso dallelenco [LIST_TYPE] di [ESTATE].
</notification>
<notification name="CanNotChangeAppearanceUntilLoaded">
Impossibile cambiare l&apos;aspetto fisico finchè i vestiti non sono caricati.
</notification>
@ -1838,7 +1862,7 @@ Continuare?
<usetemplate canceltext="Annulla" name="yesnocancelbuttons" notext="Tutte le proprietà" yestext="Questa proprietà"/>
</notification>
<notification label="Seleziona la proprietà" name="EstateBannedAgentRemove">
Rimuovi questo residente dalla lista dei residenti bloccati nell&apos;accesso solo a questa proprietà oppure per [ALL_ESTATES]?
Rimuovi questo Residente dallelenco degli espulsi solo per questa proprietà immobiliare oppure per [ALL_ESTATES]?
<usetemplate canceltext="Annulla" name="yesnocancelbuttons" notext="Tutte le proprietà" yestext="Questa proprietà"/>
</notification>
<notification label="Seleziona la proprietà" name="EstateManagerAdd">
@ -3244,20 +3268,20 @@ Clicca su Accetta per unirti alla chat oppure su Rifiuta per declinare l&apos;in
Stiamo creando una canale voce per te. Questo può richiedere fino a un minuto.
</notification>
<notification name="VoiceEffectsExpired">
Almeno una delle manipolazioni vocali alle quali sei iscritto è scaduta.
[[URL] Fai clic qui] per rinnovare l&apos;abbonamento.
Almeno una delle manipolazioni vocali alle quali sei iscritto è scaduta.
[[URL] Fai clic qui] per rinnovare l&apos;abbonamento.
Se sei un utente Premium, [[PREMIUM_URL] clic qui] per ricevere la tua offerta di manipolazioni vocali.
</notification>
<notification name="VoiceEffectsExpiredInUse">
Poiché la manipolazione vocale attiva è scaduta, sono state applicate le tue impostazioni normali.
[[URL] Fai clic qui] per rinnovare l&apos;abbonamento.
Poiché la manipolazione vocale attiva è scaduta, sono state applicate le tue impostazioni normali.
[[URL] Fai clic qui] per rinnovare l&apos;abbonamento.
Se sei un utente Premium, [[PREMIUM_URL] clic qui] per ricevere la tua offerta di manipolazioni vocali.
</notification>
<notification name="VoiceEffectsWillExpire">
Almeno una delle tue manipolazioni vocali scadrà tra meno di [INTERVAL] giorni.
[[URL] Fai clic qui] per rinnovare l&apos;abbonamento.
Almeno una delle tue manipolazioni vocali scadrà tra meno di [INTERVAL] giorni.
[[URL] Fai clic qui] per rinnovare l&apos;abbonamento.
Se sei un utente Premium, [[PREMIUM_URL] clic qui] per ricevere la tua offerta di manipolazioni vocali.
</notification>
@ -3312,7 +3336,7 @@ Per sicurezza, verranno bloccati per alcuni secondi.
Impossibile salvare la fotografia in [PATH]: il disco è pieno. Servono [NEED_MEMORY]KB ma ce ne sono solamente [FREE_MEMORY]KB .
</notification>
<notification name="SnapshotToLocalDirNotExist">
Errore nel salvataggio della foto in [PATH]: La cartella non esiste.
Salvataggio istantanea in [PATH] non riuscito: La cartella non esiste.
</notification>
<notification name="PresetNotSaved">
Errore nel salvataggio del preset [NAME].

View File

@ -1,5 +1,11 @@
<?xml version="1.0" encoding="utf-8"?>
<panel name="panel_login">
<panel.string name="forgot_password_url">
http://secondlife.com/account/request.php?lang=it
</panel.string>
<panel.string name="sign_up_url">
http://join.secondlife.com/
</panel.string>
<layout_stack name="ui_stack">
<layout_panel name="ui_container">
<combo_box label="Nome utente" name="username_combo" tool_tip="Il nome utente che hai scelto durante la registrazione, come roby12 o Stella Solare"/>
@ -15,8 +21,8 @@
</text>
<combo_box label="Seleziona grid" name="server_combo"/>
<text name="sign_up_text">
Iscriviti
</text>
Registrati
</text>
</layout_panel>
</layout_stack>
</panel>

View File

@ -1,5 +1,11 @@
<?xml version="1.0" encoding="utf-8"?>
<panel name="panel_login">
<panel.string name="forgot_password_url">
http://secondlife.com/account/request.php?lang=it
</panel.string>
<panel.string name="sign_up_url">
http://join.secondlife.com/
</panel.string>
<layout_stack name="logo_stack">
<layout_panel name="parent_panel2">
<layout_stack name="widget_stack">
@ -7,13 +13,13 @@
<combo_box label="Nome utente" name="username_combo" tool_tip="Il nome utente che hai scelto durante la registrazione, come roby12 o Stella Solare"/>
<line_editor label="Password" name="password_edit"/>
<button label="Accedi" name="connect_btn"/>
<check_box label="Ricorda" name="remember_check"/>
<check_box label="Ricordami" name="remember_check"/>
<text name="forgot_password_text">
Password dimenticata
</text>
<text name="sign_up_text">
Iscriviti
</text>
Registrati
</text>
</layout_panel>
</layout_stack>
</layout_panel>

View File

@ -0,0 +1,57 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<panel label="ACCESSO" name="Access">
<tab_container name="tabs">
<panel label="GESTORI DELLE PROPRIETÀ IMMOBILIARI" name="estate_managers_panel">
<text name="estate_manager_label">
Gestori delle proprietà immobiliari
</text>
<name_list name="estate_manager_name_list">
<columns label="Nome" name="name"/>
</name_list>
<button label="Aggiungi..." name="add_estate_manager_btn"/>
<button label="Rimuovi..." name="remove_estate_manager_btn"/>
</panel>
<panel label="AMMESSO" name="allowed_panel">
<panel label="top_panel" name="allowed_search_panel">
<filter_editor label="Cerca agenti ammessi" name="allowed_search_input"/>
</panel>
<text name="allow_resident_label">
Sempre ammesso:
</text>
<name_list name="allowed_avatar_name_list">
<columns label="Nome" name="name"/>
</name_list>
<button label="Aggiungi..." name="add_allowed_avatar_btn"/>
<button label="Rimuovi..." name="remove_allowed_avatar_btn"/>
</panel>
<panel label="GRUPPI AMMESSI" name="allowed_groups_panel">
<panel label="top_panel" name="allowed_group_search_panel">
<filter_editor label="Cerca gruppi consentiti" name="allowed_group_search_input"/>
</panel>
<text name="allow_group_label">
Gruppi sempre consentiti:
</text>
<name_list name="allowed_group_name_list">
<columns label="Nome" name="name"/>
</name_list>
<button label="Aggiungi..." name="add_allowed_group_btn"/>
<button label="Rimuovi..." name="remove_allowed_group_btn"/>
</panel>
<panel label="ESPULSI" name="banned_panel">
<panel label="top_panel" name="banned_search_panel">
<filter_editor label="Cerca agenti espulsi" name="banned_search_input"/>
</panel>
<text name="ban_resident_label">
Sempre espulsi:
</text>
<name_list name="banned_avatar_name_list">
<columns label="Nome" name="name"/>
<columns label="Ultima data di accesso" name="last_login_date"/>
<columns label="Data espulsione" name="ban_date"/>
<columns label="Espulso da" name="bannedby"/>
</name_list>
<button label="Aggiungi..." name="add_banned_avatar_btn"/>
<button label="Rimuovi..." name="remove_banned_avatar_btn"/>
</panel>
</tab_container>
</panel>

View File

@ -16,7 +16,7 @@
(sconosciuto)
</text>
<radio_group name="externally_visible_radio">
<radio_item label="Accesso ai gruppi e utenti sottoelencati" name="estate_restricted_access" />
<radio_item label="Consenti accesso solo ai residenti e ai gruppi elencati nella scheda di Accesso" name="estate_restricted_access"/>
<radio_item label="Accesso libero" name="estate_public_access" />
</radio_group>
<check_box label="Hanno almeno 18 anni" name="limit_age_verified" tool_tip="Per poter visitare questa proprietà immobiliare gli utenti devono avere almeno 18 anni. Vedi [SUPPORT_SITE] per maggiori informazioni."/>

View File

@ -107,6 +107,24 @@
<text name="pathfinding_attributes_label">
Attributi pathfinding:
</text>
<text name="B:">
B:
</text>
<text name="O:">
O:
</text>
<text name="G:">
G:
</text>
<text name="E:">
E:
</text>
<text name="N:">
N:
</text>
<text name="F:">
F:
</text>
</panel>
</scroll_container>
<layout_stack name="buttons_ls">

View File

@ -2361,6 +2361,18 @@ Se il messaggio persiste, contattare il supporto Second Life per assistenza http
<string name="RegionInfoListTypeBannedAgents">
utenti sempre banditi
</string>
<string name="RegionInfoAllEstates">
tutte le proprietà immobiliari
</string>
<string name="RegionInfoManagedEstates">
proprietà immobiliari che gestisci
</string>
<string name="RegionInfoThisEstate">
questa proprietà immobiliare
</string>
<string name="AndNMore">
e [EXTRA_COUNT] ancora
</string>
<string name="ScriptLimitsParcelScriptMemory">
Memoria script del lotto
</string>

View File

@ -1,9 +1,9 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<floater name="floater_auction" title="リンデンランドの販売開始">
<floater.string name="already for sale">
売り出し中の区画は、オークションに出品できません。
販売中の区画をオークションに出品することはできません。
</floater.string>
<check_box initial_value="true" label="黄色の選択フェンスを含める" name="fence_check"/>
<check_box initial_value="true" label="黄色のセレクションフェンスを含める" name="fence_check"/>
<button label="スナップショット" label_selected="スナップショット" name="snapshot_btn"/>
<button label="誰にでも販売" label_selected="誰にでも販売" name="sell_to_anyone_btn"/>
<button label="設定をクリア" label_selected="設定をクリア" name="reset_parcel_btn"/>

View File

@ -213,6 +213,7 @@
<combo_box.item label="オブジェクトに支払う" name="Payobject"/>
<combo_box.item label="開く" name="Open"/>
<combo_box.item label="ズームする" name="Zoom"/>
<combo_box.item label="なし" name="None"/>
</combo_box>
<check_box label="販売対象:" name="checkbox for sale"/>
<spinner label="L$" name="Edit Cost"/>

View File

@ -22,6 +22,7 @@
<menu label="ムーブメント" name="Movement">
<menu_item_call label="座る" name="Sit Down Here"/>
<menu_item_call label="立ち上がる" name="Stand up"/>
<menu_item_check label="飛ぶ" name="Fly"/>
<!-- added Mar.15, 2015 -->
<menu_item_call label="着地する" name="Stop flying" />

View File

@ -1655,6 +1655,30 @@ SHA1 フィンガープリント: [MD5_DIGEST]
<notification name="ProblemAddingEstateManagerBanned">
追放された住人を不動産管理者リストに追加できません。
</notification>
<notification name="ProblemBanningEstateManager">
禁止リストに不動産マネージャー [AGENT] を追加できません。
</notification>
<notification name="GroupIsAlreadyInList">
&lt;nolink&gt;[GROUP]&lt;/nolink&gt; はすでに許可されたグループのリストに追加されています。
</notification>
<notification name="AgentIsAlreadyInList">
[AGENT] はすでにあなたの [LIST_TYPE] リストに追加されています。
</notification>
<notification name="AgentsAreAlreadyInList">
[AGENT] はすでにあなたの [LIST_TYPE] リストに追加されています。
</notification>
<notification name="AgentWasAddedToList">
[AGENT] が [ESTATE] の [LIST_TYPE] リストに追加されました。
</notification>
<notification name="AgentsWereAddedToList">
[AGENT] が [ESTATE] の [LIST_TYPE] リストに追加されました。
</notification>
<notification name="AgentWasRemovedFromList">
[AGENT] が [ESTATE] の [LIST_TYPE] リストから削除されました。
</notification>
<notification name="AgentsWereRemovedFromList">
[AGENT] が [ESTATE] の [LIST_TYPE] リストから削除されました。
</notification>
<notification name="CanNotChangeAppearanceUntilLoaded">
衣類およびシェイプが読み込まれるまでは、容姿の変更はできません。
</notification>
@ -2011,7 +2035,7 @@ http://wiki.secondlife.com/wiki/Setting_your_display_name を参照してくだ
<usetemplate canceltext="取り消し" name="yesnocancelbuttons" notext="すべての不動産" yestext="この不動産"/>
</notification>
<notification label="不動産を選択" name="EstateBannedAgentRemove">
この住人が、この不動産限定、または [ALL_ESTATES] にアクセスできるように、禁止リストから削除しますか?
この住人をこの不動産の立入禁止リストからのみ削除しますか?それとも [ALL_ESTATES] の立入禁止リストから削除しますか?
<usetemplate canceltext="取り消し" name="yesnocancelbuttons" notext="すべての不動産" yestext="この不動産"/>
</notification>
<notification label="不動産を選択" name="EstateManagerAdd">
@ -3561,13 +3585,22 @@ M キーを押して変更します。
[VOICE_CHANNEL_NAME] への接続に失敗しました。あとで再度お試しください。 「近くのボイスチャット」に再接続されます。
</notification>
<notification name="VoiceEffectsExpired">
ボイスモーフィング効果の1つまたは複数の有効期限が終了しました。期限を延長・更新するには[[URL]こちらをクリック]してください。
ボイスモーフィング効果の1つまたは複数の有効期限が終了しました。
期限を延長・更新するには [[URL] Click here] をクリックしてください。
プレミアム会員の方は、 [[PREMIUM_URL] click here] をクリックしてボイスモーフィング特典をお受け取りください。
</notification>
<notification name="VoiceEffectsExpiredInUse">
ボイスモーフィング効果の有効期限が終了したため、あなたの通常のボイス設定が適用されました。期限を延長・更新するには[[URL]こちらをクリック]してください。
ボイスモーフィング効果の有効期限が終了したため、あなたの通常のボイス設定が適用されました。
期限を延長・更新するには [[URL] Click here] をクリックしてください。
プレミアム会員の方は、 [[PREMIUM_URL] click here] をクリックしてボイスモーフィング特典をお受け取りください。
</notification>
<notification name="VoiceEffectsWillExpire">
ボイスモーフィング効果の1つまたは複数の有効期限が[INTERVAL]日以内に終了します。期限を延長・更新するには[[URL]こちらをクリック]してください。
ボイスモーフィング効果の1つまたは複数の有効期限が [INTERVAL] 日以内に終了します。
期限を延長・更新するには [[URL] Click here] をクリックしてください。
プレミアム会員の方は、 [[PREMIUM_URL] click here] をクリックしてボイスモーフィング特典をお受け取りください。
</notification>
<notification name="VoiceEffectsNew">
新しいボイスモーフィング効果が登場!
@ -3620,6 +3653,9 @@ M キーを押して変更します。
<notification icon="notifytip.tga" name="SnapshotToComputerFailed">
スナップショットを [PATH] に保存するのに失敗しました。ディスクが一杯です。[NEED_MEMORY]KB 必要ですが、空いているのは [FREE_MEMORY]KB です。
</notification>
<notification name="SnapshotToLocalDirNotExist">
スナップショットを [PATH] に保存できませんでした:ディレクトリは存在しません。
</notification>
<notification name="PresetNotSaved">
プリセット [NAME] の保存エラー。
</notification>

View File

@ -1,6 +1,11 @@
<?xml version="1.0" encoding="utf-8"?>
<panel name="panel_login">
<panel.string name="forgot_password_url">http://secondlife.com/account/request.php?lang=ja</panel.string>
<panel.string name="forgot_password_url">
http://secondlife.com/account/request.php?lang=ja
</panel.string>
<panel.string name="sign_up_url">
https://join.secondlife.com/
</panel.string>
<layout_stack name="ui_stack">
<layout_panel name="ui_container">
<combo_box label="ユーザー名" name="username_combo" tool_tip="登録時に自分で選んだユーザー名bobsmith12、Steller Sunshineなど"/>
@ -11,8 +16,13 @@
</combo_box>
<button label="ログイン" name="connect_btn"/>
<check_box label="記憶する" name="remember_check"/>
<text name="forgot_password_text">パスワードを忘れた場合</text>
<text name="forgot_password_text">
パスワードを忘れた場合
</text>
<combo_box label="グリッドを選択" name="server_combo"/>
<text name="sign_up_text">
登録
</text>
</layout_panel>
</layout_stack>
</panel>

View File

@ -3,6 +3,9 @@
<panel.string name="forgot_password_url">
http://secondlife.com/account/request.php?lang=ja
</panel.string>
<panel.string name="sign_up_url">
https://join.secondlife.com/
</panel.string>
<layout_stack name="logo_stack">
<layout_panel name="parent_panel2">
<layout_stack name="widget_stack">
@ -14,6 +17,9 @@
<text name="forgot_password_text">
パスワードを忘れた場合
</text>
<text name="sign_up_text">
登録
</text>
</layout_panel>
</layout_stack>
</layout_panel>

View File

@ -0,0 +1,57 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<panel label="アクセス" name="Access">
<tab_container name="tabs">
<panel label="不動産マネージャー" name="estate_managers_panel">
<text name="estate_manager_label">
不動産マネージャー:
</text>
<name_list name="estate_manager_name_list">
<columns label="名前" name="name"/>
</name_list>
<button label="追加..." name="add_estate_manager_btn"/>
<button label="削除…" name="remove_estate_manager_btn"/>
</panel>
<panel label="許可" name="allowed_panel">
<panel label="top_panel" name="allowed_search_panel">
<filter_editor label="許可されたエージェントを検索" name="allowed_search_input"/>
</panel>
<text name="allow_resident_label">
常に許可:
</text>
<name_list name="allowed_avatar_name_list">
<columns label="名前" name="name"/>
</name_list>
<button label="追加..." name="add_allowed_avatar_btn"/>
<button label="削除…" name="remove_allowed_avatar_btn"/>
</panel>
<panel label="許可されたグループ" name="allowed_groups_panel">
<panel label="top_panel" name="allowed_group_search_panel">
<filter_editor label="許可されたグループを検索" name="allowed_group_search_input"/>
</panel>
<text name="allow_group_label">
常に許可されたグループ:
</text>
<name_list name="allowed_group_name_list">
<columns label="名前" name="name"/>
</name_list>
<button label="追加..." name="add_allowed_group_btn"/>
<button label="削除…" name="remove_allowed_group_btn"/>
</panel>
<panel label="禁止" name="banned_panel">
<panel label="top_panel" name="banned_search_panel">
<filter_editor label="禁止されたエージェントを検索" name="banned_search_input"/>
</panel>
<text name="ban_resident_label">
常に禁止:
</text>
<name_list name="banned_avatar_name_list">
<columns label="名前" name="name"/>
<columns label="最後にログインした日" name="last_login_date"/>
<columns label="禁止された日付" name="ban_date"/>
<columns label="禁止した人:" name="bannedby"/>
</name_list>
<button label="追加..." name="add_banned_avatar_btn"/>
<button label="削除…" name="remove_banned_avatar_btn"/>
</panel>
</tab_container>
</panel>

View File

@ -16,7 +16,7 @@
(不明)
</text>
<radio_group name="externally_visible_radio">
<radio_item label="下記の住人とグループのみ許可する" name="estate_restricted_access"/>
<radio_item label="アクセスタブに記載された住人とグループのみ許可する" name="estate_restricted_access"/>
<radio_item label="誰でも訪問可" name="estate_public_access"/>
</radio_group>
<check_box label="18 歳以上である必要があります" name="limit_age_verified" tool_tip="この不動産エステートにアクセスするには、18 才以上でなければなりません。詳細については、[SUPPORT_SITE] をご覧ください。"/>

View File

@ -1,32 +1,72 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<panel name="object properties" title="オブジェクトのプロフィール">
<panel.string name="text deed continued">譲渡</panel.string>
<panel.string name="text deed">譲渡</panel.string>
<panel.string name="text modify info 1">このオブジェクトを修正できます</panel.string>
<panel.string name="text modify info 2">これらのオブジェクトを修正できます</panel.string>
<panel.string name="text modify info 3">このオブジェクトを修正できません</panel.string>
<panel.string name="text modify info 4">これらのオブジェクトを修正できません</panel.string>
<panel.string name="text modify info 5">地域(リージョン)の境界を越えてこのオブジェクトを修正できません</panel.string>
<panel.string name="text modify info 6">地域(リージョン)の境界を越えてこれらのオブジェクトを修正できません</panel.string>
<panel.string name="text modify warning">このオブジェクトには、パーツがリンクされています</panel.string>
<panel.string name="Cost Default">価格: L$</panel.string>
<panel.string name="Cost Total">合計価格: L$</panel.string>
<panel.string name="Cost Per Unit">Price Per: L$</panel.string>
<panel.string name="Cost Mixed">Mixed Price</panel.string>
<panel.string name="Sale Mixed">Mixed Sale</panel.string>
<panel.string name="text deed continued">
譲渡
</panel.string>
<panel.string name="text deed">
譲渡
</panel.string>
<panel.string name="text modify info 1">
このオブジェクトを修正できます
</panel.string>
<panel.string name="text modify info 2">
これらのオブジェクトを修正できます
</panel.string>
<panel.string name="text modify info 3">
このオブジェクトを修正できません
</panel.string>
<panel.string name="text modify info 4">
これらのオブジェクトを修正できません
</panel.string>
<panel.string name="text modify info 5">
地域(リージョン)の境界を越えてこのオブジェクトを修正できません
</panel.string>
<panel.string name="text modify info 6">
地域(リージョン)の境界を越えてこれらのオブジェクトを修正できません
</panel.string>
<panel.string name="text modify warning">
このオブジェクトには、パーツがリンクされています
</panel.string>
<panel.string name="Cost Default">
価格: L$
</panel.string>
<panel.string name="Cost Total">
合計価格: L$
</panel.string>
<panel.string name="Cost Per Unit">
Price Per: L$
</panel.string>
<panel.string name="Cost Mixed">
Mixed Price
</panel.string>
<panel.string name="Sale Mixed">
Mixed Sale
</panel.string>
<text name="title" value="オブジェクトのプロフィール"/>
<text name="where" value="(インワールド)"/>
<scroll_container name="item_profile_scroll">
<panel label="" name="properties_panel">
<text name="Name:">名前:</text>
<text name="Description:">説明:</text>
<text name="CreatorNameLabel">制作者:</text>
<text name="Owner:">所有者:</text>
<text name="Group_label">グループ:</text>
<text name="Name:">
名前:
</text>
<text name="Description:">
説明:
</text>
<text name="CreatorNameLabel">
制作者:
</text>
<text name="Owner:">
所有者:
</text>
<text name="Group_label">
グループ:
</text>
<button name="button set group" tool_tip="このオブジェクト権限を共有するグループを選択します"/>
<name_box initial_value="ローディング..." name="Group Name Proxy"/>
<button label="譲渡" label_selected="譲渡" name="button deed" tool_tip="このアイテムを譲渡すると「次の所有者」の権限が適用されます。 グループ共有オブジェクトは、グループのオフィサーが譲渡できます。"/>
<text name="label click action">クリックで:</text>
<text name="label click action">
クリックで:
</text>
<combo_box name="clickaction">
<combo_box.item label="触る(デフォルト)" name="Touch/grab(default)"/>
<combo_box.item label="オブジェクトに座る" name="Sitonobject"/>
@ -34,15 +74,24 @@
<combo_box.item label="オブジェクトに支払う" name="Payobject"/>
<combo_box.item label="開く" name="Open"/>
<combo_box.item label="ズーム" name="Zoom"/>
<combo_box.item label="なし" name="None"/>
</combo_box>
<panel name="perms_inv">
<text name="perm_modify">このオブジェクトを修正できます</text>
<text name="Anyone can:">全員:</text>
<text name="perm_modify">
このオブジェクトを修正できます
</text>
<text name="Anyone can:">
全員:
</text>
<check_box label="コピー" name="checkbox allow everyone copy"/>
<check_box label="移動" name="checkbox allow everyone move"/>
<text name="GroupLabel">グループ:</text>
<text name="GroupLabel">
グループ:
</text>
<check_box label="共有" name="checkbox share with group" tool_tip="設定したグループのメンバー全員にこのオブジェクトの修正権限を与えます。 譲渡しない限り、役割制限を有効にはできません。"/>
<text name="NextOwnerLabel">次の所有者:</text>
<text name="NextOwnerLabel">
次の所有者:
</text>
<check_box label="修正" name="checkbox next owner can modify"/>
<check_box label="コピー" name="checkbox next owner can copy"/>
<check_box label="再販・プレゼント" name="checkbox next owner can transfer" tool_tip="次の所有者はこのオブジェクトを他人にあげたり再販できます"/>
@ -55,13 +104,27 @@
</combo_box>
<spinner label="価格: L$" name="Edit Cost"/>
<check_box label="検索に表示" name="search_check" tool_tip="このオブジェクトを検索結果に表示します"/>
<text name="pathfinding_attributes_label">パスファインディング属性:</text>
<text name="B:">B.</text>
<text name="O:">O:</text>
<text name="G:">G:</text>
<text name="E:">E:</text>
<text name="N:">N:</text>
<text name="F:">F:</text>
<text name="pathfinding_attributes_label">
パスファインディング属性:
</text>
<text name="B:">
B.
</text>
<text name="O:">
O:
</text>
<text name="G:">
G:
</text>
<text name="E:">
E:
</text>
<text name="N:">
N:
</text>
<text name="F:">
F:
</text>
</panel>
</scroll_container>
<layout_stack name="buttons_ls">

View File

@ -2202,6 +2202,18 @@ http://www.firestormviewer.org/support
<string name="RegionInfoListTypeBannedAgents">
常にバンさんれている住人
</string>
<string name="RegionInfoAllEstates">
すべての不動産
</string>
<string name="RegionInfoManagedEstates">
管理されている不動産
</string>
<string name="RegionInfoThisEstate">
この不動産
</string>
<string name="AndNMore">
および [EXTRA_COUNT] つの不動産
</string>
<string name="ScriptLimitsParcelScriptMemory">
区画スクリプトメモリ
</string>

View File

@ -1,14 +0,0 @@
<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
<floater name="Ban duration" title="Czas trwania bana" width="220">
<text name="duration_textbox" width="110">
Czas trwania bana:
</text>
<spinner name="ban_time" tool_tip="Ile czasu ma trwać ban, 0 banuje na zawsze"/>
<text name="hours_textbox">
godzin.
</text>
<text name="info_textbox">
0 banuje na zawsze.
</text>
<button label="Anuluj" name="BanCancelButton" />
</floater>

View File

@ -33,6 +33,7 @@
<check_box label="Filtrowanie anizotropowe (wolniej, gdy włączone)" name="ani" />
<check_box label="Włącz OpenGL Vertex Buffer Object (opis geometrii obiektów)" name="vbo" tool_tip="Włączenie tej opcji na nowoczesnym sprzęcie spowoduje wzrost wydajności. Starszy sprzęt jednak ma często słabe wsparcie dla VBO i mogą wystąpić na nim awarie." />
<check_box label="Włącz stratną kompresję tekstur (wymaga restartu)" name="texture compression" tool_tip="Kompresuje tekstury w pamięci wideo. Umożliwi to ładowanie tekstur w wyższej rozdzielczości / większej ich ilości, ale kosztem jakości obrazu." />
<check_box label="Włącz wsparcie dla ekranów HiDPI (wymaga restartu)" name="use HiDPI" tool_tip="Włącz funkcje OpenGL dla rysowania w wysokich rozdzielczościach." />
<text name="antialiasing label">
Antyaliasing:
</text>

View File

@ -1548,10 +1548,6 @@ Jeśli ciągle widzisz tą wiadomość sprawdź [SUPPORT_SITE].
Otwieranie stron internetowych z nieznanego źródła może narazić Twój komputer na niebezpieczeństwo.
<usetemplate ignoretext="Uruchom przeglądarkę internetową by zobaczyć stronę" name="okcancelignore" notext="Anuluj" />
</notification>
<notification name="SystemUIScaleFactorChanged">
Mnożnik systemowego skalowania interfejsu uległ zmianie od ostatniego uruchomienia. Czy chcesz otworzyć ustawienia i skorygować skalowanie interfejsu w przeglądarce?
<usetemplate name="okcancelbuttons" notext="Anuluj" />
</notification>
<notification name="WebLaunchJoinNow">
By dokonać zmian i aktualizacji swojego konta, odwiedź [http://secondlife.com/account/ Tablicę].
<usetemplate ignoretext="Uruchom przeglądarkę internetową by dokonać zmian w konfiguracji mojego konta" name="okcancelignore" notext="Anuluj" />

View File

@ -106,6 +106,7 @@
<check_box label="Włącz OpenGL Vertex Buffer Object (opis geometrii obiektów)" name="vbo" tool_tip="Włączenie tej opcji na nowoczesnym sprzęcie spowoduje wzrost wydajności. Starszy sprzęt jednak ma często słabe wsparcie dla VBO i mogą wystąpić na nim awarie."/>
<check_box label="Włącz strumieniowe VBO" name="vbo_stream" tool_tip="Wyłączenie tej opcji może zwiększyć wydajność, gdy VBO jest włączone. Odnotowano zauważalny wzrost wydajności na różnych GPU ze stajni AMD i Intela przy wyłączonej tej pozycji."/>
<check_box label="Włącz stratną kompresję tekstur (wymaga restartu)" name="texture compression" tool_tip="Kompresuje tekstury w pamięci wideo. Umożliwi to ładowanie tekstur w wyższej rozdzielczości / większej ich ilości, ale kosztem jakości obrazu."/>
<check_box label="Włącz wsparcie dla ekranów HiDPI (tylko Mac OSX; wymaga restartu)" name="use HiDPI" tool_tip="Włącz funkcje OpenGL dla rysowania w wysokich rozdzielczościach." />
<text name="Antialiasing:" tool_tip="Zmiana tego ustawienia może wymagać ponownego uruchomienia na niektórych urządzeniach.">
Antyaliasing (zalecany restart):
</text>

View File

@ -1,11 +1,11 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<floater name="floater_auction" title="INICIAR VENDA DE TERRENO LINDEN START">
<floater name="floater_auction" title="INICIAR VENDA DE TERRENO LINDEN">
<floater.string name="already for sale">
Você não pode leiloar terrenos que já estão configurados para venda.
Você não pode leiloar terrenos que já estão para venda.
</floater.string>
<check_box initial_value="true" label="Incluir marcador de seleção amarelo" name="fence_check"/>
<check_box initial_value="true" label="Incluir uma cerca de seleção amarela" name="fence_check"/>
<button label="Foto" label_selected="Foto" name="snapshot_btn"/>
<button label="Vender a qualquer um" label_selected="Vender a qualquer um" name="sell_to_anyone_btn"/>
<button label="Clear Settings" label_selected="Limpar configurações" name="reset_parcel_btn"/>
<button label="Iniciar Leilão" label_selected="Iniciar Leilão" name="start_auction_btn"/>
<button label="Limpar configurações" label_selected="Limpar configurações" name="reset_parcel_btn"/>
<button label="Iniciar leilão" label_selected="Iniciar leilão" name="start_auction_btn"/>
</floater>

View File

@ -201,6 +201,7 @@
<combo_box.item label="Pagar objeto" name="Payobject"/>
<combo_box.item label="Abrir" name="Open"/>
<combo_box.item label="Zoom" name="Zoom"/>
<combo_box.item label="Nenhum" name="None"/>
</combo_box>
<check_box label="À venda" name="checkbox for sale"/>
<spinner label="L$" name="Edit Cost"/>

View File

@ -16,6 +16,7 @@
<menu_item_check label="Minha voz" name="ShowVoice"/>
<menu label="Movimentos" name="Movement">
<menu_item_call label="Sentar" name="Sit Down Here"/>
<menu_item_call label="Ficar de pé" name="Stand up"/>
<menu_item_check label="Voar" name="Fly"/>
<menu_item_check label="Correr sempre" name="Always Run"/>
<menu_item_call label="Parar minha animação" name="Stop Animating My Avatar"/>

View File

@ -3,6 +3,10 @@
<global name="skipnexttime">
Não exibir isto novamente
</global>
<global name="skipnexttimesessiononly">
Não exibir isto novamente
(para a sessão atual)
</global>
<global name="alwayschoose">
Sempre escolher esta opção
</global>
@ -1508,6 +1512,30 @@ Ultrapassa o limite de [MAX_AGENTS] [LIST_TYPE] de [NUM_EXCESS].
<notification name="ProblemAddingEstateManagerBanned">
Não foi possível adicionar residentes banidos à lista de gerentes de propriedades.
</notification>
<notification name="ProblemBanningEstateManager">
Não foi possível adicionar o gerente [AGENT] à lista de banimento.
</notification>
<notification name="GroupIsAlreadyInList">
&lt;nolink&gt;[GROUP]&lt;/nolink&gt; já está na lista de Grupos permitidos.
</notification>
<notification name="AgentIsAlreadyInList">
[AGENT] já está na sua [LIST_TYPE] lista.
</notification>
<notification name="AgentsAreAlreadyInList">
[AGENT] já está na sua [LIST_TYPE] lista.
</notification>
<notification name="AgentWasAddedToList">
[AGENT] foi adicionado na [LIST_TYPE] lista de [ESTATE].
</notification>
<notification name="AgentsWereAddedToList">
[AGENT] foi adicionado na [LIST_TYPE] lista de [ESTATE].
</notification>
<notification name="AgentWasRemovedFromList">
[AGENT] foi removido da [LIST_TYPE] lista de [ESTATE].
</notification>
<notification name="AgentsWereRemovedFromList">
[AGENT] foi removido da [LIST_TYPE] lista de [ESTATE].
</notification>
<notification name="CanNotChangeAppearanceUntilLoaded">
Não é possível alterar a aparência até que as roupas e formas estejam carregadas.
</notification>
@ -1799,7 +1827,7 @@ Isto mudará milhares de regiões e fará o spaceserver soluçar.
<usetemplate canceltext="Cancelar" name="yesnocancelbuttons" notext="Todas as Propriedades" yestext="Esta Propriedade"/>
</notification>
<notification label="Selecione a propriedade" name="EstateBannedAgentRemove">
Remover este residente da lista de banidos para acesso a esta propriedade apenas ou para [ALL_ESTATES]?
Remover este Residente da lista de banimento para acessar este estado somente ou para [ALL_ESTATES]?
<usetemplate canceltext="Cancelar" name="yesnocancelbuttons" notext="Todas as Propriedades" yestext="Esta Propriedade"/>
</notification>
<notification label="Selecione a propriedade" name="EstateManagerAdd">
@ -3109,16 +3137,22 @@ Clique em Aceitar para atender ou em Recusar para recusar este convite. Clique
Falha de conexão com [VOICE_CHANNEL_NAME]. Tente novamente mais tarde. Agora você será reconectado ao bate-papo local.
</notification>
<notification name="VoiceEffectsExpired">
Um ou mais serviços de distorção de voz que você assinou veceu.
[[URL] Clique aqui] para renovar o serviço.
Um ou mais serviços de distorção de voz que você assinou venceu.
[[URL] Clique aqui] para renovar o serviço.
Se você é um Membro Premium, [[PREMIUM_URL] clique aqui] para receber o seu app de distorção de voz.
</notification>
<notification name="VoiceEffectsExpiredInUse">
A Distorção de voz ativa expirou. Suas configurações de voz padrão foram ativadas.
[[URL] Clique aqui] para renovar o serviço.
A Distorção de voz ativa expirou. Suas configurações de voz padrão foram ativadas.
[[URL] Clique aqui] para renovar o serviço.
Se você é um Membro Premium, [[PREMIUM_URL] clique aqui] para receber o seu app de distorção de voz.
</notification>
<notification name="VoiceEffectsWillExpire">
Uma ou mais das suas distorções de voz tem vencimento em menos de [INTERVAL] dias.
[[URL] Clique aqui] para renovar o serviço.
Uma ou mais das suas distorções de voz tem vencimento em menos de [INTERVAL] dias.
[[URL] Clique aqui] para renovar o serviço.
Se você é um Membro Premium, [[PREMIUM_URL] clique aqui] para receber o seu app de distorção de voz.
</notification>
<notification name="VoiceEffectsNew">
Novas Distorções de voz!
@ -3167,6 +3201,9 @@ Para sua segurança, os SLurls serão bloqueados por alguns instantes.
<notification name="AppearanceToXMLFailed">
Falha ao salvar a aparência como XML.
</notification>
<notification name="SnapshotToLocalDirNotExist">
Falha ao salvar fotografia em [PATH]: O diretório não existe.
</notification>
<notification name="PresetNotSaved">
Erro ao salvar predefinição [NAME].
</notification>

View File

@ -1,6 +1,11 @@
<?xml version="1.0" encoding="utf-8"?>
<panel name="panel_login">
<panel.string name="forgot_password_url">http://secondlife.com/account/request.php?lang=pt</panel.string>
<panel.string name="forgot_password_url">
http://secondlife.com/account/request.php?lang=pt
</panel.string>
<panel.string name="sign_up_url">
https://join.secondlife.com/
</panel.string>
<layout_stack name="ui_stack">
<layout_panel name="ui_container">
<combo_box label="Nome de usuário" name="username_combo" tool_tip="O nome de usuário que você escolheu ao fazer seu cadastro, como zecazc12 ou Magia Solar"/>
@ -11,8 +16,13 @@
</combo_box>
<button label="Login" name="connect_btn"/>
<check_box label="Lembrar-me" name="remember_check"/>
<text name="forgot_password_text">Senha esquecida</text>
<text name="forgot_password_text">
Senha esquecida
</text>
<combo_box label="Selecionar grade" name="server_combo"/>
<text name="sign_up_text">
Cadastre-se
</text>
</layout_panel>
</layout_stack>
</panel>

View File

@ -3,6 +3,9 @@
<panel.string name="forgot_password_url">
http://secondlife.com/account/request.php?lang=pt
</panel.string>
<panel.string name="sign_up_url">
https://join.secondlife.com/
</panel.string>
<layout_stack name="logo_stack">
<layout_panel name="parent_panel2">
<layout_stack name="widget_stack">
@ -14,6 +17,9 @@
<text name="forgot_password_text">
Senha esquecida
</text>
<text name="sign_up_text">
Cadastre-se
</text>
</layout_panel>
</layout_stack>
</layout_panel>

View File

@ -0,0 +1,57 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<panel label="Acesso" name="Access">
<tab_container name="tabs">
<panel label="GERENTES" name="estate_managers_panel">
<text name="estate_manager_label">
Gerentes:
</text>
<name_list name="estate_manager_name_list">
<columns label="Nome" name="name"/>
</name_list>
<button label="Adicionar..." name="add_estate_manager_btn"/>
<button label="Remover..." name="remove_estate_manager_btn"/>
</panel>
<panel label="PERMITIDO" name="allowed_panel">
<panel label="top_panel" name="allowed_search_panel">
<filter_editor label="Buscar agentes permitidos" name="allowed_search_input"/>
</panel>
<text name="allow_resident_label">
Sempre permitido:
</text>
<name_list name="allowed_avatar_name_list">
<columns label="Nome" name="name"/>
</name_list>
<button label="Adicionar..." name="add_allowed_avatar_btn"/>
<button label="Remover..." name="remove_allowed_avatar_btn"/>
</panel>
<panel label="GRUPOS PERMITIDOS" name="allowed_groups_panel">
<panel label="top_panel" name="allowed_group_search_panel">
<filter_editor label="Buscar grupos permitidos" name="allowed_group_search_input"/>
</panel>
<text name="allow_group_label">
Grupos sempre permitidos:
</text>
<name_list name="allowed_group_name_list">
<columns label="Nome" name="name"/>
</name_list>
<button label="Adicionar..." name="add_allowed_group_btn"/>
<button label="Remover..." name="remove_allowed_group_btn"/>
</panel>
<panel label="BANIDO" name="banned_panel">
<panel label="top_panel" name="banned_search_panel">
<filter_editor label="Buscar agentes banidos" name="banned_search_input"/>
</panel>
<text name="ban_resident_label">
Sempre banido:
</text>
<name_list name="banned_avatar_name_list">
<columns label="Nome" name="name"/>
<columns label="Último acesso" name="last_login_date"/>
<columns label="Data do banimento" name="ban_date"/>
<columns label="Banido por" name="bannedby"/>
</name_list>
<button label="Adicionar..." name="add_banned_avatar_btn"/>
<button label="Remover..." name="remove_banned_avatar_btn"/>
</panel>
</tab_container>
</panel>

View File

@ -16,7 +16,7 @@
(desconhecido)
</text>
<radio_group name="externally_visible_radio">
<radio_item label="Permitir somente os residentes e os grupos listados abaixo" name="estate_restricted_access"/>
<radio_item label="Permitir somente residentes e grupos listados na aba Acesso" name="estate_restricted_access"/>
<radio_item label="Qualquer um pode visitar" name="estate_public_access"/>
</radio_group>
<check_box label="Deve ser maior de 18 anos" name="limit_age_verified" tool_tip="Os residentes devem ter 18 anos ou mais para acessar esta propriedade. Consulte o [SUPPORT_SITE] para obter mais informações."/>

View File

@ -1,32 +1,72 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<panel name="object properties" title="Perfil do objeto">
<panel.string name="text deed continued">Doar</panel.string>
<panel.string name="text deed">Doar</panel.string>
<panel.string name="text modify info 1">Você pode modificar este objeto</panel.string>
<panel.string name="text modify info 2">Você pode modificar estes objetos</panel.string>
<panel.string name="text modify info 3">Você não pode modificar este objeto</panel.string>
<panel.string name="text modify info 4">Você não pode modificar estes objetos</panel.string>
<panel.string name="text modify info 5">Não é possível modificar este objeto através de uma demarcação da região</panel.string>
<panel.string name="text modify info 6">Não é possível modificar estes objetos através de uma demarcação da região</panel.string>
<panel.string name="text modify warning">O objeto contém links ligando suas partes</panel.string>
<panel.string name="Cost Default">Preço: L$</panel.string>
<panel.string name="Cost Total">Preço total: L$</panel.string>
<panel.string name="Cost Per Unit">Preço unitário: L$</panel.string>
<panel.string name="Cost Mixed">Preço misto</panel.string>
<panel.string name="Sale Mixed">Venda mista</panel.string>
<panel.string name="text deed continued">
Doar
</panel.string>
<panel.string name="text deed">
Doar
</panel.string>
<panel.string name="text modify info 1">
Você pode modificar este objeto
</panel.string>
<panel.string name="text modify info 2">
Você pode modificar estes objetos
</panel.string>
<panel.string name="text modify info 3">
Você não pode modificar este objeto
</panel.string>
<panel.string name="text modify info 4">
Você não pode modificar estes objetos
</panel.string>
<panel.string name="text modify info 5">
Não é possível modificar este objeto através de uma demarcação da região
</panel.string>
<panel.string name="text modify info 6">
Não é possível modificar estes objetos através de uma demarcação da região
</panel.string>
<panel.string name="text modify warning">
O objeto contém links ligando suas partes
</panel.string>
<panel.string name="Cost Default">
Preço: L$
</panel.string>
<panel.string name="Cost Total">
Preço total: L$
</panel.string>
<panel.string name="Cost Per Unit">
Preço unitário: L$
</panel.string>
<panel.string name="Cost Mixed">
Preço misto
</panel.string>
<panel.string name="Sale Mixed">
Venda mista
</panel.string>
<text name="title" value="Perfil do objeto"/>
<text name="where" value="(Inworld)"/>
<scroll_container name="item_profile_scroll">
<panel label="" name="properties_panel">
<text name="Name:">Nome:</text>
<text name="Description:">Descrição:</text>
<text name="CreatorNameLabel">Criador:</text>
<text name="Owner:">Proprietário:</text>
<text name="Group_label">Grupo:</text>
<text name="Name:">
Nome:
</text>
<text name="Description:">
Descrição:
</text>
<text name="CreatorNameLabel">
Criador:
</text>
<text name="Owner:">
Proprietário:
</text>
<text name="Group_label">
Grupo:
</text>
<button name="button set group" tool_tip="Selecione o grupo que terá acesso à autorização do objeto"/>
<name_box initial_value="Carregando..." name="Group Name Proxy"/>
<button label="Doar" label_selected="Doar" name="button deed" tool_tip="Ao doar este item, o próximo dono terá permissões de próximo dono. Objetos de grupos podem ser doados por um oficial do grupo."/>
<text name="label click action">Clique para:</text>
<text name="label click action">
Clique para:
</text>
<combo_box name="clickaction">
<combo_box.item label="Tocar (padrão)" name="Touch/grab(default)"/>
<combo_box.item label="Sentar em objeto" name="Sitonobject"/>
@ -34,15 +74,24 @@
<combo_box.item label="Pagar por objeto" name="Payobject"/>
<combo_box.item label="Abrir" name="Open"/>
<combo_box.item label="Zoom" name="Zoom"/>
<combo_box.item label="Nenhum" name="None"/>
</combo_box>
<panel name="perms_inv">
<text name="perm_modify">Você pode modificar este objeto</text>
<text name="Anyone can:">Todos:</text>
<text name="perm_modify">
Você pode modificar este objeto
</text>
<text name="Anyone can:">
Todos:
</text>
<check_box label="Copiar" name="checkbox allow everyone copy"/>
<check_box label="Movimentar" name="checkbox allow everyone move"/>
<text name="GroupLabel">Grupo:</text>
<text name="GroupLabel">
Grupo:
</text>
<check_box label="Compartilhar" name="checkbox share with group" tool_tip="Permitir que todos os membros do grupo tenham o seu nível de modificação para este objeto. Faça uma doação para ativar restrições de função."/>
<text name="NextOwnerLabel">Próximo proprietário:</text>
<text name="NextOwnerLabel">
Próximo proprietário:
</text>
<check_box label="Modificar" name="checkbox next owner can modify"/>
<check_box label="Copiar" name="checkbox next owner can copy"/>
<check_box label="Transferir" name="checkbox next owner can transfer" tool_tip="O próximo dono poderá revender ou dar este objeto"/>
@ -55,13 +104,27 @@
</combo_box>
<spinner label="Preço: L$" name="Edit Cost"/>
<check_box label="Mostrar nos resultados de busca" name="search_check" tool_tip="Incluir o objeto nos resultados de busca"/>
<text name="pathfinding_attributes_label">Atributos do pathfinding:</text>
<text name="B:">B:</text>
<text name="O:">O:</text>
<text name="G:">G:</text>
<text name="E:">E:</text>
<text name="N:">N:</text>
<text name="F:">F:</text>
<text name="pathfinding_attributes_label">
Atributos do pathfinding:
</text>
<text name="B:">
B:
</text>
<text name="O:">
O:
</text>
<text name="G:">
G:
</text>
<text name="E:">
E:
</text>
<text name="N:">
N:
</text>
<text name="F:">
F:
</text>
</panel>
</scroll_container>
<layout_stack name="buttons_ls">

View File

@ -2154,6 +2154,18 @@ http://secondlife.com/support para ajuda ao resolver este problema.
<string name="RegionInfoListTypeBannedAgents">
Sempre banido
</string>
<string name="RegionInfoAllEstates">
todos os terrenos
</string>
<string name="RegionInfoManagedEstates">
administre terrenos
</string>
<string name="RegionInfoThisEstate">
este terreno
</string>
<string name="AndNMore">
e [EXTRA_COUNT] mais
</string>
<string name="ScriptLimitsParcelScriptMemory">
Memória de scripts no lote
</string>

Some files were not shown because too many files have changed in this diff Show More