Compare commits

...

14 Commits

Author SHA1 Message Date
Router Gray
5040275969 [CMake] Releases shouldn't speak Greek. 2020-04-04 06:47:39 -05:00
Liru Færs
1daccf40ee Move the FMOD Powered By text, for Torric and others 2020-04-04 07:28:19 -04:00
Shyotl
4fd302286b Merge branch 'master' of https://github.com/singularity-viewer/SingularityViewer.git 2020-04-03 06:02:48 -05:00
Shyotl
18f9f19e61 Textures mid-decode potentially processing of other textures until complete. Disabled UDP texture fetch fallback when connected to official grid. 2020-04-03 06:01:58 -05:00
Liru Færs
1de6d4461a Add missing EmergencyTeleportSeconds preference to System->Security
Thanks for the heads up about this missing preferences, and for the
Spanish translation, Damian!
2020-04-03 02:53:41 -04:00
Shyotl
4198f47ab6 Fix header breakage in debug/relwithdebug 2020-04-03 00:33:19 -05:00
Shyotl
d9049ba342 Handle AISAPI throttling and status 410 a bit better. 2020-04-02 21:47:07 -05:00
Shyotl
f75ac3e4c2 Merge branch 'master' of https://github.com/singularity-viewer/SingularityViewer.git 2020-04-02 20:09:53 -05:00
Liru Færs
06698deaca A couple more sim->region changes 2020-04-02 21:08:23 -04:00
Shyotl
445eb29bd3 Bring aisapi handling closer to LL (code 499 retry, match timeout values, etc) 2020-04-02 20:07:55 -05:00
Shyotl
cc034f6841 Fix inventory scrolling issue when navigating via keyboard. 2020-04-02 20:03:08 -05:00
Liru Færs
3c368651f1 Update crashpad, thanks Rye! 2020-04-02 20:39:01 -04:00
Damian Zhaoying
321730e384 More translations fixes in Area search and menu list owners. 2020-04-02 03:02:23 -03:00
Damian Zhaoying
c2fd88670f Fix some remaining spanish translations. 2020-04-02 02:36:20 -03:00
19 changed files with 152 additions and 71 deletions

View File

@@ -410,11 +410,11 @@
<key>archive</key>
<map>
<key>hash</key>
<string>4614b29cc98021cf1770a8290171602b</string>
<string>a96fda7ad5cee967823f5c94390ba35b</string>
<key>hash_algorithm</key>
<string>md5</string>
<key>url</key>
<string>https://pkg.alchemyviewer.org/repository/autobuild-external/crashpad/windows/crashpad-ce32d093.7-windows-7.tar.bz2</string>
<string>https://pkg.alchemyviewer.org/repository/autobuild-external/crashpad/windows/crashpad-c6d76a90.194-windows-194.tar.bz2</string>
</map>
<key>name</key>
<string>windows</string>
@@ -424,18 +424,18 @@
<key>archive</key>
<map>
<key>hash</key>
<string>d801461b7a6a40fffab828aa1e01e3e6</string>
<string>5ff95ca1007ed2dc300b59de17453201</string>
<key>hash_algorithm</key>
<string>md5</string>
<key>url</key>
<string>https://pkg.alchemyviewer.org/repository/autobuild-external/crashpad/windows64/crashpad-ce32d093.7-windows64-7.tar.bz2</string>
<string>https://pkg.alchemyviewer.org/repository/autobuild-external/crashpad/windows64/crashpad-c6d76a90.194-windows64-194.tar.bz2</string>
</map>
<key>name</key>
<string>windows64</string>
</map>
</map>
<key>version</key>
<string>ce32d093.7</string>
<string>c6d76a90.194</string>
</map>
<key>curl</key>
<map>

View File

@@ -270,6 +270,8 @@ if (NOT VIEWER_CHANNEL_GRK)
set(VIEWER_CHANNEL_GRK "\\u03B1") # "α"
elseif (VIEWER_CHANNEL_TYPE MATCHES "Beta")
set(VIEWER_CHANNEL_GRK "\\u03B2") # "β"
else()
set(VIEWER_CHANNEL_GRK "")
endif ()
endif (NOT VIEWER_CHANNEL_GRK)

View File

@@ -353,10 +353,10 @@ typedef LLError::NoClassInfo _LL_CLASS_TO_LOG;
// NEW Macros for debugging, allow the passing of a string tag
#if SHOW_DEBUG
#define DO_DEBUG_LOG if(true)
#ifdef SHOW_DEBUG
#define DO_DEBUG_LOG
#else
#define DO_DEBUG_LOG if(false)
#define DO_DEBUG_LOG if (false)
#endif
// Pass comma separated list of tags (currently only supports up to 0, 1, or 2)

View File

@@ -960,4 +960,5 @@ P(webProfileResponders);
P(wholeModelFeeResponder);
P(wholeModelUploadResponder);
P2(XMLRPCResponder, connect_40s);
P(getUpdateInfoResponder);
P(getUpdateInfoResponder);
P2(AISAPIResponder, connect_60s);

View File

@@ -207,6 +207,7 @@ void LLPrefsAscentSys::refreshValues()
mDisplayScriptJumps = gSavedSettings.getBOOL("AscentDisplayTotalScriptJumps");
mNumScriptDiff = gSavedSettings.getF32("Ascentnumscriptdiff");
mReplaceLinks = gSavedSettings.getBOOL("SinguReplaceLinks");
mEmergencySeconds = gSavedPerAccountSettings.getU32("EmergencyTeleportSeconds");
mLandmark = gSavedPerAccountSettings.getString("EmergencyTeleportLandmark");
mLandmarkBackup = gSavedPerAccountSettings.getString("EmergencyTeleportLandmarkBackup");
@@ -353,6 +354,7 @@ void LLPrefsAscentSys::cancel()
gSavedSettings.setBOOL("AscentDisplayTotalScriptJumps", mDisplayScriptJumps);
gSavedSettings.setF32("Ascentnumscriptdiff", mNumScriptDiff);
gSavedSettings.setBOOL("SinguReplaceLinks", mReplaceLinks);
gSavedPerAccountSettings.setU32("EmergencyTeleportSeconds", mEmergencySeconds);
gSavedPerAccountSettings.setString("EmergencyTeleportLandmark", mLandmark);
gSavedPerAccountSettings.setString("EmergencyTeleportLandmarkBackup", mLandmarkBackup);

View File

@@ -118,6 +118,7 @@ private:
bool mDisplayScriptJumps;
bool mReplaceLinks;
F32 mNumScriptDiff;
U32 mEmergencySeconds;
std::string mLandmark;
std::string mLandmarkBackup;

View File

@@ -40,11 +40,21 @@
/// Classes for AISv3 support.
///----------------------------------------------------------------------------
extern AIHTTPTimeoutPolicy AISAPIResponder_timeout;
class AISCommand final : public LLHTTPClient::ResponderWithCompleted
{
public:
typedef boost::function<void()> command_func_type;
// AISCommand - base class for retry-able HTTP requests using the AISv3 cap.
// Limit max in flight requests to 2. Server was aggressively throttling otherwise.
constexpr static U8 sMaxActiveAISCommands = 4;
static U8 sActiveAISCommands;
static std::queue< boost::intrusive_ptr< AISCommand > > sPendingAISCommands;
virtual AIHTTPTimeoutPolicy const& getHTTPTimeoutPolicy(void) const { return AISAPIResponder_timeout; }
AISCommand(AISAPI::COMMAND_TYPE type, const char* name, const LLUUID& targetId, AISAPI::completion_t callback) :
mCommandFunc(NULL),
mRetryPolicy(new LLAdaptiveRetryPolicy(1.0, 32.0, 2.0, 10)),
@@ -53,10 +63,30 @@ public:
mName(name),
mType(type)
{}
virtual ~AISCommand()
{
if (mActive)
{
--sActiveAISCommands;
while (sActiveAISCommands < sMaxActiveAISCommands && !sPendingAISCommands.empty())
{
sPendingAISCommands.front()->dispatch();
sPendingAISCommands.pop();
}
}
}
void run( command_func_type func )
{
(mCommandFunc = func)();
mCommandFunc = func;
if (sActiveAISCommands >= sMaxActiveAISCommands)
{
sPendingAISCommands.push(this);
}
else
{
dispatch();
}
}
char const* getName(void) const override
@@ -64,6 +94,17 @@ public:
return mName;
}
private:
void dispatch()
{
if (LLApp::isQuitting())
{
return;
}
++sActiveAISCommands;
mActive = true;
(mCommandFunc)();
}
void markComplete()
{
// Command func holds a reference to self, need to release it
@@ -72,42 +113,56 @@ public:
mRetryPolicy->onSuccess();
}
void malformedResponse() { mStatus = HTTP_INTERNAL_ERROR_OTHER; mReason = llformat("Malformed response contents (original code: %d)", mStatus); }
bool onFailure()
{
bool retry = mStatus != HTTP_INTERNAL_ERROR_OTHER && mStatus != 410; // We handle these and stop
LL_WARNS("Inventory") << "Inventory error: " << dumpResponse() << LL_ENDL;
if (retry) mRetryPolicy->onFailure(mStatus, getResponseHeaders());
mRetryPolicy->onFailure(mStatus, getResponseHeaders());
F32 seconds_to_wait;
if (retry && mRetryPolicy->shouldRetry(seconds_to_wait))
if (mRetryPolicy->shouldRetry(seconds_to_wait))
{
if (mStatus == 503)
{
// Pad delay a bit more since we're getting throttled.
seconds_to_wait += 10.f + ll_frand(4.f);
}
LL_WARNS("Inventory") << "Retrying in " << seconds_to_wait << "seconds due to inventory error for " << getName() <<": " << dumpResponse() << LL_ENDL;
doAfterInterval(mCommandFunc,seconds_to_wait);
return true;
}
else
{
// Command func holds a reference to self, need to release it
// after a success or final failure.
// *TODO: Notify user? This seems bad.
LL_WARNS("Inventory") << "Abort due to inventory error for " << getName() <<": " << dumpResponse() << LL_ENDL;
mCommandFunc = no_op;
return false;
}
return retry;
}
protected:
void httpCompleted() override
{
AISAPI::InvokeAISCommandCoro(this, getURL(), mTargetId, getContent(), mCompletionFunc, (AISAPI::COMMAND_TYPE)mType);
// Continue through if successful or longer retrying,
if (isGoodStatus(mStatus) || !onFailure())
{
markComplete();
AISAPI::InvokeAISCommandCoro(this, getURL(), mTargetId, getContent(), mCompletionFunc, (AISAPI::COMMAND_TYPE)mType);
}
}
private:
command_func_type mCommandFunc;
LLPointer<LLHTTPRetryPolicy> mRetryPolicy;
AISAPI::completion_t mCompletionFunc;
const LLUUID mTargetId;
const char* mName;
bool mActive = false;
AISAPI::COMMAND_TYPE mType;
};
U8 AISCommand::sActiveAISCommands = 0;
std::queue< boost::intrusive_ptr< AISCommand > > AISCommand::sPendingAISCommands;
//=========================================================================
const std::string AISAPI::INVENTORY_CAP_NAME("InventoryAPIv3");
const std::string AISAPI::LIBRARY_CAP_NAME("LibraryAPIv3");
@@ -312,21 +367,18 @@ void AISAPI::UpdateItem(const LLUUID &itemId, const LLSD &updates, completion_t
boost::intrusive_ptr< AISCommand > responder = new AISCommand(UPDATEITEM, "UpdateItem",itemId, callback);
responder->run(boost::bind(&LLHTTPClient::patch, url, updates, responder/*,*/ DEBUG_CURLIO_PARAM(debug_off), keep_alive, (AIStateMachine*)NULL, 0));
}
void AISAPI::InvokeAISCommandCoro(AISCommand* responder,
void AISAPI::InvokeAISCommandCoro(LLHTTPClient::ResponderWithCompleted* responder,
std::string url,
LLUUID targetId, LLSD result, completion_t callback, COMMAND_TYPE type)
{
LL_DEBUGS("Inventory") << "url: " << url << LL_ENDL;
auto status = responder->getStatus();
auto status = responder->getStatus();
if (!responder->isGoodStatus(status) || !result.isMap())
{
if (!result.isMap())
{
responder->malformedResponse();
}
else if (status == 410) //GONE
{
LL_WARNS("Inventory") << "Inventory error: " << status << ": " << responder->getReason() << LL_ENDL;
if (status == 410) //GONE
{
// Item does not exist or was already deleted from server.
// parent folder is out of sync
@@ -360,11 +412,12 @@ void AISAPI::InvokeAISCommandCoro(AISCommand* responder,
}
}
}
// Keep these statuses accounted for in the responder too
if (responder->onFailure()) // If we're retrying, exit early.
return;
if (!result.isMap())
{
LL_WARNS("Inventory") << "Inventory error: Malformed response contents" << LL_ENDL;
}
LL_WARNS("Inventory") << ll_pretty_print_sd(result) << LL_ENDL;
}
else responder->markComplete();
gInventory.onAISUpdateReceived("AISCommand", result);

View File

@@ -72,7 +72,7 @@ private:
static std::string getInvCap();
static std::string getLibCap();
static void InvokeAISCommandCoro(class AISCommand* responder,
static void InvokeAISCommandCoro(LLHTTPClient::ResponderWithCompleted* responder,
std::string url, LLUUID targetId, LLSD body,
completion_t callback, COMMAND_TYPE type);
};

View File

@@ -2010,7 +2010,7 @@ void LLFolderView::scrollToShowSelection()
// However we allow scrolling for folder views with mAutoSelectOverride
// (used in Places SP) as an exception because the selection in them
// is not reset during items filtering. See STORM-133.
if ( (!LLInventoryModelBackgroundFetch::instance().folderFetchActive() || mAutoSelectOverride)
if ( (LLInventoryModelBackgroundFetch::instance().isEverythingFetched() || mAutoSelectOverride)
&& mSelectedItems.size() )
{
mNeedsScroll = TRUE;

View File

@@ -872,7 +872,7 @@ LLTextureFetchWorker::LLTextureFetchWorker(LLTextureFetch* fetcher,
mCacheReadCount(0U),
mCacheWriteCount(0U)
{
mCanUseNET = mUrl.empty() ;
mCanUseNET = mUrl.empty() && !gHippoGridManager->getConnectedGrid()->isSecondLife();
if (!mCanUseNET)
{
@@ -1236,9 +1236,10 @@ bool LLTextureFetchWorker::doWork(S32 param)
if (mState == LOAD_FROM_NETWORK)
{
static LLCachedControl<bool> use_http(gSavedSettings,"ImagePipelineUseHTTP");
bool is_sl = gHippoGridManager->getConnectedGrid()->isSecondLife();
// if (mHost != LLHost::invalid) use_http = false;
if (use_http && mCanUseHTTP && mUrl.empty()) // get http url.
if ((is_sl || use_http) && mCanUseHTTP && mUrl.empty()) // get http url.
{
LLViewerRegion* region = NULL;
if (mHost == LLHost::invalid)
@@ -1280,6 +1281,7 @@ bool LLTextureFetchWorker::doWork(S32 param)
mWriteToCacheState = CAN_WRITE;
}
if (!mUrl.empty() && SGHostBlackList::isBlacklisted(mUrl)){
LL_DEBUGS("Texture") << mID << "Blacklisted" << LL_ENDL;
mCanUseHTTP = false;
}
if (mCanUseHTTP && !mUrl.empty())
@@ -1292,7 +1294,12 @@ bool LLTextureFetchWorker::doWork(S32 param)
}
// don't return, fall through to next state
}
else if (mSentRequest == UNSENT && mCanUseNET)
else if (!mCanUseNET)
{
LL_WARNS(LOG_TXT) << mID << "Unable to retrieve texture via HTTP and UDP unavailable (probable 404): " << mUrl << LL_ENDL;
return true;
}
else if (mSentRequest == UNSENT)
{
LL_DEBUGS("Texture") << mID << " moving to UDP fetch. mSentRequest=" << mSentRequest << " mCanUseNET = " << mCanUseNET << LL_ENDL;
setState(SEND_UDP_REQ);
@@ -1821,6 +1828,7 @@ bool LLTextureFetchWorker::doWork(S32 param)
S32 discard = mHaveAllData ? 0 : mLoadedDiscard;
U32 image_priority = LLWorkerThread::PRIORITY_NORMAL | mWorkPriority;
mDecoded = FALSE;
setPriority(LLWorkerThread::PRIORITY_LOW | mWorkPriority);
setState(DECODE_IMAGE_UPDATE);
LL_DEBUGS(LOG_TXT) << mID << ": Decoding. Bytes: " << mFormattedImage->getDataSize() << " Discard: " << discard
<< " All Data: " << mHaveAllData << LL_ENDL;

View File

@@ -9950,7 +9950,7 @@ You cannot copy your selection because the object '[OBJ_NAME]' is not transferra
name="NoPermsNoRemoval"
type="notify">
<tag>fail</tag>
Removal of the object '[OBJ_NAME]' from the simulator is disallowed by the permissions system.
Removal of the object '[OBJ_NAME]' from the region is disallowed by the permissions system.
</notification>
<notification
@@ -10221,7 +10221,7 @@ Unable to add script!
name="AssetServerTimeoutObjReturn"
type="notify">
<tag>fail</tag>
Asset server didn't respond in a timely fashion. Object returned to sim.
Asset server didn't respond in a timely fashion. Object returned to region.
</notification>
<notification
@@ -11694,7 +11694,7 @@ Media/audio URL blocked for [DOMAIN]
name="RadarChatKeysRequest"
type="alertmodal">
An object owned by you has requested keys from your radar.
Would you like to enable announcing keys to objects in the sim?
Would you like to enable announcing keys to objects in the region?
<usetemplate
name="yesnocancelbuttons"
yestext="Yes"

View File

@@ -80,8 +80,8 @@
<button bottom_delta="0" left="146" height="16" width="16" follows="left|bottom" image_overlay="inv_folder_trash.tga" scale_image="true" label="" tool_tip="Delete the currently selected remembered login info, if any." name="remove_login"/>
<check_box bottom_delta="0" left="173" control_name="RememberPassword" follows="left|bottom" height="16" label="Save password" name="remember_check" width="158"/>
<text name="fmod_text" value="Powered By" bottom="42" height="16" left="-425" width="84" follows="right|bottom" font="SansSerif" font_style="BOLD" font_size="Large"/>
<icon name="fmod_logo" bottom_delta="-32" height="40" left_delta="84" width="152" follows="right|bottom" image_name="FMOD_Logo"/>
<icon name="fmod_logo" bottom="10" height="40" left="-341" width="152" follows="right|bottom" image_name="FMOD_Logo"/>
<text name="fmod_text" value="Powered By" bottom_delta="40" height="16" left_delta="36" width="84" follows="right|bottom" font="SansSerif" font_style="BOLD" font_size="Large"/>
<text bg_visible="false" border_drop_shadow_visible="false" border_visible="false"
bottom="45" drop_shadow_visible="true" follows="right|bottom"

View File

@@ -115,8 +115,9 @@
<spinner bottom_delta="0" decimal_digits="0" follows="top" height="16" increment="1" left_delta="210" max_val="9999" min_val="1" name="ScriptJumpCount" width="50" control_name="Ascentnumscriptdiff" tool_tip="Threshold for the script jump message [Default: 100]"/>
<check_box bottom_delta="-20" left="10" follows="top" label="Restrained Love API Support (RLVa)" name="RestrainedLove" control_name="RestrainedLove" tool_tip="Allows scripts to take greater control of the viewer, if you wear compliant objects."/>
<check_box bottom_delta="-20" follows="top" label="Replace slurls and formatted links with labels" name="SinguReplaceLinks" control_name="SinguReplaceLinks" tool_tip="While you can right click to see where they really lead by copying them, this does allow links to be misleading at first glance."/>
<text name="EmergencyTeleportDesc" left="14" bottom_delta="-12" follows="top">Drop a landmark below to autoteleport there in the last 20 seconds before region restarts</text>
<drop_target control_name="EmergencyTeleportLandmark" bottom_delta="-8" left="15" height="17" name="emergency_teleport_landmark_drop" width="430"/>
<text name="EmergencyTeleportDesc" left="14" bottom_delta="-12" follows="top">Drop a landmark below to autoteleport to before region restarts</text>
<spinner name="EmergencyTeleportSeconds" label="Seconds before restart to begin teleport attempts" label_width="380" width="432" control_name="EmergencyTeleportSeconds" bottom_delta="-26" decimal_digits="0" max_val="3600" min_val="0" follows="left|top" height="18" increment="1"/>
<drop_target control_name="EmergencyTeleportLandmark" bottom_delta="-4" left="15" height="17" name="emergency_teleport_landmark_drop" width="430"/>
<text name="EmergencyTeleportBackupDesc" halign="center" width="432" left="14" bottom_delta="-26" follows="top">Drop a backup landmark to autoteleport to below, should you already be at above</text>
<drop_target control_name="EmergencyTeleportLandmarkBackup" bottom_delta="-8" left="15" height="17" name="emergency_teleport_landmark_backup_drop" width="430"/>
</panel>

View File

@@ -22,6 +22,8 @@
<column name="Owner" label="Propietario" tool_tip="Haz doble click en cualquier resultado para marcar su posición"/>
<column name="Group" label="Grupo" tool_tip="Haz doble click en cualquier resultado para marcar su posición"/>
</scroll_list>
<button name="TP" label="TP"/>
<button name="Look" label="Ver"/>
<text name="counter">
Listados/Pendientes/Total
</text>

View File

@@ -1,10 +1,10 @@
<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
<menu label="Grupos" name="groups_menu">
<menu_item_call label="Mostrar Perfil" name="show_group"/>
<menu_item_call label="Mostrar Información del Grupo" name="show_group"/>
<menu_item_call label="Abrir chat del grupo" name="im_group"/>
<menu_item_call label="LLamar en el grupo" name="call_group"/>
<menu_item_call label="Abrir chat del Grupo" name="call_group"/>
<menu_item_call label="Activar Grupo" name="activate_group"/>
<menu_item_call label="Hisotiral de chat" name="Chat History"/>
<menu_item_call label="Historial de chat" name="Chat History"/>
<menu_item_call label="Unirse al Grupo" name="join_group"/>
<menu_item_call label="Abandonar el Grupo" name="leave_group"/>
<menu_item_call label="Copiar Nombre" name="copy_name"/>

View File

@@ -1,27 +1,31 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<menu label="Propietario" name="Object Owner Submenu">
<menu_item_call label="Perfil" name="Profile"/>
<menu name="Acciones" label="Actions"/>
<menu_item_call label="Pagar" name="Pay"/>
<menu_item_call label="Mensaje Instantáneo" name="Instant Message"/>
<menu_item_call label="Conferencia" name="Conference Chat"/>
<menu_item_call label="Llamar" name="Call"/>
<menu_item_call label="Llamar Conferencia" name="Conference Call"/>
<menu_item_call label="Ofrecer Amistad" name="Add Friend"/>
<menu_item_call label="Quitar Amistad" name="Remove Friend"/>
<menu_item_call label="Invitar a un Grupo" name="Invite To Group"/>
<menu_item_call label="Seguir" name="Follow"/>
<menu_item_call label="Movea A" name="Move To"/>
<menu_item_call label="Ofrecer Teleporte" name="Offer Teleport"/>
<menu_item_call label="Teleportar A" name="Teleport To"/>
<menu_item_call label="Solicitar Teleporte" name="Request Teleport"/>
<menu_item_call label="Encontrar en el Mapa" name="Find on Map"/>
<menu_item_call label="Compartir" name="Share"/>
<menu_item_call label="Historial de Chat" name="Chat History"/>
<menu_item_call label="Rastrear/No Rastrear" name="Track/Untrack"/>
<menu name="Copiar" label="Copy"/>
<menu_item_call label="Nombre" name="Copy Name"/>
<menu_item_call label="SLURL" name="Copy SLURL"/>
<menu name="Actions" label="Acciones">
<menu_item_call label="Perfil Web" name="Web Profile"/>
<menu_item_call label="Pagar" name="Pay"/>
<menu_item_call label="Mensaje Instantáneo" name="Instant Message"/>
<menu_item_call label="Conferencia" name="Conference Chat"/>
<menu_item_call label="Llamar" name="Call"/>
<menu_item_call label="Llamar Conferencia" name="Conference Call"/>
<menu_item_call label="Ofrecer Amistad" name="Add Friend"/>
<menu_item_call label="Quitar Amistad" name="Remove Friend"/>
<menu_item_call label="Invitar a un Grupo" name="Invite To Group"/>
<menu_item_call label="Seguir" name="Follow"/>
<menu_item_call label="Mover A" name="Move To"/>
<menu_item_call label="Ofrecer Teleporte" name="Offer Teleport"/>
<menu_item_call label="Teleportar A" name="Teleport To"/>
<menu_item_call label="Solicitar Teleporte" name="Request Teleport"/>
<menu_item_call label="Encontrar en el Mapa" name="Find on Map"/>
<menu_item_call label="Compartir" name="Share"/>
<menu_item_call label="Historial de Chat" name="Chat History"/>
<menu_item_call label="Rastrear/No Rastrear" name="Track/Untrack"/>
</menu>
<menu name="Copy" label="Copiar">
<menu_item_call label="UUID" name="Copy Key"/>
<menu_item_call label="Nombre" name="Copy Name"/>
<menu_item_call label="SLURL" name="Copy SLURL"/>
</menu>
<menu_item_call label="Enfocar" name="Focus"/>
<menu label="Moderación" name="Moderation" create_jump_keys="">
<menu_item_call label="Silenciar" name="Mute"/>

View File

@@ -1,8 +1,14 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<context_menu name="Url Popup">
<context_menu label="Grupo" name="Url Popup">
<menu_item_call label="Mostrar la información del grupo" name="show_group"/>
<menu_item_call label="Abrir chat del grupo" name="im_group"/>
<menu_item_call label="Llamar en el grupo" name="call_group"/>
<menu_item_call label="Activar Grupo" name="activate_group"/>
<menu_item_call label="Historial de Chat" name="Chat History"/>
<menu_item_call label="Unirse al Grupo" name="join_group"/>
<menu_item_call label="Abandonar el Grupo" name="leave_group"/>
<menu_item_call label="Copiar el grupo al portapapeles" name="url_copy_label"/>
<menu_item_call label="Copiar SLurl al portapapeles" name="url_copy"/>
<menu_item_call label="Copiar Key al portapapeles" name="key_copy"/>
<menu_item_call label="Copiar UUID al portapapeles" name="key_copy"/>
<menu_item_call label="Seleccionar Todo" name="Select All"/>
</context_menu>

View File

@@ -1,7 +1,7 @@
<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
<context_menu label="Propietario" name="Object Owner Submenu">
<menu_item_call label="Enviar MI..." name="send_im"/>
<menu name="Acciones" label="Actions">
<menu name="Actions" label="Acciones">
<menu_item_call label="Perfil" name="Profile"/>
<menu_item_call label="Perfil Web" name="Web Profile"/>
<menu_item_call label="Pagar" name="Pay"/>

View File

@@ -135,7 +135,8 @@
<spinner left_delta="270" name="ScriptJumpCount" tool_tip="Umbral para el mensaje de salto de scripts [Predeterminado: 100]"/>
<check_box label="Soporte API Restrained Love (RLVa)" name="RestrainedLove" tool_tip="Permite a los scripts tomar control del visor, si tienes vestido un objeto compatible con RLVa."/>
<check_box label="Reemplazar slurls y enlaces con etiquetas" name="SinguReplaceLinks" tool_tip="Si bien puedes hacer clic con el botón derecho para ver a dónde conducen realmente al copiarlos, esto puede hacer que los enlaces sean confusos a primera vista."/>
<text name="EmergencyTeleportDesc" bottom_delta="-20" >Arrastra un hito para autoteleportarte en los últimos 20 segundos previos al reinicio de región</text>
<text name="EmergencyTeleportDesc" bottom_delta="-20" >Arrastra un hito debajo para autoteleportarte antes del reinicio de la región</text>
<spinner name="EmergencyTeleportSeconds" label="Comenzar intentos de teleporte antes del reinicio, en segundos"/>
<drop_target name="emergency_teleport_landmark_drop" bottom_delta="-15" width="450"/>
<text name="EmergencyTeleportBackupDesc" width="440" bottom_delta="-30" >
Suelta aquí un hito de resguardo para autoteleportarte, si ya tienes uno en el ítem anterior</text>