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:
Inusaito Sayori
2015-03-21 03:45:09 -04:00
parent 27e69cab1e
commit 7811d8857c
18 changed files with 479 additions and 20 deletions

View File

@@ -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

View 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);
}
}

View 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;
};

View File

@@ -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>

View File

@@ -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>

View File

@@ -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)
{

View File

@@ -132,6 +132,7 @@ protected:
void onShowTargetBtn();
void onShowAgentBtn();
void onCopySLURL();
void onTrackRegion();
void centerOnTarget(BOOL animate);
void updateLocation();

View File

@@ -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");

View File

@@ -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
//---------------------------------------------------------------------------

View File

@@ -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

Binary file not shown.

After

Width:  |  Height:  |  Size: 912 B

View File

@@ -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>

View File

@@ -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"/>

View File

@@ -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"

View File

@@ -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"/>

View File

@@ -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 &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>
<notification
icon="alertmodal.tga"
name="RevokedMapRights"

View File

@@ -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"/>