diff --git a/indra/llcharacter/llcharacter.cpp b/indra/llcharacter/llcharacter.cpp index 27c0c0b6406f2373bbd692286996e6f907dcdf00..11665aff7684f7c7f9a677f393be1f72e6485257 100644 --- a/indra/llcharacter/llcharacter.cpp +++ b/indra/llcharacter/llcharacter.cpp @@ -381,7 +381,7 @@ void LLCharacter::clearVisualParamWeights() param; param = getNextVisualParam()) { - if (param->getGroup() == VISUAL_PARAM_GROUP_TWEAKABLE) + if (param->isTweakable()) { param->setWeight( param->getDefaultWeight(), FALSE ); } diff --git a/indra/llcharacter/llvisualparam.cpp b/indra/llcharacter/llvisualparam.cpp index 703fe2f9cccbe500c606dcf1926e67ec1abaaaed..122406e20bd59ba443b3ac58e8877e081ea6b8c9 100644 --- a/indra/llcharacter/llvisualparam.cpp +++ b/indra/llcharacter/llvisualparam.cpp @@ -261,7 +261,7 @@ void LLVisualParam::setAnimationTarget(F32 target_value, BOOL upload_bake) if (mInfo) { - if (getGroup() == VISUAL_PARAM_GROUP_TWEAKABLE) + if (isTweakable()) { mTargetWeight = llclamp(target_value, mInfo->mMinWeight, mInfo->mMaxWeight); } @@ -305,7 +305,7 @@ void LLVisualParam::animate( F32 delta, BOOL upload_bake ) //----------------------------------------------------------------------------- void LLVisualParam::stopAnimating(BOOL upload_bake) { - if (mIsAnimating && getGroup() == VISUAL_PARAM_GROUP_TWEAKABLE) + if (mIsAnimating && isTweakable()) { mIsAnimating = FALSE; setWeight(mTargetWeight, upload_bake); diff --git a/indra/llcharacter/llvisualparam.h b/indra/llcharacter/llvisualparam.h index 12b45e6ebe64e712af6dc45ac301521d3fe395e2..20ee5fd7ec8bf533f84872375487ff6aad801aa9 100644 --- a/indra/llcharacter/llvisualparam.h +++ b/indra/llcharacter/llvisualparam.h @@ -52,6 +52,7 @@ enum EVisualParamGroup { VISUAL_PARAM_GROUP_TWEAKABLE, VISUAL_PARAM_GROUP_ANIMATABLE, + VISUAL_PARAM_GROUP_TWEAKABLE_NO_TRANSMIT, NUM_VISUAL_PARAM_GROUPS }; @@ -144,6 +145,7 @@ class LLVisualParam F32 getCurrentWeight() const { return mCurWeight; } F32 getLastWeight() const { return mLastWeight; } BOOL isAnimating() const { return mIsAnimating; } + BOOL isTweakable() const { return (getGroup() == VISUAL_PARAM_GROUP_TWEAKABLE) || (getGroup() == VISUAL_PARAM_GROUP_TWEAKABLE_NO_TRANSMIT); } LLVisualParam* getNextParam() { return mNext; } void setNextParam( LLVisualParam *next ); diff --git a/indra/llui/llbutton.h b/indra/llui/llbutton.h index d7ab030a47082db75929b1df0dcfdbdb0505ba1f..f4af19b696e5e6994ce0962d3d077dd8601f5ce2 100644 --- a/indra/llui/llbutton.h +++ b/indra/llui/llbutton.h @@ -230,6 +230,8 @@ class LLButton void setFont(const LLFontGL *font) { mGLFont = ( font ? font : LLFontGL::getFontSansSerif()); } + const LLFontGL* getFont() const { return mGLFont; } + S32 getLastDrawCharsCount() const { return mLastDrawCharsCount; } diff --git a/indra/llui/llflatlistview.cpp b/indra/llui/llflatlistview.cpp index f22b49f30feb81f16a4a4c3dbd6a879de22ede0d..b87851490db2ace3a2bcdff5daf0a589725be5eb 100644 --- a/indra/llui/llflatlistview.cpp +++ b/indra/llui/llflatlistview.cpp @@ -1227,7 +1227,7 @@ LLFlatListViewEx::LLFlatListViewEx(const Params& p) , mNoFilteredItemsMsg(p.no_filtered_items_msg) , mNoItemsMsg(p.no_items_msg) , mForceShowingUnmatchedItems(false) -, mLastFilterSucceded(false) +, mHasMatchedItems(false) { } @@ -1285,7 +1285,7 @@ void LLFlatListViewEx::filterItems() item_panel_list_t items; getItems(items); - mLastFilterSucceded = false; + mHasMatchedItems = false; for (item_panel_list_t::iterator iter = items.begin(), iter_end = items.end(); @@ -1296,13 +1296,16 @@ void LLFlatListViewEx::filterItems() // i.e. we don't hide items that don't support 'match_filter' action, separators etc. if (0 == pItem->notify(action)) { - mLastFilterSucceded = true; + mHasMatchedItems = true; pItem->setVisible(true); } else { // TODO: implement (re)storing of current selection. - selectItem(pItem, false); + if(!mForceShowingUnmatchedItems) + { + selectItem(pItem, false); + } pItem->setVisible(mForceShowingUnmatchedItems); } } @@ -1311,9 +1314,9 @@ void LLFlatListViewEx::filterItems() notifyParentItemsRectChanged(); } -bool LLFlatListViewEx::wasLasFilterSuccessfull() +bool LLFlatListViewEx::hasMatchedItems() { - return mLastFilterSucceded; + return mHasMatchedItems; } //EOF diff --git a/indra/llui/llflatlistview.h b/indra/llui/llflatlistview.h index caeddfc179104291f9602d93b6a3d7ffce51a738..ded46d81226873733edca434dcde1e3fbd2ebece 100644 --- a/indra/llui/llflatlistview.h +++ b/indra/llui/llflatlistview.h @@ -488,7 +488,7 @@ class LLFlatListViewEx : public LLFlatListView /** * Returns true if last call of filterItems() found at least one matching item */ - bool wasLasFilterSuccessfull(); + bool hasMatchedItems(); protected: LLFlatListViewEx(const Params& p); @@ -512,7 +512,7 @@ class LLFlatListViewEx : public LLFlatListView /** * True if last call of filterItems() found at least one matching item */ - bool mLastFilterSucceded; + bool mHasMatchedItems; }; #endif diff --git a/indra/llui/llfloater.cpp b/indra/llui/llfloater.cpp index 9a56372e6821feb8dc71c7ec0fef8015927fd66e..39a6855273df547f08e87c4db82a90dcd3d4c1f5 100644 --- a/indra/llui/llfloater.cpp +++ b/indra/llui/llfloater.cpp @@ -2754,10 +2754,10 @@ void LLFloater::initFromParams(const LLFloater::Params& p) LLFastTimer::DeclareTimer POST_BUILD("Floater Post Build"); -bool LLFloater::initFloaterXML(LLXMLNodePtr node, LLView *parent, LLXMLNodePtr output_node) +bool LLFloater::initFloaterXML(LLXMLNodePtr node, LLView *parent, const std::string& filename, LLXMLNodePtr output_node) { Params params(LLUICtrlFactory::getDefaultParams<LLFloater>()); - LLXUIParser::instance().readXUI(node, params); // *TODO: Error checking + LLXUIParser::instance().readXUI(node, params, filename); // *TODO: Error checking if (output_node) { diff --git a/indra/llui/llfloater.h b/indra/llui/llfloater.h index 654164ddc03a86e7f4d382460fc9b644db667e6f..3ea035777cf9546837b988db0343a00b30f9835b 100644 --- a/indra/llui/llfloater.h +++ b/indra/llui/llfloater.h @@ -149,7 +149,7 @@ friend class LLMultiFloater; static void setupParamsForExport(Params& p, LLView* parent); void initFromParams(const LLFloater::Params& p); - bool initFloaterXML(LLXMLNodePtr node, LLView *parent, LLXMLNodePtr output_node = NULL); + bool initFloaterXML(LLXMLNodePtr node, LLView *parent, const std::string& filename, LLXMLNodePtr output_node = NULL); /*virtual*/ void handleReshape(const LLRect& new_rect, bool by_user = false); /*virtual*/ BOOL canSnapTo(const LLView* other_view); diff --git a/indra/llui/llmenugl.cpp b/indra/llui/llmenugl.cpp index b77126996e6aeb294757dde50e16fbf951c3d99a..b4a1bcb7c54e99cf1b48d6e8c9f82a3250ae55a2 100644 --- a/indra/llui/llmenugl.cpp +++ b/indra/llui/llmenugl.cpp @@ -139,6 +139,7 @@ LLMenuItemGL::Params::Params() : shortcut("shortcut"), jump_key("jump_key", KEY_NONE), use_mac_ctrl("use_mac_ctrl", false), + allow_key_repeat("allow_key_repeat", false), rect("rect"), left("left"), top("top"), @@ -160,7 +161,7 @@ LLMenuItemGL::Params::Params() LLMenuItemGL::LLMenuItemGL(const LLMenuItemGL::Params& p) : LLUICtrl(p), mJumpKey(p.jump_key), - mAllowKeyRepeat(FALSE), + mAllowKeyRepeat(p.allow_key_repeat), mHighlight( FALSE ), mGotHover( FALSE ), mBriefItem( FALSE ), diff --git a/indra/llui/llmenugl.h b/indra/llui/llmenugl.h index 6f0f83d4b9e041e085d6ea1aeac85e40e3443751..7668f301ea6e04e07f533e4275d00dec8491e34e 100644 --- a/indra/llui/llmenugl.h +++ b/indra/llui/llmenugl.h @@ -61,7 +61,8 @@ class LLMenuItemGL : public LLUICtrl { Optional<std::string> shortcut; Optional<KEY> jump_key; - Optional<bool> use_mac_ctrl; + Optional<bool> use_mac_ctrl, + allow_key_repeat; Ignored rect, left, diff --git a/indra/llui/llpanel.cpp b/indra/llui/llpanel.cpp index 0cd052eefa0153ee7b2b3a91f94aa1ce5e605309..9ebdcb87c685730ae89f0e76f1575dd30b359fea 100644 --- a/indra/llui/llpanel.cpp +++ b/indra/llui/llpanel.cpp @@ -508,16 +508,19 @@ BOOL LLPanel::initPanelXML(LLXMLNodePtr node, LLView *parent, LLXMLNodePtr outpu if (xml_filename.empty()) { node->getAttributeString("filename", xml_filename); + setXMLFilename(xml_filename); } if (!xml_filename.empty()) { + LLUICtrlFactory::instance().pushFileName(xml_filename); + LLFastTimer timer(FTM_EXTERNAL_PANEL_LOAD); if (output_node) { //if we are exporting, we want to export the current xml //not the referenced xml - LLXUIParser::instance().readXUI(node, params, xml_filename); + LLXUIParser::instance().readXUI(node, params, LLUICtrlFactory::getInstance()->getCurFileName()); Params output_params(params); setupParamsForExport(output_params, parent); output_node->setName(node->getName()->mString); @@ -533,13 +536,13 @@ BOOL LLPanel::initPanelXML(LLXMLNodePtr node, LLView *parent, LLXMLNodePtr outpu return FALSE; } - LLXUIParser::instance().readXUI(referenced_xml, params, xml_filename); + LLXUIParser::instance().readXUI(referenced_xml, params, LLUICtrlFactory::getInstance()->getCurFileName()); // add children using dimensions from referenced xml for consistent layout setShape(params.rect); LLUICtrlFactory::createChildren(this, referenced_xml, child_registry_t::instance()); - setXMLFilename(xml_filename); + LLUICtrlFactory::instance().popFileName(); } // ask LLUICtrlFactory for filename, since xml_filename might be empty diff --git a/indra/llui/llui.cpp b/indra/llui/llui.cpp index bf12384a2846132ac4e02375812c0a8670006b02..dff1cb93e73a6f1822fc0c20e630794285d0df9d 100644 --- a/indra/llui/llui.cpp +++ b/indra/llui/llui.cpp @@ -1752,6 +1752,33 @@ std::string LLUI::getLanguage() return language; } +struct SubDir : public LLInitParam::Block<SubDir> +{ + Mandatory<std::string> value; + + SubDir() + : value("value") + {} +}; + +struct Directory : public LLInitParam::Block<Directory> +{ + Multiple<SubDir, AtLeast<1> > subdirs; + + Directory() + : subdirs("subdir") + {} +}; + +struct Paths : public LLInitParam::Block<Paths> +{ + Multiple<Directory, AtLeast<1> > directories; + + Paths() + : directories("directory") + {} +}; + //static void LLUI::setupPaths() { @@ -1759,21 +1786,36 @@ void LLUI::setupPaths() LLXMLNodePtr root; BOOL success = LLXMLNode::parseFile(filename, root, NULL); + Paths paths; + LLXUIParser::instance().readXUI(root, paths, filename); + sXUIPaths.clear(); - if (success) + if (success && paths.validateBlock()) { LLStringUtil::format_map_t path_args; path_args["[LANGUAGE]"] = LLUI::getLanguage(); - for (LLXMLNodePtr path = root->getFirstChild(); path.notNull(); path = path->getNextSibling()) + for (LLInitParam::ParamIterator<Directory>::const_iterator it = paths.directories().begin(), + end_it = paths.directories().end(); + it != end_it; + ++it) { - std::string path_val_ui(path->getValue()); + std::string path_val_ui; + for (LLInitParam::ParamIterator<SubDir>::const_iterator subdir_it = it->subdirs().begin(), + subdir_end_it = it->subdirs().end(); + subdir_it != subdir_end_it;) + { + path_val_ui += subdir_it->value(); + if (++subdir_it != subdir_end_it) + path_val_ui += gDirUtilp->getDirDelimiter(); + } LLStringUtil::format(path_val_ui, path_args); if (std::find(sXUIPaths.begin(), sXUIPaths.end(), path_val_ui) == sXUIPaths.end()) { sXUIPaths.push_back(path_val_ui); } + } } else // parsing failed diff --git a/indra/llui/lluictrlfactory.cpp b/indra/llui/lluictrlfactory.cpp index 930dadc377f63ba6ffa12b272d5d9b96e3b1e457..6b337e0d74c89ae01522370c168556f5224f50f4 100644 --- a/indra/llui/lluictrlfactory.cpp +++ b/indra/llui/lluictrlfactory.cpp @@ -101,7 +101,9 @@ void LLUICtrlFactory::loadWidgetTemplate(const std::string& widget_tag, LLInitPa if (LLUICtrlFactory::getLayeredXMLNode(filename, root_node)) { + LLUICtrlFactory::instance().pushFileName(filename); LLXUIParser::instance().readXUI(root_node, block, filename); + LLUICtrlFactory::instance().popFileName(); } } @@ -211,7 +213,7 @@ bool LLUICtrlFactory::buildFloater(LLFloater* floaterp, const std::string& filen bool res = true; lldebugs << "Building floater " << filename << llendl; - mFileNames.push_back(gDirUtilp->findSkinnedFilename(LLUI::getSkinPath(), filename)); + pushFileName(filename); { if (!floaterp->getFactoryMap().empty()) { @@ -222,7 +224,7 @@ bool LLUICtrlFactory::buildFloater(LLFloater* floaterp, const std::string& filen floaterp->getCommitCallbackRegistrar().pushScope(); floaterp->getEnableCallbackRegistrar().pushScope(); - res = floaterp->initFloaterXML(root, floaterp->getParent(), output_node); + res = floaterp->initFloaterXML(root, floaterp->getParent(), filename, output_node); floaterp->setXMLFilename(filename); @@ -234,7 +236,7 @@ bool LLUICtrlFactory::buildFloater(LLFloater* floaterp, const std::string& filen mFactoryStack.pop_front(); } } - mFileNames.pop_back(); + popFileName(); return res; } @@ -283,7 +285,7 @@ BOOL LLUICtrlFactory::buildPanel(LLPanel* panelp, const std::string& filename, L lldebugs << "Building panel " << filename << llendl; - mFileNames.push_back(gDirUtilp->findSkinnedFilename(LLUI::getSkinPath(), filename)); + pushFileName(filename); { if (!panelp->getFactoryMap().empty()) { @@ -306,7 +308,7 @@ BOOL LLUICtrlFactory::buildPanel(LLPanel* panelp, const std::string& filename, L mFactoryStack.pop_front(); } } - mFileNames.pop_back(); + popFileName(); return didPost; } @@ -364,6 +366,23 @@ LLPanel* LLUICtrlFactory::createFactoryPanel(const std::string& name) return create<LLPanel>(panel_p); } +std::string LLUICtrlFactory::getCurFileName() +{ + return mFileNames.empty() ? "" : gDirUtilp->getWorkingDir() + gDirUtilp->getDirDelimiter() + mFileNames.back(); +} + + +void LLUICtrlFactory::pushFileName(const std::string& name) +{ + mFileNames.push_back(gDirUtilp->findSkinnedFilename(LLUI::getSkinPath(), name)); +} + +void LLUICtrlFactory::popFileName() +{ + mFileNames.pop_back(); +} + + //----------------------------------------------------------------------------- //static diff --git a/indra/llui/lluictrlfactory.h b/indra/llui/lluictrlfactory.h index b1fa6add67bfbc708b81714ac2b66a4e8422676f..7da96ffce3d7a8d4027b4dfdc7a30067ba9229cb 100644 --- a/indra/llui/lluictrlfactory.h +++ b/indra/llui/lluictrlfactory.h @@ -170,7 +170,9 @@ class LLUICtrlFactory : public LLSingleton<LLUICtrlFactory> // Returns 0 on success S32 saveToXML(LLView* viewp, const std::string& filename); - std::string getCurFileName() { return mFileNames.empty() ? "" : mFileNames.back(); } + std::string getCurFileName(); + void pushFileName(const std::string& name); + void popFileName(); static BOOL getAttributeColor(LLXMLNodePtr node, const std::string& name, LLColor4& color); @@ -229,7 +231,7 @@ class LLUICtrlFactory : public LLSingleton<LLUICtrlFactory> T* widget = NULL; std::string skinned_filename = findSkinnedFilename(filename); - getInstance()->mFileNames.push_back(skinned_filename); + instance().pushFileName(filename); { LLXMLNodePtr root_node; @@ -263,7 +265,7 @@ class LLUICtrlFactory : public LLSingleton<LLUICtrlFactory> } } fail: - getInstance()->mFileNames.pop_back(); + instance().popFileName(); return widget; } diff --git a/indra/llui/llview.cpp b/indra/llui/llview.cpp index bd56da912165cd861819d2f25ae4331b7298a5d0..394ec957d507a9ba52b0bbf1df0cd8aad6cb481a 100644 --- a/indra/llui/llview.cpp +++ b/indra/llui/llview.cpp @@ -111,6 +111,8 @@ LLView::Params::Params() user_resize("user_resize"), auto_resize("auto_resize"), needs_translate("translate"), + min_width("min_width"), + max_width("max_width"), xmlns("xmlns"), xmlns_xsi("xmlns:xsi"), xsi_schemaLocation("xsi:schemaLocation"), diff --git a/indra/llui/llview.h b/indra/llui/llview.h index 3779fedf34ed270f9e3fe50edd92f53c8a36be51..9ff6a4e1a032d40d5efcb8edd31f7a2a4c991def 100644 --- a/indra/llui/llview.h +++ b/indra/llui/llview.h @@ -148,6 +148,8 @@ class LLView : public LLMouseHandler, public LLMortician, public LLFocusableElem Ignored user_resize, auto_resize, needs_translate, + min_width, + max_width, xmlns, xmlns_xsi, xsi_schemaLocation, @@ -634,7 +636,7 @@ template <class T> T* LLView::getChild(const std::string& name, BOOL recurse) co // did we find *something* with that name? if (child) { - llwarns << "Found child named " << name << " but of wrong type " << typeid(*child).name() << ", expecting " << typeid(T*).name() << llendl; + llwarns << "Found child named \"" << name << "\" but of wrong type " << typeid(*child).name() << ", expecting " << typeid(T*).name() << llendl; } result = getDefaultWidget<T>(name); if (!result) diff --git a/indra/newview/app_settings/settings.xml b/indra/newview/app_settings/settings.xml index 5eff08c6ed4f9fe009b54f70e54360d38c35e5b9..50eee73c4c8e3243830f158d0e302557d426f0c7 100644 --- a/indra/newview/app_settings/settings.xml +++ b/indra/newview/app_settings/settings.xml @@ -5338,7 +5338,7 @@ <string>Boolean</string> <key>Value</key> <integer>0</integer> - </map> + </map> <key>MouseSun</key> <map> <key>Comment</key> @@ -5350,7 +5350,18 @@ <key>Value</key> <integer>0</integer> </map> - <key>MuteAmbient</key> + <key>MultipleAttachments</key> + <map> + <key>Comment</key> + <string>Allow multiple objects to be attached to a single attachment point.</string> + <key>Persist</key> + <integer>1</integer> + <key>Type</key> + <string>Boolean</string> + <key>Value</key> + <integer>0</integer> + </map> + <key>MuteAmbient</key> <map> <key>Comment</key> <string>Ambient sound effects, such as wind noise, play at 0 volume</string> diff --git a/indra/newview/character/avatar_lad.xml b/indra/newview/character/avatar_lad.xml index 9564236ad25aa664f83ffc6274540ad910032c51..a9b4ff02c5a872280149aed393dee873a4db3c11 100644 --- a/indra/newview/character/avatar_lad.xml +++ b/indra/newview/character/avatar_lad.xml @@ -11533,7 +11533,7 @@ render_pass="bump"> <param id="1071" - group="0" + group="2" wearable="tattoo" edit_group="colorpicker" name="tattoo_red" @@ -11566,7 +11566,7 @@ render_pass="bump"> <param id="1072" - group="0" + group="2" wearable="tattoo" edit_group="colorpicker" name="tattoo_green" @@ -11599,7 +11599,7 @@ render_pass="bump"> <param id="1073" - group="0" + group="2" wearable="tattoo" edit_group="colorpicker" name="tattoo_blue" diff --git a/indra/newview/llagent.cpp b/indra/newview/llagent.cpp index 217fb0f988522c428502f611d1205241f0e59819..345953f2e9cacf30b5e6f063ea3278d2a74b0ff6 100644 --- a/indra/newview/llagent.cpp +++ b/indra/newview/llagent.cpp @@ -3627,7 +3627,7 @@ void LLAgent::sendAgentSetAppearance() param; param = (LLViewerVisualParam*)gAgentAvatarp->getNextVisualParam()) { - if (param->getGroup() == VISUAL_PARAM_GROUP_TWEAKABLE) + if (param->getGroup() == VISUAL_PARAM_GROUP_TWEAKABLE) // do not transmit params of group VISUAL_PARAM_GROUP_TWEAKABLE_NO_TRANSMIT { msg->nextBlockFast(_PREHASH_VisualParam ); diff --git a/indra/newview/llagentcamera.h b/indra/newview/llagentcamera.h index 3b8f88733a74a80ff51db6e4a5b91d0a551e9272..fc78fef6d04dd9a4cce0f6c14992b041fea209f7 100644 --- a/indra/newview/llagentcamera.h +++ b/indra/newview/llagentcamera.h @@ -82,6 +82,7 @@ class LLAgentCamera void init(); void cleanup(); void setAvatarObject(LLVOAvatarSelf* avatar); + bool isInitialized() { return mInitialized; } private: bool mInitialized; diff --git a/indra/newview/llagentwearables.cpp b/indra/newview/llagentwearables.cpp index 017fcf6e2b5be40275e77e89514e8ffc3b992727..e70511ce6e1c87058117c4c692f2409833b5c09c 100644 --- a/indra/newview/llagentwearables.cpp +++ b/indra/newview/llagentwearables.cpp @@ -804,7 +804,7 @@ void LLAgentWearables::popWearable(const LLWearableType::EType type, U32 index) if (wearable) { mWearableDatas[type].erase(mWearableDatas[type].begin() + index); - gAgentAvatarp->wearableUpdated(wearable->getType(), FALSE); + gAgentAvatarp->wearableUpdated(wearable->getType(), TRUE); wearable->setLabelUpdated(); } } @@ -1867,11 +1867,10 @@ void LLAgentWearables::userAttachMultipleAttachments(LLInventoryModel::item_arra msg->nextBlockFast(_PREHASH_ObjectData ); msg->addUUIDFast(_PREHASH_ItemID, item->getLinkedUUID()); msg->addUUIDFast(_PREHASH_OwnerID, item->getPermissions().getOwner()); -#if ENABLE_MULTIATTACHMENTS - msg->addU8Fast(_PREHASH_AttachmentPt, 0 | ATTACHMENT_ADD ); -#else - msg->addU8Fast(_PREHASH_AttachmentPt, 0 ); // Wear at the previous or default attachment point -#endif + if (gSavedSettings.getBOOL("MultipleAttachments")) + msg->addU8Fast(_PREHASH_AttachmentPt, 0 | ATTACHMENT_ADD ); + else + msg->addU8Fast(_PREHASH_AttachmentPt, 0 ); // Wear at the previous or default attachment point pack_permissions_slam(msg, item->getFlags(), item->getPermissions()); msg->addStringFast(_PREHASH_Name, item->getName()); msg->addStringFast(_PREHASH_Description, item->getDescription()); diff --git a/indra/newview/llcofwearables.cpp b/indra/newview/llcofwearables.cpp index aa8cc01f7d32e314b1d78bce6b005bf5f2af1197..cbebc9330684767f5af7311303a237dbe8e954ec 100644 --- a/indra/newview/llcofwearables.cpp +++ b/indra/newview/llcofwearables.cpp @@ -165,6 +165,14 @@ class CofClothingContextMenu : public CofContextMenu } protected: + static void replaceWearable() + { + static LLButton* show_add_wearables_btn = + LLSideTray::getInstance()->getChild<LLButton>("show_add_wearables_btn"); + + show_add_wearables_btn->onCommit(); + } + /*virtual*/ LLContextMenu* createMenu() { LLUICtrl::CommitCallbackRegistry::ScopedRegistrar registrar; @@ -173,8 +181,7 @@ class CofClothingContextMenu : public CofContextMenu functor_t take_off = boost::bind(&LLAppearanceMgr::removeItemFromAvatar, LLAppearanceMgr::getInstance(), _1); registrar.add("Clothing.TakeOff", boost::bind(handleMultiple, take_off, mUUIDs)); - registrar.add("Clothing.MoveUp", boost::bind(moveWearable, selected_id, false)); - registrar.add("Clothing.MoveDown", boost::bind(moveWearable, selected_id, true)); + registrar.add("Clothing.Replace", boost::bind(replaceWearable)); registrar.add("Clothing.Edit", boost::bind(LLAgentWearables::editWearable, selected_id)); registrar.add("Clothing.Create", boost::bind(&CofClothingContextMenu::createNew, this, selected_id)); @@ -194,15 +201,7 @@ class CofClothingContextMenu : public CofContextMenu std::string param = data.asString(); LLUUID selected_id = mUUIDs.back(); - if ("move_up" == param) - { - return gAgentWearables.canMoveWearable(selected_id, false); - } - else if ("move_down" == param) - { - return gAgentWearables.canMoveWearable(selected_id, true); - } - else if ("take_off" == param) + if ("take_off" == param) { return get_is_item_worn(selected_id); } @@ -210,15 +209,12 @@ class CofClothingContextMenu : public CofContextMenu { return mUUIDs.size() == 1 && gAgentWearables.isWearableModifiable(selected_id); } - return true; - } + else if ("replace" == param) + { + return get_is_item_worn(selected_id) && mUUIDs.size() == 1; + } - // We don't use LLAppearanceMgr::moveWearable() directly because - // the item may be invalidated between setting the callback and calling it. - static bool moveWearable(const LLUUID& item_id, bool closer_to_body) - { - LLViewerInventoryItem* item = gInventory.getItem(item_id); - return LLAppearanceMgr::instance().moveWearable(item, closer_to_body); + return true; } }; @@ -374,7 +370,12 @@ void LLCOFWearables::refresh() value_it_end = values.end(); value_it != value_it_end; ++value_it) { - list->selectItemByValue(*value_it); + // value_it may be null because of dummy items + // Dummy items have no ID + if(value_it->asUUID().notNull()) + { + list->selectItemByValue(*value_it); + } } } } @@ -608,7 +609,20 @@ void LLCOFWearables::onListRightClick(LLUICtrl* ctrl, S32 x, S32 y, LLListContex uuid_vec_t selected_uuids; if(getSelectedUUIDs(selected_uuids)) { - menu->show(ctrl, selected_uuids, x, y); + bool show_menu = false; + for(uuid_vec_t::iterator it = selected_uuids.begin();it!=selected_uuids.end();++it) + { + if ((*it).notNull()) + { + show_menu = true; + break; + } + } + + if(show_menu) + { + menu->show(ctrl, selected_uuids, x, y); + } } } } diff --git a/indra/newview/llfloaterland.cpp b/indra/newview/llfloaterland.cpp index 76263a4307b14b61a37086ec6719e27d0cc377ac..98f940c23384dbe4965951b225edb6be1cbbd269 100644 --- a/indra/newview/llfloaterland.cpp +++ b/indra/newview/llfloaterland.cpp @@ -1940,8 +1940,6 @@ BOOL LLPanelLandOptions::postBuild() mLandingTypeCombo = getChild<LLComboBox>( "landing type"); childSetCommitCallback("landing type", onCommitAny, this); - getChild<LLTextureCtrl>("snapshot_ctrl")->setFallbackImageName("default_land_picture.j2c"); - return TRUE; } diff --git a/indra/newview/llfloaterpreference.cpp b/indra/newview/llfloaterpreference.cpp index 1d7fc9c991ef92b3e8cff5df63f03610b98974f3..ab32c2f6bfd9d034324f9894e268295102e63711 100644 --- a/indra/newview/llfloaterpreference.cpp +++ b/indra/newview/llfloaterpreference.cpp @@ -70,6 +70,7 @@ #include "llscrolllistctrl.h" #include "llscrolllistitem.h" #include "llsliderctrl.h" +#include "llsidetray.h" #include "lltabcontainer.h" #include "lltrans.h" #include "llviewercontrol.h" @@ -309,6 +310,7 @@ LLFloaterPreference::LLFloaterPreference(const LLSD& key) mCommitCallbackRegistrar.add("Pref.applyUIColor", boost::bind(&LLFloaterPreference::applyUIColor, this ,_1, _2)); mCommitCallbackRegistrar.add("Pref.getUIColor", boost::bind(&LLFloaterPreference::getUIColor, this ,_1, _2)); mCommitCallbackRegistrar.add("Pref.MaturitySettings", boost::bind(&LLFloaterPreference::onChangeMaturity, this)); + mCommitCallbackRegistrar.add("Pref.BlockList", boost::bind(&LLFloaterPreference::onClickBlockList, this)); sSkin = gSavedSettings.getString("SkinCurrent"); } @@ -1310,6 +1312,17 @@ void LLFloaterPreference::onChangeMaturity() getChild<LLIconCtrl>("rating_icon_adult")->setVisible(sim_access == SIM_ACCESS_ADULT); } +// FIXME: this will stop you from spawning the sidetray from preferences dialog on login screen +// but the UI for this will still be enabled +void LLFloaterPreference::onClickBlockList() +{ + // don't create side tray on demand + if (LLSideTray::instanceCreated()) + { + LLSideTray::getInstance()->showPanel("panel_block_list_sidetray"); + } +} + void LLFloaterPreference::applyUIColor(LLUICtrl* ctrl, const LLSD& param) { diff --git a/indra/newview/llfloaterpreference.h b/indra/newview/llfloaterpreference.h index b45e09db7d382dd6cf2e6c1312a21ff9bca27d0d..0df1b61dcb2953bfb80c0b02660b7fea50ee732a 100644 --- a/indra/newview/llfloaterpreference.h +++ b/indra/newview/llfloaterpreference.h @@ -141,6 +141,7 @@ class LLFloaterPreference : public LLFloater void onCommitMusicEnabled(); void applyResolution(); void onChangeMaturity(); + void onClickBlockList(); void applyUIColor(LLUICtrl* ctrl, const LLSD& param); void getUIColor(LLUICtrl* ctrl, const LLSD& param); diff --git a/indra/newview/llfloaterscriptdebug.cpp b/indra/newview/llfloaterscriptdebug.cpp index d6732a9d5cb82fdf7f2f83b6dffb7dcf785076a9..4a82f3a11cbd052a810798fcb6dcac2abde090f0 100644 --- a/indra/newview/llfloaterscriptdebug.cpp +++ b/indra/newview/llfloaterscriptdebug.cpp @@ -63,6 +63,8 @@ LLFloaterScriptDebug::LLFloaterScriptDebug(const LLSD& key) // avoid resizing of the window to match // the initial size of the tabbed-childs, whenever a tab is opened or closed mAutoResize = FALSE; + // enabled autocous blocks controling focus via LLFloaterReg::showInstance + setAutoFocus(FALSE); } LLFloaterScriptDebug::~LLFloaterScriptDebug() @@ -93,7 +95,8 @@ LLFloater* LLFloaterScriptDebug::addOutputWindow(const LLUUID &object_id) return NULL; LLFloater::setFloaterHost(host); - LLFloater* floaterp = LLFloaterReg::showInstance("script_debug_output", object_id); + // prevent stealing focus, see EXT-8040 + LLFloater* floaterp = LLFloaterReg::showInstance("script_debug_output", object_id, FALSE); LLFloater::setFloaterHost(NULL); return floaterp; @@ -145,6 +148,9 @@ LLFloaterScriptDebugOutput::LLFloaterScriptDebugOutput(const LLSD& object_id) mObjectID(object_id.asUUID()) { //LLUICtrlFactory::getInstance()->buildFloater(this, "floater_script_debug_panel.xml"); + + // enabled autocous blocks controling focus via LLFloaterReg::showInstance + setAutoFocus(FALSE); } BOOL LLFloaterScriptDebugOutput::postBuild() diff --git a/indra/newview/llfloatertools.cpp b/indra/newview/llfloatertools.cpp index a42f6ee00fedabee30925a52b518e4e1b5075a11..565f0619a51fc1880582d519a1e19ee04a50869e 100644 --- a/indra/newview/llfloatertools.cpp +++ b/indra/newview/llfloatertools.cpp @@ -235,7 +235,6 @@ BOOL LLFloaterTools::postBuild() childSetValue("checkbox uniform",(BOOL)gSavedSettings.getBOOL("ScaleUniform")); mCheckStretchTexture = getChild<LLCheckBoxCtrl>("checkbox stretch textures"); childSetValue("checkbox stretch textures",(BOOL)gSavedSettings.getBOOL("ScaleStretchTextures")); - mTextGridMode = getChild<LLTextBox>("text ruler mode"); mComboGridMode = getChild<LLComboBox>("combobox grid mode"); mCheckStretchUniformLabel = getChild<LLTextBox>("checkbox uniform label"); @@ -313,7 +312,6 @@ LLFloaterTools::LLFloaterTools(const LLSD& key) mCheckSnapToGrid(NULL), mBtnGridOptions(NULL), mTitleMedia(NULL), - mTextGridMode(NULL), mComboGridMode(NULL), mCheckStretchUniform(NULL), mCheckStretchTexture(NULL), @@ -625,8 +623,6 @@ void LLFloaterTools::updatePopup(LLCoordGL center, MASK mask) mComboGridMode->setCurrentByIndex(index); } - if (mTextGridMode) mTextGridMode->setVisible( edit_visible ); - // Snap to grid disabled for grab tool - very confusing if (mCheckSnapToGrid) mCheckSnapToGrid->setVisible( edit_visible /* || tool == LLToolGrab::getInstance() */ ); if (mBtnGridOptions) mBtnGridOptions->setVisible( edit_visible /* || tool == LLToolGrab::getInstance() */ ); diff --git a/indra/newview/llfloatertools.h b/indra/newview/llfloatertools.h index 91431969bb6f927edd9cd7acf795ce5fd820d5f1..7aa319a44169654d4f7caffa180c54fdd4726863 100644 --- a/indra/newview/llfloatertools.h +++ b/indra/newview/llfloatertools.h @@ -144,7 +144,6 @@ class LLFloaterTools LLCheckBoxCtrl* mCheckSnapToGrid; LLButton* mBtnGridOptions; - LLTextBox* mTextGridMode; LLComboBox* mComboGridMode; LLCheckBoxCtrl* mCheckStretchUniform; LLCheckBoxCtrl* mCheckStretchTexture; diff --git a/indra/newview/llfloaterworldmap.cpp b/indra/newview/llfloaterworldmap.cpp index 152360a96ea370e5769dc2e202e974e7a7216e9e..fbe77047e38d021445b8074edb5b980c82ca2d4c 100644 --- a/indra/newview/llfloaterworldmap.cpp +++ b/indra/newview/llfloaterworldmap.cpp @@ -56,7 +56,7 @@ #include "llinventorymodelbackgroundfetch.h" #include "llinventoryobserver.h" #include "lllandmarklist.h" -#include "lllineeditor.h" +#include "llsearcheditor.h" #include "llnotificationsutil.h" #include "llregionhandle.h" #include "llscrolllistctrl.h" @@ -229,30 +229,20 @@ BOOL LLFloaterWorldMap::postBuild() mPanel = getChild<LLPanel>("objects_mapview"); LLComboBox *avatar_combo = getChild<LLComboBox>("friend combo"); - if (avatar_combo) - { - avatar_combo->selectFirstItem(); - avatar_combo->setPrearrangeCallback( boost::bind(&LLFloaterWorldMap::onAvatarComboPrearrange, this) ); - avatar_combo->setTextEntryCallback( boost::bind(&LLFloaterWorldMap::onComboTextEntry, this) ); - } + avatar_combo->selectFirstItem(); + avatar_combo->setPrearrangeCallback( boost::bind(&LLFloaterWorldMap::onAvatarComboPrearrange, this) ); + avatar_combo->setTextEntryCallback( boost::bind(&LLFloaterWorldMap::onComboTextEntry, this) ); - getChild<LLScrollListCtrl>("location")->setFocusChangedCallback(boost::bind(&LLFloaterWorldMap::onLocationFocusChanged, this, _1)); - - LLLineEditor *location_editor = getChild<LLLineEditor>("location"); - if (location_editor) - { - location_editor->setKeystrokeCallback( boost::bind(&LLFloaterWorldMap::onSearchTextEntry, this, _1), NULL ); - } + LLSearchEditor *location_editor = getChild<LLSearchEditor>("location"); + location_editor->setFocusChangedCallback(boost::bind(&LLFloaterWorldMap::onLocationFocusChanged, this, _1)); + location_editor->setKeystrokeCallback( boost::bind(&LLFloaterWorldMap::onSearchTextEntry, this)); getChild<LLScrollListCtrl>("search_results")->setDoubleClickCallback( boost::bind(&LLFloaterWorldMap::onClickTeleportBtn, this)); LLComboBox *landmark_combo = getChild<LLComboBox>( "landmark combo"); - if (landmark_combo) - { - landmark_combo->selectFirstItem(); - landmark_combo->setPrearrangeCallback( boost::bind(&LLFloaterWorldMap::onLandmarkComboPrearrange, this) ); - landmark_combo->setTextEntryCallback( boost::bind(&LLFloaterWorldMap::onComboTextEntry, this) ); - } + landmark_combo->selectFirstItem(); + landmark_combo->setPrearrangeCallback( boost::bind(&LLFloaterWorldMap::onLandmarkComboPrearrange, this) ); + landmark_combo->setTextEntryCallback( boost::bind(&LLFloaterWorldMap::onComboTextEntry, this) ); mCurZoomVal = log(LLWorldMapView::sMapScale)/log(2.f); childSetValue("zoom slider", LLWorldMapView::sMapScale); @@ -1003,7 +993,7 @@ void LLFloaterWorldMap::onComboTextEntry() LLTracker::clearFocus(); } -void LLFloaterWorldMap::onSearchTextEntry( LLLineEditor* ctrl ) +void LLFloaterWorldMap::onSearchTextEntry( ) { onComboTextEntry(); updateSearchEnabled(); diff --git a/indra/newview/llfloaterworldmap.h b/indra/newview/llfloaterworldmap.h index 52809ff8302bb2074118aa9023217325ab00377b..de515c689e2c3279f4089171f58e06aa29b73d4a 100644 --- a/indra/newview/llfloaterworldmap.h +++ b/indra/newview/llfloaterworldmap.h @@ -123,7 +123,7 @@ class LLFloaterWorldMap : public LLFloater void onAvatarComboCommit(); void onComboTextEntry( ); - void onSearchTextEntry( LLLineEditor* ctrl ); + void onSearchTextEntry( ); void onClearBtn(); void onClickTeleportBtn(); diff --git a/indra/newview/llimview.cpp b/indra/newview/llimview.cpp index ddfcd68e382043cdf1df43b5b37dd86d9cbc6be1..6d3998bb96014be743e66cac89321284c341f2e4 100644 --- a/indra/newview/llimview.cpp +++ b/indra/newview/llimview.cpp @@ -1898,8 +1898,6 @@ BOOL LLIncomingCallDialog::postBuild() // check to see if this is an Avaline call bool is_avatar = LLVoiceClient::getInstance()->isParticipantAvatar(session_id); - childSetVisible("Start IM", is_avatar); // no IM for avaline - if (caller_name == "anonymous") { caller_name = getString("anonymous"); @@ -1931,6 +1929,10 @@ BOOL LLIncomingCallDialog::postBuild() mLifetimeTimer.stop(); } + //it's not possible to connect to existing Ad-Hoc chat through incoming ad-hoc call + //and no IM for avaline + childSetVisible("Start IM", is_avatar && notify_box_type != "VoiceInviteAdHoc"); + setCanDrag(FALSE); return TRUE; diff --git a/indra/newview/llinventorybridge.cpp b/indra/newview/llinventorybridge.cpp index a5f24c55fe0ec85927c7f1c9cafce626c6981e0f..bc28140b75e095b9c7f10f240f6c2e0869bbd032 100644 --- a/indra/newview/llinventorybridge.cpp +++ b/indra/newview/llinventorybridge.cpp @@ -3963,13 +3963,12 @@ void rez_attachment(LLViewerInventoryItem* item, LLViewerJointAttachment* attach payload["attachment_point"] = attach_pt; -#if !ENABLE_MULTIATTACHMENTS - if (attachment && attachment->getNumObjects() > 0) + if (!gSavedSettings.getBOOL("MultipleAttachments") && + (attachment && attachment->getNumObjects() > 0)) { LLNotificationsUtil::add("ReplaceAttachment", LLSD(), payload, confirm_replace_attachment_rez); } else -#endif { LLNotifications::instance().forceResponse(LLNotification::Params("ReplaceAttachment").payload(payload), 0/*YES*/); } @@ -3992,6 +3991,10 @@ bool confirm_replace_attachment_rez(const LLSD& notification, const LLSD& respon if (itemp) { + U8 attachment_pt = notification["payload"]["attachment_point"].asInteger(); + if (gSavedSettings.getBOOL("MultipleAttachments")) + attachment_pt |= ATTACHMENT_ADD; + LLMessageSystem* msg = gMessageSystem; msg->newMessageFast(_PREHASH_RezSingleAttachmentFromInv); msg->nextBlockFast(_PREHASH_AgentData); @@ -4000,10 +4003,6 @@ bool confirm_replace_attachment_rez(const LLSD& notification, const LLSD& respon msg->nextBlockFast(_PREHASH_ObjectData); msg->addUUIDFast(_PREHASH_ItemID, itemp->getUUID()); msg->addUUIDFast(_PREHASH_OwnerID, itemp->getPermissions().getOwner()); - U8 attachment_pt = notification["payload"]["attachment_point"].asInteger(); -#if ENABLE_MULTIATTACHMENTS - attachment_pt |= ATTACHMENT_ADD; -#endif msg->addU8Fast(_PREHASH_AttachmentPt, attachment_pt); pack_permissions_slam(msg, itemp->getFlags(), itemp->getPermissions()); msg->addStringFast(_PREHASH_Name, itemp->getName()); diff --git a/indra/newview/llmoveview.cpp b/indra/newview/llmoveview.cpp index afca9daa67eceba9c179bf5a6680693d1a7f51dc..6ae4a5e5e4701997c1cdc6079c0aaf699befda2c 100644 --- a/indra/newview/llmoveview.cpp +++ b/indra/newview/llmoveview.cpp @@ -144,18 +144,6 @@ BOOL LLFloaterMove::postBuild() return TRUE; } -// virtual -void LLFloaterMove::setEnabled(BOOL enabled) -{ - //we need to enable/disable only buttons, EXT-1061. - - // is called before postBuild() - use findChild here. - LLPanel *panel_actions = findChild<LLPanel>("panel_actions"); - if (panel_actions) panel_actions->setEnabled(enabled); - - showModeButtons(enabled); -} - // *NOTE: we assume that setVisible() is called on floater close. // virtual void LLFloaterMove::setVisible(BOOL visible) @@ -406,7 +394,7 @@ void LLFloaterMove::initMovementMode() if (isAgentAvatarValid()) { - setEnabled(!gAgentAvatarp->isSitting()); + showModeButtons(!gAgentAvatarp->isSitting()); } } @@ -476,8 +464,7 @@ void LLFloaterMove::sUpdateFlyingStatus() void LLFloaterMove::showModeButtons(BOOL bShow) { - // is called from setEnabled so can be called before postBuild(), check mModeActionsPanel agains to NULL - if (NULL == mModeActionsPanel || mModeActionsPanel->getVisible() == bShow) + if (mModeActionsPanel->getVisible() == bShow) return; mModeActionsPanel->setVisible(bShow); } @@ -488,12 +475,14 @@ void LLFloaterMove::enableInstance(BOOL bEnable) LLFloaterMove* instance = LLFloaterReg::findTypedInstance<LLFloaterMove>("moveview"); if (instance) { - instance->setEnabled(bEnable); - if (gAgent.getFlying()) { instance->showModeButtons(FALSE); } + else + { + instance->showModeButtons(bEnable); + } } } diff --git a/indra/newview/llmoveview.h b/indra/newview/llmoveview.h index fcf643f05052189c4d4cc1365860a7a2c6609125..d463861188d0e8ca4624457f82e1212a1263eb11 100644 --- a/indra/newview/llmoveview.h +++ b/indra/newview/llmoveview.h @@ -55,7 +55,6 @@ class LLFloaterMove public: /*virtual*/ BOOL postBuild(); - /*virtual*/ void setEnabled(BOOL enabled); /*virtual*/ void setVisible(BOOL visible); static F32 getYawRate(F32 time); static void setFlyingMode(BOOL fly); diff --git a/indra/newview/lloutfitslist.cpp b/indra/newview/lloutfitslist.cpp index 67442dd573d7bef2efd8f77c59ea6aaf4256eee3..075cfa054385ab194e37f25b9cfe001fd3b4b6c8 100644 --- a/indra/newview/lloutfitslist.cpp +++ b/indra/newview/lloutfitslist.cpp @@ -88,6 +88,8 @@ class LLOutfitListGearMenu registrar.add("Gear.Delete", boost::bind(&LLOutfitListGearMenu::onDelete, this)); registrar.add("Gear.Create", boost::bind(&LLOutfitListGearMenu::onCreate, this, _2)); + registrar.add("Gear.WearAdd", boost::bind(&LLOutfitListGearMenu::onAdd, this)); + enable_registrar.add("Gear.OnEnable", boost::bind(&LLOutfitsList::isActionEnabled, mOutfitList, _2)); enable_registrar.add("Gear.OnVisible", boost::bind(&LLOutfitListGearMenu::onVisible, this, _2)); @@ -146,12 +148,39 @@ class LLOutfitListGearMenu } } + void onAdd() + { + const LLUUID& selected_id = getSelectedOutfitID(); + + if (selected_id.notNull()) + { + LLAppearanceMgr::getInstance()->addCategoryToCurrentOutfit(selected_id); + } + } + void onTakeOff() { - const LLUUID& selected_outfit_id = getSelectedOutfitID(); - if (selected_outfit_id.notNull()) + // Take off selected items if there are any + if (mOutfitList->hasItemSelected()) { - LLAppearanceMgr::instance().takeOffOutfit(selected_outfit_id); + uuid_vec_t selected_uuids; + mOutfitList->getSelectedItemsUUIDs(selected_uuids); + + for (uuid_vec_t::const_iterator it=selected_uuids.begin(); it != selected_uuids.end(); ++it) + { + if (get_is_item_worn(*it)) + { + LLAppearanceMgr::instance().removeItemFromAvatar(*it); + } + } + } + else // or take off the whole selected outfit if no items specified. + { + const LLUUID& selected_outfit_id = getSelectedOutfitID(); + if (selected_outfit_id.notNull()) + { + LLAppearanceMgr::instance().takeOffOutfit(selected_outfit_id); + } } } @@ -474,7 +503,7 @@ void LLOutfitsList::refreshList(const LLUUID& category_id) } // Handle removed tabs. - for (uuid_vec_t::const_iterator iter=vremoved.begin(); iter != vremoved.end(); iter++) + for (uuid_vec_t::const_iterator iter=vremoved.begin(); iter != vremoved.end(); ++iter) { outfits_map_t::iterator outfits_iter = mOutfitsMap.find((*iter)); if (outfits_iter != mOutfitsMap.end()) @@ -626,8 +655,22 @@ bool LLOutfitsList::isActionEnabled(const LLSD& userdata) } if (command_name == "take_off") { - return LLAppearanceMgr::getInstance()->getBaseOutfitUUID() == mSelectedOutfitUUID; + // Enable "Take Off" only if a worn item or base outfit is selected. + return ( !hasItemSelected() + && LLAppearanceMgr::getInstance()->getBaseOutfitUUID() == mSelectedOutfitUUID ) + || hasWornItemSelected(); + } + + if (command_name == "wear_add") + { + if (gAgentWearables.isCOFChangeInProgress()) + { + return false; + } + + return LLAppearanceMgr::getCanAddToCOF(mSelectedOutfitUUID); } + return false; } @@ -638,6 +681,22 @@ void LLOutfitsList::showGearMenu(LLView* spawning_view) mGearMenu->show(spawning_view); } +void LLOutfitsList::getSelectedItemsUUIDs(uuid_vec_t& selected_uuids) const +{ + // Collect selected items from all selected lists. + for (wearables_lists_map_t::const_iterator iter = mSelectedListsMap.begin(); + iter != mSelectedListsMap.end(); + ++iter) + { + uuid_vec_t uuids; + (*iter).second->getSelectedUUIDs(uuids); + + S32 prev_size = selected_uuids.size(); + selected_uuids.resize(prev_size + uuids.size()); + std::copy(uuids.begin(), uuids.end(), selected_uuids.begin() + prev_size); + } +} + boost::signals2::connection LLOutfitsList::setSelectionChangeCallback(selection_change_callback_t cb) { return mSelectionChangeSignal.connect(cb); @@ -878,7 +937,7 @@ void LLOutfitsList::applyFilterToTab( { // hide tab if its title doesn't pass filter // and it has no visible items - tab->setVisible(list->wasLasFilterSuccessfull()); + tab->setVisible(list->hasMatchedItems()); // remove title highlighting because it might // have been previously highlighted by less restrictive filter @@ -894,6 +953,18 @@ void LLOutfitsList::applyFilterToTab( } } +bool LLOutfitsList::hasWornItemSelected() +{ + uuid_vec_t selected_uuids; + getSelectedItemsUUIDs(selected_uuids); + + for (uuid_vec_t::const_iterator it=selected_uuids.begin(); it != selected_uuids.end(); ++it) + { + if (get_is_item_worn(*it)) return true; + } + return false; +} + void LLOutfitsList::onAccordionTabRightClick(LLUICtrl* ctrl, S32 x, S32 y, const LLUUID& cat_id) { LLAccordionCtrlTab* tab = dynamic_cast<LLAccordionCtrlTab*>(ctrl); @@ -912,6 +983,26 @@ void LLOutfitsList::onAccordionTabRightClick(LLUICtrl* ctrl, S32 x, S32 y, const } } +void LLOutfitsList::wearSelectedItems() +{ + uuid_vec_t selected_uuids; + getSelectedItemsUUIDs(selected_uuids); + + if(selected_uuids.empty()) + { + return; + } + + uuid_vec_t::const_iterator it; + // Wear items from all selected lists(if possible- add, else replace) + for (it = selected_uuids.begin(); it != selected_uuids.end()-1; ++it) + { + LLAppearanceMgr::getInstance()->wearItemOnAvatar(*it, false, false); + } + // call update only when wearing last item + LLAppearanceMgr::getInstance()->wearItemOnAvatar(*it, true, false); +} + void LLOutfitsList::onWearableItemsListRightClick(LLUICtrl* ctrl, S32 x, S32 y) { LLWearableItemsList* list = dynamic_cast<LLWearableItemsList*>(ctrl); @@ -919,18 +1010,7 @@ void LLOutfitsList::onWearableItemsListRightClick(LLUICtrl* ctrl, S32 x, S32 y) uuid_vec_t selected_uuids; - // Collect selected items from all selected lists. - for (wearables_lists_map_t::iterator iter = mSelectedListsMap.begin(); - iter != mSelectedListsMap.end(); - ++iter) - { - uuid_vec_t uuids; - (*iter).second->getSelectedUUIDs(uuids); - - S32 prev_size = selected_uuids.size(); - selected_uuids.resize(prev_size + uuids.size()); - std::copy(uuids.begin(), uuids.end(), selected_uuids.begin() + prev_size); - } + getSelectedItemsUUIDs(selected_uuids); LLWearableItemsList::ContextMenu::instance().show(list, selected_uuids, x, y); } diff --git a/indra/newview/lloutfitslist.h b/indra/newview/lloutfitslist.h index d2076247929e23b35ef68567dc075c0ba3b9f051..26722f2a96578b5aacda1b79aaae70e31c6066ce 100644 --- a/indra/newview/lloutfitslist.h +++ b/indra/newview/lloutfitslist.h @@ -103,8 +103,13 @@ class LLOutfitsList : public LLPanelAppearanceTab const LLUUID& getSelectedOutfitUUID() const { return mSelectedOutfitUUID; } + void getSelectedItemsUUIDs(uuid_vec_t& selected_uuids) const; + boost::signals2::connection setSelectionChangeCallback(selection_change_callback_t cb); + // Collects selected items from all selected lists and wears them(if possible- adds, else replaces) + void wearSelectedItems(); + /** * Returns true if there is a selection inside currently selected outfit */ @@ -173,6 +178,11 @@ class LLOutfitsList : public LLPanelAppearanceTab */ void applyFilterToTab(const LLUUID& category_id, LLAccordionCtrlTab* tab, const std::string& filter_substring); + /** + * Returns true if there are any worn items among currently selected, otherwise false. + */ + bool hasWornItemSelected(); + void onAccordionTabRightClick(LLUICtrl* ctrl, S32 x, S32 y, const LLUUID& cat_id); void onWearableItemsListRightClick(LLUICtrl* ctrl, S32 x, S32 y); void onCOFChanged(); diff --git a/indra/newview/llpanelavatar.cpp b/indra/newview/llpanelavatar.cpp index 0b31ffc9a0ce50fbeaeb5511c0c3e03b44b422d4..534bb6e3fc78586fd8cd2cbb8d04e0f8f831ccf0 100644 --- a/indra/newview/llpanelavatar.cpp +++ b/indra/newview/llpanelavatar.cpp @@ -513,12 +513,6 @@ BOOL LLPanelAvatarProfile::postBuild() mProfileMenu = LLUICtrlFactory::getInstance()->createFromFile<LLToggleableMenu>("menu_profile_overflow.xml", gMenuHolder, LLViewerMenuHolderGL::child_registry_t::instance()); - LLTextureCtrl* pic = getChild<LLTextureCtrl>("2nd_life_pic"); - pic->setFallbackImageName("default_profile_picture.j2c"); - - pic = getChild<LLTextureCtrl>("real_world_pic"); - pic->setFallbackImageName("default_profile_picture.j2c"); - LLVoiceClient::getInstance()->addObserver((LLVoiceClientStatusObserver*)this); resetControls(); @@ -843,9 +837,6 @@ BOOL LLPanelMyProfile::postBuild() { LLPanelAvatarProfile::postBuild(); - mStatusCombobox = getChild<LLComboBox>("status_combo"); - - childSetCommitCallback("status_combo", boost::bind(&LLPanelMyProfile::onStatusChanged, this), NULL); childSetCommitCallback("status_me_message_text", boost::bind(&LLPanelMyProfile::onStatusMessageChanged, this), NULL); resetControls(); @@ -865,30 +856,9 @@ void LLPanelMyProfile::processProfileProperties(const LLAvatarData* avatar_data) fillPartnerData(avatar_data); - fillStatusData(avatar_data); - fillAccountStatus(avatar_data); } -void LLPanelMyProfile::fillStatusData(const LLAvatarData* avatar_data) -{ - std::string status; - if (gAgent.getAFK()) - { - status = "away"; - } - else if (gAgent.getBusy()) - { - status = "busy"; - } - else - { - status = "online"; - } - - mStatusCombobox->setValue(status); -} - void LLPanelMyProfile::resetControls() { childSetVisible("status_panel", false); @@ -899,27 +869,6 @@ void LLPanelMyProfile::resetControls() childSetVisible("profile_me_buttons_panel", true); } -void LLPanelMyProfile::onStatusChanged() -{ - LLSD::String status = mStatusCombobox->getValue().asString(); - - if ("online" == status) - { - gAgent.clearAFK(); - gAgent.clearBusy(); - } - else if ("away" == status) - { - gAgent.clearBusy(); - gAgent.setAFK(); - } - else if ("busy" == status) - { - gAgent.clearAFK(); - gAgent.setBusy(); - LLNotificationsUtil::add("BusyModeSet"); - } -} void LLPanelMyProfile::onStatusMessageChanged() { diff --git a/indra/newview/llpanelavatar.h b/indra/newview/llpanelavatar.h index bb8df2ff9c83f7c610881093a8b04dade93ca52f..ac2765df28a56b8a0f61838319c370bb23aa0bf3 100644 --- a/indra/newview/llpanelavatar.h +++ b/indra/newview/llpanelavatar.h @@ -240,21 +240,10 @@ class LLPanelMyProfile /*virtual*/ void processProfileProperties(const LLAvatarData* avatar_data); - /** - * Fills Avatar status data. - */ - virtual void fillStatusData(const LLAvatarData* avatar_data); - /*virtual*/ void resetControls(); protected: - - void onStatusChanged(); void onStatusMessageChanged(); - -private: - - LLComboBox* mStatusCombobox; }; /** diff --git a/indra/newview/llpaneleditwearable.cpp b/indra/newview/llpaneleditwearable.cpp index ae549099452e061a466469e81ec3bf921fd44934..0ff3bb30dce6efb91b8bca5005627090efe9daa3 100644 --- a/indra/newview/llpaneleditwearable.cpp +++ b/indra/newview/llpaneleditwearable.cpp @@ -63,6 +63,7 @@ #include "llcommandhandler.h" #include "lltextutil.h" +#include "llappearancemgr.h" // register panel with appropriate XML static LLRegisterPanelClassWrapper<LLPanelEditWearable> t_edit_wearable("panel_edit_wearable"); @@ -382,6 +383,31 @@ LLEditWearableDictionary::PickerControlEntry::PickerControlEntry(ETextureIndex t { } +/** + * Class to prevent hack in LLButton's constructor and use paddings declared in xml. + */ +class LLLabledBackButton : public LLButton +{ +public: + struct Params : public LLInitParam::Block<Params, LLButton::Params> + { + Params() {} + }; +protected: + friend class LLUICtrlFactory; + LLLabledBackButton(const Params&); +}; + +static LLDefaultChildRegistry::Register<LLLabledBackButton> labeled_back_btn("labeled_back_button"); + +LLLabledBackButton::LLLabledBackButton(const Params& params) +: LLButton(params) +{ + // override hack in LLButton's constructor to use paddings have been set in xml + setLeftHPad(params.pad_left); + setRightHPad(params.pad_right); +} + // Helper functions. static const texture_vec_t null_texture_vec; @@ -649,6 +675,8 @@ BOOL LLPanelEditWearable::postBuild() mBtnRevert->setClickedCallback(boost::bind(&LLPanelEditWearable::onRevertButtonClicked, this)); mBtnBack = getChild<LLButton>("back_btn"); + mBackBtnLabel = mBtnBack->getLabelUnselected(); + mBtnBack->setLabel(LLStringUtil::null); // handled at appearance panel level? //mBtnBack->setClickedCallback(boost::bind(&LLPanelEditWearable::onBackButtonClicked, this)); @@ -959,6 +987,7 @@ void LLPanelEditWearable::saveChanges() if (mWearablePtr->getName().compare(mNameEditor->getText()) != 0) { // the name of the wearable has changed, re-save wearable with new name + LLAppearanceMgr::instance().removeCOFItemLinks(mWearablePtr->getItemID(),false); gAgentWearables.saveWearableAs(mWearablePtr->getType(), index, mNameEditor->getText(), FALSE); } else @@ -1016,6 +1045,7 @@ void LLPanelEditWearable::showWearable(LLWearable* wearable, BOOL show) if (show) { mPanelTitle->setText(title); + mPanelTitle->setToolTip(title); mDescTitle->setText(description_title); // set name @@ -1302,8 +1332,8 @@ void LLPanelEditWearable::getSortedParams(value_map_t &sorted_params, const std: { LLViewerVisualParam *param = (LLViewerVisualParam*) *iter; - if (param->getID() == -1 - || param->getGroup() != VISUAL_PARAM_GROUP_TWEAKABLE + if (param->getID() == -1 + || !param->isTweakable() || param->getEditGroup() != edit_group || !(param->getSex() & avatar_sex)) { @@ -1357,6 +1387,28 @@ void LLPanelEditWearable::updateVerbs() gSavedSettings.setU32("AvatarSex", (gAgentAvatarp->getSex() == SEX_MALE) ); } + // update back button and title according to dirty state. + static BOOL was_dirty = FALSE; + if (was_dirty != is_dirty) // to avoid redundant changes because this method is called from draw + { + static S32 label_width = mBtnBack->getFont()->getWidth(mBackBtnLabel); + const std::string& label = is_dirty ? mBackBtnLabel : LLStringUtil::null; + const S32 delta_width = is_dirty ? label_width : -label_width; + + mBtnBack->setLabel(label); + + // update rect according to label width + LLRect rect = mBtnBack->getRect(); + rect.mRight += delta_width; + mBtnBack->setShape(rect); + + // update title rect according to back button width + rect = mPanelTitle->getRect(); + rect.mLeft += delta_width; + mPanelTitle->setShape(rect); + + was_dirty = is_dirty; + } } void LLPanelEditWearable::configureAlphaCheckbox(LLVOAvatarDefines::ETextureIndex te, const std::string& name) diff --git a/indra/newview/llpaneleditwearable.h b/indra/newview/llpaneleditwearable.h index 61441435cd13f0286806415e3957e665e1dea7f2..bfce2ae56ed45ce2c54c6580ae2f171c4769ba40 100644 --- a/indra/newview/llpaneleditwearable.h +++ b/indra/newview/llpaneleditwearable.h @@ -120,6 +120,7 @@ class LLPanelEditWearable : public LLPanel // these are constant no matter what wearable we're editing LLButton *mBtnRevert; LLButton *mBtnBack; + std::string mBackBtnLabel; LLTextBox *mPanelTitle; LLTextBox *mDescTitle; diff --git a/indra/newview/llpanelface.cpp b/indra/newview/llpanelface.cpp index b50c6442e1aafa678d985b8cab4493071fb6f97c..7d5be39074b7b176090c906f1ff1870364149177 100644 --- a/indra/newview/llpanelface.cpp +++ b/indra/newview/llpanelface.cpp @@ -790,7 +790,6 @@ void LLPanelFace::getState() if(texture_ctrl) { texture_ctrl->setImageAssetID( LLUUID::null ); - texture_ctrl->setFallbackImageName( "locked_image.j2c" ); texture_ctrl->setEnabled( FALSE ); // this is a LLUICtrl, but we don't want it to have keyboard focus so we add it as a child, not a ctrl. // texture_ctrl->setValid(FALSE); } diff --git a/indra/newview/llpanelnearbymedia.cpp b/indra/newview/llpanelnearbymedia.cpp index 6411cd802daa3b93f4c96bb20f3a43d2b03a163b..7f4609b83eac6280049324f019c463cc2b7a3780 100644 --- a/indra/newview/llpanelnearbymedia.cpp +++ b/indra/newview/llpanelnearbymedia.cpp @@ -224,8 +224,8 @@ void LLPanelNearByMedia::reshape(S32 width, S32 height, BOOL called_from_parent) { LLPanel::reshape(width, height, called_from_parent); - LLButton* more_less_btn = getChild<LLButton>("more_less_btn"); - if (more_less_btn->getValue().asBoolean()) + LLButton* more_btn = findChild<LLButton>("more_btn"); + if (more_btn && more_btn->getValue().asBoolean()) { mMoreRect = getRect(); } diff --git a/indra/newview/llpanelobject.cpp b/indra/newview/llpanelobject.cpp index 30221da12a8d1091007341215cf6511a16a4c207..a1b3114bb4889644a35b9698108dd96e3674bfe4 100644 --- a/indra/newview/llpanelobject.cpp +++ b/indra/newview/llpanelobject.cpp @@ -172,7 +172,6 @@ BOOL LLPanelObject::postBuild() //-------------------------------------------------------- // material type popup - mLabelMaterial = getChild<LLTextBox>("label material"); mComboMaterial = getChild<LLComboBox>("material"); childSetCommitCallback("material",onCommitMaterial,this); mComboMaterial->removeall(); @@ -189,7 +188,6 @@ BOOL LLPanelObject::postBuild() mComboMaterialItemCount = mComboMaterial->getItemCount(); // Base Type - mLabelBaseType = getChild<LLTextBox>("label basetype"); mComboBaseType = getChild<LLComboBox>("comboBaseType"); childSetCommitCallback("comboBaseType",onCommitParametric,this); @@ -548,7 +546,6 @@ void LLPanelObject::getState( ) if (editable && single_volume && material_same) { mComboMaterial->setEnabled( TRUE ); - mLabelMaterial->setEnabled( TRUE ); if (material_code == LL_MCODE_LIGHT) { if (mComboMaterial->getItemCount() == mComboMaterialItemCount) @@ -570,7 +567,6 @@ void LLPanelObject::getState( ) else { mComboMaterial->setEnabled( FALSE ); - mLabelMaterial->setEnabled( FALSE ); } //---------------------------------------------------------------------------- @@ -979,7 +975,6 @@ void LLPanelObject::getState( ) } // Update field enablement - mLabelBaseType ->setEnabled( enabled ); mComboBaseType ->setEnabled( enabled ); mLabelCut ->setEnabled( enabled ); @@ -1910,12 +1905,10 @@ void LLPanelObject::clearCtrls() mCheckCastShadows->setEnabled( FALSE ); #endif mComboMaterial ->setEnabled( FALSE ); - mLabelMaterial ->setEnabled( FALSE ); // Disable text labels mLabelPosition ->setEnabled( FALSE ); mLabelSize ->setEnabled( FALSE ); mLabelRotation ->setEnabled( FALSE ); - mLabelBaseType ->setEnabled( FALSE ); mLabelCut ->setEnabled( FALSE ); mLabelHollow ->setEnabled( FALSE ); mLabelHoleType ->setEnabled( FALSE ); diff --git a/indra/newview/llpanelobject.h b/indra/newview/llpanelobject.h index 58d9fe9b76e6a82b719e7aeab63a1e3a84b6ffb4..b4e1eee8fbe3bb17c185c5a46eea34c4b56dc6f9 100644 --- a/indra/newview/llpanelobject.h +++ b/indra/newview/llpanelobject.h @@ -101,11 +101,9 @@ class LLPanelObject : public LLPanel protected: S32 mComboMaterialItemCount; - LLTextBox* mLabelMaterial; LLComboBox* mComboMaterial; // Per-object options - LLTextBox* mLabelBaseType; LLComboBox* mComboBaseType; LLTextBox* mLabelCut; diff --git a/indra/newview/llpaneloutfitedit.cpp b/indra/newview/llpaneloutfitedit.cpp index ea7d23333310b0043fb8830a88119f242747c2a2..154471787358aa9a12ae5dd5432bf3f13bb62b34 100644 --- a/indra/newview/llpaneloutfitedit.cpp +++ b/indra/newview/llpaneloutfitedit.cpp @@ -387,6 +387,7 @@ BOOL LLPanelOutfitEdit::postBuild() mWearableItemsList = getChild<LLInventoryItemsList>("list_view"); mWearableItemsList->setCommitOnSelectionChange(true); mWearableItemsList->setCommitCallback(boost::bind(&LLPanelOutfitEdit::onInventorySelectionChange, this)); + mWearableItemsList->setDoubleClickCallback(boost::bind(&LLPanelOutfitEdit::onPlusBtnClicked, this)); mSaveComboBtn.reset(new LLSaveOutfitComboBtn(this)); return TRUE; @@ -404,6 +405,10 @@ void LLPanelOutfitEdit::onOpen(const LLSD& key) displayCurrentOutfit(); mInitialized = true; } + + showAddWearablesPanel(false); + mWearableItemsList->resetSelection(); + mInventoryItemsPanel->clearSelection(); } void LLPanelOutfitEdit::moveWearable(bool closer_to_body) @@ -564,7 +569,8 @@ void LLPanelOutfitEdit::onSearchEdit(const std::string& string) void LLPanelOutfitEdit::onPlusBtnClicked(void) { - LLUUID selected_id = getSelectedItemUUID(); + LLUUID selected_id; + getCurrentItemUUID(selected_id); if (selected_id.isNull()) return; @@ -651,30 +657,31 @@ void LLPanelOutfitEdit::onEditWearableClicked(void) void LLPanelOutfitEdit::onInventorySelectionChange() { - LLUUID item_uuid = getSelectedItemUUID(); - if (item_uuid.isNull()) + uuid_vec_t selected_items; + getSelectedItemsUUID(selected_items); + if (selected_items.empty()) { return; } + uuid_vec_t::iterator worn_item = std::find_if(selected_items.begin(), selected_items.end(), boost::bind(&get_is_item_worn, _1)); + bool can_add = ( worn_item == selected_items.end() ); - LLViewerInventoryItem* item(gInventory.getItem(item_uuid)); - if (!item) - { - return; - } + mPlusBtn->setEnabled(can_add); + + LLViewerInventoryItem* first_item(gInventory.getItem(selected_items.front())); - switch (item->getType()) + if (can_add && + first_item && + selected_items.size() == 1 && + first_item->getType() == LLAssetType::AT_BODYPART) { - case LLAssetType::AT_BODYPART: mPlusBtn->setToolTip(getString("replace_body_part")); - break; - case LLAssetType::AT_CLOTHING: - case LLAssetType::AT_OBJECT: + } + else + { mPlusBtn->setToolTip(LLStringUtil::null); - default: - break; } - + /* Removing add to look inline button (not part of mvp for viewer 2) LLRect btn_rect(current_item->getLocalRect().mRight - 50, current_item->getLocalRect().mTop, @@ -931,16 +938,15 @@ void LLPanelOutfitEdit::onOutfitChanging(bool started) indicator->setVisible(started); } -LLUUID LLPanelOutfitEdit::getSelectedItemUUID() +void LLPanelOutfitEdit::getCurrentItemUUID(LLUUID& selected_id) { - LLUUID selected_id; if (mInventoryItemsPanel->getVisible()) { LLFolderViewItem* curr_item = mInventoryItemsPanel->getRootFolder()->getCurSelectedItem(); - if (!curr_item) return selected_id; + if (!curr_item) return; LLFolderViewEventListener* listenerp = curr_item->getListener(); - if (!listenerp) return selected_id; + if (!listenerp) return; selected_id = listenerp->getUUID(); } @@ -948,8 +954,27 @@ LLUUID LLPanelOutfitEdit::getSelectedItemUUID() { selected_id = mWearableItemsList->getSelectedUUID(); } +} + + +void LLPanelOutfitEdit::getSelectedItemsUUID(uuid_vec_t& uuid_list) +{ + if (mInventoryItemsPanel->getVisible()) + { + std::set<LLUUID> item_set = mInventoryItemsPanel->getRootFolder()->getSelectionList(); + + std::for_each(item_set.begin(), item_set.end(), boost::bind( &uuid_vec_t::push_back, &uuid_list, _1)); + } + else if (mWearablesListViewPanel->getVisible()) + { + std::vector<LLSD> item_set; + mWearableItemsList->getSelectedValues(item_set); + + std::for_each(item_set.begin(), item_set.end(), boost::bind( &uuid_vec_t::push_back, &uuid_list, boost::bind(&LLSD::asUUID, _1 ))); + + } - return selected_id; +// return selected_id; } diff --git a/indra/newview/llpaneloutfitedit.h b/indra/newview/llpaneloutfitedit.h index aa5d00903ae2abd03b3067b8a081ea820b8ccb18..de1bf87fb32fb0c1353267e0f28ceb467e403a9a 100644 --- a/indra/newview/llpaneloutfitedit.h +++ b/indra/newview/llpaneloutfitedit.h @@ -192,7 +192,8 @@ class LLPanelOutfitEdit : public LLPanel void onAddMoreButtonClicked(); void showFilteredWearablesListView(LLWearableType::EType type); void onOutfitChanging(bool started); - LLUUID getSelectedItemUUID(); + void getSelectedItemsUUID(uuid_vec_t& uuid_list); + void getCurrentItemUUID(LLUUID& selected_id); LLTextBox* mCurrentOutfitName; LLTextBox* mStatus; diff --git a/indra/newview/llpaneloutfitsinventory.cpp b/indra/newview/llpaneloutfitsinventory.cpp index 2f1cad8a75db178eecf75257296add305714f440..076e6485a8c0e2d17fc2b624dce31804b6134d60 100644 --- a/indra/newview/llpaneloutfitsinventory.cpp +++ b/indra/newview/llpaneloutfitsinventory.cpp @@ -169,7 +169,14 @@ void LLPanelOutfitsInventory::onSearchEdit(const std::string& string) void LLPanelOutfitsInventory::onWearButtonClick() { - mMyOutfitsPanel->performAction("replaceoutfit"); + if (mMyOutfitsPanel->hasItemSelected()) + { + mMyOutfitsPanel->wearSelectedItems(); + } + else + { + mMyOutfitsPanel->performAction("replaceoutfit"); + } } bool LLPanelOutfitsInventory::onSaveCommit(const LLSD& notification, const LLSD& response) diff --git a/indra/newview/llpanelplace.cpp b/indra/newview/llpanelplace.cpp index 6985b73200bd57d18c342605b825aab70abf1b83..1446088c4fe24ec6a166f260479aaed18c1556b4 100644 --- a/indra/newview/llpanelplace.cpp +++ b/indra/newview/llpanelplace.cpp @@ -342,7 +342,6 @@ void LLPanelPlace::displayParcelInfo(const LLVector3& pos_region, mDescEditor->setText(getString("server_update_text")); } mSnapshotCtrl->setImageAssetID(LLUUID::null); - mSnapshotCtrl->setFallbackImageName("default_land_picture.j2c"); } // static diff --git a/indra/newview/llpanelplaceinfo.cpp b/indra/newview/llpanelplaceinfo.cpp index f6133d4446eabe8c84e729539e88295f1c2bfcc6..db305b25facff4a1cb49664b050542f191a25604 100644 --- a/indra/newview/llpanelplaceinfo.cpp +++ b/indra/newview/llpanelplaceinfo.cpp @@ -110,7 +110,6 @@ void LLPanelPlaceInfo::resetLocation() mDescEditor->setText(loading); mSnapshotCtrl->setImageAssetID(LLUUID::null); - mSnapshotCtrl->setFallbackImageName("default_land_picture.j2c"); } //virtual diff --git a/indra/newview/llpanelvolumepulldown.cpp b/indra/newview/llpanelvolumepulldown.cpp index ae52bd3703f95b9ff438f9a1cee676471a973342..7d70a8a891383653958d60503580eeaf9190234a 100644 --- a/indra/newview/llpanelvolumepulldown.cpp +++ b/indra/newview/llpanelvolumepulldown.cpp @@ -44,7 +44,7 @@ #include "lltabcontainer.h" #include "llfloaterreg.h" #include "llfloaterpreference.h" -#include "llslider.h" +#include "llsliderctrl.h" /* static */ const F32 LLPanelVolumePulldown::sAutoCloseFadeStartTimeSec = 4.0f; /* static */ const F32 LLPanelVolumePulldown::sAutoCloseTotalTimeSec = 5.0f; @@ -66,7 +66,7 @@ LLPanelVolumePulldown::LLPanelVolumePulldown() BOOL LLPanelVolumePulldown::postBuild() { // set the initial volume-slider's position to reflect reality - LLSlider* volslider = getChild<LLSlider>( "mastervolume" ); + LLSliderCtrl* volslider = getChild<LLSliderCtrl>( "mastervolume" ); volslider->setValue(gSavedSettings.getF32("AudioLevelMaster")); return LLPanel::postBuild(); diff --git a/indra/newview/llselectmgr.cpp b/indra/newview/llselectmgr.cpp index af16b962e62b3b30bb1c56f85ae1c4f28577850c..050b87bbe0f76e8f1590875db6d17204a2fe4224 100644 --- a/indra/newview/llselectmgr.cpp +++ b/indra/newview/llselectmgr.cpp @@ -3629,9 +3629,10 @@ void LLSelectMgr::sendAttach(U8 attachment_point) if (0 == attachment_point || get_if_there(gAgentAvatarp->mAttachmentPoints, (S32)attachment_point, (LLViewerJointAttachment*)NULL)) { -#if ENABLE_MULTIATTACHMENTS - attachment_point |= ATTACHMENT_ADD; -#endif + + if (gSavedSettings.getBOOL("MultipleAttachments")) + attachment_point |= ATTACHMENT_ADD; + sendListToRegions( "ObjectAttach", packAgentIDAndSessionAndAttachment, diff --git a/indra/newview/llsidepanelappearance.cpp b/indra/newview/llsidepanelappearance.cpp index ea5796d7660ee32110ce4996ff510b3e4ff623f2..951323551c0ae61e766b48e978e0e209b53d738b 100644 --- a/indra/newview/llsidepanelappearance.cpp +++ b/indra/newview/llsidepanelappearance.cpp @@ -405,6 +405,8 @@ void LLSidepanelAppearance::refreshCurrentOutfitName(const std::string& name) //static void LLSidepanelAppearance::editWearable(LLWearable *wearable, LLView *data) { + LLSideTray::getInstance()->showPanel("sidepanel_appearance"); + LLSidepanelAppearance *panel = dynamic_cast<LLSidepanelAppearance*>(data); if (panel) { diff --git a/indra/newview/llsidepanelinventory.cpp b/indra/newview/llsidepanelinventory.cpp index 63b6fe5ef0e4fcd2a0a7e967d9fe5cb35b19eec4..de59af49da49aec2c0785308cae6c3253c490a82 100644 --- a/indra/newview/llsidepanelinventory.cpp +++ b/indra/newview/llsidepanelinventory.cpp @@ -71,8 +71,8 @@ BOOL LLSidepanelInventory::postBuild() mShareBtn = mInventoryPanel->getChild<LLButton>("share_btn"); mShareBtn->setClickedCallback(boost::bind(&LLSidepanelInventory::onShareButtonClicked, this)); - LLButton* shop_btn = mInventoryPanel->getChild<LLButton>("shop_btn"); - shop_btn->setClickedCallback(boost::bind(&LLSidepanelInventory::onShopButtonClicked, this)); + mShopBtn = mInventoryPanel->getChild<LLButton>("shop_btn"); + mShopBtn->setClickedCallback(boost::bind(&LLSidepanelInventory::onShopButtonClicked, this)); mWearBtn = mInventoryPanel->getChild<LLButton>("wear_btn"); mWearBtn->setClickedCallback(boost::bind(&LLSidepanelInventory::onWearButtonClicked, this)); @@ -265,6 +265,7 @@ void LLSidepanelInventory::updateVerbs() mPlayBtn->setEnabled(FALSE); mTeleportBtn->setVisible(FALSE); mTeleportBtn->setEnabled(FALSE); + mShopBtn->setVisible(TRUE); mShareBtn->setEnabled(canShare()); @@ -283,16 +284,19 @@ void LLSidepanelInventory::updateVerbs() case LLInventoryType::IT_ATTACHMENT: mWearBtn->setVisible(TRUE); mWearBtn->setEnabled(TRUE); + mShopBtn->setVisible(FALSE); break; case LLInventoryType::IT_SOUND: case LLInventoryType::IT_GESTURE: case LLInventoryType::IT_ANIMATION: mPlayBtn->setVisible(TRUE); mPlayBtn->setEnabled(TRUE); + mShopBtn->setVisible(FALSE); break; case LLInventoryType::IT_LANDMARK: mTeleportBtn->setVisible(TRUE); mTeleportBtn->setEnabled(TRUE); + mShopBtn->setVisible(FALSE); break; default: break; diff --git a/indra/newview/llsidepanelinventory.h b/indra/newview/llsidepanelinventory.h index 13275d14c05a3bb096df824e05d88b40f67c8c2e..951fdd630ca5c921b9252177a3060ada2030cf40 100644 --- a/indra/newview/llsidepanelinventory.h +++ b/indra/newview/llsidepanelinventory.h @@ -94,6 +94,7 @@ class LLSidepanelInventory : public LLPanel LLButton* mPlayBtn; LLButton* mTeleportBtn; LLButton* mOverflowBtn; + LLButton* mShopBtn; }; diff --git a/indra/newview/llsidepaneliteminfo.cpp b/indra/newview/llsidepaneliteminfo.cpp index 0ec351965af40a23937591b96cbb7b1ade18ebf1..6ccd89dddb948d871352337f03eb995b04cca6c9 100644 --- a/indra/newview/llsidepaneliteminfo.cpp +++ b/indra/newview/llsidepaneliteminfo.cpp @@ -131,7 +131,6 @@ BOOL LLSidepanelItemInfo::postBuild() getChild<LLUICtrl>("CheckNextOwnerTransfer")->setCommitCallback(boost::bind(&LLSidepanelItemInfo::onCommitPermissions, this)); // Mark for sale or not, and sale info getChild<LLUICtrl>("CheckPurchase")->setCommitCallback(boost::bind(&LLSidepanelItemInfo::onCommitSaleInfo, this)); - getChild<LLUICtrl>("RadioSaleType")->setCommitCallback(boost::bind(&LLSidepanelItemInfo::onCommitSaleType, this)); // "Price" label for edit getChild<LLUICtrl>("Edit Cost")->setCommitCallback(boost::bind(&LLSidepanelItemInfo::onCommitSaleInfo, this)); refresh(); @@ -189,7 +188,6 @@ void LLSidepanelItemInfo::refresh() "CheckNextOwnerCopy", "CheckNextOwnerTransfer", "CheckPurchase", - "RadioSaleType", "Edit Cost" }; @@ -364,7 +362,6 @@ void LLSidepanelItemInfo::refreshFromItem(LLViewerInventoryItem* item) "CheckNextOwnerTransfer", "CheckPurchase", "SaleLabel", - "RadioSaleType", "combobox sale copy", "Edit Cost", "TextPrice" @@ -559,7 +556,6 @@ void LLSidepanelItemInfo::refreshFromItem(LLViewerInventoryItem* item) childSetEnabled("CheckNextOwnerCopy",(base_mask & PERM_COPY) && !cannot_restrict_permissions); childSetEnabled("CheckNextOwnerTransfer",(next_owner_mask & PERM_COPY) && !cannot_restrict_permissions); - childSetEnabled("RadioSaleType",is_complete && is_for_sale); childSetEnabled("TextPrice",is_complete && is_for_sale); childSetEnabled("Edit Cost",is_complete && is_for_sale); } @@ -573,7 +569,6 @@ void LLSidepanelItemInfo::refreshFromItem(LLViewerInventoryItem* item) childSetEnabled("CheckNextOwnerCopy",FALSE); childSetEnabled("CheckNextOwnerTransfer",FALSE); - childSetEnabled("RadioSaleType",FALSE); childSetEnabled("TextPrice",FALSE); childSetEnabled("Edit Cost",FALSE); } @@ -586,17 +581,14 @@ void LLSidepanelItemInfo::refreshFromItem(LLViewerInventoryItem* item) childSetValue("CheckNextOwnerCopy",LLSD(BOOL(next_owner_mask & PERM_COPY))); childSetValue("CheckNextOwnerTransfer",LLSD(BOOL(next_owner_mask & PERM_TRANSFER))); - LLRadioGroup* radioSaleType = getChild<LLRadioGroup>("RadioSaleType"); if (is_for_sale) { - radioSaleType->setSelectedIndex((S32)sale_info.getSaleType() - 1); S32 numerical_price; numerical_price = sale_info.getSalePrice(); childSetText("Edit Cost",llformat("%d",numerical_price)); } else { - radioSaleType->setSelectedIndex(-1); childSetText("Edit Cost",llformat("%d",0)); } } diff --git a/indra/newview/llstatusbar.cpp b/indra/newview/llstatusbar.cpp index 8c8fbdc88ccd9fb0fc81e18e14c4ee9ebf565286..c02559b2093b9712720276ddeb6e7224e6fc65b5 100644 --- a/indra/newview/llstatusbar.cpp +++ b/indra/newview/llstatusbar.cpp @@ -121,7 +121,6 @@ const U32 LLStatusBar::MAX_DATE_STRING_LENGTH = 2000; LLStatusBar::LLStatusBar(const LLRect& rect) : LLPanel(), - mTextHealth(NULL), mTextTime(NULL), mSGBandwidth(NULL), mSGPacketLoss(NULL), @@ -181,11 +180,8 @@ BOOL LLStatusBar::postBuild() // build date necessary data (must do after panel built) setupDate(); - mTextHealth = getChild<LLTextBox>("HealthText" ); mTextTime = getChild<LLTextBox>("TimeText" ); - getChild<LLUICtrl>("buycurrency")->setCommitCallback( - boost::bind(&LLStatusBar::onClickBuyCurrency, this)); getChild<LLUICtrl>("buyL")->setCommitCallback( boost::bind(&LLStatusBar::onClickBuyCurrency, this)); @@ -328,24 +324,12 @@ void LLStatusBar::refresh() BOOL flash = S32(mHealthTimer->getElapsedSeconds() * ICON_FLASH_FREQUENCY) & 1; childSetVisible("health", flash); } - mTextHealth->setVisible(TRUE); // Health childGetRect( "health", buttonRect ); r.setOriginAndSize( x, y, buttonRect.getWidth(), buttonRect.getHeight()); childSetRect("health", r); x += buttonRect.getWidth(); - - const S32 health_width = S32( LLFontGL::getFontSansSerifSmall()->getWidth(std::string("100%")) ); - r.set(x, y+TEXT_HEIGHT - 2, x+health_width, y); - mTextHealth->setRect(r); - x += health_width; - } - else - { - // invisible if region doesn't allow damage - childSetVisible("health", false); - mTextHealth->setVisible(FALSE); } mSGBandwidth->setVisible(net_stats_visible); @@ -444,8 +428,6 @@ void LLStatusBar::sendMoneyBalanceRequest() void LLStatusBar::setHealth(S32 health) { //llinfos << "Setting health to: " << buffer << llendl; - mTextHealth->setText(llformat("%d%%", health)); - if( mHealth > health ) { if (mHealth > (health + gSavedSettings.getF32("UISndHealthReductionThreshold"))) diff --git a/indra/newview/llstatusbar.h b/indra/newview/llstatusbar.h index e5240fcc3e40ab3463c7bdd550f3460a677b7928..32f29e9e1c8ed4ce0028284a9e8693d00383d131 100644 --- a/indra/newview/llstatusbar.h +++ b/indra/newview/llstatusbar.h @@ -105,7 +105,6 @@ class LLStatusBar static void onClickMediaToggle(void* data); private: - LLTextBox *mTextHealth; LLTextBox *mTextTime; LLStatGraph *mSGBandwidth; diff --git a/indra/newview/lltexlayer.cpp b/indra/newview/lltexlayer.cpp index 5d51e32515c69c818ee56dc4bfa9a7c8c8d85336..46bd55de43b0ea18b86b106983f321aa08a8ca95 100644 --- a/indra/newview/lltexlayer.cpp +++ b/indra/newview/lltexlayer.cpp @@ -341,7 +341,8 @@ BOOL LLTexLayerSetBuffer::isReadyToUpload() const { if (!mNeedsUpload) return FALSE; // Don't need to upload if we haven't requested one. if (!gAgentQueryManager.hasNoPendingQueries()) return FALSE; // Can't upload if there are pending queries. - + if (isAgentAvatarValid() && !gAgentAvatarp->isUsingBakedTextures()) return FALSE; // Don't upload if avatar is using composites. + // If we requested an upload and have the final LOD ready, then upload. const BOOL can_highest_lod = mTexLayerSet->isLocalTextureDataFinal(); if (can_highest_lod) return TRUE; diff --git a/indra/newview/lltexturectrl.cpp b/indra/newview/lltexturectrl.cpp index a1ab051021222c2bd94609cc7473860109161f1d..f3530b69db0449972a38f3a84782e77670c454f1 100644 --- a/indra/newview/lltexturectrl.cpp +++ b/indra/newview/lltexturectrl.cpp @@ -100,7 +100,7 @@ class LLFloaterTexturePicker : public LLFloater PermissionMask immediate_filter_perm_mask, PermissionMask non_immediate_filter_perm_mask, BOOL can_apply_immediately, - const std::string& fallback_image_name); + LLUIImagePtr fallback_image_name); virtual ~LLFloaterTexturePicker(); @@ -153,7 +153,7 @@ class LLFloaterTexturePicker : public LLFloater LLTextureCtrl* mOwner; LLUUID mImageAssetID; // Currently selected texture - std::string mFallbackImageName; // What to show if currently selected texture is null. + LLUIImagePtr mFallbackImage; // What to show if currently selected texture is null. LLUUID mWhiteImageAssetID; LLUUID mSpecialCurrentImageAssetID; // Used when the asset id has no corresponding texture in the user's inventory. @@ -183,11 +183,11 @@ LLFloaterTexturePicker::LLFloaterTexturePicker( PermissionMask immediate_filter_perm_mask, PermissionMask non_immediate_filter_perm_mask, BOOL can_apply_immediately, - const std::string& fallback_image_name) + LLUIImagePtr fallback_image) : LLFloater(LLSD()), mOwner( owner ), mImageAssetID( owner->getImageAssetID() ), - mFallbackImageName( fallback_image_name ), + mFallbackImage( fallback_image ), mWhiteImageAssetID( gSavedSettings.getString( "UIImgWhiteUUID" ) ), mOriginalImageAssetID(owner->getImageAssetID()), mLabel(label), @@ -533,11 +533,6 @@ void LLFloaterTexturePicker::draw() mTexturep = LLViewerTextureManager::getFetchedTexture(mImageAssetID, MIPMAP_YES); mTexturep->setBoostLevel(LLViewerTexture::BOOST_PREVIEW); } - else if (!mFallbackImageName.empty()) - { - mTexturep = LLViewerTextureManager::getFetchedTextureFromFile(mFallbackImageName); - mTexturep->setBoostLevel(LLViewerTexture::BOOST_PREVIEW); - } if (mTentativeLabel) { @@ -578,13 +573,10 @@ void LLFloaterTexturePicker::draw() // Pump the priority mTexturep->addTextureStats( (F32)(interior.getWidth() * interior.getHeight()) ); - - // Draw Tentative Label over the image - if( mOwner->getTentative() && !mViewModel->isDirty() ) - { - mTentativeLabel->setVisible( TRUE ); - drawChild(mTentativeLabel); - } + } + else if (!mFallbackImage.isNull()) + { + mFallbackImage->draw(interior); } else { @@ -593,6 +585,13 @@ void LLFloaterTexturePicker::draw() // Draw X gl_draw_x(interior, LLColor4::black ); } + + // Draw Tentative Label over the image + if( mOwner->getTentative() && !mViewModel->isDirty() ) + { + mTentativeLabel->setVisible( TRUE ); + drawChild(mTentativeLabel); + } } } @@ -875,7 +874,8 @@ LLTextureCtrl::LLTextureCtrl(const LLTextureCtrl::Params& p) mShowLoadingPlaceholder( TRUE ), mImageAssetID(p.image_id), mDefaultImageAssetID(p.default_image_id), - mDefaultImageName(p.default_image_name) + mDefaultImageName(p.default_image_name), + mFallbackImage(p.fallback_image) { setAllowNoTexture(p.allow_no_texture); setCanApplyImmediately(p.can_apply_immediately); @@ -1019,7 +1019,7 @@ void LLTextureCtrl::showPicker(BOOL take_focus) mImmediateFilterPermMask, mNonImmediateFilterPermMask, mCanApplyImmediately, - mFallbackImageName); + mFallbackImage); mFloaterHandle = floaterp->getHandle(); @@ -1223,12 +1223,6 @@ void LLTextureCtrl::draw() mTexturep = texture; } - else if (!mFallbackImageName.empty()) - { - // Show fallback image. - mTexturep = LLViewerTextureManager::getFetchedTextureFromFile(mFallbackImageName); - mTexturep->setBoostLevel(LLViewerTexture::BOOST_PREVIEW); - } else//mImageAssetID == LLUUID::null { mTexturep = NULL; @@ -1252,6 +1246,10 @@ void LLTextureCtrl::draw() gl_draw_scaled_image( interior.mLeft, interior.mBottom, interior.getWidth(), interior.getHeight(), mTexturep); mTexturep->addTextureStats( (F32)(interior.getWidth() * interior.getHeight()) ); } + else if (!mFallbackImage.isNull()) + { + mFallbackImage->draw(interior); + } else { gl_rect_2d( interior, LLColor4::grey, TRUE ); diff --git a/indra/newview/lltexturectrl.h b/indra/newview/lltexturectrl.h index bcd0a083f2be6f12d096bd6f30da2a8bcd60b124..b5dfa1b9489447352d330c04387aaf57830a8ce1 100644 --- a/indra/newview/lltexturectrl.h +++ b/indra/newview/lltexturectrl.h @@ -78,6 +78,7 @@ class LLTextureCtrl // only on DnD or when OK is pressed in the picker Optional<S32> label_width; Optional<LLUIColor> border_color; + Optional<LLUIImage*> fallback_image; Optional<LLTextBox::Params> multiselect_text, caption_text; @@ -93,6 +94,7 @@ class LLTextureCtrl no_commit_on_selection("no_commit_on_selection", false), label_width("label_width", -1), border_color("border_color"), + fallback_image("fallback_image"), multiselect_text("multiselect_text"), caption_text("caption_text"), border("border") @@ -152,9 +154,6 @@ class LLTextureCtrl const std::string& getDefaultImageName() const { return mDefaultImageName; } - void setFallbackImageName( const std::string& name ) { mFallbackImageName = name; } - const std::string& getFallbackImageName() const { return mFallbackImageName; } - void setCaption(const std::string& caption); void setCanApplyImmediately(BOOL b); @@ -192,32 +191,32 @@ class LLTextureCtrl BOOL doDrop(LLInventoryItem* item); private: - drag_n_drop_callback mDragCallback; - drag_n_drop_callback mDropCallback; - commit_callback_t mOnCancelCallback; - commit_callback_t mOnSelectCallback; + drag_n_drop_callback mDragCallback; + drag_n_drop_callback mDropCallback; + commit_callback_t mOnCancelCallback; + commit_callback_t mOnSelectCallback; LLPointer<LLViewerFetchedTexture> mTexturep; - LLUIColor mBorderColor; - LLUUID mImageItemID; - LLUUID mImageAssetID; - LLUUID mDefaultImageAssetID; - std::string mFallbackImageName; - std::string mDefaultImageName; - LLHandle<LLFloater> mFloaterHandle; - LLTextBox* mTentativeLabel; - LLTextBox* mCaption; - std::string mLabel; - BOOL mAllowNoTexture; // If true, the user can select "none" as an option - PermissionMask mImmediateFilterPermMask; - PermissionMask mNonImmediateFilterPermMask; - BOOL mCanApplyImmediately; - BOOL mCommitOnSelection; - BOOL mNeedsRawImageData; - LLViewBorder* mBorder; - BOOL mValid; - BOOL mShowLoadingPlaceholder; - std::string mLoadingPlaceholderString; - S32 mLabelWidth; + LLUIColor mBorderColor; + LLUUID mImageItemID; + LLUUID mImageAssetID; + LLUUID mDefaultImageAssetID; + LLUIImagePtr mFallbackImage; + std::string mDefaultImageName; + LLHandle<LLFloater> mFloaterHandle; + LLTextBox* mTentativeLabel; + LLTextBox* mCaption; + std::string mLabel; + BOOL mAllowNoTexture; // If true, the user can select "none" as an option + PermissionMask mImmediateFilterPermMask; + PermissionMask mNonImmediateFilterPermMask; + BOOL mCanApplyImmediately; + BOOL mCommitOnSelection; + BOOL mNeedsRawImageData; + LLViewBorder* mBorder; + BOOL mValid; + BOOL mShowLoadingPlaceholder; + std::string mLoadingPlaceholderString; + S32 mLabelWidth; }; // XUI HACK: When floaters converted, switch this file to lltexturepicker.h/cpp diff --git a/indra/newview/llviewermedia.cpp b/indra/newview/llviewermedia.cpp index d7190f26a36e1da5bacc642a50793b1467cb04e8..34e30b3ccd1e431845bd9922ee9c079aeacd2fdd 100644 --- a/indra/newview/llviewermedia.cpp +++ b/indra/newview/llviewermedia.cpp @@ -763,7 +763,7 @@ void LLViewerMedia::updateMedia(void *dummy_arg) } // Sort the static instance list using our interest criteria - std::stable_sort(sViewerMediaImplList.begin(), sViewerMediaImplList.end(), priorityComparitor); + sViewerMediaImplList.sort(priorityComparitor); // Go through the list again and adjust according to priority. iter = sViewerMediaImplList.begin(); diff --git a/indra/newview/llviewermedia.h b/indra/newview/llviewermedia.h index 8626f4469e332fcda197cc801bf55db2d68960f0..ef9c07c6c78814eec29db34cea1e79ec560ff511 100644 --- a/indra/newview/llviewermedia.h +++ b/indra/newview/llviewermedia.h @@ -84,7 +84,7 @@ class LLViewerMedia static const char* SHOW_MEDIA_WITHIN_PARCEL_SETTING; static const char* SHOW_MEDIA_OUTSIDE_PARCEL_SETTING; - typedef std::vector<LLViewerMediaImpl*> impl_list; + typedef std::list<LLViewerMediaImpl*> impl_list; typedef std::map<LLUUID, LLViewerMediaImpl*> impl_id_map; diff --git a/indra/newview/llviewermessage.cpp b/indra/newview/llviewermessage.cpp index 5840d4599f4345556c10b2aba081ea6b45182d0c..4762cf3027b80db929e3e8389da433d8061ace92 100644 --- a/indra/newview/llviewermessage.cpp +++ b/indra/newview/llviewermessage.cpp @@ -1167,12 +1167,12 @@ void open_inventory_offer(const uuid_vec_t& objects, const std::string& from_nam } //////////////////////////////////////////////////////////////////////////////// - // Highlight item if it's not in the trash, lost+found, or COF + // Highlight item const BOOL auto_open = - gSavedSettings.getBOOL("ShowInInventory") && - (asset_type != LLAssetType::AT_CALLINGCARD) && - !(item && item->getInventoryType() != LLInventoryType::IT_ATTACHMENT) && - !from_name.empty(); + gSavedSettings.getBOOL("ShowInInventory") && // don't open if showininventory is false + !(asset_type == LLAssetType::AT_CALLINGCARD) && // don't open if it's a calling card + !(item && (item->getInventoryType() == LLInventoryType::IT_ATTACHMENT)) && // don't open if it's an item that's an attachment + !from_name.empty(); // don't open if it's not from anyone. LLInventoryPanel *active_panel = LLInventoryPanel::getActiveInventoryPanel(auto_open); if(active_panel) { diff --git a/indra/newview/llviewerobject.cpp b/indra/newview/llviewerobject.cpp index ee89680fea62f4c10d35ce767ee974d6159f3fac..9027caa4ce8abd7a5d421d44ed8256287e556376 100644 --- a/indra/newview/llviewerobject.cpp +++ b/indra/newview/llviewerobject.cpp @@ -4928,6 +4928,11 @@ void LLViewerObject::setIncludeInSearch(bool include_in_search) void LLViewerObject::setRegion(LLViewerRegion *regionp) { + if (!regionp) + { + llwarns << "viewer object set region to NULL" << llendl; + } + mLatestRecvPacketID = 0; mRegionp = regionp; diff --git a/indra/newview/llviewerobjectlist.cpp b/indra/newview/llviewerobjectlist.cpp index 752aeaaab01a157c7d58c6e3f40751d1fa3ca96a..fc94fbafac7c6ab2ad16e15205525d66b61371b1 100644 --- a/indra/newview/llviewerobjectlist.cpp +++ b/indra/newview/llviewerobjectlist.cpp @@ -894,10 +894,10 @@ void LLViewerObjectList::removeDrawable(LLDrawable* drawablep) BOOL LLViewerObjectList::killObject(LLViewerObject *objectp) { - // Don't ever kill gAgentAvatarp, just mark it as null region instead. + // Don't ever kill gAgentAvatarp, just force it to the agent's region if (objectp == gAgentAvatarp) { - objectp->setRegion(NULL); + objectp->setRegion(gAgent.getRegion()); return FALSE; } diff --git a/indra/newview/llviewerwindow.cpp b/indra/newview/llviewerwindow.cpp index a2d0bd673a8a90925ff9c3372047b0a4b04bec97..2f63e7ef0126c3cca9e5e682000fd54ef5ac803b 100644 --- a/indra/newview/llviewerwindow.cpp +++ b/indra/newview/llviewerwindow.cpp @@ -2329,7 +2329,9 @@ void LLViewerWindow::handleScrollWheel(S32 clicks) // Zoom the camera in and out behavior - if(top_ctrl == 0 && getWorldViewRectScaled().pointInRect(mCurrentMousePoint.mX, mCurrentMousePoint.mY) ) + if(top_ctrl == 0 + && getWorldViewRectScaled().pointInRect(mCurrentMousePoint.mX, mCurrentMousePoint.mY) + && gAgentCamera.isInitialized()) gAgentCamera.handleScrollWheel(clicks); return; diff --git a/indra/newview/llvoavatar.cpp b/indra/newview/llvoavatar.cpp index e79174e2f166fe356505766e2f736152a373ac5a..4be703cfb0febb241230be2e1d574d25061ed744 100644 --- a/indra/newview/llvoavatar.cpp +++ b/indra/newview/llvoavatar.cpp @@ -2078,7 +2078,8 @@ void LLVOAvatar::computeBodySize() ankle.mV[VZ] * knee_scale.mV[VZ] - foot.mV[VZ] * ankle_scale.mV[VZ]; - mBodySize.mV[VZ] = mPelvisToFoot + + LLVector3 new_body_size; + new_body_size.mV[VZ] = mPelvisToFoot + // the sqrt(2) correction below is an approximate // correction to get to the top of the head F_SQRT2 * (skull.mV[VZ] * head_scale.mV[VZ]) + @@ -2088,8 +2089,17 @@ void LLVOAvatar::computeBodySize() torso.mV[VZ] * pelvis_scale.mV[VZ]; // TODO -- measure the real depth and width - mBodySize.mV[VX] = DEFAULT_AGENT_DEPTH; - mBodySize.mV[VY] = DEFAULT_AGENT_WIDTH; + new_body_size.mV[VX] = DEFAULT_AGENT_DEPTH; + new_body_size.mV[VY] = DEFAULT_AGENT_WIDTH; + + if (new_body_size != mBodySize) + { + mBodySize = new_body_size; + if (isSelf()) + { // notify simulator of change in size + gAgent.sendAgentSetAppearance(); + } + } /* debug spam std::cout << "skull = " << skull << std::endl; // adebug @@ -2524,7 +2534,7 @@ void LLVOAvatar::idleUpdateAppearanceAnimation() param; param = getNextVisualParam()) { - if (param->getGroup() == VISUAL_PARAM_GROUP_TWEAKABLE) + if (param->isTweakable()) { param->stopAnimating(FALSE); } @@ -2547,7 +2557,7 @@ void LLVOAvatar::idleUpdateAppearanceAnimation() param; param = getNextVisualParam()) { - if (param->getGroup() == VISUAL_PARAM_GROUP_TWEAKABLE) + if (param->isTweakable()) { param->animate(morph_amt, FALSE); } @@ -6546,7 +6556,7 @@ bool LLVOAvatar::visualParamWeightsAreDefault() param; param = getNextVisualParam()) { - if (param->getGroup() == VISUAL_PARAM_GROUP_TWEAKABLE) + if (param->isTweakable()) { LLViewerVisualParam* vparam = dynamic_cast<LLViewerVisualParam*>(param); llassert(vparam); @@ -6656,7 +6666,7 @@ void LLVOAvatar::processAvatarAppearance( LLMessageSystem* mesgsys ) { for( S32 i = 0; i < num_blocks; i++ ) { - while( param && (param->getGroup() != VISUAL_PARAM_GROUP_TWEAKABLE) ) + while( param && (param->getGroup() != VISUAL_PARAM_GROUP_TWEAKABLE) ) // should not be any of group VISUAL_PARAM_GROUP_TWEAKABLE_NO_TRANSMIT { param = getNextVisualParam(); } @@ -6689,7 +6699,7 @@ void LLVOAvatar::processAvatarAppearance( LLMessageSystem* mesgsys ) } } - const S32 expected_tweakable_count = getVisualParamCountInGroup(VISUAL_PARAM_GROUP_TWEAKABLE); + const S32 expected_tweakable_count = getVisualParamCountInGroup(VISUAL_PARAM_GROUP_TWEAKABLE); // don't worry about VISUAL_PARAM_GROUP_TWEAKABLE_NO_TRANSMIT if (num_blocks != expected_tweakable_count) { llinfos << "Number of params in AvatarAppearance msg (" << num_blocks << ") does not match number of tweakable params in avatar xml file (" << expected_tweakable_count << "). Processing what we can. object: " << getID() << llendl; @@ -6976,7 +6986,7 @@ void LLVOAvatar::dumpArchetypeXML( void* ) { LLViewerVisualParam* viewer_param = (LLViewerVisualParam*)param; if( (viewer_param->getWearableType() == type) && - (viewer_param->getGroup() == VISUAL_PARAM_GROUP_TWEAKABLE) ) + (viewer_param->isTweakable() ) ) { apr_file_printf(file, "\t\t<param id=\"%d\" name=\"%s\" value=\"%.3f\"/>\n", viewer_param->getID(), viewer_param->getName().c_str(), viewer_param->getWeight()); diff --git a/indra/newview/llvoavatarself.cpp b/indra/newview/llvoavatarself.cpp index 91af5fefdee7d586d964a429ba78d795170661a2..982d9c375cdb999aae652965d6c487a7e55258da 100644 --- a/indra/newview/llvoavatarself.cpp +++ b/indra/newview/llvoavatarself.cpp @@ -2261,6 +2261,16 @@ void LLVOAvatarSelf::processRebakeAvatarTextures(LLMessageSystem* msg, void**) } } +BOOL LLVOAvatarSelf::isUsingBakedTextures() const +{ + // Composite textures are used during appearance mode. + if (gAgentCamera.cameraCustomizeAvatar()) + return FALSE; + + return TRUE; +} + + void LLVOAvatarSelf::forceBakeAllTextures(bool slam_for_debug) { llinfos << "TAT: forced full rebake. " << llendl; diff --git a/indra/newview/llvoavatarself.h b/indra/newview/llvoavatarself.h index 55b4fd87c821a0f0d0525e8cee259cbd3aae8faa..630afe7a0fa6dcdd91f886f6e4a48cfd98a53363 100644 --- a/indra/newview/llvoavatarself.h +++ b/indra/newview/llvoavatarself.h @@ -217,6 +217,7 @@ class LLVOAvatarSelf : void setCachedBakedTexture(LLVOAvatarDefines::ETextureIndex i, const LLUUID& uuid); void forceBakeAllTextures(bool slam_for_debug = false); static void processRebakeAvatarTextures(LLMessageSystem* msg, void**); + BOOL isUsingBakedTextures() const; // e.g. false if in appearance edit mode protected: /*virtual*/ void removeMissingBakedTextures(); diff --git a/indra/newview/llwearable.cpp b/indra/newview/llwearable.cpp index 46c736c853f61216b11524f1f5cc96690f813a90..2eb233ddd9e7cdba083cbe5f34ff7b6913bdc5dc 100644 --- a/indra/newview/llwearable.cpp +++ b/indra/newview/llwearable.cpp @@ -483,7 +483,7 @@ BOOL LLWearable::isOldVersion() const param; param = (LLViewerVisualParam*) gAgentAvatarp->getNextVisualParam() ) { - if( (param->getWearableType() == mType) && (param->getGroup() == VISUAL_PARAM_GROUP_TWEAKABLE ) ) + if( (param->getWearableType() == mType) && (param->isTweakable() ) ) { param_count++; if( !is_in_map(mVisualParamIndexMap, param->getID() ) ) @@ -534,7 +534,7 @@ BOOL LLWearable::isDirty() const param = (LLViewerVisualParam*) gAgentAvatarp->getNextVisualParam() ) { if( (param->getWearableType() == mType) - && (param->getGroup() == VISUAL_PARAM_GROUP_TWEAKABLE ) + && (param->isTweakable() ) && !param->getCrossWearable()) { F32 current_weight = getVisualParamWeight(param->getID()); @@ -588,7 +588,7 @@ void LLWearable::setParamsToDefaults() for( LLVisualParam* param = gAgentAvatarp->getFirstVisualParam(); param; param = gAgentAvatarp->getNextVisualParam() ) { - if( (((LLViewerVisualParam*)param)->getWearableType() == mType ) && (param->getGroup() == VISUAL_PARAM_GROUP_TWEAKABLE ) ) + if( (((LLViewerVisualParam*)param)->getWearableType() == mType ) && (param->isTweakable() ) ) { setVisualParamWeight(param->getID(),param->getDefaultWeight(), FALSE); } @@ -692,7 +692,7 @@ void LLWearable::removeFromAvatar( LLWearableType::EType type, BOOL upload_bake // Pull params for( LLVisualParam* param = gAgentAvatarp->getFirstVisualParam(); param; param = gAgentAvatarp->getNextVisualParam() ) { - if( (((LLViewerVisualParam*)param)->getWearableType() == type) && (param->getGroup() == VISUAL_PARAM_GROUP_TWEAKABLE ) ) + if( (((LLViewerVisualParam*)param)->getWearableType() == type) && (param->isTweakable() ) ) { S32 param_id = param->getID(); gAgentAvatarp->setVisualParamWeight( param_id, param->getDefaultWeight(), upload_bake ); diff --git a/indra/newview/llwearableitemslist.cpp b/indra/newview/llwearableitemslist.cpp index da15b936978ddcd07fc516c9f567dfe9690ebfaf..cf165f8f660845a75278d15074cfdf304b568dea 100644 --- a/indra/newview/llwearableitemslist.cpp +++ b/indra/newview/llwearableitemslist.cpp @@ -393,9 +393,9 @@ bool LLWearableItemTypeNameComparator::doCompare(const LLPanelInventoryListItemB return item_type_order1 < item_type_order2; } - if (item_type_order1 & TLO_NOT_CLOTHING) + if (item_type_order1 & TLO_SORTABLE_BY_NAME) { - // If both items are of the same asset type except AT_CLOTHING + // If both items are of the same asset type except AT_CLOTHING and AT_BODYPART // we can compare them by name. return LLWearableItemNameComparator::doCompare(wearable_item1, wearable_item2); } @@ -662,7 +662,8 @@ void LLWearableItemsList::ContextMenu::updateItemsVisibility(LLContextMenu* menu setMenuItemVisible(menu, "wear_add", mask == MASK_CLOTHING && n_worn == 0); setMenuItemEnabled(menu, "wear_add", n_items == 1 && canAddWearable(ids.front())); setMenuItemVisible(menu, "wear", n_worn == 0); - setMenuItemVisible(menu, "edit", !standalone && mask & (MASK_CLOTHING|MASK_BODYPART) && n_worn == n_items); + //visible only when one item selected and this item is worn + setMenuItemVisible(menu, "edit", !standalone && mask & (MASK_CLOTHING|MASK_BODYPART) && n_worn == n_items && n_worn == 1); setMenuItemEnabled(menu, "edit", n_editable == 1 && n_worn == 1 && n_items == 1); setMenuItemVisible(menu, "create_new", mask & (MASK_CLOTHING|MASK_BODYPART) && n_items == 1); setMenuItemVisible(menu, "show_original", !standalone); @@ -673,6 +674,8 @@ void LLWearableItemsList::ContextMenu::updateItemsVisibility(LLContextMenu* menu setMenuItemEnabled(menu, "take_off_or_detach", n_worn == n_items); setMenuItemVisible(menu, "object_profile", !standalone); setMenuItemEnabled(menu, "object_profile", n_items == 1); + setMenuItemVisible(menu, "--no options--", FALSE); + setMenuItemEnabled(menu, "--no options--", FALSE); // Populate or hide the "Attach to..." / "Attach to HUD..." submenus. if (mask == MASK_ATTACHMENT && n_worn == 0) @@ -689,6 +692,20 @@ void LLWearableItemsList::ContextMenu::updateItemsVisibility(LLContextMenu* menu { llwarns << "Non-wearable items passed." << llendl; } + + U32 num_visible_items = 0; + for (U32 menu_item_index = 0; menu_item_index < menu->getItemCount(); ++menu_item_index) + { + const LLMenuItemGL* menu_item = menu->getItem(menu_item_index); + if (menu_item && menu_item->getVisible()) + { + num_visible_items++; + } + } + if (num_visible_items == 0) + { + setMenuItemVisible(menu, "--no options--", TRUE); + } } void LLWearableItemsList::ContextMenu::updateItemsLabels(LLContextMenu* menu) diff --git a/indra/newview/llwearableitemslist.h b/indra/newview/llwearableitemslist.h index eb82418454dff78671eb9df1a42b7be8465378f1..d16a2a89c8ed4fe3284dba1f3f86d00d6c825100 100644 --- a/indra/newview/llwearableitemslist.h +++ b/indra/newview/llwearableitemslist.h @@ -299,12 +299,12 @@ class LLWearableItemTypeNameComparator : public LLWearableItemNameComparator private: enum ETypeListOrder { - TLO_ATTACHMENT = 0x01, - TLO_CLOTHING = 0x02, + TLO_CLOTHING = 0x01, + TLO_ATTACHMENT = 0x02, TLO_BODYPART = 0x04, TLO_UNKNOWN = 0x08, - TLO_NOT_CLOTHING = TLO_ATTACHMENT | TLO_BODYPART | TLO_UNKNOWN + TLO_SORTABLE_BY_NAME = TLO_ATTACHMENT | TLO_UNKNOWN }; static LLWearableItemTypeNameComparator::ETypeListOrder getTypeListOrder(LLAssetType::EType item_type); diff --git a/indra/newview/llwearabletype.cpp b/indra/newview/llwearabletype.cpp index 2a14ace38c5d73dd528c4f4138322d754bd56a7d..b9b48fd55a7e014aaafc1a3b8fda3a069d2f1406 100644 --- a/indra/newview/llwearabletype.cpp +++ b/indra/newview/llwearabletype.cpp @@ -85,7 +85,6 @@ LLWearableDictionary::LLWearableDictionary() addEntry(LLWearableType::WT_TATTOO, new WearableEntry("tattoo", "New Tattoo", LLAssetType::AT_CLOTHING, LLInventoryIcon::ICONNAME_CLOTHING_TATTOO)); addEntry(LLWearableType::WT_INVALID, new WearableEntry("invalid", "Invalid Wearable", LLAssetType::AT_NONE, LLInventoryIcon::ICONNAME_NONE)); addEntry(LLWearableType::WT_NONE, new WearableEntry("none", "Invalid Wearable", LLAssetType::AT_NONE, LLInventoryIcon::ICONNAME_NONE)); - addEntry(LLWearableType::WT_COUNT, new WearableEntry("count", "Invalid Wearable", LLAssetType::AT_NONE, LLInventoryIcon::ICONNAME_NONE)); } // static diff --git a/indra/newview/skins/default/textures/textures.xml b/indra/newview/skins/default/textures/textures.xml index cf632c085f6342ab73c2319b7fe26d7ef31ce421..40e882757f5ba176b76e866f44a54de5b9ce027c 100644 --- a/indra/newview/skins/default/textures/textures.xml +++ b/indra/newview/skins/default/textures/textures.xml @@ -68,9 +68,9 @@ with the same filename but different name <texture name="BackArrow_Off" file_name="icons/BackArrow_Off.png" preload="false" /> - <texture name="BackButton_Off" file_name="icons/back_arrow_off.png" preload="false" /> - <texture name="BackButton_Over" file_name="icons/back_arrow_over.png" preload="false" /> - <texture name="BackButton_Press" file_name="icons/back_arrow_press.png" preload="false" /> + <texture name="BackButton_Off" file_name="icons/back_arrow_off.png" preload="false" scale.left="22" scale.top="12" scale.right="25" scale.bottom="12" /> + <texture name="BackButton_Over" file_name="icons/back_arrow_over.png" preload="false" scale.left="22" scale.top="12" scale.right="25" scale.bottom="12" /> + <texture name="BackButton_Press" file_name="icons/back_arrow_press.png" preload="false" scale.left="22" scale.top="12" scale.right="25" scale.bottom="12" /> <texture name="Blank" file_name="Blank.png" preload="false" /> @@ -579,6 +579,10 @@ with the same filename but different name <texture name="scrollbutton_left_in_blue.tga" file_name="widgets/ScrollArrow_Left_Over_Opaque.png" /> <texture name="scrollbutton_right_out_blue.tga" file_name="widgets/ScrollArrow_Right_Opaque.png" /> <texture name="scrollbutton_right_in_blue.tga" file_name="widgets/ScrollArrow_Right_Over_Opaque.png" /> + <texture name="scrollbutton_up_out_blue.tga" file_name="widgets/ScrollArrow_Up_Opaque.png" /> + <texture name="scrollbutton_up_in_blue.tga" file_name="widgets/ScrollArrow_Up_Over_Opaque.png" /> + <texture name="scrollbutton_down_out_blue.tga" file_name="widgets/ScrollArrow_Down_Opaque.png" /> + <texture name="scrollbutton_down_in_blue.tga" file_name="widgets/ScrollArrow_Down_Over_Opaque.png" /> <texture name="up_arrow.tga" file_name="up_arrow.png" /> <texture name="down_arrow.tga" file_name="down_arrow.png" /> diff --git a/indra/newview/skins/default/textures/widgets/ScrollArrow_Down_Opaque.png b/indra/newview/skins/default/textures/widgets/ScrollArrow_Down_Opaque.png new file mode 100644 index 0000000000000000000000000000000000000000..a396380fb2bfafcf2bab04ae85dbd7e2212c2306 Binary files /dev/null and b/indra/newview/skins/default/textures/widgets/ScrollArrow_Down_Opaque.png differ diff --git a/indra/newview/skins/default/textures/widgets/ScrollArrow_Down_Over_Opaque.png b/indra/newview/skins/default/textures/widgets/ScrollArrow_Down_Over_Opaque.png new file mode 100644 index 0000000000000000000000000000000000000000..9568dea78aa4ebbda1a1740e8d5f23f3a1d54030 Binary files /dev/null and b/indra/newview/skins/default/textures/widgets/ScrollArrow_Down_Over_Opaque.png differ diff --git a/indra/newview/skins/default/textures/widgets/ScrollArrow_Up_Opaque.png b/indra/newview/skins/default/textures/widgets/ScrollArrow_Up_Opaque.png new file mode 100644 index 0000000000000000000000000000000000000000..67a7a5568b452080cd27fb4d76f85ae7117ccbe7 Binary files /dev/null and b/indra/newview/skins/default/textures/widgets/ScrollArrow_Up_Opaque.png differ diff --git a/indra/newview/skins/default/textures/widgets/ScrollArrow_Up_Over_Opaque.png b/indra/newview/skins/default/textures/widgets/ScrollArrow_Up_Over_Opaque.png new file mode 100644 index 0000000000000000000000000000000000000000..0cc8c4404baf314e51b2142cdc1e5a92a1232746 Binary files /dev/null and b/indra/newview/skins/default/textures/widgets/ScrollArrow_Up_Over_Opaque.png differ diff --git a/indra/newview/skins/default/xui/de/floater_about.xml b/indra/newview/skins/default/xui/de/floater_about.xml index 89f9f87043f06ba7f164714472ca4517e408995d..b18894d4782982c01eda853fe00d697410690ac9 100644 --- a/indra/newview/skins/default/xui/de/floater_about.xml +++ b/indra/newview/skins/default/xui/de/floater_about.xml @@ -28,8 +28,8 @@ Grafikkarten: [GRAPHICS_CARD] libcurl-Version: [LIBCURL_VERSION] J2C-Decoderversion: [J2C_VERSION] Audio-Treiberversion: [AUDIO_DRIVER_VERSION] -Qt Webkit Version: [QT_WEBKIT_VERSION] -Vivox-Version: [VIVOX_VERSION] +Qt Webkit-Version: [QT_WEBKIT_VERSION] +Voice-Serverversion: [VOICE_VERSION] </floater.string> <floater.string name="none"> (keiner) diff --git a/indra/newview/skins/default/xui/de/floater_about_land.xml b/indra/newview/skins/default/xui/de/floater_about_land.xml index 3026ff64b21fc1731d8dc01a9a54e6285f4c4939..5f00fc4f77d09ddc74cd69bb27f6774952ca2ceb 100644 --- a/indra/newview/skins/default/xui/de/floater_about_land.xml +++ b/indra/newview/skins/default/xui/de/floater_about_land.xml @@ -62,6 +62,9 @@ <panel.string name="no_selection_text"> Keine Parzelle ausgewählt. </panel.string> + <panel.string name="time_stamp_template"> + [wkday,datetime,local] [mth,datetime,local] [day,datetime,local] [hour,datetime,local]:[min,datetime,local]:[second,datetime,local] [year,datetime,local] + </panel.string> <text name="Name:"> Name: </text> diff --git a/indra/newview/skins/default/xui/de/floater_avatar_textures.xml b/indra/newview/skins/default/xui/de/floater_avatar_textures.xml index 92c0c4a27ae2c0f8e07eeee184d713f87fe91b42..8235eacde0ab97d37e7c8f2015f7cf121fd9cba9 100644 --- a/indra/newview/skins/default/xui/de/floater_avatar_textures.xml +++ b/indra/newview/skins/default/xui/de/floater_avatar_textures.xml @@ -3,46 +3,48 @@ <floater.string name="InvalidAvatar"> UNGÃœLTIGER AVATAR </floater.string> - <text name="label" width="120"> - Gebackene Texturen - </text> - <text name="composite_label" width="170"> - Zusammengesetzte Texturen - </text> - <button label="Läd IDs in Konsole ab" label_selected="Abladen" name="Dump"/> <scroll_container name="profile_scroll"> <panel name="scroll_content_panel"> - <texture_picker label="Haare" name="hair-baked"/> - <texture_picker label="Haare" name="hair_grain"/> - <texture_picker label="Alpha: Haare" name="hair_alpha"/> - <texture_picker label="Kopf" name="head-baked"/> - <texture_picker label="Make-Up" name="head_bodypaint"/> - <texture_picker label="Kopf: Alpha" name="head_alpha"/> - <texture_picker label="Kopftattoo" name="head_tattoo"/> - <texture_picker label="Augen" name="eyes-baked"/> - <texture_picker label="Auge" name="eyes_iris"/> - <texture_picker label="Alpha: Augen" name="eyes_alpha"/> - <texture_picker label="Oberkörper" name="upper-baked"/> - <texture_picker label="Oberkörper: Körperfarbe" name="upper_bodypaint" width= - "140"/> - <texture_picker label="Unterhemd" name="upper_undershirt"/> - <texture_picker label="Handschuhe" name="upper_gloves"/> - <texture_picker label="Hemd" name="upper_shirt"/> - <texture_picker label="Oberjacke" name="upper_jacket"/> - <texture_picker label="Alpha: Oben" name="upper_alpha"/> - <texture_picker label="Obere Tattoos" name="upper_tattoo"/> - <texture_picker label="Unterkörper" name="lower-baked"/> - <texture_picker label="Unterkörper: Körperfarbe" name="lower_bodypaint" width= - "140"/> - <texture_picker label="Unterhose" name="lower_underpants"/> - <texture_picker label="Socken" name="lower_socks"/> - <texture_picker label="Schuhe" name="lower_shoes"/> - <texture_picker label="Hose" name="lower_pants"/> - <texture_picker label="Jacke" name="lower_jacket"/> - <texture_picker label="Alpha: Unten" name="lower_alpha"/> - <texture_picker label="Untere Tattoos" name="lower_tattoo"/> - <texture_picker label="Rock" name="skirt-baked"/> - <texture_picker label="Rock" name="skirt"/> + <text name="label"> + Gebackene +Texturen + </text> + <text name="composite_label"> + Zusammengesetzte +Texturen + </text> + <button label="IDs an Konsole ausgeben" label_selected="Abladen" name="Dump"/> + <panel name="scroll_content_panel"> + <texture_picker label="Haare" name="hair-baked"/> + <texture_picker label="Haare" name="hair_grain"/> + <texture_picker label="Alpha: Haare" name="hair_alpha"/> + <texture_picker label="Kopf" name="head-baked"/> + <texture_picker label="Make-Up" name="head_bodypaint"/> + <texture_picker label="Kopf: Alpha" name="head_alpha"/> + <texture_picker label="Kopftätowierung" name="head_tattoo"/> + <texture_picker label="Augen" name="eyes-baked"/> + <texture_picker label="Auge" name="eyes_iris"/> + <texture_picker label="Alpha: Augen" name="eyes_alpha"/> + <texture_picker label="Oberkörper" name="upper-baked"/> + <texture_picker label="Oberkörperfarbe" name="upper_bodypaint"/> + <texture_picker label="Unterhemd" name="upper_undershirt"/> + <texture_picker label="Handschuhe" name="upper_gloves"/> + <texture_picker label="Hemd" name="upper_shirt"/> + <texture_picker label="Oberjacke" name="upper_jacket"/> + <texture_picker label="Alpha: Oben" name="upper_alpha"/> + <texture_picker label="Obere Tätowierung" name="upper_tattoo"/> + <texture_picker label="Unterkörper" name="lower-baked"/> + <texture_picker label="Unterkörperfarbe" name="lower_bodypaint"/> + <texture_picker label="Unterhose" name="lower_underpants"/> + <texture_picker label="Socken" name="lower_socks"/> + <texture_picker label="Schuhe" name="lower_shoes"/> + <texture_picker label="Hose" name="lower_pants"/> + <texture_picker label="Jacke" name="lower_jacket"/> + <texture_picker label="Alpha: Unten" name="lower_alpha"/> + <texture_picker label="Untere Tätowierung" name="lower_tattoo"/> + <texture_picker label="Rock" name="skirt-baked"/> + <texture_picker label="Rock" name="skirt"/> + </panel> </panel> </scroll_container> </floater> diff --git a/indra/newview/skins/default/xui/de/floater_buy_currency_html.xml b/indra/newview/skins/default/xui/de/floater_buy_currency_html.xml new file mode 100644 index 0000000000000000000000000000000000000000..38d3bdd77ff0cbd6099876572b56939eb958e024 --- /dev/null +++ b/indra/newview/skins/default/xui/de/floater_buy_currency_html.xml @@ -0,0 +1,2 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<floater name="floater_buy_currency_html" title="WÄHRUNG KAUFEN"/> diff --git a/indra/newview/skins/default/xui/de/floater_map.xml b/indra/newview/skins/default/xui/de/floater_map.xml index a9a314917720b3a2eb976c12b82ce58d0abafdef..d4358fa8e9ccbf2fbba38809427b6a8a9a0c98f6 100644 --- a/indra/newview/skins/default/xui/de/floater_map.xml +++ b/indra/newview/skins/default/xui/de/floater_map.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> -<floater name="Map" title="Minikarte"> +<floater name="Map" title=""> <floater.string name="mini_map_north"> N </floater.string> @@ -27,6 +27,9 @@ <floater.string name="ToolTipMsg"> [AGENT][REGION](Karte mit Doppelklick öffnen) </floater.string> + <floater.string name="mini_map_caption"> + MINI-KARTE + </floater.string> <text label="N" name="floater_map_north" text="N"> N </text> diff --git a/indra/newview/skins/default/xui/de/floater_moveview.xml b/indra/newview/skins/default/xui/de/floater_moveview.xml index b978322cefdf632e379bf52bbf185b3376bfc806..4333392582419ea7afa728ac68ee35ddf94b2798 100644 --- a/indra/newview/skins/default/xui/de/floater_moveview.xml +++ b/indra/newview/skins/default/xui/de/floater_moveview.xml @@ -6,18 +6,48 @@ <string name="walk_back_tooltip"> Rückwärts gehen (Nach-Unten-Pfeil oder S drücken) </string> + <string name="walk_left_tooltip"> + Nach links gehen (Umschalt + Links-Pfeil oder A drücken) + </string> + <string name="walk_right_tooltip"> + Nach rechts gehen (Umschalt + Rechts-Pfeil oder D drücken) + </string> <string name="run_forward_tooltip"> Vorwärts rennen (Nach-oben-Pfeil oder W drücken) </string> <string name="run_back_tooltip"> Rückwärts rennen (Nach-Unten-Pfeil oder S drücken) </string> + <string name="run_left_tooltip"> + Nach links drehen (Umschalt + Links-Pfeil oder A drücken) + </string> + <string name="run_right_tooltip"> + Nach rechts rennen (Umschalt + Rechts-Pfeil oder D drücken) + </string> <string name="fly_forward_tooltip"> Vorwärts fliegen (Nach-oben-Pfeil oder W drücken) </string> <string name="fly_back_tooltip"> Rückwärts fliegen (Nach-Unten-Pfeil oder S drücken) </string> + <string name="fly_left_tooltip"> + Nach links fliegen (Umschalt + Links-Pfeil oder A drücken) + </string> + <string name="fly_right_tooltip"> + Nach rechts fliegen (Umschalt + Rechts-Pfeil oder D drücken) + </string> + <string name="fly_up_tooltip"> + Nach oben fliegen, „E" drücken + </string> + <string name="fly_down_tooltip"> + Nach unten fliegen, „C" drücken + </string> + <string name="jump_tooltip"> + Hüpfen (E drücken) + </string> + <string name="crouch_tooltip"> + Ducken (C drücken) + </string> <string name="walk_title"> Gehen </string> @@ -28,10 +58,12 @@ Fliegen </string> <panel name="panel_actions"> - <button label="" label_selected="" name="turn left btn" tool_tip="Nach links (Links-Pfeil oder A drücken)"/> - <button label="" label_selected="" name="turn right btn" tool_tip="Nach rechts (Rechts-Pfeil oder D drücken)"/> <button label="" label_selected="" name="move up btn" tool_tip="Nach oben fliegen, „E" drücken"/> + <button label="" label_selected="" name="turn left btn" tool_tip="Nach links (Links-Pfeil oder A drücken)"/> + <joystick_slide name="move left btn" tool_tip="Nach links gehen (Umschalt + Links-Pfeil oder A drücken)"/> <button label="" label_selected="" name="move down btn" tool_tip="Nach unten fliegen, „C" drücken"/> + <button label="" label_selected="" name="turn right btn" tool_tip="Nach rechts (Rechts-Pfeil oder D drücken)"/> + <joystick_slide name="move right btn" tool_tip="Nach rechts fliegen (Umschalt + Rechts-Pfeil oder D drücken)"/> <joystick_turn name="forward btn" tool_tip="Vorwärts gehen (Nach-oben-Pfeil oder W drücken)"/> <joystick_turn name="backward btn" tool_tip="Rückwärts gehen (Nach-Unten-Pfeil oder S drücken)"/> </panel> diff --git a/indra/newview/skins/default/xui/de/floater_preview_gesture.xml b/indra/newview/skins/default/xui/de/floater_preview_gesture.xml index 48b1f1170c0d01ffe8c4c16ff13273989d1b2e6f..3a036fc441559bb6ca94405fc1f4e93295009cfe 100644 --- a/indra/newview/skins/default/xui/de/floater_preview_gesture.xml +++ b/indra/newview/skins/default/xui/de/floater_preview_gesture.xml @@ -24,9 +24,6 @@ <floater.string name="Title"> Gesten: [NAME] </floater.string> - <text name="name_text"> - Name: - </text> <text name="desc_label"> Beschreibung: </text> @@ -36,7 +33,7 @@ <text name="replace_text" tool_tip="Ersetzt den Auslösertext mit diesem Text. Wenn Sie zum Beispiel den Auslöser „hallo“ durch „wie geht's“ ersetzen, erscheint im Chat anstelle von „Ich wollte nur hallo sagen“ der Text „Ich wollte nur wie geht's sagen“ und die zugehörige Geste wird abgespielt."> Ersetzen mit: </text> - <line_editor name="replace_editor" tool_tip="Ersetzt den Auslösertext mit diesem Text. Wenn Sie zum Beispiel den Auslöser „hallo“ durch „wie geht's“ ersetzen, erscheint im Chat anstelle von „Ich wollte nur hallo sagen“ der Text „Ich wollte nur wie geht's sagen“ und die zugehörige Geste wird abgespielt." left_delta="94" width="160"/> + <line_editor left_delta="94" name="replace_editor" tool_tip="Ersetzt den Auslösertext mit diesem Text. Wenn Sie zum Beispiel den Auslöser „hallo“ durch „wie geht's“ ersetzen, erscheint im Chat anstelle von „Ich wollte nur hallo sagen“ der Text „Ich wollte nur wie geht's sagen“ und die zugehörige Geste wird abgespielt." width="160"/> <text name="key_label"> Tastenkürzel: </text> @@ -46,19 +43,22 @@ Bibliothek: </text> <scroll_list name="library_list" width="166"/> - <button label="Hinzufügen >>" name="add_btn" left_pad="6" width="94"/> + <button label="Hinzufügen >>" left_pad="6" name="add_btn" width="94"/> <text name="steps_label"> Schritte: </text> <button label="Nach oben" name="up_btn"/> <button label="Nach unten" name="down_btn"/> <button label="Entfernen" name="delete_btn"/> + <text name="options_text"> + (Optionen) + </text> <radio_group name="animation_trigger_type"> <radio_item label="Start" name="start"/> <radio_item label="Stopp" name="stop"/> </radio_group> <check_box label="bis alle Animationen beendet sind" name="wait_anim_check"/> - <check_box label="Zeit in Sekunden" name="wait_time_check"/> + <check_box label="Zeit in Sekunden:" name="wait_time_check"/> <text name="help_label"> Alle Schritte werden gleichzeitig ausgeführt, wenn keine Pausen hinzugefügt wurden. </text> diff --git a/indra/newview/skins/default/xui/de/floater_preview_notecard.xml b/indra/newview/skins/default/xui/de/floater_preview_notecard.xml index 62f9e1e9e5fe79dc8e8bd1be5c0903774bb258ce..14e666fd2256c28b740f82120515261554cc920d 100644 --- a/indra/newview/skins/default/xui/de/floater_preview_notecard.xml +++ b/indra/newview/skins/default/xui/de/floater_preview_notecard.xml @@ -9,9 +9,6 @@ <floater.string name="Title"> Notizkarte: [NAME] </floater.string> - <floater.string label="Speichern" label_selected="Speichern" name="Save"> - Speichern - </floater.string> <text name="desc txt"> Beschreibung: </text> @@ -19,4 +16,5 @@ Wird geladen... </text_editor> <button label="Speichern" label_selected="Speichern" name="Save"/> + <button label="Löschen" label_selected="Löschen" name="Delete"/> </floater> diff --git a/indra/newview/skins/default/xui/de/floater_snapshot.xml b/indra/newview/skins/default/xui/de/floater_snapshot.xml index a656ffb894fd0f6f7d7aa2491eaf0b3969508c6a..c014b8e040d32db2da95869d923b8f6e4dbac2f4 100644 --- a/indra/newview/skins/default/xui/de/floater_snapshot.xml +++ b/indra/newview/skins/default/xui/de/floater_snapshot.xml @@ -1,23 +1,75 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> -<floater name="Snapshot" title="Foto"> +<floater name="Snapshot" title="FOTO-ANZEIGE"> <floater.string name="unknown"> unbekannt </floater.string> + <radio_group label="Fototyp" name="snapshot_type_radio"> + <radio_item label="Email" name="postcard"/> + <radio_item label="Mein Inventar ([AMOUNT] L$)" name="texture"/> + <radio_item label="Auf meinem Computer speichern" name="local"/> + </radio_group> + <text name="file_size_label"> + [SIZE] KB + </text> <button label="Foto aktualisieren" name="new_snapshot_btn"/> - <line_editor label="Beschreibung" name="description"/> - <panel name="panel_snapshot_main"> - <button label="Foto freigeben" name="share"/> - <button label="Foto speichern" name="save"/> - <button label="Als Profilbild festlegen" name="set_profile_pic"/> - </panel> - <panel name="panel_snapshot_share"> - <button label="Ins Internet stellen" name="share_to_web"/> - <button label="Foto per E-Mail senden" name="share_to_email"/> - <button label="Zurück" name="cancel_share"/> - </panel> - <panel name="panel_snapshot_save"> - <button label="Objekt in meinem Inventar speichern" name="save_to_inventory"/> - <button label="Auf meinem Computer speichern" name="save_to_computer"/> - <button label="Zurück" name="cancel_save"/> - </panel> + <button label="Senden" name="send_btn"/> + <button label="Speichern ([AMOUNT] L$)" name="upload_btn"/> + <flyout_button label="Speichern" name="save_btn" tool_tip="Bild als Datei speichern"> + <flyout_button.item label="Speichern" name="save_item"/> + <flyout_button.item label="Speichern unter..." name="saveas_item"/> + </flyout_button> + <button label="Mehr" name="more_btn" tool_tip="Erweiterte Optionen"/> + <button label="Weniger" name="less_btn" tool_tip="Erweiterte Optionen"/> + <button label="Abbrechen" name="discard_btn"/> + <text name="type_label2"> + Größe + </text> + <text name="format_label"> + Format + </text> + <combo_box label="Auflösung" name="postcard_size_combo"> + <combo_box.item label="Aktuelles Fenster" name="CurrentWindow"/> + <combo_box.item label="640x480" name="640x480"/> + <combo_box.item label="800x600" name="800x600"/> + <combo_box.item label="1024x768" name="1024x768"/> + <combo_box.item label="Benutzerdefiniert" name="Custom"/> + </combo_box> + <combo_box label="Auflösung" name="texture_size_combo"> + <combo_box.item label="Aktuelles Fenster" name="CurrentWindow"/> + <combo_box.item label="Klein (128x128)" name="Small(128x128)"/> + <combo_box.item label="Mittel (256x256)" name="Medium(256x256)"/> + <combo_box.item label="Groß (512x512)" name="Large(512x512)"/> + <combo_box.item label="Benutzerdefiniert" name="Custom"/> + </combo_box> + <combo_box label="Auflösung" name="local_size_combo"> + <combo_box.item label="Aktuelles Fenster" name="CurrentWindow"/> + <combo_box.item label="320x240" name="320x240"/> + <combo_box.item label="640x480" name="640x480"/> + <combo_box.item label="800x600" name="800x600"/> + <combo_box.item label="1024x768" name="1024x768"/> + <combo_box.item label="1280x1024" name="1280x1024"/> + <combo_box.item label="1600x1200" name="1600x1200"/> + <combo_box.item label="Benutzerdefiniert" name="Custom"/> + </combo_box> + <combo_box label="Format" name="local_format_combo"> + <combo_box.item label="PNG" name="PNG"/> + <combo_box.item label="JPEG" name="JPEG"/> + <combo_box.item label="BMP" name="BMP"/> + </combo_box> + <spinner label="Breite" name="snapshot_width"/> + <spinner label="Größe" name="snapshot_height"/> + <check_box label="Seitenverhältnis beibehalten" name="keep_aspect_check"/> + <slider label="Bildqualität" name="image_quality_slider"/> + <text name="layer_type_label"> + Aufnehmen: + </text> + <combo_box label="Bildlayer" name="layer_types"> + <combo_box.item label="Farben" name="Colors"/> + <combo_box.item label="Tiefe" name="Depth"/> + </combo_box> + <check_box label="Schnittstelle" name="ui_check"/> + <check_box label="HUDs" name="hud_check"/> + <check_box label="Nach dem Speichern offen lassen" name="keep_open_check"/> + <check_box label="Frame einfrieren (Vollbild)" name="freeze_frame_check"/> + <check_box label="Automatisch aktualisieren" name="auto_snapshot_check"/> </floater> diff --git a/indra/newview/skins/default/xui/de/floater_tools.xml b/indra/newview/skins/default/xui/de/floater_tools.xml index c5c11faf931cd03eb111e49c194423e37207161c..12ae9898c326e82ebdae21a63cc1a29150229408 100644 --- a/indra/newview/skins/default/xui/de/floater_tools.xml +++ b/indra/newview/skins/default/xui/de/floater_tools.xml @@ -67,8 +67,8 @@ <text name="RenderingCost" tool_tip="Zeigt die errechneten Wiedergabekosten für dieses Objekt"> þ: [COUNT] </text> - <check_box name="checkbox uniform"/> - <text name="checkbox uniform label"> + <check_box label="" name="checkbox uniform"/> + <text label="Beide Seiten dehnen" name="checkbox uniform label"> Beide Seiten dehnen </text> <check_box initial_value="true" label="Texturen dehnen" name="checkbox stretch textures"/> diff --git a/indra/newview/skins/default/xui/de/floater_voice_effect.xml b/indra/newview/skins/default/xui/de/floater_voice_effect.xml index 8de0133eaddabbd9da8127ea493af2802f62df60..21d49a32fe5c004af9a86676d9cc2e9377b26e0e 100644 --- a/indra/newview/skins/default/xui/de/floater_voice_effect.xml +++ b/indra/newview/skins/default/xui/de/floater_voice_effect.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> -<floater label="Orte" name="voice_effects" title="VOICE-MORPHING AUSPROBIEREN"> +<floater label="Orte" name="voice_effects" title="VOICE MORPHING"> <string name="no_voice_effect"> (Kein Voice-Morphing) </string> @@ -12,18 +12,19 @@ <string name="new_voice_effect"> (Neu!) </string> + <text name="preview_text"> + Zur Vorschau + </text> <text name="status_text"> - Um die Voice-Morph-Effekte auszuprobieren, einfach auf die Schaltfläche „Aufnahme“ klicken und kurz ins Mikrofon sprechen. Klicken Sie dann auf einen beliebigen Effekt in der Liste, um zu hören, wie der Effekt Ihre Stimme verändert. - -Schließen Sie dieses Fenster, um wieder mit dem Voice-Chat in der Nähe verbunden zu werden. + Nehmen Sie Ihre Stimme auf, klicken Sie dann auf einen Effekt, um den Effekt auf Ihre Stimme anzuwenden. </text> - <button label="Aufnahme" name="record_btn" tool_tip="Nehmen Sie Ihre Stimme auf."/> + <button label="Aufnehmen" name="record_btn" tool_tip="Nehmen Sie Ihre Stimme auf."/> <button label="Stopp" name="record_stop_btn"/> <text name="voice_morphing_link"> - [[URL]Voice-Morphing abonnieren] + [[URL] Jetzt abonnieren] </text> <scroll_list name="voice_effect_list" tool_tip="Nehmen Sie Ihre Stimme auf und klicken Sie dann auf einen Effekt, um diesen auszuprobieren."> - <scroll_list.columns label="Voice-Morphing" name="name"/> + <scroll_list.columns label="Bezeichnung" name="name"/> <scroll_list.columns label="Gültig bis" name="expires"/> </scroll_list> </floater> diff --git a/indra/newview/skins/default/xui/de/menu_attachment_self.xml b/indra/newview/skins/default/xui/de/menu_attachment_self.xml index 3af69d2f31e7532b8a5b329d68affb02bcdb88b7..a47c633d577755376ad09e1ef8279236ee90f8de 100644 --- a/indra/newview/skins/default/xui/de/menu_attachment_self.xml +++ b/indra/newview/skins/default/xui/de/menu_attachment_self.xml @@ -3,11 +3,13 @@ <menu_item_call label="Berühren" name="Attachment Object Touch"/> <menu_item_call label="Bearbeiten" name="Edit..."/> <menu_item_call label="Abnehmen" name="Detach"/> - <menu_item_call label="Fallen lassen" name="Drop"/> <menu_item_call label="Aufstehen" name="Stand Up"/> - <menu_item_call label="Mein Aussehen" name="Appearance..."/> + <menu_item_call label="Outfit ändern" name="Change Outfit"/> + <menu_item_call label="Mein Outfit bearbeiten" name="Edit Outfit"/> + <menu_item_call label="Meine Form bearbeiten" name="Edit My Shape"/> <menu_item_call label="Meine Freunde" name="Friends..."/> <menu_item_call label="Meine Gruppen" name="Groups..."/> <menu_item_call label="Mein Profil" name="Profile..."/> <menu_item_call label="Fehler in Texturen beseitigen" name="Debug..."/> + <menu_item_call label="Fallen lassen" name="Drop"/> </context_menu> diff --git a/indra/newview/skins/default/xui/de/menu_avatar_self.xml b/indra/newview/skins/default/xui/de/menu_avatar_self.xml index d310d10ea5d09d70a2268196db6924fe1261031b..160703bcf31cfd1c260dde5030e4672ae56b362e 100644 --- a/indra/newview/skins/default/xui/de/menu_avatar_self.xml +++ b/indra/newview/skins/default/xui/de/menu_avatar_self.xml @@ -20,7 +20,9 @@ <context_menu label="Abnehmen â–¶" name="Object Detach"/> <menu_item_call label="Alles abnehmen" name="Detach All"/> </context_menu> - <menu_item_call label="Mein Aussehen" name="Appearance..."/> + <menu_item_call label="Outfit ändern" name="Chenge Outfit"/> + <menu_item_call label="Mein Outfit bearbeiten" name="Edit Outfit"/> + <menu_item_call label="Meine Form bearbeiten" name="Edit My Shape"/> <menu_item_call label="Meine Freunde" name="Friends..."/> <menu_item_call label="Meine Gruppen" name="Groups..."/> <menu_item_call label="Mein Profil" name="Profile..."/> diff --git a/indra/newview/skins/default/xui/de/menu_bottomtray.xml b/indra/newview/skins/default/xui/de/menu_bottomtray.xml index 3f12906adccb083a3515a7014ba84fbdac796524..6c4308286a6127315f61ef644ec6bba56a4d2564 100644 --- a/indra/newview/skins/default/xui/de/menu_bottomtray.xml +++ b/indra/newview/skins/default/xui/de/menu_bottomtray.xml @@ -4,6 +4,11 @@ <menu_item_check label="Schaltfläche Bewegungssteuerung" name="ShowMoveButton"/> <menu_item_check label="Schaltfläche Ansicht" name="ShowCameraButton"/> <menu_item_check label="Schaltfläche Foto" name="ShowSnapshotButton"/> + <menu_item_check label="Schaltfläche „Seitenleiste“" name="ShowSidebarButton"/> + <menu_item_check label="Schaltfläche „Bauen“" name="ShowBuildButton"/> + <menu_item_check label="Schaltfläche „Suchen“" name="ShowSearchButton"/> + <menu_item_check label="Schaltfläche „Karte“" name="ShowWorldMapButton"/> + <menu_item_check label="Schaltfläche „Minikarte“" name="ShowMiniMapButton"/> <menu_item_call label="Ausschneiden" name="NearbyChatBar_Cut"/> <menu_item_call label="Kopieren" name="NearbyChatBar_Copy"/> <menu_item_call label="Einfügen" name="NearbyChatBar_Paste"/> diff --git a/indra/newview/skins/default/xui/de/menu_inspect_self_gear.xml b/indra/newview/skins/default/xui/de/menu_inspect_self_gear.xml index a74c41bb0cef3870c25e04382ac386bd6d58ea69..b28e83c3e38aa2a7d03f57ea2d5bffa332a8f916 100644 --- a/indra/newview/skins/default/xui/de/menu_inspect_self_gear.xml +++ b/indra/newview/skins/default/xui/de/menu_inspect_self_gear.xml @@ -1,7 +1,7 @@ <?xml version="1.0" encoding="utf-8"?> <menu name="Gear Menu"> <menu_item_call label="Aufstehen" name="stand_up"/> - <menu_item_call label="Mein Aussehen" name="my_appearance"/> + <menu_item_call label="Outfit ändern" name="change_outfit"/> <menu_item_call label="Mein Profil" name="my_profile"/> <menu_item_call label="Meine Freunde" name="my_friends"/> <menu_item_call label="Meine Gruppen" name="my_groups"/> diff --git a/indra/newview/skins/default/xui/de/menu_inventory.xml b/indra/newview/skins/default/xui/de/menu_inventory.xml index f6139a0ea06f0c810e4b9a88b4537aa6f42723e2..dd49ab1c7e76a689c67b8d0bfdca88d698e3ebac 100644 --- a/indra/newview/skins/default/xui/de/menu_inventory.xml +++ b/indra/newview/skins/default/xui/de/menu_inventory.xml @@ -54,6 +54,7 @@ <menu_item_call label="Objekt löschen" name="Purge Item"/> <menu_item_call label="Objekt wiederherstellen" name="Restore Item"/> <menu_item_call label="Öffnen" name="Open"/> + <menu_item_call label="Original öffnen" name="Open Original"/> <menu_item_call label="Eigenschaften" name="Properties"/> <menu_item_call label="Umbenennen" name="Rename"/> <menu_item_call label="Asset-UUID kopieren" name="Copy Asset UUID"/> diff --git a/indra/newview/skins/default/xui/de/menu_outfit_tab.xml b/indra/newview/skins/default/xui/de/menu_outfit_tab.xml index 605dee9b3388310136c78f7e17da1b8a41d008df..32a65c96fc835f4b1b693fe689be14cf65d063be 100644 --- a/indra/newview/skins/default/xui/de/menu_outfit_tab.xml +++ b/indra/newview/skins/default/xui/de/menu_outfit_tab.xml @@ -4,6 +4,6 @@ <menu_item_call label="Anziehen - Aktuelles Outfit hinzufügen" name="wear_add"/> <menu_item_call label="Ausziehen - Aus aktuellem Outfit entfernen" name="take_off"/> <menu_item_call label="Outfit bearbeiten" name="edit"/> - <menu_item_call label="Umbenennen" name="rename"/> + <menu_item_call label="Outfit neu benennen" name="rename"/> <menu_item_call label="Outfit löschen" name="delete"/> </context_menu> diff --git a/indra/newview/skins/default/xui/de/menu_participant_list.xml b/indra/newview/skins/default/xui/de/menu_participant_list.xml index ca0d9f8c2deddea678d069e564e9ffcd63a4d3d6..d5281f0cb21a2fdbe2c6c090bbfa7600cb2449c5 100644 --- a/indra/newview/skins/default/xui/de/menu_participant_list.xml +++ b/indra/newview/skins/default/xui/de/menu_participant_list.xml @@ -14,8 +14,8 @@ <context_menu label="Moderator-Optionen >" name="Moderator Options"> <menu_item_check label="Text-Chat zulassen" name="AllowTextChat"/> <menu_item_call label="Diesen Teilnehmer stummschalten" name="ModerateVoiceMuteSelected"/> - <menu_item_call label="Alle anderen stummschalten" name="ModerateVoiceMuteOthers"/> <menu_item_call label="Stummschaltung für diesen Teilnehmer aufheben" name="ModerateVoiceUnMuteSelected"/> - <menu_item_call label="Stummschaltung für alle anderen aufheben" name="ModerateVoiceUnMuteOthers"/> + <menu_item_call label="Alle stummschalten" name="ModerateVoiceMute"/> + <menu_item_call label="Alle freischalten" name="ModerateVoiceUnmute"/> </context_menu> </context_menu> diff --git a/indra/newview/skins/default/xui/de/menu_topinfobar.xml b/indra/newview/skins/default/xui/de/menu_topinfobar.xml new file mode 100644 index 0000000000000000000000000000000000000000..5b0a724244e583653280572d2b56a18c5e2a5fce --- /dev/null +++ b/indra/newview/skins/default/xui/de/menu_topinfobar.xml @@ -0,0 +1,7 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<menu name="menu_topinfobar"> + <menu_item_check label="Koordinaten anzeigen" name="Show Coordinates"/> + <menu_item_check label="Parzellen-Eigenschaften anzeigen" name="Show Parcel Properties"/> + <menu_item_call label="Landmarke" name="Landmark"/> + <menu_item_call label="Kopieren" name="Copy"/> +</menu> diff --git a/indra/newview/skins/default/xui/de/menu_viewer.xml b/indra/newview/skins/default/xui/de/menu_viewer.xml index 38ef1b0421c8832e40b6e9f2ff5782cf4bbe7335..b9b6a8ed505f1d7be593fc5aad95bcff8669cd50 100644 --- a/indra/newview/skins/default/xui/de/menu_viewer.xml +++ b/indra/newview/skins/default/xui/de/menu_viewer.xml @@ -7,6 +7,7 @@ </menu_item_call> <menu_item_call label="L$ kaufen" name="Buy and Sell L$"/> <menu_item_call label="Mein Profil" name="Profile"/> + <menu_item_call label="Outfit ändern" name="ChangeOutfit"/> <menu_item_check label="Mein Inventar" name="Inventory"/> <menu_item_check label="Mein Inventar" name="ShowSidetrayInventory"/> <menu_item_check label="Meine Gesten" name="Gestures"/> @@ -169,6 +170,7 @@ <menu_item_check label="Flexible Objekte" name="Flexible Objects"/> </menu> <menu_item_check label="Mehrere Threads ausführen" name="Run Multiple Threads"/> + <menu_item_check label="Plugin Read Thread verwenden" name="Use Plugin Read Thread"/> <menu_item_call label="Gruppen-Cache löschen" name="ClearGroupCache"/> <menu_item_check label="Weiche Mausbewegung" name="Mouse Smoothing"/> <menu label="Tastaturkürzel" name="Shortcuts"> @@ -176,6 +178,7 @@ <menu_item_check label="Suchen" name="Search"/> <menu_item_call label="Tasten freigeben" name="Release Keys"/> <menu_item_call label="UI-Größe auf Standard setzen" name="Set UI Size to Default"/> + <menu_item_check label="Erweitert-Menü anzeigen - veraltetet" name="Show Advanced Menu - legacy shortcut"/> <menu_item_check label="Immer rennen" name="Always Run"/> <menu_item_check label="Fliegen" name="Fly"/> <menu_item_call label="Fenster schließen" name="Close Window"/> diff --git a/indra/newview/skins/default/xui/de/menu_wearable_list_item.xml b/indra/newview/skins/default/xui/de/menu_wearable_list_item.xml index a4bf75a497fcfb9625eb24ef77fc0d4dcff2e395..027a68e72e3b0e9f9949d16f48529c3059977592 100644 --- a/indra/newview/skins/default/xui/de/menu_wearable_list_item.xml +++ b/indra/newview/skins/default/xui/de/menu_wearable_list_item.xml @@ -1,6 +1,6 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <context_menu name="Outfit Wearable Context Menu"> - <menu_item_call label="Anziehen" name="wear"/> + <menu_item_call label="Ersetzen" name="wear"/> <menu_item_call label="Hinzufügen" name="wear_add"/> <menu_item_call label="Ausziehen / Abnehmen" name="take_off_or_detach"/> <menu_item_call label="Abnehmen" name="detach"/> diff --git a/indra/newview/skins/default/xui/de/menu_wearing_gear.xml b/indra/newview/skins/default/xui/de/menu_wearing_gear.xml new file mode 100644 index 0000000000000000000000000000000000000000..d994571f016739c8b99bb0f792edd80b571234d9 --- /dev/null +++ b/indra/newview/skins/default/xui/de/menu_wearing_gear.xml @@ -0,0 +1,4 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<menu name="Gear Wearing"> + <menu_item_call label="Outfit bearbeiten" name="edit"/> +</menu> diff --git a/indra/newview/skins/default/xui/de/menu_wearing_tab.xml b/indra/newview/skins/default/xui/de/menu_wearing_tab.xml new file mode 100644 index 0000000000000000000000000000000000000000..d690572c8e7ae73bc6dd82009f86381bd6099462 --- /dev/null +++ b/indra/newview/skins/default/xui/de/menu_wearing_tab.xml @@ -0,0 +1,4 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<context_menu name="Wearing"> + <menu_item_call label="Outfit bearbeiten" name="edit"/> +</context_menu> diff --git a/indra/newview/skins/default/xui/de/notifications.xml b/indra/newview/skins/default/xui/de/notifications.xml index 408ece9690e298026ca30afbefc3f32eab6946e8..fb75f62988f8e5854d19da17977fe78732c3aa60 100644 --- a/indra/newview/skins/default/xui/de/notifications.xml +++ b/indra/newview/skins/default/xui/de/notifications.xml @@ -333,6 +333,9 @@ Sie benötigen ein Benutzerkonto, um [SECOND_LIFE] betreten zu können. Möchten </url> <usetemplate name="okcancelbuttons" notext="Erneut versuchen" yestext="Neues Benutzerkonto anlegen"/> </notification> + <notification name="InvalidCredentialFormat"> + Sie müssen den Vor- und Nachnamen Ihres Avatars in das Feld Benutzername eingeben, und sich dann erneut anmelden. + </notification> <notification name="AddClassified"> Anzeigen werden im Suchverzeichnis im Abschnitt „Anzeigen" und auf [http://secondlife.com/community/classifieds secondlife.com] für eine Woche angezeigt. Füllen Sie Ihre Anzeige aus und klicken Sie auf 'Veröffentlichen...', um sie zum Verzeichnis hinzuzufügen. @@ -618,6 +621,10 @@ Erwartet wurde [VALIDS] <notification name="CannotEncodeFile"> Datei konnte nicht kodiert werden: [FILE] </notification> + <notification name="CorruptedProtectedDataStore"> + Wir können Ihren Benutzernamen und Ihr Kennwort nicht automatisch ausfüllen. Dies kann passieren, wenn Sie die Netzwerkeinstellungen ändern. + <usetemplate name="okbutton" yestext="OK"/> + </notification> <notification name="CorruptResourceFile"> Ressourcendatei beschädigt: [FILE] </notification> @@ -1003,6 +1010,12 @@ auf ALLEN LÄNDERN in diesem Sim LÖSCHEN? Geben sie einen höheren Betrag ein. </notification> + <notification name="ConfirmItemDeleteHasLinks"> + Mindestens eines Ihrer ausgewählten Objekte verfügt über verknüpfte Objekte. Wenn Sie dieses Objekt löschen, funktionieren die Verknüpfungen nicht mehr. Wir empfehlen Ihnen daher, diese Verknüpfungen zuerst zu löschen. + +Möchten Sie diese Objekte wirklich löschen? + <usetemplate name="okcancelbuttons" notext="Abbrechen" yestext="OK"/> + </notification> <notification name="ConfirmObjectDeleteLock"> Mindestens ein ausgewähltes Objekt ist gesperrt. @@ -1153,6 +1166,42 @@ Bitte wählen Sie einen männlichen oder weiblichen Avatar. Sie können sich später noch umentscheiden. <usetemplate name="okcancelbuttons" notext="Weiblich" yestext="Männlich"/> </notification> + <notification name="CantTeleportToGrid"> + Konnte nicht zu [SLURL] teleportieren, da dieser Standort sich auf einem anderen Grid ([GRID]) befindet. Sie befinden sich im Moment auf dem Grid ([CURRENT_GRID]). Bitte schließen Sie Ihren Viewer und versuchen Sie es erneut. + <usetemplate name="okbutton" yestext="OK"/> + </notification> + <notification name="GeneralCertificateError"> + Eine Verbindung zum Server konnte nicht hergestellt werden. +[REASON] + +SubjektName: [SUBJECT_NAME_STRING] +Herausgeber: [ISSUER_NAME_STRING] +Gültig ab: [VALID_FROM] +Gültig bis: [VALID_TO] +MD5 Fingerabdruck: [SHA1_DIGEST] +SHA1 Fingerabdruck: [MD5_DIGEST] +Verwendung: [KEYUSAGE] +Erweiterte Verwendung: [EXTENDEDKEYUSAGE] +Identifikation: [SUBJECTKEYIDENTIFIER] + <usetemplate name="okbutton" yestext="OK"/> + </notification> + <notification name="TrustCertificateError"> + Die Zertifizierungsautorität für diesen Server ist unbekannt. + +Zertifikatsinformation: +SubjektName: [SUBJECT_NAME_STRING] +Herausgeber: [ISSUER_NAME_STRING] +Gültig ab: [VALID_FROM] +Gültig bis: [VALID_TO] +MD5 Fingerabdruck: [SHA1_DIGEST] +SHA1 Fingerabdruck: [MD5_DIGEST] +Verwendung: [KEYUSAGE] +Erweiterte Verwendung: [EXTENDEDKEYUSAGE] +Identifikation: [SUBJECTKEYIDENTIFIER] + +Möchten Sie dieser Autorität vertrauen? + <usetemplate name="okcancelbuttons" notext="Abbrechen" yestext="Vertrauen"/> + </notification> <notification name="NotEnoughCurrency"> [NAME] [PRICE] L$ Sie haben nicht genügend L$, um diese Aktion auszuführen. </notification> @@ -2660,6 +2709,9 @@ Für folgende Einwohner: <notification name="ItemsShared"> Objekte wurden erfolgreich freigegeben. </notification> + <notification name="DeedToGroupFail"> + Ãœbertragung an Gruppe ist fehlgeschlagen. + </notification> <notification name="AvatarRezNotification"> (Seit [EXISTENCE] Sekunden inworld ) Avatar '[NAME]' wurde in [TIME] Sekunden gerezzt. @@ -2672,6 +2724,26 @@ Ihr Outfit wurde in [TIME] Sekunden gebacken. (Seit [EXISTENCE] Sekunden inworld ) Nach [TIME] Sekunden wurde eine Aktualisierung Ihres Aussehens gesendet. [STATUS] + </notification> + <notification name="AvatarRezCloudNotification"> + (Seit [EXISTENCE] Sekunden inworld ) +Avatar '[NAME]' wird als Wolke angezeigt. + </notification> + <notification name="AvatarRezArrivedNotification"> + (Seit [EXISTENCE] Sekunden inworld ) +Avatar '[NAME]' wird angezeigt. + </notification> + <notification name="AvatarRezLeftCloudNotification"> + (Seit [EXISTENCE] Sekunden inworld ) +Avatar '[NAME]' hat nach [TIME] Sekunden als Wolke die Welt verlassen. + </notification> + <notification name="AvatarRezEnteredAppearanceNotification"> + (Seit [EXISTENCE] Sekunden inworld ) +Avatar '[NAME]' befindet sich im Modus „Aussehen bearbeiten". + </notification> + <notification name="AvatarRezLeftAppearanceNotification"> + (Seit [EXISTENCE] Sekunden inworld ) +Avatar '[NAME]' hat Modus „Aussehen bearbeiten" verlassen. </notification> <notification name="NoConnect"> Es gibt Probleme mit der Verbindung mit [PROTOCOL] [HOSTID]. @@ -2691,12 +2763,25 @@ Bitte überprüfen Sie Ihr Netzwerk- und Firewall-Setup. <button name="OK" text="OK"/> </form> </notification> + <notification name="AvatarRezLeftNotification"> + (Seit [EXISTENCE] Sekunden inworld ) +Avatar '[NAME]' hat als vollständig gerezzter Avatar die Welt verlassen. + </notification> <notification name="AvatarRezSelfBakeNotification"> (Seit [EXISTENCE] Sekunden inworld ) Die [RESOLUTION]-gebakene Textur für '[BODYREGION]' wurde in [TIME] Sekunden hochgeladen. </notification> + <notification name="ConfirmLeaveCall"> + Möchten Sie dieses Gespräch wirklich verlassen ? + <usetemplate ignoretext="Bestätigen, bevor ich den Anruf verlasse." name="okcancelignore" notext="Nein" yestext="Ja"/> + </notification> <notification name="ConfirmMuteAll"> - <usetemplate ignoretext="Confirm before I mute all participants in a group call" name="okcancelignore" notext="Abbrechen" yestext="OK"/> + Die von Ihnen ausgewählten Einstellungen werden alle Teilnehmer eines Gruppengespräches stummschalten. +Dies bedeutet, dass alle Einwohner, die später dem Gespräch beitreten, +auch dann stummgeschaltet werden, wenn Sie den Anruf verlassen haben. + +Alle stummschalten? + <usetemplate ignoretext="Bestätigen, bevor alle Teilnehmer in einem Gruppengespräch stummgeschaltet werden." name="okcancelignore" notext="Abbrechen" yestext="OK"/> </notification> <global name="UnsupportedCPU"> - Ihre CPU-Geschwindigkeit entspricht nicht den Mindestanforderungen. diff --git a/indra/newview/skins/default/xui/de/panel_body_parts_list_item.xml b/indra/newview/skins/default/xui/de/panel_body_parts_list_item.xml new file mode 100644 index 0000000000000000000000000000000000000000..799586f021e1537159a31a56df91b4ae068fb024 --- /dev/null +++ b/indra/newview/skins/default/xui/de/panel_body_parts_list_item.xml @@ -0,0 +1,8 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<panel name="wearable_item"> + <text name="item_name" value="..."/> + <panel name="btn_lock" tool_tip="Ihnen fehlt die Berechtigung zum Bearbeiten."/> + <panel name="btn_edit_panel"> + <button name="btn_edit" tool_tip="Diese Form bearbeiten"/> + </panel> +</panel> diff --git a/indra/newview/skins/default/xui/de/panel_bodyparts_list_button_bar.xml b/indra/newview/skins/default/xui/de/panel_bodyparts_list_button_bar.xml new file mode 100644 index 0000000000000000000000000000000000000000..4d7e65405a32ac69308ad5e65e2bc532b844c91e --- /dev/null +++ b/indra/newview/skins/default/xui/de/panel_bodyparts_list_button_bar.xml @@ -0,0 +1,5 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<panel name="clothing_list_button_bar_panel"> + <button label="Austauschen" name="switch_btn"/> + <button label="Einkaufen >" name="bodyparts_shop_btn"/> +</panel> diff --git a/indra/newview/skins/default/xui/de/panel_bottomtray.xml b/indra/newview/skins/default/xui/de/panel_bottomtray.xml index 83f67344cac263743d8a88a2a14731cd985d7b89..ea15c88380205654b7ff25766df105625c8de509 100644 --- a/indra/newview/skins/default/xui/de/panel_bottomtray.xml +++ b/indra/newview/skins/default/xui/de/panel_bottomtray.xml @@ -1,15 +1,11 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <panel name="bottom_tray"> - <string name="SpeakBtnToolTip"> - Schaltet Mikrofon ein/aus - </string> - <string name="VoiceControlBtnToolTip"> - Voice-Chat-Steuerung anzeigen/ausblenden - </string> + <string name="SpeakBtnToolTip" value="Schaltet Mikrofon ein/aus"/> + <string name="VoiceControlBtnToolTip" value="Voice-Chat-Steuerung anzeigen/ausblenden"/> <layout_stack name="toolbar_stack"> <layout_panel name="speak_panel"> <talk_button name="talk"> - <speak_button label="Sprechen" label_selected="Sprechen" name="speak_btn" /> + <speak_button label="Sprechen" label_selected="Sprechen" name="speak_btn"/> </talk_button> </layout_panel> <layout_panel name="gesture_panel"> @@ -24,6 +20,21 @@ <layout_panel name="snapshot_panel"> <button label="" name="snapshots" tool_tip="Foto machen"/> </layout_panel> + <layout_panel name="sidebar_btn_panel"> + <button label="Seitenleiste" name="sidebar_btn" tool_tip="Seitenleiste anzeigen/ausblenden"/> + </layout_panel> + <layout_panel name="build_btn_panel"> + <button label="Bauen" name="build_btn" tool_tip="Bauwerkzeuge ein-/ausblenden"/> + </layout_panel> + <layout_panel name="search_btn_panel"> + <button label="Suche" name="search_btn" tool_tip="Suche anzeigen/ausblenden"/> + </layout_panel> + <layout_panel name="world_map_btn_panel"> + <button label="Karte" name="world_map_btn" tool_tip="Karte ein-/ausblenden"/> + </layout_panel> + <layout_panel name="mini_map_btn_panel"> + <button label="Minikarte" name="mini_map_btn" tool_tip="Minikarte ein-/ausblenden"/> + </layout_panel> <layout_panel name="im_well_panel"> <chiclet_im_well name="im_well"> <button name="Unread IM messages" tool_tip="IMs"/> diff --git a/indra/newview/skins/default/xui/de/panel_clothing_list_button_bar.xml b/indra/newview/skins/default/xui/de/panel_clothing_list_button_bar.xml new file mode 100644 index 0000000000000000000000000000000000000000..fc45c9ce79b4bfa333f5bfedae5b286468305c5d --- /dev/null +++ b/indra/newview/skins/default/xui/de/panel_clothing_list_button_bar.xml @@ -0,0 +1,5 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<panel name="clothing_list_button_bar_panel"> + <button label="Hinzufügen +" name="add_btn"/> + <button label="Einkaufen >" name="clothing_shop_btn"/> +</panel> diff --git a/indra/newview/skins/default/xui/de/panel_clothing_list_item.xml b/indra/newview/skins/default/xui/de/panel_clothing_list_item.xml new file mode 100644 index 0000000000000000000000000000000000000000..945acb02d7e5319686ec845582a91d7f0f960a75 --- /dev/null +++ b/indra/newview/skins/default/xui/de/panel_clothing_list_item.xml @@ -0,0 +1,9 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<panel name="wearable_item"> + <button name="btn_delete" tool_tip="Von Outfit entfernen"/> + <text name="item_name" value="..."/> + <panel name="btn_lock" tool_tip="Ihnen fehlt die Berechtigung zum Bearbeiten."/> + <panel name="btn_edit_panel"> + <button name="btn_edit" tool_tip="Dieses tragbare Objekt bearbeiten"/> + </panel> +</panel> diff --git a/indra/newview/skins/default/xui/de/panel_cof_wearables.xml b/indra/newview/skins/default/xui/de/panel_cof_wearables.xml new file mode 100644 index 0000000000000000000000000000000000000000..12294a43ce77988863fe7b5b990b09291fdc873d --- /dev/null +++ b/indra/newview/skins/default/xui/de/panel_cof_wearables.xml @@ -0,0 +1,8 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<panel name="cof_wearables"> + <accordion name="cof_wearables_accordion"> + <accordion_tab name="tab_attachments" title="Anhänge"/> + <accordion_tab name="tab_clothing" title="Kleidung"/> + <accordion_tab name="tab_body_parts" title="Körperteile"/> + </accordion> +</panel> diff --git a/indra/newview/skins/default/xui/de/panel_deletable_wearable_list_item.xml b/indra/newview/skins/default/xui/de/panel_deletable_wearable_list_item.xml new file mode 100644 index 0000000000000000000000000000000000000000..a27252e23e9ef01120fa3bf1d50a26598edf2070 --- /dev/null +++ b/indra/newview/skins/default/xui/de/panel_deletable_wearable_list_item.xml @@ -0,0 +1,5 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<panel name="deletable_wearable_item"> + <button name="btn_delete" tool_tip="Von Outfit entfernen"/> + <text name="item_name" value="..."/> +</panel> diff --git a/indra/newview/skins/default/xui/de/panel_dummy_clothing_list_item.xml b/indra/newview/skins/default/xui/de/panel_dummy_clothing_list_item.xml new file mode 100644 index 0000000000000000000000000000000000000000..b7ad1bdc1b90eba45134523cd225824053ce4ccf --- /dev/null +++ b/indra/newview/skins/default/xui/de/panel_dummy_clothing_list_item.xml @@ -0,0 +1,7 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<panel name="dummy_clothing_item"> + <text name="item_name" value="..."/> + <panel name="btn_add_panel"> + <button name="btn_add" tool_tip="Weitere Artikel dieser Art hinzufügen"/> + </panel> +</panel> diff --git a/indra/newview/skins/default/xui/de/panel_edit_shape.xml b/indra/newview/skins/default/xui/de/panel_edit_shape.xml index d04dba7a3bece0c45eaee08d3b3abbffd1444278..80d3b29cadbea1633f1d9f73c05b34c1398746cd 100644 --- a/indra/newview/skins/default/xui/de/panel_edit_shape.xml +++ b/indra/newview/skins/default/xui/de/panel_edit_shape.xml @@ -9,6 +9,7 @@ <string name="height"> Höhe: </string> + <text name="avatar_height"/> <panel label="Hemd" name="accordion_panel"> <accordion name="wearable_accordion"> <accordion_tab name="shape_body_tab" title="Körper"/> diff --git a/indra/newview/skins/default/xui/de/panel_edit_tattoo.xml b/indra/newview/skins/default/xui/de/panel_edit_tattoo.xml index 12649e925130f68b309b9463d611dc5af96593a8..830c7b0bb8d2ebc58e3e19ad32af44895298626b 100644 --- a/indra/newview/skins/default/xui/de/panel_edit_tattoo.xml +++ b/indra/newview/skins/default/xui/de/panel_edit_tattoo.xml @@ -4,5 +4,6 @@ <texture_picker label="Kopftattoo" name="Head Tattoo" tool_tip="Zum Auswählen eines Bildes hier klicken" width="80"/> <texture_picker label="Obere Tattoos" name="Upper Tattoo" tool_tip="Zum Auswählen eines Bildes hier klicken" width="80"/> <texture_picker label="Untere Tattoos" name="Lower Tattoo" tool_tip="Zum Auswählen eines Bildes hier klicken" width="80"/> + <color_swatch label="Farbe/Ton" name="Color/Tint" tool_tip="Klicken Sie hier, um die Farbauswahl zu öffnen"/> </panel> </panel> diff --git a/indra/newview/skins/default/xui/de/panel_edit_wearable.xml b/indra/newview/skins/default/xui/de/panel_edit_wearable.xml index 7294a0b34fb89337a1e13300face7b107ad97760..faeea3a5de7d9c183ed5fc8c5858bf4cd50f7fc3 100644 --- a/indra/newview/skins/default/xui/de/panel_edit_wearable.xml +++ b/indra/newview/skins/default/xui/de/panel_edit_wearable.xml @@ -90,12 +90,19 @@ <string name="tattoo_desc_text"> Tätowierung: </string> + <labeled_back_button label="Speichern" name="back_btn" tool_tip="Zurück zu Outfit bearbeiten"/> <text name="edit_wearable_title" value="Form bearbeiten"/> <panel label="Hemd" name="wearable_type_panel"> <text name="description_text" value="Form:"/> + <radio_group name="sex_radio"> + <radio_item label="" name="sex_male" tool_tip="Männlich" value="1"/> + <radio_item label="" name="sex_female" tool_tip="Weiblich" value="0"/> + </radio_group> + <icon name="male_icon" tool_tip="Männlich"/> + <icon name="female_icon" tool_tip="Weiblich"/> </panel> <panel name="button_panel"> <button label="Speichern unter" name="save_as_button"/> - <button label="Zurücksetzen" name="revert_button"/> + <button label="Änderungen rückgängig machen" name="revert_button"/> </panel> </panel> diff --git a/indra/newview/skins/default/xui/de/panel_group_land_money.xml b/indra/newview/skins/default/xui/de/panel_group_land_money.xml index 0c899469874596504e1611a50d9e6f8018ac373f..125bf1436e243a05c28726bae9d8a21f919327be 100644 --- a/indra/newview/skins/default/xui/de/panel_group_land_money.xml +++ b/indra/newview/skins/default/xui/de/panel_group_land_money.xml @@ -6,6 +6,9 @@ <panel.string name="cant_view_group_land_text"> Sie sind nicht berechtigt, Landeigentum der Gruppe anzuzeigen. </panel.string> + <panel.string name="epmty_view_group_land_text"> + Keine Einträge + </panel.string> <panel.string name="cant_view_group_accounting_text"> Sie sind nicht berechtigt, die Finanzinformationen der Gruppe anzuzeigen. </panel.string> diff --git a/indra/newview/skins/default/xui/de/panel_group_notices.xml b/indra/newview/skins/default/xui/de/panel_group_notices.xml index cc5664bd97d09b52925e06bbff1a03892bd3f7ca..f45b5ea7af3d8f7d68c2c9aa4e0933dde3b1d972 100644 --- a/indra/newview/skins/default/xui/de/panel_group_notices.xml +++ b/indra/newview/skins/default/xui/de/panel_group_notices.xml @@ -39,6 +39,7 @@ Maximal 200 pro Gruppe täglich <text name="string"> Das Objekt hierhin ziehen und ablegen, um es anzuhängen: </text> + <button label="Inventar" name="open_inventory" tool_tip="Inventar öffnen"/> <button label="Entfernen" label_selected="Anhang entfernen" name="remove_attachment" tool_tip="Anhang von Ihrer Benachrichtigung entfernen"/> <button label="Senden" label_selected="Senden" name="send_notice"/> <group_drop_target name="drop_target" tool_tip="Ziehen Sie ein Objekt aus Ihrem Inventar auf dieses Feld, um es mit dieser Mitteilung zu versenden. Um das Objekt anhängen zu können, müssen Sie die Erlaubnis zum Kopieren und Ãœbertragen besitzen."/> diff --git a/indra/newview/skins/default/xui/de/panel_login.xml b/indra/newview/skins/default/xui/de/panel_login.xml index 2a6ea42c735df0f03a1da720f72398dcfe22c9a3..0f02de866b9a91a0a8f96b76cb8c4fe18d4335db 100644 --- a/indra/newview/skins/default/xui/de/panel_login.xml +++ b/indra/newview/skins/default/xui/de/panel_login.xml @@ -8,18 +8,15 @@ </panel.string> <layout_stack name="login_widgets"> <layout_panel name="login"> - <text name="first_name_text"> - Vorname: + <text name="username_text"> + Benutzername: </text> - <line_editor label="Vorname" name="first_name_edit" tool_tip="[SECOND_LIFE] Vorname"/> - <text name="last_name_text"> - Nachname: - </text> - <line_editor label="Nachname" name="last_name_edit" tool_tip="[SECOND_LIFE] Nachname"/> + <line_editor label="Benutzername" name="username_edit" tool_tip="[SECOND_LIFE]-Benutzername"/> <text name="password_text"> Kennwort: </text> <check_box label="Kennwort merken" name="remember_check"/> + <button label="Anmelden" name="connect_btn"/> <text name="start_location_text"> Hier anfangen: </text> @@ -28,7 +25,6 @@ <combo_box.item label="Mein Zuhause" name="MyHome"/> <combo_box.item label="<Region eingeben>" name="Typeregionname"/> </combo_box> - <button label="Anmelden" name="connect_btn"/> </layout_panel> <layout_panel name="links"> <text name="create_new_account_text"> diff --git a/indra/newview/skins/default/xui/de/panel_main_inventory.xml b/indra/newview/skins/default/xui/de/panel_main_inventory.xml index d3eb9ae04c2ae0b5bfe0c9556657997a6170e7ab..2f00782ef081358521995937a24223057b7fffdb 100644 --- a/indra/newview/skins/default/xui/de/panel_main_inventory.xml +++ b/indra/newview/skins/default/xui/de/panel_main_inventory.xml @@ -9,62 +9,20 @@ <text name="ItemcountText"> Objekte: </text> - <menu_bar name="Inventory Menu"> - <menu label="Datei" name="File"> - <menu_item_call label="Öffnen" name="Open"/> - <menu label="Hochladen" name="upload"> - <menu_item_call label="Bild ([COST] L$)..." name="Upload Image"/> - <menu_item_call label="Sound ([COST] L$)..." name="Upload Sound"/> - <menu_item_call label="Animation ([COST] L$)..." name="Upload Animation"/> - <menu_item_call label="Mehrfach-Upload ([COST] L$ pro Datei)..." name="Bulk Upload"/> - </menu> - <menu_item_call label="Neues Fenster" name="New Window"/> - <menu_item_call label="Filter anzeigen" name="Show Filters"/> - <menu_item_call label="Filter zurücksetzen" name="Reset Current"/> - <menu_item_call label="Alle Ordner schließen" name="Close All Folders"/> - <menu_item_call label="Papierkorb ausleeren" name="Empty Trash"/> - <menu_item_call label="Fundstücke ausleeren" name="Empty Lost And Found"/> - </menu> - <menu label="Erstellen" name="Create"> - <menu_item_call label="Neuer Ordner" name="New Folder"/> - <menu_item_call label="Neues Skript" name="New Script"/> - <menu_item_call label="Neue Notizkarte" name="New Note"/> - <menu_item_call label="Neue Geste" name="New Gesture"/> - <menu label="Neue Kleider" name="New Clothes"> - <menu_item_call label="Neues Hemd" name="New Shirt"/> - <menu_item_call label="Neue Hose" name="New Pants"/> - <menu_item_call label="Neue Schuhe" name="New Shoes"/> - <menu_item_call label="Neue Socken" name="New Socks"/> - <menu_item_call label="Neue Jacke" name="New Jacket"/> - <menu_item_call label="Neuer Rock" name="New Skirt"/> - <menu_item_call label="Neue Handschuhe" name="New Gloves"/> - <menu_item_call label="Neues Unterhemd" name="New Undershirt"/> - <menu_item_call label="Neue Unterhose" name="New Underpants"/> - <menu_item_call label="Neues Alpha" name="New Alpha"/> - <menu_item_call label="Neue Tätowierung" name="New Tattoo"/> - </menu> - <menu label="Neue Körperteile" name="New Body Parts"> - <menu_item_call label="Neue Form/Gestalt" name="New Shape"/> - <menu_item_call label="Neue Haut" name="New Skin"/> - <menu_item_call label="Neues Haar" name="New Hair"/> - <menu_item_call label="Neue Augen" name="New Eyes"/> - </menu> - </menu> - <menu label="Sortieren" name="Sort"> - <menu_item_check label="Nach Name" name="By Name"/> - <menu_item_check label="Nach Datum" name="By Date"/> - <menu_item_check label="Ordner immer nach Namen" name="Folders Always By Name"/> - <menu_item_check label="Systemordner nach oben" name="System Folders To Top"/> - </menu> - </menu_bar> <filter_editor label="Inventar filtern" name="inventory search editor"/> <tab_container name="inventory filter tabs"> <inventory_panel label="MEIN INVENTAR" name="All Items"/> - <inventory_panel label="AKTUELL" name="Recent Items"/> + <recent_inventory_panel label="AKTUELL" name="Recent Items"/> </tab_container> - <panel name="bottom_panel"> - <button name="options_gear_btn" tool_tip="Zusätzliche Optionen anzeigen"/> - <button name="add_btn" tool_tip="Neues Objekt hinzufügen"/> - <dnd_button name="trash_btn" tool_tip="Auswahl löschen"/> - </panel> + <layout_stack name="bottom_panel"> + <layout_panel name="options_gear_btn_panel"> + <button name="options_gear_btn" tool_tip="Zusätzliche Optionen anzeigen"/> + </layout_panel> + <layout_panel name="add_btn_panel"> + <button name="add_btn" tool_tip="Neues Objekt hinzufügen"/> + </layout_panel> + <layout_panel name="trash_btn_panel"> + <dnd_button name="trash_btn" tool_tip="Auswahl löschen"/> + </layout_panel> + </layout_stack> </panel> diff --git a/indra/newview/skins/default/xui/de/panel_outfit_edit.xml b/indra/newview/skins/default/xui/de/panel_outfit_edit.xml index 91ba94b3d609478174d8c23b0d047aad17aca42e..00a79e6bb3fc1b873fb952bd6a2cb6d4d14499b1 100644 --- a/indra/newview/skins/default/xui/de/panel_outfit_edit.xml +++ b/indra/newview/skins/default/xui/de/panel_outfit_edit.xml @@ -2,6 +2,8 @@ <!-- Side tray Outfit Edit panel --> <panel label="Outfit bearbeiten" name="outfit_edit"> <string name="No Outfit" value="Kein Outfit"/> + <string name="unsaved_changes" value="Ungespeicherte Änderungen"/> + <string name="now_editing" value="Wird bearbeitet"/> <panel.string name="not_available"> k.A. </panel.string> @@ -11,7 +13,9 @@ <string name="Filter.All" value="Alle"/> <string name="Filter.Clothes/Body" value="Kleider/Körper"/> <string name="Filter.Objects" value="Objekte"/> - <string name="Filter.Custom" value="Benutzerspezifischer Filter"/> + <string name="Filter.Clothing" value="Kleidung"/> + <string name="Filter.Bodyparts" value="Körperteile"/> + <string name="replace_body_part" value="Klicken, um Ihre aktuelle Form zu ersetzen"/> <text name="title" value="Outfit bearbeiten"/> <panel label="bottom_panel" name="header_panel"> <panel label="bottom_panel" name="outfit_name_and_status"> @@ -23,7 +27,7 @@ <layout_panel label="IM Steuerkonsole" name="outfit_wearables_panel"> <layout_stack name="filter_panels"> <layout_panel name="add_button_and_combobox"> - <button label="Mehr hinzufügen" name="show_add_wearables_btn"/> + <button label="Mehr hinzufügen" name="show_add_wearables_btn" tool_tip="Öffnen/Schließen"/> </layout_panel> <layout_panel name="filter_panel"> <filter_editor label="Tragbare Inventarobjekte filtern" name="look_item_filter"/> @@ -34,6 +38,6 @@ </layout_stack> <panel name="save_revert_button_bar"> <button label="Speichern" name="save_btn"/> - <button label="Zurücksetzen" name="revert_btn"/> + <button label="Änderungen rückgängig machen" name="revert_btn" tool_tip="Zur zuletzt gespeicherten Version zurücksetzen"/> </panel> </panel> diff --git a/indra/newview/skins/default/xui/de/panel_outfits_inventory.xml b/indra/newview/skins/default/xui/de/panel_outfits_inventory.xml index 8b04cecd68fd35e1a84774b770d562a2e155258e..852efe41d7fce2939da3391f1cb2264649de730d 100644 --- a/indra/newview/skins/default/xui/de/panel_outfits_inventory.xml +++ b/indra/newview/skins/default/xui/de/panel_outfits_inventory.xml @@ -6,7 +6,7 @@ </tab_container> <panel name="bottom_panel"> <button name="options_gear_btn" tool_tip="Zusätzliche Optionen anzeigen"/> - <dnd_button name="trash_btn" tool_tip="Auswahl löschen"/> + <dnd_button name="trash_btn" tool_tip="Ausgewähltes Outfit löschen"/> <button label="Speichern unter" name="save_btn"/> <button label="Anziehen" name="wear_btn" tool_tip="Ausgewähltes Outfit tragen"/> </panel> diff --git a/indra/newview/skins/default/xui/de/panel_people.xml b/indra/newview/skins/default/xui/de/panel_people.xml index 59cc3a8b70698ab5719f0e51b0af3581f635681d..6db4cf76f1feb368b2a983d266f92474ad140ad6 100644 --- a/indra/newview/skins/default/xui/de/panel_people.xml +++ b/indra/newview/skins/default/xui/de/panel_people.xml @@ -2,9 +2,9 @@ <!-- Side tray panel --> <panel label="Leute" name="people_panel"> <string name="no_recent_people" value="Hier sind keine Leute. Sie suchen nach Leuten? Verwenden Sie die [secondlife:///app/search/people Suche] oder die [secondlife:///app/worldmap Karte]."/> - <string name="no_filtered_recent_people" value="Sie haben nicht das Richtige gefunden? Versuchen Sie es mit der [secondlife:///app/search/people Suche]."/> + <string name="no_filtered_recent_people" value="Sie haben nicht das Richtige gefunden? Versuchen Sie es mit der [secondlife:///app/search/people/[SEARCH_TERM] Suche]."/> <string name="no_one_near" value="Es ist niemand in der Nähe. Sie suchen nach Leuten? Verwenden Sie die [secondlife:///app/search/people Suche] oder die [secondlife:///app/worldmap Karte]."/> - <string name="no_one_filtered_near" value="Sie haben nicht das Richtige gefunden? Versuchen Sie es mit der [secondlife:///app/search/people Suche]."/> + <string name="no_one_filtered_near" value="Sie haben nicht das Richtige gefunden? Versuchen Sie es mit der [secondlife:///app/search/people/[SEARCH_TERM] Suche]."/> <string name="no_friends_online" value="Keine Freunde online"/> <string name="no_friends" value="Keine Freunde"/> <string name="no_friends_msg"> @@ -12,11 +12,11 @@ Sie suchen nach Leuten? Verwenden Sie die [secondlife:///app/worldmap Karte]. </string> <string name="no_filtered_friends_msg"> - Sie haben nicht das Richtige gefunden? Versuchen Sie es mit der [secondlife:///app/search/people Suche]. + Sie haben nicht das Richtige gefunden? Versuchen Sie es mit der [secondlife:///app/search/people/[SEARCH_TERM] Suche]. </string> <string name="people_filter_label" value="Nach Leuten filtern"/> <string name="groups_filter_label" value="Nach Gruppen filtern"/> - <string name="no_filtered_groups_msg" value="Sie haben nicht das Richtige gefunden? Versuchen Sie es mit der [secondlife:///app/search/groups Suche]."/> + <string name="no_filtered_groups_msg" value="Sie haben nicht das Richtige gefunden? Versuchen Sie es mit der [secondlife:///app/search/groups/[SEARCH_TERM] Suche]."/> <string name="no_groups_msg" value="Suchen Sie nach Gruppen? Versuchen Sie es mit der [secondlife:///app/search/groups Suche]."/> <filter_editor label="Filter" name="filter_input"/> <tab_container name="tabs"> @@ -55,7 +55,7 @@ Sie suchen nach Leuten? Verwenden Sie die [secondlife:///app/worldmap Karte]. <button label="Profil" name="view_profile_btn" tool_tip="Bilder, Gruppen und andere Einwohner-Informationen anzeigen"/> <button label="IM" name="im_btn" tool_tip="Instant Messenger öffnen"/> <button label="Anrufen" name="call_btn" tool_tip="Diesen Einwohner anrufen"/> - <button label="Teilen" name="share_btn"/> + <button label="Teilen" name="share_btn" tool_tip="Inventarobjekt teilen"/> <button label="Teleportieren" name="teleport_btn" tool_tip="Teleport anbieten"/> <button label="Gruppenprofil" name="group_info_btn" tool_tip="Gruppeninformationen anzeigen"/> <button label="Gruppen-Chat" name="chat_btn" tool_tip="Chat öffnen"/> diff --git a/indra/newview/skins/default/xui/de/panel_preferences_advanced.xml b/indra/newview/skins/default/xui/de/panel_preferences_advanced.xml index 52e616a402ce69bb43e94e7c9ee5419744821bb1..7b6918ae24432b792d3548b76d640d4dcfad01db 100644 --- a/indra/newview/skins/default/xui/de/panel_preferences_advanced.xml +++ b/indra/newview/skins/default/xui/de/panel_preferences_advanced.xml @@ -13,7 +13,7 @@ </text> <check_box label="Bauen/Bearbeiten" name="edit_camera_movement" tool_tip="Automatische Kamerapositionierung bei Wechsel in und aus dem Bearbeitungsmodus verwenden"/> <check_box label="Aussehen" name="appearance_camera_movement" tool_tip="Automatische Kamerapositionierung im Bearbeitenmodus verwenden"/> - <check_box initial_value="true" label="Sidebar" name="appearance_sidebar_positioning" tool_tip="Use automatic camera positioning for sidebar"/> + <check_box initial_value="true" label="Seitenleiste" name="appearance_sidebar_positioning" tool_tip="Automatische Kameraposition für Seitenleiste verwenden"/> <check_box label="Mich im Mouselook anzeigen" name="first_person_avatar_visible"/> <check_box label="Mit Pfeiltasten bewegen" name="arrow_keys_move_avatar_check"/> <check_box label="2-mal-drücken-halten, um zu rennen" name="tap_tap_hold_to_run"/> diff --git a/indra/newview/skins/default/xui/de/panel_preferences_chat.xml b/indra/newview/skins/default/xui/de/panel_preferences_chat.xml index bf150daf872741d9f23535185289d4b008a0fdec..5c91b34a21f43245e201e8a7d6097734b407fda7 100644 --- a/indra/newview/skins/default/xui/de/panel_preferences_chat.xml +++ b/indra/newview/skins/default/xui/de/panel_preferences_chat.xml @@ -45,7 +45,7 @@ </text> <check_box initial_value="true" label="Beim Chatten Tippanimation abspielen" name="play_typing_animation"/> <check_box label="IMs per Email zuschicken, wenn ich offline bin" name="send_im_to_email"/> - <check_box label="Kompakten Text-Chatverlauf aktivieren" name="plain_text_chat_history"/> + <check_box label="Kompakten IM- und Text-Chatverlauf aktivieren" name="plain_text_chat_history"/> <text name="show_ims_in_label"> IMs anzeigen in: </text> diff --git a/indra/newview/skins/default/xui/de/panel_preferences_graphics1.xml b/indra/newview/skins/default/xui/de/panel_preferences_graphics1.xml index 16b4598486a9900117598c9b222833a0eb95e715..707753471957cd403d585c468234b898e31ccbcb 100644 --- a/indra/newview/skins/default/xui/de/panel_preferences_graphics1.xml +++ b/indra/newview/skins/default/xui/de/panel_preferences_graphics1.xml @@ -1,19 +1,5 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <panel label="Grafik" name="Display panel"> - <text name="WindowSizeLabel"> - Fenstergröße: - </text> - <check_box label="Vollbildmodus verwenden" name="windowed mode"/> - <combo_box left="115" name="windowsize combo"> - <combo_box.item label="640x480" name="640x480"/> - <combo_box.item label="800x600" name="800x600"/> - <combo_box.item label="720x480 (NTSC)" name="720x480"/> - <combo_box.item label="768x576 (PAL)" name="768x576"/> - <combo_box.item label="1024x768" name="1024x768"/> - </combo_box> - <text name="UI Size:"> - UI-Größe: - </text> <text name="QualitySpeed"> Qualität und Geschwindigkeit: </text> @@ -63,6 +49,7 @@ m </text> <slider label="Max. Partikelzahl:" name="MaxParticleCount"/> + <slider label="Max. Anzahl an voll dargestellten Avataren:" name="MaxNumberAvatarDrawn"/> <slider label="Post-Processing-Qualität:" name="RenderPostProcess"/> <text name="MeshDetailText"> Gitterdetails: @@ -98,8 +85,8 @@ Beleuchtungsdetails: </text> <radio_group name="LightingDetailRadio"> - <radio_item label="Nur Sonne und Mond" name="SunMoon"/> - <radio_item label="Lokale Lichtquellen" name="LocalLights"/> + <radio_item label="Nur Sonne und Mond" name="SunMoon" value="0"/> + <radio_item label="Lokale Lichtquellen" name="LocalLights" value="1"/> </radio_group> <text name="TerrainDetailText"> Terraindetails: diff --git a/indra/newview/skins/default/xui/de/panel_voice_effect.xml b/indra/newview/skins/default/xui/de/panel_voice_effect.xml index 363ee013e3d6cf160f6bb29ce25167dcf44e08af..533deb85979f6367f1b60b661d2b109933ee818f 100644 --- a/indra/newview/skins/default/xui/de/panel_voice_effect.xml +++ b/indra/newview/skins/default/xui/de/panel_voice_effect.xml @@ -1,7 +1,7 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <panel name="panel_voice_effect"> <string name="no_voice_effect"> - Kein Voice-Morphing + Voice-Morphing Aus </string> <string name="preview_voice_effects"> Voice-Morphing ausprobieren â–¶ @@ -10,6 +10,6 @@ Voice-Morphing abonnieren â–¶ </string> <combo_box name="voice_effect" tool_tip="Wählen Sie einen Voice-Morph-Effekt aus, um Ihre Stimme zu verändern."> - <combo_box.item label="Kein Voice-Morphing" name="no_voice_effect"/> + <combo_box.item label="Voice-Morphing Aus" name="no_voice_effect"/> </combo_box> </panel> diff --git a/indra/newview/skins/default/xui/de/sidepanel_appearance.xml b/indra/newview/skins/default/xui/de/sidepanel_appearance.xml index 7a280bd7ffc88fe0dfc933d4e38d954951c76b2c..b43067fb95add826faa761ed5507a9b8844f7f91 100644 --- a/indra/newview/skins/default/xui/de/sidepanel_appearance.xml +++ b/indra/newview/skins/default/xui/de/sidepanel_appearance.xml @@ -1,16 +1,19 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <panel label="Outfits" name="appearance panel"> <string name="No Outfit" value="Kein Outfit"/> + <string name="Unsaved Changes" value="Ungespeicherte Änderungen"/> + <string name="Now Wearing" value="Aktuelles Outfit..."/> + <string name="Changing outfits" value="Outfits ändern"/> <panel name="panel_currentlook"> - <button label="Bearbeiten" name="editappearance_btn"/> - <text name="currentlook_title"> - (nicht gespeichert) + <button label="B" name="editappearance_btn"/> + <button label="Ö" name="openoutfit_btn"/> + <text name="currentlook_status"> + (Status) </text> <text name="currentlook_name"> MyOutfit With a really Long Name like MOOSE </text> + <button label="" name="edit_outfit_btn" tool_tip="Diese Outfit bearbeiten"/> </panel> <filter_editor label="Outfits filtern" name="Filter"/> - <button label="Anziehen" name="wear_btn"/> - <button label="Neues Outfit" name="newlook_btn"/> </panel> diff --git a/indra/newview/skins/default/xui/de/sidepanel_inventory.xml b/indra/newview/skins/default/xui/de/sidepanel_inventory.xml index 96dd18185460b3b490b5b937e32077fea09a3c0a..f9bf2fe08123427efc07024f92af1c153b1723ec 100644 --- a/indra/newview/skins/default/xui/de/sidepanel_inventory.xml +++ b/indra/newview/skins/default/xui/de/sidepanel_inventory.xml @@ -4,7 +4,7 @@ <panel name="button_panel"> <button label="Profil" name="info_btn" tool_tip="Objektprofil anzeigen"/> <button label="Teilen" name="share_btn" tool_tip="Inventarobjekt teilen"/> - <button label="Shop" name="shop_btn" tool_tip="Marktplatz-Webseite öffnen"/> + <button label="Einkaufen" name="shop_btn" tool_tip="Marktplatz-Webseite öffnen"/> <button label="Anziehen" name="wear_btn" tool_tip="Ausgewähltes Outfit tragen"/> <button label="Wiedergeben" name="play_btn"/> <button label="Teleportieren" name="teleport_btn" tool_tip="Zu ausgewähltem Standort teleportieren"/> diff --git a/indra/newview/skins/default/xui/de/strings.xml b/indra/newview/skins/default/xui/de/strings.xml index bc4f20df26b7d56835b85734c43060d23d449a36..67b7d6c1d2bf29cc5ee1ffa105f3f30f73f6377c 100644 --- a/indra/newview/skins/default/xui/de/strings.xml +++ b/indra/newview/skins/default/xui/de/strings.xml @@ -100,9 +100,21 @@ <string name="LoginDownloadingClothing"> Kleidung wird geladen... </string> + <string name="InvalidCertificate"> + Der Server hat ein ungültiges oder korruptes Zertifikate zurückgegeben. Bitte kontaktieren Sie den Grid-Administrator. + </string> + <string name="CertInvalidHostname"> + Ein ungültiger Hostname wurde verwendet, um auf den Server zuzugreifen. Bitte überprüfen Sie Ihre SLURL oder den Grid-Hostnamen. + </string> <string name="CertExpired"> Das vom Grid ausgegebene Zertifikate ist abgelaufen. Bitte überprüfen Sie Ihre Systemuhr oder kontaktieren Sie Ihren Grid-Administrator. </string> + <string name="CertKeyUsage"> + Das vom Server ausgegebene Zertifikat konnte nicht für SSL verwendet werden. Bitte kontaktieren Sie Ihren Grid-Administrator. + </string> + <string name="CertBasicConstraints"> + In der Zertifikatskette des Servers befanden sich zu viele Zertifikate. Bitte kontaktieren Sie Ihren Grid-Administrator. + </string> <string name="CertInvalidSignature"> Die Zertifikatsunterschrift des Gridservers konnte nicht bestätigt werden. Bitte kontaktieren Sie Ihren Grid-Administrator. </string> @@ -297,6 +309,9 @@ <string name="ReleaseNotes"> Versionshinweise </string> + <string name="RELEASE_NOTES_BASE_URL"> + http://wiki.secondlife.com/wiki/Release_Notes/ + </string> <string name="LoadingData"> Wird geladen... </string> @@ -852,6 +867,45 @@ <string name="invalid"> ungültig </string> + <string name="none"> + keine + </string> + <string name="shirt_not_worn"> + Hemd nicht getragen + </string> + <string name="pants_not_worn"> + Hosen nicht getragen + </string> + <string name="shoes_not_worn"> + Schuhe nicht getragen + </string> + <string name="socks_not_worn"> + Socken nicht getragen + </string> + <string name="jacket_not_worn"> + Jacke nicht getragen + </string> + <string name="gloves_not_worn"> + Handschuhe nicht getragen + </string> + <string name="undershirt_not_worn"> + Unterhemd nicht getragen + </string> + <string name="underpants_not_worn"> + Unterhose nicht getragen + </string> + <string name="skirt_not_worn"> + Rock nicht getragen + </string> + <string name="alpha_not_worn"> + Alpha nicht getragen + </string> + <string name="tattoo_not_worn"> + Tätowierung nicht getragen + </string> + <string name="invalid_not_worn"> + ungültig + </string> <string name="NewWearable"> Neue/r/s [WEARABLE_ITEM] </string> @@ -925,7 +979,10 @@ ESC drücken, um zur Normalansicht zurückzukehren </string> <string name="InventoryNoMatchingItems"> - Sie haben nicht das Richtige gefunden? Versuchen Sie es mit der [secondlife:///app/search/all Suche]. + Sie haben nicht das Richtige gefunden? Versuchen Sie es mit der [secondlife:///app/search/all/[SEARCH_TERM] Suche]. + </string> + <string name="PlacesNoMatchingItems"> + Sie haben nicht das Richtige gefunden? Versuchen Sie es mit der [secondlife:///app/search/places/[SEARCH_TERM] Suche]. </string> <string name="FavoritesNoMatchingItems"> Landmarke hier hin ziehen, um diese hinzuzufügen. @@ -961,6 +1018,7 @@ <string name="Wave" value=" Winken"/> <string name="HelloAvatar" value=" Hallo Avatar!"/> <string name="ViewAllGestures" value=" Alle anzeigen >>"/> + <string name="GetMoreGestures" value="Mehr >>"/> <string name="Animations" value=" Animationen,"/> <string name="Calling Cards" value=" Visitenkarten,"/> <string name="Clothing" value=" Kleidung,"/> @@ -1579,7 +1637,7 @@ Der Einwohner/Die Einwohnerin ist „beschäftigtâ€, d.h. er/sie möchte im Moment nicht gestört werden. Ihre Nachricht wird dem Einwohner/der Einwohnerin als IM angezeigt, und kann später beantwortet werden. </string> <string name="MuteByName"> - (nach Namen) + (Nach Namen) </string> <string name="MuteAgent"> (Einwohner) @@ -1590,6 +1648,9 @@ <string name="MuteGroup"> (Gruppe) </string> + <string name="MuteExternal"> + (Extern) + </string> <string name="RegionNoCovenant"> Für diesen Grundbesitz liegt kein Vertrag vor. </string> @@ -3405,6 +3466,15 @@ Falls diese Meldung weiterhin angezeigt wird, wenden Sie sich bitte an [SUPPORT_ <string name="answered_call"> Ihr Anruf wurde entgegengenommen </string> + <string name="you_started_call"> + Sie haben einen Voice-Anruf begonnen + </string> + <string name="you_joined_call"> + Sie sind dem Gespräch beigetreten + </string> + <string name="name_started_call"> + [NAME] hat einen Voice-Anruf begonnen + </string> <string name="ringing-im"> Verbindung wird hergestellt... </string> @@ -3617,6 +3687,57 @@ Missbrauchsbericht <string name="Contents"> Inhalt </string> + <string name="Gesture"> + Gesten + </string> + <string name="Male Gestures"> + Männliche Gesten + </string> + <string name="Female Gestures"> + Weibliche Gesten + </string> + <string name="Other Gestures"> + Andere Gesten + </string> + <string name="Speech Gestures"> + Sprachgesten + </string> + <string name="Common Gestures"> + Häufig verwendete Gesten + </string> + <string name="Male - Excuse me"> + Männlich - Excuse me + </string> + <string name="Male - Get lost"> + Männlich - Get lost + </string> + <string name="Male - Blow kiss"> + Männlich - Kusshand + </string> + <string name="Male - Boo"> + Männlich - Buh + </string> + <string name="Male - Bored"> + Männlich - Gelangweilt + </string> + <string name="Male - Hey"> + Männlich - Hey + </string> + <string name="Male - Laugh"> + Männlich - Lachen + </string> + <string name="Male - Repulsed"> + Männlich - Angewidert + </string> + <string name="Male - Shrug"> + Männlich - Achselzucken + </string> + <string name="Male - Stick tougue out"> + Männlich - Zunge herausstrecken + </string> + <string name="Male - Wow"> + Männlich - Wow + </string> <string name="Female - Excuse me"> Weiblich - Räuspern </string> @@ -3629,6 +3750,27 @@ Missbrauchsbericht <string name="Female - Boo"> Weiblich - Buh </string> + <string name="Female - Bored"> + Weiblich - Gelangweilt + </string> + <string name="Female - Hey"> + Weiblich - Hey + </string> + <string name="Female - Laugh"> + Weiblich - Lachen + </string> + <string name="Female - Repulsed"> + Weiblich - Angewidert + </string> + <string name="Female - Shrug"> + Weiblich - Achselzucken + </string> + <string name="Female - Stick tougue out"> + Weiblich - Zunge herausstrecken + </string> + <string name="Female - Wow"> + Weiblich - Wow + </string> <string name="AvatarBirthDateFormat"> [mthnum,datetime,slt]/[day,datetime,slt]/[year,datetime,slt] </string> diff --git a/indra/newview/skins/default/xui/en/alert_button.xml b/indra/newview/skins/default/xui/en/alert_button.xml index 632564d7938e7672b1646f10f3475c9a802c8745..a60e9afab1163f543567b146b325802cb9d47cb0 100644 --- a/indra/newview/skins/default/xui/en/alert_button.xml +++ b/indra/newview/skins/default/xui/en/alert_button.xml @@ -5,7 +5,7 @@ label_shadow="true" auto_resize="false" image_overlay_alignment="center" - use_ellipses="flse" + use_ellipses="false" pad_right="10" pad_left="10" is_toggle="false" diff --git a/indra/newview/skins/default/xui/en/floater_about_land.xml b/indra/newview/skins/default/xui/en/floater_about_land.xml index b9489895ae8a9c440904ea2b4dfd4189e75718b8..14aacafa9f21498f150373ce8efbf85049ebb198 100644 --- a/indra/newview/skins/default/xui/en/floater_about_land.xml +++ b/indra/newview/skins/default/xui/en/floater_about_land.xml @@ -1489,6 +1489,7 @@ Only large parcels can be listed in search. layout="topleft" left="14" name="snapshot_ctrl" + fallback_image="default_land_picture.j2c" tool_tip="Click to choose a picture" width="195" /> <text diff --git a/indra/newview/skins/default/xui/en/floater_buy_land.xml b/indra/newview/skins/default/xui/en/floater_buy_land.xml index acaa508792478934d3eebd8c77b7a0a869532fd8..0ad4fbc967031e5e51cd2556bb71d77fb351cf5e 100644 --- a/indra/newview/skins/default/xui/en/floater_buy_land.xml +++ b/indra/newview/skins/default/xui/en/floater_buy_land.xml @@ -380,6 +380,7 @@ supports [AMOUNT2] objects width="275" /> <texture_picker enabled="false" + fallback_image="default_land_picture.j2c" follows="top|left" height="135" layout="topleft" diff --git a/indra/newview/skins/default/xui/en/floater_event.xml b/indra/newview/skins/default/xui/en/floater_event.xml index d9c9d63c72da802e87608fbb77ceb4b5d011bdbe..887cedc33fbff0d7af4eb112b04a8faf41e5037c 100644 --- a/indra/newview/skins/default/xui/en/floater_event.xml +++ b/indra/newview/skins/default/xui/en/floater_event.xml @@ -266,7 +266,6 @@ layout="topleft" left="6" name="create_event_btn" - picture_style="true" tool_tip="Create Event" width="18" /> <button @@ -280,7 +279,6 @@ left="6" top_pad="-7" name="god_delete_event_btn" - picture_style="true" tool_tip="Delete Event" width="18" /> <button diff --git a/indra/newview/skins/default/xui/en/floater_nearby_chat.xml b/indra/newview/skins/default/xui/en/floater_nearby_chat.xml index 28616d503bcae75d270413b63b2ffb935ca78744..ec097a8e87683f68759b2a927c4b999f1b422b44 100644 --- a/indra/newview/skins/default/xui/en/floater_nearby_chat.xml +++ b/indra/newview/skins/default/xui/en/floater_nearby_chat.xml @@ -1,8 +1,6 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <floater border_visible="false" - border_drop_shadow_visible="false" - drop_shadow_visible="false" border="false" bg_opaque_image="Window_Foreground" bg_alpha_image="Window_Background" @@ -26,20 +24,20 @@ save_visibility="true" single_instance="true" width="320"> - <chat_history - allow_html="true" - bg_readonly_color="ChatHistoryBgColor" - bg_writeable_color="ChatHistoryBgColor" - follows="all" - left="5" - top="20" - layout="topleft" - height="275" - name="chat_history" - parse_highlights="true" - text_color="ChatHistoryTextColor" - text_readonly_color="ChatHistoryTextColor" - right_widget_pad="5" - left_widget_pad="0" - width="315" /> + <chat_history + allow_html="true" + bg_readonly_color="ChatHistoryBgColor" + bg_writeable_color="ChatHistoryBgColor" + follows="all" + left="5" + top="20" + layout="topleft" + height="275" + name="chat_history" + parse_highlights="true" + text_color="ChatHistoryTextColor" + text_readonly_color="ChatHistoryTextColor" + right_widget_pad="5" + left_widget_pad="0" + width="315" /> </floater> diff --git a/indra/newview/skins/default/xui/en/floater_tools.xml b/indra/newview/skins/default/xui/en/floater_tools.xml index efc1a66d95b0d4bed745c279ef7e06c822f6c7ac..34c1b25f8cd7add989944034635957de0dcfa613 100644 --- a/indra/newview/skins/default/xui/en/floater_tools.xml +++ b/indra/newview/skins/default/xui/en/floater_tools.xml @@ -335,7 +335,6 @@ </combo_box> <button left_pad="0" - image_disabled="ForwardArrow_Disabled" image_selected="ForwardArrow_Press" image_unselected="ForwardArrow_Off" layout="topleft" @@ -1012,7 +1011,7 @@ follows="left|top" allow_text_entry="false" height="23" - intial_value="2" + initial_value="2" max_chars="20" mouse_opaque="true" name="sale type" @@ -2176,8 +2175,6 @@ even though the user gets a free copy. width="60" /> <color_swatch can_apply_immediately="true" - bevel_style="none" - border_style="line" color="0.5 0.5 0.5 1" border.border_thickness="0" follows="left|top" @@ -2212,43 +2209,71 @@ even though the user gets a free copy. name="Light Intensity" top_pad="3" width="128" /> - <spinner bottom_delta="0" decimal_digits="3" follows="left|top" height="16" - increment="0.1" initial_val="0.5" label="FOV" label_width="55" - left="144" max_val="3" min_val="0" mouse_opaque="true" - name="Light FOV" width="120" /> - <spinner - follows="left|top" - height="19" - initial_value="5" - label="Radius" - label_width="70" - layout="topleft" - left="10" - max_val="20" - name="Light Radius" - top_pad="3" - width="128" /> - <spinner bottom_delta="0" decimal_digits="3" follows="left|top" height="16" - increment="0.5" initial_val="0.5" label="Focus" label_width="55" - left="144" max_val="20" min_val="-20" mouse_opaque="true" - name="Light Focus" width="120" /> - <spinner - follows="left|top" - height="19" - increment="0.25" - initial_value="1" - label="Falloff" - label_width="70" - layout="topleft" - left="10" - max_val="2" - name="Light Falloff" - top_pad="3" - width="128" /> - <spinner bottom_delta="0" decimal_digits="3" follows="left|top" height="16" - increment="0.05" initial_val="1" label="Ambiance" label_width="55" - left="144" max_val="1" min_val="0" mouse_opaque="true" - name="Light Ambiance" width="120" /> + <spinner bottom_delta="0" + decimal_digits="3" + follows="left|top" + height="16" + increment="0.1" + initial_value="0.5" + label="FOV" + label_width="55" + left="144" + max_val="3" + min_val="0" + mouse_opaque="true" + name="Light FOV" + width="120" /> + <spinner follows="left|top" + height="19" + initial_value="5" + label="Radius" + label_width="70" + layout="topleft" + left="10" + max_val="20" + name="Light Radius" + top_pad="3" + width="128" /> + <spinner bottom_delta="0" + decimal_digits="3" + follows="left|top" + height="16" + increment="0.5" + initial_value="0.5" + label="Focus" + label_width="55" + left="144" + max_val="20" + min_val="-20" + mouse_opaque="true" + name="Light Focus" + width="120" /> + <spinner follows="left|top" + height="19" + increment="0.25" + initial_value="1" + label="Falloff" + label_width="70" + layout="topleft" + left="10" + max_val="2" + name="Light Falloff" + top_pad="3" + width="128" /> + <spinner bottom_delta="0" + decimal_digits="3" + follows="left|top" + height="16" + increment="0.05" + initial_value="1" + label="Ambiance" + label_width="55" + left="144" + max_val="1" + min_val="0" + mouse_opaque="true" + name="Light Ambiance" + width="120" /> </panel> <panel border="false" @@ -2273,6 +2298,7 @@ even though the user gets a free copy. <texture_picker can_apply_immediately="true" default_image_name="Default" + fallback_image="locked_image.j2c" follows="left|top" height="80" label="Texture" diff --git a/indra/newview/skins/default/xui/en/menu_cof_clothing.xml b/indra/newview/skins/default/xui/en/menu_cof_clothing.xml index 12ee9b045b0e9c2e16db61b6af153e0c3368fbfd..206d49e8c748d81b080c95f78f2bc32415351208 100644 --- a/indra/newview/skins/default/xui/en/menu_cof_clothing.xml +++ b/indra/newview/skins/default/xui/en/menu_cof_clothing.xml @@ -13,34 +13,24 @@ parameter="take_off" /> </menu_item_call> <menu_item_call - label="Move Up a Layer" - layout="topleft" - name="move_up"> - <on_click - function="Clothing.MoveUp" /> - <on_enable - function="Clothing.OnEnable" - parameter="move_up" /> - </menu_item_call> - <menu_item_call - label="Move Down a Layer" + label="Edit" layout="topleft" - name="move_down"> + name="edit"> <on_click - function="Clothing.MoveDown" /> + function="Clothing.Edit" /> <on_enable function="Clothing.OnEnable" - parameter="move_down" /> + parameter="edit" /> </menu_item_call> <menu_item_call - label="Edit" + label="Replace" layout="topleft" - name="edit"> + name="replace"> <on_click - function="Clothing.Edit" /> + function="Clothing.Replace" /> <on_enable function="Clothing.OnEnable" - parameter="edit" /> + parameter="replace" /> </menu_item_call> <menu_item_call label="Create New" diff --git a/indra/newview/skins/default/xui/en/menu_edit.xml b/indra/newview/skins/default/xui/en/menu_edit.xml index 68f3cb532cadfbf63de5efa181ff57ad54ac50a9..fab76c497cff0a6d0ca4614bb83f051780d48074 100644 --- a/indra/newview/skins/default/xui/en/menu_edit.xml +++ b/indra/newview/skins/default/xui/en/menu_edit.xml @@ -52,6 +52,7 @@ <menu_item_call label="Delete" name="Delete" + allow_key_repeat="true" shortcut="Del"> <menu_item_call.on_click function="Edit.Delete" /> 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 8e7ef7f0b55f964384f301b54ee94bfe8a5b53ea..c4c7a5034aaa97a66296e991bf7c403b90094825 100644 --- a/indra/newview/skins/default/xui/en/menu_outfit_gear.xml +++ b/indra/newview/skins/default/xui/en/menu_outfit_gear.xml @@ -15,6 +15,16 @@ function="Gear.OnVisible" parameter="wear" /> </menu_item_call> + <menu_item_call + label="Wear - Add to Current Outfit" + layout="topleft" + name="wear_add"> + <on_click + function="Gear.WearAdd" /> + <on_enable + function="Gear.OnEnable" + parameter="wear_add" /> + </menu_item_call> <menu_item_call label="Take Off - Remove from Current Outfit" layout="topleft" diff --git a/indra/newview/skins/default/xui/en/menu_wearable_list_item.xml b/indra/newview/skins/default/xui/en/menu_wearable_list_item.xml index efea2ae3e8f65c752316582b4eadee9bfcdb332a..23eb89e448af8297ffe7355e470e23a9da8bc749 100644 --- a/indra/newview/skins/default/xui/en/menu_wearable_list_item.xml +++ b/indra/newview/skins/default/xui/en/menu_wearable_list_item.xml @@ -73,4 +73,10 @@ <on_click function="Wearable.CreateNew" /> </menu_item_call> + <menu_item_call + label="--no options--" + layout="topleft" + name="--no options--" + translate="false"> + </menu_item_call> </context_menu> diff --git a/indra/newview/skins/default/xui/en/outfit_accordion_tab.xml b/indra/newview/skins/default/xui/en/outfit_accordion_tab.xml index bdfa928b1d8ffc4f0a9a3c483a944ff74506888d..06bd1e9ff44d342a4e3dc0d1628b40646cceb31f 100644 --- a/indra/newview/skins/default/xui/en/outfit_accordion_tab.xml +++ b/indra/newview/skins/default/xui/en/outfit_accordion_tab.xml @@ -3,7 +3,7 @@ <!-- All accordion tabs in the My Appearance/My Outfits panel will be created from this one at runtime--> <!-- Non of string values of controls below are visible to user. They are not need to be translated. --> <accordion_tab - display_children="false" + expanded="false" follows="all" height="45" layout="topleft" diff --git a/indra/newview/skins/default/xui/en/panel_classified_info.xml b/indra/newview/skins/default/xui/en/panel_classified_info.xml index 976f6d6cd08b418161815c69249be02bd26603f1..b7fd9773f263ff13c61601bd6b1dd2897f742a73 100644 --- a/indra/newview/skins/default/xui/en/panel_classified_info.xml +++ b/indra/newview/skins/default/xui/en/panel_classified_info.xml @@ -46,7 +46,6 @@ image_unselected="BackButton_Off" layout="topleft" name="back_btn" - picture_style="true" left="10" tab_stop="false" top="2" diff --git a/indra/newview/skins/default/xui/en/panel_edit_classified.xml b/indra/newview/skins/default/xui/en/panel_edit_classified.xml index 6744a7b9c2259ea881cc685116939aef3168f74c..3f41973b7202479545a4faf30d851b9d7770b324 100644 --- a/indra/newview/skins/default/xui/en/panel_edit_classified.xml +++ b/indra/newview/skins/default/xui/en/panel_edit_classified.xml @@ -30,7 +30,6 @@ image_unselected="BackButton_Off" layout="topleft" name="back_btn" - picture_style="true" left="10" tab_stop="false" top="2" diff --git a/indra/newview/skins/default/xui/en/panel_edit_profile.xml b/indra/newview/skins/default/xui/en/panel_edit_profile.xml index dff2b9a214f2f1c35bb595bb117b82f79358d064..5072ec3a669df12e6d21d151cff22e8c95c1c1ed 100644 --- a/indra/newview/skins/default/xui/en/panel_edit_profile.xml +++ b/indra/newview/skins/default/xui/en/panel_edit_profile.xml @@ -118,6 +118,7 @@ allow_no_texture="true" default_image_name="None" enabled="false" + fallback_image="default_profile_picture.j2c" follows="top|left" height="124" layout="topleft" @@ -174,6 +175,7 @@ allow_no_texture="true" default_image_name="None" enabled="false" + fallback_image="Generic_Person_Large" follows="top|left" height="124" layout="topleft" 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 fc1caca9e9ce6aa8769211b6223553264f1f5ce5..484617df3456a9f86bd5827740b264b64be7a39d 100644 --- a/indra/newview/skins/default/xui/en/panel_edit_wearable.xml +++ b/indra/newview/skins/default/xui/en/panel_edit_wearable.xml @@ -131,19 +131,25 @@ name="tattoo_desc_text"> Tattoo: </string> - <button + <!-- Default width of the button should be to show it without label. + Button will be extedned in code to show whole label when wearable is being changed. + --> + <labeled_back_button follows="top|left" height="24" image_hover_unselected="BackButton_Over" image_pressed="BackButton_Press" image_unselected="BackButton_Off" layout="topleft" + label="Save" left="11" name="back_btn" + pad_left="24" + tool_tip="Return to Edit Outfit" top="3" width="30" /> <text - follows="top|left" + follows="top|left|right" font="SansSerifHugeBold" height="22" layout="topleft" @@ -152,7 +158,8 @@ text_color="white" top="3" value="Editing Shape" - width="270" /> + use_ellipses="true" + width="274" /> <panel background_opaque="true" background_visible="true" diff --git a/indra/newview/skins/default/xui/en/panel_group_info_sidetray.xml b/indra/newview/skins/default/xui/en/panel_group_info_sidetray.xml index e894fc8fb8bd8431ae2b4ed7c44ed8012188ca22..4998322d62c11951425ff0a297781a21feb00695 100644 --- a/indra/newview/skins/default/xui/en/panel_group_info_sidetray.xml +++ b/indra/newview/skins/default/xui/en/panel_group_info_sidetray.xml @@ -96,6 +96,7 @@ background_visible="true" follows="all" layout="topleft" auto_resize="true" + height="513" width="313"> <accordion left="0" @@ -105,6 +106,7 @@ background_visible="true" follows="all" layout="topleft" name="groups_accordion" + height="513" width="313"> <accordion_tab expanded="true" diff --git a/indra/newview/skins/default/xui/en/panel_landmark_info.xml b/indra/newview/skins/default/xui/en/panel_landmark_info.xml index 55fef5aaf77cc6c960c4deaaa49ad07a3bd74398..a0a1e2963a95f84fbd10cae7d56df1942cd166f8 100644 --- a/indra/newview/skins/default/xui/en/panel_landmark_info.xml +++ b/indra/newview/skins/default/xui/en/panel_landmark_info.xml @@ -103,7 +103,8 @@ width="310"> <texture_picker enabled="false" - follows="left|top|right" + fallback_image="default_land_picture.j2c" + follows="left|top|right" height="197" layout="topleft" left="11" diff --git a/indra/newview/skins/default/xui/en/panel_main_inventory.xml b/indra/newview/skins/default/xui/en/panel_main_inventory.xml index 2a53b3e2fab7969cf601b367205b597a89417e9c..16529f4064b0c30d97265c22b5ce86aeefade544 100644 --- a/indra/newview/skins/default/xui/en/panel_main_inventory.xml +++ b/indra/newview/skins/default/xui/en/panel_main_inventory.xml @@ -104,8 +104,6 @@ </tab_container> <layout_stack animate="false" - background_visible="true" - bevel_style="none" border_size="0" follows="left|right|bottom" height="25" diff --git a/indra/newview/skins/default/xui/en/panel_my_profile.xml b/indra/newview/skins/default/xui/en/panel_my_profile.xml index 841a4f5713f811b4e852fe647156df110e46884e..1083f4d467678bdea5a9a3d7534eaa6d47306ee3 100644 --- a/indra/newview/skins/default/xui/en/panel_my_profile.xml +++ b/indra/newview/skins/default/xui/en/panel_my_profile.xml @@ -83,6 +83,7 @@ allow_no_texture="true" default_image_name="None" enabled="false" + fallback_image="Generic_Person_Large" follows="top|left" height="124" layout="topleft" diff --git a/indra/newview/skins/default/xui/en/panel_navigation_bar.xml b/indra/newview/skins/default/xui/en/panel_navigation_bar.xml index 96c76576c0cbf09271718a5dfa43441fbc5670b8..00b1fdd843091cbd5e806652518ddd0cbff77b38 100644 --- a/indra/newview/skins/default/xui/en/panel_navigation_bar.xml +++ b/indra/newview/skins/default/xui/en/panel_navigation_bar.xml @@ -113,10 +113,6 @@ <!-- top_delta="0" --> <!-- width="168" /> --> <search_combo_box - bevel_style="none" - border_style="line" - border.border_thickness="0" - commit_on_focus_lost="false" follows="right|top" halign="right" height="23" diff --git a/indra/newview/skins/default/xui/en/panel_nearby_media.xml b/indra/newview/skins/default/xui/en/panel_nearby_media.xml index f5a78fc92979e0cefbdaac1b5692eedc59423237..d8675b351289058062c6ae72f3ea919e8814f51f 100644 --- a/indra/newview/skins/default/xui/en/panel_nearby_media.xml +++ b/indra/newview/skins/default/xui/en/panel_nearby_media.xml @@ -1,7 +1,5 @@ <?xml version="1.0" encoding="utf-8" standalone="yes" ?> <panel - can_resize="true" - can_close="false" bg_opaque_image="Volume_Background" bg_alpha_image="Volume_Background" background_opaque="true" @@ -58,7 +56,6 @@ top_delta="0" left_pad="4" height="22" - min_width="28" width="28"> <button.commit_callback function="MediaListCtrl.GoMediaPrefs" /> 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 4abd7dceacb0529dc5f1cb1c24662380296055f0..362fdd606af278d26e09a603cdc05320fc724f03 100644 --- a/indra/newview/skins/default/xui/en/panel_outfit_edit.xml +++ b/indra/newview/skins/default/xui/en/panel_outfit_edit.xml @@ -190,7 +190,7 @@ It is calculated as border_size + 2*UIResizeBarOverlap <layout_panel auto_resize="true" background_visible="true" - bg_alpha_color="DkGray2" + bg_alpha_color="Black" layout="topleft" height="154" name="add_button_and_combobox" @@ -318,13 +318,13 @@ It is calculated as border_size + 2*UIResizeBarOverlap background_visible="false" border="false" follows="left|top|right|bottom" - height="442" + height="449" layout="topleft" left="0" mouse_opaque="false" name="folder_view" - top_pad="5" - width="310" + top_pad="0" + width="313" visible="false"/> <panel name="filtered_wearables_panel" @@ -346,7 +346,7 @@ It is calculated as border_size + 2*UIResizeBarOverlap layout="topleft" follows="all" multi_select="true" - width="310" + width="313" height="449" left="0" top="0"/> @@ -382,20 +382,20 @@ It is calculated as border_size + 2*UIResizeBarOverlap <icon follows="bottom|left|right" height="25" - image_name="Toolbar_Right_Off" + image_name="Toolbar_Middle_Off" layout="topleft" left_pad="1" name="dummy_right_icon" - width="246" /> + width="250" /> <button follows="bottom|right" height="25" - image_hover_unselected="Toolbar_Middle_Over" + image_hover_unselected="Toolbar_Right_Over" image_overlay="Shop" - image_selected="Toolbar_Middle_Selected" - image_unselected="Toolbar_Middle_Off" + image_selected="Toolbar_Right_Selected" + image_unselected="Toolbar_Right_Off" layout="topleft" - left_pad="0" + left_pad="1" name="shop_btn_1" top="1" width="31" /> @@ -468,21 +468,21 @@ It is calculated as border_size + 2*UIResizeBarOverlap <icon follows="bottom|left|right" height="25" - image_name="Toolbar_Right_Off" + image_name="Toolbar_Middle_Off" layout="topleft" left_pad="1" name="dummy_right_icon" - width="153" > + width="154" > </icon> <button follows="bottom|right" height="25" - image_hover_unselected="Toolbar_Middle_Over" + image_hover_unselected="Toolbar_Right_Over" image_overlay="Shop" - image_selected="Toolbar_Middle_Selected" - image_unselected="Toolbar_Middle_Off" + image_selected="Toolbar_Right_Selected" + image_unselected="Toolbar_Right_Off" layout="topleft" - left_pad="0" + left_pad="1" name="shop_btn_2" top="1" width="31" /> diff --git a/indra/newview/skins/default/xui/en/panel_outfits_inventory.xml b/indra/newview/skins/default/xui/en/panel_outfits_inventory.xml index b365540d1fa8ba37f7c71f5a938e916c40da52dc..60a0095d5fc648b69252be4f1fb69515241e24e3 100644 --- a/indra/newview/skins/default/xui/en/panel_outfits_inventory.xml +++ b/indra/newview/skins/default/xui/en/panel_outfits_inventory.xml @@ -37,6 +37,7 @@ width="312" /> <panel background_visible="true" + bg_alpha_color="DkGray" class="panel_wearing" follows="all" height="490" @@ -50,13 +51,13 @@ follows="all" height="490" keep_one_selected="true" - left="1" + left="3" multi_select="true" name="cof_items_list" standalone="false" top="0" translate="false" - width="310" + width="307" worn_indication_enabled="false" /> </panel> diff --git a/indra/newview/skins/default/xui/en/panel_outfits_list.xml b/indra/newview/skins/default/xui/en/panel_outfits_list.xml index d0c44c4328916c5f6c8f2e2a90f8ded7ebdabf95..aea4e939dfcff6eb655f5d5837b5aaa8afb01388 100644 --- a/indra/newview/skins/default/xui/en/panel_outfits_list.xml +++ b/indra/newview/skins/default/xui/en/panel_outfits_list.xml @@ -9,12 +9,13 @@ layout="topleft" left="0" top="0" - width="313"> + width="312"> <accordion background_visible="true" bg_alpha_color="DkGray2" bg_opaque_color="DkGray2" no_matched_tabs_text.value="Didn't find what you're looking for? Try [secondlife:///app/search/all/[SEARCH_TERM] Search]." + no_matched_tabs_text.v_pad="10" no_visible_tabs_text.value="There are no any outfits. Try [secondlife:///app/search/all/ Search]." follows="all" height="400" diff --git a/indra/newview/skins/default/xui/en/panel_people.xml b/indra/newview/skins/default/xui/en/panel_people.xml index b79ef1e287b58d2bc364b20a31cd820c8acb72e7..7cd0d5b5f04a5c50ec08f43cadffb8ea50df86db 100644 --- a/indra/newview/skins/default/xui/en/panel_people.xml +++ b/indra/newview/skins/default/xui/en/panel_people.xml @@ -95,8 +95,6 @@ Looking for people to hang out with? Try the [secondlife:///app/worldmap World M width="313"> <avatar_list allow_select="true" - bg_alpha_color="DkGray2" - bg_opaque_color="DkGray2" follows="all" height="356" ignore_online_status="true" @@ -300,16 +298,11 @@ Looking for people to hang out with? Try the [secondlife:///app/worldmap World M --> <group_list allow_select="true" - background_visible="true" - bg_alpha_color="DkGray2" - bg_opaque_color="DkGray2" follows="all" height="356" layout="topleft" left="3" name="group_list" - no_filtered_groups_msg="[secondlife:///app/search/groups Try finding the group in search?]" - no_groups_msg="[secondlife:///app/search/groups Try searching for some groups to join.]" top="0" width="307" /> <panel @@ -386,9 +379,6 @@ Looking for people to hang out with? Try the [secondlife:///app/worldmap World M width="313"> <avatar_list allow_select="true" - background_visible="true" - bg_alpha_color="DkGray2" - bg_opaque_color="DkGray2" follows="all" height="356" layout="topleft" diff --git a/indra/newview/skins/default/xui/en/panel_picks.xml b/indra/newview/skins/default/xui/en/panel_picks.xml index 0093a08e15d40c560221901976eeaa01fddee693..a815cdf7f05b4f5ac119813fda04835fd3204552 100644 --- a/indra/newview/skins/default/xui/en/panel_picks.xml +++ b/indra/newview/skins/default/xui/en/panel_picks.xml @@ -38,7 +38,6 @@ bg_opaque_color="DkGray2" single_expansion="true" width="313"> <accordion_tab - can_resize="false" layout="topleft" height="235" min_height="150" @@ -56,7 +55,6 @@ bg_opaque_color="DkGray2" width="313" /> </accordion_tab> <accordion_tab - can_resize="false" layout="topleft" height="235" name="tab_classifieds" diff --git a/indra/newview/skins/default/xui/en/panel_place_profile.xml b/indra/newview/skins/default/xui/en/panel_place_profile.xml index 55e0184282474c3715e336ffa3623dc9b1f17848..35e80758966623665c40d42ee93d918a60e21c7c 100644 --- a/indra/newview/skins/default/xui/en/panel_place_profile.xml +++ b/indra/newview/skins/default/xui/en/panel_place_profile.xml @@ -200,7 +200,8 @@ width="310"> <texture_picker enabled="false" - follows="left|top|right" + fallback_image="default_land_picture.j2c" + follows="left|top|right" height="197" layout="topleft" left="11" diff --git a/indra/newview/skins/default/xui/en/panel_preferences_privacy.xml b/indra/newview/skins/default/xui/en/panel_preferences_privacy.xml index fca9b4bca157861e6e54f55b1ab3d8ed3d034f23..4ebd4c76f897c4bac86d4708af6cd57257028a19 100644 --- a/indra/newview/skins/default/xui/en/panel_preferences_privacy.xml +++ b/indra/newview/skins/default/xui/en/panel_preferences_privacy.xml @@ -162,8 +162,9 @@ name="block_list" top_pad="20" width="145"> - <button.commit_callback - function="SideTray.ShowPanel" - parameter="panel_block_list_sidetray" /> + <!--<button.commit_callback + function="SideTray.ShowPanel"--> + <button.commit_callback + function="Pref.BlockList"/> </button> </panel> diff --git a/indra/newview/skins/default/xui/en/panel_profile.xml b/indra/newview/skins/default/xui/en/panel_profile.xml index d7a601d7a3393eab7e31f08bc7cd98ab16da518e..fc33836c79d8b28c64d9fc65461b453a8cf5ff67 100644 --- a/indra/newview/skins/default/xui/en/panel_profile.xml +++ b/indra/newview/skins/default/xui/en/panel_profile.xml @@ -83,6 +83,7 @@ allow_no_texture="true" default_image_name="None" enabled="false" + fallback_image="Generic_Person_Large" follows="top|left" height="124" layout="topleft" @@ -130,6 +131,7 @@ allow_no_texture="true" default_image_name="None" enabled="false" + fallback_image="Generic_Person_Large" follows="top|left" height="124" layout="topleft" diff --git a/indra/newview/skins/default/xui/en/panel_toast.xml b/indra/newview/skins/default/xui/en/panel_toast.xml index 92b4c17247de325b77fd0730e2005388f5d44f2e..42f64c3a76e2487e670555787fc2c9988c498d0d 100644 --- a/indra/newview/skins/default/xui/en/panel_toast.xml +++ b/indra/newview/skins/default/xui/en/panel_toast.xml @@ -31,8 +31,6 @@ can_close="false" can_dock="false" border_visible = "false" - border_drop_shadow_visible = "false" - drop_shadow_visible = "false" border = "false" > <panel diff --git a/indra/newview/skins/default/xui/en/panel_topinfo_bar.xml b/indra/newview/skins/default/xui/en/panel_topinfo_bar.xml index d3fb77f135f26b49800c16680e6ed868977a4a02..d8f4297e0ccbbad71ac5ca8ebc0d8e737ba05cbe 100644 --- a/indra/newview/skins/default/xui/en/panel_topinfo_bar.xml +++ b/indra/newview/skins/default/xui/en/panel_topinfo_bar.xml @@ -10,7 +10,6 @@ name="topinfo_bar" width="1024"> <button - border="true" follows="left|top" height="16" hover_glow_amount="0.15" diff --git a/indra/newview/skins/default/xui/en/sidepanel_item_info.xml b/indra/newview/skins/default/xui/en/sidepanel_item_info.xml index b3bc618eec4157410a002608fc9e88558bf77388..f3912b513302cd55f131e2d3a04d8ef6ee81c7f1 100644 --- a/indra/newview/skins/default/xui/en/sidepanel_item_info.xml +++ b/indra/newview/skins/default/xui/en/sidepanel_item_info.xml @@ -1,12 +1,10 @@ <?xml version="1.0" encoding="utf-8" standalone="yes" ?> <panel - auto_tile="true" height="570" layout="topleft" name="item properties" help_topic="item_properties" - save_rect="true" - title="Object Profile" + title="Item Profile" width="333"> <panel.string name="unknown"> @@ -60,7 +58,7 @@ text_color="LtGray" top="2" use_ellipses="true" - value="Object Profile" + value="Item Profile" width="275" /> <text follows="top|left" diff --git a/indra/newview/skins/default/xui/en/sidepanel_task_info.xml b/indra/newview/skins/default/xui/en/sidepanel_task_info.xml index faa1ae4e8bc644e8aa9a9f04a9c3271ffd955337..ef7ec74b5a2fd5bad9cd727d9acf5e9f193366ad 100644 --- a/indra/newview/skins/default/xui/en/sidepanel_task_info.xml +++ b/indra/newview/skins/default/xui/en/sidepanel_task_info.xml @@ -1,11 +1,9 @@ <?xml version="1.0" encoding="utf-8" standalone="yes" ?> <panel - auto_tile="true" height="570" layout="topleft" name="object properties" help_topic="object_properties" - save_rect="true" title="Object Profile" width="333"> <panel.string @@ -219,7 +217,6 @@ left_pad="0" top_delta="0" name="button set group" - picture_style="true" tab_stop="false" tool_tip="Choose a group to share this object's permissions" width="10" /> diff --git a/indra/newview/skins/default/xui/en/strings.xml b/indra/newview/skins/default/xui/en/strings.xml index 68eea8dc9a6b1d332d0f1a239d74f22bbe4a1386..799d440292ca93091c9d7e7d5a01b4fe3ecf4773 100644 --- a/indra/newview/skins/default/xui/en/strings.xml +++ b/indra/newview/skins/default/xui/en/strings.xml @@ -136,7 +136,8 @@ <string name="RetrievingData">Retrieving...</string> <string name="ReleaseNotes">Release Notes</string> - <string name="RELEASE_NOTES_BASE_URL">http://wiki.secondlife.com/wiki/Release_Notes/</string> + <!-- Always mark translate="false" for strings that are nothing but URLs, as they don't need translation. --> + <string name="RELEASE_NOTES_BASE_URL" translate="false">http://wiki.secondlife.com/wiki/Release_Notes/</string> <!-- Indicates something is being loaded. Maybe should be merged with RetrievingData --> <string name="LoadingData">Loading...</string> @@ -1812,7 +1813,8 @@ Clears (deletes) the media and all params from the given face. <string name="skirt">Skirt</string> <string name="alpha">Alpha</string> <string name="tattoo">Tattoo</string> - <string name="invalid">invalid</string> + <string name="invalid">invalid</string> + <string name="none">none</string> <!-- Not Worn Wearable Types --> <string name="shirt_not_worn">Shirt not worn</string> diff --git a/indra/newview/skins/default/xui/en/widgets/search_combo_box.xml b/indra/newview/skins/default/xui/en/widgets/search_combo_box.xml index 5d429d5b5b989a67e46fd7a4af5748352335c631..ce84cfedc0a5d7a1a299634f66e6b0dbb452018e 100644 --- a/indra/newview/skins/default/xui/en/widgets/search_combo_box.xml +++ b/indra/newview/skins/default/xui/en/widgets/search_combo_box.xml @@ -1,15 +1,12 @@ <?xml version="1.0" encoding="utf-8" standalone="yes" ?> <search_combo_box allow_text_entry="true" - list_position="BELOW" + list_position="below" show_text_as_tentative="false" dropdown_button_visible="false" max_chars="256" name="parent" - allow_new_values="true" - background_image="TextField_Search_Off" - background_image_disabled="TextField_Search_Disabled" - background_image_focused="TextField_Search_Active"> + allow_new_values="true"> <combo_editor name="child1" select_on_focus="true" diff --git a/indra/newview/skins/default/xui/fr/floater_sell_land.xml b/indra/newview/skins/default/xui/fr/floater_sell_land.xml index d79726e8e2cd1eb6d6d9bbc1bcf317bd595c3982..b5ffc8f9c7de001bb9b9d7a8f8fa2a2fff4b5992 100644 --- a/indra/newview/skins/default/xui/fr/floater_sell_land.xml +++ b/indra/newview/skins/default/xui/fr/floater_sell_land.xml @@ -45,7 +45,7 @@ </combo_box> <button label="Sélectionner" name="sell_to_select_agent" width="100"/> <text name="sell_objects_label"> - 3. Vendez-vous les objets avec ce terrain ? + 3. Vendre les objets avec ce terrain ? </text> <text name="sell_objects_text"> Les objets transférables se trouvant sur la parcelle changeront de propriétaire. diff --git a/indra/newview/skins/paths.xml b/indra/newview/skins/paths.xml index 3b91a904b0f2aab15956fc4051ec8062712b5c69..e6d68488ea0622426386bb12d705888d556f51c2 100644 --- a/indra/newview/skins/paths.xml +++ b/indra/newview/skins/paths.xml @@ -1,4 +1,10 @@ <paths> - <directory>xui/en</directory> - <directory>xui/[LANGUAGE]</directory> + <directory> + <subdir>xui</subdir> + <subdir>en</subdir> + </directory> + <directory> + <subdir>xui</subdir> + <subdir>[LANGUAGE]</subdir> + </directory> </paths> \ No newline at end of file