summaryrefslogtreecommitdiff
path: root/indra/newview
diff options
context:
space:
mode:
authorAndrey Kleshchev <andreykproductengine@lindenlab.com>2020-06-12 18:51:13 +0300
committerAndrey Kleshchev <andreykproductengine@lindenlab.com>2020-06-12 18:51:13 +0300
commitb1f9de4d377c37d1e97f5ef06cbb438cdc755f6f (patch)
tree6ecae727643fa36d94ec30007a23ec1f0ad6e147 /indra/newview
parent150af85b01aba24e5b006febe58ff17c72f0366b (diff)
SL-13421 Removed camera control keybindings from mouselook
Diffstat (limited to 'indra/newview')
-rw-r--r--indra/newview/llfloaterpreference.cpp116
-rw-r--r--indra/newview/llfloaterpreference.h8
-rw-r--r--indra/newview/llkeyconflict.cpp51
-rw-r--r--indra/newview/llkeyconflict.h3
-rw-r--r--indra/newview/skins/default/xui/en/control_table_contents.xml625
-rw-r--r--indra/newview/skins/default/xui/en/control_table_contents_camera.xml240
-rw-r--r--indra/newview/skins/default/xui/en/control_table_contents_columns_basic.xml19
-rw-r--r--indra/newview/skins/default/xui/en/control_table_contents_editing.xml80
-rw-r--r--indra/newview/skins/default/xui/en/control_table_contents_media.xml76
-rw-r--r--indra/newview/skins/default/xui/en/control_table_contents_movement.xml198
10 files changed, 758 insertions, 658 deletions
diff --git a/indra/newview/llfloaterpreference.cpp b/indra/newview/llfloaterpreference.cpp
index f7e984c14f..66f793a82c 100644
--- a/indra/newview/llfloaterpreference.cpp
+++ b/indra/newview/llfloaterpreference.cpp
@@ -2649,39 +2649,21 @@ void LLPanelPreferenceControls::regenerateControls()
populateControlTable();
}
-void LLPanelPreferenceControls::populateControlTable()
+bool LLPanelPreferenceControls::addControlTableColumns(const std::string &filename)
{
- pControlsTable->clearRows();
- pControlsTable->clearColumns();
-
- std::string filename;
- switch ((LLKeyConflictHandler::ESourceMode)mEditingMode)
- {
- case LLKeyConflictHandler::MODE_THIRD_PERSON:
- case LLKeyConflictHandler::MODE_FIRST_PERSON:
- case LLKeyConflictHandler::MODE_EDIT_AVATAR:
- case LLKeyConflictHandler::MODE_SITTING:
- filename = "control_table_contents.xml";
- break;
- default:
- // 'saved settings' mode doesn't have UI or actual settings yet
- LL_INFOS() << "Unimplemented mode" << LL_ENDL;
- return;
- }
-
LLXMLNodePtr xmlNode;
LLScrollListCtrl::Contents contents;
if (!LLUICtrlFactory::getLayeredXMLNode(filename, xmlNode))
{
- LL_WARNS() << "Failed to load " << filename << LL_ENDL;
- return;
+ LL_WARNS() << "Failed to load " << filename << LL_ENDL;
+ return false;
}
LLXUIParser parser;
parser.readXUI(xmlNode, contents, filename);
if (!contents.validateBlock())
{
- return;
+ return false;
}
for (LLInitParam::ParamIterator<LLScrollListColumn::Params>::const_iterator col_it = contents.columns.begin();
@@ -2691,6 +2673,26 @@ void LLPanelPreferenceControls::populateControlTable()
pControlsTable->addColumn(*col_it);
}
+ return true;
+}
+
+bool LLPanelPreferenceControls::addControlTableRows(const std::string &filename)
+{
+ LLXMLNodePtr xmlNode;
+ LLScrollListCtrl::Contents contents;
+ if (!LLUICtrlFactory::getLayeredXMLNode(filename, xmlNode))
+ {
+ LL_WARNS() << "Failed to load " << filename << LL_ENDL;
+ return false;
+ }
+ LLXUIParser parser;
+ parser.readXUI(xmlNode, contents, filename);
+
+ if (!contents.validateBlock())
+ {
+ return false;
+ }
+
LLScrollListCell::Params cell_params;
// init basic cell params
cell_params.font = LLFontGL::getFontSansSerif();
@@ -2706,7 +2708,7 @@ void LLPanelPreferenceControls::populateControlTable()
std::string control = row_it->value.getValue().asString();
if (!control.empty() && control != "menu_separator")
{
- // At the moment 4 collumns are hardcoded
+ // At the moment viewer is hardcoded to assume that there are 4 collumns
LLScrollListItem::Params item_params(*row_it);
bool enabled = mConflictHandler[mEditingMode].canAssignControl(control);
item_params.enabled.setValue(enabled);
@@ -2723,17 +2725,77 @@ void LLPanelPreferenceControls::populateControlTable()
}
else
{
+ // Separator example:
+ // <rows
+ // enabled = "false">
+ // <columns
+ // type = "icon"
+ // color = "0 0 0 0.7"
+ // halign = "center"
+ // value = "menu_separator" />
+ //</rows>
pControlsTable->addRow(*row_it, EAddPosition::ADD_BOTTOM);
}
}
+ return true;
+}
+
+void LLPanelPreferenceControls::addControlTableSeparator()
+{
+ pControlsTable->addSeparator(EAddPosition::ADD_BOTTOM);
}
-// Just a workaround to not care about first separator before headers (we can start from random header)
-void LLPanelPreferenceControls::addSeparator()
+void LLPanelPreferenceControls::populateControlTable()
{
- if (pControlsTable->getItemCount() > 0)
+ pControlsTable->clearRows();
+ pControlsTable->clearColumns();
+
+ // add columns
+ std::string filename;
+ switch ((LLKeyConflictHandler::ESourceMode)mEditingMode)
{
- pControlsTable->addSeparator(EAddPosition::ADD_BOTTOM);
+ case LLKeyConflictHandler::MODE_THIRD_PERSON:
+ case LLKeyConflictHandler::MODE_FIRST_PERSON:
+ case LLKeyConflictHandler::MODE_EDIT_AVATAR:
+ case LLKeyConflictHandler::MODE_SITTING:
+ filename = "control_table_contents_columns_basic.xml";
+ break;
+ default:
+ // Either unknown mode or MODE_SAVED_SETTINGS
+ // It doesn't have UI or actual settings yet
+ LL_INFOS() << "Unimplemented mode" << LL_ENDL;
+ return;
+ }
+ addControlTableColumns(filename);
+
+ switch ((LLKeyConflictHandler::ESourceMode)mEditingMode)
+ {
+ case LLKeyConflictHandler::MODE_FIRST_PERSON:
+ addControlTableRows("control_table_contents_movement.xml");
+ addControlTableSeparator();
+ addControlTableRows("control_table_contents_media.xml");
+ break;
+ case LLKeyConflictHandler::MODE_THIRD_PERSON:
+ case LLKeyConflictHandler::MODE_EDIT_AVATAR:
+ case LLKeyConflictHandler::MODE_SITTING:
+ addControlTableRows("control_table_contents_movement.xml");
+ addControlTableSeparator();
+
+ // contains couple 'sitting' options, might be good idea to recheck
+ // those and move to own group with sitting/spinning icon
+ addControlTableRows("control_table_contents_camera.xml");
+ addControlTableSeparator();
+
+ // Do we need this outside of MODE_EDIT_AVATAR?
+ addControlTableRows("control_table_contents_editing.xml");
+ addControlTableSeparator();
+
+ addControlTableRows("control_table_contents_media.xml");
+ break;
+ default:
+ // 'saved settings' mode doesn't have UI or actual settings yet
+ LL_INFOS() << "Unimplemented mode" << LL_ENDL;
+ return;
}
}
diff --git a/indra/newview/llfloaterpreference.h b/indra/newview/llfloaterpreference.h
index 6c2e655270..ea6e1070cd 100644
--- a/indra/newview/llfloaterpreference.h
+++ b/indra/newview/llfloaterpreference.h
@@ -312,8 +312,14 @@ private:
// reloads settings, discards current changes, updates table
void regenerateControls();
+ // These fuctions do not clean previous content
+ bool addControlTableColumns(const std::string &filename);
+ bool addControlTableRows(const std::string &filename);
+ void addControlTableSeparator();
+
+ // Cleans content and then adds content from xml files according to current mEditingMode
void populateControlTable();
- void addSeparator();
+ // Updates keybindings from storage to table
void updateTable();
LLScrollListCtrl* pControlsTable;
diff --git a/indra/newview/llkeyconflict.cpp b/indra/newview/llkeyconflict.cpp
index a94836c59d..be774e7765 100644
--- a/indra/newview/llkeyconflict.cpp
+++ b/indra/newview/llkeyconflict.cpp
@@ -160,7 +160,7 @@ bool LLKeyConflictHandler::canAssignControl(const std::string &control_name)
{
return iter->second.mAssignable;
}
- // If we don't know this control means it wasn't assigned by user yet and thus is editable
+ // If we don't know this control, means it wasn't assigned by user yet and thus is editable
return true;
}
@@ -195,7 +195,8 @@ bool LLKeyConflictHandler::registerControl(const std::string &control_name, U32
LLKeyConflict &type_data = mControlsMap[control_name];
if (!type_data.mAssignable)
{
- LL_ERRS() << "Error in code, user or system should not be able to change certain controls" << LL_ENDL;
+ // Example: user tried to assign camera spin to all modes, but first person mode doesn't support it
+ return false;
}
LLKeyData data(mouse, key, mask, ignore_mask);
if (type_data.mKeyBind.getKeyData(index) == data)
@@ -764,8 +765,43 @@ void LLKeyConflictHandler::generatePlaceholders(ESourceMode load_mode)
{
// These controls are meant to cause conflicts when user tries to assign same control somewhere else
// also this can be used to pre-record controls that should not conflict or to assign conflict groups/masks
- /*registerTemporaryControl(CONTROL_RESERVED_MENU, CLICK_RIGHT, KEY_NONE, MASK_NONE, 0);
- registerTemporaryControl(CONTROL_DELETE, CLICK_NONE, KEY_DELETE, MASK_NONE, 0);*/
+
+ if (load_mode == MODE_FIRST_PERSON)
+ {
+ // First person view doesn't support camera controls
+ // Note: might be better idea to just load these from control_table_contents_camera.xml
+ // or to pass from floaterpreferences when it loads said file
+ registerTemporaryControl("look_up");
+ registerTemporaryControl("look_down");
+ registerTemporaryControl("move_forward");
+ registerTemporaryControl("move_backward");
+ registerTemporaryControl("move_forward_fast");
+ registerTemporaryControl("move_backward_fast");
+ registerTemporaryControl("move_forward_sitting");
+ registerTemporaryControl("move_backward_sitting");
+ registerTemporaryControl("spin_over");
+ registerTemporaryControl("spin_under");
+ registerTemporaryControl("spin_over_sitting");
+ registerTemporaryControl("spin_under_sitting");
+ registerTemporaryControl("pan_up");
+ registerTemporaryControl("pan_down");
+ registerTemporaryControl("pan_left");
+ registerTemporaryControl("pan_right");
+ registerTemporaryControl("pan_in");
+ registerTemporaryControl("pan_out");
+ registerTemporaryControl("spin_around_ccw");
+ registerTemporaryControl("spin_around_cw");
+ registerTemporaryControl("spin_around_ccw_sitting");
+ registerTemporaryControl("spin_around_cw_sitting");
+
+ // control_table_contents_editing.xml
+ registerTemporaryControl("edit_avatar_spin_ccw");
+ registerTemporaryControl("edit_avatar_spin_cw");
+ registerTemporaryControl("edit_avatar_spin_over");
+ registerTemporaryControl("edit_avatar_spin_under");
+ registerTemporaryControl("edit_avatar_move_forward");
+ registerTemporaryControl("edit_avatar_move_backward");
+ }
}
bool LLKeyConflictHandler::removeConflicts(const LLKeyData &data, const U32 &conlict_mask)
@@ -817,6 +853,13 @@ void LLKeyConflictHandler::registerTemporaryControl(const std::string &control_n
type_data->mKeyBind.addKeyData(mouse, key, mask, false);
}
+void LLKeyConflictHandler::registerTemporaryControl(const std::string &control_name)
+{
+ LLKeyConflict *type_data = &mControlsMap[control_name];
+ type_data->mAssignable = false;
+ type_data->mConflictMask = 0;
+}
+
bool LLKeyConflictHandler::clearUnsavedChanges()
{
bool result = false;
diff --git a/indra/newview/llkeyconflict.h b/indra/newview/llkeyconflict.h
index 84730e4d4f..1bb29bc302 100644
--- a/indra/newview/llkeyconflict.h
+++ b/indra/newview/llkeyconflict.h
@@ -125,8 +125,9 @@ private:
void resetToDefaultAndResolve(const std::string &control_name, bool ignore_conflicts);
void resetToDefaults(ESourceMode mode);
- // at the moment these kind of control is not savable, but takes part will take part in conflict resolution
+ // at the moment these kind of control is not savable, but takes part in conflict resolution
void registerTemporaryControl(const std::string &control_name, EMouseClickType mouse_ind, KEY key, MASK mask, U32 conflict_mask);
+ void registerTemporaryControl(const std::string &control_name);
typedef std::map<std::string, LLKeyConflict> control_map_t;
void loadFromSettings(const LLViewerInput::KeyMode& keymode, control_map_t *destination);
diff --git a/indra/newview/skins/default/xui/en/control_table_contents.xml b/indra/newview/skins/default/xui/en/control_table_contents.xml
deleted file mode 100644
index f3a34c59eb..0000000000
--- a/indra/newview/skins/default/xui/en/control_table_contents.xml
+++ /dev/null
@@ -1,625 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
-<contents>
- <columns
- relative_width="0.34"
- label="Action"
- name="lst_action" />
- <columns
- relative_width="0.22"
- label="Primary Control"
- name="lst_ctrl1" />
- <columns
- relative_width="0.22"
- label="Alternate 1"
- name="lst_ctrl2" />
- <columns
- relative_width="0.22"
- label="Alternate 2"
- name="lst_ctrl3" />
- <rows
- enabled="false"
- name="move_actions"
- value="">
- <columns
- type="icontext"
- column="lst_action"
- font="SansSerif"
- halign="left"
- label="Move Actions"
- name="lst_action"
- value="Move_Walk_Off" />
- </rows>
- <rows
- name="walk_to"
- value="walk_to">
- <columns
- column="lst_action"
- font="SansSerif"
- halign="left"
- name="lst_action"
- tool_tip="Walk to location mouse cursor points to"
- value="Walk to" />
- </rows>
- <rows
- name="teleport_to"
- value="teleport_to">
- <columns
- column="lst_action"
- font="SansSerif"
- halign="left"
- name="lst_action"
- tool_tip="Teleport to location mouse cursor points to, but not all locations allow direct teleportation so you might be teleported closer to destination instead"
- value="Teleport to" />
- </rows>
- <rows
- name="push_forward"
- value="push_forward">
- <columns
- column="lst_action"
- font="SansSerif"
- halign="left"
- name="lst_action"
- value="Move Forward" />
- </rows>
- <rows
- name="push_backward"
- value="push_backward">
- <columns
- column="lst_action"
- font="SansSerif"
- halign="left"
- name="lst_action"
- value="Move Backward" />
- </rows>
- <rows
- name="turn_left"
- value="turn_left">
- <columns
- column="lst_action"
- font="SansSerif"
- halign="left"
- name="lst_action"
- value="Left" />
- </rows>
- <rows
- name="turn_right"
- value="turn_right">
- <columns
- column="lst_action"
- font="SansSerif"
- halign="left"
- name="lst_action"
- value="Right" />
- </rows>
- <rows
- name="slide_left"
- value="slide_left">
- <columns
- column="lst_action"
- font="SansSerif"
- halign="left"
- name="lst_action"
- value="Strafe left" />
- </rows>
- <rows
- name="slide_right"
- value="slide_right">
- <columns
- column="lst_action"
- font="SansSerif"
- halign="left"
- name="lst_action"
- value="Strafe right" />
- </rows>
- <rows
- name="jump"
- value="jump">
- <columns
- column="lst_action"
- font="SansSerif"
- halign="left"
- name="lst_action"
- value="Jump/Up" />
- </rows>
- <rows
- name="push_down"
- value="push_down">
- <columns
- column="lst_action"
- font="SansSerif"
- halign="left"
- name="lst_action"
- value="Down" />
- </rows>
- <rows
- name="run_forward"
- value="run_forward">
- <columns
- column="lst_action"
- font="SansSerif"
- halign="left"
- name="lst_action"
- value="Run Forward" />
- </rows>
- <rows
- name="run_backward"
- value="run_backward">
- <columns
- column="lst_action"
- font="SansSerif"
- halign="left"
- name="lst_action"
- value="Run Backward" />
- </rows>
- <rows
- name="run_left"
- value="run_left">
- <columns
- column="lst_action"
- font="SansSerif"
- halign="left"
- name="lst_action"
- value="Run Left" />
- </rows>
- <rows
- name="run_right"
- value="run_right">
- <columns
- column="lst_action"
- font="SansSerif"
- halign="left"
- name="lst_action"
- value="Run Right" />
- </rows>
- <rows
- name="toggle_run"
- value="toggle_run">
- <columns
- column="lst_action"
- font="SansSerif"
- halign="left"
- name="lst_action"
- value="Toggle Run" />
- </rows>
- <rows
- name="toggle_fly"
- value="toggle_fly">
- <columns
- column="lst_action"
- font="SansSerif"
- halign="left"
- name="lst_action"
- value="Fly/Stop flying" />
- </rows>
- <rows
- name="toggle_sit"
- value="toggle_sit">
- <columns
- column="lst_action"
- font="SansSerif"
- halign="left"
- name="lst_action"
- value="Sit/Stand" />
- </rows>
- <rows
- name="stop_moving"
- value="stop_moving">
- <columns
- column="lst_action"
- font="SansSerif"
- halign="left"
- name="lst_action"
- value="Stop Moving" />
- </rows>
- <rows
- enabled="false">
- <columns
- type="icon"
- color="0 0 0 0.7"
- halign="center"
- value="menu_separator" />
- </rows>
- <rows
- enabled="false"
- name="camera_actions"
- value="">
- <columns
- type="icontext"
- column="lst_action"
- font="SansSerif"
- halign="left"
- label="Camera"
- name="lst_action"
- value="Cam_FreeCam_Off" />
- </rows>
- <rows
- name="look_up"
- value="look_up">
- <columns
- column="lst_action"
- font="SansSerif"
- halign="left"
- name="lst_action"
- value="Look Up" />
- </rows>
- <rows
- name="look_down"
- value="look_down">
- <columns
- column="lst_action"
- font="SansSerif"
- halign="left"
- name="lst_action"
- value="Look Down" />
- </rows>
- <rows
- name="move_forward"
- value="move_forward">
- <columns
- column="lst_action"
- font="SansSerif"
- halign="left"
- name="lst_action"
- value="Camera Forward" />
- </rows>
- <rows
- name="move_backward"
- value="move_backward">
- <columns
- column="lst_action"
- font="SansSerif"
- halign="left"
- name="lst_action"
- value="Camera Backward" />
- </rows>
- <rows
- name="move_forward_fast"
- value="move_forward_fast">
- <columns
- column="lst_action"
- font="SansSerif"
- halign="left"
- name="lst_action"
- value="Camera Forward Fast" />
- </rows>
- <rows
- name="move_backward_fast"
- value="move_backward_fast">
- <columns
- column="lst_action"
- font="SansSerif"
- halign="left"
- name="lst_action"
- value="Camera Backward Fast" />
- </rows>
- <rows
- name="move_forward_sitting"
- value="move_forward_sitting">
- <columns
- column="lst_action"
- font="SansSerif"
- halign="left"
- name="lst_action"
- value="Camera Forward Sitting" />
- </rows>
- <rows
- name="move_backward_sitting"
- value="move_backward_sitting">
- <columns
- column="lst_action"
- font="SansSerif"
- halign="left"
- name="lst_action"
- value="Camera Backward Sitting" />
- </rows>
- <rows
- name="spin_over"
- value="spin_over">
- <columns
- column="lst_action"
- font="SansSerif"
- halign="left"
- name="lst_action"
- value="Camera Spin Over" />
- </rows>
- <rows
- name="spin_under"
- value="spin_under">
- <columns
- column="lst_action"
- font="SansSerif"
- halign="left"
- name="lst_action"
- value="Camera Spin Under" />
- </rows>
- <rows
- name="spin_over_sitting"
- value="spin_over_sitting">
- <columns
- column="lst_action"
- font="SansSerif"
- halign="left"
- name="lst_action"
- value="Camera Spin Over Sitting" />
- </rows>
- <rows
- name="spin_under_sitting"
- value="spin_under_sitting">
- <columns
- column="lst_action"
- font="SansSerif"
- halign="left"
- name="lst_action"
- value="Camera Spin Under Sitting" />
- </rows>
- <rows
- name="pan_up"
- value="pan_up">
- <columns
- column="lst_action"
- font="SansSerif"
- halign="left"
- name="lst_action"
- value="Camera Pan Up" />
- </rows>
- <rows
- name="pan_down"
- value="pan_down">
- <columns
- column="lst_action"
- font="SansSerif"
- halign="left"
- name="lst_action"
- value="Camera Pan Down" />
- </rows>
- <rows
- name="pan_left"
- value="pan_left">
- <columns
- column="lst_action"
- font="SansSerif"
- halign="left"
- name="lst_action"
- value="Camera Pan Left" />
- </rows>
- <rows
- name="pan_right"
- value="pan_right">
- <columns
- column="lst_action"
- font="SansSerif"
- halign="left"
- name="lst_action"
- value="Camera Pan Right" />
- </rows>
- <rows
- name="pan_in"
- value="pan_in">
- <columns
- column="lst_action"
- font="SansSerif"
- halign="left"
- name="lst_action"
- value="Camera Pan In" />
- </rows>
- <rows
- name="pan_out"
- value="pan_out">
- <columns
- column="lst_action"
- font="SansSerif"
- halign="left"
- name="lst_action"
- value="Camera Pan Out" />
- </rows>
- <rows
- name="spin_around_ccw"
- value="spin_around_ccw">
- <columns
- column="lst_action"
- font="SansSerif"
- halign="left"
- name="lst_action"
- tool_tip="Camera spin around counterclockwise"
- value="Counterclockwise" />
- </rows>
- <rows
- name="spin_around_cw"
- value="spin_around_cw">
- <columns
- column="lst_action"
- font="SansSerif"
- halign="left"
- name="lst_action"
- tool_tip="Camera spin around clockwise"
- value="Clockwise" />
- </rows>
- <rows
- name="spin_around_ccw_sitting"
- value="spin_around_ccw_sitting">
- <columns
- column="lst_action"
- font="SansSerif"
- halign="left"
- name="lst_action"
- tool_tip="Camera spin around counterclockwise sitting"
- value="Counterclockwise Sitting" />
- </rows>
- <rows
- name="spin_around_cw_sitting"
- value="spin_around_cw_sitting">
- <columns
- column="lst_action"
- font="SansSerif"
- halign="left"
- name="lst_action"
- tool_tip="Camera spin around clockwise sitting"
- value="Clockwise Sitting" />
- </rows>
- <rows
- enabled="false">
- <columns
- type="icon"
- color="0 0 0 0.7"
- halign="center"
- value="menu_separator" />
- </rows>
- <rows
- enabled="false"
- name="editing_actions"
- value="">
- <columns
- type="icontext"
- column="lst_action"
- font="SansSerif"
- halign="left"
- label="Editing"
- name="lst_action"
- value="Tool_Dozer" />
- </rows>
- <rows
- name="edit_avatar_spin_ccw"
- value="edit_avatar_spin_ccw">
- <columns
- column="lst_action"
- font="SansSerif"
- halign="left"
- name="lst_action"
- tool_tip="Camera spin around avatar counterclockwise"
- value="Counterclockwise" />
- </rows>
- <rows
- name="edit_avatar_spin_cw"
- value="edit_avatar_spin_cw">
- <columns
- column="lst_action"
- font="SansSerif"
- halign="left"
- name="lst_action"
- tool_tip="Camera spin around avatar clockwise"
- value="Clockwise" />
- </rows>
- <rows
- name="edit_avatar_spin_over"
- value="edit_avatar_spin_over">
- <columns
- column="lst_action"
- font="SansSerif"
- halign="left"
- name="lst_action"
- tool_tip="Camera spin over avatar"
- value="Camera Spin Over" />
- </rows>
- <rows
- name="edit_avatar_spin_under"
- value="edit_avatar_spin_under">
- <columns
- column="lst_action"
- font="SansSerif"
- halign="left"
- name="lst_action"
- tool_tip="Camera spin under avatar"
- value="Camera Spin Under" />
- </rows>
- <rows
- name="edit_avatar_move_forward"
- value="edit_avatar_move_forward">
- <columns
- column="lst_action"
- font="SansSerif"
- halign="left"
- name="lst_action"
- value="Camera Forward" />
- </rows>
- <rows
- name="edit_avatar_move_backward"
- value="edit_avatar_move_backward">
- <columns
- column="lst_action"
- font="SansSerif"
- halign="left"
- name="lst_action"
- value="Camera Backward" />
- </rows>
- <rows
- enabled="false">
- <columns
- type="icon"
- color="0 0 0 0.7"
- halign="center"
- value="menu_separator" />
- </rows>
- <rows
- enabled="false"
- name="media_actions"
- value="">
- <columns
- type="icontext"
- column="lst_action"
- font="SansSerif"
- halign="left"
- label="Sound and Media"
- name="lst_action"
- value="Audio_Press" />
- </rows>
- <rows
- name="toggle_pause_media"
- value="toggle_pause_media">
- <columns
- column="lst_action"
- font="SansSerif"
- halign="left"
- name="lst_action"
- value="Play/Pause Media" />
- </rows>
- <rows
- name="toggle_enable_media"
- value="toggle_enable_media">
- <columns
- column="lst_action"
- font="SansSerif"
- halign="left"
- name="lst_action"
- value="Play/Stop All Media" />
- </rows>
- <rows
- name="voice_follow_key"
- value="voice_follow_key">
- <columns
- column="lst_action"
- font="SansSerif"
- halign="left"
- name="lst_action"
- value="Voice" />
- </rows>
- <rows
- name="toggle_voice"
- value="toggle_voice">
- <columns
- column="lst_action"
- font="SansSerif"
- halign="left"
- name="lst_action"
- value="Toggle Voice" />
- </rows>
- <rows
- name="start_chat"
- value="start_chat">
- <columns
- column="lst_action"
- font="SansSerif"
- halign="left"
- name="lst_action"
- value="Start Chat" />
- </rows>
- <rows
- name="start_gesture"
- value="start_gesture">
- <columns
- column="lst_action"
- font="SansSerif"
- halign="left"
- name="lst_action"
- value="Start Gesture" />
- </rows>
-</contents>
diff --git a/indra/newview/skins/default/xui/en/control_table_contents_camera.xml b/indra/newview/skins/default/xui/en/control_table_contents_camera.xml
new file mode 100644
index 0000000000..35cbb02271
--- /dev/null
+++ b/indra/newview/skins/default/xui/en/control_table_contents_camera.xml
@@ -0,0 +1,240 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<contents>
+ <rows
+ enabled="false"
+ name="camera_actions"
+ value="">
+ <columns
+ type="icontext"
+ column="lst_action"
+ font="SansSerif"
+ halign="left"
+ label="Camera"
+ name="lst_action"
+ value="Cam_FreeCam_Off" />
+ </rows>
+ <rows
+ name="look_up"
+ value="look_up">
+ <columns
+ column="lst_action"
+ font="SansSerif"
+ halign="left"
+ name="lst_action"
+ value="Look Up" />
+ </rows>
+ <rows
+ name="look_down"
+ value="look_down">
+ <columns
+ column="lst_action"
+ font="SansSerif"
+ halign="left"
+ name="lst_action"
+ value="Look Down" />
+ </rows>
+ <rows
+ name="move_forward"
+ value="move_forward">
+ <columns
+ column="lst_action"
+ font="SansSerif"
+ halign="left"
+ name="lst_action"
+ value="Camera Forward" />
+ </rows>
+ <rows
+ name="move_backward"
+ value="move_backward">
+ <columns
+ column="lst_action"
+ font="SansSerif"
+ halign="left"
+ name="lst_action"
+ value="Camera Backward" />
+ </rows>
+ <rows
+ name="move_forward_fast"
+ value="move_forward_fast">
+ <columns
+ column="lst_action"
+ font="SansSerif"
+ halign="left"
+ name="lst_action"
+ value="Camera Forward Fast" />
+ </rows>
+ <rows
+ name="move_backward_fast"
+ value="move_backward_fast">
+ <columns
+ column="lst_action"
+ font="SansSerif"
+ halign="left"
+ name="lst_action"
+ value="Camera Backward Fast" />
+ </rows>
+ <rows
+ name="move_forward_sitting"
+ value="move_forward_sitting">
+ <columns
+ column="lst_action"
+ font="SansSerif"
+ halign="left"
+ name="lst_action"
+ value="Camera Forward Sitting" />
+ </rows>
+ <rows
+ name="move_backward_sitting"
+ value="move_backward_sitting">
+ <columns
+ column="lst_action"
+ font="SansSerif"
+ halign="left"
+ name="lst_action"
+ value="Camera Backward Sitting" />
+ </rows>
+ <rows
+ name="spin_over"
+ value="spin_over">
+ <columns
+ column="lst_action"
+ font="SansSerif"
+ halign="left"
+ name="lst_action"
+ value="Camera Spin Over" />
+ </rows>
+ <rows
+ name="spin_under"
+ value="spin_under">
+ <columns
+ column="lst_action"
+ font="SansSerif"
+ halign="left"
+ name="lst_action"
+ value="Camera Spin Under" />
+ </rows>
+ <rows
+ name="spin_over_sitting"
+ value="spin_over_sitting">
+ <columns
+ column="lst_action"
+ font="SansSerif"
+ halign="left"
+ name="lst_action"
+ value="Camera Spin Over Sitting" />
+ </rows>
+ <rows
+ name="spin_under_sitting"
+ value="spin_under_sitting">
+ <columns
+ column="lst_action"
+ font="SansSerif"
+ halign="left"
+ name="lst_action"
+ value="Camera Spin Under Sitting" />
+ </rows>
+ <rows
+ name="pan_up"
+ value="pan_up">
+ <columns
+ column="lst_action"
+ font="SansSerif"
+ halign="left"
+ name="lst_action"
+ value="Camera Pan Up" />
+ </rows>
+ <rows
+ name="pan_down"
+ value="pan_down">
+ <columns
+ column="lst_action"
+ font="SansSerif"
+ halign="left"
+ name="lst_action"
+ value="Camera Pan Down" />
+ </rows>
+ <rows
+ name="pan_left"
+ value="pan_left">
+ <columns
+ column="lst_action"
+ font="SansSerif"
+ halign="left"
+ name="lst_action"
+ value="Camera Pan Left" />
+ </rows>
+ <rows
+ name="pan_right"
+ value="pan_right">
+ <columns
+ column="lst_action"
+ font="SansSerif"
+ halign="left"
+ name="lst_action"
+ value="Camera Pan Right" />
+ </rows>
+ <rows
+ name="pan_in"
+ value="pan_in">
+ <columns
+ column="lst_action"
+ font="SansSerif"
+ halign="left"
+ name="lst_action"
+ value="Camera Pan In" />
+ </rows>
+ <rows
+ name="pan_out"
+ value="pan_out">
+ <columns
+ column="lst_action"
+ font="SansSerif"
+ halign="left"
+ name="lst_action"
+ value="Camera Pan Out" />
+ </rows>
+ <rows
+ name="spin_around_ccw"
+ value="spin_around_ccw">
+ <columns
+ column="lst_action"
+ font="SansSerif"
+ halign="left"
+ name="lst_action"
+ tool_tip="Camera spin around counterclockwise"
+ value="Counterclockwise" />
+ </rows>
+ <rows
+ name="spin_around_cw"
+ value="spin_around_cw">
+ <columns
+ column="lst_action"
+ font="SansSerif"
+ halign="left"
+ name="lst_action"
+ tool_tip="Camera spin around clockwise"
+ value="Clockwise" />
+ </rows>
+ <rows
+ name="spin_around_ccw_sitting"
+ value="spin_around_ccw_sitting">
+ <columns
+ column="lst_action"
+ font="SansSerif"
+ halign="left"
+ name="lst_action"
+ tool_tip="Camera spin around counterclockwise sitting"
+ value="Counterclockwise Sitting" />
+ </rows>
+ <rows
+ name="spin_around_cw_sitting"
+ value="spin_around_cw_sitting">
+ <columns
+ column="lst_action"
+ font="SansSerif"
+ halign="left"
+ name="lst_action"
+ tool_tip="Camera spin around clockwise sitting"
+ value="Clockwise Sitting" />
+ </rows>
+</contents>
diff --git a/indra/newview/skins/default/xui/en/control_table_contents_columns_basic.xml b/indra/newview/skins/default/xui/en/control_table_contents_columns_basic.xml
new file mode 100644
index 0000000000..e707aaf22c
--- /dev/null
+++ b/indra/newview/skins/default/xui/en/control_table_contents_columns_basic.xml
@@ -0,0 +1,19 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<contents>
+ <columns
+ relative_width="0.34"
+ label="Action"
+ name="lst_action" />
+ <columns
+ relative_width="0.22"
+ label="Primary Control"
+ name="lst_ctrl1" />
+ <columns
+ relative_width="0.22"
+ label="Alternate 1"
+ name="lst_ctrl2" />
+ <columns
+ relative_width="0.22"
+ label="Alternate 2"
+ name="lst_ctrl3" />
+</contents>
diff --git a/indra/newview/skins/default/xui/en/control_table_contents_editing.xml b/indra/newview/skins/default/xui/en/control_table_contents_editing.xml
new file mode 100644
index 0000000000..2a3314840a
--- /dev/null
+++ b/indra/newview/skins/default/xui/en/control_table_contents_editing.xml
@@ -0,0 +1,80 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<contents>
+ <rows
+ enabled="false"
+ name="editing_actions"
+ value="">
+ <columns
+ type="icontext"
+ column="lst_action"
+ font="SansSerif"
+ halign="left"
+ label="Editing"
+ name="lst_action"
+ value="Tool_Dozer" />
+ </rows>
+ <rows
+ name="edit_avatar_spin_ccw"
+ value="edit_avatar_spin_ccw">
+ <columns
+ column="lst_action"
+ font="SansSerif"
+ halign="left"
+ name="lst_action"
+ tool_tip="Camera spin around avatar counterclockwise"
+ value="Counterclockwise" />
+ </rows>
+ <rows
+ name="edit_avatar_spin_cw"
+ value="edit_avatar_spin_cw">
+ <columns
+ column="lst_action"
+ font="SansSerif"
+ halign="left"
+ name="lst_action"
+ tool_tip="Camera spin around avatar clockwise"
+ value="Clockwise" />
+ </rows>
+ <rows
+ name="edit_avatar_spin_over"
+ value="edit_avatar_spin_over">
+ <columns
+ column="lst_action"
+ font="SansSerif"
+ halign="left"
+ name="lst_action"
+ tool_tip="Camera spin over avatar"
+ value="Camera Spin Over" />
+ </rows>
+ <rows
+ name="edit_avatar_spin_under"
+ value="edit_avatar_spin_under">
+ <columns
+ column="lst_action"
+ font="SansSerif"
+ halign="left"
+ name="lst_action"
+ tool_tip="Camera spin under avatar"
+ value="Camera Spin Under" />
+ </rows>
+ <rows
+ name="edit_avatar_move_forward"
+ value="edit_avatar_move_forward">
+ <columns
+ column="lst_action"
+ font="SansSerif"
+ halign="left"
+ name="lst_action"
+ value="Camera Forward" />
+ </rows>
+ <rows
+ name="edit_avatar_move_backward"
+ value="edit_avatar_move_backward">
+ <columns
+ column="lst_action"
+ font="SansSerif"
+ halign="left"
+ name="lst_action"
+ value="Camera Backward" />
+ </rows>
+</contents>
diff --git a/indra/newview/skins/default/xui/en/control_table_contents_media.xml b/indra/newview/skins/default/xui/en/control_table_contents_media.xml
new file mode 100644
index 0000000000..ce5d3556b6
--- /dev/null
+++ b/indra/newview/skins/default/xui/en/control_table_contents_media.xml
@@ -0,0 +1,76 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<contents>
+ <rows
+ enabled="false"
+ name="media_actions"
+ value="">
+ <columns
+ type="icontext"
+ column="lst_action"
+ font="SansSerif"
+ halign="left"
+ label="Sound and Media"
+ name="lst_action"
+ value="Audio_Press" />
+ </rows>
+ <rows
+ name="toggle_pause_media"
+ value="toggle_pause_media">
+ <columns
+ column="lst_action"
+ font="SansSerif"
+ halign="left"
+ name="lst_action"
+ value="Play/Pause Media" />
+ </rows>
+ <rows
+ name="toggle_enable_media"
+ value="toggle_enable_media">
+ <columns
+ column="lst_action"
+ font="SansSerif"
+ halign="left"
+ name="lst_action"
+ value="Play/Stop All Media" />
+ </rows>
+ <rows
+ name="voice_follow_key"
+ value="voice_follow_key">
+ <columns
+ column="lst_action"
+ font="SansSerif"
+ halign="left"
+ name="lst_action"
+ value="Voice" />
+ </rows>
+ <rows
+ name="toggle_voice"
+ value="toggle_voice">
+ <columns
+ column="lst_action"
+ font="SansSerif"
+ halign="left"
+ name="lst_action"
+ value="Toggle Voice" />
+ </rows>
+ <rows
+ name="start_chat"
+ value="start_chat">
+ <columns
+ column="lst_action"
+ font="SansSerif"
+ halign="left"
+ name="lst_action"
+ value="Start Chat" />
+ </rows>
+ <rows
+ name="start_gesture"
+ value="start_gesture">
+ <columns
+ column="lst_action"
+ font="SansSerif"
+ halign="left"
+ name="lst_action"
+ value="Start Gesture" />
+ </rows>
+</contents>
diff --git a/indra/newview/skins/default/xui/en/control_table_contents_movement.xml b/indra/newview/skins/default/xui/en/control_table_contents_movement.xml
new file mode 100644
index 0000000000..b410d2dc1c
--- /dev/null
+++ b/indra/newview/skins/default/xui/en/control_table_contents_movement.xml
@@ -0,0 +1,198 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<contents>
+ <rows
+ enabled="false"
+ name="move_actions"
+ value="">
+ <columns
+ type="icontext"
+ column="lst_action"
+ font="SansSerif"
+ halign="left"
+ label="Move Actions"
+ name="lst_action"
+ value="Move_Walk_Off" />
+ </rows>
+ <rows
+ name="walk_to"
+ value="walk_to">
+ <columns
+ column="lst_action"
+ font="SansSerif"
+ halign="left"
+ name="lst_action"
+ tool_tip="Walk to location mouse cursor points to"
+ value="Walk to" />
+ </rows>
+ <rows
+ name="teleport_to"
+ value="teleport_to">
+ <columns
+ column="lst_action"
+ font="SansSerif"
+ halign="left"
+ name="lst_action"
+ tool_tip="Teleport to location mouse cursor points to, but not all locations allow direct teleportation so you might be teleported closer to destination instead"
+ value="Teleport to" />
+ </rows>
+ <rows
+ name="push_forward"
+ value="push_forward">
+ <columns
+ column="lst_action"
+ font="SansSerif"
+ halign="left"
+ name="lst_action"
+ value="Move Forward" />
+ </rows>
+ <rows
+ name="push_backward"
+ value="push_backward">
+ <columns
+ column="lst_action"
+ font="SansSerif"
+ halign="left"
+ name="lst_action"
+ value="Move Backward" />
+ </rows>
+ <rows
+ name="turn_left"
+ value="turn_left">
+ <columns
+ column="lst_action"
+ font="SansSerif"
+ halign="left"
+ name="lst_action"
+ value="Left" />
+ </rows>
+ <rows
+ name="turn_right"
+ value="turn_right">
+ <columns
+ column="lst_action"
+ font="SansSerif"
+ halign="left"
+ name="lst_action"
+ value="Right" />
+ </rows>
+ <rows
+ name="slide_left"
+ value="slide_left">
+ <columns
+ column="lst_action"
+ font="SansSerif"
+ halign="left"
+ name="lst_action"
+ value="Strafe left" />
+ </rows>
+ <rows
+ name="slide_right"
+ value="slide_right">
+ <columns
+ column="lst_action"
+ font="SansSerif"
+ halign="left"
+ name="lst_action"
+ value="Strafe right" />
+ </rows>
+ <rows
+ name="jump"
+ value="jump">
+ <columns
+ column="lst_action"
+ font="SansSerif"
+ halign="left"
+ name="lst_action"
+ value="Jump/Up" />
+ </rows>
+ <rows
+ name="push_down"
+ value="push_down">
+ <columns
+ column="lst_action"
+ font="SansSerif"
+ halign="left"
+ name="lst_action"
+ value="Down" />
+ </rows>
+ <rows
+ name="run_forward"
+ value="run_forward">
+ <columns
+ column="lst_action"
+ font="SansSerif"
+ halign="left"
+ name="lst_action"
+ value="Run Forward" />
+ </rows>
+ <rows
+ name="run_backward"
+ value="run_backward">
+ <columns
+ column="lst_action"
+ font="SansSerif"
+ halign="left"
+ name="lst_action"
+ value="Run Backward" />
+ </rows>
+ <rows
+ name="run_left"
+ value="run_left">
+ <columns
+ column="lst_action"
+ font="SansSerif"
+ halign="left"
+ name="lst_action"
+ value="Run Left" />
+ </rows>
+ <rows
+ name="run_right"
+ value="run_right">
+ <columns
+ column="lst_action"
+ font="SansSerif"
+ halign="left"
+ name="lst_action"
+ value="Run Right" />
+ </rows>
+ <rows
+ name="toggle_run"
+ value="toggle_run">
+ <columns
+ column="lst_action"
+ font="SansSerif"
+ halign="left"
+ name="lst_action"
+ value="Toggle Run" />
+ </rows>
+ <rows
+ name="toggle_fly"
+ value="toggle_fly">
+ <columns
+ column="lst_action"
+ font="SansSerif"
+ halign="left"
+ name="lst_action"
+ value="Fly/Stop flying" />
+ </rows>
+ <rows
+ name="toggle_sit"
+ value="toggle_sit">
+ <columns
+ column="lst_action"
+ font="SansSerif"
+ halign="left"
+ name="lst_action"
+ value="Sit/Stand" />
+ </rows>
+ <rows
+ name="stop_moving"
+ value="stop_moving">
+ <columns
+ column="lst_action"
+ font="SansSerif"
+ halign="left"
+ name="lst_action"
+ value="Stop Moving" />
+ </rows>
+</contents>