summaryrefslogtreecommitdiff
path: root/indra/llui/llcommandmanager.h
diff options
context:
space:
mode:
authorLeslie Linden <leslie@lindenlab.com>2011-09-21 17:25:38 -0700
committerLeslie Linden <leslie@lindenlab.com>2011-09-21 17:25:38 -0700
commit412e29ed9d62e975a5290c6008558a739b88065d (patch)
tree4fa73ecfb7c661270a6562c7831d703511d17731 /indra/llui/llcommandmanager.h
parent3dfc05c2e84923bc0aef5256d227f566aaa37868 (diff)
EXP-1205 PROGRESS -- As a User, I want a toybox which will contain all buttons that I can d&d into the toolbars
EXP-1232 FIX -- Create class to load and hold all of the command meta data associated with FUI toolbar actions * Added basic commands.xml file to define FUI-related toolbar actions. For now a basic "avatar" and "places" button are defined. * Added basic command manager to parse and hold strings that define potential toolbar command actions. * Broke out a separate floater function as a placeholder for the 3-state toolbar floater toggling. * LLUI::initClass now parses the new commands.xml file Reviewed by Richard.
Diffstat (limited to 'indra/llui/llcommandmanager.h')
-rw-r--r--indra/llui/llcommandmanager.h97
1 files changed, 97 insertions, 0 deletions
diff --git a/indra/llui/llcommandmanager.h b/indra/llui/llcommandmanager.h
new file mode 100644
index 0000000000..4f3c9b2ada
--- /dev/null
+++ b/indra/llui/llcommandmanager.h
@@ -0,0 +1,97 @@
+/**
+ * @file llcommandmanager.h
+ * @brief LLCommandManager class to hold commands
+ *
+ * $LicenseInfo:firstyear=2001&license=viewerlgpl$
+ * Second Life Viewer Source Code
+ * Copyright (C) 2011, Linden Research, Inc.
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation;
+ * version 2.1 of the License only.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+ *
+ * Linden Research, Inc., 945 Battery Street, San Francisco, CA 94111 USA
+ * $/LicenseInfo$
+ */
+
+#ifndef LL_COMMANDMANAGER_H
+#define LL_COMMANDMANAGER_H
+
+#include "llinitparam.h"
+#include "llsingleton.h"
+
+
+class LLCommand
+{
+public:
+ struct Params : public LLInitParam::Block<Params>
+ {
+ Mandatory<std::string> function;
+ Mandatory<std::string> icon;
+ Mandatory<std::string> label_ref;
+ Mandatory<std::string> name;
+ Optional<std::string> param;
+ Mandatory<std::string> tooltip_ref;
+
+ Params();
+ };
+
+ LLCommand(const LLCommand::Params& p);
+
+ const std::string& functionName() const { return mFunction; }
+ const std::string& icon() const { return mIcon; }
+ const std::string& labelRef() const { return mLabelRef; }
+ const std::string& name() const { return mName; }
+ const std::string& param() const { return mParam; }
+ const std::string& tooltipRef() const { return mTooltipRef; }
+
+private:
+ std::string mFunction;
+ std::string mIcon;
+ std::string mLabelRef;
+ std::string mName;
+ std::string mParam;
+ std::string mTooltipRef;
+};
+
+
+class LLCommandManager
+: public LLSingleton<LLCommandManager>
+{
+public:
+ struct Params : public LLInitParam::Block<Params>
+ {
+ Multiple< LLCommand::Params, AtLeast<1> > commands;
+
+ Params()
+ : commands("command")
+ {
+ }
+ };
+
+ LLCommandManager();
+ ~LLCommandManager();
+
+ U32 count() const;
+ LLCommand * getCommand(U32 commandIndex);
+ LLCommand * getCommand(const std::string& commandName);
+
+ static bool load();
+
+private:
+ typedef std::vector<LLCommand *> CommandVector;
+ CommandVector mCommands;
+};
+
+
+#endif // LL_COMMANDMANAGER_H