Port Region Tracker Floater from Alchemy~
Added getGridSpecificFile function to append the grid when it's not SL. Also slightly rearrange Singularity menu.
This commit is contained in:
@@ -82,6 +82,7 @@ set(viewer_SOURCE_FILES
|
||||
NACLantispam.cpp
|
||||
aihttpview.cpp
|
||||
aixmllindengenepool.cpp
|
||||
alfloaterregiontracker.cpp
|
||||
aoremotectrl.cpp
|
||||
ascentfloatercontactgroups.cpp
|
||||
ascentkeyword.cpp
|
||||
@@ -611,6 +612,7 @@ set(viewer_HEADER_FILES
|
||||
NACLantispam.h
|
||||
aihttpview.h
|
||||
aixmllindengenepool.h
|
||||
alfloaterregiontracker.h
|
||||
aoremotectrl.h
|
||||
ascentfloatercontactgroups.h
|
||||
ascentkeyword.h
|
||||
|
||||
294
indra/newview/alfloaterregiontracker.cpp
Normal file
294
indra/newview/alfloaterregiontracker.cpp
Normal file
@@ -0,0 +1,294 @@
|
||||
/**
|
||||
* @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"
|
||||
#include "lluictrlfactory.h"
|
||||
|
||||
// newview
|
||||
#include "hippogridmanager.h"
|
||||
#include "llagent.h"
|
||||
#include "llfloaterworldmap.h"
|
||||
//#include "llfloaterreg.h"
|
||||
#include "llnotificationsutil.h"
|
||||
#include "llviewermessage.h"
|
||||
#include "llworldmap.h"
|
||||
#include "llworldmapmessage.h"
|
||||
|
||||
#include <boost/foreach.hpp>
|
||||
|
||||
const std::string TRACKER_FILE = "tracked_regions.json";
|
||||
|
||||
ALFloaterRegionTracker::ALFloaterRegionTracker(const LLSD&)
|
||||
: LLFloater(),
|
||||
LLEventTimer(5.f),
|
||||
mRefreshRegionListBtn(NULL),
|
||||
mRemoveRegionBtn(NULL),
|
||||
mOpenMapBtn(NULL),
|
||||
mRegionScrollList(NULL)
|
||||
{
|
||||
LLUICtrlFactory::instance().buildFloater(this, "floater_region_tracker.xml");
|
||||
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();
|
||||
app_quitting ? destroy() : setVisible(false);
|
||||
}
|
||||
|
||||
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());
|
||||
maturity.tool_tip(info->getShortAccessString());
|
||||
|
||||
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()
|
||||
{
|
||||
BOOST_FOREACH(const LLScrollListItem* item, mRegionScrollList->getAllSelected())
|
||||
{
|
||||
mRegionMap.erase(item->getValue().asString());
|
||||
}
|
||||
mRegionScrollList->deleteSelectedItems();
|
||||
saveToJSON();
|
||||
updateHeader();
|
||||
}
|
||||
|
||||
std::string getGridSpecificFile(const std::string& file, const char& sep = '_')
|
||||
{
|
||||
const HippoGridInfo& grid(*gHippoGridManager->getConnectedGrid());
|
||||
if (grid.isSecondLife()) return file;
|
||||
return file + sep + grid.getGridNick();
|
||||
}
|
||||
|
||||
bool ALFloaterRegionTracker::saveToJSON()
|
||||
{
|
||||
const std::string& filename = gDirUtilp->getExpandedFilename(LL_PATH_USER_SETTINGS, TRACKER_FILE);
|
||||
llofstream out_file;
|
||||
out_file.open(getGridSpecificFile(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(getGridSpecificFile(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 = gFloaterWorldMap;
|
||||
if (!region.empty() && worldmap_floaterp)
|
||||
{
|
||||
worldmap_floaterp->trackURL(region, 128, 128, 0);
|
||||
worldmap_floaterp->show(true);
|
||||
}
|
||||
}
|
||||
69
indra/newview/alfloaterregiontracker.h
Normal file
69
indra/newview/alfloaterregiontracker.h
Normal file
@@ -0,0 +1,69 @@
|
||||
/**
|
||||
* @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
|
||||
, public LLFloaterSingleton<ALFloaterRegionTracker>
|
||||
{
|
||||
//friend class LLFloaterReg;
|
||||
friend class LLUISingleton<ALFloaterRegionTracker, VisibilityPolicy<LLFloater> >;
|
||||
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();
|
||||
using LLUIFactory::getInstance;
|
||||
|
||||
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;
|
||||
};
|
||||
@@ -18521,6 +18521,22 @@ This should be as low as possible, but too low may break functionality</string>
|
||||
<integer>0</integer>
|
||||
</array>
|
||||
</map>
|
||||
<key>FloaterRegionTrackerRect</key>
|
||||
<map>
|
||||
<key>Comment</key>
|
||||
<string>Rectangle for Region Tracker Floater</string>
|
||||
<key>Persist</key>
|
||||
<integer>1</integer>
|
||||
<key>Type</key>
|
||||
<string>Rect</string>
|
||||
<key>Value</key>
|
||||
<array>
|
||||
<integer>500</integer>
|
||||
<integer>450</integer>
|
||||
<integer>850</integer>
|
||||
<integer>400</integer>
|
||||
</array>
|
||||
</map>
|
||||
<key>WindEnabled</key>
|
||||
<map>
|
||||
<key>Comment</key>
|
||||
|
||||
@@ -1747,6 +1747,17 @@
|
||||
<key>Value</key>
|
||||
<boolean>0</boolean>
|
||||
</map>
|
||||
<key>ToolbarVisibleRegionTracker</key>
|
||||
<map>
|
||||
<key>Comment</key>
|
||||
<string>Whether or not the button for the region tracker is on the toolbar</string>
|
||||
<key>Persist</key>
|
||||
<integer>1</integer>
|
||||
<key>Type</key>
|
||||
<string>Boolean</string>
|
||||
<key>Value</key>
|
||||
<boolean>0</boolean>
|
||||
</map>
|
||||
<key>ToolbarVisibleScriptErrors</key>
|
||||
<map>
|
||||
<key>Comment</key>
|
||||
|
||||
@@ -39,6 +39,7 @@
|
||||
|
||||
#include "llfloaterworldmap.h"
|
||||
|
||||
#include "alfloaterregiontracker.h"
|
||||
#include "llagent.h"
|
||||
#include "llagentcamera.h"
|
||||
#include "llbutton.h"
|
||||
@@ -268,6 +269,7 @@ LLFloaterWorldMap::LLFloaterWorldMap()
|
||||
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));
|
||||
mCommitCallbackRegistrar.add("WMap.TrackRegion", boost::bind(&LLFloaterWorldMap::onTrackRegion, this));
|
||||
|
||||
LLUICtrlFactory::getInstance()->buildFloater(this, "floater_world_map.xml", &getFactoryMap());
|
||||
gSavedSettings.getControl("PreferredMaturity")->getSignal()->connect(boost::bind(&LLFloaterWorldMap::onChangeMaturity, this));
|
||||
@@ -535,8 +537,10 @@ void LLFloaterWorldMap::draw()
|
||||
|
||||
getChildView("Teleport")->setEnabled((BOOL)tracking_status);
|
||||
// getChildView("Clear")->setEnabled((BOOL)tracking_status);
|
||||
getChildView("Show Destination")->setEnabled((BOOL)tracking_status || LLWorldMap::getInstance()->isTracking());
|
||||
bool is_tracking((BOOL)tracking_status || LLWorldMap::instance().isTracking());
|
||||
getChildView("Show Destination")->setEnabled(is_tracking);
|
||||
getChildView("copy_slurl")->setEnabled((mSLURL.isValid()) );
|
||||
getChild<LLButton>("track_region")->setEnabled(is_tracking);
|
||||
|
||||
setMouseOpaque(TRUE);
|
||||
getDragHandle()->setMouseOpaque(TRUE);
|
||||
@@ -1427,6 +1431,28 @@ void LLFloaterWorldMap::onCopySLURL()
|
||||
LLNotificationsUtil::add("CopySLURL", args);
|
||||
}
|
||||
|
||||
void LLFloaterWorldMap::onTrackRegion()
|
||||
{
|
||||
ALFloaterRegionTracker* floaterp = ALFloaterRegionTracker::getInstance();
|
||||
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));
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// protected
|
||||
void LLFloaterWorldMap::centerOnTarget(BOOL animate)
|
||||
{
|
||||
|
||||
@@ -132,6 +132,7 @@ protected:
|
||||
void onShowTargetBtn();
|
||||
void onShowAgentBtn();
|
||||
void onCopySLURL();
|
||||
void onTrackRegion();
|
||||
|
||||
void centerOnTarget(BOOL animate);
|
||||
void updateLocation();
|
||||
|
||||
@@ -35,6 +35,7 @@
|
||||
#include "llmenucommands.h"
|
||||
|
||||
#include "aihttpview.h"
|
||||
#include "alfloaterregiontracker.h"
|
||||
#include "floaterao.h"
|
||||
#include "floaterlocalassetbrowse.h"
|
||||
#include "hbfloatergrouptitles.h"
|
||||
@@ -239,6 +240,7 @@ struct MenuFloaterDict : public LLSingleton<MenuFloaterDict>
|
||||
registerFloater<LLFloaterPathfindingLinksets> ("pathfinding_linksets");
|
||||
registerFloater<LLFloaterPermsDefault> ("perm prefs");
|
||||
registerFloater<LLFloaterAvatarList> ("radar");
|
||||
registerFloater<ALFloaterRegionTracker> ("region_tracker");
|
||||
registerFloater<LLFloaterScriptLimits> ("script info");
|
||||
registerFloater<LLFloaterStats> ("stat bar");
|
||||
registerFloater<LLFloaterTeleportHistory> ("teleport history");
|
||||
|
||||
@@ -54,7 +54,7 @@
|
||||
|
||||
bool LLWorldMap::sGotMapURL = false;
|
||||
// Timers to temporise database requests
|
||||
const F32 AGENTS_UPDATE_TIMER = 60.0; // Seconds between 2 agent requests for a region
|
||||
const F32 AGENTS_UPDATE_TIMER = 30.0; // Seconds between 2 agent requests for a region
|
||||
const F32 REQUEST_ITEMS_TIMER = 10.f * 60.f; // Seconds before we consider re-requesting item data for the grid
|
||||
|
||||
//---------------------------------------------------------------------------
|
||||
|
||||
@@ -157,6 +157,8 @@ public:
|
||||
const std::string getFlagsString() const { return LLViewerRegion::regionFlagsToString(mRegionFlags); }
|
||||
const U64 getRegionFlags() const { return mRegionFlags; }
|
||||
const std::string getAccessString() const { return LLViewerRegion::accessToString((U8)mAccess); }
|
||||
const std::string getShortAccessString() const { return LLViewerRegion::accessToShortString(static_cast<U8>(mAccess)); } // <alchemy/>
|
||||
const std::string getAccessIcon() const { return LLViewerRegion::getAccessIcon(static_cast<U8>(mAccess)); }
|
||||
const U8 getAccess() const { return mAccess; }
|
||||
const S32 getAgentCount() const; // Compute the total agents count
|
||||
LLPointer<LLViewerFetchedTexture> getLandForSaleImage(); // Get the overlay image, fetch it if necessary
|
||||
|
||||
BIN
indra/newview/skins/dark/textures/icn_toolbar_region_tracker.png
Normal file
BIN
indra/newview/skins/dark/textures/icn_toolbar_region_tracker.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 912 B |
Binary file not shown.
@@ -162,8 +162,6 @@
|
||||
|
||||
<texture name="map_avatar_16.tga"/>
|
||||
<texture name="map_avatar_8.tga"/>
|
||||
<texture name="map_event.tga"/>
|
||||
<texture name="map_event_mature.tga"/>
|
||||
<texture name="map_home.tga"/>
|
||||
<texture name="map_infohub.tga"/>
|
||||
<texture name="map_telehub.tga"/>
|
||||
@@ -416,4 +414,7 @@
|
||||
<texture name="Inv_WaterLight.png" preload="true"/>
|
||||
|
||||
<texture name="Refresh_Off" file_name="Refresh_Off.png" preload="true" />
|
||||
<texture name="Parcel_PG_Light" file_name="map_event.tga" preload="true" />
|
||||
<texture name="Parcel_M_Dark" file_name="map_event_mature.tga" preload="true" />
|
||||
<texture name="Parcel_R_Light" file_name="map_event_adult.tga" preload="true" />
|
||||
</textures>
|
||||
|
||||
@@ -14,9 +14,10 @@
|
||||
<check_box bottom_delta="-20" label="Gestures" name="gestures_btn" follows="left|right" control_name="ToolbarVisibleGestures"/>
|
||||
<check_box bottom_delta="-20" label="Beacons" name="beacons_btn" follows="left|right" control_name="ToolbarVisibleBeacons"/>
|
||||
<check_box bottom_delta="-20" label="Radar" name="radar_list_btn" follows="left|right" control_name="ToolbarVisibleRadar"/>
|
||||
<check_box bottom_delta="-20" label="Region Tracker" name="region_tracker_btn" follows="left|right" control_name="ToolbarVisibleRegionTracker"/>
|
||||
<check_box bottom_delta="-20" label="Camera Controls" name="camera_controls_btn" follows="left|right" control_name="ToolbarVisibleCameraControls"/>
|
||||
<check_box bottom_delta="-20" label="Movement Controls" name="movement_controls_btn" follows="left|right" control_name="ToolbarVisibleMovementControls"/>
|
||||
<check_box bottom="-38" label="Mouselook" name="look_btn" follows="left|right" control_name="ToolbarVisibleMouselook" left_delta="160"/>
|
||||
<check_box bottom="-38" label="Movement Controls" name="movement_controls_btn" follows="left|right" control_name="ToolbarVisibleMovementControls" left_delta="160"/>
|
||||
<check_box bottom_delta="-20" label="Mouselook" name="look_btn" follows="left|right" control_name="ToolbarVisibleMouselook"/>
|
||||
<check_box bottom_delta="-20" label="Fly" name="fly_btn" follows="left|right" control_name="ToolbarVisibleFly"/>
|
||||
<check_box bottom_delta="-20" label="Sit" name="sit_btn" follows="left|right" control_name="ToolbarVisibleSit"/>
|
||||
<check_box bottom_delta="-20" label="Run" name="run_btn" follows="left|right" control_name="ToolbarVisibleAlwaysRun"/>
|
||||
@@ -31,8 +32,8 @@
|
||||
<check_box bottom_delta="-20" label="AO Settings" name="ao_btn" follows="left|right" control_name="ToolbarVisibleAO"/>
|
||||
<check_box bottom_delta="-20" label="Debug Settings" name="debug_settings_btn" follows="left|right" control_name="ToolbarVisibleDebugSettings"/>
|
||||
<check_box bottom_delta="-20" label="Debug Avatar" name="debug_avatar_btn" follows="left|right" control_name="ToolbarVisibleDebugAvatar"/>
|
||||
<check_box bottom_delta="-20" label="Anims Explorer" name="anims_explorer_btn" follows="left|right" control_name="ToolbarVisibleAnimsExplorer"/>
|
||||
<check_box bottom="-38" label="Sound Explorer" name="sound_explorer_btn" follows="left|right" control_name="ToolbarVisibleSoundExplorer" left_delta="160"/>
|
||||
<check_box bottom="-38" label="Anims Explorer" name="anims_explorer_btn" follows="left|right" control_name="ToolbarVisibleAnimsExplorer" left_delta="160"/>
|
||||
<check_box bottom_delta="-20" label="Sound Explorer" name="sound_explorer_btn" follows="left|right" control_name="ToolbarVisibleSoundExplorer"/>
|
||||
<check_box bottom_delta="-20" label="Area Search" name="areasearch_btn" follows="left|right" control_name="ToolbarVisibleAreaSearch"/>
|
||||
<check_box bottom_delta="-20" label="Inspect" name="inspect_btn" follows="left|right" control_name="ToolbarVisibleInspect"/>
|
||||
<check_box bottom_delta="-20" label="Characters" name="pathing_characters_btn" follows="left|right" control_name="ToolbarVisiblePathfindingCharacters"/>
|
||||
@@ -47,8 +48,8 @@
|
||||
<check_box bottom_delta="-20" label="Windlight" name="windlight_btn" follows="left|right" control_name="ToolbarVisibleWindlight"/>
|
||||
<check_box bottom_delta="-20" label="Water Editor" name="water_editor_btn" follows="left|right" control_name="ToolbarVisibleWaterSettings"/>
|
||||
<check_box bottom_delta="-20" label="Post-Process FX" name="post_process_btn" follows="left|right" control_name="ToolbarVisiblePostProcess"/>
|
||||
<check_box bottom_delta="-20" label="Buy [CURRENCY]" name="buy_currency_btn" follows="left|right" control_name="ToolbarVisibleBuyCurrency"/>
|
||||
<check_box bottom="-38" label="Buy Land" name="buy_land_btn" follows="left|right" control_name="ToolbarVisibleBuyLand" left_delta="160"/>
|
||||
<check_box bottom="-38" label="Buy [CURRENCY]" name="buy_currency_btn" follows="left|right" control_name="ToolbarVisibleBuyCurrency" left_delta="160"/>
|
||||
<check_box bottom_delta="-20" label="Buy Land" name="buy_land_btn" follows="left|right" control_name="ToolbarVisibleBuyLand"/>
|
||||
<check_box bottom_delta="-20" label="My Land" name="my_land_btn" follows="left|right" control_name="ToolbarVisibleMyLand"/>
|
||||
<check_box bottom_delta="-20" label="About Land" name="about_land_btn" follows="left|right" control_name="ToolbarVisibleAboutLand"/>
|
||||
<check_box bottom_delta="-20" label="Script Info" name="script_info_btn" follows="left|right" control_name="ToolbarVisibleScriptInfo"/>
|
||||
@@ -65,8 +66,8 @@
|
||||
<check_box bottom_delta="-20" label="Memory Leak" name="memleak_btn" follows="left|right" control_name="ToolbarVisibleMemLeak" visibility_control="QAMode"/>
|
||||
<check_box bottom_delta="-20" label="Message Log" name="message_log_btn" follows="left|right" control_name="ToolbarVisibleMessageLog"/>
|
||||
<check_box bottom_delta="-20" label="Statistics" name="stats_btn" follows="left|right" control_name="ToolbarVisibleStatBar"/>
|
||||
<check_box bottom_delta="-20" label="Notifications Console" name="notifications_console_btn" follows="left|right" control_name="ToolbarVisibleNotificationsConsole"/>
|
||||
<check_box bottom="-38" label="Debug Console" name="debug_console_btn" follows="left|right" control_name="ToolbarVisibleDebugConsole" left_delta="160"/>
|
||||
<check_box bottom="-38" label="Notifications Console" name="notifications_console_btn" follows="left|right" control_name="ToolbarVisibleNotificationsConsole" left_delta="160"/>
|
||||
<check_box bottom_delta="-20" label="Debug Console" name="debug_console_btn" follows="left|right" control_name="ToolbarVisibleDebugConsole"/>
|
||||
<check_box bottom_delta="-20" label="Region Console" name="region_console_btn" follows="left|right" control_name="ToolbarVisibleRegionDebugConsole"/>
|
||||
<check_box bottom_delta="-20" label="Fast Timers" name="fast_timers_btn" follows="left|right" control_name="ToolbarVisibleFastTimers"/>
|
||||
<check_box bottom_delta="-20" label="Frame Console" name="frame_console_btn" follows="left|right" control_name="ToolbarVisibleFrameConsole"/>
|
||||
@@ -81,8 +82,8 @@
|
||||
<check_box bottom_delta="-20" label="Favorites" name="favs_btn" follows="left|right" control_name="ToolbarVisibleInventoryFavs"/>
|
||||
<check_box bottom_delta="-20" label="Outbox" name="outbox_btn" follows="left|right" control_name="ToolbarVisibleOutbox"/>
|
||||
<check_box bottom_delta="-20" label="Preferences" name="preferences_btn" follows="left|right" control_name="ToolbarVisiblePreferences"/>
|
||||
<check_box bottom_delta="-20" label="Joystick Config" name="joystick_btn" follows="left|right" control_name="ToolbarVisibleJoystick"/>
|
||||
<check_box bottom="-38" label="Autoreplace" name="auto_replace_btn" follows="left|right" control_name="ToolbarVisibleAutoReplace" left_delta="160"/>
|
||||
<check_box bottom="-38" label="Joystick Config" name="joystick_btn" follows="left|right" control_name="ToolbarVisibleJoystick" left_delta="160"/>
|
||||
<check_box bottom_delta="-20" label="Autoreplace" name="auto_replace_btn" follows="left|right" control_name="ToolbarVisibleAutoReplace"/>
|
||||
<check_box bottom_delta="-20" label="Display Name" name="display_name_btn" follows="left|right" control_name="ToolbarVisibleDisplayName"/>
|
||||
<check_box bottom_delta="-20" label="Floater Test" name="floater_test_btn" follows="left|right" control_name="ToolbarVisibleTest"/>
|
||||
<check_box bottom_delta="-20" label="Edit UI" name="edit_ui_btn" follows="left|right" control_name="ToolbarVisibleEditUI"/>
|
||||
|
||||
@@ -204,11 +204,15 @@
|
||||
function="WMap.ShowAgent" />
|
||||
</button>
|
||||
<button bottom_delta="-24" enabled="false" follows="bottom|right" font="SansSerif"
|
||||
height="20" label="Copy SLURL to clipboard" left="-230" name="copy_slurl"
|
||||
height="20" label="Copy SLURL" left="-230" name="copy_slurl"
|
||||
tool_tip="Copies current location as SLURL to be used on the web."
|
||||
width="222">
|
||||
width="90">
|
||||
<button.commit_callback
|
||||
function="WMap.CopySLURL" />
|
||||
</button>
|
||||
<button bottom_delta="0" follows="right|bottom" height="20" label="Track Region" left_delta="100" name="track_region" tool_tip="Add the region to the region tracker" width="125">
|
||||
<button.commit_callback
|
||||
function="WMap.TrackRegion" />
|
||||
</button>
|
||||
<slider bottom="-697" can_edit_text="false" decimal_digits="3" follows="right|bottom"
|
||||
height="16" increment="0.2" initial_val="-2" label="Zoom" left="-230"
|
||||
|
||||
@@ -1030,11 +1030,19 @@
|
||||
<menu_item_call label="Animation Override..." mouse_opaque="true" name="Animation Override ...">
|
||||
<on_click function="ShowFloater" userdata="ao"/>
|
||||
</menu_item_call>
|
||||
<menu_item_check label="Pose Stand" mouse_opaque="true" name="Pose Stand">
|
||||
<on_click function="PoseStand"/>
|
||||
<on_check function="CheckPoseStand"/>
|
||||
</menu_item_check>
|
||||
<menu_item_check label="Nimble" mouse_opaque="true" name="Nimble">
|
||||
<on_click function="ToggleControl" userdata="Nimble"/>
|
||||
<on_check control="Nimble"/>
|
||||
</menu_item_check>
|
||||
<menu_item_separator mouse_opaque="true" name="separators3"/>
|
||||
<menu_item_check label="Region Tracker" name="Region Tracker">
|
||||
<on_click function="ShowFloater" userdata="region_tracker"/>
|
||||
<on_check function="FloaterVisible" userdata="region_tracker"/>
|
||||
</menu_item_check>
|
||||
<menu_item_check label="Object Area Search" mouse_opaque="true" name="Object Area Search">
|
||||
<on_click function="ShowFloater" userdata="areasearch"/>
|
||||
<on_check function="FloaterVisible" userdata="areasearch"/>
|
||||
@@ -1056,10 +1064,6 @@
|
||||
<on_check function="FloaterVisible" userdata="media ticker"/>
|
||||
<on_enable function="EnableStreamingAudioDisplay"/>
|
||||
</menu_item_check>
|
||||
<menu_item_check label="Pose Stand" mouse_opaque="true" name="Pose Stand">
|
||||
<on_click function="PoseStand"/>
|
||||
<on_check function="CheckPoseStand"/>
|
||||
</menu_item_check>
|
||||
<menu_item_check label="Region Debug Console" mouse_opaque="true" name="Region Debug Console">
|
||||
<on_click function="ShowFloater" userdata="RegionDebugConsole"/>
|
||||
<on_check function="FloaterVisible" userdata="RegionDebugConsole"/>
|
||||
|
||||
@@ -10361,6 +10361,27 @@ Changes won't take effect until after you restart [APP_NAME].
|
||||
</notification>
|
||||
|
||||
<!-- Alchemy Notifications-->
|
||||
<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>
|
||||
|
||||
<notification
|
||||
icon="alertmodal.tga"
|
||||
name="RevokedMapRights"
|
||||
|
||||
@@ -80,6 +80,11 @@
|
||||
<button.commit_callback function="ShowFloater" parameter="radar"/>
|
||||
</button>
|
||||
</layout_panel>
|
||||
<layout_panel name="panelregiontracker" height="24" width="50" user_resize="false" visibility_control="ToolbarVisibleRegionTracker">
|
||||
<button bottom="0" height="24" label="Region Tracker" image_overlay="icn_toolbar_region_tracker.png" image_overlay_alignment="left" image_selected="toolbar_btn_selected.tga" image_unselected="toolbar_btn_enabled.tga" image_disabled="toolbar_btn_disabled.tga" scale_image="true" name="region_tracker_btn" tool_tip="Track various regions status" width="50" follows="left|right">
|
||||
<button.commit_callback function="ShowFloater" parameter="region_tracker"/>
|
||||
</button>
|
||||
</layout_panel>
|
||||
<layout_panel name="panelcameracontrols" height="24" width="50" user_resize="false" visibility_control="ToolbarVisibleCameraControls">
|
||||
<button bottom="0" height="24" label="Camera Controls" name="camera_controls_btn" image_overlay="icn_toolbar_camera_controls.tga" image_overlay_alignment="left" image_selected="toolbar_btn_selected.tga" image_unselected="toolbar_btn_enabled.tga" image_disabled="toolbar_btn_disabled.tga" scale_image="true" width="50" follows="left|right">
|
||||
<button.commit_callback function="ShowFloater" parameter="camera controls"/>
|
||||
|
||||
Reference in New Issue
Block a user