summaryrefslogtreecommitdiff
path: root/indra
diff options
context:
space:
mode:
Diffstat (limited to 'indra')
-rw-r--r--indra/llui/CMakeLists.txt4
-rw-r--r--indra/llui/llcommandmanager.cpp138
-rw-r--r--indra/llui/llcommandmanager.h97
-rw-r--r--indra/llui/llfloaterreg.cpp11
-rw-r--r--indra/llui/llfloaterreg.h1
-rw-r--r--indra/llui/lltoolbarview.cpp74
-rw-r--r--indra/llui/lltoolbarview.h52
-rw-r--r--indra/llui/llui.cpp5
-rw-r--r--indra/newview/CMakeLists.txt1
-rw-r--r--indra/newview/app_settings/commands.xml17
-rw-r--r--indra/newview/app_settings/settings.xml11
-rw-r--r--indra/newview/llviewerwindow.cpp10
-rw-r--r--indra/newview/skins/default/textures/textures.xml3
-rw-r--r--indra/newview/skins/default/xui/en/main_view.xml35
-rw-r--r--indra/newview/skins/default/xui/en/strings.xml8
15 files changed, 466 insertions, 1 deletions
diff --git a/indra/llui/CMakeLists.txt b/indra/llui/CMakeLists.txt
index cf3f9b1a7b..4212812558 100644
--- a/indra/llui/CMakeLists.txt
+++ b/indra/llui/CMakeLists.txt
@@ -35,6 +35,7 @@ set(llui_SOURCE_FILES
llcheckboxctrl.cpp
llclipboard.cpp
llcombobox.cpp
+ llcommandmanager.cpp
llconsole.cpp
llcontainerview.cpp
llctrlselectioninterface.cpp
@@ -100,6 +101,7 @@ set(llui_SOURCE_FILES
lltransutil.cpp
lltoggleablemenu.cpp
lltoolbar.cpp
+ lltoolbarview.cpp
lltooltip.cpp
llui.cpp
lluicolortable.cpp
@@ -132,6 +134,7 @@ set(llui_HEADER_FILES
llcheckboxctrl.h
llclipboard.h
llcombobox.h
+ llcommandmanager.h
llconsole.h
llcontainerview.h
llctrlselectioninterface.h
@@ -202,6 +205,7 @@ set(llui_HEADER_FILES
lltimectrl.h
lltoggleablemenu.h
lltoolbar.h
+ lltoolbarview.h
lltooltip.h
lltransutil.h
lluicolortable.h
diff --git a/indra/llui/llcommandmanager.cpp b/indra/llui/llcommandmanager.cpp
new file mode 100644
index 0000000000..306b357d6a
--- /dev/null
+++ b/indra/llui/llcommandmanager.cpp
@@ -0,0 +1,138 @@
+/**
+ * @file llcommandmanager.cpp
+ * @brief LLCommandManager class
+ *
+ * $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$
+ */
+
+// A control that displays the name of the chosen item, which when
+// clicked shows a scrolling box of options.
+
+#include "linden_common.h"
+
+#include "llcommandmanager.h"
+#include "lldir.h"
+#include "llerror.h"
+#include "llxuiparser.h"
+
+#include <boost/foreach.hpp>
+
+
+//
+// LLCommand class
+//
+
+LLCommand::Params::Params()
+ : function("function")
+ , icon("icon")
+ , label_ref("label_ref")
+ , name("name")
+ , param("param")
+ , tooltip_ref("tooltip_ref")
+{
+}
+
+LLCommand::LLCommand(const LLCommand::Params& p)
+ : mFunction(p.function)
+ , mIcon(p.icon)
+ , mLabelRef(p.label_ref)
+ , mName(p.name)
+ , mParam(p.param)
+ , mTooltipRef(p.tooltip_ref)
+{
+}
+
+
+//
+// LLCommandManager class
+//
+
+LLCommandManager::LLCommandManager()
+{
+}
+
+LLCommandManager::~LLCommandManager()
+{
+}
+
+U32 LLCommandManager::count() const
+{
+ return mCommands.size();
+}
+
+LLCommand * LLCommandManager::getCommand(U32 commandIndex)
+{
+ return mCommands[commandIndex];
+}
+
+LLCommand * LLCommandManager::getCommand(const std::string& commandName)
+{
+ LLCommand * command_name_match = NULL;
+
+ for (CommandVector::iterator it = mCommands.begin(); it != mCommands.end(); ++it)
+ {
+ LLCommand * command = *it;
+
+ if (command->name() == commandName)
+ {
+ command_name_match = command;
+ break;
+ }
+ }
+
+ return command_name_match;
+}
+
+//static
+bool LLCommandManager::load()
+{
+ LLCommandManager& mgr = LLCommandManager::instance();
+
+ std::string commands_file = gDirUtilp->getExpandedFilename(LL_PATH_APP_SETTINGS, "commands.xml");
+
+ LLCommandManager::Params commandsParams;
+
+ LLSimpleXUIParser parser;
+
+ if (!parser.readXUI(commands_file, commandsParams))
+ {
+ llerrs << "Unable to load xml file: " << commands_file << llendl;
+ return false;
+ }
+
+ if (!commandsParams.validateBlock())
+ {
+ llerrs << "Unable to validate commands param block from file: " << commands_file << llendl;
+ return false;
+ }
+
+ BOOST_FOREACH(LLCommand::Params& commandParams, commandsParams.commands)
+ {
+ LLCommand * command = new LLCommand(commandParams);
+
+ mgr.mCommands.push_back(command);
+
+ llinfos << "Successfully loaded command: " << command->name() << llendl;
+ }
+
+ return true;
+}
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
diff --git a/indra/llui/llfloaterreg.cpp b/indra/llui/llfloaterreg.cpp
index fc7dcfcc4e..bc740dde17 100644
--- a/indra/llui/llfloaterreg.cpp
+++ b/indra/llui/llfloaterreg.cpp
@@ -453,6 +453,17 @@ void LLFloaterReg::toggleFloaterInstance(const LLSD& sdname)
}
//static
+void LLFloaterReg::toggleToolbarFloaterInstance(const LLSD& sdname)
+{
+ // Do some extra logic here for 3-state toolbar floater toggling madness :)
+
+ LLSD key;
+ std::string name = sdname.asString();
+ parse_name_key(name, key);
+ toggleInstance(name, key);
+}
+
+//static
bool LLFloaterReg::floaterInstanceVisible(const LLSD& sdname)
{
LLSD key;
diff --git a/indra/llui/llfloaterreg.h b/indra/llui/llfloaterreg.h
index a2027a77a0..6239d98a7d 100644
--- a/indra/llui/llfloaterreg.h
+++ b/indra/llui/llfloaterreg.h
@@ -127,6 +127,7 @@ public:
static void showFloaterInstance(const LLSD& sdname);
static void hideFloaterInstance(const LLSD& sdname);
static void toggleFloaterInstance(const LLSD& sdname);
+ static void toggleToolbarFloaterInstance(const LLSD& sdname);
static bool floaterInstanceVisible(const LLSD& sdname);
static bool floaterInstanceMinimized(const LLSD& sdname);
diff --git a/indra/llui/lltoolbarview.cpp b/indra/llui/lltoolbarview.cpp
new file mode 100644
index 0000000000..40d1ac3418
--- /dev/null
+++ b/indra/llui/lltoolbarview.cpp
@@ -0,0 +1,74 @@
+/**
+ * @file lltoolbarview.cpp
+ * @author Merov Linden
+ * @brief User customizable toolbar class
+ *
+ * $LicenseInfo:firstyear=2011&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$
+ */
+
+#include "linden_common.h"
+
+#include "lltoolbarview.h"
+#include "llbutton.h"
+
+LLToolBarView* gToolBarView = NULL;
+
+static LLDefaultChildRegistry::Register<LLToolBarView> r("toolbar_view");
+
+LLToolBarView::LLToolBarView(const Params& p)
+: LLUICtrl(p)
+{
+}
+
+BOOL LLToolBarView::postBuild()
+{
+ LLButton* btn = getChild<LLButton>("color_pipette");
+ btn->setVisible(TRUE);
+ LLRect ctrl_rect = getRect();
+ LLRect btn_rect = btn->getRect();
+ llinfos << "Merov debug : control rect = " << ctrl_rect.mLeft << ", " << ctrl_rect.mTop << ", " << ctrl_rect.mRight << ", " << ctrl_rect.mBottom << llendl;
+ llinfos << "Merov debug : button rect = " << btn_rect.mLeft << ", " << btn_rect.mTop << ", " << btn_rect.mRight << ", " << btn_rect.mBottom << llendl;
+ btn_rect.mLeft = 0;
+ btn_rect.mTop = ctrl_rect.getHeight();
+ btn_rect.mRight = 28;
+ btn_rect.mBottom = btn_rect.mTop - 28;
+ btn->setRect(btn_rect);
+ btn_rect = btn->getRect();
+ llinfos << "Merov debug : button rect = " << btn_rect.mLeft << ", " << btn_rect.mTop << ", " << btn_rect.mRight << ", " << btn_rect.mBottom << llendl;
+ return TRUE;
+}
+
+void LLToolBarView::draw()
+{
+ LLButton* btn = getChild<LLButton>("color_pipette");
+ btn->setVisible(TRUE);
+ static bool debug_print = true;
+ if (debug_print)
+ {
+ LLRect ctrl_rect = getRect();
+ LLRect btn_rect = btn->getRect();
+ llinfos << "Merov debug : draw control rect = " << ctrl_rect.mLeft << ", " << ctrl_rect.mTop << ", " << ctrl_rect.mRight << ", " << ctrl_rect.mBottom << llendl;
+ llinfos << "Merov debug : draw button rect = " << btn_rect.mLeft << ", " << btn_rect.mTop << ", " << btn_rect.mRight << ", " << btn_rect.mBottom << llendl;
+ debug_print = false;
+ }
+ LLUICtrl::draw();
+}
diff --git a/indra/llui/lltoolbarview.h b/indra/llui/lltoolbarview.h
new file mode 100644
index 0000000000..0bd0070ab7
--- /dev/null
+++ b/indra/llui/lltoolbarview.h
@@ -0,0 +1,52 @@
+/**
+ * @file lltoolbarview.h
+ * @author Merov Linden
+ * @brief User customizable toolbar class
+ *
+ * $LicenseInfo:firstyear=2011&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_LLTOOLBARVIEW_H
+#define LL_LLTOOLBARVIEW_H
+
+#include "lluictrl.h"
+
+// Parent of all LLToolBar
+
+class LLToolBarView : public LLUICtrl
+{
+public:
+ struct Params : public LLInitParam::Block<Params, LLUICtrl::Params> {};
+ void draw();
+ /*virtual*/ BOOL postBuild();
+
+protected:
+ friend class LLUICtrlFactory;
+ LLToolBarView(const Params&);
+
+private:
+ LLHandle<LLView> mSnapView;
+};
+
+extern LLToolBarView* gToolBarView;
+
+#endif // LL_LLTOOLBARVIEW_H
diff --git a/indra/llui/llui.cpp b/indra/llui/llui.cpp
index 593354ee9b..1bc575438c 100644
--- a/indra/llui/llui.cpp
+++ b/indra/llui/llui.cpp
@@ -41,6 +41,7 @@
#include "llgl.h"
// Project includes
+#include "llcommandmanager.h"
#include "llcontrol.h"
#include "llui.h"
#include "lluicolortable.h"
@@ -1617,6 +1618,7 @@ void LLUI::initClass(const settings_map_t& settings,
// Callbacks for associating controls with floater visibilty:
reg.add("Floater.Toggle", boost::bind(&LLFloaterReg::toggleFloaterInstance, _2));
+ reg.add("Floater.ToolbarToggle", boost::bind(&LLFloaterReg::toggleToolbarFloaterInstance, _2));
reg.add("Floater.Show", boost::bind(&LLFloaterReg::showFloaterInstance, _2));
reg.add("Floater.Hide", boost::bind(&LLFloaterReg::hideFloaterInstance, _2));
reg.add("Floater.InitToVisibilityControl", boost::bind(&LLFloaterReg::initUICtrlToFloaterVisibilityControl, _1, _2));
@@ -1635,6 +1637,9 @@ void LLUI::initClass(const settings_map_t& settings,
// Used by menus along with Floater.Toggle to display visibility as a checkmark
LLUICtrl::EnableCallbackRegistry::defaultRegistrar().add("Floater.Visible", boost::bind(&LLFloaterReg::floaterInstanceVisible, _2));
+
+ // Parse the master list of commands
+ LLCommandManager::load();
}
void LLUI::cleanupClass()
diff --git a/indra/newview/CMakeLists.txt b/indra/newview/CMakeLists.txt
index 18e092eb4a..597a1dd603 100644
--- a/indra/newview/CMakeLists.txt
+++ b/indra/newview/CMakeLists.txt
@@ -1409,6 +1409,7 @@ list(APPEND viewer_SOURCE_FILES ${viewer_XUI_FILES})
set(viewer_APPSETTINGS_FILES
app_settings/anim.ini
app_settings/cmd_line.xml
+ app_settings/commands.xml
app_settings/grass.xml
app_settings/high_graphics.xml
app_settings/ignorable_dialogs.xml
diff --git a/indra/newview/app_settings/commands.xml b/indra/newview/app_settings/commands.xml
new file mode 100644
index 0000000000..8e45e866ca
--- /dev/null
+++ b/indra/newview/app_settings/commands.xml
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<commands>
+ <command name="avatar"
+ icon="Command_Avatar_Icon"
+ label_ref="Command_Avatar_Label"
+ tooltip_ref="Command_Avatar_Tooltip"
+ function="Floater.ToolbarToggle"
+ param="avatar"
+ />
+ <command name="places"
+ icon="Command_Places_Icon"
+ label_ref="Command_Places_Label"
+ tooltip_ref="Command_Places_Tooltip"
+ function="Floater.ToolbarToggle"
+ param="places"
+ />
+</commands>
diff --git a/indra/newview/app_settings/settings.xml b/indra/newview/app_settings/settings.xml
index 4e48a9e3f7..cc9e17409f 100644
--- a/indra/newview/app_settings/settings.xml
+++ b/indra/newview/app_settings/settings.xml
@@ -2652,6 +2652,17 @@
<key>Value</key>
<integer>-1</integer>
</map>
+ <key>DebugToolbarFUI</key>
+ <map>
+ <key>Comment</key>
+ <string>Turn on the FUI Toolbars</string>
+ <key>Persist</key>
+ <integer>1</integer>
+ <key>Type</key>
+ <string>Boolean</string>
+ <key>Value</key>
+ <integer>1</integer>
+ </map>
<key>DebugViews</key>
<map>
<key>Comment</key>
diff --git a/indra/newview/llviewerwindow.cpp b/indra/newview/llviewerwindow.cpp
index 114a422c1d..1055fd373b 100644
--- a/indra/newview/llviewerwindow.cpp
+++ b/indra/newview/llviewerwindow.cpp
@@ -76,6 +76,7 @@
#include "lltimer.h"
#include "timing.h"
#include "llviewermenu.h"
+#include "lltoolbarview.h"
#include "lltooltip.h"
#include "llmediaentry.h"
#include "llurldispatcher.h"
@@ -1778,6 +1779,14 @@ void LLViewerWindow::initBase()
mHintHolder = main_view->getChild<LLView>("hint_holder")->getHandle();
mLoginPanelHolder = main_view->getChild<LLView>("login_panel_holder")->getHandle();
+ // Update the toolbar global holder
+ // *TODO: Eventually, suppress the existence of this debug setting and turn toolbar FUI on permanently
+ if (gSavedSettings.getBOOL("DebugToolbarFUI"))
+ {
+ gToolBarView = main_view->getChild<LLToolBarView>("Toolbar View");
+ }
+
+
// Constrain floaters to inside the menu and status bar regions.
gFloaterView = main_view->getChild<LLFloaterView>("Floater View");
gFloaterView->setFloaterSnapView(main_view->getChild<LLView>("floater_snap_region")->getHandle());
@@ -1981,6 +1990,7 @@ void LLViewerWindow::shutdownViews()
gIMMgr = NULL;
gToolTipView = NULL;
+ gToolBarView = NULL;
gFloaterView = NULL;
gMorphView = NULL;
diff --git a/indra/newview/skins/default/textures/textures.xml b/indra/newview/skins/default/textures/textures.xml
index 4d83ec2902..598e39730c 100644
--- a/indra/newview/skins/default/textures/textures.xml
+++ b/indra/newview/skins/default/textures/textures.xml
@@ -125,6 +125,9 @@ with the same filename but different name
<texture name="Checkbox_Press" file_name="widgets/Checkbox_Press.png" preload="true" />
<texture name="Check_Mark" file_name="icons/check_mark" preload="true" />
+ <texture name="Command_Avatar_Icon" file_name="icons/SL_Logo.png" preload="true" />
+ <texture name="Command_Places_Icon" file_name="icons/SL_Logo.png" preload="true" />
+
<texture name="ComboButton_Disabled" file_name="widgets/ComboButton_Disabled.png" preload="true" scale.left="2" scale.top="19" scale.right="18" scale.bottom="2" />
<texture name="ComboButton_Selected" file_name="widgets/ComboButton_Selected.png" preload="true" scale.left="2" scale.top="19" scale.right="18" scale.bottom="2" />
<texture name="ComboButton_UpSelected" file_name="widgets/ComboButton_UpSelected.png" preload="true" scale.left="2" scale.top="19" scale.right="18" scale.bottom="2" />
diff --git a/indra/newview/skins/default/xui/en/main_view.xml b/indra/newview/skins/default/xui/en/main_view.xml
index a7d1aa963c..54badb1386 100644
--- a/indra/newview/skins/default/xui/en/main_view.xml
+++ b/indra/newview/skins/default/xui/en/main_view.xml
@@ -162,6 +162,41 @@
top="0"
width="1024"/>
</panel>
+
+ <panel follows="left|top"
+ layout="topleft"
+ height="500"
+ left="0"
+ mouse_opaque="false"
+ name="toolbar_view_holder"
+ tab_stop="false"
+ top="0"
+ visible="true"
+ width="1024">
+ <toolbar_view follows="left|top"
+ layout="topleft"
+ height="100"
+ left="100"
+ mouse_opaque="false"
+ name="Toolbar View"
+ tab_stop="false"
+ top="100"
+ visible="true"
+ width="512">
+ <button
+ follows="left|top"
+ height="28"
+ image_selected="eye_button_active.tga"
+ image_unselected="eye_button_inactive.tga"
+ layout="topleft"
+ top="0"
+ left="0"
+ name="color_pipette"
+ width="28"
+ visible="true" />
+ </toolbar_view>
+ </panel>
+
</layout_panel>
</layout_stack>
<panel mouse_opaque="false"
diff --git a/indra/newview/skins/default/xui/en/strings.xml b/indra/newview/skins/default/xui/en/strings.xml
index c0154ae9b3..3b986664db 100644
--- a/indra/newview/skins/default/xui/en/strings.xml
+++ b/indra/newview/skins/default/xui/en/strings.xml
@@ -3651,4 +3651,10 @@ Try enclosing path to the editor with double quotes.
<string name="BeaconMedia">Viewing media beacons (white)</string>
<string name="ParticleHiding">Hiding Particles</string>
- </strings>
+ <!-- commands -->
+ <string name="Command_Avatar_Label">Avatar</string>
+ <string name="Command_Avatar_Tooltip">Customize your avatar</string>
+ <string name="Command_Places_Label">Places</string>
+ <string name="Command_Places_Tooltip">Destination guide</string>
+
+</strings>