Compare commits
24 Commits
sv-1.8.7.8
...
sv-1.8.7.8
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
544feee19f | ||
|
|
bee60da089 | ||
|
|
c466b44143 | ||
|
|
27222d524c | ||
|
|
b99e2cbbdd | ||
|
|
a5bdc24a14 | ||
|
|
0b6d94f202 | ||
|
|
bf5035388b | ||
|
|
640c136bcc | ||
|
|
6ebd2eef00 | ||
|
|
c954d02125 | ||
|
|
a34414849c | ||
|
|
c1ffb1b332 | ||
|
|
d06448cdfd | ||
|
|
117ef68916 | ||
|
|
83b384ab97 | ||
|
|
5ee5ba473b | ||
|
|
4055af4afd | ||
|
|
65dad7acfd | ||
|
|
a21927e510 | ||
|
|
094c948a87 | ||
|
|
31003f13af | ||
|
|
c1f39e167c | ||
|
|
0e28436aa9 |
@@ -375,7 +375,7 @@ LLTextEditor::~LLTextEditor()
|
|||||||
const std::string& LLTextEditor::getMenuSegmentUrl() const
|
const std::string& LLTextEditor::getMenuSegmentUrl() const
|
||||||
{
|
{
|
||||||
auto segment = getSegmentAtLocalPos(mLastContextMenuX, mLastContextMenuY);
|
auto segment = getSegmentAtLocalPos(mLastContextMenuX, mLastContextMenuY);
|
||||||
auto style = segment->getStyle();
|
auto style = segment ? segment->getStyle() : nullptr;
|
||||||
return style ? style->getLinkHREF() : LLStringUtil::null;
|
return style ? style->getLinkHREF() : LLStringUtil::null;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -80,13 +80,21 @@ BOOL JCFloaterAreaSearch::postBuild()
|
|||||||
mResultList = getChild<LLScrollListCtrl>("result_list");
|
mResultList = getChild<LLScrollListCtrl>("result_list");
|
||||||
mResultList->setDoubleClickCallback(boost::bind(&JCFloaterAreaSearch::onDoubleClick,this));
|
mResultList->setDoubleClickCallback(boost::bind(&JCFloaterAreaSearch::onDoubleClick,this));
|
||||||
mResultList->sortByColumn("Name", TRUE);
|
mResultList->sortByColumn("Name", TRUE);
|
||||||
|
auto tp = getChild<LLButton>("TP");
|
||||||
|
auto look = getChild<LLButton>("Look");
|
||||||
|
mResultList->setCommitOnSelectionChange(true);
|
||||||
|
mResultList->setCommitCallback([=](LLUICtrl* ctrl, const LLSD& param){
|
||||||
|
bool enabled = mResultList->getNumSelected() == 1;
|
||||||
|
tp->setEnabled(enabled);
|
||||||
|
look->setEnabled(enabled);
|
||||||
|
});
|
||||||
|
|
||||||
mCounterText = getChild<LLTextBox>("counter");
|
mCounterText = getChild<LLTextBox>("counter");
|
||||||
|
|
||||||
getChild<LLButton>("Refresh")->setClickedCallback(boost::bind(&JCFloaterAreaSearch::onRefresh,this));
|
getChild<LLButton>("Refresh")->setClickedCallback(boost::bind(&JCFloaterAreaSearch::onRefresh,this));
|
||||||
getChild<LLButton>("Stop")->setClickedCallback(boost::bind(&JCFloaterAreaSearch::onStop,this));
|
getChild<LLButton>("Stop")->setClickedCallback(boost::bind(&JCFloaterAreaSearch::onStop,this));
|
||||||
getChild<LLButton>("TP")->setClickedCallback(boost::bind(&JCFloaterAreaSearch::teleportToSelected, this));
|
tp->setClickedCallback(boost::bind(&JCFloaterAreaSearch::teleportToSelected, this));
|
||||||
getChild<LLButton>("Look")->setClickedCallback(boost::bind(&JCFloaterAreaSearch::lookAtSelected, this));
|
look->setClickedCallback(boost::bind(&JCFloaterAreaSearch::lookAtSelected, this));
|
||||||
|
|
||||||
getChild<LLFilterEditor>("Name query chunk")->setCommitCallback(boost::bind(&JCFloaterAreaSearch::onCommitLine,this,_1,_2,LIST_OBJECT_NAME));
|
getChild<LLFilterEditor>("Name query chunk")->setCommitCallback(boost::bind(&JCFloaterAreaSearch::onCommitLine,this,_1,_2,LIST_OBJECT_NAME));
|
||||||
getChild<LLFilterEditor>("Description query chunk")->setCommitCallback(boost::bind(&JCFloaterAreaSearch::onCommitLine,this,_1,_2,LIST_OBJECT_DESC));
|
getChild<LLFilterEditor>("Description query chunk")->setCommitCallback(boost::bind(&JCFloaterAreaSearch::onCommitLine,this,_1,_2,LIST_OBJECT_DESC));
|
||||||
|
|||||||
@@ -56,6 +56,20 @@ public:
|
|||||||
|
|
||||||
void results();
|
void results();
|
||||||
static void processObjectPropertiesFamily(LLMessageSystem* msg, void** user_data);
|
static void processObjectPropertiesFamily(LLMessageSystem* msg, void** user_data);
|
||||||
|
struct ObjectData
|
||||||
|
{
|
||||||
|
LLUUID id;
|
||||||
|
std::string name;
|
||||||
|
std::string desc;
|
||||||
|
LLUUID owner_id;
|
||||||
|
LLUUID group_id;
|
||||||
|
};
|
||||||
|
|
||||||
|
const ObjectData* getObjectData(const LLUUID& id) const
|
||||||
|
{
|
||||||
|
const auto& it = mCachedObjects.find(id);
|
||||||
|
return it != mCachedObjects.end() ? &it->second : nullptr;
|
||||||
|
}
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
|
||||||
@@ -84,14 +98,6 @@ private:
|
|||||||
LLViewerRegion* mLastRegion;
|
LLViewerRegion* mLastRegion;
|
||||||
bool mStopped;
|
bool mStopped;
|
||||||
|
|
||||||
struct ObjectData
|
|
||||||
{
|
|
||||||
LLUUID id;
|
|
||||||
std::string name;
|
|
||||||
std::string desc;
|
|
||||||
LLUUID owner_id;
|
|
||||||
LLUUID group_id;
|
|
||||||
};
|
|
||||||
uuid_set_t mPendingObjects;
|
uuid_set_t mPendingObjects;
|
||||||
boost::unordered_map<LLUUID, ObjectData> mCachedObjects;
|
boost::unordered_map<LLUUID, ObjectData> mCachedObjects;
|
||||||
|
|
||||||
|
|||||||
@@ -1613,12 +1613,14 @@ void LLAgent::startAutoPilotGlobal(
|
|||||||
mAutoPilotFlyOnStop = FALSE;
|
mAutoPilotFlyOnStop = FALSE;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (distance > 30.0 && mAutoPilotAllowFlying)
|
bool follow = mAutoPilotBehaviorName == "Follow";
|
||||||
|
|
||||||
|
if (!follow && distance > 30.0 && mAutoPilotAllowFlying)
|
||||||
{
|
{
|
||||||
setFlying(TRUE);
|
setFlying(TRUE);
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( distance > 1.f &&
|
if (!follow && distance > 1.f &&
|
||||||
mAutoPilotAllowFlying &&
|
mAutoPilotAllowFlying &&
|
||||||
heightDelta > (sqrtf(mAutoPilotStopDistance) + 1.f))
|
heightDelta > (sqrtf(mAutoPilotStopDistance) + 1.f))
|
||||||
{
|
{
|
||||||
@@ -1757,16 +1759,25 @@ void LLAgent::autoPilot(F32 *delta_yaw)
|
|||||||
bool follow = !mLeaderID.isNull(); //mAutoPilotBehaviorName == "Follow";
|
bool follow = !mLeaderID.isNull(); //mAutoPilotBehaviorName == "Follow";
|
||||||
if (follow)
|
if (follow)
|
||||||
{
|
{
|
||||||
LLViewerObject* object = gObjectList.findObject(mLeaderID);
|
if (auto object = gObjectList.findObject(mLeaderID))
|
||||||
if (!object)
|
|
||||||
{
|
{
|
||||||
mAutoPilotBehaviorName.clear(); // Nothing left to follow pilot
|
mAutoPilotTargetGlobal = object->getPositionGlobal();
|
||||||
stopAutoPilot();
|
if (const auto& av = object->asAvatar()) // Fly if avatar target is flying
|
||||||
return;
|
setFlying(av->mInAir);
|
||||||
|
}
|
||||||
|
else // We might still have a valid avatar pos
|
||||||
|
{
|
||||||
|
const LLVector3d& get_av_pos(const LLUUID & id);
|
||||||
|
auto pos = get_av_pos(mLeaderID);
|
||||||
|
if (pos.isExactlyZero()) // Default constructed or invalid from server
|
||||||
|
{
|
||||||
|
mAutoPilotBehaviorName.clear(); // Nothing left to follow pilot
|
||||||
|
stopAutoPilot();
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
mAutoPilotTargetGlobal = pos;
|
||||||
|
// Should we fly if the height difference is great enough here? Altitude is often invalid...
|
||||||
}
|
}
|
||||||
mAutoPilotTargetGlobal = object->getPositionGlobal();
|
|
||||||
if (const auto& av = object->asAvatar()) // Fly if avatar target is flying
|
|
||||||
setFlying(av->mInAir);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!isAgentAvatarValid()) return;
|
if (!isAgentAvatarValid()) return;
|
||||||
|
|||||||
@@ -293,19 +293,19 @@ bool LLCommandLineParser::parseAndStoreResults(po::command_line_parser& clp)
|
|||||||
po::basic_parsed_options<char> opts = clp.run();
|
po::basic_parsed_options<char> opts = clp.run();
|
||||||
po::store(opts, gVariableMap);
|
po::store(opts, gVariableMap);
|
||||||
}
|
}
|
||||||
catch(po::error& e)
|
catch (const po::error& e)
|
||||||
{
|
{
|
||||||
LL_WARNS() << "Caught Error:" << e.what() << LL_ENDL;
|
LL_WARNS() << "Caught Error:" << e.what() << LL_ENDL;
|
||||||
mErrorMsg = e.what();
|
mErrorMsg = e.what();
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
catch(LLCLPError& e)
|
catch (const LLCLPError& e)
|
||||||
{
|
{
|
||||||
LL_WARNS() << "Caught Error:" << e.what() << LL_ENDL;
|
LL_WARNS() << "Caught Error:" << e.what() << LL_ENDL;
|
||||||
mErrorMsg = e.what();
|
mErrorMsg = e.what();
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
catch(LLCLPLastOption&)
|
catch (const LLCLPLastOption&)
|
||||||
{
|
{
|
||||||
// This exception means a token was read after an option
|
// This exception means a token was read after an option
|
||||||
// that must be the last option was reached (see url and slurl options)
|
// that must be the last option was reached (see url and slurl options)
|
||||||
@@ -354,18 +354,58 @@ bool LLCommandLineParser::parseCommandLine(int argc, char **argv)
|
|||||||
return parseAndStoreResults(clp);
|
return parseAndStoreResults(clp);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// TODO:
|
||||||
|
// - Break out this funky parsing logic into separate method
|
||||||
|
// - Unit-test it with tests like LLStringUtil::getTokens() (the command-line
|
||||||
|
// overload that supports quoted tokens)
|
||||||
|
// - Unless this logic offers significant semantic benefits, replace it with
|
||||||
|
// LLStringUtil::getTokens(). This would fix a known bug: you cannot --set a
|
||||||
|
// string-valued variable to the empty string, because empty strings are
|
||||||
|
// eliminated below.
|
||||||
|
|
||||||
bool LLCommandLineParser::parseCommandLineString(const std::string& str)
|
bool LLCommandLineParser::parseCommandLineString(const std::string& str)
|
||||||
{
|
{
|
||||||
|
std::string cmd_line_string("");
|
||||||
|
if (!str.empty())
|
||||||
|
{
|
||||||
|
bool add_last_c = true;
|
||||||
|
S32 last_c_pos = str.size() - 1; //don't get out of bounds on pos+1, last char will be processed separately
|
||||||
|
for (S32 pos = 0; pos < last_c_pos; ++pos)
|
||||||
|
{
|
||||||
|
cmd_line_string.append(&str[pos], 1);
|
||||||
|
if (str[pos] == '\\')
|
||||||
|
{
|
||||||
|
cmd_line_string.append("\\", 1);
|
||||||
|
if (str[pos + 1] == '\\')
|
||||||
|
{
|
||||||
|
++pos;
|
||||||
|
add_last_c = (pos != last_c_pos);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (add_last_c)
|
||||||
|
{
|
||||||
|
cmd_line_string.append(&str[last_c_pos], 1);
|
||||||
|
if (str[last_c_pos] == '\\')
|
||||||
|
{
|
||||||
|
cmd_line_string.append("\\", 1);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// Split the string content into tokens
|
// Split the string content into tokens
|
||||||
boost::escaped_list_separator<char> sep("\\", "\r\n ", "\"'");
|
const char* escape_chars = "\\";
|
||||||
boost::tokenizer< boost::escaped_list_separator<char> > tok(str, sep);
|
const char* separator_chars = "\r\n ";
|
||||||
|
const char* quote_chars = "\"'";
|
||||||
|
boost::escaped_list_separator<char> sep(escape_chars, separator_chars, quote_chars);
|
||||||
|
boost::tokenizer< boost::escaped_list_separator<char> > tok(cmd_line_string, sep);
|
||||||
std::vector<std::string> tokens;
|
std::vector<std::string> tokens;
|
||||||
// std::copy(tok.begin(), tok.end(), std::back_inserter(tokens));
|
// std::copy(tok.begin(), tok.end(), std::back_inserter(tokens));
|
||||||
for(boost::tokenizer< boost::escaped_list_separator<char> >::iterator i = tok.begin();
|
for(boost::tokenizer< boost::escaped_list_separator<char> >::iterator i = tok.begin();
|
||||||
i != tok.end();
|
i != tok.end();
|
||||||
++i)
|
++i)
|
||||||
{
|
{
|
||||||
if(0 != i->size())
|
if(!i->empty())
|
||||||
{
|
{
|
||||||
tokens.push_back(*i);
|
tokens.push_back(*i);
|
||||||
}
|
}
|
||||||
@@ -386,20 +426,28 @@ bool LLCommandLineParser::parseCommandLineFile(const std::basic_istream < char >
|
|||||||
|
|
||||||
void LLCommandLineParser::notify()
|
void LLCommandLineParser::notify()
|
||||||
{
|
{
|
||||||
po::notify(gVariableMap);
|
try
|
||||||
|
{
|
||||||
|
po::notify(gVariableMap);
|
||||||
|
}
|
||||||
|
catch (const LLCLPError& e)
|
||||||
|
{
|
||||||
|
LL_WARNS() << "Caught Error: " << e.what() << LL_ENDL;
|
||||||
|
mErrorMsg = e.what();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void LLCommandLineParser::printOptions() const
|
void LLCommandLineParser::printOptions() const
|
||||||
{
|
{
|
||||||
for(po::variables_map::iterator i = gVariableMap.begin(); i != gVariableMap.end(); ++i)
|
for (auto& i : gVariableMap)
|
||||||
{
|
{
|
||||||
std::string name = i->first;
|
std::string name = i.first;
|
||||||
token_vector_t values = i->second.as<token_vector_t>();
|
token_vector_t values = i.second.as<token_vector_t>();
|
||||||
std::ostringstream oss;
|
std::ostringstream oss;
|
||||||
oss << name << ": ";
|
oss << name << ": ";
|
||||||
for(token_vector_t::iterator t_itr = values.begin(); t_itr != values.end(); ++t_itr)
|
for (auto& value : values)
|
||||||
{
|
{
|
||||||
oss << t_itr->c_str() << " ";
|
oss << value.c_str() << " ";
|
||||||
}
|
}
|
||||||
LL_INFOS() << oss.str() << LL_ENDL;
|
LL_INFOS() << oss.str() << LL_ENDL;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -134,8 +134,9 @@ namespace
|
|||||||
}
|
}
|
||||||
} //namespace
|
} //namespace
|
||||||
|
|
||||||
|
const LLColor4* mm_getMarkerColor(const LLUUID& id);
|
||||||
LLAvatarListEntry::LLAvatarListEntry(const LLUUID& id, const std::string& name, const LLVector3d& position) :
|
LLAvatarListEntry::LLAvatarListEntry(const LLUUID& id, const std::string& name, const LLVector3d& position) :
|
||||||
mID(id), mName(name), mPosition(position), mMarked(false), mFocused(false),
|
mID(id), mName(name), mPosition(position), mMarked(mm_getMarkerColor(id)), mFocused(false),
|
||||||
mStats(),
|
mStats(),
|
||||||
mActivityType(ACTIVITY_NEW), mActivityTimer(),
|
mActivityType(ACTIVITY_NEW), mActivityTimer(),
|
||||||
mIsInList(false), mAge(-1), mTime(time(NULL))
|
mIsInList(false), mAge(-1), mTime(time(NULL))
|
||||||
@@ -348,7 +349,14 @@ void track_av(const LLUUID& id)
|
|||||||
}
|
}
|
||||||
|
|
||||||
static void cmd_profile(const LLAvatarListEntry* entry);
|
static void cmd_profile(const LLAvatarListEntry* entry);
|
||||||
static void cmd_toggle_mark(LLAvatarListEntry* entry);
|
static void cmd_toggle_mark(LLAvatarListEntry* entry)
|
||||||
|
{
|
||||||
|
bool mark = !entry->isMarked();
|
||||||
|
void mm_setcolor(LLUUID key, LLColor4 col);
|
||||||
|
void mm_clearMark(const LLUUID & id);
|
||||||
|
mark ? mm_setcolor(entry->getID(), LLColor4::red) : mm_clearMark(entry->getID());
|
||||||
|
entry->setMarked(mark);
|
||||||
|
}
|
||||||
static void cmd_ar(const LLAvatarListEntry* entry);
|
static void cmd_ar(const LLAvatarListEntry* entry);
|
||||||
static void cmd_teleport(const LLAvatarListEntry* entry);
|
static void cmd_teleport(const LLAvatarListEntry* entry);
|
||||||
|
|
||||||
@@ -364,15 +372,6 @@ namespace
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
class RadarMark : public view_listener_t
|
|
||||||
{
|
|
||||||
bool handleEvent(LLPointer<LLEvent> event, const LLSD& userdata)
|
|
||||||
{
|
|
||||||
LLFloaterAvatarList::instance().doCommand(cmd_toggle_mark);
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
class RadarFocus : public view_listener_t
|
class RadarFocus : public view_listener_t
|
||||||
{
|
{
|
||||||
bool handleEvent(LLPointer<LLEvent> event, const LLSD& userdata)
|
bool handleEvent(LLPointer<LLEvent> event, const LLSD& userdata)
|
||||||
@@ -415,7 +414,6 @@ void addMenu(view_listener_t* menu, const std::string& name);
|
|||||||
void add_radar_listeners()
|
void add_radar_listeners()
|
||||||
{
|
{
|
||||||
addMenu(new RadarTrack, "Radar.Track");
|
addMenu(new RadarTrack, "Radar.Track");
|
||||||
addMenu(new RadarMark, "Radar.Mark");
|
|
||||||
addMenu(new RadarFocus, "Radar.Focus");
|
addMenu(new RadarFocus, "Radar.Focus");
|
||||||
addMenu(new RadarFocusPrev, "Radar.FocusPrev");
|
addMenu(new RadarFocusPrev, "Radar.FocusPrev");
|
||||||
addMenu(new RadarFocusNext, "Radar.FocusNext");
|
addMenu(new RadarFocusNext, "Radar.FocusNext");
|
||||||
@@ -779,7 +777,7 @@ void LLFloaterAvatarList::refreshAvatarList()
|
|||||||
if (entry->isMarked())
|
if (entry->isMarked())
|
||||||
{
|
{
|
||||||
mark.value = "X";
|
mark.value = "X";
|
||||||
mark.color = LLColor4::blue;
|
mark.color = *mm_getMarkerColor(av_id);
|
||||||
mark.font_style = "BOLD";
|
mark.font_style = "BOLD";
|
||||||
}
|
}
|
||||||
element.columns.add(mark);
|
element.columns.add(mark);
|
||||||
@@ -1449,7 +1447,6 @@ void send_estate_message(const std::string request, const std::vector<std::strin
|
|||||||
|
|
||||||
static void cmd_append_names(const LLAvatarListEntry* entry, std::string &str, std::string &sep)
|
static void cmd_append_names(const LLAvatarListEntry* entry, std::string &str, std::string &sep)
|
||||||
{ if(!str.empty())str.append(sep);str.append(entry->getName()); }
|
{ if(!str.empty())str.append(sep);str.append(entry->getName()); }
|
||||||
static void cmd_toggle_mark(LLAvatarListEntry* entry) { entry->toggleMark(); }
|
|
||||||
static void cmd_ar(const LLAvatarListEntry* entry) { LLFloaterReporter::showFromObject(entry->getID()); }
|
static void cmd_ar(const LLAvatarListEntry* entry) { LLFloaterReporter::showFromObject(entry->getID()); }
|
||||||
static void cmd_profile(const LLAvatarListEntry* entry) { LLAvatarActions::showProfile(entry->getID()); }
|
static void cmd_profile(const LLAvatarListEntry* entry) { LLAvatarActions::showProfile(entry->getID()); }
|
||||||
static void cmd_teleport(const LLAvatarListEntry* entry) { gAgent.teleportViaLocation(entry->getPosition()); }
|
static void cmd_teleport(const LLAvatarListEntry* entry) { gAgent.teleportViaLocation(entry->getPosition()); }
|
||||||
|
|||||||
@@ -124,7 +124,7 @@ enum ACTIVITY_TYPE
|
|||||||
|
|
||||||
bool isInList() const { return mIsInList; }
|
bool isInList() const { return mIsInList; }
|
||||||
|
|
||||||
void toggleMark() { mMarked = !mMarked; }
|
void setMarked(bool marked) { mMarked = marked; }
|
||||||
|
|
||||||
struct uuidMatch
|
struct uuidMatch
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -545,7 +545,7 @@ void LLHoverView::updateText()
|
|||||||
}
|
}
|
||||||
mText.push_back(line);
|
mText.push_back(line);
|
||||||
|
|
||||||
auto& objects = LLSelectMgr::getInstance()->getHoverObjects();
|
auto objects = LLSelectMgr::getInstance()->getHoverObjects();
|
||||||
|
|
||||||
line.clear();
|
line.clear();
|
||||||
S32 prim_count = objects->getObjectCount();
|
S32 prim_count = objects->getObjectCount();
|
||||||
|
|||||||
@@ -296,15 +296,25 @@ std::size_t hash_value(const LLUUID& uuid)
|
|||||||
return (std::size_t)uuid.getCRC32();
|
return (std::size_t)uuid.getCRC32();
|
||||||
}
|
}
|
||||||
boost::unordered_map<const LLUUID,LLColor4> mm_MarkerColors;
|
boost::unordered_map<const LLUUID,LLColor4> mm_MarkerColors;
|
||||||
bool mm_getMarkerColor(const LLUUID& id, LLColor4& color)
|
const LLColor4* mm_getMarkerColor(const LLUUID& id)
|
||||||
{
|
{
|
||||||
boost::unordered_map<const LLUUID,LLColor4>::const_iterator it = mm_MarkerColors.find(id);
|
auto it = mm_MarkerColors.find(id);
|
||||||
if (it == mm_MarkerColors.end()) return false;
|
return it == mm_MarkerColors.end() ? nullptr : &it->second;
|
||||||
color = it->second;
|
|
||||||
return true;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void LLNetMap::mm_setcolor(LLUUID key,LLColor4 col)
|
bool mm_getMarkerColor(const LLUUID& id, LLColor4& color)
|
||||||
|
{
|
||||||
|
auto c = mm_getMarkerColor(id);
|
||||||
|
if (c) color = *c;
|
||||||
|
return c;
|
||||||
|
}
|
||||||
|
|
||||||
|
void mm_clearMark(const LLUUID& id)
|
||||||
|
{
|
||||||
|
mm_MarkerColors.erase(id);
|
||||||
|
}
|
||||||
|
|
||||||
|
void mm_setcolor(LLUUID key,LLColor4 col)
|
||||||
{
|
{
|
||||||
mm_MarkerColors[key] = col;
|
mm_MarkerColors[key] = col;
|
||||||
}
|
}
|
||||||
@@ -1005,7 +1015,7 @@ BOOL LLNetMap::handleToolTip( S32 x, S32 y, std::string& tool_tip, LLRect* stick
|
|||||||
LLVector3d delta = targetPosition - myPosition;
|
LLVector3d delta = targetPosition - myPosition;
|
||||||
F32 distance = (F32)delta.magVec();
|
F32 distance = (F32)delta.magVec();
|
||||||
if (single_agent)
|
if (single_agent)
|
||||||
tool_tip.append( llformat("\n\n(Distance: %.02fm)\n",distance) );
|
tool_tip.append( llformat("\n(Distance: %.02fm)\n",distance) );
|
||||||
else
|
else
|
||||||
tool_tip.append(llformat(" (%.02fm)\n", distance));
|
tool_tip.append(llformat(" (%.02fm)\n", distance));
|
||||||
}
|
}
|
||||||
@@ -1498,9 +1508,13 @@ bool LLScaleMap::handleEvent(LLPointer<LLEvent> event, const LLSD& userdata)
|
|||||||
//moymod - minimap color shit
|
//moymod - minimap color shit
|
||||||
void markMassAgents(const LLColor4& color)
|
void markMassAgents(const LLColor4& color)
|
||||||
{
|
{
|
||||||
auto self = LFIDBearer::getActive<LLNetMap>();
|
auto radar = LLFloaterAvatarList::getInstance();
|
||||||
for (const auto& id : self->getSelectedIDs())
|
for (const auto& id : LFIDBearer::getActiveSelectedIDs())
|
||||||
self->mm_setcolor(id, color);
|
{
|
||||||
|
mm_setcolor(id, color);
|
||||||
|
if (auto entry = radar ? radar->getAvatarEntry(id) : nullptr)
|
||||||
|
entry->setMarked(true);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
bool mmsetred::handleEvent(LLPointer<LLEvent>, const LLSD&)
|
bool mmsetred::handleEvent(LLPointer<LLEvent>, const LLSD&)
|
||||||
@@ -1530,8 +1544,13 @@ bool mmsetcustom::handleEvent(LLPointer<LLEvent>, const LLSD&)
|
|||||||
}
|
}
|
||||||
bool mmsetunmark::handleEvent(LLPointer<LLEvent>, const LLSD&)
|
bool mmsetunmark::handleEvent(LLPointer<LLEvent>, const LLSD&)
|
||||||
{
|
{
|
||||||
|
auto radar = LLFloaterAvatarList::getInstance();
|
||||||
for (const auto& id : LFIDBearer::getActiveSelectedIDs())
|
for (const auto& id : LFIDBearer::getActiveSelectedIDs())
|
||||||
mm_MarkerColors.erase(id);
|
{
|
||||||
|
mm_clearMark(id);
|
||||||
|
if (auto entry = radar ? radar->getAvatarEntry(id) : nullptr)
|
||||||
|
entry->setMarked(false);
|
||||||
|
}
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
bool mmenableunmark::handleEvent(LLPointer<LLEvent>, const LLSD& userdata)
|
bool mmenableunmark::handleEvent(LLPointer<LLEvent>, const LLSD& userdata)
|
||||||
|
|||||||
@@ -72,9 +72,6 @@ public:
|
|||||||
uuid_vec_t getSelectedIDs() const override final { return mClosestAgentsAtLastClick; }
|
uuid_vec_t getSelectedIDs() const override final { return mClosestAgentsAtLastClick; }
|
||||||
S32 getNumSelected() const override final { return mClosestAgentsAtLastClick.size(); }
|
S32 getNumSelected() const override final { return mClosestAgentsAtLastClick.size(); }
|
||||||
|
|
||||||
static void mm_setcolor(LLUUID key,LLColor4 col); //moymod
|
|
||||||
|
|
||||||
|
|
||||||
// [SL:KB] - Patch: World-MinimapOverlay | Checked: 2012-06-20 (Catznip-3.3.0)
|
// [SL:KB] - Patch: World-MinimapOverlay | Checked: 2012-06-20 (Catznip-3.3.0)
|
||||||
void refreshParcelOverlay() { mUpdateParcelImage = true; }
|
void refreshParcelOverlay() { mUpdateParcelImage = true; }
|
||||||
// [/SL:KB]
|
// [/SL:KB]
|
||||||
@@ -157,7 +154,7 @@ private:
|
|||||||
LLUUID mClosestAgentToCursor;
|
LLUUID mClosestAgentToCursor;
|
||||||
LLUUID mClosestAgentAtLastRightClick;
|
LLUUID mClosestAgentAtLastRightClick;
|
||||||
|
|
||||||
BOOL isAgentUnderCursor() { return mClosestAgentToCursor.notNull(); }
|
BOOL isAgentUnderCursor() const { return mClosestAgentToCursor.notNull(); }
|
||||||
LLMenuGL* mPopupMenu;
|
LLMenuGL* mPopupMenu;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
@@ -337,12 +337,21 @@ void LLPanelAvatarFirstLife::enableControls(BOOL self)
|
|||||||
void show_picture(const LLUUID& id, const std::string& name);
|
void show_picture(const LLUUID& id, const std::string& name);
|
||||||
static std::string profile_picture_title(const std::string& str) { return "Profile Picture: " + str; }
|
static std::string profile_picture_title(const std::string& str) { return "Profile Picture: " + str; }
|
||||||
static void show_partner_help() { LLNotificationsUtil::add("ClickPartnerHelpAvatar", LLSD(), LLSD(), boost::bind(LLPanelAvatarSecondLife::onClickPartnerHelpLoadURL, _1, _2)); }
|
static void show_partner_help() { LLNotificationsUtil::add("ClickPartnerHelpAvatar", LLSD(), LLSD(), boost::bind(LLPanelAvatarSecondLife::onClickPartnerHelpLoadURL, _1, _2)); }
|
||||||
void show_log_browser(const LLUUID& id)
|
void show_log_browser(const LLUUID& id, const LFIDBearer::Type& type)
|
||||||
{
|
{
|
||||||
void show_log_browser(const std::string& name, const std::string& id);
|
void show_log_browser(const std::string& name, const std::string& id);
|
||||||
LLAvatarName av_name;
|
std::string name;
|
||||||
LLAvatarNameCache::get(id, &av_name);
|
if (type == LFIDBearer::AVATAR)
|
||||||
show_log_browser(av_name.getLegacyName(), id.asString());
|
{
|
||||||
|
LLAvatarName av_name;
|
||||||
|
LLAvatarNameCache::get(id, &av_name);
|
||||||
|
name = av_name.getLegacyName();
|
||||||
|
}
|
||||||
|
else // GROUP
|
||||||
|
{
|
||||||
|
gCacheName->getGroupName(id, name);
|
||||||
|
}
|
||||||
|
show_log_browser(name, id.asString());
|
||||||
}
|
}
|
||||||
BOOL LLPanelAvatarSecondLife::postBuild()
|
BOOL LLPanelAvatarSecondLife::postBuild()
|
||||||
{
|
{
|
||||||
@@ -368,7 +377,7 @@ BOOL LLPanelAvatarSecondLife::postBuild()
|
|||||||
getChild<LLUICtrl>("GroupInvite_Button")->setCommitCallback(boost::bind(static_cast<void(*)(const LLUUID&)>(LLAvatarActions::inviteToGroup), boost::bind(&LLPanelAvatar::getAvatarID, pa)));
|
getChild<LLUICtrl>("GroupInvite_Button")->setCommitCallback(boost::bind(static_cast<void(*)(const LLUUID&)>(LLAvatarActions::inviteToGroup), boost::bind(&LLPanelAvatar::getAvatarID, pa)));
|
||||||
|
|
||||||
getChild<LLUICtrl>("Add Friend...")->setCommitCallback(boost::bind(LLAvatarActions::requestFriendshipDialog, boost::bind(&LLPanelAvatar::getAvatarID, pa)));
|
getChild<LLUICtrl>("Add Friend...")->setCommitCallback(boost::bind(LLAvatarActions::requestFriendshipDialog, boost::bind(&LLPanelAvatar::getAvatarID, pa)));
|
||||||
getChild<LLUICtrl>("Log")->setCommitCallback(boost::bind(show_log_browser, boost::bind(&LLPanelAvatar::getAvatarID, pa)));
|
getChild<LLUICtrl>("Log")->setCommitCallback(boost::bind(show_log_browser, boost::bind(&LLPanelAvatar::getAvatarID, pa), LFIDBearer::AVATAR));
|
||||||
getChild<LLUICtrl>("Pay...")->setCommitCallback(boost::bind(LLAvatarActions::pay, boost::bind(&LLPanelAvatar::getAvatarID, pa)));
|
getChild<LLUICtrl>("Pay...")->setCommitCallback(boost::bind(LLAvatarActions::pay, boost::bind(&LLPanelAvatar::getAvatarID, pa)));
|
||||||
if (LLUICtrl* ctrl = findChild<LLUICtrl>("Mute"))
|
if (LLUICtrl* ctrl = findChild<LLUICtrl>("Mute"))
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -135,6 +135,7 @@
|
|||||||
#include "llfloaternotificationsconsole.h"
|
#include "llfloaternotificationsconsole.h"
|
||||||
|
|
||||||
// <edit>
|
// <edit>
|
||||||
|
#include "jcfloaterareasearch.h"
|
||||||
#include "lltexteditor.h" // Initialize the text editor menu listeners in here
|
#include "lltexteditor.h" // Initialize the text editor menu listeners in here
|
||||||
#include "llfloatermessagelog.h"
|
#include "llfloatermessagelog.h"
|
||||||
#include "shfloatermediaticker.h"
|
#include "shfloatermediaticker.h"
|
||||||
@@ -9041,9 +9042,38 @@ template<typename T> T* get_focused()
|
|||||||
return t;
|
return t;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const JCFloaterAreaSearch::ObjectData* get_obj_data(const LLUUID& id)
|
||||||
|
{
|
||||||
|
auto areasearch = JCFloaterAreaSearch::findInstance();
|
||||||
|
return areasearch ? areasearch->getObjectData(id) : nullptr;
|
||||||
|
}
|
||||||
|
|
||||||
const std::string get_slurl_for(const LLUUID& id, const LFIDBearer::Type& type)
|
const std::string get_slurl_for(const LLUUID& id, const LFIDBearer::Type& type)
|
||||||
{
|
{
|
||||||
return type == LFIDBearer::GROUP ? LLGroupActions::getSLURL(id) : LLAvatarActions::getSLURL(id);
|
switch (type)
|
||||||
|
{
|
||||||
|
case LFIDBearer::GROUP: return LLGroupActions::getSLURL(id);
|
||||||
|
case LFIDBearer::AVATAR: return LLAvatarActions::getSLURL(id);
|
||||||
|
case LFIDBearer::OBJECT:
|
||||||
|
{
|
||||||
|
const auto& obj_data = get_obj_data(id);
|
||||||
|
if (!obj_data) return LLStringUtil::null;
|
||||||
|
|
||||||
|
LLSD sdQuery;
|
||||||
|
sdQuery["name"] = obj_data->name;
|
||||||
|
sdQuery["owner"] = obj_data->owner_id;
|
||||||
|
|
||||||
|
if (gRlvHandler.hasBehaviour(RLV_BHVR_SHOWNAMES) && (obj_data->owner_id != gAgentID))
|
||||||
|
sdQuery["rlv_shownames"] = true;
|
||||||
|
|
||||||
|
if (const auto obj = gObjectList.findObject(id))
|
||||||
|
if (const auto region = obj->getRegion())
|
||||||
|
sdQuery["slurl"] = LLSLURL(region->getName(), obj->getPositionAgent()).getLocationString();
|
||||||
|
|
||||||
|
return LLSLURL("objectim", id, LLURI::mapToQueryString(sdQuery)).getSLURLString();
|
||||||
|
}
|
||||||
|
default: return LLStringUtil::null;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
const LLWString get_wslurl_for(const LLUUID& id, const LFIDBearer::Type& type)
|
const LLWString get_wslurl_for(const LLUUID& id, const LFIDBearer::Type& type)
|
||||||
@@ -9193,10 +9223,19 @@ class ListCopyNames : public view_listener_t
|
|||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static std::string getObjectName(const LLUUID& id)
|
||||||
|
{
|
||||||
|
const auto& obj_data = get_obj_data(id);
|
||||||
|
return obj_data ? obj_data->name : LLStringUtil::null;
|
||||||
|
}
|
||||||
|
|
||||||
bool handleEvent(LLPointer<LLEvent> event, const LLSD& userdata)
|
bool handleEvent(LLPointer<LLEvent> event, const LLSD& userdata)
|
||||||
{
|
{
|
||||||
LLWString str;
|
LLWString str;
|
||||||
copy_from_ids(LFIDBearer::getActiveSelectedIDs(), LFIDBearer::getActiveType() == LFIDBearer::GROUP ? getGroupName : getAvatarName);
|
const auto& type = LFIDBearer::getActiveType();
|
||||||
|
copy_from_ids(LFIDBearer::getActiveSelectedIDs(), type == LFIDBearer::GROUP ? getGroupName :
|
||||||
|
type == LFIDBearer::OBJECT ? getObjectName :
|
||||||
|
getAvatarName);
|
||||||
if (!str.empty()) LLView::getWindow()->copyTextToClipboard(str);
|
if (!str.empty()) LLView::getWindow()->copyTextToClipboard(str);
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
@@ -9287,13 +9326,13 @@ bool can_show_web_profile()
|
|||||||
return !gSavedSettings.getString("WebProfileURL").empty();
|
return !gSavedSettings.getString("WebProfileURL").empty();
|
||||||
}
|
}
|
||||||
|
|
||||||
void show_log_browser(const LLUUID& id);
|
void show_log_browser(const LLUUID& id, const LFIDBearer::Type& type);
|
||||||
class ListShowLog : public view_listener_t
|
class ListShowLog : public view_listener_t
|
||||||
{
|
{
|
||||||
bool handleEvent(LLPointer<LLEvent> event, const LLSD& userdata)
|
bool handleEvent(LLPointer<LLEvent> event, const LLSD& userdata)
|
||||||
{
|
{
|
||||||
for (const LLUUID& id : LFIDBearer::getActiveSelectedIDs())
|
for (const LLUUID& id : LFIDBearer::getActiveSelectedIDs())
|
||||||
show_log_browser(id);
|
show_log_browser(id, LFIDBearer::getActiveType());
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
@@ -9306,6 +9345,7 @@ class ListShowProfile : public view_listener_t
|
|||||||
{
|
{
|
||||||
case LFIDBearer::AVATAR: LLAvatarActions::showProfiles(LFIDBearer::getActiveSelectedIDs()); break;
|
case LFIDBearer::AVATAR: LLAvatarActions::showProfiles(LFIDBearer::getActiveSelectedIDs()); break;
|
||||||
case LFIDBearer::GROUP: LLGroupActions::showProfiles(LFIDBearer::getActiveSelectedIDs()); break;
|
case LFIDBearer::GROUP: LLGroupActions::showProfiles(LFIDBearer::getActiveSelectedIDs()); break;
|
||||||
|
case LFIDBearer::OBJECT: for (const auto& id : LFIDBearer::getActiveSelectedIDs()) LLUrlAction::openURL(get_slurl_for(id, LFIDBearer::OBJECT)); break;
|
||||||
default: break;
|
default: break;
|
||||||
}
|
}
|
||||||
return true;
|
return true;
|
||||||
@@ -9403,7 +9443,7 @@ class ListIsNearby : public view_listener_t
|
|||||||
bool handleEvent(LLPointer<LLEvent> event, const LLSD& userdata)
|
bool handleEvent(LLPointer<LLEvent> event, const LLSD& userdata)
|
||||||
{
|
{
|
||||||
const auto&& id = LFIDBearer::getActiveSelectedID();
|
const auto&& id = LFIDBearer::getActiveSelectedID();
|
||||||
gMenuHolder->findControl(userdata["control"].asString())->setValue(LFIDBearer::getActiveType() == LFIDBearer::OBJECT ? gObjectList.findObject(id) : is_nearby(id));
|
gMenuHolder->findControl(userdata["control"].asString())->setValue(LFIDBearer::getActiveType() == LFIDBearer::OBJECT ? !!gObjectList.findObject(id) : is_nearby(id));
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
@@ -9583,6 +9623,15 @@ class ListActivate : public view_listener_t
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
class ListObjectCamTo : public view_listener_t
|
||||||
|
{
|
||||||
|
bool handleEvent(LLPointer<LLEvent> event, const LLSD& userdata)
|
||||||
|
{
|
||||||
|
gAgentCamera.lookAtObject(LFIDBearer::getActiveSelectedID(), false);
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
class MediaCtrlCopyURL : public view_listener_t
|
class MediaCtrlCopyURL : public view_listener_t
|
||||||
{
|
{
|
||||||
bool handleEvent(LLPointer<LLEvent> event, const LLSD& userdata)
|
bool handleEvent(LLPointer<LLEvent> event, const LLSD& userdata)
|
||||||
@@ -9975,6 +10024,7 @@ void initialize_menus()
|
|||||||
addMenu(new ListLeave, "List.Leave");
|
addMenu(new ListLeave, "List.Leave");
|
||||||
addMenu(new ListJoin, "List.Join");
|
addMenu(new ListJoin, "List.Join");
|
||||||
addMenu(new ListActivate, "List.Activate");
|
addMenu(new ListActivate, "List.Activate");
|
||||||
|
addMenu(new ListObjectCamTo, "List.Object.CamTo");
|
||||||
|
|
||||||
add_radar_listeners();
|
add_radar_listeners();
|
||||||
|
|
||||||
|
|||||||
@@ -25,7 +25,6 @@
|
|||||||
<menu_item_call label="Focus Next" name="Focus Next"/>
|
<menu_item_call label="Focus Next" name="Focus Next"/>
|
||||||
<menu_item_call label="Focus Previous" name="Focus Previous"/>
|
<menu_item_call label="Focus Previous" name="Focus Previous"/>
|
||||||
|
|
||||||
<menu_item_call label="Mark/Unmark" name="Mark/Unmark"/>
|
|
||||||
<menu_item_call label="Focus Next Marked" name="Focus Next Marked"/>
|
<menu_item_call label="Focus Next Marked" name="Focus Next Marked"/>
|
||||||
<menu_item_call label="Focus Previous Marked" name="Focus Previous Marked"/>
|
<menu_item_call label="Focus Previous Marked" name="Focus Previous Marked"/>
|
||||||
</menu>
|
</menu>
|
||||||
|
|||||||
@@ -33,7 +33,7 @@
|
|||||||
<scroll_list name="result_list"
|
<scroll_list name="result_list"
|
||||||
left="10" right="-10" top="-103" bottom="32"
|
left="10" right="-10" top="-103" bottom="32"
|
||||||
follows="left|top|bottom|right" can_resize="true"
|
follows="left|top|bottom|right" can_resize="true"
|
||||||
column_padding="0" draw_heading="true" multi_select="false" search_column="1">
|
column_padding="0" draw_heading="true" multi_select="true" search_column="1" menu_num="2">
|
||||||
<column name="Name" label="Name" dynamicwidth="true" tool_tip="Double click on any entry to get a position beacon"/>
|
<column name="Name" label="Name" dynamicwidth="true" tool_tip="Double click on any entry to get a position beacon"/>
|
||||||
<column name="Description" label="Description" dynamicwidth="true" tool_tip="Double click on any entry to get a position beacon"/>
|
<column name="Description" label="Description" dynamicwidth="true" tool_tip="Double click on any entry to get a position beacon"/>
|
||||||
<column name="Owner" label="Owner" dynamicwidth="true" tool_tip="Double click on any entry to get a position beacon"/>
|
<column name="Owner" label="Owner" dynamicwidth="true" tool_tip="Double click on any entry to get a position beacon"/>
|
||||||
|
|||||||
@@ -30,8 +30,8 @@
|
|||||||
<string name="focus" value="Focus"/>
|
<string name="focus" value="Focus"/>
|
||||||
<button bottom_delta="0" follows="left|top" height="20" left_delta="81" width="50" name="tp_btn" label="TP"/>
|
<button bottom_delta="0" follows="left|top" height="20" left_delta="81" width="50" name="tp_btn" label="TP"/>
|
||||||
<button bottom_delta="0" follows="left|top" height="20" left_delta="50" width="50" name="pay_btn" label="Pay"/>
|
<button bottom_delta="0" follows="left|top" height="20" left_delta="50" width="50" name="pay_btn" label="Pay"/>
|
||||||
<button bottom_delta="0" follows="left|top" height="20" left_delta="50" width="50" name="history_btn" label="Log"/>
|
<button bottom_delta="0" follows="left|top" height="20" left_delta="50" width="80" name="history_btn" label="History"/>
|
||||||
<button bottom="-37" follows="left|top" height="20" image_overlay="icn_voice-call-start.tga" image_overlay_alignment="left" label="Call" left_delta="50" name="start_call_btn" width="80"/>
|
<button bottom="-37" follows="left|top" height="20" image_overlay="icn_voice-call-start.tga" image_overlay_alignment="left" label="Call" left_delta="80" name="start_call_btn" width="80"/>
|
||||||
<button bottom="-37" follows="top" height="20" image_overlay="icn_voice-call-end.tga" image_overlay_alignment="left" label="End" name="end_call_btn" visible="false" width="80"/>
|
<button bottom="-37" follows="top" height="20" image_overlay="icn_voice-call-end.tga" image_overlay_alignment="left" label="End" name="end_call_btn" visible="false" width="80"/>
|
||||||
<panel border="false" bottom="-34" follows="left|top" height="20" left_delta="80" name="speaker_controls" width="100">
|
<panel border="false" bottom="-34" follows="left|top" height="20" left_delta="80" name="speaker_controls" width="100">
|
||||||
<volume_slider bottom="0" follows="bottom" height="15" increment="0.05" initial_val="0.5" max_val="1.0" min_val="0.0" name="speaker_volume" width="56"/>
|
<volume_slider bottom="0" follows="bottom" height="15" increment="0.05" initial_val="0.5" max_val="1.0" min_val="0.0" name="speaker_volume" width="56"/>
|
||||||
|
|||||||
@@ -19,6 +19,11 @@
|
|||||||
<on_enable function="List.EnableSingleSelected"/>
|
<on_enable function="List.EnableSingleSelected"/>
|
||||||
<on_visible function="List.IsInGroup"/>
|
<on_visible function="List.IsInGroup"/>
|
||||||
</menu_item_call>
|
</menu_item_call>
|
||||||
|
<menu_item_call label="Chat History" name="Chat History">
|
||||||
|
<on_click function="List.ShowLog"/>
|
||||||
|
<on_enable function="List.EnableAnySelected"/>
|
||||||
|
<on_visible function="List.IsInGroup"/>
|
||||||
|
</menu_item_call>
|
||||||
<menu_item_call label="Join Group" name="join_group">
|
<menu_item_call label="Join Group" name="join_group">
|
||||||
<on_click function="List.Join"/>
|
<on_click function="List.Join"/>
|
||||||
<on_visible function="List.NotInGroup"/>
|
<on_visible function="List.NotInGroup"/>
|
||||||
|
|||||||
@@ -87,7 +87,6 @@
|
|||||||
<on_click function="StopTracking" />
|
<on_click function="StopTracking" />
|
||||||
<on_visible function="IsTracking" />
|
<on_visible function="IsTracking" />
|
||||||
</menu_item_call>
|
</menu_item_call>
|
||||||
<menu name="avs_menu" label="Selected Avatars" filename="menu_local_avs.xml">
|
|
||||||
<menu name="Mark" label="Mark">
|
<menu name="Mark" label="Mark">
|
||||||
<menu_item_call label="Red" name="Red">
|
<menu_item_call label="Red" name="Red">
|
||||||
<on_click function="MiniMap.setred" />
|
<on_click function="MiniMap.setred" />
|
||||||
@@ -109,7 +108,7 @@
|
|||||||
<on_click function="MiniMap.setunmark" />
|
<on_click function="MiniMap.setunmark" />
|
||||||
<on_enable function="MiniMap.enableunmark" />
|
<on_enable function="MiniMap.enableunmark" />
|
||||||
</menu_item_call>
|
</menu_item_call>
|
||||||
</menu>
|
<menu name="avs_menu" label="Selected Avatars" filename="menu_local_avs.xml"/>
|
||||||
<menu_item_check label="World Map Textures" name="World Map Textures">
|
<menu_item_check label="World Map Textures" name="World Map Textures">
|
||||||
<on_check control="MiniMapWorldMapTextures" />
|
<on_check control="MiniMapWorldMapTextures" />
|
||||||
<on_click function="ToggleControl" userdata="MiniMapWorldMapTextures" />
|
<on_click function="ToggleControl" userdata="MiniMapWorldMapTextures" />
|
||||||
|
|||||||
32
indra/newview/skins/default/xui/en-us/menu_objects_list.xml
Normal file
32
indra/newview/skins/default/xui/en-us/menu_objects_list.xml
Normal file
@@ -0,0 +1,32 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
|
||||||
|
<context_menu label="Objects" name="Objects">
|
||||||
|
<menu_item_call label="Cam To" name="Cam To">
|
||||||
|
<on_click function="List.Object.CamTo"/>
|
||||||
|
<on_visible function="List.EnableSingleSelected"/>
|
||||||
|
</menu_item_call>
|
||||||
|
<menu_item_call label="Follow" name="Follow">
|
||||||
|
<on_click function="List.Follow"/>
|
||||||
|
<on_visible function="List.EnableSingleSelected"/>
|
||||||
|
</menu_item_call>
|
||||||
|
<menu_item_call label="Move To" name="Move To">
|
||||||
|
<on_click function="List.GoTo"/>
|
||||||
|
<on_visible function="List.EnableSingleSelected"/>
|
||||||
|
</menu_item_call>
|
||||||
|
<menu_item_call label="Teleport To" name="Teleport To">
|
||||||
|
<on_click function="List.TeleportTo"/>
|
||||||
|
<on_visible 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"/>
|
||||||
|
</menu_item_call>
|
||||||
|
<menu_item_call label="Copy Name" name="Copy Name">
|
||||||
|
<on_click function="List.CopyNames"/>
|
||||||
|
<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>
|
||||||
@@ -74,14 +74,15 @@
|
|||||||
<menu_item_call enabled="true" hidden="false" label="Data" mouse_opaque="true" name="Data">
|
<menu_item_call enabled="true" hidden="false" label="Data" mouse_opaque="true" name="Data">
|
||||||
<on_click function="Object.Data" />
|
<on_click function="Object.Data" />
|
||||||
</menu_item_call>
|
</menu_item_call>
|
||||||
<menu_item_separator />
|
<menu_item_call label="Go To" name="Go To">
|
||||||
<menu_item_separator />
|
<on_click function="GoToObject" />
|
||||||
<menu_item_separator />
|
|
||||||
<menu_item_call enabled="true" label="Reload" mouse_opaque="true" name="Reload Textures">
|
|
||||||
<on_click function="Object.ReloadTextures" />
|
|
||||||
</menu_item_call>
|
</menu_item_call>
|
||||||
<menu_item_call label="Follow" name="Follow">
|
<menu_item_call label="Follow" name="Follow">
|
||||||
<on_click function="Object.Follow"/>
|
<on_click function="Object.Follow"/>
|
||||||
|
</menu_item_call>
|
||||||
|
<menu_item_separator />
|
||||||
|
<menu_item_call enabled="true" label="Reload" mouse_opaque="true" name="Reload Textures">
|
||||||
|
<on_click function="Object.ReloadTextures" />
|
||||||
</menu_item_call>
|
</menu_item_call>
|
||||||
</pie_menu>
|
</pie_menu>
|
||||||
<menu_item_call enabled="false" label="Mute" mouse_opaque="true" name="Object Mute">
|
<menu_item_call enabled="false" label="Mute" mouse_opaque="true" name="Object Mute">
|
||||||
|
|||||||
@@ -114,6 +114,27 @@
|
|||||||
<on_click function="Radar.FocusPrev" userdata="1"/>
|
<on_click function="Radar.FocusPrev" userdata="1"/>
|
||||||
</menu_item_call>
|
</menu_item_call>
|
||||||
</menu>
|
</menu>
|
||||||
|
<menu name="Mark" label="Mark">
|
||||||
|
<menu_item_call label="Red" name="Red">
|
||||||
|
<on_click function="MiniMap.setred" />
|
||||||
|
</menu_item_call>
|
||||||
|
<menu_item_call label="Green" name="Green">
|
||||||
|
<on_click function="MiniMap.setgreen" />
|
||||||
|
</menu_item_call>
|
||||||
|
<menu_item_call label="Blue" name="Blue">
|
||||||
|
<on_click function="MiniMap.setblue" />
|
||||||
|
</menu_item_call>
|
||||||
|
<menu_item_call label="Yellow" name="Yellow">
|
||||||
|
<on_click function="MiniMap.setyellow" />
|
||||||
|
</menu_item_call>
|
||||||
|
<menu_item_call label="Custom..." name="Custom">
|
||||||
|
<on_click function="MiniMap.setcustom" />
|
||||||
|
</menu_item_call>
|
||||||
|
<menu_item_call label="Unmark" name="Unmark">
|
||||||
|
<on_click function="MiniMap.setunmark" />
|
||||||
|
<on_enable function="MiniMap.enableunmark" />
|
||||||
|
</menu_item_call>
|
||||||
|
</menu>
|
||||||
<menu label="Alerts" name="Alerts" create_jump_keys="true">
|
<menu label="Alerts" name="Alerts" create_jump_keys="true">
|
||||||
<menu_item_check label="Display alerts when an avatar" name="Display alerts in chat">
|
<menu_item_check label="Display alerts when an avatar" name="Display alerts in chat">
|
||||||
<on_click function="ToggleControl" userdata="RadarChatAlerts"/>
|
<on_click function="ToggleControl" userdata="RadarChatAlerts"/>
|
||||||
@@ -189,10 +210,6 @@
|
|||||||
</menu_item_call>
|
</menu_item_call>
|
||||||
</menu>
|
</menu>
|
||||||
<menu label="Hide Columns" name="Hide Columns" create_jump_keys="true">
|
<menu label="Hide Columns" name="Hide Columns" create_jump_keys="true">
|
||||||
<menu_item_check label="Mark" name="Mark">
|
|
||||||
<on_click function="ToggleControl" userdata="RadarColumnMarkHidden"/>
|
|
||||||
<on_check control="RadarColumnMarkHidden"/>
|
|
||||||
</menu_item_check>
|
|
||||||
<menu_item_check label="Position" name="Position">
|
<menu_item_check label="Position" name="Position">
|
||||||
<on_click function="ToggleControl" userdata="RadarColumnPositionHidden"/>
|
<on_click function="ToggleControl" userdata="RadarColumnPositionHidden"/>
|
||||||
<on_check control="RadarColumnPositionHidden"/>
|
<on_check control="RadarColumnPositionHidden"/>
|
||||||
|
|||||||
@@ -23,6 +23,10 @@
|
|||||||
<on_click function="List.Activate"/>
|
<on_click function="List.Activate"/>
|
||||||
<on_visible function="List.IsInGroup"/>
|
<on_visible function="List.IsInGroup"/>
|
||||||
</menu_item_call>
|
</menu_item_call>
|
||||||
|
<menu_item_call label="Chat History" name="Chat History">
|
||||||
|
<on_click function="List.ShowLog"/>
|
||||||
|
<on_visible function="List.IsInGroup"/>
|
||||||
|
</menu_item_call>
|
||||||
<menu_item_call label="Join Group" name="join_group">
|
<menu_item_call label="Join Group" name="join_group">
|
||||||
<on_click function="List.Join"/>
|
<on_click function="List.Join"/>
|
||||||
<on_visible function="List.NotInGroup"/>
|
<on_visible function="List.NotInGroup"/>
|
||||||
|
|||||||
@@ -40,6 +40,10 @@
|
|||||||
<menu_item_call.on_click
|
<menu_item_call.on_click
|
||||||
function="Text.Url" userdata="Teleport" />
|
function="Text.Url" userdata="Teleport" />
|
||||||
</menu_item_call>
|
</menu_item_call>
|
||||||
|
<menu_item_call label="Cam To" name="Cam To">
|
||||||
|
<on_click function="List.Object.CamTo"/>
|
||||||
|
<on_visible function="List.IsNearby"/>
|
||||||
|
</menu_item_call>
|
||||||
<menu_item_call label="Follow" name="Follow">
|
<menu_item_call label="Follow" name="Follow">
|
||||||
<on_click function="List.Follow"/>
|
<on_click function="List.Follow"/>
|
||||||
<on_visible function="List.IsNearby"/>
|
<on_visible function="List.IsNearby"/>
|
||||||
|
|||||||
@@ -24,7 +24,6 @@
|
|||||||
<menu_item_call label="Enfocar Siguiente" name="Focus Next"/>
|
<menu_item_call label="Enfocar Siguiente" name="Focus Next"/>
|
||||||
<menu_item_call label="Enfocar Anterior" name="Focus Previous"/>
|
<menu_item_call label="Enfocar Anterior" name="Focus Previous"/>
|
||||||
<menu_item_separator/>
|
<menu_item_separator/>
|
||||||
<menu_item_call label="Marcar/Desmarcar" name="Mark/Unmark"/>
|
|
||||||
<menu_item_call label="Enfocar Siguiente Marcado" name="Focus Next Marked"/>
|
<menu_item_call label="Enfocar Siguiente Marcado" name="Focus Next Marked"/>
|
||||||
<menu_item_call label="Enfocar Anterior Marcado" name="Focus Previous Marked"/>
|
<menu_item_call label="Enfocar Anterior Marcado" name="Focus Previous Marked"/>
|
||||||
</menu>
|
</menu>
|
||||||
|
|||||||
Reference in New Issue
Block a user