diff options
author | Leslie Linden <leslie@lindenlab.com> | 2011-09-21 17:25:38 -0700 |
---|---|---|
committer | Leslie Linden <leslie@lindenlab.com> | 2011-09-21 17:25:38 -0700 |
commit | 412e29ed9d62e975a5290c6008558a739b88065d (patch) | |
tree | 4fa73ecfb7c661270a6562c7831d703511d17731 /indra/llui/llcommandmanager.h | |
parent | 3dfc05c2e84923bc0aef5256d227f566aaa37868 (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.h | 97 |
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 |