Add Alchemy region tracker; by Drake Arconis & Cinder Roxley
parent
f732b3a2bf
commit
9e9f6ff48e
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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");
|
||||
}
|
||||
}
|
||||
|
|
@ -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;
|
||||
};
|
||||
|
|
@ -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>
|
||||
|
|
|
|||
|
|
@ -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)
|
||||
{
|
||||
|
|
|
|||
|
|
@ -151,6 +151,8 @@ protected:
|
|||
void onShowTargetBtn();
|
||||
void onShowAgentBtn();
|
||||
void onCopySLURL();
|
||||
// <FS:Ansariel> Alchemy region tracker
|
||||
void onTrackRegion();
|
||||
|
||||
void centerOnTarget(BOOL animate);
|
||||
void updateLocation();
|
||||
|
|
|
|||
|
|
@ -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>);
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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 |
|
|
@ -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>
|
||||
|
|
|
|||
|
|
@ -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>
|
||||
|
|
@ -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>
|
||||
|
|
|
|||
|
|
@ -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 "[REGION]"?
|
||||
<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>
|
||||
|
|
|
|||
|
|
@ -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>
|
||||
|
|
|
|||
|
|
@ -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>
|
||||
|
|
|
|||
|
|
@ -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"
|
||||
|
|
|
|||
|
|
@ -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>
|
||||
|
|
|
|||
|
|
@ -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>
|
||||
|
|
|
|||
|
|
@ -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>
|
||||
|
|
|
|||
Loading…
Reference in New Issue