summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--indra/llcommon/CMakeLists.txt2
-rw-r--r--indra/llcommon/lleventapi.cpp30
-rw-r--r--indra/llcommon/lleventapi.h53
-rw-r--r--indra/llcommon/lleventdispatcher.cpp12
-rw-r--r--indra/llcommon/lleventdispatcher.h35
-rw-r--r--indra/llmessage/llares.cpp2
-rw-r--r--indra/llmessage/llareslistener.cpp13
-rw-r--r--indra/llmessage/llareslistener.h9
-rw-r--r--indra/llui/llfloaterreg.cpp2
-rw-r--r--indra/llui/llfloaterreglistener.cpp30
-rw-r--r--indra/llui/llfloaterreglistener.h6
-rw-r--r--indra/llui/llnotificationslistener.cpp8
-rw-r--r--indra/llui/llnotificationslistener.h4
-rw-r--r--indra/newview/llagentlistener.cpp16
-rw-r--r--indra/newview/llagentlistener.h4
-rw-r--r--indra/newview/llappviewer.cpp2
-rw-r--r--indra/newview/llappviewerlistener.cpp14
-rw-r--r--indra/newview/llappviewerlistener.h9
-rw-r--r--indra/newview/llfloaterabout.cpp12
-rw-r--r--indra/newview/lllogininstance.cpp6
-rw-r--r--indra/newview/lluilistener.cpp12
-rw-r--r--indra/newview/lluilistener.h6
-rw-r--r--indra/newview/llviewercontrollistener.cpp20
-rw-r--r--indra/newview/llviewercontrollistener.h4
-rw-r--r--indra/newview/llviewermenu.cpp2
-rw-r--r--indra/newview/llviewerwindow.cpp2
-rw-r--r--indra/newview/llviewerwindowlistener.cpp16
-rw-r--r--indra/newview/llviewerwindowlistener.h9
28 files changed, 254 insertions, 86 deletions
diff --git a/indra/llcommon/CMakeLists.txt b/indra/llcommon/CMakeLists.txt
index 2d0363d188..e41c75846b 100644
--- a/indra/llcommon/CMakeLists.txt
+++ b/indra/llcommon/CMakeLists.txt
@@ -41,6 +41,7 @@ set(llcommon_SOURCE_FILES
llerror.cpp
llerrorthread.cpp
llevent.cpp
+ lleventapi.cpp
lleventcoro.cpp
lleventdispatcher.cpp
lleventfilter.cpp
@@ -140,6 +141,7 @@ set(llcommon_HEADER_FILES
llerrorlegacy.h
llerrorthread.h
llevent.h
+ lleventapi.h
lleventcoro.h
lleventdispatcher.h
lleventfilter.h
diff --git a/indra/llcommon/lleventapi.cpp b/indra/llcommon/lleventapi.cpp
new file mode 100644
index 0000000000..1dd104da8f
--- /dev/null
+++ b/indra/llcommon/lleventapi.cpp
@@ -0,0 +1,30 @@
+/**
+ * @file lleventapi.cpp
+ * @author Nat Goodspeed
+ * @date 2009-11-10
+ * @brief Implementation for lleventapi.
+ *
+ * $LicenseInfo:firstyear=2009&license=viewergpl$
+ * Copyright (c) 2009, Linden Research, Inc.
+ * $/LicenseInfo$
+ */
+
+// Precompiled header
+#include "linden_common.h"
+// associated header
+#include "lleventapi.h"
+// STL headers
+// std headers
+// external library headers
+// other Linden headers
+
+LLEventAPI::LLEventAPI(const std::string& name, const std::string& desc, const std::string& field):
+ lbase(name, field),
+ ibase(name),
+ mDesc(desc)
+{
+}
+
+LLEventAPI::~LLEventAPI()
+{
+}
diff --git a/indra/llcommon/lleventapi.h b/indra/llcommon/lleventapi.h
new file mode 100644
index 0000000000..fef12988cb
--- /dev/null
+++ b/indra/llcommon/lleventapi.h
@@ -0,0 +1,53 @@
+/**
+ * @file lleventapi.h
+ * @author Nat Goodspeed
+ * @date 2009-10-28
+ * @brief LLEventAPI is the base class for every class that wraps a C++ API
+ * in an event API
+ * (see https://wiki.lindenlab.com/wiki/Incremental_Viewer_Automation/Event_API).
+ *
+ * $LicenseInfo:firstyear=2009&license=viewergpl$
+ * Copyright (c) 2009, Linden Research, Inc.
+ * $/LicenseInfo$
+ */
+
+#if ! defined(LL_LLEVENTAPI_H)
+#define LL_LLEVENTAPI_H
+
+#include "lleventdispatcher.h"
+#include "llinstancetracker.h"
+#include <string>
+
+/**
+ * LLEventAPI not only provides operation dispatch functionality, inherited
+ * from LLDispatchListener -- it also gives us event API introspection.
+ * Deriving from LLInstanceTracker lets us enumerate instances.
+ */
+class LLEventAPI: public LLDispatchListener,
+ public LLInstanceTracker<LLEventAPI, std::string>
+{
+ typedef LLDispatchListener lbase;
+ typedef LLInstanceTracker<LLEventAPI, std::string> ibase;
+
+public:
+ /**
+ * @param name LLEventPump name on which this LLEventAPI will listen. This
+ * also serves as the LLInstanceTracker instance key.
+ * @param desc Documentation string shown to a client trying to discover
+ * available event APIs.
+ * @param field LLSD::Map key used by LLDispatchListener to look up the
+ * subclass method to invoke [default "op"].
+ */
+ LLEventAPI(const std::string& name, const std::string& desc, const std::string& field="op");
+ virtual ~LLEventAPI();
+
+ /// Get the string name of this LLEventAPI
+ std::string getName() const { return ibase::getKey(); }
+ /// Get the documentation string
+ std::string getDesc() const { return mDesc; }
+
+private:
+ std::string mDesc;
+};
+
+#endif /* ! defined(LL_LLEVENTAPI_H) */
diff --git a/indra/llcommon/lleventdispatcher.cpp b/indra/llcommon/lleventdispatcher.cpp
index 6b1413d054..017bf3a521 100644
--- a/indra/llcommon/lleventdispatcher.cpp
+++ b/indra/llcommon/lleventdispatcher.cpp
@@ -36,9 +36,11 @@ LLEventDispatcher::~LLEventDispatcher()
}
/// Register a callable by name
-void LLEventDispatcher::add(const std::string& name, const Callable& callable, const LLSD& required)
+void LLEventDispatcher::add(const std::string& name, const std::string& desc,
+ const Callable& callable, const LLSD& required)
{
- mDispatch[name] = DispatchMap::mapped_type(callable, required);
+ mDispatch.insert(DispatchMap::value_type(name,
+ DispatchMap::mapped_type(callable, desc, required)));
}
void LLEventDispatcher::addFail(const std::string& name, const std::string& classname) const
@@ -98,14 +100,14 @@ bool LLEventDispatcher::attemptCall(const std::string& name, const LLSD& event)
}
// Found the name, so it's plausible to even attempt the call. But first,
// validate the syntax of the event itself.
- std::string mismatch(llsd_matches(found->second.second, event));
+ std::string mismatch(llsd_matches(found->second.mRequired, event));
if (! mismatch.empty())
{
LL_ERRS("LLEventDispatcher") << "LLEventDispatcher(" << mDesc << ") calling '" << name
<< "': bad request: " << mismatch << LL_ENDL;
}
// Event syntax looks good, go for it!
- (found->second.first)(event);
+ (found->second.mFunc)(event);
return true; // tell caller we were able to call
}
@@ -116,7 +118,7 @@ LLEventDispatcher::Callable LLEventDispatcher::get(const std::string& name) cons
{
return Callable();
}
- return found->second.first;
+ return found->second.mFunc;
}
LLDispatchListener::LLDispatchListener(const std::string& pumpname, const std::string& key):
diff --git a/indra/llcommon/lleventdispatcher.h b/indra/llcommon/lleventdispatcher.h
index 5a86b90bff..eba7b607f1 100644
--- a/indra/llcommon/lleventdispatcher.h
+++ b/indra/llcommon/lleventdispatcher.h
@@ -44,7 +44,10 @@ public:
* is used to validate the structure of each incoming event (see
* llsd_matches()).
*/
- void add(const std::string& name, const Callable& callable, const LLSD& required=LLSD());
+ void add(const std::string& name,
+ const std::string& desc,
+ const Callable& callable,
+ const LLSD& required=LLSD());
/**
* Special case: a subclass of this class can pass an unbound member
@@ -52,18 +55,22 @@ public:
* <tt>boost::bind()</tt> expression.
*/
template <class CLASS>
- void add(const std::string& name, void (CLASS::*method)(const LLSD&),
+ void add(const std::string& name,
+ const std::string& desc,
+ void (CLASS::*method)(const LLSD&),
const LLSD& required=LLSD())
{
- addMethod<CLASS>(name, method, required);
+ addMethod<CLASS>(name, desc, method, required);
}
/// Overload for both const and non-const methods
template <class CLASS>
- void add(const std::string& name, void (CLASS::*method)(const LLSD&) const,
+ void add(const std::string& name,
+ const std::string& desc,
+ void (CLASS::*method)(const LLSD&) const,
const LLSD& required=LLSD())
{
- addMethod<CLASS>(name, method, required);
+ addMethod<CLASS>(name, desc, method, required);
}
/// Unregister a callable
@@ -86,7 +93,8 @@ public:
private:
template <class CLASS, typename METHOD>
- void addMethod(const std::string& name, const METHOD& method, const LLSD& required)
+ void addMethod(const std::string& name, const std::string& desc,
+ const METHOD& method, const LLSD& required)
{
CLASS* downcast = dynamic_cast<CLASS*>(this);
if (! downcast)
@@ -95,7 +103,7 @@ private:
}
else
{
- add(name, boost::bind(method, downcast, _1), required);
+ add(name, desc, boost::bind(method, downcast, _1), required);
}
}
void addFail(const std::string& name, const std::string& classname) const;
@@ -103,7 +111,18 @@ private:
bool attemptCall(const std::string& name, const LLSD& event) const;
std::string mDesc, mKey;
- typedef std::map<std::string, std::pair<Callable, LLSD> > DispatchMap;
+ struct DispatchEntry
+ {
+ DispatchEntry(const Callable& func, const std::string& desc, const LLSD& required):
+ mFunc(func),
+ mDesc(desc),
+ mRequired(required)
+ {}
+ Callable mFunc;
+ std::string mDesc;
+ LLSD mRequired;
+ };
+ typedef std::map<std::string, DispatchEntry> DispatchMap;
DispatchMap mDispatch;
};
diff --git a/indra/llmessage/llares.cpp b/indra/llmessage/llares.cpp
index acbf51d75c..104629c157 100644
--- a/indra/llmessage/llares.cpp
+++ b/indra/llmessage/llares.cpp
@@ -106,7 +106,7 @@ void LLAres::QueryResponder::queryError(int code)
LLAres::LLAres() :
chan_(NULL),
mInitSuccess(false),
- mListener(new LLAresListener("LLAres", this))
+ mListener(new LLAresListener(this))
{
if (ares_init(&chan_) != ARES_SUCCESS)
{
diff --git a/indra/llmessage/llareslistener.cpp b/indra/llmessage/llareslistener.cpp
index a8beb8cbde..7db3675b77 100644
--- a/indra/llmessage/llareslistener.cpp
+++ b/indra/llmessage/llareslistener.cpp
@@ -22,13 +22,18 @@
#include "llevents.h"
#include "llsdutil.h"
-LLAresListener::LLAresListener(const std::string& pumpname, LLAres* llares):
- LLDispatchListener(pumpname, "op"),
+LLAresListener::LLAresListener(LLAres* llares):
+ LLEventAPI("LLAres",
+ "LLAres listener to request DNS operations"),
mAres(llares)
{
// add() every method we want to be able to invoke via this event API.
- // Optional third parameter validates expected LLSD request structure.
- add("rewriteURI", &LLAresListener::rewriteURI,
+ // Optional last parameter validates expected LLSD request structure.
+ add("rewriteURI",
+ "Given [\"uri\"], return on [\"reply\"] an array of alternative URIs.\n"
+ "On failure, returns an array containing only the original URI, so\n"
+ "failure case can be processed like success case.",
+ &LLAresListener::rewriteURI,
LLSD().insert("uri", LLSD()).insert("reply", LLSD()));
}
diff --git a/indra/llmessage/llareslistener.h b/indra/llmessage/llareslistener.h
index bf093b3d3d..33cef79c09 100644
--- a/indra/llmessage/llareslistener.h
+++ b/indra/llmessage/llareslistener.h
@@ -14,18 +14,17 @@
#if ! defined(LL_LLARESLISTENER_H)
#define LL_LLARESLISTENER_H
-#include "lleventdispatcher.h"
+#include "lleventapi.h"
class LLAres;
class LLSD;
/// Listen on an LLEventPump with specified name for LLAres request events.
-class LLAresListener: public LLDispatchListener
+class LLAresListener: public LLEventAPI
{
public:
- /// Specify the pump name on which to listen, and bind the LLAres instance
- /// to use (e.g. gAres)
- LLAresListener(const std::string& pumpname, LLAres* llares);
+ /// Bind the LLAres instance to use (e.g. gAres)
+ LLAresListener(LLAres* llares);
private:
/// command["op"] == "rewriteURI"
diff --git a/indra/llui/llfloaterreg.cpp b/indra/llui/llfloaterreg.cpp
index 03925f922c..eb67e3a561 100644
--- a/indra/llui/llfloaterreg.cpp
+++ b/indra/llui/llfloaterreg.cpp
@@ -46,7 +46,7 @@ LLFloaterReg::instance_map_t LLFloaterReg::sInstanceMap;
LLFloaterReg::build_map_t LLFloaterReg::sBuildMap;
std::map<std::string,std::string> LLFloaterReg::sGroupMap;
-static LLFloaterRegListener sFloaterRegListener("LLFloaterReg");
+static LLFloaterRegListener sFloaterRegListener;
//*******************************************************
diff --git a/indra/llui/llfloaterreglistener.cpp b/indra/llui/llfloaterreglistener.cpp
index 57d148b5af..029d3b6810 100644
--- a/indra/llui/llfloaterreglistener.cpp
+++ b/indra/llui/llfloaterreglistener.cpp
@@ -21,19 +21,35 @@
#include "llfloater.h"
#include "llbutton.h"
-LLFloaterRegListener::LLFloaterRegListener(const std::string& pumpName):
- LLDispatchListener(pumpName, "op")
+LLFloaterRegListener::LLFloaterRegListener():
+ LLEventAPI("LLFloaterReg",
+ "LLFloaterReg listener to (e.g.) show/hide LLFloater instances")
{
- add("getBuildMap", &LLFloaterRegListener::getBuildMap, LLSD().insert("reply", LLSD()));
+ add("getBuildMap",
+ "Return on [\"reply\"] data about all registered LLFloaterReg floater names",
+ &LLFloaterRegListener::getBuildMap,
+ LLSD().insert("reply", LLSD()));
LLSD requiredName;
requiredName["name"] = LLSD();
- add("showInstance", &LLFloaterRegListener::showInstance, requiredName);
- add("hideInstance", &LLFloaterRegListener::hideInstance, requiredName);
- add("toggleInstance", &LLFloaterRegListener::toggleInstance, requiredName);
+ add("showInstance",
+ "Ask to display the floater specified in [\"name\"]",
+ &LLFloaterRegListener::showInstance,
+ requiredName);
+ add("hideInstance",
+ "Ask to hide the floater specified in [\"name\"]",
+ &LLFloaterRegListener::hideInstance,
+ requiredName);
+ add("toggleInstance",
+ "Ask to toggle the state of the floater specified in [\"name\"]",
+ &LLFloaterRegListener::toggleInstance,
+ requiredName);
LLSD requiredNameButton;
requiredNameButton["name"] = LLSD();
requiredNameButton["button"] = LLSD();
- add("clickButton", &LLFloaterRegListener::clickButton, requiredNameButton);
+ add("clickButton",
+ "Simulate clicking the named [\"button\"] in the visible floater named in [\"name\"]",
+ &LLFloaterRegListener::clickButton,
+ requiredNameButton);
}
void LLFloaterRegListener::getBuildMap(const LLSD& event) const
diff --git a/indra/llui/llfloaterreglistener.h b/indra/llui/llfloaterreglistener.h
index 304ecd1090..a38117f6b0 100644
--- a/indra/llui/llfloaterreglistener.h
+++ b/indra/llui/llfloaterreglistener.h
@@ -12,18 +12,18 @@
#if ! defined(LL_LLFLOATERREGLISTENER_H)
#define LL_LLFLOATERREGLISTENER_H
-#include "lleventdispatcher.h"
+#include "lleventapi.h"
#include <string>
class LLSD;
/// Event API wrapper for LLFloaterReg
-class LLFloaterRegListener: public LLDispatchListener
+class LLFloaterRegListener: public LLEventAPI
{
public:
/// As all public LLFloaterReg methods are static, there's no point in
/// binding an LLFloaterReg instance.
- LLFloaterRegListener(const std::string& pumpName);
+ LLFloaterRegListener();
private:
void getBuildMap(const LLSD& event) const;
diff --git a/indra/llui/llnotificationslistener.cpp b/indra/llui/llnotificationslistener.cpp
index 75f4d6177d..fe4fbe7510 100644
--- a/indra/llui/llnotificationslistener.cpp
+++ b/indra/llui/llnotificationslistener.cpp
@@ -16,10 +16,14 @@
#include "llnotifications.h"
LLNotificationsListener::LLNotificationsListener(LLNotifications & notifications) :
- LLDispatchListener("LLNotifications", "op"),
+ LLEventAPI("LLNotifications",
+ "LLNotifications listener to (e.g.) pop up a notification"),
mNotifications(notifications)
{
- add("requestAdd", &LLNotificationsListener::requestAdd);
+ add("requestAdd",
+ "Add a notification with specified [\"name\"], [\"substitutions\"] and [\"payload\"].\n"
+ "If optional [\"reply\"] specified, arrange to send user response on that LLEventPump.",
+ &LLNotificationsListener::requestAdd);
}
void LLNotificationsListener::requestAdd(const LLSD& event_data) const
diff --git a/indra/llui/llnotificationslistener.h b/indra/llui/llnotificationslistener.h
index 6f71a7c781..9b405d7b4b 100644
--- a/indra/llui/llnotificationslistener.h
+++ b/indra/llui/llnotificationslistener.h
@@ -12,12 +12,12 @@
#ifndef LL_LLNOTIFICATIONSLISTENER_H
#define LL_LLNOTIFICATIONSLISTENER_H
-#include "lleventdispatcher.h"
+#include "lleventapi.h"
class LLNotifications;
class LLSD;
-class LLNotificationsListener : public LLDispatchListener
+class LLNotificationsListener : public LLEventAPI
{
public:
LLNotificationsListener(LLNotifications & notifications);
diff --git a/indra/newview/llagentlistener.cpp b/indra/newview/llagentlistener.cpp
index 0f00078b33..3da6a4e3f4 100644
--- a/indra/newview/llagentlistener.cpp
+++ b/indra/newview/llagentlistener.cpp
@@ -22,12 +22,20 @@
#include "llviewerregion.h"
LLAgentListener::LLAgentListener(LLAgent &agent)
- : LLDispatchListener("LLAgent", "op"),
+ : LLEventAPI("LLAgent",
+ "LLAgent listener to (e.g.) teleport, sit, stand, etc."),
mAgent(agent)
{
- add("requestTeleport", &LLAgentListener::requestTeleport);
- add("requestSit", &LLAgentListener::requestSit);
- add("requestStand", &LLAgentListener::requestStand);
+ add("requestTeleport",
+ "Teleport: [\"regionname\"], [\"x\"], [\"y\"], [\"z\"]\n"
+ "If [\"skip_confirmation\"] is true, use LLURLDispatcher rather than LLCommandDispatcher.",
+ &LLAgentListener::requestTeleport);
+ add("requestSit",
+ "Ask to sit on the object specified in [\"obj_uuid\"]",
+ &LLAgentListener::requestSit);
+ add("requestStand",
+ "Ask to stand up",
+ &LLAgentListener::requestStand);
}
void LLAgentListener::requestTeleport(LLSD const & event_data) const
diff --git a/indra/newview/llagentlistener.h b/indra/newview/llagentlistener.h
index 6f0b5a54c5..eed6922b3e 100644
--- a/indra/newview/llagentlistener.h
+++ b/indra/newview/llagentlistener.h
@@ -13,12 +13,12 @@
#ifndef LL_LLAGENTLISTENER_H
#define LL_LLAGENTLISTENER_H
-#include "lleventdispatcher.h"
+#include "lleventapi.h"
class LLAgent;
class LLSD;
-class LLAgentListener : public LLDispatchListener
+class LLAgentListener : public LLEventAPI
{
public:
LLAgentListener(LLAgent &agent);
diff --git a/indra/newview/llappviewer.cpp b/indra/newview/llappviewer.cpp
index ddb6589b49..845a264327 100644
--- a/indra/newview/llappviewer.cpp
+++ b/indra/newview/llappviewer.cpp
@@ -207,7 +207,7 @@
#pragma warning (disable:4702)
#endif
-static LLAppViewerListener sAppViewerListener("LLAppViewer", LLAppViewer::instance);
+static LLAppViewerListener sAppViewerListener(LLAppViewer::instance);
////// Windows-specific includes to the bottom - nasty defines in these pollute the preprocessor
//
diff --git a/indra/newview/llappviewerlistener.cpp b/indra/newview/llappviewerlistener.cpp
index 3259309eee..adb5f43c1a 100644
--- a/indra/newview/llappviewerlistener.cpp
+++ b/indra/newview/llappviewerlistener.cpp
@@ -19,14 +19,18 @@
// other Linden headers
#include "llappviewer.h"
-LLAppViewerListener::LLAppViewerListener(const std::string& pumpname,
- const LLAppViewerGetter& getter):
- LLDispatchListener(pumpname, "op"),
+LLAppViewerListener::LLAppViewerListener(const LLAppViewerGetter& getter):
+ LLEventAPI("LLAppViewer",
+ "LLAppViewer listener to (e.g.) request shutdown"),
mAppViewerGetter(getter)
{
// add() every method we want to be able to invoke via this event API.
- add("requestQuit", &LLAppViewerListener::requestQuit);
- add("forceQuit", &LLAppViewerListener::forceQuit);
+ add("requestQuit",
+ "Ask to quit nicely",
+ &LLAppViewerListener::requestQuit);
+ add("forceQuit",
+ "Quit abruptly",
+ &LLAppViewerListener::forceQuit);
}
void LLAppViewerListener::requestQuit(const LLSD& event)
diff --git a/indra/newview/llappviewerlistener.h b/indra/newview/llappviewerlistener.h
index 73227cb95a..deedcbc179 100644
--- a/indra/newview/llappviewerlistener.h
+++ b/indra/newview/llappviewerlistener.h
@@ -12,20 +12,19 @@
#if ! defined(LL_LLAPPVIEWERLISTENER_H)
#define LL_LLAPPVIEWERLISTENER_H
-#include "lleventdispatcher.h"
+#include "lleventapi.h"
#include <boost/function.hpp>
class LLAppViewer;
class LLSD;
/// Listen on an LLEventPump with specified name for LLAppViewer request events.
-class LLAppViewerListener: public LLDispatchListener
+class LLAppViewerListener: public LLEventAPI
{
public:
typedef boost::function<LLAppViewer*(void)> LLAppViewerGetter;
- /// Specify the pump name on which to listen, and bind the LLAppViewer
- /// instance to use (e.g. LLAppViewer::instance()).
- LLAppViewerListener(const std::string& pumpname, const LLAppViewerGetter& getter);
+ /// Bind the LLAppViewer instance to use (e.g. LLAppViewer::instance()).
+ LLAppViewerListener(const LLAppViewerGetter& getter);
private:
void requestQuit(const LLSD& event);
diff --git a/indra/newview/llfloaterabout.cpp b/indra/newview/llfloaterabout.cpp
index b01293d17c..80b0a430e0 100644
--- a/indra/newview/llfloaterabout.cpp
+++ b/indra/newview/llfloaterabout.cpp
@@ -64,7 +64,7 @@
#include "llwindow.h"
#include "stringize.h"
#include "llsdutil_math.h"
-#include "lleventdispatcher.h"
+#include "lleventapi.h"
#if LL_WINDOWS
#include "lldxhardware.h"
@@ -302,13 +302,17 @@ static std::string get_viewer_release_notes_url()
return LLWeb::escapeURL(url.str());
}
-class LLFloaterAboutListener: public LLDispatchListener
+class LLFloaterAboutListener: public LLEventAPI
{
public:
LLFloaterAboutListener():
- LLDispatchListener("LLFloaterAbout", "op")
+ LLEventAPI("LLFloaterAbout",
+ "LLFloaterAbout listener to retrieve About box info")
{
- add("getInfo", &LLFloaterAboutListener::getInfo, LLSD().insert("reply", LLSD()));
+ add("getInfo",
+ "Request an LLSD::Map containing information used to populate About box",
+ &LLFloaterAboutListener::getInfo,
+ LLSD().insert("reply", LLSD()));
}
private:
diff --git a/indra/newview/lllogininstance.cpp b/indra/newview/lllogininstance.cpp
index e5f347ddc4..945294f3f2 100644
--- a/indra/newview/lllogininstance.cpp
+++ b/indra/newview/lllogininstance.cpp
@@ -73,9 +73,9 @@ LLLoginInstance::LLLoginInstance() :
{
mLoginModule->getEventPump().listen("lllogininstance",
boost::bind(&LLLoginInstance::handleLoginEvent, this, _1));
- mDispatcher.add("fail.login", boost::bind(&LLLoginInstance::handleLoginFailure, this, _1));
- mDispatcher.add("connect", boost::bind(&LLLoginInstance::handleLoginSuccess, this, _1));
- mDispatcher.add("disconnect", boost::bind(&LLLoginInstance::handleDisconnect, this, _1));
+ mDispatcher.add("fail.login", "", boost::bind(&LLLoginInstance::handleLoginFailure, this, _1));
+ mDispatcher.add("connect", "", boost::bind(&LLLoginInstance::handleLoginSuccess, this, _1));
+ mDispatcher.add("disconnect", "", boost::bind(&LLLoginInstance::handleDisconnect, this, _1));
}
LLLoginInstance::~LLLoginInstance()
diff --git a/indra/newview/lluilistener.cpp b/indra/newview/lluilistener.cpp
index 9c643e78de..8b4cfa7248 100644
--- a/indra/newview/lluilistener.cpp
+++ b/indra/newview/lluilistener.cpp
@@ -20,10 +20,16 @@
#include "lluictrl.h"
#include "llerror.h"
-LLUIListener::LLUIListener(const std::string& name):
- LLDispatchListener(name, "op")
+LLUIListener::LLUIListener():
+ LLEventAPI("UI",
+ "LLUICtrl::CommitCallbackRegistry listener.\n"
+ "Capable of invoking any function (with parameter) you can specify in XUI.")
{
- add("call", &LLUIListener::call, LLSD().insert("function", LLSD()));
+ add("call",
+ "Invoke the operation named by [\"function\"], passing [\"parameter\"],\n"
+ "as if from a user gesture on a menu -- or a button click.",
+ &LLUIListener::call,
+ LLSD().insert("function", LLSD()));
}
void LLUIListener::call(const LLSD& event) const
diff --git a/indra/newview/lluilistener.h b/indra/newview/lluilistener.h
index ea904a99ff..8605d60bd3 100644
--- a/indra/newview/lluilistener.h
+++ b/indra/newview/lluilistener.h
@@ -12,15 +12,15 @@
#if ! defined(LL_LLUILISTENER_H)
#define LL_LLUILISTENER_H
-#include "lleventdispatcher.h"
+#include "lleventapi.h"
#include <string>
class LLSD;
-class LLUIListener: public LLDispatchListener
+class LLUIListener: public LLEventAPI
{
public:
- LLUIListener(const std::string& name);
+ LLUIListener();
private:
void call(const LLSD& event) const;
diff --git a/indra/newview/llviewercontrollistener.cpp b/indra/newview/llviewercontrollistener.cpp
index ecba1b8eb0..0b9db1b906 100644
--- a/indra/newview/llviewercontrollistener.cpp
+++ b/indra/newview/llviewercontrollistener.cpp
@@ -18,12 +18,22 @@
LLViewerControlListener gSavedSettingsListener;
LLViewerControlListener::LLViewerControlListener()
- : LLDispatchListener("LLViewerControl", "group")
+ : LLEventAPI("LLViewerControl",
+ "LLViewerControl listener: set, toggle or set default for various controls",
+ "group")
{
- add("Global", boost::bind(&LLViewerControlListener::set, &gSavedSettings, _1));
- add("PerAccount", boost::bind(&LLViewerControlListener::set, &gSavedPerAccountSettings, _1));
- add("Warning", boost::bind(&LLViewerControlListener::set, &gWarningSettings, _1));
- add("Crash", boost::bind(&LLViewerControlListener::set, &gCrashSettings, _1));
+ add("Global",
+ "Set gSavedSettings control [\"key\"] to value [\"value\"]",
+ boost::bind(&LLViewerControlListener::set, &gSavedSettings, _1));
+ add("PerAccount",
+ "Set gSavedPerAccountSettings control [\"key\"] to value [\"value\"]",
+ boost::bind(&LLViewerControlListener::set, &gSavedPerAccountSettings, _1));
+ add("Warning",
+ "Set gWarningSettings control [\"key\"] to value [\"value\"]",
+ boost::bind(&LLViewerControlListener::set, &gWarningSettings, _1));
+ add("Crash",
+ "Set gCrashSettings control [\"key\"] to value [\"value\"]",
+ boost::bind(&LLViewerControlListener::set, &gCrashSettings, _1));
#if 0
add(/*"toggleControl",*/ "Global", boost::bind(&LLViewerControlListener::toggleControl, &gSavedSettings, _1));
diff --git a/indra/newview/llviewercontrollistener.h b/indra/newview/llviewercontrollistener.h
index cacf97e908..88afbb871d 100644
--- a/indra/newview/llviewercontrollistener.h
+++ b/indra/newview/llviewercontrollistener.h
@@ -12,12 +12,12 @@
#ifndef LL_LLVIEWERCONTROLLISTENER_H
#define LL_LLVIEWERCONTROLLISTENER_H
-#include "lleventdispatcher.h"
+#include "lleventapi.h"
class LLControlGroup;
class LLSD;
-class LLViewerControlListener : public LLDispatchListener
+class LLViewerControlListener : public LLEventAPI
{
public:
LLViewerControlListener();
diff --git a/indra/newview/llviewermenu.cpp b/indra/newview/llviewermenu.cpp
index 820f709ba5..976d89a5b7 100644
--- a/indra/newview/llviewermenu.cpp
+++ b/indra/newview/llviewermenu.cpp
@@ -415,7 +415,7 @@ public:
static LLMenuParcelObserver* gMenuParcelObserver = NULL;
-static LLUIListener sUIListener("UI");
+static LLUIListener sUIListener;
LLMenuParcelObserver::LLMenuParcelObserver()
{
diff --git a/indra/newview/llviewerwindow.cpp b/indra/newview/llviewerwindow.cpp
index 6b0f8814b9..d69cc5999c 100644
--- a/indra/newview/llviewerwindow.cpp
+++ b/indra/newview/llviewerwindow.cpp
@@ -1212,7 +1212,7 @@ LLViewerWindow::LLViewerWindow(
mStatesDirty(false),
mIsFullscreenChecked(false),
mCurrResolutionIndex(0),
- mViewerWindowListener(new LLViewerWindowListener("LLViewerWindow", this))
+ mViewerWindowListener(new LLViewerWindowListener(this))
{
LLNotificationChannel::buildChannel("VW_alerts", "Visible", LLNotificationFilters::filterBy<std::string>(&LLNotification::getType, "alert"));
LLNotificationChannel::buildChannel("VW_alertmodal", "Visible", LLNotificationFilters::filterBy<std::string>(&LLNotification::getType, "alertmodal"));
diff --git a/indra/newview/llviewerwindowlistener.cpp b/indra/newview/llviewerwindowlistener.cpp
index a890b042ae..de57788271 100644
--- a/indra/newview/llviewerwindowlistener.cpp
+++ b/indra/newview/llviewerwindowlistener.cpp
@@ -20,8 +20,9 @@
// other Linden headers
#include "llviewerwindow.h"
-LLViewerWindowListener::LLViewerWindowListener(const std::string& pumpname, LLViewerWindow* llviewerwindow):
- LLDispatchListener(pumpname, "op"),
+LLViewerWindowListener::LLViewerWindowListener(LLViewerWindow* llviewerwindow):
+ LLEventAPI("LLViewerWindow",
+ "LLViewerWindow listener to (e.g.) save a screenshot"),
mViewerWindow(llviewerwindow)
{
// add() every method we want to be able to invoke via this event API.
@@ -34,8 +35,15 @@ LLViewerWindowListener::LLViewerWindowListener(const std::string& pumpname, LLVi
// saveSnapshotArgs["showui"] = LLSD::Boolean();
// saveSnapshotArgs["rebuild"] = LLSD::Boolean();
// saveSnapshotArgs["type"] = LLSD::String();
- add("saveSnapshot", &LLViewerWindowListener::saveSnapshot, saveSnapshotArgs);
- add("requestReshape", &LLViewerWindowListener::requestReshape);
+ add("saveSnapshot",
+ "Save screenshot: [\"filename\"], [\"width\"], [\"height\"], [\"showui\"], [\"rebuild\"], [\"type\"]\n"
+ "type: \"COLOR\", \"DEPTH\", \"OBJECT_ID\"\n"
+ "Post on [\"reply\"] an event containing [\"ok\"]",
+ &LLViewerWindowListener::saveSnapshot,
+ saveSnapshotArgs);
+ add("requestReshape",
+ "Resize the window: [\"w\"], [\"h\"]",
+ &LLViewerWindowListener::requestReshape);
}
void LLViewerWindowListener::saveSnapshot(const LLSD& event) const
diff --git a/indra/newview/llviewerwindowlistener.h b/indra/newview/llviewerwindowlistener.h
index 59c636ecec..699f7907af 100644
--- a/indra/newview/llviewerwindowlistener.h
+++ b/indra/newview/llviewerwindowlistener.h
@@ -12,18 +12,17 @@
#if ! defined(LL_LLVIEWERWINDOWLISTENER_H)
#define LL_LLVIEWERWINDOWLISTENER_H
-#include "lleventdispatcher.h"
+#include "lleventapi.h"
class LLViewerWindow;
class LLSD;
/// Listen on an LLEventPump with specified name for LLViewerWindow request events.
-class LLViewerWindowListener: public LLDispatchListener
+class LLViewerWindowListener: public LLEventAPI
{
public:
- /// Specify the pump name on which to listen, and bind the LLViewerWindow
- /// instance to use (e.g. gViewerWindow).
- LLViewerWindowListener(const std::string& pumpname, LLViewerWindow* llviewerwindow);
+ /// Bind the LLViewerWindow instance to use (e.g. gViewerWindow).
+ LLViewerWindowListener(LLViewerWindow* llviewerwindow);
private:
void saveSnapshot(const LLSD& event) const;