Merge branch 'animesh' of https://github.com/Lirusaito/SingularityViewer into animesh
This commit is contained in:
@@ -802,7 +802,7 @@
|
||||
<key>fmodstudio</key>
|
||||
<map>
|
||||
<key>copyright</key>
|
||||
<string>FMOD Studio, copyright (c) Firelight Technologies Pty, Ltd., 2012-2017.</string>
|
||||
<string>FMOD Studio, copyright (c) Firelight Technologies Pty, Ltd., 2012-2019.</string>
|
||||
<key>description</key>
|
||||
<string>FMOD Studio audio system library</string>
|
||||
<key>license</key>
|
||||
@@ -818,15 +818,29 @@
|
||||
<key>archive</key>
|
||||
<map>
|
||||
<key>hash</key>
|
||||
<string>d1ede6c7be5db022897b44830cb5b095</string>
|
||||
<string>4a4e1bfd0e1e982643e75533ead10c55</string>
|
||||
<key>hash_algorithm</key>
|
||||
<string>md5</string>
|
||||
<key>url</key>
|
||||
<string>https://bitbucket.org/SingularityViewer/libraries/downloads/fmodstudio-2.00.02.191841858-darwin64-191841858.tar.bz2</string>
|
||||
<string>https://pkg.alchemyviewer.org/repository/autobuild-internal/fmodstudio/darwin/fmodstudio-2.00.03.192211300-darwin-192211300.tar.bz2</string>
|
||||
</map>
|
||||
<key>name</key>
|
||||
<string>darwin</string>
|
||||
</map>
|
||||
<key>darwin64</key>
|
||||
<map>
|
||||
<key>archive</key>
|
||||
<map>
|
||||
<key>hash</key>
|
||||
<string>fe1a606582fb72d5d1c9ec4a2d906830</string>
|
||||
<key>hash_algorithm</key>
|
||||
<string>md5</string>
|
||||
<key>url</key>
|
||||
<string>https://pkg.alchemyviewer.org/repository/autobuild-internal/fmodstudio/darwin64/fmodstudio-2.00.03.192211302-darwin64-192211302.tar.bz2</string>
|
||||
</map>
|
||||
<key>name</key>
|
||||
<string>darwin64</string>
|
||||
</map>
|
||||
<key>linux</key>
|
||||
<map>
|
||||
<key>archive</key>
|
||||
@@ -836,7 +850,7 @@
|
||||
<key>hash_algorithm</key>
|
||||
<string>md5</string>
|
||||
<key>url</key>
|
||||
<string>http://depot.alchemyviewer.org/pub/linux/lib/fmodstudio-1.06.07-linux-201507231333.tar.bz2</string>
|
||||
<string>https://depot.alchemyviewer.org/pub/linux/lib/fmodstudio-1.06.07-linux-201507231333.tar.bz2</string>
|
||||
</map>
|
||||
<key>name</key>
|
||||
<string>linux</string>
|
||||
@@ -846,11 +860,11 @@
|
||||
<key>archive</key>
|
||||
<map>
|
||||
<key>hash</key>
|
||||
<string>602e798cc969f2d46315775f1dd43c41</string>
|
||||
<string>54dbd41322a08a1fc333ca6d96af5502</string>
|
||||
<key>hash_algorithm</key>
|
||||
<string>md5</string>
|
||||
<key>url</key>
|
||||
<string>https://bitbucket.org/SingularityViewer/libraries/downloads/fmodstudio-2.00.02.191991250-linux64-191991250.tar.bz2</string>
|
||||
<string>/opt/devel/secondlife/pkg/fmodstudio-2.00.02.191991250-linux64-191991250.tar.bz2</string>
|
||||
</map>
|
||||
<key>name</key>
|
||||
<string>linux64</string>
|
||||
@@ -860,11 +874,11 @@
|
||||
<key>archive</key>
|
||||
<map>
|
||||
<key>hash</key>
|
||||
<string>2e18d5c43fad15d869dd96860f1e1871</string>
|
||||
<string>e0e87e0423fa42e4d2997b47b92eac6e</string>
|
||||
<key>hash_algorithm</key>
|
||||
<string>md5</string>
|
||||
<key>url</key>
|
||||
<string>https://bitbucket.org/SingularityViewer/libraries/downloads/fmodstudio-2.00.02-windows-191832253.tar.bz2</string>
|
||||
<string>https://pkg.alchemyviewer.org/repository/autobuild-internal/fmodstudio/windows/fmodstudio-2.00.03.192211030-windows-192211030.tar.bz2</string>
|
||||
</map>
|
||||
<key>name</key>
|
||||
<string>windows</string>
|
||||
@@ -874,11 +888,11 @@
|
||||
<key>archive</key>
|
||||
<map>
|
||||
<key>hash</key>
|
||||
<string>6146c96719680c2f1a8aaab1dabdef8e</string>
|
||||
<string>c2e55e1bfef7e066a0e40867a64b4cce</string>
|
||||
<key>hash_algorithm</key>
|
||||
<string>md5</string>
|
||||
<key>url</key>
|
||||
<string>https://bitbucket.org/SingularityViewer/libraries/downloads/fmodstudio-2.00.02-windows64-191832321.tar.bz2</string>
|
||||
<string>https://pkg.alchemyviewer.org/repository/autobuild-internal/fmodstudio/windows64/fmodstudio-2.00.03.192211029-windows64-192211029.tar.bz2</string>
|
||||
</map>
|
||||
<key>name</key>
|
||||
<string>windows64</string>
|
||||
|
||||
@@ -436,20 +436,67 @@ class ContextUrl : public LLMemberListener<LLView>
|
||||
}
|
||||
};
|
||||
|
||||
class ContextUrlCopy : public LLMemberListener<LLView>
|
||||
class ContextIDUrl : public LLMemberListener<LLView>
|
||||
{
|
||||
|
||||
bool handleEvent(LLPointer<LLOldEvents::LLEvent>, const LLSD& userdata) override
|
||||
protected:
|
||||
std::string getID(const std::string& type) const
|
||||
{
|
||||
const auto& url = get_focused_url();
|
||||
const auto& type = userdata.asStringRef();
|
||||
// Empty works like avatar and group, "object" is an object (you needed to be told this)
|
||||
const auto& id = type.empty() ? LLUrlAction::getUserID(url) : LLUrlAction::getObjectId(url);
|
||||
LLView::getWindow()->copyTextToClipboard(utf8str_to_wstring(id));
|
||||
return type.empty() ? LLUrlAction::getUserID(url) : LLUrlAction::getObjectId(url);
|
||||
}
|
||||
};
|
||||
|
||||
class ContextUrlCopy : public ContextIDUrl
|
||||
{
|
||||
bool handleEvent(LLPointer<LLOldEvents::LLEvent>, const LLSD& userdata) override
|
||||
{
|
||||
LLView::getWindow()->copyTextToClipboard(utf8str_to_wstring(getID(userdata.asStringRef())));
|
||||
return true;
|
||||
}
|
||||
};
|
||||
|
||||
class ContextUrlExt : public ContextIDUrl
|
||||
{
|
||||
bool handleEvent(LLPointer<LLOldEvents::LLEvent>, const LLSD& userdata) override
|
||||
{
|
||||
std::string cmd = userdata.asStringRef();
|
||||
std::string type;
|
||||
const auto sep = cmd.find(',');
|
||||
if (sep != std::string::npos)
|
||||
{
|
||||
type = cmd.substr(sep);
|
||||
cmd = cmd.substr(0, sep);
|
||||
}
|
||||
mExtCallback(cmd, LLUUID(getID(type)));
|
||||
return true;
|
||||
}
|
||||
LLTextEditor::ext_slurl_cb mExtCallback;
|
||||
public:
|
||||
ContextUrlExt(LLTextEditor::ext_slurl_cb cb) : mExtCallback(cb) {}
|
||||
};
|
||||
|
||||
class ContextUrlExtVisible : public ContextIDUrl
|
||||
{
|
||||
bool handleEvent(LLPointer<LLOldEvents::LLEvent>, const LLSD& userdata) override
|
||||
{
|
||||
std::string cmd = userdata["data"];
|
||||
std::string type;
|
||||
const auto sep = cmd.find(',');
|
||||
if (sep != std::string::npos)
|
||||
{
|
||||
type = cmd.substr(sep);
|
||||
cmd = cmd.substr(0, sep);
|
||||
}
|
||||
|
||||
LLMenuGL::sMenuContainer->findControl(userdata["control"].asString())->setValue(mExtVCB(cmd, LLUUID(getID(type))));
|
||||
return true;
|
||||
}
|
||||
LLTextEditor::ext_slurl_visible_cb mExtVCB;
|
||||
public:
|
||||
ContextUrlExtVisible(LLTextEditor::ext_slurl_visible_cb vcb) : mExtVCB(vcb) {}
|
||||
};
|
||||
|
||||
|
||||
void LLTextEditor::spell_correct(void* data)
|
||||
{
|
||||
@@ -528,11 +575,13 @@ void LLTextEditor::spell_add(void* data)
|
||||
}
|
||||
|
||||
//static
|
||||
void LLTextEditor::addMenuListeners()
|
||||
void LLTextEditor::addMenuListeners(ext_slurl_cb cb, ext_slurl_visible_cb vcb)
|
||||
{
|
||||
(new ContextText)->registerListener(LLMenuGL::sMenuContainer, "Text");
|
||||
(new ContextUrl)->registerListener(LLMenuGL::sMenuContainer, "Text.Url");
|
||||
(new ContextUrlCopy)->registerListener(LLMenuGL::sMenuContainer, "Text.Url.CopyUUID");
|
||||
(new ContextUrlExt(cb))->registerListener(LLMenuGL::sMenuContainer, "Text.Url.Ext");
|
||||
(new ContextUrlExtVisible(vcb))->registerListener(LLMenuGL::sMenuContainer, "Text.Url.ExtVisible");
|
||||
}
|
||||
|
||||
void LLTextEditor::setTrackColor( const LLColor4& color )
|
||||
@@ -721,8 +770,8 @@ LLMenuGL* LLTextEditor::createUrlContextMenu(S32 x, S32 y, const std::string &in
|
||||
|
||||
if (addFriendButton && removeFriendButton)
|
||||
{
|
||||
addFriendButton->setEnabled(!isFriend);
|
||||
removeFriendButton->setEnabled(isFriend);
|
||||
addFriendButton->setVisible(!isFriend);
|
||||
removeFriendButton->setVisible(isFriend);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -80,7 +80,11 @@ public:
|
||||
|
||||
static boost::signals2::connection setIsFriendCallback(const is_friend_signal_t::slot_type& cb);
|
||||
static boost::signals2::connection setIsObjectBlockedCallback(const is_blocked_signal_t::slot_type& cb);
|
||||
static void addMenuListeners();
|
||||
|
||||
typedef std::function<void(const std::string&, const LLUUID&)> ext_slurl_cb;
|
||||
typedef std::function<bool(const std::string&, const LLUUID&)> ext_slurl_visible_cb;
|
||||
static void addMenuListeners(ext_slurl_cb cb, ext_slurl_visible_cb vcb);
|
||||
|
||||
void setKeystrokeCallback(const keystroke_signal_t::slot_type& callback);
|
||||
|
||||
virtual LLXMLNodePtr getXML(bool save_children = true) const;
|
||||
|
||||
@@ -312,6 +312,42 @@ BOOL LLFloaterAvatarList::handleRightMouseDown(S32 x, S32 y, MASK mask)
|
||||
return LLFloater::handleRightMouseDown(x, y, mask);
|
||||
}
|
||||
|
||||
bool is_nearby(const LLUUID& id)
|
||||
{
|
||||
if (id.isNull()) return false;
|
||||
if (const auto inst = LLFloaterAvatarList::getIfExists())
|
||||
return inst->getAvatarEntry(id);
|
||||
uuid_vec_t avatars;
|
||||
LLWorld::instance().getAvatars(&avatars);
|
||||
return std::find(avatars.begin(), avatars.end(), id) != avatars.end();
|
||||
}
|
||||
|
||||
void track_av(const LLUUID& id)
|
||||
{
|
||||
if (auto inst = LLFloaterAvatarList::getIfExists())
|
||||
if (inst->getAvatarEntry(id))
|
||||
{
|
||||
inst->trackAvatar(id);
|
||||
return;
|
||||
}
|
||||
|
||||
LLWorld::pos_map_t avatars;
|
||||
LLWorld::instance().getAvatars(&avatars);
|
||||
LLTracker::trackLocation(avatars[id], LLStringUtil::null, LLStringUtil::null);
|
||||
}
|
||||
|
||||
void teleport_to(const LLUUID& id)
|
||||
{
|
||||
if (auto entry = LLFloaterAvatarList::instanceExists() ? LLFloaterAvatarList::instance().getAvatarEntry(id) : nullptr)
|
||||
gAgent.teleportViaLocation(entry->getPosition());
|
||||
else
|
||||
{
|
||||
LLWorld::pos_map_t avatars;
|
||||
LLWorld::instance().getAvatars(&avatars);
|
||||
gAgent.teleportViaLocation(avatars[id]);
|
||||
}
|
||||
}
|
||||
|
||||
static void cmd_profile(const LLAvatarListEntry* entry);
|
||||
static void cmd_toggle_mark(LLAvatarListEntry* entry);
|
||||
static void cmd_ar(const LLAvatarListEntry* entry);
|
||||
@@ -369,7 +405,7 @@ namespace
|
||||
{
|
||||
bool handleEvent(LLPointer<LLEvent> event, const LLSD& userdata)
|
||||
{
|
||||
LLFloaterAvatarList::instance().doCommand(cmd_teleport, true);
|
||||
teleport_to(get_focused_list_id_selected());
|
||||
return true;
|
||||
}
|
||||
};
|
||||
@@ -388,13 +424,13 @@ void addMenu(view_listener_t* menu, const std::string& name);
|
||||
|
||||
void add_radar_listeners()
|
||||
{
|
||||
addMenu(new RadarTrack(), "Radar.Track");
|
||||
addMenu(new RadarMark(), "Radar.Mark");
|
||||
addMenu(new RadarFocus(), "Radar.Focus");
|
||||
addMenu(new RadarFocusPrev(), "Radar.FocusPrev");
|
||||
addMenu(new RadarFocusNext(), "Radar.FocusNext");
|
||||
addMenu(new RadarTeleportTo(), "Radar.TeleportTo");
|
||||
addMenu(new RadarAnnounceKeys(), "Radar.AnnounceKeys");
|
||||
addMenu(new RadarTrack, "Radar.Track");
|
||||
addMenu(new RadarMark, "Radar.Mark");
|
||||
addMenu(new RadarFocus, "Radar.Focus");
|
||||
addMenu(new RadarFocusPrev, "Radar.FocusPrev");
|
||||
addMenu(new RadarFocusNext, "Radar.FocusNext");
|
||||
addMenu(new RadarTeleportTo, "Radar.TeleportTo");
|
||||
addMenu(new RadarAnnounceKeys, "Radar.AnnounceKeys");
|
||||
}
|
||||
|
||||
BOOL LLFloaterAvatarList::postBuild()
|
||||
@@ -1099,8 +1135,11 @@ void LLFloaterAvatarList::onClickTrack()
|
||||
LLScrollListItem* item = mAvatarList->getFirstSelected();
|
||||
if (!item) return;
|
||||
|
||||
LLUUID agent_id = item->getUUID();
|
||||
trackAvatar(item->getUUID());
|
||||
}
|
||||
|
||||
void LLFloaterAvatarList::trackAvatar(const LLUUID& agent_id)
|
||||
{
|
||||
if (mTracking && mTrackedAvatar == agent_id)
|
||||
{
|
||||
LLTracker::stopTracking(false);
|
||||
|
||||
@@ -266,6 +266,7 @@ public:
|
||||
void focusOnNext(bool marked_only);
|
||||
|
||||
void refreshTracker();
|
||||
void trackAvatar(const LLUUID& agent_id);
|
||||
void trackAvatar(const LLAvatarListEntry* entry) const;
|
||||
|
||||
/**
|
||||
|
||||
@@ -63,6 +63,7 @@
|
||||
#include "lldebugview.h"
|
||||
#include "llenvmanager.h"
|
||||
#include "llfirstuse.h"
|
||||
#include "llfloateravatarlist.h"
|
||||
#include "llfloateravatartextures.h"
|
||||
#include "llfloaterbuy.h"
|
||||
#include "llfloaterbuycontents.h"
|
||||
@@ -9255,11 +9256,16 @@ class ListShare : public view_listener_t
|
||||
}
|
||||
};
|
||||
|
||||
bool can_show_web_profile()
|
||||
{
|
||||
return !gSavedSettings.getString("WebProfileURL").empty();
|
||||
}
|
||||
|
||||
void show_log_browser(const LLUUID& id);
|
||||
class ListShowLog : public view_listener_t
|
||||
{
|
||||
bool handleEvent(LLPointer<LLEvent> event, const LLSD& userdata)
|
||||
{
|
||||
void show_log_browser(const LLUUID& id);
|
||||
for (const LLUUID& id : get_focused_list_ids_selected())
|
||||
show_log_browser(id);
|
||||
return true;
|
||||
@@ -9347,24 +9353,50 @@ void parcel_mod_notice_callback(const uuid_vec_t& ids, S32 choice, boost::functi
|
||||
cb(*it, choice);
|
||||
}
|
||||
|
||||
bool is_nearby(const LLUUID& id);
|
||||
class ListIsNearby : public view_listener_t
|
||||
{
|
||||
bool handleEvent(LLPointer<LLEvent> event, const LLSD& userdata)
|
||||
{
|
||||
gMenuHolder->findControl(userdata["control"].asString())->setValue(is_nearby(get_focused_list_id_selected()));
|
||||
return true;
|
||||
}
|
||||
};
|
||||
|
||||
void track_av(const LLUUID& id);
|
||||
class ListTrack : public view_listener_t
|
||||
{
|
||||
bool handleEvent(LLPointer<LLEvent> event, const LLSD& userdata)
|
||||
{
|
||||
track_av(get_focused_list_id_selected());
|
||||
return true;
|
||||
}
|
||||
};
|
||||
|
||||
void send_eject(const LLUUID& avatar_id, bool ban);
|
||||
void confirm_eject(const uuid_vec_t& ids)
|
||||
{
|
||||
LLNotificationsUtil::add("EjectAvatarFullname", create_args(ids, "AVATAR_NAME"), LLSD(), boost::bind(parcel_mod_notice_callback, ids, boost::bind(LLNotificationsUtil::getSelectedOption, _1, _2), send_eject));
|
||||
}
|
||||
class ListEject : public view_listener_t
|
||||
{
|
||||
bool handleEvent(LLPointer<LLEvent> event, const LLSD& userdata)
|
||||
{
|
||||
const uuid_vec_t& ids = get_focused_list_ids_selected();
|
||||
LLNotificationsUtil::add("EjectAvatarFullname", create_args(ids, "AVATAR_NAME"), LLSD(), boost::bind(parcel_mod_notice_callback, ids, boost::bind(LLNotificationsUtil::getSelectedOption, _1, _2), send_eject));
|
||||
confirm_eject(get_focused_list_ids_selected());
|
||||
return true;
|
||||
}
|
||||
};
|
||||
|
||||
void send_freeze(const LLUUID& avatar_id, bool freeze);
|
||||
void confirm_freeze(const uuid_vec_t& ids)
|
||||
{
|
||||
LLNotificationsUtil::add("FreezeAvatarFullname", create_args(ids, "AVATAR_NAME"), LLSD(), boost::bind(parcel_mod_notice_callback, ids, boost::bind(LLNotificationsUtil::getSelectedOption, _1, _2), send_freeze));
|
||||
}
|
||||
class ListFreeze : public view_listener_t
|
||||
{
|
||||
bool handleEvent(LLPointer<LLEvent> event, const LLSD& userdata)
|
||||
{
|
||||
const uuid_vec_t& ids = get_focused_list_ids_selected();
|
||||
LLNotificationsUtil::add("FreezeAvatarFullname", create_args(ids, "AVATAR_NAME"), LLSD(), boost::bind(parcel_mod_notice_callback, ids, boost::bind(LLNotificationsUtil::getSelectedOption, _1, _2), send_freeze));
|
||||
confirm_freeze(get_focused_list_ids_selected());
|
||||
return true;
|
||||
}
|
||||
};
|
||||
@@ -9395,22 +9427,28 @@ void estate_bulk_eject(const uuid_vec_t& ids, bool ban, S32 option)
|
||||
if (!tphome) send_estate_message("kickestate", strings);
|
||||
}
|
||||
|
||||
void confirm_estate_ban(const uuid_vec_t& ids)
|
||||
{
|
||||
LLNotificationsUtil::add("EstateBanUser", create_args(ids, "EVIL_USER"), LLSD(), boost::bind(estate_bulk_eject, ids, true, boost::bind(LLNotificationsUtil::getSelectedOption, _1, _2)));
|
||||
}
|
||||
class ListEstateBan : public view_listener_t
|
||||
{
|
||||
bool handleEvent(LLPointer<LLEvent> event, const LLSD& userdata)
|
||||
{
|
||||
const uuid_vec_t& ids = get_focused_list_ids_selected();
|
||||
LLNotificationsUtil::add("EstateBanUser", create_args(ids, "EVIL_USER"), LLSD(), boost::bind(estate_bulk_eject, ids, true, boost::bind(LLNotificationsUtil::getSelectedOption, _1, _2)));
|
||||
confirm_estate_ban(get_focused_list_ids_selected());
|
||||
return true;
|
||||
}
|
||||
};
|
||||
|
||||
void confirm_estate_kick(const uuid_vec_t& ids)
|
||||
{
|
||||
LLNotificationsUtil::add("EstateKickUser", create_args(ids, "EVIL_USER"), LLSD(), boost::bind(estate_bulk_eject, ids, false, boost::bind(LLNotificationsUtil::getSelectedOption, _1, _2)));
|
||||
}
|
||||
class ListEstateEject : public view_listener_t
|
||||
{
|
||||
bool handleEvent(LLPointer<LLEvent> event, const LLSD& userdata)
|
||||
{
|
||||
const uuid_vec_t& ids = get_focused_list_ids_selected();
|
||||
LLNotificationsUtil::add("EstateKickUser", create_args(ids, "EVIL_USER"), LLSD(), boost::bind(estate_bulk_eject, ids, false, boost::bind(LLNotificationsUtil::getSelectedOption, _1, _2)));
|
||||
confirm_estate_kick(get_focused_list_ids_selected());
|
||||
return true;
|
||||
}
|
||||
};
|
||||
@@ -9426,6 +9464,59 @@ class ListToggleMute : public view_listener_t
|
||||
}
|
||||
};
|
||||
|
||||
struct MenuSLURLDict : public LLSingleton<MenuSLURLDict>
|
||||
{
|
||||
typedef std::function<void (const LLUUID&)> cb;
|
||||
typedef std::function<bool (const LLUUID&)> vcb;
|
||||
typedef std::map<std::string, std::pair<cb, vcb>> slurl_menu_map;
|
||||
slurl_menu_map mEntries;
|
||||
MenuSLURLDict()
|
||||
{
|
||||
// Text Editor menus
|
||||
LLTextEditor::setIsObjectBlockedCallback(boost::bind(&LLMuteList::isMuted, LLMuteList::getInstance(), _1, _2, 0));
|
||||
LLTextEditor::setIsFriendCallback(LLAvatarActions::isFriend);
|
||||
LLTextEditor::addMenuListeners(boost::bind(&MenuSLURLDict::action, this, _1, _2), boost::bind(&MenuSLURLDict::visible, this, _1, _2));
|
||||
|
||||
// Add the entries
|
||||
insert("ShowWebProfile", boost::bind(LLAvatarActions::showProfile, _1, true), boost::bind(can_show_web_profile));
|
||||
insert("Pay", LLAvatarActions::pay);
|
||||
insert("Call", LLAvatarActions::startCall);
|
||||
insert("Share", LLAvatarActions::share);
|
||||
insert("AbuseReport", LLFloaterReporter::showFromObject);
|
||||
insert("InviteToGroup", [](const LLUUID& id) { LLAvatarActions::inviteToGroup(id); });
|
||||
insert("BanFromGroup", [](const LLUUID& id) { ban_from_group(uuid_vec_t(1, id)); });
|
||||
insert("ShowLog", [](const LLUUID& id) { show_log_browser(id); });
|
||||
insert("OfferTeleport", [](const LLUUID& id) { LLAvatarActions::offerTeleport(id); }, [](const LLUUID& id) { return LLAvatarActions::canOfferTeleport(id); });
|
||||
insert("RequestTeleport", LLAvatarActions::teleportRequest);
|
||||
void teleport_to(const LLUUID& id);
|
||||
insert("TeleportTo", teleport_to, is_nearby);
|
||||
insert("Focus", LLFloaterAvatarList::setFocusAvatar, is_nearby);
|
||||
insert("ParcelEject", [](const LLUUID& id) { confirm_eject(uuid_vec_t(1, id)); }, is_nearby);
|
||||
insert("Freeze", [](const LLUUID& id) { confirm_freeze(uuid_vec_t(1, id)); }, is_nearby);
|
||||
insert("EstateBan", [](const LLUUID& id) { confirm_estate_ban(uuid_vec_t(1, id)); }, is_nearby);
|
||||
insert("EstateEject", [](const LLUUID & id) { confirm_estate_kick(uuid_vec_t(1, id)); }, is_nearby);
|
||||
insert("Mute", LLAvatarActions::toggleBlock, [](const LLUUID& id) { return LLAvatarActions::canBlock(id) && !LLAvatarActions::isBlocked(id); });
|
||||
insert("Unmute", LLAvatarActions::toggleBlock, LLAvatarActions::isBlocked);
|
||||
}
|
||||
|
||||
void insert(const std::string& key, cb callback, vcb vcallback = nullptr)
|
||||
{
|
||||
mEntries[key] = std::make_pair(callback, vcallback);
|
||||
}
|
||||
|
||||
void action(const std::string& cmd, LLUUID id) const
|
||||
{
|
||||
auto it = mEntries.find(cmd);
|
||||
if (it != mEntries.end())
|
||||
(*it).second.first(id);
|
||||
}
|
||||
bool visible(const std::string& cmd, LLUUID id) const
|
||||
{
|
||||
auto it = mEntries.find(cmd);
|
||||
return it == mEntries.end() || !(*it).second.second || (*it).second.second(id);
|
||||
}
|
||||
};
|
||||
|
||||
LLMediaCtrl* get_focused_media_ctrl()
|
||||
{
|
||||
auto media_ctrl = dynamic_cast<LLMediaCtrl*>(gFocusMgr.getKeyboardFocus());
|
||||
@@ -9807,6 +9898,8 @@ void initialize_menus()
|
||||
addMenu(new ListStartConference(), "List.StartConference");
|
||||
addMenu(new ListStartIM(), "List.StartIM");
|
||||
addMenu(new ListAbuseReport(), "List.AbuseReport");
|
||||
addMenu(new ListIsNearby, "List.IsNearby");
|
||||
addMenu(new ListTrack, "List.Track");
|
||||
addMenu(new ListEject(), "List.ParcelEject");
|
||||
addMenu(new ListFreeze(), "List.Freeze");
|
||||
addMenu(new ListEstateBan(), "List.EstateBan");
|
||||
@@ -9815,10 +9908,7 @@ void initialize_menus()
|
||||
|
||||
add_radar_listeners();
|
||||
|
||||
// Text Editor menus
|
||||
LLTextEditor::setIsObjectBlockedCallback(boost::bind(&LLMuteList::isMuted, LLMuteList::getInstance(), _1, _2, 0));
|
||||
LLTextEditor::setIsFriendCallback(LLAvatarActions::isFriend);
|
||||
LLTextEditor::addMenuListeners();
|
||||
MenuSLURLDict::getInstance();
|
||||
|
||||
// Media Ctrl menus
|
||||
addMenu(new MediaCtrlCopyURL(), "Copy.PageURL");
|
||||
|
||||
@@ -6,13 +6,13 @@
|
||||
<layout_stack bottom="0" follows="all" mouse_opaque="false" left="5" right="-4" top="280" name="active_speakers_stack">
|
||||
<layout_panel name="panel_voice_effect" auto_resize="false" user_resize="false" visiblity_control="VoiceMorphingEnabled" filename="panel_voice_effect.xml" height="23"/>
|
||||
<layout_panel mouse_opaque="false" auto_resize="true" user_resize="false" name="active_speakers_panel" height="232">
|
||||
<scroll_list bottom="25" top="232" left="0" right="-1"
|
||||
<name_list bottom="25" top="232" left="0" right="-1"
|
||||
draw_stripes="false" follows="all" can_resize="true" column_padding="0" draw_heading="true"
|
||||
multi_select="true" name="speakers_list" search_column="1" sort_column="2" menu_num="0">
|
||||
<column name="icon_speaking_status" sort="speaking_status" width="20" />
|
||||
<column dynamicwidth="true" label="Name" name="speaker_name" />
|
||||
<column label="" name="speaking_status" width="0" />
|
||||
</scroll_list>
|
||||
</name_list>
|
||||
<slider bottom="5" follows="left|bottom" height="15" increment="0.05" initial_val="0.5"
|
||||
left="0" max_val="1.0" min_val="0.0" name="speaker_volume" show_text="true" can_edit_text="true" val_width="28" decimal_digits="2"
|
||||
width="145" />
|
||||
|
||||
@@ -4,82 +4,118 @@
|
||||
<on_click function="List.ShowProfile"/>
|
||||
<on_enable function="List.EnableAnySelected"/>
|
||||
</menu_item_call>
|
||||
<menu_item_call label="Web Profile" name="Web Profile">
|
||||
<on_click function="List.ShowWebProfile"/>
|
||||
<on_visible function="List.VisibleWebProfile"/>
|
||||
</menu_item_call>
|
||||
<menu_item_call label="Pay" name="Pay">
|
||||
<on_click function="List.Pay"/>
|
||||
<menu label="Avatar" name="Avatar" create_jump_keys="true">
|
||||
<menu_item_call label="Web Profile" name="Web Profile">
|
||||
<on_click function="List.ShowWebProfile"/>
|
||||
<on_visible function="List.VisibleWebProfile"/>
|
||||
</menu_item_call>
|
||||
<menu_item_call label="Pay" name="Pay">
|
||||
<on_click function="List.Pay"/>
|
||||
<on_enable function="List.EnableSingleSelected"/>
|
||||
</menu_item_call>
|
||||
<menu_item_call label="Instant Message" name="Instant Message">
|
||||
<on_click function="List.StartIM"/>
|
||||
<on_visible function="List.EnableSingleSelected"/>
|
||||
</menu_item_call>
|
||||
<menu_item_call label="Conference Chat" name="Conference Chat">
|
||||
<on_click function="List.StartConference"/>
|
||||
<on_visible function="List.EnableMultipleSelected"/>
|
||||
</menu_item_call>
|
||||
<menu_item_call label="Call" name="Call">
|
||||
<on_click function="List.StartCall"/>
|
||||
<on_enable function="List.EnableCall"/>
|
||||
<on_visible function="List.EnableSingleSelected"/>
|
||||
</menu_item_call>
|
||||
<menu_item_call label="Conference Call" name="Conference Call">
|
||||
<on_click function="List.StartAdhocCall"/>
|
||||
<on_enable function="List.EnableCall"/>
|
||||
<on_visible function="List.EnableMultipleSelected"/>
|
||||
</menu_item_call>
|
||||
<menu_item_call label="Add Friend" name="Add Friend">
|
||||
<on_click function="List.RequestFriendship"/>
|
||||
<on_enable function="List.EnableSingleSelected"/>
|
||||
<on_visible function="List.EnableIsNotFriend"/>
|
||||
</menu_item_call>
|
||||
<menu_item_call label="Remove Friend" name="Remove Friend">
|
||||
<on_click function="List.RemoveFriend"/>
|
||||
<on_enable function="List.EnableSingleSelected"/>
|
||||
<on_visible function="List.EnableIsFriend"/>
|
||||
</menu_item_call>
|
||||
<menu_item_call label="Invite To Group" name="Invite To Group">
|
||||
<on_click function="List.InviteToGroup"/>
|
||||
<on_visible function="List.EnableAnySelected"/>
|
||||
</menu_item_call>
|
||||
<menu_item_call label="Offer Teleport" name="Offer Teleport">
|
||||
<on_click function="List.OfferTeleport"/>
|
||||
<on_enable function="List.EnableAnySelected"/>
|
||||
</menu_item_call>
|
||||
<menu_item_call label="Teleport To" name="Teleport To">
|
||||
<on_click function="Radar.TeleportTo"/>
|
||||
<on_enable function="List.EnableSingleSelected"/>
|
||||
<on_visible function="List.IsNearby"/>
|
||||
</menu_item_call>
|
||||
<menu_item_call label="Request Teleport" name="Request Teleport">
|
||||
<on_click function="List.RequestTeleport"/>
|
||||
<on_visible function="List.EnableSingleSelected"/>
|
||||
</menu_item_call>
|
||||
<menu_item_call label="Share" name="Share">
|
||||
<on_click function="List.Share"/>
|
||||
<on_visible function="List.EnableSingleSelected"/>
|
||||
</menu_item_call>
|
||||
<menu_item_call label="Chat History" name="Chat History">
|
||||
<on_click function="List.ShowLog"/>
|
||||
<on_enable function="List.EnableAnySelected"/>
|
||||
</menu_item_call>
|
||||
<menu_item_call label="Track/Untrack" name="Track/Untrack">
|
||||
<on_click function="List.Track"/>
|
||||
<on_enable function="List.EnableSingleSelected"/>
|
||||
<on_visible function="List.IsNearby"/>
|
||||
</menu_item_call>
|
||||
<menu_item_separator/>
|
||||
<menu_item_call label="Copy Key" name="Copy Key">
|
||||
<on_click function="List.CopyUUIDs"/>
|
||||
<on_enable function="List.EnableAnySelected"/>
|
||||
</menu_item_call>
|
||||
<menu_item_call label="Copy SLURL" name="Copy SLURL">
|
||||
<on_click function="List.CopySLURL"/>
|
||||
<on_visible function="List.EnableSingleSelected"/>
|
||||
</menu_item_call>
|
||||
</menu>
|
||||
<menu_item_call label="Focus" name="Focus">
|
||||
<on_click function="Radar.Focus"/>
|
||||
<on_enable function="List.EnableSingleSelected"/>
|
||||
<on_visible function="List.IsNearby"/>
|
||||
</menu_item_call>
|
||||
<menu_item_call label="Instant Message" name="Instant Message">
|
||||
<on_click function="List.StartIM"/>
|
||||
<on_visible function="List.EnableSingleSelected"/>
|
||||
</menu_item_call>
|
||||
<menu_item_call label="Conference Chat" name="Conference Chat">
|
||||
<on_click function="List.StartConference"/>
|
||||
<on_visible function="List.EnableMultipleSelected"/>
|
||||
</menu_item_call>
|
||||
<menu_item_call label="Call" name="Call">
|
||||
<on_click function="List.StartCall"/>
|
||||
<on_enable function="List.EnableCall"/>
|
||||
<on_visible function="List.EnableSingleSelected"/>
|
||||
</menu_item_call>
|
||||
<menu_item_call label="Conference Call" name="Conference Call">
|
||||
<on_click function="List.StartAdhocCall"/>
|
||||
<on_enable function="List.EnableCall"/>
|
||||
<on_visible function="List.EnableMultipleSelected"/>
|
||||
</menu_item_call>
|
||||
<menu_item_call label="Add Friend" name="Add Friend">
|
||||
<on_click function="List.RequestFriendship"/>
|
||||
<on_enable function="List.EnableSingleSelected"/>
|
||||
<on_visible function="List.EnableIsNotFriend"/>
|
||||
</menu_item_call>
|
||||
<menu_item_call label="Remove Friend" name="Remove Friend">
|
||||
<on_click function="List.RemoveFriend"/>
|
||||
<on_enable function="List.EnableSingleSelected"/>
|
||||
<on_visible function="List.EnableIsFriend"/>
|
||||
</menu_item_call>
|
||||
<menu_item_call label="Invite To Group" name="Invite To Group">
|
||||
<on_click function="List.InviteToGroup"/>
|
||||
<on_visible function="List.EnableAnySelected"/>
|
||||
</menu_item_call>
|
||||
<menu_item_call label="Ban From Group" name="Ban From Group">
|
||||
<on_click function="List.BanFromGroup"/>
|
||||
<on_visible function="List.EnableAnySelected"/>
|
||||
</menu_item_call>
|
||||
<menu_item_call label="Offer Teleport" name="Offer Teleport">
|
||||
<on_click function="List.OfferTeleport"/>
|
||||
<on_enable function="List.EnableAnySelected"/>
|
||||
</menu_item_call>
|
||||
<menu_item_call label="Request Teleport" name="Request Teleport">
|
||||
<on_click function="List.RequestTeleport"/>
|
||||
<on_visible function="List.EnableSingleSelected"/>
|
||||
</menu_item_call>
|
||||
<menu_item_call label="Share" name="Share">
|
||||
<on_click function="List.Share"/>
|
||||
<on_visible function="List.EnableSingleSelected"/>
|
||||
</menu_item_call>
|
||||
<menu_item_call label="Chat History" name="Chat History">
|
||||
<on_click function="List.ShowLog"/>
|
||||
<on_enable function="List.EnableAnySelected"/>
|
||||
</menu_item_call>
|
||||
<menu_item_separator/>
|
||||
<menu_item_call label="Mute/Unmute" name="Mute/Unmute">
|
||||
<on_click function="List.ToggleMute"/>
|
||||
<on_enable function="List.EnableMute"/>
|
||||
<on_visible function="List.EnableAnySelected"/>
|
||||
</menu_item_call>
|
||||
<menu_item_call label="Report Abuse" name="Report Abuse">
|
||||
<on_click function="List.AbuseReport"/>
|
||||
<on_visible function="List.EnableSingleSelected"/>
|
||||
</menu_item_call>
|
||||
<menu_item_call label="Copy Key" name="Copy Key">
|
||||
<on_click function="List.CopyUUIDs"/>
|
||||
<on_enable function="List.EnableAnySelected"/>
|
||||
</menu_item_call>
|
||||
<menu_item_call label="Copy SLURL" name="Copy SLURL">
|
||||
<on_click function="List.CopySLURL"/>
|
||||
<on_visible function="List.EnableSingleSelected"/>
|
||||
</menu_item_call>
|
||||
<menu label="Moderation" name="Moderation" create_jump_keys="true">
|
||||
<menu_item_call label="Mute/Unmute" name="Mute/Unmute">
|
||||
<on_click function="List.ToggleMute"/>
|
||||
<on_enable function="List.EnableMute"/>
|
||||
<on_visible function="List.EnableAnySelected"/>
|
||||
</menu_item_call>
|
||||
<menu_item_call label="Ban From Group" name="Ban From Group">
|
||||
<on_click function="List.BanFromGroup"/>
|
||||
<on_visible function="List.EnableAnySelected"/>
|
||||
</menu_item_call>
|
||||
<menu_item_call label="Report Abuse" name="Report Abuse">
|
||||
<on_click function="List.AbuseReport"/>
|
||||
<on_visible function="List.EnableSingleSelected"/>
|
||||
</menu_item_call>
|
||||
<menu_item_separator/>
|
||||
<menu_item_call label="Freeze" name="Freeze">
|
||||
<on_click function="List.Freeze"/>
|
||||
<on_visible function="List.IsNearby"/>
|
||||
</menu_item_call>
|
||||
<menu_item_call label="Eject/Ban from Parcel" name="Eject/Ban from Parcel">
|
||||
<on_click function="List.ParcelEject"/>
|
||||
<on_visible function="List.IsNearby"/>
|
||||
</menu_item_call>
|
||||
<menu_item_call label="Eject from estate" name="Eject from estate">
|
||||
<on_click function="List.EstateEject"/>
|
||||
<on_visible function="List.IsNearby"/>
|
||||
</menu_item_call>
|
||||
<menu_item_call label="Eject and ban from estate" name="Eject and ban from estate">
|
||||
<on_click function="List.EstateBan"/>
|
||||
<on_visible function="List.IsNearby"/>
|
||||
</menu_item_call>
|
||||
</menu>
|
||||
</menu>
|
||||
|
||||
@@ -1,10 +1,10 @@
|
||||
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
|
||||
<menu name="Local Avs Menu" create_jump_keys="true">
|
||||
<menu_item_call label="Profile" name="Profile">
|
||||
<on_click function="List.ShowProfile"/>
|
||||
<on_enable function="List.EnableAnySelected"/>
|
||||
</menu_item_call>
|
||||
<menu label="Avatar" name="Avatar" create_jump_keys="true">
|
||||
<menu_item_call label="Profile" name="Profile">
|
||||
<on_click function="List.ShowProfile"/>
|
||||
<on_enable function="List.EnableAnySelected"/>
|
||||
</menu_item_call>
|
||||
<menu_item_call label="Web Profile" name="Web Profile">
|
||||
<on_click function="List.ShowWebProfile"/>
|
||||
<on_visible function="List.VisibleWebProfile"/>
|
||||
@@ -49,7 +49,7 @@
|
||||
<on_click function="List.OfferTeleport"/>
|
||||
<on_enable function="List.EnableAnySelected"/>
|
||||
</menu_item_call>
|
||||
<menu_item_call label="Teleport To" name="Teleport To" shortcut="control|Enter">
|
||||
<menu_item_call label="Teleport To" name="Teleport To">
|
||||
<on_click function="Radar.TeleportTo"/>
|
||||
<on_enable function="List.EnableSingleSelected"/>
|
||||
</menu_item_call>
|
||||
@@ -66,9 +66,10 @@
|
||||
<on_enable function="List.EnableAnySelected"/>
|
||||
</menu_item_call>
|
||||
<menu_item_call label="Track/Untrack" name="Track/Untrack">
|
||||
<on_click function="Radar.Track"/>
|
||||
<on_click function="List.Track"/>
|
||||
<on_enable function="List.EnableSingleSelected"/>
|
||||
</menu_item_call>
|
||||
<menu_item_separator/>
|
||||
<menu_item_call label="Copy Key" name="Copy Key">
|
||||
<on_click function="List.CopyUUIDs"/>
|
||||
<on_enable function="List.EnableAnySelected"/>
|
||||
|
||||
@@ -2,20 +2,25 @@
|
||||
<context_menu
|
||||
layout="topleft"
|
||||
label="User"
|
||||
name="Url Popup">
|
||||
<menu_item_call
|
||||
label="View Profile"
|
||||
layout="topleft"
|
||||
name="show_agent">
|
||||
<menu_item_call.on_click
|
||||
function="Text.Url" userdata="ShowProfile" />
|
||||
name="Url Popup">
|
||||
<menu_item_call label="Send IM..." name="send_im">
|
||||
<on_click function="Text.Url" userdata="SendIM" />
|
||||
</menu_item_call>
|
||||
<menu name="Actions" label="Actions">
|
||||
<menu_item_call label="Profile" name="show_agent">
|
||||
<on_click function="Text.Url" userdata="ShowProfile" />
|
||||
</menu_item_call>
|
||||
<menu_item_call
|
||||
label="Send IM..."
|
||||
layout="topleft"
|
||||
name="send_im">
|
||||
<menu_item_call.on_click
|
||||
function="Text.Url" userdata="SendIM" />
|
||||
<menu_item_call label="Web Profile" name="Web Profile">
|
||||
<on_click function="Text.Url.Ext" userdata="ShowWebProfile"/>
|
||||
<on_visible function="Text.Url.ExtVisible" userdata="ShowWebProfile"/>
|
||||
</menu_item_call>
|
||||
<menu_item_call label="Pay" name="Pay">
|
||||
<on_click function="Text.Url.Ext" userdata="Pay"/>
|
||||
<on_visible function="Text.Url.ExtVisible" userdata="Pay"/>
|
||||
</menu_item_call>
|
||||
<menu_item_call label="Call" name="Call">
|
||||
<on_click function="Text.Url.Ext" userdata="Call"/>
|
||||
<on_visible function="Text.Url.ExtVisible" userdata="Call"/>
|
||||
</menu_item_call>
|
||||
<menu_item_call
|
||||
label="Add Friend..."
|
||||
@@ -31,26 +36,94 @@
|
||||
<menu_item_call.on_click
|
||||
function="Text.Url" userdata="RemoveFriend" />
|
||||
</menu_item_call>
|
||||
<menu_item_separator
|
||||
layout="topleft" />
|
||||
<menu_item_call
|
||||
label="Copy Name to clipboard"
|
||||
layout="topleft"
|
||||
name="url_copy_label">
|
||||
<menu_item_call.on_click
|
||||
function="Text.Url" userdata="CopyLabel" />
|
||||
<menu_item_call label="Invite To Group" name="Invite To Group">
|
||||
<on_click function="Text.Url.Ext" userdata="InviteToGroup"/>
|
||||
<on_visible function="Text.Url.ExtVisible" userdata="InviteToGroup"/>
|
||||
</menu_item_call>
|
||||
<menu_item_call
|
||||
label="Copy SLURL to clipboard"
|
||||
layout="topleft"
|
||||
name="url_copy">
|
||||
<menu_item_call.on_click
|
||||
function="Text.Url" userdata="CopyUrl" />
|
||||
<menu_item_call label="Offer Teleport" name="Offer Teleport">
|
||||
<on_click function="Text.Url.Ext" userdata="OfferTeleport"/>
|
||||
<on_visible function="Text.Url.ExtVisible" userdata="OfferTeleport"/>
|
||||
</menu_item_call>
|
||||
<menu_item_call label="Teleport To" name="Teleport To">
|
||||
<on_click function="Text.Url.Ext" userdata="TeleportTo"/>
|
||||
<on_visible function="Text.Url.ExtVisible" userdata="TeleportTo"/>
|
||||
</menu_item_call>
|
||||
<menu_item_call label="Request Teleport" name="Request Teleport">
|
||||
<on_click function="Text.Url.Ext" userdata="RequestTeleport"/>
|
||||
<on_visible function="Text.Url.ExtVisible" userdata="RequestTeleport"/>
|
||||
</menu_item_call>
|
||||
<menu_item_call label="Share" name="Share">
|
||||
<on_click function="Text.Url.Ext" userdata="Share"/>
|
||||
<on_visible function="Text.Url.ExtVisible" userdata="Share"/>
|
||||
</menu_item_call>
|
||||
<menu_item_call label="Chat History" name="Chat History">
|
||||
<on_click function="Text.Url.Ext" userdata="ShowLog"/>
|
||||
<on_visible function="Text.Url.ExtVisible" userdata="ShowLog"/>
|
||||
</menu_item_call>
|
||||
<menu_item_call label="Track/Untrack" name="Track/Untrack">
|
||||
<on_click function="Text.Url.Ext" userdata="Track"/>
|
||||
<on_visible function="Text.Url.ExtVisible" userdata="Track"/>
|
||||
</menu_item_call>
|
||||
<menu_item_call label="Focus" name="Focus">
|
||||
<on_click function="Text.Url.Ext" userdata="Focus"/>
|
||||
<on_visible function="Text.Url.ExtVisible" userdata="Focus"/>
|
||||
</menu_item_call>
|
||||
</menu>
|
||||
<menu_item_separator
|
||||
layout="topleft" />
|
||||
<menu_item_call
|
||||
label="Copy Name to clipboard"
|
||||
layout="topleft"
|
||||
name="url_copy_label">
|
||||
<menu_item_call.on_click
|
||||
function="Text.Url" userdata="CopyLabel" />
|
||||
</menu_item_call>
|
||||
<menu_item_call
|
||||
label="Copy SLURL to clipboard"
|
||||
layout="topleft"
|
||||
name="url_copy">
|
||||
<menu_item_call.on_click
|
||||
function="Text.Url" userdata="CopyUrl" />
|
||||
</menu_item_call>
|
||||
<menu_item_call label="Copy Key to clipboard" name="key_copy">
|
||||
<menu_item_call.on_click function="Text.Url.CopyUUID" />
|
||||
</menu_item_call>
|
||||
<menu_item_call label="Select All" name="Select All">
|
||||
<on_click function="Text" userdata="SelectAll"/>
|
||||
</menu_item_call>
|
||||
<menu label="Moderation" name="Moderation" create_jump_keys="true">
|
||||
<menu_item_call label="Mute" name="Mute">
|
||||
<on_click function="Text.Url.Ext" userdata="Mute"/>
|
||||
<on_visible function="Text.Url.ExtVisible" userdata="Mute"/>
|
||||
</menu_item_call>
|
||||
<menu_item_call label="Unmute" name="Unmute">
|
||||
<on_click function="Text.Url.Ext" userdata="Unmute"/>
|
||||
<on_visible function="Text.Url.ExtVisible" userdata="Unmute"/>
|
||||
</menu_item_call>
|
||||
<menu_item_call label="Ban From Group" name="Ban From Group">
|
||||
<on_click function="Text.Url.Ext" userdata="BanFromGroup"/>
|
||||
<on_visible function="Text.Url.ExtVisible" userdata="BanFromGroup"/>
|
||||
</menu_item_call>
|
||||
<menu_item_call label="Report Abuse" name="Report Abuse">
|
||||
<on_click function="Text.Url.Ext" userdata="AbuseReport"/>
|
||||
<on_visible function="Text.Url.ExtVisible" userdata="AbuseReport"/>
|
||||
</menu_item_call>
|
||||
<menu_item_separator/>
|
||||
<menu_item_call label="Freeze" name="Freeze">
|
||||
<on_click function="Text.Url.Ext" userdata="Freeze"/>
|
||||
<on_visible function="Text.Url.ExtVisible" userdata="Freeze"/>
|
||||
</menu_item_call>
|
||||
<menu_item_call label="Eject/Ban from Parcel" name="Eject/Ban from Parcel">
|
||||
<on_click function="Text.Url.Ext" userdata="ParcelEject"/>
|
||||
<on_visible function="Text.Url.ExtVisible" userdata="ParcelEject"/>
|
||||
</menu_item_call>
|
||||
<menu_item_call label="Eject from estate" name="Eject from estate">
|
||||
<on_click function="Text.Url.Ext" userdata="EstateEject"/>
|
||||
<on_visible function="Text.Url.ExtVisible" userdata="EstateEject"/>
|
||||
</menu_item_call>
|
||||
<menu_item_call label="Eject and ban from estate" name="Eject and ban from estate">
|
||||
<on_click function="Text.Url.Ext" userdata="EstateBan"/>
|
||||
<on_visible function="Text.Url.ExtVisible" userdata="EstateBan"/>
|
||||
</menu_item_call>
|
||||
</menu>
|
||||
</context_menu>
|
||||
|
||||
@@ -1,15 +1,74 @@
|
||||
<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
|
||||
<context_menu
|
||||
layout="topleft"
|
||||
label="User"
|
||||
name="Url Mini Popup">
|
||||
<menu_item_call
|
||||
label="View Profile"
|
||||
layout="topleft"
|
||||
name="show_agent">
|
||||
<menu_item_call.on_click
|
||||
function="Text.Url" userdata="ShowProfile" />
|
||||
layout="topleft"
|
||||
label="User"
|
||||
name="Url Mini Popup">
|
||||
<menu_item_call label="Send IM..." name="send_im">
|
||||
<on_click function="Text.Url" userdata="SendIM" />
|
||||
</menu_item_call>
|
||||
<menu name="Actions" label="Actions">
|
||||
<menu_item_call label="Profile" name="show_agent">
|
||||
<on_click function="Text.Url" userdata="ShowProfile" />
|
||||
</menu_item_call>
|
||||
<menu_item_call label="Web Profile" name="Web Profile">
|
||||
<on_click function="Text.Url.Ext" userdata="ShowWebProfile"/>
|
||||
<on_visible function="Text.Url.ExtVisible" userdata="ShowWebProfile"/>
|
||||
</menu_item_call>
|
||||
<menu_item_call label="Pay" name="Pay">
|
||||
<on_click function="Text.Url.Ext" userdata="Pay"/>
|
||||
<on_visible function="Text.Url.ExtVisible" userdata="Pay"/>
|
||||
</menu_item_call>
|
||||
<menu_item_call label="Call" name="Call">
|
||||
<on_click function="Text.Url.Ext" userdata="Call"/>
|
||||
<on_visible function="Text.Url.ExtVisible" userdata="Call"/>
|
||||
</menu_item_call>
|
||||
<menu_item_call
|
||||
label="Add Friend..."
|
||||
layout="topleft"
|
||||
name="add_friend">
|
||||
<menu_item_call.on_click
|
||||
function="Text.Url" userdata="AddFriend" />
|
||||
</menu_item_call>
|
||||
<menu_item_call
|
||||
label="Remove Friend..."
|
||||
layout="topleft"
|
||||
name="remove_friend">
|
||||
<menu_item_call.on_click
|
||||
function="Text.Url" userdata="RemoveFriend" />
|
||||
</menu_item_call>
|
||||
<menu_item_call label="Invite To Group" name="Invite To Group">
|
||||
<on_click function="Text.Url.Ext" userdata="InviteToGroup"/>
|
||||
<on_visible function="Text.Url.ExtVisible" userdata="InviteToGroup"/>
|
||||
</menu_item_call>
|
||||
<menu_item_call label="Offer Teleport" name="Offer Teleport">
|
||||
<on_click function="Text.Url.Ext" userdata="OfferTeleport"/>
|
||||
<on_visible function="Text.Url.ExtVisible" userdata="OfferTeleport"/>
|
||||
</menu_item_call>
|
||||
<menu_item_call label="Teleport To" name="Teleport To">
|
||||
<on_click function="Text.Url.Ext" userdata="TeleportTo"/>
|
||||
<on_visible function="Text.Url.ExtVisible" userdata="TeleportTo"/>
|
||||
</menu_item_call>
|
||||
<menu_item_call label="Request Teleport" name="Request Teleport">
|
||||
<on_click function="Text.Url.Ext" userdata="RequestTeleport"/>
|
||||
<on_visible function="Text.Url.ExtVisible" userdata="RequestTeleport"/>
|
||||
</menu_item_call>
|
||||
<menu_item_call label="Share" name="Share">
|
||||
<on_click function="Text.Url.Ext" userdata="Share"/>
|
||||
<on_visible function="Text.Url.ExtVisible" userdata="Share"/>
|
||||
</menu_item_call>
|
||||
<menu_item_call label="Chat History" name="Chat History">
|
||||
<on_click function="Text.Url.Ext" userdata="ShowLog"/>
|
||||
<on_visible function="Text.Url.ExtVisible" userdata="ShowLog"/>
|
||||
</menu_item_call>
|
||||
<menu_item_call label="Track/Untrack" name="Track/Untrack">
|
||||
<on_click function="Text.Url.Ext" userdata="Track"/>
|
||||
<on_visible function="Text.Url.ExtVisible" userdata="Track"/>
|
||||
</menu_item_call>
|
||||
<menu_item_call label="Focus" name="Focus">
|
||||
<on_click function="Text.Url.Ext" userdata="Focus"/>
|
||||
<on_visible function="Text.Url.ExtVisible" userdata="Focus"/>
|
||||
</menu_item_call>
|
||||
</menu>
|
||||
<menu_item_separator
|
||||
layout="topleft" />
|
||||
<menu_item_call
|
||||
@@ -32,4 +91,39 @@
|
||||
<menu_item_call label="Select All" name="Select All">
|
||||
<on_click function="Text" userdata="SelectAll"/>
|
||||
</menu_item_call>
|
||||
<menu label="Moderation" name="Moderation" create_jump_keys="true">
|
||||
<menu_item_call label="Mute" name="Mute">
|
||||
<on_click function="Text.Url.Ext" userdata="Mute"/>
|
||||
<on_visible function="Text.Url.ExtVisible" userdata="Mute"/>
|
||||
</menu_item_call>
|
||||
<menu_item_call label="Unmute" name="Unmute">
|
||||
<on_click function="Text.Url.Ext" userdata="Unmute"/>
|
||||
<on_visible function="Text.Url.ExtVisible" userdata="Unmute"/>
|
||||
</menu_item_call>
|
||||
<menu_item_call label="Ban From Group" name="Ban From Group">
|
||||
<on_click function="Text.Url.Ext" userdata="BanFromGroup"/>
|
||||
<on_visible function="Text.Url.ExtVisible" userdata="BanFromGroup"/>
|
||||
</menu_item_call>
|
||||
<menu_item_call label="Report Abuse" name="Report Abuse">
|
||||
<on_click function="Text.Url.Ext" userdata="AbuseReport"/>
|
||||
<on_visible function="Text.Url.ExtVisible" userdata="AbuseReport"/>
|
||||
</menu_item_call>
|
||||
<menu_item_separator/>
|
||||
<menu_item_call label="Freeze" name="Freeze">
|
||||
<on_click function="Text.Url.Ext" userdata="Freeze"/>
|
||||
<on_visible function="Text.Url.ExtVisible" userdata="Freeze"/>
|
||||
</menu_item_call>
|
||||
<menu_item_call label="Eject/Ban from Parcel" name="Eject/Ban from Parcel">
|
||||
<on_click function="Text.Url.Ext" userdata="ParcelEject"/>
|
||||
<on_visible function="Text.Url.ExtVisible" userdata="ParcelEject"/>
|
||||
</menu_item_call>
|
||||
<menu_item_call label="Eject from estate" name="Eject from estate">
|
||||
<on_click function="Text.Url.Ext" userdata="EstateEject"/>
|
||||
<on_visible function="Text.Url.ExtVisible" userdata="EstateEject"/>
|
||||
</menu_item_call>
|
||||
<menu_item_call label="Eject and ban from estate" name="Eject and ban from estate">
|
||||
<on_click function="Text.Url.Ext" userdata="EstateBan"/>
|
||||
<on_visible function="Text.Url.ExtVisible" userdata="EstateBan"/>
|
||||
</menu_item_call>
|
||||
</menu>
|
||||
</context_menu>
|
||||
|
||||
@@ -9,11 +9,11 @@
|
||||
</combo_box>
|
||||
</layout_panel>
|
||||
<layout_panel auto_resize="true" bottom="0" can_resize="false" height="120" min_height="100" name="moderate_chat_panel" top_delta="0" user_resize="false" visible="true" width="140">
|
||||
<scroll_list bottom="78" can_resize="false" column_padding="0" draw_heading="true" draw_stripes="false" follows="left|top|bottom|right" left="0" multi_select="true" name="speakers_list" right="140" search_column="1" sort_column="2" top="113">
|
||||
<name_list bottom="78" can_resize="false" column_padding="0" draw_heading="true" draw_stripes="false" follows="left|top|bottom|right" left="0" multi_select="true" name="speakers_list" right="140" search_column="1" sort_column="2" top="113">
|
||||
<column name="icon_speaking_status" sort="speaking_status" width="20"/>
|
||||
<column dynamicwidth="true" label="Name" name="speaker_name"/>
|
||||
<column label="" name="speaking_status" width="0"/>
|
||||
</scroll_list>
|
||||
</name_list>
|
||||
<panel border="false" bottom="0" can_resize="false" follows="left|bottom|right" height="77" left="0" name="speaker_controls" width="140">
|
||||
<button bottom="-28" enabled="false" follows="left|top" height="20" image_overlay="icon_avatar_offline.tga" label="" left="4" name="profile_btn" right="34" scale_image="true"/>
|
||||
<text bottom_delta="9" follows="left|top|right" left_delta="34" name="resident_name" valign="center" width="140">Rumplstiltskin Califragilistic</text>
|
||||
|
||||
Reference in New Issue
Block a user