Add Alchemy region tracker; by Drake Arconis & Cinder Roxley

Ansariel 2015-01-20 15:31:23 +01:00
parent f732b3a2bf
commit 9e9f6ff48e
20 changed files with 598 additions and 44 deletions

View File

@ -119,6 +119,7 @@ include_directories(SYSTEM
set(viewer_SOURCE_FILES
# <Add FS includes below this line>
alfloaterregiontracker.cpp
animationexplorer.cpp
ao.cpp
aoengine.cpp
@ -848,6 +849,7 @@ set(viewer_HEADER_FILES
ViewerInstall.cmake
# <Add FS includes below this line>
alfloaterregiontracker.h
animationexplorer.h
ao.h
aoengine.h

View File

@ -0,0 +1,282 @@
/**
* @file alfloaterregiontracker.cpp
* @brief Region tracking floater
*
* $LicenseInfo:firstyear=2013&license=viewerlgpl$
* Alchemy Viewer Source Code
* Copyright (C) 2014, Alchemy Viewer Project.
*
* 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
*
* $/LicenseInfo$
*/
#include "llviewerprecompiledheaders.h"
#include "alfloaterregiontracker.h"
// library
#include "llbutton.h"
#include "lldir.h"
#include "llfile.h"
#include "llscrolllistctrl.h"
#include "llsd.h"
#include "llsdserialize.h"
#include "llsdserialize_xml.h"
#include "lltextbox.h"
// newview
#include "llagent.h"
#include "llfloaterworldmap.h"
#include "llfloaterreg.h"
#include "llnotificationsutil.h"
#include "llviewermessage.h"
#include "llworldmap.h"
#include "llworldmapmessage.h"
const std::string TRACKER_FILE = "tracked_regions.json";
ALFloaterRegionTracker::ALFloaterRegionTracker(const LLSD& key)
: LLFloater(key),
LLEventTimer(5.f),
mRefreshRegionListBtn(NULL),
mRemoveRegionBtn(NULL),
mOpenMapBtn(NULL),
mRegionScrollList(NULL)
{
loadFromJSON();
}
ALFloaterRegionTracker::~ALFloaterRegionTracker()
{
saveToJSON();
}
BOOL ALFloaterRegionTracker::postBuild()
{
mRefreshRegionListBtn = getChild<LLButton>("refresh");
mRefreshRegionListBtn->setClickedCallback(boost::bind(&ALFloaterRegionTracker::refresh, this));
mRemoveRegionBtn = getChild<LLButton>("remove");
mRemoveRegionBtn->setClickedCallback(boost::bind(&ALFloaterRegionTracker::removeRegions, this));
mOpenMapBtn = getChild<LLButton>("open_map");
mOpenMapBtn->setClickedCallback(boost::bind(&ALFloaterRegionTracker::openMap, this));
mRegionScrollList = getChild<LLScrollListCtrl>("region_list");
mRegionScrollList->setCommitOnSelectionChange(TRUE);
mRegionScrollList->setCommitCallback(boost::bind(&ALFloaterRegionTracker::updateHeader, this));
mRegionScrollList->setDoubleClickCallback(boost::bind(&ALFloaterRegionTracker::openMap, this));
updateHeader();
return LLFloater::postBuild();
}
void ALFloaterRegionTracker::onOpen(const LLSD& key)
{
requestRegionData();
mEventTimer.start();
}
void ALFloaterRegionTracker::onClose(bool app_quitting)
{
mEventTimer.stop();
}
void ALFloaterRegionTracker::updateHeader()
{
S32 num_selected(mRegionScrollList->getNumSelected());
mRefreshRegionListBtn->setEnabled(mRegionMap.size() != 0);
mRemoveRegionBtn->setEnabled(!!num_selected);
mOpenMapBtn->setEnabled(num_selected == 1);
}
void ALFloaterRegionTracker::refresh()
{
if (!mRegionMap.size())
{
updateHeader();
return;
}
const std::string& saved_selected_value = mRegionScrollList->getSelectedValue().asString();
mRegionScrollList->deleteAllItems();
const std::string& cur_region_name = gAgent.getRegion()->getName();
for (LLSD::map_const_iterator it = mRegionMap.beginMap(); it != mRegionMap.endMap(); it++)
{
const std::string& sim_name = it->first;
const LLSD& data = it->second;
if (data.isMap()) // Assume the rest is correct.
{
LLScrollListCell::Params label;
LLScrollListCell::Params maturity;
LLScrollListCell::Params region;
LLScrollListCell::Params count;
label.column("region_label").type("text").value(data["label"].asString());
maturity.column("region_maturity_icon").type("icon").font_halign(LLFontGL::HCENTER);
region.column("region_name").type("text").value(sim_name);
count.column("region_agent_count").type("text").value("...");
if (LLSimInfo* info = LLWorldMap::getInstance()->simInfoFromName(sim_name))
{
maturity.value(info->getAccessIcon());
info->updateAgentCount(LLTimer::getElapsedSeconds());
S32 agent_count = info->getAgentCount();
if (info->isDown())
{
label.color(LLColor4::red);
maturity.color(LLColor4::red);
region.color(LLColor4::red);
count.color(LLColor4::red);
count.value(0);
}
else
count.value((sim_name == cur_region_name) ? agent_count + 1 : agent_count);
}
else
{
label.color(LLColor4::grey);
maturity.color(LLColor4::grey);
region.color(LLColor4::grey);
count.color(LLColor4::grey);
LLWorldMapMessage::getInstance()->sendNamedRegionRequest(sim_name);
if (!mEventTimer.getStarted()) mEventTimer.start();
}
LLScrollListItem::Params row;
row.value = sim_name;
row.columns.add(label);
row.columns.add(maturity);
row.columns.add(region);
row.columns.add(count);
mRegionScrollList->addRow(row);
}
}
if (!saved_selected_value.empty())
mRegionScrollList->selectByValue(saved_selected_value);
}
BOOL ALFloaterRegionTracker::tick()
{
refresh();
return FALSE;
}
void ALFloaterRegionTracker::requestRegionData()
{
if (!mRegionMap.size())
return;
for (LLSD::map_const_iterator it = mRegionMap.beginMap(); it != mRegionMap.endMap(); it++)
{
const std::string& name = it->first;
if (LLSimInfo* info = LLWorldMap::getInstance()->simInfoFromName(name))
{
info->updateAgentCount(LLTimer::getElapsedSeconds());
}
else
{
LLWorldMapMessage::getInstance()->sendNamedRegionRequest(name);
}
}
mEventTimer.start();
}
void ALFloaterRegionTracker::removeRegions()
{
typedef std::vector<LLScrollListItem*> item_t;
item_t items = mRegionScrollList->getAllSelected();
for (item_t::const_iterator it = items.begin(); it != items.end(); ++it)
{
mRegionMap.erase((*it)->getValue().asString());
}
mRegionScrollList->deleteSelectedItems();
saveToJSON();
updateHeader();
}
bool ALFloaterRegionTracker::saveToJSON()
{
const std::string& filename = gDirUtilp->getExpandedFilename(LL_PATH_USER_SETTINGS, TRACKER_FILE);
llofstream out_file;
out_file.open(filename);
if (out_file.is_open())
{
LLSDSerialize::toPrettyNotation(mRegionMap, out_file);
out_file.close();
return true;
}
return false;
}
bool ALFloaterRegionTracker::loadFromJSON()
{
const std::string& filename = gDirUtilp->getExpandedFilename(LL_PATH_USER_SETTINGS, TRACKER_FILE);
llifstream in_file;
in_file.open(filename);
if (in_file.is_open())
{
LLSDSerialize::fromNotation(mRegionMap, in_file, LLSDSerialize::SIZE_UNLIMITED);
in_file.close();
return true;
}
return false;
}
std::string ALFloaterRegionTracker::getRegionLabelIfExists(const std::string& name)
{
return mRegionMap.get(name)["label"].asString();
}
void ALFloaterRegionTracker::onRegionAddedCallback(const LLSD& notification, const LLSD& response)
{
const S32 option = LLNotificationsUtil::getSelectedOption(notification, response);
if (option == 0)
{
const std::string& name = notification["payload"]["name"].asString();
std::string label = response["label"].asString();
LLStringUtil::trim(label);
if (!name.empty() && !label.empty())
{
if (mRegionMap.has(name))
{
for (LLSD::map_iterator it = mRegionMap.beginMap(); it != mRegionMap.endMap(); it++)
if (it->first == name) it->second["label"] = label;
}
else
{
LLSD region;
region["label"] = label;
mRegionMap.insert(name, region);
}
saveToJSON();
refresh();
}
}
}
void ALFloaterRegionTracker::openMap()
{
const std::string& region = mRegionScrollList->getFirstSelected()->getValue().asString();
LLFloaterWorldMap* worldmap_floaterp = LLFloaterWorldMap::getInstance();
if (!region.empty() && worldmap_floaterp)
{
worldmap_floaterp->trackURL(region, 128, 128, 0);
LLFloaterReg::showInstance("world_map", "center");
}
}

View File

@ -0,0 +1,66 @@
/**
* @file alfloaterregiontracker.h
* @brief Region tracking floater
*
* $LicenseInfo:firstyear=2013&license=viewerlgpl$
* Alchemy Viewer Source Code
* Copyright (C) 2014, Alchemy Viewer Project.
*
* 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
*
* $/LicenseInfo$
*/
#pragma once
#include "lleventtimer.h"
#include "llfloater.h"
class LLButton;
class LLSD;
class LLScrollListCtrl;
class ALFloaterRegionTracker : public LLFloater, public LLEventTimer
{
friend class LLFloaterReg;
private:
ALFloaterRegionTracker(const LLSD& key);
virtual ~ALFloaterRegionTracker();
public:
/*virtual*/ BOOL postBuild();
/*virtual*/ void onOpen(const LLSD& key);
/*virtual*/ void onClose(bool app_quitting);
/*virtual*/ void refresh();
/*virtual*/ BOOL tick();
private:
void updateHeader();
void requestRegionData();
void removeRegions();
bool saveToJSON();
bool loadFromJSON();
void openMap();
public:
std::string getRegionLabelIfExists(const std::string& name);
void onRegionAddedCallback(const LLSD& notification, const LLSD& response);
private:
LLSD mRegionMap;
LLButton* mRefreshRegionListBtn;
LLButton* mRemoveRegionBtn;
LLButton* mOpenMapBtn;
LLScrollListCtrl* mRegionScrollList;
};

View File

@ -540,4 +540,14 @@
tooltip_ref="Command_ResyncAnimations_Tooltip"
execute_function="Tools.ResyncAnimations"
/>
<command name="regiontracker"
available_in_toybox="true"
icon="Command_RegionTracker_Icon"
label_ref="Command_RegionTracker_Label"
tooltip_ref="Command_RegionTracker_Tooltip"
execute_function="Floater.ToggleOrBringToFront"
execute_parameters="region_tracker"
is_running_function="Floater.IsOpen"
is_running_parameters="region_tracker"
/>
</commands>

View File

@ -80,6 +80,7 @@
// [/RLVa:KB]
#include "llsdutil.h"
#include "llsdutil_math.h"
#include "alfloaterregiontracker.h"
//---------------------------------------------------------------------------
// Constants
@ -316,7 +317,9 @@ LLFloaterWorldMap::LLFloaterWorldMap(const LLSD& key)
mCommitCallbackRegistrar.add("WMap.ShowAgent", boost::bind(&LLFloaterWorldMap::onShowAgentBtn, this));
mCommitCallbackRegistrar.add("WMap.Clear", boost::bind(&LLFloaterWorldMap::onClearBtn, this));
mCommitCallbackRegistrar.add("WMap.CopySLURL", boost::bind(&LLFloaterWorldMap::onCopySLURL, this));
// <FS:Ansariel> Alchemy region tracker
mCommitCallbackRegistrar.add("WMap.TrackRegion", boost::bind(&LLFloaterWorldMap::onTrackRegion, this));
gSavedSettings.getControl("PreferredMaturity")->getSignal()->connect(boost::bind(&LLFloaterWorldMap::onChangeMaturity, this));
}
@ -602,6 +605,8 @@ void LLFloaterWorldMap::draw()
copy_slurl_btn->setEnabled((mSLURL.isValid()) );
go_home_btn->setEnabled((!rlv_handler_t::isEnabled()) || !(gRlvHandler.hasBehaviour(RLV_BHVR_TPLM) && gRlvHandler.hasBehaviour(RLV_BHVR_TPLOC)));
// </FS:Ansariel> Performance improvement
// <FS:Ansariel> Alchemy region tracker
getChild<LLButton>("track_region")->setEnabled((BOOL) tracking_status || LLWorldMap::getInstance()->isTracking());
setMouseOpaque(TRUE);
getDragHandle()->setMouseOpaque(TRUE);
@ -1606,6 +1611,30 @@ void LLFloaterWorldMap::onCopySLURL()
LLNotificationsUtil::add("CopySLURL", args);
}
// <FS:Ansariel> Alchemy region tracker
void LLFloaterWorldMap::onTrackRegion()
{
ALFloaterRegionTracker* floaterp = LLFloaterReg::getTypedInstance<ALFloaterRegionTracker>("region_tracker");
if (floaterp)
{
if (LLTracker::getTrackingStatus() != LLTracker::TRACKING_NOTHING)
{
std::string sim_name;
LLWorldMap::getInstance()->simNameFromPosGlobal(LLTracker::getTrackedPositionGlobal(), sim_name);
if (!sim_name.empty())
{
const std::string& temp_label = floaterp->getRegionLabelIfExists(sim_name);
LLSD args, payload;
args["REGION"] = sim_name;
args["LABEL"] = !temp_label.empty() ? temp_label : sim_name;
payload["name"] = sim_name;
LLNotificationsUtil::add("RegionTrackerAdd", args, payload, boost::bind(&ALFloaterRegionTracker::onRegionAddedCallback, floaterp, _1, _2));
}
}
}
}
// </FS:Ansariel>
// protected
void LLFloaterWorldMap::centerOnTarget(BOOL animate)
{

View File

@ -151,6 +151,8 @@ protected:
void onShowTargetBtn();
void onShowAgentBtn();
void onCopySLURL();
// <FS:Ansariel> Alchemy region tracker
void onTrackRegion();
void centerOnTarget(BOOL animate);
void updateLocation();

View File

@ -156,6 +156,7 @@
#include "rlvfloaters.h"
// [/RLVa:KB]
// ND: And for FS please put yours after this line, for easier merges too
#include "alfloaterregiontracker.h"
#include "animationexplorer.h"
#include "ao.h"
#include "daeexport.h"
@ -434,8 +435,9 @@ void LLViewerFloaterReg::registerFloaters()
LLFloaterReg::add(PHOTOTOOLS_FLOATER, "floater_phototools.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<FloaterQuickPrefs>);
LLFloaterReg::add("phototools_camera", "floater_phototools_camera.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLFloaterCamera>);
LLFloaterReg::add("publish_classified_fs", "floater_publish_classified.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<FSPublishClassifiedFloater>);
LLFloaterReg::add("quickprefs", "floater_quickprefs.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<FloaterQuickPrefs>);
LLFloaterReg::add("search_replace", "floater_search_replace.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLFloaterSearchReplace>);
LLFloaterReg::add("quickprefs", "floater_quickprefs.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<FloaterQuickPrefs>);
LLFloaterReg::add("region_tracker", "floater_region_tracker.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<ALFloaterRegionTracker>);
LLFloaterReg::add("search_replace", "floater_search_replace.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLFloaterSearchReplace>);
LLFloaterReg::add("secondary_inventory", "floater_my_inventory.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLFloaterSidePanelContainer>);
LLFloaterReg::add("script_recover", "floater_script_recover.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLFloaterScriptRecover>);
LLFloaterReg::add("sound_explorer", "floater_NACL_explore_sounds.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<NACLFloaterExploreSounds>);

View File

@ -126,6 +126,10 @@ public:
std::string getName() const { return mName; }
const std::string getFlagsString() const { return LLViewerRegion::regionFlagsToString(mRegionFlags); }
const std::string getAccessString() const { return LLViewerRegion::accessToString((U8)mAccess); }
// <FS:Ansariel> Alchemy region tracker
const std::string getShortAccessString() const { return LLViewerRegion::accessToShortString(static_cast<U8>(mAccess)); }
const std::string getAccessIcon() const { return LLViewerRegion::getAccessIcon(static_cast<U8>(mAccess)); }
// </FS:Ansariel>
const S32 getAgentCount() const; // Compute the total agents count
LLPointer<LLViewerFetchedTexture> getLandForSaleImage(); // Get the overlay image, fetch it if necessary

View File

@ -160,6 +160,7 @@ with the same filename but different name
<texture name="Command_Twitter_Icon" file_name="toolbar_icons/twitter.png" preload="true" />
<texture name="Command_View_Icon" file_name="toolbar_icons/view.png" preload="true" />
<texture name="Command_Voice_Icon" file_name="toolbar_icons/nearbyvoice.png" preload="true" />
<texture name="Command_RegionTracker_Icon" file_name="toolbar_icons/regiontracker.png" preload="true" />
<texture name="Caret_Bottom_Icon" file_name="toolbar_icons/caret_bottom.png" preload="true" scale.left="1" scale.top="23" scale.right="15" scale.bottom="1" />
<texture name="Caret_Right_Icon" file_name="toolbar_icons/caret_right.png" preload="true" scale.left="5" scale.top="15" scale.right="28" scale.bottom="1" />
<texture name="Caret_Left_Icon" file_name="toolbar_icons/caret_left.png" preload="true" scale.left="1" scale.top="15" scale.right="23" scale.bottom="1" />

Binary file not shown.

After

Width:  |  Height:  |  Size: 912 B

View File

@ -80,9 +80,10 @@
Standort:
</text>
<button label="Teleportieren" label_selected="Teleportieren" name="Teleport" tool_tip="Zu ausgewählter Position teleportieren"/>
<button label="SLurl kopieren" name="copy_slurl" tool_tip="Kopiert die aktuelle Position als SLurl zur Verwendung im Web."/>
<button label="Löschen" name="Clear" tool_tip="Verfolgung abschalten und Karte zurücksetzen."/>
<button label="SLurl kopieren" name="copy_slurl" tool_tip="Kopiert die aktuelle Position als SLurl zur Verwendung im Web." width="88"/>
<button label="Löschen" name="Clear" tool_tip="Verfolgung abschalten und Karte zurücksetzen." width="75"/>
<button label="Auswahl anzeigen" label_selected="Ziel anzeigen" name="Show Destination" tool_tip="Karte auf ausgewählte Position zentrieren"/>
<button label="Region verfolgen" name="track_region" tool_tip="Region zum Region-Tracker hinzufügen"/>
</panel>
</layout_panel>
</layout_stack>

View File

@ -0,0 +1,92 @@
<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
<floater
name="region_tracker"
title="Region Tracker"
help_topic="floater_region_tracker"
single_instance="true"
reuse_instance="true"
layout="topleft"
height="250"
width="408"
min_height="150"
min_width="30"
can_resize="true">
<text
follows="left|top"
height="31"
left="5"
top="0"
right="-8"
layout="topleft"
valign="center"
font="SansSerifBig"
name="region_label_text"
value="Add regions from the World Map" />
<button
right="-76"
top_pad="-29"
halign="center"
height="31"
layout="topleft"
follows="top|right"
width="31"
mouse_opaque="true"
name="refresh"
tool_tip="Refresh"
image_overlay="Refresh_Off" />
<button
left_pad="5"
halign="center"
height="31"
layout="topleft"
follows="top|right"
width="31"
mouse_opaque="true"
name="remove"
tool_tip="Remove region(s)"
image_overlay="TrashItem_Off" />
<button
left_pad="5"
halign="center"
height="31"
layout="topleft"
follows="top|right"
width="31"
mouse_opaque="true"
name="open_map"
tool_tip="Open map"
image_overlay="Command_Map_Icon" />
<scroll_list
name="region_list"
tool_tip="Double click an entry to open it on the world map."
height="210"
width="400"
layout="topleft"
follows="all"
top_pad="5"
left="5"
multi_select="true"
draw_heading="true"
column_padding="0"
search_column="0">
<scroll_list.columns
name="region_label"
label="Label"
dynamicwidth="true"
width="100" />
<scroll_list.columns
name="region_maturity_icon"
dynamicwidth="true"
width="26" />
<scroll_list.columns
name="region_name"
label="Region"
dynamicwidth="true"
width="130" />
<scroll_list.columns
name="region_agent_count"
label="Count"
dynamicwidth="true"
width="30" />
</scroll_list>
</floater>

View File

@ -674,7 +674,7 @@
name="Teleport"
tool_tip="Teleport to selected location"
top_pad="8"
width="123">
width="81">
<button.commit_callback
function="WMap.Teleport" />
</button>
@ -683,40 +683,53 @@
height="23"
label="Copy SLurl"
layout="topleft"
left_pad="4"
left_pad="3"
name="copy_slurl"
tool_tip="Copies current location as SLurl to be used on the web."
top_delta="0"
width="123">
width="82">
<button.commit_callback
function="WMap.CopySLURL" />
</button>
<button
follows="left|right|bottom"
enabled="false"
height="23"
label="Clear"
layout="topleft"
left="0"
left_pad="3"
top_delta="0"
name="Clear"
tool_tip="Clear tracking lines and reset map"
top_pad="5"
width="123">
width="81">
<button.commit_callback
function="WMap.Clear" />
</button>
<button
follows="left|right|bottom"
enabled="false"
height="23"
label="Show Selection"
left_pad="4"
top_delta="0"
layout="topleft"
left="0"
name="Show Destination"
tool_tip="Center map on selected location"
top_pad="5"
width="123">
<button.commit_callback
function="WMap.ShowTarget" />
</button>
<button
follows="left|right|bottom"
enabled="false"
height="23"
label="Track Region"
left_pad="4"
top_delta="0"
name="track_region"
tool_tip="Add the region to the region tracker"
width="123">
<button.commit_callback
function="WMap.TrackRegion" />
</button>
</panel>
</layout_panel>
</layout_stack>

View File

@ -12045,4 +12045,25 @@ Flickr verification failed. Please try again, and be sure to double check the ve
Your snapshot can now be viewed [http://www.flickr.com/photos/upload/edit/?ids=[ID] here].
</notification>
<!-- </FS:TS> FIRE-5453 -->
<notification
icon="alert.tga"
name="RegionTrackerAdd"
type="alert">
What label would you like to use for
the region &quot;[REGION]&quot;?
<tag>confirm</tag>
<form name="form">
<input name="label" type="text">[LABEL]</input>
<button
default="true"
index="0"
name="OK"
text="OK"/>
<button
index="1"
name="Cancel"
text="Cancel"/>
</form>
</notification>
</notifications>

View File

@ -2459,6 +2459,7 @@ Try enclosing path to the editor with double quotes.
<string name="Command_Move_Lock_Label">Move Lock</string>
<string name="Command_Blocklist_Label">Block List</string>
<string name="Command_ResyncAnimations_Label">Resync animations</string>
<string name="Command_RegionTracker_Label">Region Tracker</string>
<string name="Command_AboutLand_Tooltip">Information about the land you're visiting</string>
<string name="Command_Appearance_Tooltip">Change your avatar</string>
@ -2514,6 +2515,7 @@ Try enclosing path to the editor with double quotes.
<string name="Command_Move_Lock_Tooltip">Locks your avatar in its current position (CTRL+ALT+P)</string>
<string name="Command_Blocklist_Tooltip">Opens the block/mute list</string>
<string name="Command_ResyncAnimations_Tooltip">Synchronizes avatar animations</string>
<string name="Command_RegionTracker_Tooltip">Track various regions status</string>
<string name="Toolbar_Bottom_Tooltip">currently in your bottom toolbar</string>
<string name="Toolbar_Left_Tooltip" >currently in your left toolbar</string>

View File

@ -71,8 +71,8 @@
Lugar:
</text>
<button label="Teleportar" name="Teleport" tool_tip="Teleportar a la localización seleccionada"/>
<button label="Copiar la SLurl" name="copy_slurl" tool_tip="Copiar la SLurl de esta posición para usarla en una web."/>
<button label="Eliminar" name="Clear" tool_tip="Limpia las marcas y actualiza el mapa"/>
<button label="Copiar la SLurl" name="copy_slurl" tool_tip="Copiar la SLurl de esta posición para usarla en una web." width="93"/>
<button label="Eliminar" name="Clear" tool_tip="Limpia las marcas y actualiza el mapa" width="70"/>
<button label="Ver lo elegido" name="Show Destination" tool_tip="Centrar el mapa en la localización seleccionada"/>
</panel>
</layout_panel>

View File

@ -91,7 +91,8 @@ title="CARTE DU MONDE">
</text>
<button name="Clear"
label="Purger"
tool_tip="Purger les champs de recherche et d'affichage des régions">
tool_tip="Purger les champs de recherche et d'affichage des régions"
width="70">
</button>
<button name="Teleport"
label="Téléportation"
@ -99,7 +100,8 @@ title="CARTE DU MONDE">
</button>
<button name="copy_slurl"
label="Copier le SLurl"
tool_tip="Copier la position du marqueur en tant que SLurl utilisable sur le Web et sur SL">
tool_tip="Copier la position du marqueur en tant que SLurl utilisable sur le Web et sur SL"
width="93">
</button>
<button name="Show Destination"
label="Centrer la carte"

View File

@ -76,10 +76,10 @@
<text name="events_label">
Local:
</text>
<button font="SansSerifSmall" label="Teletransportar" label_selected="Teletransporte" name="Teleport" tool_tip="Teletransportar para o lugar selecionado"/>
<button font="SansSerifSmall" label="Copiar SLurl" name="copy_slurl" tool_tip="Copia a localização atual como um SLurl para usar na web."/>
<button font="SansSerifSmall" label="Limpar" name="Clear" tool_tip="Limpar linhas e redefinir mapa"/>
<button font="SansSerifSmall" label="Mostrar seleção" label_selected="Mostrar Destino" name="Show Destination" tool_tip="Centrar mapa no local selecionado"/>
<button label="Teletransportar" label_selected="Teletransporte" name="Teleport" tool_tip="Teletransportar para o lugar selecionado" width="92"/>
<button label="Copiar SLurl" name="copy_slurl" tool_tip="Copia a localização atual como um SLurl para usar na web."/>
<button label="Limpar" name="Clear" tool_tip="Limpar linhas e redefinir mapa" width="70"/>
<button label="Mostrar seleção" label_selected="Mostrar Destino" name="Show Destination" tool_tip="Centrar mapa no local selecionado"/>
</panel>
</layout_panel>
</layout_stack>

View File

@ -675,7 +675,7 @@
name="Teleport"
tool_tip="Teleport to selected location"
top_pad="8"
width="123">
width="81">
<button.commit_callback
function="WMap.Teleport" />
</button>
@ -684,40 +684,53 @@
height="23"
label="Copy SLurl"
layout="topleft"
left_pad="4"
left_pad="3"
name="copy_slurl"
tool_tip="Copies current location as SLurl to be used on the web."
top_delta="0"
width="123">
width="82">
<button.commit_callback
function="WMap.CopySLURL" />
</button>
<button
follows="left|right|bottom"
enabled="false"
height="23"
label="Clear"
layout="topleft"
left="0"
left_pad="3"
top_delta="0"
name="Clear"
tool_tip="Clear tracking lines and reset map"
top_pad="5"
width="123">
width="81">
<button.commit_callback
function="WMap.Clear" />
</button>
<button
follows="left|right|bottom"
enabled="false"
height="23"
label="Show Selection"
left_pad="4"
top_delta="0"
layout="topleft"
left="0"
name="Show Destination"
tool_tip="Center map on selected location"
top_pad="5"
width="123">
<button.commit_callback
function="WMap.ShowTarget" />
</button>
<button
follows="left|right|bottom"
enabled="false"
height="23"
label="Track Region"
left_pad="4"
top_delta="0"
name="track_region"
tool_tip="Add the region to the region tracker"
width="123">
<button.commit_callback
function="WMap.TrackRegion" />
</button>
</panel>
</layout_panel>
</layout_stack>

View File

@ -679,7 +679,7 @@
name="Teleport"
tool_tip="Teleport to selected location"
top_pad="8"
width="123">
width="81">
<button.commit_callback
function="WMap.Teleport" />
</button>
@ -688,41 +688,53 @@
height="23"
label="Copy SLurl"
layout="topleft"
left_pad="4"
left_pad="3"
name="copy_slurl"
tool_tip="Copies current location as SLurl to be used on the web."
top_delta="0"
width="123">
width="82">
<button.commit_callback
function="WMap.CopySLURL" />
</button>
<button
follows="left|right|bottom"
enabled="false"
height="23"
label="Clear"
layout="topleft"
left="0"
left_pad="3"
top_delta="0"
name="Clear"
tool_tip="Clear tracking lines and reset map"
top_pad="5"
width="123">
width="81">
<button.commit_callback
function="WMap.Clear" />
</button>
<button
follows="left|right|bottom"
enabled="false"
height="23"
label="Show Selection"
left_pad="4"
top_delta="0"
layout="topleft"
left="0"
name="Show Destination"
tool_tip="Center map on selected location"
top_pad="5"
width="123">
<button.commit_callback
function="WMap.ShowTarget" />
</button>
</panel>
<button
follows="left|right|bottom"
enabled="false"
height="23"
label="Track Region"
left_pad="4"
top_delta="0"
name="track_region"
tool_tip="Add the region to the region tracker"
width="123">
<button.commit_callback
function="WMap.TrackRegion" />
</button>
</layout_panel>
</layout_stack>
</floater>