summaryrefslogtreecommitdiff
path: root/indra
diff options
context:
space:
mode:
authorTofu Linden <tofu.linden@lindenlab.com>2010-06-23 09:21:52 +0100
committerTofu Linden <tofu.linden@lindenlab.com>2010-06-23 09:21:52 +0100
commitaf914e4ab666aad041aa17f6459d1ff834440b44 (patch)
tree48584ccb08b80d120ec53f3d1df16df55cd9480b /indra
parent11ec720a063b73fc042e8b06338b9526835dbb6b (diff)
parente02b51f125f876cfef10f504a121693b3612155a (diff)
merge from PE's viewer-release
Diffstat (limited to 'indra')
-rw-r--r--indra/llui/lltextbase.cpp4
-rw-r--r--indra/llui/lltextbase.h6
-rw-r--r--indra/newview/llchathistory.cpp4
-rw-r--r--indra/newview/llfloaterland.cpp5
-rw-r--r--indra/newview/llfloatermap.cpp13
-rw-r--r--indra/newview/llfloatermap.h2
-rw-r--r--indra/newview/llinspectremoteobject.cpp11
-rw-r--r--indra/newview/lloutfitslist.cpp10
-rw-r--r--indra/newview/lloutfitslist.h5
-rw-r--r--indra/newview/llpaneleditwearable.cpp1
-rw-r--r--indra/newview/llpaneloutfitedit.cpp70
-rw-r--r--indra/newview/llpaneloutfitedit.h5
-rw-r--r--indra/newview/llpaneloutfitsinventory.cpp16
-rw-r--r--indra/newview/skins/default/xui/en/floater_map.xml3
-rw-r--r--indra/newview/skins/default/xui/en/menu_outfit_gear.xml13
-rw-r--r--indra/newview/skins/default/xui/en/panel_edit_wearable.xml781
-rw-r--r--indra/newview/skins/default/xui/en/panel_outfit_edit.xml3
17 files changed, 507 insertions, 445 deletions
diff --git a/indra/llui/lltextbase.cpp b/indra/llui/lltextbase.cpp
index 2d0d5c12cb..17e41d9e24 100644
--- a/indra/llui/lltextbase.cpp
+++ b/indra/llui/lltextbase.cpp
@@ -1630,7 +1630,7 @@ void LLTextBase::appendTextImpl(const std::string &new_text, const LLStyle::Para
// Text will be replaced during rendering with the icon,
// but string cannot be empty or the segment won't be
// added (or drawn).
- appendImageSegment(part, icon);
+ appendImageSegment(icon);
}
}
@@ -1702,7 +1702,7 @@ void LLTextBase::appendLineBreakSegment(const LLStyle::Params& style_params)
insertStringNoUndo(getLength(), utf8str_to_wstring("\n"), &segments);
}
-void LLTextBase::appendImageSegment(S32 highlight_part, const LLStyle::Params& style_params)
+void LLTextBase::appendImageSegment(const LLStyle::Params& style_params)
{
if(getPlainText())
{
diff --git a/indra/llui/lltextbase.h b/indra/llui/lltextbase.h
index 92876e20d6..fe8ebb1b80 100644
--- a/indra/llui/lltextbase.h
+++ b/indra/llui/lltextbase.h
@@ -196,6 +196,9 @@ public:
const LLFontGL* getDefaultFont() const { return mDefaultFont; }
+ void appendLineBreakSegment(const LLStyle::Params& style_params);
+ void appendImageSegment(const LLStyle::Params& style_params);
+
public:
// Fired when a URL link is clicked
commit_signal_t mURLClickSignal;
@@ -319,9 +322,6 @@ protected:
void updateRects();
void needsScroll() { mScrollNeeded = TRUE; }
void replaceUrlLabel(const std::string &url, const std::string &label);
-
- void appendLineBreakSegment(const LLStyle::Params& style_params);
- void appendImageSegment(S32 highlight_part, const LLStyle::Params& style_params);
void appendTextImpl(const std::string &new_text, const LLStyle::Params& input_params = LLStyle::Params());
void appendAndHighlightTextImpl(const std::string &new_text, S32 highlight_part, const LLStyle::Params& style_params);
diff --git a/indra/newview/llchathistory.cpp b/indra/newview/llchathistory.cpp
index ab97dbb695..ac12bffdfb 100644
--- a/indra/newview/llchathistory.cpp
+++ b/indra/newview/llchathistory.cpp
@@ -666,13 +666,13 @@ void LLChatHistory::appendMessage(const LLChat& chat, const LLSD &args, const LL
slurl = region_slurl.getLocationString();
}
}
- url += "&slurl=" + slurl;
+ url += "&slurl=" + LLURI::escape(slurl);
// set the link for the object name to be the objectim SLapp
// (don't let object names with hyperlinks override our objectim Url)
LLStyle::Params link_params(style_params);
link_params.color.control = "HTMLLinkColor";
- link_params.link_href = LLURI::escape(url);
+ link_params.link_href = url;
mEditor->appendText("<nolink>" + chat.mFromName + "</nolink>" + delimiter,
false, link_params);
}
diff --git a/indra/newview/llfloaterland.cpp b/indra/newview/llfloaterland.cpp
index 7c5586ec96..76263a4307 100644
--- a/indra/newview/llfloaterland.cpp
+++ b/indra/newview/llfloaterland.cpp
@@ -3022,8 +3022,9 @@ void insert_maturity_into_textbox(LLTextBox* target_textbox, LLFloater* names_fl
std::string text_after_rating = str_to_parse.substr(maturity_pos + MATURITY.length());
target_textbox->setText(text_before_rating);
- // any text may be here instead of "icon" except ""
- target_textbox->appendText(std::string("icon"), false, style);
+
+ target_textbox->appendImageSegment(style);
+
target_textbox->appendText(LLViewerParcelMgr::getInstance()->getSelectionRegion()->getSimAccessString(), false);
target_textbox->appendText(text_after_rating, false);
}
diff --git a/indra/newview/llfloatermap.cpp b/indra/newview/llfloatermap.cpp
index e74bfae026..df176a1f6d 100644
--- a/indra/newview/llfloatermap.cpp
+++ b/indra/newview/llfloatermap.cpp
@@ -284,4 +284,15 @@ void LLFloaterMap::handleStopTracking (const LLSD& userdata)
LLTracker::stopTracking ((void*)LLTracker::isTracking(NULL));
}
}
-
+void LLFloaterMap::setMinimized(BOOL b)
+{
+ LLFloater::setMinimized(b);
+ if(b)
+ {
+ setTitle(getString("mini_map_caption"));
+ }
+ else
+ {
+ setTitle("");
+ }
+}
diff --git a/indra/newview/llfloatermap.h b/indra/newview/llfloatermap.h
index 3c063adfb8..f7e46bf868 100644
--- a/indra/newview/llfloatermap.h
+++ b/indra/newview/llfloatermap.h
@@ -55,6 +55,8 @@ public:
/*virtual*/ void draw();
/*virtual*/ void onFocusLost();
/*virtual*/ void onFocusReceived();
+
+ /*virtual*/ void setMinimized(BOOL b);
private:
void handleZoom(const LLSD& userdata);
diff --git a/indra/newview/llinspectremoteobject.cpp b/indra/newview/llinspectremoteobject.cpp
index 97ff771658..be021df363 100644
--- a/indra/newview/llinspectremoteobject.cpp
+++ b/indra/newview/llinspectremoteobject.cpp
@@ -128,7 +128,16 @@ void LLInspectRemoteObject::onOpen(const LLSD& data)
update();
// Position the inspector relative to the mouse cursor
- LLUI::positionViewNearMouse(this);
+ // Similar to how tooltips are positioned
+ // See LLToolTipMgr::createToolTip
+ if (data.has("pos"))
+ {
+ LLUI::positionViewNearMouse(this, data["pos"]["x"].asInteger(), data["pos"]["y"].asInteger());
+ }
+ else
+ {
+ LLUI::positionViewNearMouse(this);
+ }
}
void LLInspectRemoteObject::onClickMap()
diff --git a/indra/newview/lloutfitslist.cpp b/indra/newview/lloutfitslist.cpp
index c5043e1c3d..6542afc366 100644
--- a/indra/newview/lloutfitslist.cpp
+++ b/indra/newview/lloutfitslist.cpp
@@ -288,6 +288,9 @@ void LLOutfitsList::refreshList(const LLUUID& category_id)
// Setting tab focus callback to monitor currently selected outfit.
tab->setFocusReceivedCallback(boost::bind(&LLOutfitsList::changeOutfitSelection, this, list, cat_id));
+ // Setting callback to reset items selection inside outfit on accordion collapsing and expanding (EXT-7875)
+ tab->setDropDownStateChangedCallback(boost::bind(&LLOutfitsList::resetItemSelection, this, list, cat_id));
+
// Setting list commit callback to monitor currently selected wearable item.
list->setCommitCallback(boost::bind(&LLOutfitsList::onSelectionChange, this, _1));
@@ -486,6 +489,13 @@ void LLOutfitsList::updateOutfitTab(const LLUUID& category_id)
}
}
+void LLOutfitsList::resetItemSelection(LLWearableItemsList* list, const LLUUID& category_id)
+{
+ list->resetSelection();
+ mItemSelected = false;
+ setSelectedOutfitUUID(category_id);
+}
+
void LLOutfitsList::changeOutfitSelection(LLWearableItemsList* list, const LLUUID& category_id)
{
MASK mask = gKeyboard->currentMask(TRUE);
diff --git a/indra/newview/lloutfitslist.h b/indra/newview/lloutfitslist.h
index df65f7187b..a6b9a66836 100644
--- a/indra/newview/lloutfitslist.h
+++ b/indra/newview/lloutfitslist.h
@@ -123,6 +123,11 @@ private:
void changeOutfitSelection(LLWearableItemsList* list, const LLUUID& category_id);
/**
+ *Resets items selection inside outfit
+ */
+ void resetItemSelection(LLWearableItemsList* list, const LLUUID& category_id);
+
+ /**
* Saves newly selected outfit ID.
*/
void setSelectedOutfitUUID(const LLUUID& category_id);
diff --git a/indra/newview/llpaneleditwearable.cpp b/indra/newview/llpaneleditwearable.cpp
index 4402b2130f..71edd39348 100644
--- a/indra/newview/llpaneleditwearable.cpp
+++ b/indra/newview/llpaneleditwearable.cpp
@@ -977,6 +977,7 @@ void LLPanelEditWearable::revertChanges()
mWearablePtr->revertValues();
mNameEditor->setText(mWearablePtr->getName());
+ updatePanelPickerControls(mWearablePtr->getType());
}
void LLPanelEditWearable::showWearable(LLWearable* wearable, BOOL show)
diff --git a/indra/newview/llpaneloutfitedit.cpp b/indra/newview/llpaneloutfitedit.cpp
index 6b5eb23a9b..aac020087b 100644
--- a/indra/newview/llpaneloutfitedit.cpp
+++ b/indra/newview/llpaneloutfitedit.cpp
@@ -252,7 +252,8 @@ LLPanelOutfitEdit::LLPanelOutfitEdit()
mInitialized(false),
mAddWearablesPanel(NULL),
mFolderViewFilterCmbBox(NULL),
- mListViewFilterCmbBox(NULL)
+ mListViewFilterCmbBox(NULL),
+ mPlusBtn(NULL)
{
mSavedFolderState = new LLSaveFolderState();
mSavedFolderState->setApply(FALSE);
@@ -343,9 +344,9 @@ BOOL LLPanelOutfitEdit::postBuild()
mInventoryItemsPanel = getChild<LLInventoryPanel>("folder_view");
mInventoryItemsPanel->setFilterTypes(ALL_ITEMS_MASK);
mInventoryItemsPanel->setShowFolderState(LLInventoryFilter::SHOW_NON_EMPTY_FOLDERS);
- mInventoryItemsPanel->setSelectCallback(boost::bind(&LLPanelOutfitEdit::onInventorySelectionChange, this, _1, _2));
- mInventoryItemsPanel->getRootFolder()->setReshapeCallback(boost::bind(&LLPanelOutfitEdit::onInventorySelectionChange, this, _1, _2));
-
+ mInventoryItemsPanel->setSelectCallback(boost::bind(&LLPanelOutfitEdit::onInventorySelectionChange, this));
+ mInventoryItemsPanel->getRootFolder()->setReshapeCallback(boost::bind(&LLPanelOutfitEdit::onInventorySelectionChange, this));
+
mCOFDragAndDropObserver = new LLCOFDragAndDropObserver(mInventoryItemsPanel->getModel());
mFolderViewFilterCmbBox = getChild<LLComboBox>("folder_view_filter_combobox");
@@ -371,7 +372,8 @@ BOOL LLPanelOutfitEdit::postBuild()
childSetAction("show_add_wearables_btn", boost::bind(&LLPanelOutfitEdit::onAddMoreButtonClicked, this));
- childSetAction("plus_btn", boost::bind(&LLPanelOutfitEdit::onPlusBtnClicked, this));
+ mPlusBtn = getChild<LLButton>("plus_btn");
+ mPlusBtn->setClickedCallback(boost::bind(&LLPanelOutfitEdit::onPlusBtnClicked, this));
mEditWearableBtn = getChild<LLButton>("edit_wearable_btn");
mEditWearableBtn->setEnabled(FALSE);
@@ -382,6 +384,8 @@ BOOL LLPanelOutfitEdit::postBuild()
mWearablesListViewPanel = getChild<LLPanel>("filtered_wearables_panel");
mWearableItemsList = getChild<LLInventoryItemsList>("list_view");
+ mWearableItemsList->setCommitOnSelectionChange(true);
+ mWearableItemsList->setCommitCallback(boost::bind(&LLPanelOutfitEdit::onInventorySelectionChange, this));
mSaveComboBtn.reset(new LLSaveOutfitComboBtn(this));
return TRUE;
@@ -559,21 +563,7 @@ void LLPanelOutfitEdit::onSearchEdit(const std::string& string)
void LLPanelOutfitEdit::onPlusBtnClicked(void)
{
- LLUUID selected_id;
- if (mInventoryItemsPanel->getVisible())
- {
- LLFolderViewItem* curr_item = mInventoryItemsPanel->getRootFolder()->getCurSelectedItem();
- if (!curr_item) return;
-
- LLFolderViewEventListener* listenerp = curr_item->getListener();
- if (!listenerp) return;
-
- selected_id = listenerp->getUUID();
- }
- else if (mWearablesListViewPanel->getVisible())
- {
- selected_id = mWearableItemsList->getSelectedUUID();
- }
+ LLUUID selected_id = getSelectedItemUUID();
if (selected_id.isNull()) return;
@@ -658,22 +648,28 @@ void LLPanelOutfitEdit::onEditWearableClicked(void)
}
}
-void LLPanelOutfitEdit::onInventorySelectionChange(const std::deque<LLFolderViewItem*> &items, BOOL user_action)
+void LLPanelOutfitEdit::onInventorySelectionChange()
{
- LLFolderViewItem* current_item = mInventoryItemsPanel->getRootFolder()->getCurSelectedItem();
- if (!current_item)
+ LLUUID item_uuid = getSelectedItemUUID();
+ if (item_uuid.isNull())
{
return;
}
- LLViewerInventoryItem* item = current_item->getInventoryItem();
- if (!item) return;
+ LLViewerInventoryItem* item(gInventory.getItem(item_uuid));
+ if (!item)
+ {
+ return;
+ }
switch (item->getType())
{
- case LLAssetType::AT_CLOTHING:
case LLAssetType::AT_BODYPART:
+ mPlusBtn->setToolTip(getString("replace_body_part"));
+ break;
+ case LLAssetType::AT_CLOTHING:
case LLAssetType::AT_OBJECT:
+ mPlusBtn->setToolTip(LLStringUtil::null);
default:
break;
}
@@ -934,4 +930,26 @@ void LLPanelOutfitEdit::onOutfitChanging(bool started)
indicator->setVisible(started);
}
+LLUUID LLPanelOutfitEdit::getSelectedItemUUID()
+{
+ LLUUID selected_id;
+ if (mInventoryItemsPanel->getVisible())
+ {
+ LLFolderViewItem* curr_item = mInventoryItemsPanel->getRootFolder()->getCurSelectedItem();
+ if (!curr_item) return selected_id;
+
+ LLFolderViewEventListener* listenerp = curr_item->getListener();
+ if (!listenerp) return selected_id;
+
+ selected_id = listenerp->getUUID();
+ }
+ else if (mWearablesListViewPanel->getVisible())
+ {
+ selected_id = mWearableItemsList->getSelectedUUID();
+ }
+
+ return selected_id;
+}
+
+
// EOF
diff --git a/indra/newview/llpaneloutfitedit.h b/indra/newview/llpaneloutfitedit.h
index f449fbca27..aa5d00903a 100644
--- a/indra/newview/llpaneloutfitedit.h
+++ b/indra/newview/llpaneloutfitedit.h
@@ -145,7 +145,7 @@ public:
void onFolderViewFilterCommitted(LLUICtrl* ctrl);
void onListViewFilterCommitted(LLUICtrl* ctrl);
void onSearchEdit(const std::string& string);
- void onInventorySelectionChange(const std::deque<LLFolderViewItem*> &items, BOOL user_action);
+ void onInventorySelectionChange();
void onPlusBtnClicked(void);
void applyFolderViewFilter(EFolderViewItemType type);
@@ -192,7 +192,7 @@ private:
void onAddMoreButtonClicked();
void showFilteredWearablesListView(LLWearableType::EType type);
void onOutfitChanging(bool started);
-
+ LLUUID getSelectedItemUUID();
LLTextBox* mCurrentOutfitName;
LLTextBox* mStatus;
@@ -203,6 +203,7 @@ private:
LLButton* mEditWearableBtn;
LLButton* mFolderViewBtn;
LLButton* mListViewBtn;
+ LLButton* mPlusBtn;
LLPanel* mAddWearablesPanel;
LLComboBox* mFolderViewFilterCmbBox;
diff --git a/indra/newview/llpaneloutfitsinventory.cpp b/indra/newview/llpaneloutfitsinventory.cpp
index 714d9cd4c5..d382c77430 100644
--- a/indra/newview/llpaneloutfitsinventory.cpp
+++ b/indra/newview/llpaneloutfitsinventory.cpp
@@ -86,6 +86,7 @@ public:
registrar.add("Gear.Wear", boost::bind(&LLOutfitListGearMenu::onWear, this));
registrar.add("Gear.TakeOff", boost::bind(&LLOutfitListGearMenu::onTakeOff, this));
+ registrar.add("Gear.Rename", boost::bind(&LLOutfitListGearMenu::onRename, this));
registrar.add("Gear.Delete", boost::bind(&LLOutfitListGearMenu::onDelete, this));
registrar.add("Gear.Create", boost::bind(&LLOutfitListGearMenu::onCreate, this, _2));
@@ -158,6 +159,15 @@ private:
}
}
+ void onRename()
+ {
+ const LLUUID& selected_outfit_id = getSelectedOutfitID();
+ if (selected_outfit_id.notNull())
+ {
+ LLAppearanceMgr::instance().renameOutfit(selected_outfit_id);
+ }
+ }
+
void onDelete()
{
const LLUUID& selected_outfit_id = getSelectedOutfitID();
@@ -187,7 +197,11 @@ private:
return false;
}
- if ("delete" == param)
+ if ("rename" == param)
+ {
+ return get_is_category_renameable(&gInventory, selected_outfit_id);
+ }
+ else if ("delete" == param)
{
return LLAppearanceMgr::instance().getCanRemoveOutfit(selected_outfit_id);
}
diff --git a/indra/newview/skins/default/xui/en/floater_map.xml b/indra/newview/skins/default/xui/en/floater_map.xml
index a0e28f7a42..efd96624ab 100644
--- a/indra/newview/skins/default/xui/en/floater_map.xml
+++ b/indra/newview/skins/default/xui/en/floater_map.xml
@@ -54,6 +54,9 @@
name="ToolTipMsg">
[AGENT][REGION](Double-click to open Map)
</floater.string>
+ <floater.string name="mini_map_caption">
+ MINIMAP
+ </floater.string>
<net_map
bg_color="NetMapBackgroundColor"
follows="top|left|bottom|right"
diff --git a/indra/newview/skins/default/xui/en/menu_outfit_gear.xml b/indra/newview/skins/default/xui/en/menu_outfit_gear.xml
index 16b33eff89..8e7ef7f0b5 100644
--- a/indra/newview/skins/default/xui/en/menu_outfit_gear.xml
+++ b/indra/newview/skins/default/xui/en/menu_outfit_gear.xml
@@ -176,6 +176,19 @@
<menu_item_separator name="sepatator2" />
<menu_item_call
+ label="Rename Outfit"
+ layout="topleft"
+ name="rename">
+ <on_click
+ function="Gear.Rename" />
+ <on_enable
+ function="Gear.OnEnable"
+ parameter="rename" />
+ <on_visible
+ function="Gear.OnVisible"
+ parameter="rename" />
+ </menu_item_call>
+ <menu_item_call
label="Delete Outfit"
layout="topleft"
name="delete_outfit">
diff --git a/indra/newview/skins/default/xui/en/panel_edit_wearable.xml b/indra/newview/skins/default/xui/en/panel_edit_wearable.xml
index 00c5325039..1ab9f722d0 100644
--- a/indra/newview/skins/default/xui/en/panel_edit_wearable.xml
+++ b/indra/newview/skins/default/xui/en/panel_edit_wearable.xml
@@ -1,428 +1,399 @@
<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
<panel
background_visible="true"
- bevel_style="in"
+ bevel_style="in"
follows="all"
height="570"
+ help_topic="edit_wearable"
label="Wearable"
layout="topleft"
-left="0"
- help_topic="edit_wearable"
+ left="0"
name="panel_edit_wearable"
- top="0"
+ top="0"
width="333">
- <string
- name="edit_shape_title">
- Editing Shape
- </string>
- <string
- name="edit_skin_title">
- Editing Skin
- </string>
- <string
- name="edit_hair_title">
- Editing Hair
- </string>
- <string
- name="edit_eyes_title">
- Editing Eyes
- </string>
- <string
- name="edit_shirt_title">
- Editing Shirt
- </string>
- <string
- name="edit_pants_title">
- Editing Pants
- </string>
- <string
- name="edit_shoes_title">
- Editing Shoes
- </string>
- <string
- name="edit_socks_title">
- Editing Socks
- </string>
- <string
- name="edit_jacket_title">
- Editing Jacket
- </string>
- <string
- name="edit_skirt_title">
- Editing Skirt
- </string>
- <string
- name="edit_gloves_title">
- Editing Gloves
- </string>
- <string
- name="edit_undershirt_title">
- Editing Undershirt
- </string>
- <string
- name="edit_underpants_title">
- Editing Underpants
- </string>
- <string
- name="edit_alpha_title">
- Editing Alpha Mask
- </string>
- <string
- name="edit_tattoo_title">
- Editing Tattoo
- </string>
- <string
- name="shape_desc_text">
- Shape:
- </string>
- <string
- name="skin_desc_text">
- Skin:
- </string>
- <string
- name="hair_desc_text">
- Hair:
- </string>
- <string
- name="eyes_desc_text">
- Eyes:
- </string>
- <string
- name="shirt_desc_text">
- Shirt:
- </string>
- <string
- name="pants_desc_text">
- Pants:
- </string>
- <string
- name="shoes_desc_text">
- Shoes:
- </string>
- <string
- name="socks_desc_text">
- Socks:
- </string>
- <string
- name="jacket_desc_text">
- Jacket:
- </string>
- <string
- name="skirt_desc_text">
- Skirt:
- </string>
- <string
- name="gloves_desc_text">
- Gloves:
- </string>
- <string
- name="undershirt_desc_text">
- Undershirt:
- </string>
- <string
- name="underpants_desc_text">
- Underpants:
- </string>
- <string
- name="alpha_desc_text">
- Alpha Mask:
- </string>
- <string
- name="tattoo_desc_text">
- Tattoo:
- </string>
+ <string
+ name="edit_shape_title"
+ value="Editing Shape" />
+ <string
+ name="edit_skin_title"
+ value="Editing Skin" />
+ <string
+ name="edit_hair_title"
+ value="Editing Hair" />
+ <string
+ name="edit_eyes_title"
+ value="Editing Eyes" />
+ <string
+ name="edit_shirt_title"
+ value="Editing Shirt" />
+ <string
+ name="edit_pants_title"
+ value="Editing Pants" />
+ <string
+ name="edit_shoes_title"
+ value="Editing Shoes" />
+ <string
+ name="edit_socks_title"
+ value="Editing Socks" />
+ <string
+ name="edit_jacket_title"
+ value="Editing Jacket" />
+ <string
+ name="edit_skirt_title"
+ value="Editing Skirt" />
+ <string
+ name="edit_gloves_title"
+ value="Editing Gloves" />
+ <string
+ name="edit_undershirt_title"
+ value="Editing Undershirt" />
+ <string
+ name="edit_underpants_title"
+ value="Editing Underpants" />
+ <string
+ name="edit_alpha_title"
+ value="Editing Alpha Mask" />
+ <string
+ name="edit_tattoo_title"
+ value="Editing Tattoo" />
+ <string
+ name="shape_desc_text"
+ value="Shape:" />
+ <string
+ name="skin_desc_text"
+ value="Skin:" />
+ <string
+ name="hair_desc_text"
+ value="Hair:" />
+ <string
+ name="eyes_desc_text"
+ value="Eyes:" />
+ <string
+ name="shirt_desc_text"
+ value="Shirt:" />
+ <string
+ name="pants_desc_text"
+ value="Pants:" />
+ <string
+ name="shoes_desc_text"
+ value="Shoes:" />
+ <string
+ name="socks_desc_text"
+ value="Socks:" />
+ <string
+ name="jacket_desc_text"
+ value="Jacket:" />
+ <string
+ name="skirt_desc_text"
+ value="Skirt:" />
+ <string
+ name="gloves_desc_text"
+ value="Gloves:" />
+ <string
+ name="undershirt_desc_text"
+ value="Undershirt:" />
+ <string
+ name="underpants_desc_text"
+ value="Underpants:" />
+ <string
+ name="alpha_desc_text"
+ value="Alpha Mask:" />
+ <string
+ name="tattoo_desc_text"
+ value="Tattoo:" />
<button
follows="top|left"
height="24"
- width="30"
image_hover_unselected="BackButton_Over"
image_pressed="BackButton_Press"
image_unselected="BackButton_Off"
layout="topleft"
- name="back_btn"
left="11"
- top="3" />
- <text
- follows="top|left"
- font="SansSerifHugeBold"
- height="22"
- layout="topleft"
- left_pad="8"
- name="edit_wearable_title"
- text_color="white"
- top="3"
- value="Editing Shape"
- width="270" />
- <panel
- border="false"
- bg_alpha_color="DkGray2"
- bg_opaque_color="DkGray2"
- background_visible="true"
- background_opaque="true"
+ name="back_btn"
+ top="3"
+ width="30" />
+ <text
+ follows="top|left"
+ font="SansSerifHugeBold"
+ height="22"
+ layout="topleft"
+ left_pad="8"
+ name="edit_wearable_title"
+ text_color="white"
+ top="3"
+ value="Editing Shape"
+ width="270" />
+ <panel
+ background_opaque="true"
+ background_visible="true"
+ bg_alpha_color="DkGray2"
+ bg_opaque_color="DkGray2"
+ border="false"
+ follows="top|left|right"
+ height="60"
+ label="Shirt"
+ layout="topleft"
+ left="10"
+ name="wearable_type_panel"
+ top_pad="10"
+ width="313">
+ <text
follows="top|left|right"
- height="60"
- label="Shirt"
+ font="SansSerifSmallBold"
+ height="16"
+ layout="topleft"
+ left="10"
+ name="description_text"
+ text_color="white"
+ top="10"
+ value="Shape:"
+ width="150" />
+ <radio_group
+ control_name="AvatarSex"
+ follows="left|top|right"
+ height="20"
layout="topleft"
- left="10"
- name="wearable_type_panel"
- top_pad="10"
- width="313">
- <text
- follows="top|left|right"
- font="SansSerifSmallBold"
- height="16"
- layout="topleft"
- left="10"
- name="description_text"
- text_color="white"
- top="10"
- value="Shape:"
- width="150" />
- <radio_group
- control_name="AvatarSex"
- follows="left|top|right"
- left="210"
- height="20"
- layout="topleft"
- name="sex_radio"
- top="5"
- width="110">
- <radio_item
- follows="all"
- height="16"
- label=""
- layout="topleft"
- left="0"
- name="sex_male"
- tool_tip="Male"
- value="1"
- width="40" />
- <radio_item
- follows="all"
- height="16"
- label=""
- layout="topleft"
- left_pad="10"
- name="sex_female"
- tool_tip="Female"
- value="0"
- width="40" />
- </radio_group>
- <!-- graphical labels for the radio buttons above -->
- <icon
- height="16"
- image_name="icons/Male.png"
- left="230"
- name="male_icon"
- tool_tip="Male"
- top="7"
- width="16" />
- <icon
- height="16"
- image_name="icons/Female.png"
- name="female_icon"
- left="280"
- tool_tip="Female"
- top="7"
- width="16" />
- <line_editor
+ left="210"
+ name="sex_radio"
+ top="5"
+ width="110">
+ <radio_item
follows="all"
- height="23"
+ height="16"
+ label=""
layout="topleft"
- left="10"
- max_length="63"
- name="description"
- prevalidate_callback="ascii"
- text_color="black"
- top_pad="3"
- width="290" />
- </panel>
- <panel
- follows="all"
- height="433"
- layout="topleft"
- left="0"
- name="edit_subpanel_container"
- top_pad="2"
- width="333">
- <!-- the shape editing panel is taller than the others
+ left="0"
+ name="sex_male"
+ tool_tip="Male"
+ value="1"
+ width="40" />
+ <radio_item
+ follows="all"
+ height="16"
+ label=""
+ layout="topleft"
+ left_pad="10"
+ name="sex_female"
+ tool_tip="Female"
+ value="0"
+ width="40"/>
+ </radio_group>
+ <!-- graphical labels for the radio buttons above -->
+ <icon
+ height="16"
+ image_name="icons/Male.png"
+ layout="topleft"
+ left="230"
+ name="male_icon"
+ tool_tip="Male"
+ top="7"
+ width="16" />
+ <icon
+ height="16"
+ image_name="icons/Female.png"
+ layout="topleft"
+ left="280"
+ name="female_icon"
+ tool_tip="Female"
+ top="7"
+ width="16" />
+ <line_editor
+ follows="all"
+ height="23"
+ layout="topleft"
+ left="10"
+ max_length="63"
+ name="description"
+ prevalidate_callback="ascii"
+ text_color="black"
+ top_pad="3"
+ width="290" />
+ </panel>
+ <panel
+ follows="all"
+ height="433"
+ layout="topleft"
+ left="0"
+ name="edit_subpanel_container"
+ top_pad="2"
+ width="333">
+ <!-- the shape editing panel is taller than the others
because it also displays avatar height -->
- <panel
- filename="panel_edit_shape.xml"
- follows="all"
- height="433"
- layout="topleft"
- left="0"
- name="edit_shape_panel"
- top="0"
- visible="false"
- width="333" />
- <panel
- filename="panel_edit_skin.xml"
- follows="all"
- height="425"
- layout="topleft"
- left="0"
- name="edit_skin_panel"
- top="8"
- visible="false"
- width="333" />
- <panel
- filename="panel_edit_hair.xml"
- follows="all"
- height="425"
- layout="topleft"
- left="0"
- name="edit_hair_panel"
- top="8"
- visible="false"
- width="333" />
- <panel
- filename="panel_edit_eyes.xml"
- follows="all"
- height="425"
- layout="topleft"
- left="0"
- name="edit_eyes_panel"
- top="8"
- visible="false"
- width="333" />
- <panel
- filename="panel_edit_shirt.xml"
- follows="all"
- height="425"
- layout="topleft"
- left="0"
- name="edit_shirt_panel"
- top="8"
- visible="false"
- width="333" />
- <panel
- filename="panel_edit_pants.xml"
- follows="all"
- height="425"
- layout="topleft"
- left="0"
- name="edit_pants_panel"
- top="8"
- visible="false"
- width="333" />
- <panel
- filename="panel_edit_shoes.xml"
- follows="all"
- height="425"
- layout="topleft"
- left="0"
- name="edit_shoes_panel"
- top="8"
- visible="false"
- width="333" />
- <panel
- filename="panel_edit_socks.xml"
- follows="all"
- height="425"
- layout="topleft"
- left="0"
- name="edit_socks_panel"
- top="8"
- visible="false"
- width="333" />
- <panel
- filename="panel_edit_jacket.xml"
- follows="all"
- height="425"
- layout="topleft"
- left="0"
- name="edit_jacket_panel"
- top="8"
- visible="false"
- width="333" />
- <panel
- filename="panel_edit_skirt.xml"
- follows="all"
- height="425"
- layout="topleft"
- left="0"
- name="edit_skirt_panel"
- top="8"
- visible="false"
- width="333" />
- <panel
- filename="panel_edit_gloves.xml"
- follows="all"
- height="425"
- layout="topleft"
- left="0"
- name="edit_gloves_panel"
- top="8"
- visible="false"
- width="333" />
- <panel
- filename="panel_edit_undershirt.xml"
- follows="all"
- height="425"
- layout="topleft"
- left="0"
- name="edit_undershirt_panel"
- top="8"
- visible="false"
- width="333" />
- <panel
- filename="panel_edit_underpants.xml"
- follows="all"
- height="425"
- layout="topleft"
- left="0"
- name="edit_underpants_panel"
- top="8"
- visible="false"
- width="333" />
- <panel
- filename="panel_edit_alpha.xml"
- follows="all"
- height="425"
- layout="topleft"
- left="0"
- name="edit_alpha_panel"
- top="8"
- visible="false"
- width="333" />
- <panel
- filename="panel_edit_tattoo.xml"
- follows="all"
- height="425"
- layout="topleft"
- left="0"
- name="edit_tattoo_panel"
- top="8"
- visible="false"
- width="333" />
- </panel>
-
- <panel
- follows="bottom|left|right"
- height="23"
- layout="topleft"
- left="2"
- name="button_panel"
- top_pad="6"
- width="333" >
- <button
- follows="bottomleft"
- layout="topleft"
- height="23"
- label="Save As"
- left="8"
- name="save_as_button"
- top="0"
- width="153" />
- <button
- follows="bottomleft"
- layout="topleft"
- height="23"
- label="Revert"
- left_pad="7"
- name="revert_button"
- width="152" />
- </panel>
+ <panel
+ filename="panel_edit_shape.xml"
+ follows="all"
+ height="433"
+ layout="topleft"
+ left="0"
+ name="edit_shape_panel"
+ top="0"
+ visible="false"
+ width="333" />
+ <panel
+ filename="panel_edit_skin.xml"
+ follows="all"
+ height="425"
+ layout="topleft"
+ left="0"
+ name="edit_skin_panel"
+ top="8"
+ visible="false"
+ width="333" />
+ <panel
+ filename="panel_edit_hair.xml"
+ follows="all"
+ height="425"
+ layout="topleft"
+ left="0"
+ name="edit_hair_panel"
+ top="8"
+ visible="false"
+ width="333" />
+ <panel
+ filename="panel_edit_eyes.xml"
+ follows="all"
+ height="425"
+ layout="topleft"
+ left="0"
+ name="edit_eyes_panel"
+ top="8"
+ visible="false"
+ width="333" />
+ <panel
+ filename="panel_edit_shirt.xml"
+ follows="all"
+ height="425"
+ layout="topleft"
+ left="0"
+ name="edit_shirt_panel"
+ top="8"
+ visible="false"
+ width="333" />
+ <panel
+ filename="panel_edit_pants.xml"
+ follows="all"
+ height="425"
+ layout="topleft"
+ left="0"
+ name="edit_pants_panel"
+ top="8"
+ visible="false"
+ width="333" />
+ <panel
+ filename="panel_edit_shoes.xml"
+ follows="all"
+ height="425"
+ layout="topleft"
+ left="0"
+ name="edit_shoes_panel"
+ top="8"
+ visible="false"
+ width="333" />
+ <panel
+ filename="panel_edit_socks.xml"
+ follows="all"
+ height="425"
+ layout="topleft"
+ left="0"
+ name="edit_socks_panel"
+ top="8"
+ visible="false"
+ width="333" />
+ <panel
+ filename="panel_edit_jacket.xml"
+ follows="all"
+ height="425"
+ layout="topleft"
+ left="0"
+ name="edit_jacket_panel"
+ top="8"
+ visible="false"
+ width="333" />
+ <panel
+ filename="panel_edit_skirt.xml"
+ follows="all"
+ height="425"
+ layout="topleft"
+ left="0"
+ name="edit_skirt_panel"
+ top="8"
+ visible="false"
+ width="333" />
+ <panel
+ filename="panel_edit_gloves.xml"
+ follows="all"
+ height="425"
+ layout="topleft"
+ left="0"
+ name="edit_gloves_panel"
+ top="8"
+ visible="false"
+ width="333" />
+ <panel
+ filename="panel_edit_undershirt.xml"
+ follows="all"
+ height="425"
+ layout="topleft"
+ left="0"
+ name="edit_undershirt_panel"
+ top="8"
+ visible="false"
+ width="333" />
+ <panel
+ filename="panel_edit_underpants.xml"
+ follows="all"
+ height="425"
+ layout="topleft"
+ left="0"
+ name="edit_underpants_panel"
+ top="8"
+ visible="false"
+ width="333" />
+ <panel
+ filename="panel_edit_alpha.xml"
+ follows="all"
+ height="425"
+ layout="topleft"
+ left="0"
+ name="edit_alpha_panel"
+ top="8"
+ visible="false"
+ width="333" />
+ <panel
+ filename="panel_edit_tattoo.xml"
+ follows="all"
+ height="425"
+ layout="topleft"
+ left="0"
+ name="edit_tattoo_panel"
+ top="8"
+ visible="false"
+ width="333" />
+ </panel>
+ <panel
+ follows="bottom|left|right"
+ height="23"
+ layout="topleft"
+ left="2"
+ name="button_panel"
+ top_pad="6"
+ width="333">
+ <button
+ follows="bottomleft"
+ height="23"
+ label="Save As"
+ layout="topleft"
+ left="8"
+ name="save_as_button"
+ top="0"
+ width="153" />
+ <button
+ follows="bottomleft"
+ height="23"
+ label="Revert"
+ layout="topleft"
+ left_pad="7"
+ name="revert_button"
+ width="152" />
+ </panel>
</panel>
diff --git a/indra/newview/skins/default/xui/en/panel_outfit_edit.xml b/indra/newview/skins/default/xui/en/panel_outfit_edit.xml
index 819ba7f878..d6549adfef 100644
--- a/indra/newview/skins/default/xui/en/panel_outfit_edit.xml
+++ b/indra/newview/skins/default/xui/en/panel_outfit_edit.xml
@@ -54,6 +54,9 @@
<string name="Filter.Clothing" value="Clothing"/>
<string name="Filter.Bodyparts" value="Body parts"/>
+ <string
+ name="replace_body_part"
+ value="Click to replace your existing shape"/>
<button
follows="top|left"