diff options
| author | Yuri Chebotarev <ychebotarev@productengine.com> | 2010-06-09 19:08:16 +0300 | 
|---|---|---|
| committer | Yuri Chebotarev <ychebotarev@productengine.com> | 2010-06-09 19:08:16 +0300 | 
| commit | 4f34d63f3e9b2d70bd24c2f49cce98da30df050e (patch) | |
| tree | e34b76fc7ad3ac87a791fba44a0778fd3b2c8342 /indra/newview | |
| parent | d807db70e02c5e0d7232a1ccf134456f619c94ba (diff) | |
| parent | 4976323af8fae67a06e856bc9801635da5bfd79f (diff) | |
merge
--HG--
branch : product-engine
Diffstat (limited to 'indra/newview')
72 files changed, 990 insertions, 557 deletions
| diff --git a/indra/newview/app_settings/settings.xml b/indra/newview/app_settings/settings.xml index 0af77b6a84..d4aebe6cb1 100644 --- a/indra/newview/app_settings/settings.xml +++ b/indra/newview/app_settings/settings.xml @@ -583,7 +583,7 @@        <key>Type</key>        <string>U32</string>        <key>Value</key> -      <integer>180</integer> +      <integer>120</integer>      </map>      <key>AvatarSex</key>      <map> diff --git a/indra/newview/llagentcamera.cpp b/indra/newview/llagentcamera.cpp index 644363826a..c3f075fd49 100644 --- a/indra/newview/llagentcamera.cpp +++ b/indra/newview/llagentcamera.cpp @@ -2360,6 +2360,7 @@ void LLAgentCamera::changeCameraToCustomizeAvatar(BOOL avatar_animate, BOOL came  				mAnimationDuration = gSavedSettings.getF32("ZoomTime");  			}  		} +		gAgentAvatarp->updateMeshTextures();  	}  	else  	{ diff --git a/indra/newview/llagentwearables.cpp b/indra/newview/llagentwearables.cpp index cfa0a4d729..342f9a5d80 100644 --- a/indra/newview/llagentwearables.cpp +++ b/indra/newview/llagentwearables.cpp @@ -751,7 +751,7 @@ U32 LLAgentWearables::pushWearable(const LLWearableType::EType type, LLWearable  void LLAgentWearables::wearableUpdated(LLWearable *wearable)  { -	gAgentAvatarp->wearableUpdated(wearable->getType(), TRUE); +	gAgentAvatarp->wearableUpdated(wearable->getType(), FALSE);  	wearable->refreshName();  	wearable->setLabelUpdated(); @@ -795,7 +795,7 @@ void LLAgentWearables::popWearable(const LLWearableType::EType type, U32 index)  	if (wearable)  	{  		mWearableDatas[type].erase(mWearableDatas[type].begin() + index); -		gAgentAvatarp->wearableUpdated(wearable->getType(), TRUE); +		gAgentAvatarp->wearableUpdated(wearable->getType(), FALSE);  		wearable->setLabelUpdated();  	}  } @@ -2006,6 +2006,8 @@ bool LLAgentWearables::moveWearable(const LLViewerInventoryItem* item, bool clos  // static  void LLAgentWearables::createWearable(LLWearableType::EType type, bool wear, const LLUUID& parent_id)  { +	if (type == LLWearableType::WT_INVALID || type == LLWearableType::WT_NONE) return; +  	LLWearable* wearable = LLWearableList::instance().createNewWearable(type);  	LLAssetType::EType asset_type = wearable->getAssetType();  	LLInventoryType::EType inv_type = LLInventoryType::IT_WEARABLE; diff --git a/indra/newview/llappearancemgr.cpp b/indra/newview/llappearancemgr.cpp index 135629bb8d..12d2752180 100644 --- a/indra/newview/llappearancemgr.cpp +++ b/indra/newview/llappearancemgr.cpp @@ -2139,7 +2139,7 @@ bool LLAppearanceMgr::moveWearable(LLViewerInventoryItem* item, bool closer_to_b  	bool result = false;  	if (result = gAgentWearables.moveWearable(item, closer_to_body))  	{ -		gAgentAvatarp->wearableUpdated(item->getWearableType(), TRUE); +		gAgentAvatarp->wearableUpdated(item->getWearableType(), FALSE);  	}  	setOutfitDirty(true); diff --git a/indra/newview/llavataractions.cpp b/indra/newview/llavataractions.cpp index 01d6c3a8d5..2dafe295fe 100644 --- a/indra/newview/llavataractions.cpp +++ b/indra/newview/llavataractions.cpp @@ -656,6 +656,8 @@ void LLAvatarActions::shareWithAvatars()  	LLFloaterAvatarPicker* picker =  		LLFloaterAvatarPicker::show(boost::bind(give_inventory, _1, _2), TRUE, FALSE);  	picker->setOkBtnEnableCb(boost::bind(is_give_inventory_acceptable)); +	picker->openFriendsTab(); +	LLNotificationsUtil::add("ShareNotification");  }  // static diff --git a/indra/newview/llcofwearables.cpp b/indra/newview/llcofwearables.cpp index 916d53da3c..611396b0e5 100644 --- a/indra/newview/llcofwearables.cpp +++ b/indra/newview/llcofwearables.cpp @@ -58,13 +58,19 @@ static const LLWearableItemNameComparator WEARABLE_NAME_COMPARATOR;  class CofContextMenu : public LLListContextMenu  {  protected: -	static void updateCreateWearableLabel(LLMenuGL* menu, const LLUUID& item_id) +	CofContextMenu(LLCOFWearables* cof_wearables) +	:	mCOFWearables(cof_wearables) +	{ +		llassert(mCOFWearables); +	} + +	void updateCreateWearableLabel(LLMenuGL* menu, const LLUUID& item_id)  	{  		LLMenuItemGL* menu_item = menu->getChild<LLMenuItemGL>("create_new"); +		LLWearableType::EType w_type = getWearableType(item_id);  		// Hide the "Create new <WEARABLE_TYPE>" if it's irrelevant. -		LLViewerInventoryItem* item = gInventory.getLinkedItem(item_id); -		if (!item || !item->isWearableType()) +		if (w_type == LLWearableType::WT_NONE)  		{  			menu_item->setVisible(FALSE);  			return; @@ -72,25 +78,67 @@ protected:  		// Set proper label for the "Create new <WEARABLE_TYPE>" menu item.  		LLStringUtil::format_map_t args; -		LLWearableType::EType w_type = item->getWearableType();  		args["[WEARABLE_TYPE]"] = LLWearableType::getTypeDefaultNewName(w_type);  		std::string new_label = LLTrans::getString("CreateNewWearable", args);  		menu_item->setLabel(new_label);  	} -	static void createNew(const LLUUID& item_id) +	void createNew(const LLUUID& item_id)  	{ -		LLViewerInventoryItem* item = gInventory.getLinkedItem(item_id); -		if (!item || !item->isWearableType()) return; +		LLAgentWearables::createWearable(getWearableType(item_id), true); +	} + +	// Get wearable type of the given item. +	// +	// There is a special case: so-called "dummy items" +	// (i.e. the ones that are there just to indicate that you're not wearing +	// any wearables of the corresponding type. They are currently grayed out +	// and suffixed with "not worn"). +	// Those items don't have an UUID, but they do have an associated wearable type. +	// If the user has invoked context menu for such item, +	// we ignore the passed item_id and retrieve wearable type from the item. +	LLWearableType::EType getWearableType(const LLUUID& item_id) +	{ +		if (!isDummyItem(item_id)) +		{ +			LLViewerInventoryItem* item = gInventory.getLinkedItem(item_id); +			if (item && item->isWearableType()) +			{ +				return item->getWearableType(); +			} +		} +		else if (mCOFWearables) // dummy item selected +		{ +			LLPanelDummyClothingListItem* item; + +			item = dynamic_cast<LLPanelDummyClothingListItem*>(mCOFWearables->getSelectedItem()); +			if (item) +			{ +				return item->getWearableType(); +			} +		} + +		return LLWearableType::WT_NONE; +	} -		LLAgentWearables::createWearable(item->getWearableType(), true); +	static bool isDummyItem(const LLUUID& item_id) +	{ +		return item_id.isNull();  	} + +	LLCOFWearables* mCOFWearables;  };  ////////////////////////////////////////////////////////////////////////// -class CofAttachmentContextMenu : public LLListContextMenu +class CofAttachmentContextMenu : public CofContextMenu  { +public: +	CofAttachmentContextMenu(LLCOFWearables* cof_wearables) +	:	CofContextMenu(cof_wearables) +	{ +	} +  protected:  	/*virtual*/ LLContextMenu* createMenu() @@ -108,8 +156,13 @@ protected:  class CofClothingContextMenu : public CofContextMenu  { -protected: +public: +	CofClothingContextMenu(LLCOFWearables* cof_wearables) +	:	CofContextMenu(cof_wearables) +	{ +	} +protected:  	/*virtual*/ LLContextMenu* createMenu()  	{  		LLUICtrl::CommitCallbackRegistry::ScopedRegistrar registrar; @@ -121,7 +174,7 @@ protected:  		registrar.add("Clothing.MoveUp", boost::bind(moveWearable, selected_id, false));  		registrar.add("Clothing.MoveDown", boost::bind(moveWearable, selected_id, true));  		registrar.add("Clothing.Edit", boost::bind(LLAgentWearables::editWearable, selected_id)); -		registrar.add("Clothing.Create", boost::bind(createNew, selected_id)); +		registrar.add("Clothing.Create", boost::bind(&CofClothingContextMenu::createNew, this, selected_id));  		enable_registrar.add("Clothing.OnEnable", boost::bind(&CofClothingContextMenu::onEnable, this, _2)); @@ -171,8 +224,13 @@ protected:  class CofBodyPartContextMenu : public CofContextMenu  { -protected: +public: +	CofBodyPartContextMenu(LLCOFWearables* cof_wearables) +	:	CofContextMenu(cof_wearables) +	{ +	} +protected:  	/*virtual*/ LLContextMenu* createMenu()  	{  		LLUICtrl::CommitCallbackRegistry::ScopedRegistrar registrar; @@ -184,7 +242,7 @@ protected:  		LLPanelOutfitEdit* panel_oe = dynamic_cast<LLPanelOutfitEdit*>(LLSideTray::getInstance()->getPanel("panel_outfit_edit"));  		registrar.add("BodyPart.Replace", boost::bind(&LLPanelOutfitEdit::onReplaceBodyPartMenuItemClicked, panel_oe, selected_id));  		registrar.add("BodyPart.Edit", boost::bind(LLAgentWearables::editWearable, selected_id)); -		registrar.add("BodyPart.Create", boost::bind(createNew, selected_id)); +		registrar.add("BodyPart.Create", boost::bind(&CofBodyPartContextMenu::createNew, this, selected_id));  		enable_registrar.add("BodyPart.OnEnable", boost::bind(&CofBodyPartContextMenu::onEnable, this, _2)); @@ -219,9 +277,9 @@ LLCOFWearables::LLCOFWearables() : LLPanel(),  	mBodyParts(NULL),  	mLastSelectedList(NULL)  { -	mClothingMenu = new CofClothingContextMenu(); -	mAttachmentMenu = new CofAttachmentContextMenu(); -	mBodyPartMenu = new CofBodyPartContextMenu(); +	mClothingMenu = new CofClothingContextMenu(this); +	mAttachmentMenu = new CofAttachmentContextMenu(this); +	mBodyPartMenu = new CofBodyPartContextMenu(this);  };  LLCOFWearables::~LLCOFWearables() diff --git a/indra/newview/llfloateravatarpicker.cpp b/indra/newview/llfloateravatarpicker.cpp index 96364f9418..8f6816b845 100644 --- a/indra/newview/llfloateravatarpicker.cpp +++ b/indra/newview/llfloateravatarpicker.cpp @@ -446,6 +446,19 @@ BOOL LLFloaterAvatarPicker::handleDragAndDrop(S32 x, S32 y, MASK mask,  	return TRUE;  } + +void LLFloaterAvatarPicker::openFriendsTab() +{ +	LLTabContainer* tab_container = getChild<LLTabContainer>("ResidentChooserTabs"); +	if (tab_container == NULL) +	{ +		llassert(tab_container != NULL); +		return; +	} + +	tab_container->selectTabByName("FriendsPanel"); +} +  // static   void LLFloaterAvatarPicker::processAvatarPickerReply(LLMessageSystem* msg, void**)  { diff --git a/indra/newview/llfloateravatarpicker.h b/indra/newview/llfloateravatarpicker.h index e69b814f9f..0af72e85a0 100644 --- a/indra/newview/llfloateravatarpicker.h +++ b/indra/newview/llfloateravatarpicker.h @@ -66,6 +66,8 @@ public:  						   void *cargo_data, EAcceptance *accept,  						   std::string& tooltip_msg); +	void openFriendsTab(); +  private:  	void editKeystroke(class LLLineEditor* caller, void* user_data); diff --git a/indra/newview/llfloatersnapshot.cpp b/indra/newview/llfloatersnapshot.cpp index 5bea3325a8..00981d3c25 100644 --- a/indra/newview/llfloatersnapshot.cpp +++ b/indra/newview/llfloatersnapshot.cpp @@ -91,10 +91,6 @@  ///----------------------------------------------------------------------------  /// Local function declarations, constants, enums, and typedefs  ///---------------------------------------------------------------------------- -S32 LLFloaterSnapshot::sUIWinHeightLong = 526 ; -S32 LLFloaterSnapshot::sUIWinHeightShort = LLFloaterSnapshot::sUIWinHeightLong - 230 ; -S32 LLFloaterSnapshot::sUIWinWidth = 215 ; -  LLSnapshotFloaterView* gSnapshotFloaterView = NULL;  const F32 AUTO_SNAPSHOT_TIME_DELAY = 1.f; @@ -1172,9 +1168,6 @@ public:  	}  	static void onClickNewSnapshot(void* data);  	static void onClickAutoSnap(LLUICtrl *ctrl, void* data); -	//static void onClickAdvanceSnap(LLUICtrl *ctrl, void* data); -	static void onClickLess(void* data) ; -	static void onClickMore(void* data) ;  	static void onClickUICheck(LLUICtrl *ctrl, void* data);  	static void onClickHUDCheck(LLUICtrl *ctrl, void* data);  	static void onClickKeepOpenCheck(LLUICtrl *ctrl, void* data); @@ -1188,7 +1181,7 @@ public:  	static void onCommitCustomResolution(LLUICtrl *ctrl, void* data);  	static void onCommitSnapshot(LLFloaterSnapshot* view, LLSnapshotLivePreview::ESnapshotType type);  	static void onCommitProfilePic(LLFloaterSnapshot* view); -	static void onToggleAdvanced(LLUICtrl *ctrl, void* data); +	static void showAdvanced(LLFloaterSnapshot* view, const BOOL visible);  	static void resetSnapshotSizeOnUI(LLFloaterSnapshot *view, S32 width, S32 height) ;  	static BOOL checkImageSize(LLSnapshotLivePreview* previewp, S32& width, S32& height, BOOL isWidthChanged, S32 max_value); @@ -1399,41 +1392,6 @@ void LLFloaterSnapshot::Impl::onClickAutoSnap(LLUICtrl *ctrl, void* data)  	}  } -void LLFloaterSnapshot::Impl::onClickMore(void* data) -{ -	gSavedSettings.setBOOL( "AdvanceSnapshot", TRUE ); -	 -	LLFloaterSnapshot *view = (LLFloaterSnapshot *)data;		 -	if (view) -	{ -		view->translate( 0, view->getUIWinHeightShort() - view->getUIWinHeightLong() ); -		view->reshape(view->getRect().getWidth(), view->getUIWinHeightLong()); -		updateControls(view) ; -		updateLayout(view) ; -		if(getPreviewView(view)) -		{ -			getPreviewView(view)->setThumbnailImageSize() ; -		} -	} -} -void LLFloaterSnapshot::Impl::onClickLess(void* data) -{ -	gSavedSettings.setBOOL( "AdvanceSnapshot", FALSE ); -	 -	LLFloaterSnapshot *view = (LLFloaterSnapshot *)data;		 -	if (view) -	{ -		view->translate( 0, view->getUIWinHeightLong() - view->getUIWinHeightShort() ); -		view->reshape(view->getRect().getWidth(), view->getUIWinHeightShort()); -		updateControls(view) ; -		updateLayout(view) ; -		if(getPreviewView(view)) -		{ -			getPreviewView(view)->setThumbnailImageSize() ; -		} -	} -} -  // static  void LLFloaterSnapshot::Impl::onClickUICheck(LLUICtrl *ctrl, void* data)  { @@ -1691,30 +1649,28 @@ void LLFloaterSnapshot::Impl::onCommitLayerTypes(LLUICtrl* ctrl, void*data)  }  //static  -void LLFloaterSnapshot::Impl::onToggleAdvanced(LLUICtrl* ctrl, void* data) +void LLFloaterSnapshot::Impl::showAdvanced(LLFloaterSnapshot* view, const BOOL visible)  { -	LLFloaterSnapshot *view = (LLFloaterSnapshot *)data; -  	LLPanel* advanced_panel = view->getChild<LLPanel>("snapshot_advanced"); -	if (advanced_panel->getVisible()) +	if (advanced_panel->getVisible() != visible)  	{ -		advanced_panel->setVisible(false); +		gSavedSettings.setBOOL("AdvanceSnapshot", visible); -		// shrink floater back to original size -		view->reshape(view->getRect().getWidth() - advanced_panel->getRect().getWidth(), view->getRect().getHeight()); +		advanced_panel->setVisible(visible); +		view->getChild<LLButton>("hide_advanced")->setVisible(visible); +		view->getChild<LLButton>("show_advanced")->setVisible(!visible); -		view->getChild<LLButton>("hide_advanced")->setVisible(false); -		view->getChild<LLButton>("show_advanced")->setVisible(true); -	} -	else -	{ -		advanced_panel->setVisible(true); -		// stretch the floater so it can accommodate the advanced panel -		view->reshape(view->getRect().getWidth() + advanced_panel->getRect().getWidth(), view->getRect().getHeight()); - -		view->getChild<LLButton>("hide_advanced")->setVisible(true); -		view->getChild<LLButton>("show_advanced")->setVisible(false); +		if (visible) +		{ +			// stretch the floater so it can accommodate the advanced panel +			view->reshape(view->getRect().getWidth() + advanced_panel->getRect().getWidth(), view->getRect().getHeight()); +		} +		else +		{ +			// shrink floater back to original size +			view->reshape(view->getRect().getWidth() - advanced_panel->getRect().getWidth(), view->getRect().getHeight()); +		}  	}  } @@ -2002,6 +1958,11 @@ LLFloaterSnapshot::LLFloaterSnapshot(const LLSD& key)  	  impl (*(new Impl))  {  	//Called from floater reg: LLUICtrlFactory::getInstance()->buildFloater(this, "floater_snapshot.xml", FALSE); + +	mCommitCallbackRegistrar.add("Snapshot.ShowButtons",  boost::bind(&LLFloaterSnapshot::updateButtons, this, _2)); +	mCommitCallbackRegistrar.add("Snapshot.ShowAdvanced", boost::bind(&Impl::showAdvanced, this, true)); +	mCommitCallbackRegistrar.add("Snapshot.HideAdvanced", boost::bind(&Impl::showAdvanced, this, false)); +	mCommitCallbackRegistrar.add("Snapshot.Refresh", boost::bind(&Impl::onClickNewSnapshot, this));  }  // Destroys the object @@ -2023,27 +1984,14 @@ LLFloaterSnapshot::~LLFloaterSnapshot()  BOOL LLFloaterSnapshot::postBuild()  { - -	getChild<LLButton>("share")->setCommitCallback(boost::bind(&LLFloaterSnapshot::updateButtons, this, SNAPSHOT_SHARE)); -	getChild<LLButton>("save")->setCommitCallback(boost::bind(&LLFloaterSnapshot::updateButtons, this, SNAPSHOT_SAVE)); -	getChild<LLButton>("cancel")->setCommitCallback(boost::bind(&LLFloaterSnapshot::updateButtons, this, SNAPSHOT_MAIN)); -  	getChild<LLButton>("share_to_web")->setCommitCallback(boost::bind(&Impl::onCommitSnapshot, this, LLSnapshotLivePreview::SNAPSHOT_WEB));  	getChild<LLButton>("share_to_email")->setCommitCallback(boost::bind(&Impl::onCommitSnapshot, this, LLSnapshotLivePreview::SNAPSHOT_POSTCARD));  	getChild<LLButton>("save_to_inventory")->setCommitCallback(boost::bind(&Impl::onCommitSnapshot, this, LLSnapshotLivePreview::SNAPSHOT_TEXTURE));  	getChild<LLButton>("save_to_computer")->setCommitCallback(boost::bind(&Impl::onCommitSnapshot, this, LLSnapshotLivePreview::SNAPSHOT_LOCAL));  	getChild<LLButton>("set_profile_pic")->setCommitCallback(boost::bind(&Impl::onCommitProfilePic, this)); -	childSetCommitCallback("show_advanced", Impl::onToggleAdvanced, this); -	childSetCommitCallback("hide_advanced", Impl::onToggleAdvanced, this); -  	childSetCommitCallback("local_format_combo", Impl::onCommitSnapshotFormat, this); -	childSetAction("new_snapshot_btn", Impl::onClickNewSnapshot, this); - -	childSetAction("more_btn", Impl::onClickMore, this); -	childSetAction("less_btn", Impl::onClickLess, this); -  	childSetCommitCallback("image_quality_slider", Impl::onCommitQuality, this);  	childSetValue("image_quality_slider", gSavedSettings.getS32("SnapshotQuality")); @@ -2095,12 +2043,13 @@ BOOL LLFloaterSnapshot::postBuild()  	impl.mPreviewHandle = previewp->getHandle();  	impl.updateControls(this);  	impl.updateLayout(this); +	impl.showAdvanced(this, gSavedSettings.getBOOL("AdvanceSnapshot"));  	//save off the refresh button's rectangle so we can apply offsets with thumbnail resize   	mRefreshBtnRect = getChild<LLButton>("new_snapshot_btn")->getRect();  	// make sure we share/hide the general buttons  -	updateButtons(SNAPSHOT_MAIN); +	updateButtons(LLSD("main"));  	return LLDockableFloater::postBuild();  } @@ -2190,19 +2139,20 @@ void LLFloaterSnapshot::update()  	}  } -bool LLFloaterSnapshot::updateButtons(ESnapshotMode mode) +bool LLFloaterSnapshot::updateButtons(const LLSD& mode)  { -	childSetVisible("share", mode == SNAPSHOT_MAIN); -	childSetVisible("save", mode == SNAPSHOT_MAIN); -	childSetVisible("set_profile_pic", mode == SNAPSHOT_MAIN); +	std::string button_mode = mode.asString(); -//	childSetVisible("share_to_web", mode == SNAPSHOT_SHARE); -	childSetVisible("share_to_email", mode == SNAPSHOT_SHARE); +	bool mode_main("main" == button_mode); +	bool mode_share("share" == button_mode); +	bool mode_save("save" == button_mode); -	childSetVisible("save_to_inventory", mode == SNAPSHOT_SAVE); -	childSetVisible("save_to_computer", mode == SNAPSHOT_SAVE); +	// Default to a known state if mode is invalid. +	if (!mode_main && !mode_share && !mode_save) mode_main = true; -	childSetVisible("cancel", mode != SNAPSHOT_MAIN);	 +	childSetVisible("panel_snapshot_main", mode_main); +	childSetVisible("panel_snapshot_share", mode_share); +	childSetVisible("panel_snapshot_save", mode_save);  	return true;  } diff --git a/indra/newview/llfloatersnapshot.h b/indra/newview/llfloatersnapshot.h index 931d355748..8c4373c35c 100644 --- a/indra/newview/llfloatersnapshot.h +++ b/indra/newview/llfloatersnapshot.h @@ -47,13 +47,6 @@ public:  		SNAPSHOT_FORMAT_BMP  	} ESnapshotFormat; -	enum ESnapshotMode -	{ -		SNAPSHOT_SHARE, -		SNAPSHOT_SAVE, -		SNAPSHOT_MAIN -	}; -  	LLFloaterSnapshot(const LLSD& key);  	virtual ~LLFloaterSnapshot(); @@ -66,7 +59,7 @@ public:  	void setAsProfilePic(const LLUUID& image_id); -	bool updateButtons(ESnapshotMode mode); +	bool updateButtons(const LLSD& mode);  	static S32  getUIWinHeightLong()  {return sUIWinHeightLong ;}  	static S32  getUIWinHeightShort() {return sUIWinHeightShort ;} diff --git a/indra/newview/llinventorybridge.cpp b/indra/newview/llinventorybridge.cpp index 3a9c5ba698..94d421f61c 100644 --- a/indra/newview/llinventorybridge.cpp +++ b/indra/newview/llinventorybridge.cpp @@ -2208,13 +2208,7 @@ void LLFolderBridge::determineFolderType()  BOOL LLFolderBridge::isItemRenameable() const  { -	LLViewerInventoryCategory* cat = (LLViewerInventoryCategory*)getCategory(); -	if(cat && !LLFolderType::lookupIsProtectedType(cat->getPreferredType()) -	   && (cat->getOwnerID() == gAgent.getID())) -	{ -		return TRUE; -	} -	return FALSE; +	return get_is_category_renameable(getInventoryModel(), mUUID);  }  void LLFolderBridge::restoreItem() diff --git a/indra/newview/llinventoryfunctions.cpp b/indra/newview/llinventoryfunctions.cpp index ca6cede7e9..c86d463a08 100644 --- a/indra/newview/llinventoryfunctions.cpp +++ b/indra/newview/llinventoryfunctions.cpp @@ -309,6 +309,11 @@ BOOL get_is_category_removable(const LLInventoryModel* model, const LLUUID& id)  BOOL get_is_category_renameable(const LLInventoryModel* model, const LLUUID& id)  { +	if (!model) +	{ +		return FALSE; +	} +  	LLViewerInventoryCategory* cat = model->getCategory(id);  	if (cat && !LLFolderType::lookupIsProtectedType(cat->getPreferredType()) && diff --git a/indra/newview/llinventorymodelbackgroundfetch.cpp b/indra/newview/llinventorymodelbackgroundfetch.cpp index b4f0947b2c..ce44e37017 100644 --- a/indra/newview/llinventorymodelbackgroundfetch.cpp +++ b/indra/newview/llinventorymodelbackgroundfetch.cpp @@ -33,15 +33,14 @@  #include "llviewerprecompiledheaders.h"  #include "llinventorymodelbackgroundfetch.h" -// Seraph clean this up  #include "llagent.h" +#include "llappviewer.h" +#include "llcallbacklist.h"  #include "llinventorypanel.h"  #include "llviewercontrol.h"  #include "llviewermessage.h" -#include "llviewerwindow.h" -#include "llappviewer.h"  #include "llviewerregion.h" -#include "llcallbacklist.h" +#include "llviewerwindow.h"  const F32 MAX_TIME_FOR_SINGLE_FETCH = 10.f;  const S32 MAX_FETCH_RETRIES = 10; @@ -63,47 +62,47 @@ LLInventoryModelBackgroundFetch::~LLInventoryModelBackgroundFetch()  {  } -bool LLInventoryModelBackgroundFetch::isBulkFetchProcessingComplete() +bool LLInventoryModelBackgroundFetch::isBulkFetchProcessingComplete() const  {  	return mFetchQueue.empty() && mBulkFetchCount<=0;  } -bool LLInventoryModelBackgroundFetch::libraryFetchStarted() +bool LLInventoryModelBackgroundFetch::libraryFetchStarted() const  {  	return mRecursiveLibraryFetchStarted;  } -bool LLInventoryModelBackgroundFetch::libraryFetchCompleted() +bool LLInventoryModelBackgroundFetch::libraryFetchCompleted() const  {  	return libraryFetchStarted() && fetchQueueContainsNoDescendentsOf(gInventory.getLibraryRootFolderID());  } -bool LLInventoryModelBackgroundFetch::libraryFetchInProgress() +bool LLInventoryModelBackgroundFetch::libraryFetchInProgress() const  {  	return libraryFetchStarted() && !libraryFetchCompleted();  } -bool LLInventoryModelBackgroundFetch::inventoryFetchStarted() +bool LLInventoryModelBackgroundFetch::inventoryFetchStarted() const  {  	return mRecursiveInventoryFetchStarted;  } -bool LLInventoryModelBackgroundFetch::inventoryFetchCompleted() +bool LLInventoryModelBackgroundFetch::inventoryFetchCompleted() const  {  	return inventoryFetchStarted() && fetchQueueContainsNoDescendentsOf(gInventory.getRootFolderID());  } -bool LLInventoryModelBackgroundFetch::inventoryFetchInProgress() +bool LLInventoryModelBackgroundFetch::inventoryFetchInProgress() const  {  	return inventoryFetchStarted() && !inventoryFetchCompleted();  } -bool LLInventoryModelBackgroundFetch::isEverythingFetched() +bool LLInventoryModelBackgroundFetch::isEverythingFetched() const  {  	return mAllFoldersFetched;  } -BOOL LLInventoryModelBackgroundFetch::backgroundFetchActive() +BOOL LLInventoryModelBackgroundFetch::backgroundFetchActive() const  {  	return mBackgroundFetchActive;  } @@ -132,7 +131,7 @@ void LLInventoryModelBackgroundFetch::start(const LLUUID& cat_id, BOOL recursive  		}  		else  		{ -			// specific folder requests go to front of queue +			// Specific folder requests go to front of queue.  			if (mFetchQueue.empty() || mFetchQueue.front().mCatUUID != cat_id)  			{  				mFetchQueue.push_front(FetchQueueInfo(cat_id, recursive)); @@ -187,7 +186,7 @@ void LLInventoryModelBackgroundFetch::backgroundFetch()  {  	if (mBackgroundFetchActive && gAgent.getRegion())  	{ -		//If we'll be using the capability, we'll be sending batches and the background thing isn't as important. +		// If we'll be using the capability, we'll be sending batches and the background thing isn't as important.  		std::string url = gAgent.getRegion()->getCapability("WebFetchInventoryDescendents");     		if (!url.empty())   		{ @@ -195,8 +194,12 @@ void LLInventoryModelBackgroundFetch::backgroundFetch()  			return;  		} -		//DEPRECATED OLD CODE FOLLOWS. -		// no more categories to fetch, stop fetch process +#if 1 +		//-------------------------------------------------------------------------------- +		// DEPRECATED OLD CODE +		// + +		// No more categories to fetch, stop fetch process.  		if (mFetchQueue.empty())  		{  			llinfos << "Inventory fetch completed" << llendl; @@ -209,11 +212,11 @@ void LLInventoryModelBackgroundFetch::backgroundFetch()  		F32 slow_fetch_time = lerp(mMinTimeBetweenFetches, mMaxTimeBetweenFetches, 0.5f);  		if (mTimelyFetchPending && mFetchTimer.getElapsedTimeF32() > slow_fetch_time)  		{ -			// double timeouts on failure +			// Double timeouts on failure.  			mMinTimeBetweenFetches = llmin(mMinTimeBetweenFetches * 2.f, 10.f);  			mMaxTimeBetweenFetches = llmin(mMaxTimeBetweenFetches * 2.f, 120.f);  			llinfos << "Inventory fetch times grown to (" << mMinTimeBetweenFetches << ", " << mMaxTimeBetweenFetches << ")" << llendl; -			// fetch is no longer considered "timely" although we will wait for full time-out +			// fetch is no longer considered "timely" although we will wait for full time-out.  			mTimelyFetchPending = FALSE;  		} @@ -226,14 +229,14 @@ void LLInventoryModelBackgroundFetch::backgroundFetch()  			if(gDisconnected)  			{ -				// just bail if we are disconnected. +				// Just bail if we are disconnected.  				break;  			}  			const FetchQueueInfo info = mFetchQueue.front();  			LLViewerInventoryCategory* cat = gInventory.getCategory(info.mCatUUID); -			// category has been deleted, remove from queue. +			// Category has been deleted, remove from queue.  			if (!cat)  			{  				mFetchQueue.pop_front(); @@ -243,8 +246,8 @@ void LLInventoryModelBackgroundFetch::backgroundFetch()  			if (mFetchTimer.getElapsedTimeF32() > mMinTimeBetweenFetches &&   				LLViewerInventoryCategory::VERSION_UNKNOWN == cat->getVersion())  			{ -				// category exists but has no children yet, fetch the descendants -				// for now, just request every time and rely on retry timer to throttle +				// Category exists but has no children yet, fetch the descendants +				// for now, just request every time and rely on retry timer to throttle.  				if (cat->fetch())  				{  					mFetchTimer.reset(); @@ -258,13 +261,13 @@ void LLInventoryModelBackgroundFetch::backgroundFetch()  					break;  				}  			} -			// do I have all my children? +			// Do I have all my children?  			else if (gInventory.isCategoryComplete(info.mCatUUID))  			{ -				// finished with this category, remove from queue +				// Finished with this category, remove from queue.  				mFetchQueue.pop_front(); -				// add all children to queue +				// Add all children to queue.  				LLInventoryModel::cat_array_t* categories;  				LLInventoryModel::item_array_t* items;  				gInventory.getDirectDescendentsOf(cat->getUUID(), categories, items); @@ -275,10 +278,10 @@ void LLInventoryModelBackgroundFetch::backgroundFetch()  					mFetchQueue.push_back(FetchQueueInfo((*it)->getUUID(),info.mRecursive));  				} -				// we received a response in less than the fast time +				// We received a response in less than the fast time.  				if (mTimelyFetchPending && mFetchTimer.getElapsedTimeF32() < fast_fetch_time)  				{ -					// shrink timeouts based on success +					// Shrink timeouts based on success.  					mMinTimeBetweenFetches = llmax(mMinTimeBetweenFetches * 0.8f, 0.3f);  					mMaxTimeBetweenFetches = llmax(mMaxTimeBetweenFetches * 0.8f, 10.f);  					//llinfos << "Inventory fetch times shrunk to (" << mMinTimeBetweenFetches << ", " << mMaxTimeBetweenFetches << ")" << llendl; @@ -289,8 +292,8 @@ void LLInventoryModelBackgroundFetch::backgroundFetch()  			}  			else if (mFetchTimer.getElapsedTimeF32() > mMaxTimeBetweenFetches)  			{ -				// received first packet, but our num descendants does not match db's num descendants -				// so try again later +				// Received first packet, but our num descendants does not match db's num descendants +				// so try again later.  				mFetchQueue.pop_front();  				if (mNumFetchRetries++ < MAX_FETCH_RETRIES) @@ -303,9 +306,14 @@ void LLInventoryModelBackgroundFetch::backgroundFetch()  				break;  			} -			// not enough time has elapsed to do a new fetch +			// Not enough time has elapsed to do a new fetch  			break;  		} + +		// +		// DEPRECATED OLD CODE +		//-------------------------------------------------------------------------------- +#endif  	}  } @@ -333,10 +341,10 @@ protected:  	BOOL getIsRecursive(const LLUUID& cat_id) const;  private:  	LLSD mRequestSD; -	uuid_vec_t mRecursiveCatUUIDs; // Hack for storing away which cat fetches are recursive. +	uuid_vec_t mRecursiveCatUUIDs; // hack for storing away which cat fetches are recursive  }; -//If we get back a normal response, handle it here +// If we get back a normal response, handle it here.  void LLInventoryModelFetchDescendentsResponder::result(const LLSD& content)  {  	LLInventoryModelBackgroundFetch *fetcher = LLInventoryModelBackgroundFetch::getInstance(); @@ -428,7 +436,7 @@ void LLInventoryModelFetchDescendentsResponder::result(const LLSD& content)  				gInventory.updateItem(titem);  			} -			// set version and descendentcount according to message. +			// Set version and descendentcount according to message.  			LLViewerInventoryCategory* cat = gInventory.getCategory(parent_id);  			if(cat)  			{ @@ -448,7 +456,7 @@ void LLInventoryModelFetchDescendentsResponder::result(const LLSD& content)  		{	  			LLSD folder_sd = *folder_it; -			//These folders failed on the dataserver.  We probably don't want to retry them. +			// These folders failed on the dataserver.  We probably don't want to retry them.  			llinfos << "Folder " << folder_sd["folder_id"].asString()   					<< "Error: " << folder_sd["error"].asString() << llendl;  		} @@ -465,7 +473,7 @@ void LLInventoryModelFetchDescendentsResponder::result(const LLSD& content)  	gInventory.notifyObservers("fetchDescendents");  } -//If we get back an error (not found, etc...), handle it here +// If we get back an error (not found, etc...), handle it here.  void LLInventoryModelFetchDescendentsResponder::error(U32 status, const std::string& reason)  {  	LLInventoryModelBackgroundFetch *fetcher = LLInventoryModelBackgroundFetch::getInstance(); @@ -475,7 +483,7 @@ void LLInventoryModelFetchDescendentsResponder::error(U32 status, const std::str  	fetcher->incrBulkFetch(-1); -	if (status==499) // Timed out. +	if (status==499) // timed out  	{  		for(LLSD::array_const_iterator folder_it = mRequestSD["folders"].beginArray();  			folder_it != mRequestSD["folders"].endArray(); @@ -502,7 +510,8 @@ BOOL LLInventoryModelFetchDescendentsResponder::getIsRecursive(const LLUUID& cat  	return (std::find(mRecursiveCatUUIDs.begin(),mRecursiveCatUUIDs.end(), cat_id) != mRecursiveCatUUIDs.end());  } -//static   Bundle up a bunch of requests to send all at once. +// Bundle up a bunch of requests to send all at once. +// static     void LLInventoryModelBackgroundFetch::bulkFetch(std::string url)  {  	//Background fetch is called from gIdleCallbacks in a loop until background fetch is stopped. @@ -521,7 +530,7 @@ void LLInventoryModelBackgroundFetch::bulkFetch(std::string url)  		(mBulkFetchCount > max_concurrent_fetches) ||  		(mFetchTimer.getElapsedTimeF32() < mMinTimeBetweenFetches))  	{ -		return; // just bail if we are disconnected. +		return; // just bail if we are disconnected  	}	  	U32 folder_count=0; diff --git a/indra/newview/llinventorymodelbackgroundfetch.h b/indra/newview/llinventorymodelbackgroundfetch.h index c1e37eda8f..04f96586d7 100644 --- a/indra/newview/llinventorymodelbackgroundfetch.h +++ b/indra/newview/llinventorymodelbackgroundfetch.h @@ -33,39 +33,15 @@  #ifndef LL_LLINVENTORYMODELBACKGROUNDFETCH_H  #define LL_LLINVENTORYMODELBACKGROUNDFETCH_H -// Seraph clean this up -#include "llassettype.h" -#include "llfoldertype.h" -#include "lldarray.h" -#include "llframetimer.h" -#include "llhttpclient.h" +#include "llsingleton.h"  #include "lluuid.h" -#include "llpermissionsflags.h" -#include "llstring.h" -#include <map> -#include <set> -#include <string> -#include <vector> - -// Seraph clean this up -class LLInventoryObserver; -class LLInventoryObject; -class LLInventoryItem; -class LLInventoryCategory; -class LLViewerInventoryItem; -class LLViewerInventoryCategory; -class LLViewerInventoryItem; -class LLViewerInventoryCategory; -class LLMessageSystem; -class LLInventoryCollectFunctor; -  //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~  // Class LLInventoryModelBackgroundFetch  // -// This class handles background fetch. +// This class handles background fetches, which are fetches of +// inventory folder.  Fetches can be recursive or not.  //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -  class LLInventoryModelBackgroundFetch : public LLSingleton<LLInventoryModelBackgroundFetch>  {  	friend class LLInventoryModelFetchDescendentsResponder; @@ -75,48 +51,37 @@ public:  	~LLInventoryModelBackgroundFetch();  	// Start and stop background breadth-first fetching of inventory contents. -	// This gets triggered when performing a filter-search +	// This gets triggered when performing a filter-search.  	void start(const LLUUID& cat_id = LLUUID::null, BOOL recursive = TRUE); -	BOOL backgroundFetchActive(); -	bool isEverythingFetched(); -	void incrBulkFetch(S16 fetching); -	void stopBackgroundFetch(); // stop fetch process -	bool isBulkFetchProcessingComplete(); -	// Add categories to a list to be fetched in bulk. -	void bulkFetch(std::string url); +	BOOL backgroundFetchActive() const; +	bool isEverythingFetched() const; // completing the fetch once per session should be sufficient -	bool libraryFetchStarted(); -	bool libraryFetchCompleted(); -	bool libraryFetchInProgress(); +	bool libraryFetchStarted() const; +	bool libraryFetchCompleted() const; +	bool libraryFetchInProgress() const; -	bool inventoryFetchStarted(); -	bool inventoryFetchCompleted(); -	bool inventoryFetchInProgress(); -    void findLostItems(); +	bool inventoryFetchStarted() const; +	bool inventoryFetchCompleted() const; +	bool inventoryFetchInProgress() const; -	void setAllFoldersFetched(); +    void findLostItems();	 +protected: +	void incrBulkFetch(S16 fetching); +	bool isBulkFetchProcessingComplete() const; +	void bulkFetch(std::string url); -	static void backgroundFetchCB(void*); // background fetch idle function  	void backgroundFetch(); -	 -	struct FetchQueueInfo -	{ -		FetchQueueInfo(const LLUUID& id, BOOL recursive) : -			mCatUUID(id), mRecursive(recursive) -		{ -		} -		LLUUID mCatUUID; -		BOOL mRecursive; -	}; -protected: +	static void backgroundFetchCB(void*); // background fetch idle function +	void stopBackgroundFetch(); // stop fetch process + +	void setAllFoldersFetched();  	bool fetchQueueContainsNoDescendentsOf(const LLUUID& cat_id) const;  private:   	BOOL mRecursiveInventoryFetchStarted;  	BOOL mRecursiveLibraryFetchStarted;  	BOOL mAllFoldersFetched; -	// completing the fetch once per session should be sufficient  	BOOL mBackgroundFetchActive;  	S16 mBulkFetchCount;  	BOOL mTimelyFetchPending; @@ -126,6 +91,15 @@ private:  	F32 mMinTimeBetweenFetches;  	F32 mMaxTimeBetweenFetches; +	struct FetchQueueInfo +	{ +		FetchQueueInfo(const LLUUID& id, BOOL recursive) : +			mCatUUID(id), mRecursive(recursive) +		{ +		} +		LLUUID mCatUUID; +		BOOL mRecursive; +	};  	typedef std::deque<FetchQueueInfo> fetch_queue_t;  	fetch_queue_t mFetchQueue;  }; diff --git a/indra/newview/llpaneloutfitedit.cpp b/indra/newview/llpaneloutfitedit.cpp index e07d5c064b..d7e06a951b 100644 --- a/indra/newview/llpaneloutfitedit.cpp +++ b/indra/newview/llpaneloutfitedit.cpp @@ -189,7 +189,8 @@ LLPanelOutfitEdit::LLPanelOutfitEdit()  	mInitialized(false),  	mAddWearablesPanel(NULL),  	mWearableListMaskCollector(NULL), -	mWearableListTypeCollector(NULL) +	mWearableListTypeCollector(NULL), +	mFilterComboBox(NULL)  {  	mSavedFolderState = new LLSaveFolderState();  	mSavedFolderState->setApply(FALSE); @@ -235,12 +236,12 @@ BOOL LLPanelOutfitEdit::postBuild()  	mListViewBtn = getChild<LLButton>("list_view_btn");  	childSetCommitCallback("filter_button", boost::bind(&LLPanelOutfitEdit::showWearablesFilter, this), NULL); -	childSetCommitCallback("folder_view_btn", boost::bind(&LLPanelOutfitEdit::showFilteredFolderWearablesPanel, this), NULL); -	childSetCommitCallback("list_view_btn", boost::bind(&LLPanelOutfitEdit::showFilteredWearablesPanel, this), NULL); +	childSetCommitCallback("folder_view_btn", boost::bind(&LLPanelOutfitEdit::showWearablesFolderView, this), NULL); +	childSetCommitCallback("list_view_btn", boost::bind(&LLPanelOutfitEdit::showWearablesListView, this), NULL);  	childSetCommitCallback("wearables_gear_menu_btn", boost::bind(&LLPanelOutfitEdit::onGearButtonClick, this, _1), NULL);  	mCOFWearables = getChild<LLCOFWearables>("cof_wearables_list"); -	mCOFWearables->setCommitCallback(boost::bind(&LLPanelOutfitEdit::onOutfitItemSelectionChange, this)); +	mCOFWearables->setCommitCallback(boost::bind(&LLPanelOutfitEdit::filterWearablesBySelectedItem, this));  	mCOFWearables->getCOFCallbacks().mAddWearable = boost::bind(&LLPanelOutfitEdit::onAddWearableClicked, this);  	mCOFWearables->getCOFCallbacks().mEditWearable = boost::bind(&LLPanelOutfitEdit::onEditWearableClicked, this); @@ -258,19 +259,20 @@ BOOL LLPanelOutfitEdit::postBuild()  	mCOFDragAndDropObserver = new LLCOFDragAndDropObserver(mInventoryItemsPanel->getModel()); -	LLComboBox* type_filter = getChild<LLComboBox>("filter_wearables_combobox"); -	type_filter->setCommitCallback(boost::bind(&LLPanelOutfitEdit::onTypeFilterChanged, this, _1)); -	type_filter->removeall(); +	mFilterComboBox = getChild<LLComboBox>("filter_wearables_combobox"); +	mFilterComboBox->setCommitCallback(boost::bind(&LLPanelOutfitEdit::onTypeFilterChanged, this, _1)); +	mFilterComboBox->removeall();  	for (U32 i = 0; i < mLookItemTypes.size(); ++i)  	{ -		type_filter->add(mLookItemTypes[i].displayName); +		mFilterComboBox->add(mLookItemTypes[i].displayName);  	} -	type_filter->setCurrentByIndex(LIT_ALL); +	mFilterComboBox->setCurrentByIndex(LIT_ALL);  	mSearchFilter = getChild<LLFilterEditor>("look_item_filter");  	mSearchFilter->setCommitCallback(boost::bind(&LLPanelOutfitEdit::onSearchEdit, this, _2)); -	childSetAction("show_add_wearables_btn", boost::bind(&LLPanelOutfitEdit::toggleAddWearablesPanel, this)); +	childSetAction("show_add_wearables_btn", boost::bind(&LLPanelOutfitEdit::onAddMoreButtonClicked, this)); +  	childSetAction("add_to_outfit_btn", boost::bind(&LLPanelOutfitEdit::onAddToOutfitClicked, this));  	mEditWearableBtn = getChild<LLButton>("edit_wearable_btn"); @@ -353,7 +355,7 @@ void LLPanelOutfitEdit::showWearablesFilter()  	}  } -void LLPanelOutfitEdit::showFilteredWearablesPanel() +void LLPanelOutfitEdit::showWearablesListView()  {  	if(switchPanels(mInventoryItemsPanel, mWearableItemsPanel))  	{ @@ -364,7 +366,7 @@ void LLPanelOutfitEdit::showFilteredWearablesPanel()  	mListViewBtn->setToggleState(TRUE);  } -void LLPanelOutfitEdit::showFilteredFolderWearablesPanel() +void LLPanelOutfitEdit::showWearablesFolderView()  {  	if(switchPanels(mWearableItemsPanel, mInventoryItemsPanel))  	{ @@ -377,17 +379,12 @@ void LLPanelOutfitEdit::showFilteredFolderWearablesPanel()  void LLPanelOutfitEdit::onTypeFilterChanged(LLUICtrl* ctrl)  { -	LLComboBox* type_filter = dynamic_cast<LLComboBox*>(ctrl); -	llassert(type_filter); -	if (type_filter) -	{ -		U32 curr_filter_type = type_filter->getCurrentIndex(); -		mInventoryItemsPanel->setFilterTypes(mLookItemTypes[curr_filter_type].inventoryMask); +	U32 curr_filter_type = mFilterComboBox->getCurrentIndex(); +	mInventoryItemsPanel->setFilterTypes(mLookItemTypes[curr_filter_type].inventoryMask); + +	mWearableListMaskCollector->setFilterMask(mLookItemTypes[curr_filter_type].inventoryMask); +	mWearableListManager->setFilterCollector(mWearableListMaskCollector); -		mWearableListMaskCollector->setFilterMask(mLookItemTypes[curr_filter_type].inventoryMask); -		mWearableListManager->setFilterCollector(mWearableListMaskCollector); -	} -	  	mSavedFolderState->setApply(TRUE);  	mInventoryItemsPanel->getRootFolder()->applyFunctorRecursively(*mSavedFolderState); @@ -471,7 +468,7 @@ void LLPanelOutfitEdit::onAddWearableClicked(void)  	if(item)  	{ -		showFilteredWearableItemsList(item->getWearableType()); +		showFilteredWearablesListView(item->getWearableType());  	}  } @@ -481,7 +478,7 @@ void LLPanelOutfitEdit::onReplaceBodyPartMenuItemClicked(LLUUID selected_item_id  	if (item && item->getType() == LLAssetType::AT_BODYPART)  	{ -		showFilteredWearableItemsList(item->getWearableType()); +		showFilteredWearablesListView(item->getWearableType());  	}  } @@ -538,24 +535,81 @@ void LLPanelOutfitEdit::onInventorySelectionChange(const std::deque<LLFolderView  	current_item->addChild(mAddToLookBtn); */  } -void LLPanelOutfitEdit::onOutfitItemSelectionChange(void) -{	 -	LLUUID item_id = mCOFWearables->getSelectedUUID(); -	//*TODO show Edit Wearable Button +void LLPanelOutfitEdit::applyFilter(e_look_item_type type) +{ +	mFilterComboBox->setCurrentByIndex(type); +	mFilterComboBox->onCommit(); +} + +void LLPanelOutfitEdit::filterWearablesBySelectedItem(void) +{ +	if (!mAddWearablesPanel->getVisible()) return; +	 +	uuid_vec_t ids; +	mCOFWearables->getSelectedUUIDs(ids); -	LLViewerInventoryItem* item_to_remove = gInventory.getItem(item_id); -	if (!item_to_remove) return; +	bool nothing_selected = ids.empty(); +	bool one_selected = ids.size() == 1; +	bool more_than_one_selected = ids.size() > 1; +	bool is_dummy_item = (ids.size() && dynamic_cast<LLPanelDummyClothingListItem*>(mCOFWearables->getSelectedItem())); -	switch (item_to_remove->getType()) +	//resetting selection if no item is selected or than one item is selected +	if (nothing_selected || more_than_one_selected)  	{ -	case LLAssetType::AT_CLOTHING: -	case LLAssetType::AT_OBJECT: -	default: -		break; +		if (nothing_selected) +		{ +			showWearablesFolderView(); +		} + +		if (more_than_one_selected) +		{ +			showWearablesListView(); +		} +		 +		applyFilter(LIT_ALL); +		return;  	} + + +	//filter wearables by a type represented by a dummy item +	if (one_selected && is_dummy_item) +	{ +		onAddWearableClicked(); +		return; +	} + +	LLViewerInventoryItem* item = gInventory.getItem(ids[0]); +	if (!item && ids[0].notNull()) +	{ +		//Inventory misses an item with non-zero id +		showWearablesListView(); +		applyFilter(LIT_ALL); +		return; +	} + +	if (one_selected && !is_dummy_item) +	{ +		if (item->isWearableType()) +		{ +			//single clothing or bodypart item is selected +			showFilteredWearablesListView(item->getWearableType()); +			mFilterComboBox->setLabel(getString("Filter.Custom")); +			return; +		} +		else +		{ +			//attachment is selected +			showWearablesListView(); +			applyFilter(LIT_ATTACHMENT); +			return; +		} +	} +  } + +  void LLPanelOutfitEdit::update()  {  	mCOFWearables->refresh(); @@ -676,12 +730,21 @@ void LLPanelOutfitEdit::onGearButtonClick(LLUICtrl* clicked_button)  	LLMenuGL::showPopup(clicked_button, mGearMenu, 0, menu_y);  } -void LLPanelOutfitEdit::showFilteredWearableItemsList(LLWearableType::EType type) +void LLPanelOutfitEdit::onAddMoreButtonClicked() +{ +	toggleAddWearablesPanel(); +	filterWearablesBySelectedItem(); +} + +void LLPanelOutfitEdit::showFilteredWearablesListView(LLWearableType::EType type)  { +	mFilterComboBox->setLabel(getString("Filter.Custom"));  	mWearableListTypeCollector->setType(type);  	mWearableListManager->setFilterCollector(mWearableListTypeCollector);  	showAddWearablesPanel(true); -	showFilteredWearablesPanel(); +	showWearablesListView();  } + +  // EOF diff --git a/indra/newview/llpaneloutfitedit.h b/indra/newview/llpaneloutfitedit.h index 24ecf75c18..d19ede04f1 100644 --- a/indra/newview/llpaneloutfitedit.h +++ b/indra/newview/llpaneloutfitedit.h @@ -47,6 +47,7 @@  class LLButton;  class LLCOFWearables; +class LLComboBox;  class LLTextBox;  class LLInventoryCategory;  class LLOutfitObserver; @@ -94,15 +95,27 @@ public:  	void toggleAddWearablesPanel();  	void showAddWearablesPanel(bool show__add_wearables); + +	//following methods operate with "add wearables" panel  	void showWearablesFilter(); -	void showFilteredWearablesPanel(); -	void showFilteredFolderWearablesPanel(); +	void showWearablesListView(); +	void showWearablesFolderView();  	void onTypeFilterChanged(LLUICtrl* ctrl);  	void onSearchEdit(const std::string& string);  	void onInventorySelectionChange(const std::deque<LLFolderViewItem*> &items, BOOL user_action);  	void onAddToOutfitClicked(void); -	void onOutfitItemSelectionChange(void); + +	void applyFilter(e_look_item_type type); + +	/** +	 * Filter items in views of Add Wearables Panel and show appropriate view depending on currently selected COF item(s) +	 * No COF items selected - shows the folder view, reset filter +	 * 1 COF item selected - shows the list view and filters wearables there by a wearable type of the selected item +	 * More than 1 COF item selected - shows the list view and filters it by a type of the selected item (attachment or clothing) +	 */ +	void filterWearablesBySelectedItem(void); +  	void onRemoveFromOutfitClicked(void);  	void onEditWearableClicked(void);  	void onAddWearableClicked(void); @@ -132,7 +145,8 @@ public:  private:  	void onGearButtonClick(LLUICtrl* clicked_button); -	void showFilteredWearableItemsList(LLWearableType::EType type); +	void onAddMoreButtonClicked(); +	void showFilteredWearablesListView(LLWearableType::EType type);  	LLTextBox*			mCurrentOutfitName; @@ -145,6 +159,7 @@ private:  	LLButton*			mFolderViewBtn;  	LLButton*			mListViewBtn;  	LLPanel*			mAddWearablesPanel; +	LLComboBox*			mFilterComboBox;  	LLFindNonLinksByMask*  mWearableListMaskCollector;  	LLFindWearablesOfType* mWearableListTypeCollector; @@ -162,6 +177,8 @@ private:  	bool				mInitialized;  	std::auto_ptr<LLSaveOutfitComboBtn> mSaveComboBtn; + +  };  #endif // LL_LLPANELOUTFITEDIT_H diff --git a/indra/newview/lltoastalertpanel.cpp b/indra/newview/lltoastalertpanel.cpp index 6c6eda2e68..db1f4dc4cb 100644 --- a/indra/newview/lltoastalertpanel.cpp +++ b/indra/newview/lltoastalertpanel.cpp @@ -172,6 +172,7 @@ LLToastAlertPanel::LLToastAlertPanel( LLNotificationPtr notification, bool modal  	params.tab_stop(false);  	params.wrap(true);  	params.follows.flags(FOLLOWS_LEFT | FOLLOWS_TOP); +	params.allow_scroll(true);  	LLTextBox * msg_box = LLUICtrlFactory::create<LLTextBox> (params);  	// Compute max allowable height for the dialog text, so we can allocate @@ -180,9 +181,16 @@ LLToastAlertPanel::LLToastAlertPanel( LLNotificationPtr notification, bool modal  			gFloaterView->getRect().getHeight()  			- LINE_HEIGHT			// title bar  			- 3*VPAD - BTN_HEIGHT; +	// reshape to calculate real text width and height  	msg_box->reshape( MAX_ALLOWED_MSG_WIDTH, max_allowed_msg_height );  	msg_box->setValue(msg); -	msg_box->reshapeToFitText(); + +	S32 pixel_width = msg_box->getTextPixelWidth(); +	S32 pixel_height = msg_box->getTextPixelHeight(); + +	// We should use some space to prevent set textbox's scroller visible when it is unnecessary. +	msg_box->reshape( llmin(MAX_ALLOWED_MSG_WIDTH,pixel_width + 2 * msg_box->getHPad() + HPAD), +		llmin(max_allowed_msg_height,pixel_height + 2 * msg_box->getVPad())  ) ;  	const LLRect& text_rect = msg_box->getRect();  	S32 dialog_width = llmax( btn_total_width, text_rect.getWidth() ) + 2 * HPAD; diff --git a/indra/newview/llviewertexture.cpp b/indra/newview/llviewertexture.cpp index 7e779986df..9b5b210bf7 100644 --- a/indra/newview/llviewertexture.cpp +++ b/indra/newview/llviewertexture.cpp @@ -541,11 +541,6 @@ void LLViewerTexture::setBoostLevel(S32 level)  		if(mBoostLevel != LLViewerTexture::BOOST_NONE)  		{  			setNoDelete() ;		 - -			if(LLViewerTexture::BOOST_AVATAR_BAKED_SELF == mBoostLevel || LLViewerTexture::BOOST_AVATAR_BAKED == mBoostLevel) -			{ -				mCanResetMaxVirtualSize = false ; -			}  		}  		if(gAuditTexture)  		{ @@ -596,6 +591,11 @@ void LLViewerTexture::forceImmediateUpdate()  {  } +void LLViewerTexture::setResetMaxVirtualSizeFlag(bool flag)  +{ +	mCanResetMaxVirtualSize = flag ; +} +  void LLViewerTexture::addTextureStats(F32 virtual_size, BOOL needs_gltexture) const   {  	if(needs_gltexture) diff --git a/indra/newview/llviewertexture.h b/indra/newview/llviewertexture.h index 1bd4cc793d..361f56e02f 100644 --- a/indra/newview/llviewertexture.h +++ b/indra/newview/llviewertexture.h @@ -166,6 +166,7 @@ public:  	void addTextureStats(F32 virtual_size, BOOL needs_gltexture = TRUE) const;  	void resetTextureStats();	 +	void setResetMaxVirtualSizeFlag(bool flag) ;  	virtual F32  getMaxVirtualSize() ; diff --git a/indra/newview/llvoavatar.cpp b/indra/newview/llvoavatar.cpp index 1fa953f157..3e93dc1a90 100644 --- a/indra/newview/llvoavatar.cpp +++ b/indra/newview/llvoavatar.cpp @@ -4210,9 +4210,14 @@ void LLVOAvatar::addBakedTextureStats( LLViewerFetchedTexture* imagep, F32 pixel  	mMaxPixelArea = llmax(pixel_area, mMaxPixelArea);  	mMinPixelArea = llmin(pixel_area, mMinPixelArea);  	imagep->resetTextureStats(); +	imagep->setResetMaxVirtualSizeFlag(false) ;  	imagep->setCanUseHTTP(false) ; //turn off http fetching for baked textures.  	imagep->addTextureStats(pixel_area / texel_area_ratio);  	imagep->setBoostLevel(boost_level); +	if(boost_level == LLViewerTexture::BOOST_AVATAR_BAKED_SELF) +	{ +		imagep->setAdditionalDecodePriority(1.0f) ; +	}  }  //virtual	 diff --git a/indra/newview/llvoavatarself.cpp b/indra/newview/llvoavatarself.cpp index eae92f8992..a4d888cd72 100644 --- a/indra/newview/llvoavatarself.cpp +++ b/indra/newview/llvoavatarself.cpp @@ -975,12 +975,6 @@ void LLVOAvatarSelf::wearableUpdated( LLWearableType::EType type, BOOL upload_re  		const LLVOAvatarDictionary::BakedEntry *baked_dict = baked_iter->second;  		const LLVOAvatarDefines::EBakedTextureIndex index = baked_iter->first; -		// if we're editing our appearance, ensure that we're not using baked textures -		// The baked texture for alpha masks is set explicitly when you hit "save" -		if (gAgentCamera.cameraCustomizeAvatar()) -		{ -			setNewBakedTexture(index,IMG_DEFAULT_AVATAR); -		}  		if (baked_dict)  		{  			for (LLVOAvatarDefines::wearables_vec_t::const_iterator type_iter = baked_dict->mWearables.begin(); @@ -2036,7 +2030,11 @@ void LLVOAvatarSelf::addLocalTextureStats( ETextureIndex type, LLViewerFetchedTe  			F32 desired_pixels;  			desired_pixels = llmin(mPixelArea, (F32)getTexImageArea());  			imagep->setBoostLevel(getAvatarBoostLevel()); + +			imagep->resetTextureStats(); +			imagep->setResetMaxVirtualSizeFlag(false) ;  			imagep->addTextureStats( desired_pixels / texel_area_ratio ); +			imagep->setAdditionalDecodePriority(1.0f) ;  			imagep->forceUpdateBindStats() ;  			if (imagep->getDiscardLevel() < 0)  			{ diff --git a/indra/newview/llvoicevivox.cpp b/indra/newview/llvoicevivox.cpp index 96bde129ee..39649f0370 100644 --- a/indra/newview/llvoicevivox.cpp +++ b/indra/newview/llvoicevivox.cpp @@ -5287,6 +5287,7 @@ void LLVivoxVoiceClient::setVoiceEnabled(bool enabled)  			LLVoiceChannel::getCurrentVoiceChannel()->deactivate();  			status = LLVoiceClientStatusObserver::STATUS_VOICE_DISABLED;  		} +		notifyStatusObservers(status);		  	}  } diff --git a/indra/newview/llwearable.cpp b/indra/newview/llwearable.cpp index 121e691710..46c736c853 100644 --- a/indra/newview/llwearable.cpp +++ b/indra/newview/llwearable.cpp @@ -705,7 +705,7 @@ void LLWearable::removeFromAvatar( LLWearableType::EType type, BOOL upload_bake  	}  	gAgentAvatarp->updateVisualParams(); -	gAgentAvatarp->wearableUpdated(type, TRUE); +	gAgentAvatarp->wearableUpdated(type, FALSE);  //	if( upload_bake )  //	{ diff --git a/indra/newview/skins/default/xui/en/floater_snapshot.xml b/indra/newview/skins/default/xui/en/floater_snapshot.xml index f3d297c303..7d81c3e551 100644 --- a/indra/newview/skins/default/xui/en/floater_snapshot.xml +++ b/indra/newview/skins/default/xui/en/floater_snapshot.xml @@ -38,91 +38,129 @@      left="20"      top_pad="-30"      name="new_snapshot_btn" -    width="23" /> +    width="23" +    commit_callback.function="Snapshot.Refresh"/>    <line_editor      border_style="line"      border_thickness="1" -	  follows="left|top" -	  height="20" -		layout="topleft" +    follows="left|top" +    height="20" +    layout="topleft"      left="10" -		max_length="500" +    max_length="500"      name="description" -	  top_pad="15" -	  width="230" +    top_pad="15" +    width="230"      label="Description"/> +  <panel +   top_pad="20" +   left="10" +   height="83" +   name="panel_snapshot_main" +   width="130"> +    <button +     label="Share Snapshot" +     name="share" +     top="0" +     left="0" +     width="130" +     commit_callback.function="Snapshot.ShowButtons" +     commit_callback.parameter="share"/> +    <button +     label="Save Snapshot" +     name="save" +     top_pad="7" +     left_delta="0" +     width="130" +     commit_callback.function="Snapshot.ShowButtons" +     commit_callback.parameter="save"/> +    <button +     label="Set As Profile Pic" +     name="set_profile_pic" +     top_pad="7" +     left_delta="0" +     width="130"/> +  </panel> +  <panel +   top_delta="0" +   left_delta="0" +   height="83" +   name="panel_snapshot_share" +   width="130"> +    <button +     label="Share to Web" +     name="share_to_web" +     top="0" +     left="0" +     visible="false" +     width="130"/> +    <button +     label="Email Snapshot" +     name="share_to_email" +     top_pad="7" +     left_delta="0" +     width="130"/> +    <button +     label="Back" +     name="cancel_share" +     top_pad="7" +     left_delta="0" +     width="130" +     commit_callback.function="Snapshot.ShowButtons" +     commit_callback.parameter="main"/> +  </panel> +  <panel +   top_delta="0" +   left_delta="0" +   height="83" +   name="panel_snapshot_save" +   width="130"> +    <button +     label="Save to My Inventory" +     name="save_to_inventory" +     top="0" +     left="0" +     width="130"/> +    <button +     label="Save to My Computer" +     name="save_to_computer" +     top_pad="7" +     left_delta="0" +     width="130"/> +    <button +     label="Back" +     name="cancel_save" +     top_pad="7" +     left_delta="0" +     width="130" +     commit_callback.function="Snapshot.ShowButtons" +     commit_callback.parameter="main"/> +  </panel>    <button -   label="Share Snapshot"  -   name="share"  -   top_pad="20"  -   left="10"  -   width="130"/> +   follows="left" +   height="22" +   layout="topleft" +   left="210" +   name="show_advanced" +   image_overlay="TabIcon_Close_Off" +   bottom_delta="0" +   width="30" +   commit_callback.function="Snapshot.ShowAdvanced"/>    <button -   label="Share to Web"  -   name="share_to_web"  -   top_delta="0"  -   left="10"  +   follows="left" +   height="22" +   layout="topleft" +   left="210" +   name="hide_advanced" +   image_overlay="TabIcon_Open_Off" +   top_delta="0"     visible="false" -   width="130"/> -  <button -   label="Save to My Inventory"  -   name="save_to_inventory"  -   top_delta="0"  -   left="10"  -   width="130"/> -  <button -   label="Save Snapshot"  -   name="save"  -   top_pad="7"  -   left="10"  -   width="130"/> -  <button -   label="Email Snapshot"  -   name="share_to_email"  -   top_delta="0"  -   left="10"  -   width="130"/> -  <button -   label="Save to My Computer"  -   name="save_to_computer"  -   top_delta="0"  -   left="10"  -   width="130"/> -  <button -   label="Set As Profile Pic"  -   name="set_profile_pic"  -   top_pad="7"  -   left="10"  -   width="130"/> -  <button -   label="Back"  -   name="cancel"  -   top_delta="0"  -   left="10"  -   width="130"/> -  <button -     follows="left" -     height="22" -     layout="topleft" -     left="210" -    name="show_advanced" -    image_overlay="TabIcon_Close_Off" -    top_delta="1" -    width="30"/> -  <button -     follows="left" -     height="22" -     layout="topleft" -     left="210" -     visible="false"  -     name="hide_advanced" -     image_overlay="TabIcon_Open_Off" -     top_delta="0" -     width="30"/> +   width="30" +   commit_callback.function="Snapshot.HideAdvanced"/>    <panel  -    visible="false"  -    left="250"  -    top="17"     -    name="snapshot_advanced"  -    filename="panel_snapshot_advanced.xml"/> +   visible="false" +   left="250" +   top="17" +   name="snapshot_advanced" +   filename="panel_snapshot_advanced.xml"/>  </floater> diff --git a/indra/newview/skins/default/xui/en/menu_inventory_gear_default.xml b/indra/newview/skins/default/xui/en/menu_inventory_gear_default.xml index 4e6a07d020..62365f7cc2 100644 --- a/indra/newview/skins/default/xui/en/menu_inventory_gear_default.xml +++ b/indra/newview/skins/default/xui/en/menu_inventory_gear_default.xml @@ -61,14 +61,6 @@      <menu_item_separator       layout="topleft" />      <menu_item_call -     label="Empty Trash" -     layout="topleft" -     name="empty_trash"> -        <on_click -         function="Inventory.GearDefault.Custom.Action" -         parameter="empty_trash" /> -    </menu_item_call> -    <menu_item_call       label="Empty Lost and Found"       layout="topleft"       name="empty_lostnfound"> @@ -111,4 +103,15 @@  			 function="Inventory.GearDefault.Enable"  			 parameter="find_links" />          </menu_item_call> +    <menu_item_separator +     layout="topleft" /> + +    <menu_item_call +     label="Empty Trash" +     layout="topleft" +     name="empty_trash"> +        <on_click +         function="Inventory.GearDefault.Custom.Action" +         parameter="empty_trash" /> +    </menu_item_call>  </menu> 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 b5eda8e999..c4e31ed180 100644 --- a/indra/newview/skins/default/xui/en/menu_outfit_gear.xml +++ b/indra/newview/skins/default/xui/en/menu_outfit_gear.xml @@ -170,7 +170,7 @@      <menu_item_separator />      <menu_item_call -     label="Rename" +     label="Rename Outfit"       layout="topleft"       name="rename">          <on_click diff --git a/indra/newview/skins/default/xui/en/notifications.xml b/indra/newview/skins/default/xui/en/notifications.xml index 6d3d0f13bf..76a41a3b13 100644 --- a/indra/newview/skins/default/xui/en/notifications.xml +++ b/indra/newview/skins/default/xui/en/notifications.xml @@ -6207,7 +6207,7 @@ The button will be shown when there is enough space for it.     icon="notifytip.tga"     name="ShareNotification"     type="notifytip"> -Drag items from inventory onto a person in the resident picker +Select residents to share with.    </notification>    <notification     icon="notifytip.tga" @@ -6304,36 +6304,39 @@ Avatar '[NAME]' entered appearance mode.  Avatar '[NAME]' left appearance mode.    </notification> -    <notification +  <notification     icon="alertmodal.tga"     name="NoConnect"     type="alertmodal"> -        We're having trouble connecting using [PROTOCOL] [HOSTID]. -        Please check your network and firewall setup. -        <form name="form"> -            <button -               default="true" -               index="0" -               name="OK" -               text="OK"/> -        </form> -    </notification> +We're having trouble connecting using [PROTOCOL] [HOSTID]. +Please check your network and firewall setup. +    <form name="form"> +      <button +       default="true" +       index="0" +       name="OK" +       text="OK"/> +    </form> +  </notification> -    <notification -          icon="alertmodal.tga" -          name="NoVoiceConnect" -          type="alertmodal"> -        We're having trouble connecting your voiceserver using [HOSTID]. -        Voice communications will not be available. -        Please check your network and firewall setup. -        <form name="form"> -            <button -               default="true" -               index="0" -               name="OK" -               text="OK"/> -        </form> -    </notification> +  <notification +   icon="alertmodal.tga" +   name="NoVoiceConnect" +   type="alertmodal"> +We're having trouble connecting to your voice server: + +[HOSTID] + +Voice communications will not be available. +Please check your network and firewall setup. +    <form name="form"> +      <button +       default="true" +       index="0" +       name="OK" +       text="OK"/> +    </form> +  </notification>    <notification     icon="notifytip.tga" @@ -6361,7 +6364,7 @@ Are you sure you want to leave this call?       name="okcancelignore"       notext="No"       yestext="Yes"/> -     <unique/> +    <unique/>    </notification>    <notification @@ -6378,7 +6381,7 @@ Mute everyone?       name="okcancelignore"       yestext="Ok"       notext="Cancel"/> -     <unique/> +    <unique/>    </notification>    <global name="UnsupportedCPU"> 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 c9802a269c..741f60669a 100644 --- a/indra/newview/skins/default/xui/en/panel_outfit_edit.xml +++ b/indra/newview/skins/default/xui/en/panel_outfit_edit.xml @@ -51,6 +51,7 @@      <string name="Filter.All" value="All"/>      <string name="Filter.Clothes/Body" value="Clothes/Body"/>      <string name="Filter.Objects" value="Objects"/> +    <string name="Filter.Custom" value="Custom filter"/>      <button diff --git a/indra/newview/skins/default/xui/en/strings.xml b/indra/newview/skins/default/xui/en/strings.xml index 0d14a6b3c8..361af0e8fb 100644 --- a/indra/newview/skins/default/xui/en/strings.xml +++ b/indra/newview/skins/default/xui/en/strings.xml @@ -3181,7 +3181,7 @@ Abuse Report</string>    <!-- language specific white-space characters, delimiters, spacers, item separation symbols -->    <string name="sentences_separator" value=" "></string> -  <string name="words_separator">, </string> +  <string name="words_separator" value=", "/>    <string name="server_is_down">  	Despite our best efforts, something unexpected has gone wrong. diff --git a/indra/newview/skins/default/xui/ja/menu_bottomtray.xml b/indra/newview/skins/default/xui/ja/menu_bottomtray.xml index 0e69671f06..e5703c559b 100644 --- a/indra/newview/skins/default/xui/ja/menu_bottomtray.xml +++ b/indra/newview/skins/default/xui/ja/menu_bottomtray.xml @@ -4,11 +4,11 @@  	<menu_item_check label="移動ボタン" name="ShowMoveButton"/>  	<menu_item_check label="視界ボタン" name="ShowCameraButton"/>  	<menu_item_check label="スナップショットボタン" name="ShowSnapshotButton"/> -	<menu_item_check label="サイドバーのボタン" name="ShowSidebarButton"/> -	<menu_item_check label="制作のボタン" name="ShowBuildButton"/> -	<menu_item_check label="検索のボタン" name="ShowSearchButton"/> -	<menu_item_check label="地図のボタン" name="ShowWorldMapButton"/> -	<menu_item_check label="ミニマップのボタン" name="ShowMiniMapButton"/> +	<menu_item_check label="サイドバーボタン" name="ShowSidebarButton"/> +	<menu_item_check label="制作ボタン" name="ShowBuildButton"/> +	<menu_item_check label="検索ボタン" name="ShowSearchButton"/> +	<menu_item_check label="地図ボタン" name="ShowWorldMapButton"/> +	<menu_item_check label="ミニマップボタン" name="ShowMiniMapButton"/>  	<menu_item_call label="切り取り" name="NearbyChatBar_Cut"/>  	<menu_item_call label="コピー" name="NearbyChatBar_Copy"/>  	<menu_item_call label="貼り付け" name="NearbyChatBar_Paste"/> diff --git a/indra/newview/skins/default/xui/ja/notifications.xml b/indra/newview/skins/default/xui/ja/notifications.xml index 1ac7677b07..c82f1198a4 100644 --- a/indra/newview/skins/default/xui/ja/notifications.xml +++ b/indra/newview/skins/default/xui/ja/notifications.xml @@ -349,7 +349,7 @@ L$ が不足しているのでこのグループに参加することができ  		<usetemplate name="okcancelbuttons" notext="もう一度試す" yestext="新しいアカウントを作成"/>  	</notification>  	<notification name="InvalidCredentialFormat"> -		「ユーザー名」欄にアバターのファーストネームとラストネーム両方を入力してからログインしてください。 +		「ユーザーネーム」欄にアバターのファーストネームとラストネーム両方を入力してからログインしてください。  	</notification>  	<notification name="AddClassified">  		クラシファイド広告は、検索ディレクトリと [http://secondlife.com/community/classifieds secondlife.com] の「クラシファイド広告」セクションに一週間掲載されます。 diff --git a/indra/newview/skins/default/xui/ja/panel_login.xml b/indra/newview/skins/default/xui/ja/panel_login.xml index f0ebc67ef5..47d7a88b4c 100644 --- a/indra/newview/skins/default/xui/ja/panel_login.xml +++ b/indra/newview/skins/default/xui/ja/panel_login.xml @@ -9,9 +9,9 @@  	<layout_stack name="login_widgets">  		<layout_panel name="login">  			<text name="username_text"> -				ユーザー名: +				ユーザーネーム:  			</text> -			<line_editor label="ユーザー名" name="username_edit" tool_tip="[SECOND_LIFE] ユーザー名"/> +			<line_editor label="ユーザーネーム" name="username_edit" tool_tip="[SECOND_LIFE] ユーザーネーム"/>  			<text name="password_text">  				パスワード:  			</text> diff --git a/indra/newview/skins/default/xui/pt/floater_about.xml b/indra/newview/skins/default/xui/pt/floater_about.xml index 7671f58691..4044110b47 100644 --- a/indra/newview/skins/default/xui/pt/floater_about.xml +++ b/indra/newview/skins/default/xui/pt/floater_about.xml @@ -26,9 +26,9 @@ Placa gráfica: [GRAPHICS_CARD]  Versão libcurl: [LIBCURL_VERSION]  Versão J2C Decoder: [J2C_VERSION] -Versão do driver de áudio: [AUDIO_DRIVER_VERSION]  +Versão do driver de áudio: [AUDIO_DRIVER_VERSION]  Versão Qt Webkit: [QT_WEBKIT_VERSION] -Versão Vivox: [VIVOX_VERSION] +Versão do servidor de voz: [VOICE_VERSION]  	</floater.string>  	<floater.string name="none">  		(nenhum) diff --git a/indra/newview/skins/default/xui/pt/floater_about_land.xml b/indra/newview/skins/default/xui/pt/floater_about_land.xml index 787836a8bd..56ffcbdece 100644 --- a/indra/newview/skins/default/xui/pt/floater_about_land.xml +++ b/indra/newview/skins/default/xui/pt/floater_about_land.xml @@ -63,6 +63,9 @@  				Nenhum lote selecionado.  Vá para o menu Mundo > Sobre o terreno ou selecione outro lote para mostrar os detalhes.  			</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:">  				Nome:  			</text> diff --git a/indra/newview/skins/default/xui/pt/floater_avatar_textures.xml b/indra/newview/skins/default/xui/pt/floater_avatar_textures.xml index 5fb64f64b3..9473ee7ce9 100644 --- a/indra/newview/skins/default/xui/pt/floater_avatar_textures.xml +++ b/indra/newview/skins/default/xui/pt/floater_avatar_textures.xml @@ -3,41 +3,48 @@  	<floater.string name="InvalidAvatar">  		AVATAR INVÁLIDO  	</floater.string> -	<text name="composite_label"> -		Texturas compostas -	</text> -	<button label="Tombar" label_selected="Tombar" name="Dump"/>  	<scroll_container name="profile_scroll">  		<panel name="scroll_content_panel"> -			<texture_picker label="Cabelo" name="hair-baked"/> -			<texture_picker label="Cabelo" name="hair_grain"/> -			<texture_picker label="Cabelo alpha" name="hair_alpha"/> -			<texture_picker label="Cabeça" name="head-baked"/> -			<texture_picker label="Maquilagem" name="head_bodypaint"/> -			<texture_picker label="Cabeça Alpha" name="head_alpha"/> -			<texture_picker label="Tatuagem na cabeça" name="head_tattoo"/> -			<texture_picker label="Olhos" name="eyes-baked"/> -			<texture_picker label="Olho" name="eyes_iris"/> -			<texture_picker label="Olhos Alpha" name="eyes_alpha"/> -			<texture_picker label="Cintura acima" name="upper-baked"/> -			<texture_picker label="Pintura corporal, cintura para cima" name="upper_bodypaint"/> -			<texture_picker label="Camiseta" name="upper_undershirt"/> -			<texture_picker label="Luvas" name="upper_gloves"/> -			<texture_picker label="Camisa" name="upper_shirt"/> -			<texture_picker label="Jaqueta (cima)" name="upper_jacket"/> -			<texture_picker label="Alpha de cima" name="upper_alpha"/> -			<texture_picker label="Tatuagem parte de cima" name="upper_tattoo"/> -			<texture_picker label="Cintura para baixo" name="lower-baked"/> -			<texture_picker label="Pintura corporal, cintura para baixo" name="lower_bodypaint"/> -			<texture_picker label="Roupa de baixo" name="lower_underpants"/> -			<texture_picker label="Meias" name="lower_socks"/> -			<texture_picker label="Sapatos" name="lower_shoes"/> -			<texture_picker label="Calças" name="lower_pants"/> -			<texture_picker label="Jaqueta" name="lower_jacket"/> -			<texture_picker label="Alpha inferior" name="lower_alpha"/> -			<texture_picker label="Tatuagem de baixo" name="lower_tattoo"/> -			<texture_picker label="Saia" name="skirt-baked"/> -			<texture_picker label="Saia" name="skirt"/> +			<text name="label"> +				Pronto +Texturas +			</text> +			<text name="composite_label"> +				Compósito: +Texturas +			</text> +			<button label="Enviar IDs para painel" label_selected="Dump" name="Dump"/> +			<panel name="scroll_content_panel"> +				<texture_picker label="Cabelo" name="hair-baked"/> +				<texture_picker label="Cabelo" name="hair_grain"/> +				<texture_picker label="Cabelo alpha" name="hair_alpha"/> +				<texture_picker label="Cabeça" name="head-baked"/> +				<texture_picker label="Maquilagem" name="head_bodypaint"/> +				<texture_picker label="Cabeça Alpha" name="head_alpha"/> +				<texture_picker label="Tatuagem na cabeça" name="head_tattoo"/> +				<texture_picker label="Olhos" name="eyes-baked"/> +				<texture_picker label="Olho" name="eyes_iris"/> +				<texture_picker label="Olhos Alpha" name="eyes_alpha"/> +				<texture_picker label="Cintura acima" name="upper-baked"/> +				<texture_picker label="Pintura corporal, cintura para cima" name="upper_bodypaint"/> +				<texture_picker label="Camiseta" name="upper_undershirt"/> +				<texture_picker label="Luvas" name="upper_gloves"/> +				<texture_picker label="Camisa" name="upper_shirt"/> +				<texture_picker label="Jaqueta (cima)" name="upper_jacket"/> +				<texture_picker label="Alpha de cima" name="upper_alpha"/> +				<texture_picker label="Tatuagem parte de cima" name="upper_tattoo"/> +				<texture_picker label="Cintura para baixo" name="lower-baked"/> +				<texture_picker label="Cintura para baixo" name="lower_bodypaint"/> +				<texture_picker label="Roupa de baixo" name="lower_underpants"/> +				<texture_picker label="Meias" name="lower_socks"/> +				<texture_picker label="Sapatos" name="lower_shoes"/> +				<texture_picker label="Calças" name="lower_pants"/> +				<texture_picker label="Jaqueta" name="lower_jacket"/> +				<texture_picker label="Alpha inferior" name="lower_alpha"/> +				<texture_picker label="Tatuagem de baixo" name="lower_tattoo"/> +				<texture_picker label="Saia" name="skirt-baked"/> +				<texture_picker label="Saia" name="skirt"/> +			</panel>  		</panel>  	</scroll_container>  </floater> diff --git a/indra/newview/skins/default/xui/pt/floater_buy_currency_html.xml b/indra/newview/skins/default/xui/pt/floater_buy_currency_html.xml new file mode 100644 index 0000000000..24e41ac8c8 --- /dev/null +++ b/indra/newview/skins/default/xui/pt/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="COMPRAR MOEDA"/> diff --git a/indra/newview/skins/default/xui/pt/floater_map.xml b/indra/newview/skins/default/xui/pt/floater_map.xml index 3a04528228..f8e4e76752 100644 --- a/indra/newview/skins/default/xui/pt/floater_map.xml +++ b/indra/newview/skins/default/xui/pt/floater_map.xml @@ -1,5 +1,5 @@  <?xml version="1.0" encoding="utf-8" standalone="yes"?> -<floater name="Map" title="Mini Mapa"> +<floater name="Map" title="">  	<floater.string name="mini_map_north">  		N  	</floater.string> diff --git a/indra/newview/skins/default/xui/pt/floater_moveview.xml b/indra/newview/skins/default/xui/pt/floater_moveview.xml index 9c02570076..b1dc65e3af 100644 --- a/indra/newview/skins/default/xui/pt/floater_moveview.xml +++ b/indra/newview/skins/default/xui/pt/floater_moveview.xml @@ -6,18 +6,48 @@  	<string name="walk_back_tooltip">  		Andar para trás (flecha para baixo ou S)  	</string> +	<string name="walk_left_tooltip"> +		Andar para a esquerda (Shift + Seta esquerda ou A) +	</string> +	<string name="walk_right_tooltip"> +		Andar para a direita (Shift + Seta direita ou D) +	</string>  	<string name="run_forward_tooltip">  		Correr para frente (flecha para cima ou W)  	</string>  	<string name="run_back_tooltip">  		Correr para trás (flecha para baixo ou S)  	</string> +	<string name="run_left_tooltip"> +		Correr para a esquerda (Shift + Seta esquerda ou A) +	</string> +	<string name="run_right_tooltip"> +		Correr para a direita (Shift + Seta direita ou D) +	</string>  	<string name="fly_forward_tooltip">  		Voar para frente (flecha para cima ou W)  	</string>  	<string name="fly_back_tooltip">  		Voar para trás (flecha para baixo ou S)  	</string> +	<string name="fly_left_tooltip"> +		Voar para a esquerda (Shift + Seta esquerda ou A) +	</string> +	<string name="fly_right_tooltip"> +		Voar para a direita (Shift + Seta direita ou D) +	</string> +	<string name="fly_up_tooltip"> +		Voar para cima (tecla E) +	</string> +	<string name="fly_down_tooltip"> +		Voar para baixo (tecla C) +	</string> +	<string name="jump_tooltip"> +		Pular (tecla E) +	</string> +	<string name="crouch_tooltip"> +		Agachar (tecla C) +	</string>  	<string name="walk_title">  		Andar  	</string> @@ -28,10 +58,12 @@  		Voar  	</string>  	<panel name="panel_actions"> -		<button label="" label_selected="" name="turn left btn" tool_tip="Virar à esquerda (flecha ESQ ou A)"/> -		<button label="" label_selected="" name="turn right btn" tool_tip="Virar à direita (flecha DIR ou D)"/>  		<button label="" label_selected="" name="move up btn" tool_tip="Voar para cima (tecla E)"/> +		<button label="" label_selected="" name="turn left btn" tool_tip="Virar à esquerda (flecha ESQ ou A)"/> +		<joystick_slide name="move left btn" tool_tip="Andar para a esquerda (Shift + Seta esquerda ou A)"/>  		<button label="" label_selected="" name="move down btn" tool_tip="Voar para baixo (tecla C)"/> +		<button label="" label_selected="" name="turn right btn" tool_tip="Virar à direita (flecha DIR ou D)"/> +		<joystick_slide name="move right btn" tool_tip="Andar para a direita (Shift + Seta direita ou D)"/>  		<joystick_turn name="forward btn" tool_tip="Andar para frente (flecha para cima ou W)"/>  		<joystick_turn name="backward btn" tool_tip="Andar para trás (flecha para baixo ou S)"/>  	</panel> diff --git a/indra/newview/skins/default/xui/pt/floater_preview_notecard.xml b/indra/newview/skins/default/xui/pt/floater_preview_notecard.xml index e648a7d873..d094c1b63a 100644 --- a/indra/newview/skins/default/xui/pt/floater_preview_notecard.xml +++ b/indra/newview/skins/default/xui/pt/floater_preview_notecard.xml @@ -9,9 +9,6 @@  	<floater.string name="Title">  		Anotação: [NAME]  	</floater.string> -	<floater.string label="Salvar" label_selected="Salvar" name="Save"> -		Salvar -	</floater.string>  	<text name="desc txt">  		Descrição:  	</text> @@ -19,4 +16,5 @@  		Carregando...  	</text_editor>  	<button label="Salvar" label_selected="Salvar" name="Save"/> +	<button label="Excluir" label_selected="Excluir" name="Delete"/>  </floater> diff --git a/indra/newview/skins/default/xui/pt/floater_tools.xml b/indra/newview/skins/default/xui/pt/floater_tools.xml index 74b45f1d1e..dbc8b3ffbe 100644 --- a/indra/newview/skins/default/xui/pt/floater_tools.xml +++ b/indra/newview/skins/default/xui/pt/floater_tools.xml @@ -67,9 +67,9 @@  	<text name="RenderingCost" tool_tip="Mostra o cálculo do custo de renderização do objeto">  		þ: [COUNT]  	</text> -	<check_box name="checkbox uniform"/> -	<text name="checkbox uniform label"> -		Esticar ambos os lados +	<check_box label="" name="checkbox uniform"/> +	<text label="Esticar ambos lados" name="checkbox uniform label"> +		Esticar ambos lados  	</text>  	<check_box initial_value="true" label="Esticar texturas" name="checkbox stretch textures"/>  	<check_box initial_value="true" label="Mostrar na grade" name="checkbox snap to grid"/> diff --git a/indra/newview/skins/default/xui/pt/menu_attachment_self.xml b/indra/newview/skins/default/xui/pt/menu_attachment_self.xml index de3178b946..5cb1b211cf 100644 --- a/indra/newview/skins/default/xui/pt/menu_attachment_self.xml +++ b/indra/newview/skins/default/xui/pt/menu_attachment_self.xml @@ -5,7 +5,7 @@  	<menu_item_call label="Tirar" name="Detach"/>  	<menu_item_call label="Largar" name="Drop"/>  	<menu_item_call label="Ficar de pé" name="Stand Up"/> -	<menu_item_call label="Minha aparência" name="Appearance..."/> +	<menu_item_call label="Trocar de look" name="Change Outfit"/>  	<menu_item_call label="Meus amigos" name="Friends..."/>  	<menu_item_call label="Meus grupos" name="Groups..."/>  	<menu_item_call label="Meu perfil" name="Profile..."/> diff --git a/indra/newview/skins/default/xui/pt/menu_avatar_self.xml b/indra/newview/skins/default/xui/pt/menu_avatar_self.xml index ccbb921ebc..62055303b5 100644 --- a/indra/newview/skins/default/xui/pt/menu_avatar_self.xml +++ b/indra/newview/skins/default/xui/pt/menu_avatar_self.xml @@ -20,7 +20,9 @@  		<context_menu label="Tirar  ▶" name="Object Detach"/>  		<menu_item_call label="Tirar tudo" name="Detach All"/>  	</context_menu> -	<menu_item_call label="Minha aparência" name="Appearance..."/> +	<menu_item_call label="Trocar de look" name="Chenge Outfit"/> +	<menu_item_call label="Editar meu look" name="Edit Outfit"/> +	<menu_item_call label="Editar meu corpo" name="Edit My Shape"/>  	<menu_item_call label="Meus amigos" name="Friends..."/>  	<menu_item_call label="Meus grupos" name="Groups..."/>  	<menu_item_call label="Meu perfil" name="Profile..."/> diff --git a/indra/newview/skins/default/xui/pt/menu_bottomtray.xml b/indra/newview/skins/default/xui/pt/menu_bottomtray.xml index 43b446a67e..479d02512f 100644 --- a/indra/newview/skins/default/xui/pt/menu_bottomtray.xml +++ b/indra/newview/skins/default/xui/pt/menu_bottomtray.xml @@ -4,6 +4,11 @@  	<menu_item_check label="Botão de movimento" name="ShowMoveButton"/>  	<menu_item_check label="Botão de ver" name="ShowCameraButton"/>  	<menu_item_check label="Botão de fotos" name="ShowSnapshotButton"/> +	<menu_item_check label="Botão da Barra lateral" name="ShowSidebarButton"/> +	<menu_item_check label="Botão Construir" name="ShowBuildButton"/> +	<menu_item_check label="Botão Buscar" name="ShowSearchButton"/> +	<menu_item_check label="Botão Mapa" name="ShowWorldMapButton"/> +	<menu_item_check label="Botão do Mini Mapa" name="ShowMiniMapButton"/>  	<menu_item_call label="Cortar" name="NearbyChatBar_Cut"/>  	<menu_item_call label="Copiar" name="NearbyChatBar_Copy"/>  	<menu_item_call label="Colar" name="NearbyChatBar_Paste"/> diff --git a/indra/newview/skins/default/xui/pt/menu_inspect_self_gear.xml b/indra/newview/skins/default/xui/pt/menu_inspect_self_gear.xml index effc970eb8..c3e0608954 100644 --- a/indra/newview/skins/default/xui/pt/menu_inspect_self_gear.xml +++ b/indra/newview/skins/default/xui/pt/menu_inspect_self_gear.xml @@ -1,7 +1,7 @@  <?xml version="1.0" encoding="utf-8"?>  <menu name="Gear Menu">  	<menu_item_call label="Ficar de pé" name="stand_up"/> -	<menu_item_call label="Minha aparência" name="my_appearance"/> +	<menu_item_call label="Trocar de look" name="change_outfit"/>  	<menu_item_call label="Meu perfil" name="my_profile"/>  	<menu_item_call label="Meus amigos" name="my_friends"/>  	<menu_item_call label="Meus grupos" name="my_groups"/> diff --git a/indra/newview/skins/default/xui/pt/menu_inventory.xml b/indra/newview/skins/default/xui/pt/menu_inventory.xml index 345534261a..1b86b37075 100644 --- a/indra/newview/skins/default/xui/pt/menu_inventory.xml +++ b/indra/newview/skins/default/xui/pt/menu_inventory.xml @@ -54,6 +54,7 @@  	<menu_item_call label="Remover item" name="Purge Item"/>  	<menu_item_call label="Restaurar item" name="Restore Item"/>  	<menu_item_call label="Abrir" name="Open"/> +	<menu_item_call label="Abrir original" name="Open Original"/>  	<menu_item_call label="Propriedades" name="Properties"/>  	<menu_item_call label="Renomear" name="Rename"/>  	<menu_item_call label="Copiar item UUID" name="Copy Asset UUID"/> diff --git a/indra/newview/skins/default/xui/pt/menu_login.xml b/indra/newview/skins/default/xui/pt/menu_login.xml index 8ea87a06d1..a43ac271a9 100644 --- a/indra/newview/skins/default/xui/pt/menu_login.xml +++ b/indra/newview/skins/default/xui/pt/menu_login.xml @@ -2,7 +2,7 @@  <menu_bar name="Login Menu">  	<menu label="Eu" name="File">  		<menu_item_call label="Preferências" name="Preferences..."/> -		<menu_item_call label="Sair" name="Quit"/> +		<menu_item_call label="Sair do [APP_NAME]" name="Quit"/>  	</menu>  	<menu label="Ajuda" name="Help">  		<menu_item_call label="Ajuda do [SECOND_LIFE]" name="Second Life Help"/> diff --git a/indra/newview/skins/default/xui/pt/menu_participant_list.xml b/indra/newview/skins/default/xui/pt/menu_participant_list.xml index c0db7752af..01f1d4ef80 100644 --- a/indra/newview/skins/default/xui/pt/menu_participant_list.xml +++ b/indra/newview/skins/default/xui/pt/menu_participant_list.xml @@ -14,8 +14,8 @@  	<context_menu label="Opções do moderador >" name="Moderator Options">  		<menu_item_check label="Pode bater papo por escrito" name="AllowTextChat"/>  		<menu_item_call label="Silenciar este participante" name="ModerateVoiceMuteSelected"/> -		<menu_item_call label="Silenciar os demais" name="ModerateVoiceMuteOthers"/>  		<menu_item_call label="Desfazer silenciar deste participante" name="ModerateVoiceUnMuteSelected"/> -		<menu_item_call label="Desfazer silenciar dos demais" name="ModerateVoiceUnMuteOthers"/> +		<menu_item_call label="Silenciar todos" name="ModerateVoiceMute"/> +		<menu_item_call label="Desfazer silenciar para todos" name="ModerateVoiceUnmute"/>  	</context_menu>  </context_menu> diff --git a/indra/newview/skins/default/xui/pt/menu_viewer.xml b/indra/newview/skins/default/xui/pt/menu_viewer.xml index 84ad056df6..b091cc2c97 100644 --- a/indra/newview/skins/default/xui/pt/menu_viewer.xml +++ b/indra/newview/skins/default/xui/pt/menu_viewer.xml @@ -7,7 +7,7 @@  		</menu_item_call>  		<menu_item_call label="Comprar L$" name="Buy and Sell L$"/>  		<menu_item_call label="Meu perfil" name="Profile"/> -		<menu_item_call label="Minha aparência" name="Appearance"/> +		<menu_item_call label="Trocar de look" name="ChangeOutfit"/>  		<menu_item_check label="Meu inventário" name="Inventory"/>  		<menu_item_check label="Meu inventário" name="ShowSidetrayInventory"/>  		<menu_item_check label="Meus gestos" name="Gestures"/> @@ -162,6 +162,7 @@  			<menu_item_check label="Objetos flexíveis" name="Flexible Objects"/>  		</menu>  		<menu_item_check label="Executar diversas instâncias" name="Run Multiple Threads"/> +		<menu_item_check label="Usar plugin de leitura de threads" name="Use Plugin Read Thread"/>  		<menu_item_call label="Limpar cache de grupo" name="ClearGroupCache"/>  		<menu_item_check label="Smoothing de mouse" name="Mouse Smoothing"/>  		<menu label="Atalhos" name="Shortcuts"> @@ -188,7 +189,6 @@  			<menu_item_call label="Mais zoom" name="Zoom In"/>  			<menu_item_call label="Zoom padrão" name="Zoom Default"/>  			<menu_item_call label="Menos zoom" name="Zoom Out"/> -			<menu_item_call label="Alternar tela inteira" name="Toggle Fullscreen"/>  		</menu>  		<menu_item_call label="Mostrar configurações de depuração" name="Debug Settings"/>  		<menu_item_check label="Show Develop Menu" name="Debug Mode"/> diff --git a/indra/newview/skins/default/xui/pt/notifications.xml b/indra/newview/skins/default/xui/pt/notifications.xml index 462dcf2b21..e64940ecb1 100644 --- a/indra/newview/skins/default/xui/pt/notifications.xml +++ b/indra/newview/skins/default/xui/pt/notifications.xml @@ -323,6 +323,9 @@ Você precisa de uma conta para entrar no [SECOND_LIFE]. Você gostaria de abrir  		</url>  		<usetemplate name="okcancelbuttons" notext="Tentar novamente" yestext="Abrir conta"/>  	</notification> +	<notification name="InvalidCredentialFormat"> +		Digite o nome e sobrenome do seu avatar no campo Nome de usuário, depois faça o login novamente. +	</notification>  	<notification name="AddClassified">  		Os anúncios serão publicados na seção 'Classificados' das buscas e em [http://secondlife.com/community/classifieds secondlife.com] durante uma semana.  Escreva seu anúncio e clique em 'Publicar...'  @@ -603,6 +606,11 @@ Esperada [VALIDS]  	<notification name="CannotEncodeFile">  		Impossível codificar o arquivo: [FILE]  	</notification> +	<notification name="CorruptedProtectedDataStore"> +		Não foi possível fazer a leitura dos dados protegidos, redefinindo. +   Isso pode ocorrer após mudanças na configuração da rede. +		<usetemplate name="okbutton" yestext="OK"/> +	</notification>  	<notification name="CorruptResourceFile">  		Fonte do arquivo corrompida: [FILE]  	</notification> @@ -962,6 +970,12 @@ em TODOS OS TERRENOS deste sim?  Por favor, insira um valor maior.  	</notification> +	<notification name="ConfirmItemDeleteHasLinks"> +		Pelo menos um dos itens possui links que levam a ele.  Ao excluir o item, os links não funcionarão mais.   Por isso, recomendamos excluir os links primeiro. + +Tem certeza de que quer excluir estes items? +		<usetemplate name="okcancelbuttons" notext="Cancelar" yestext="OK"/> +	</notification>  	<notification name="ConfirmObjectDeleteLock">  		Pelo menos um dos itens que você selecionou está trancado. @@ -1103,6 +1117,42 @@ Pressione a tecla F1 para ajuda ou aprender mais sobre [SECOND_LIFE].  Por favor, escolha se o seu avatar é feminino ou masculino. Você pode mudar de idéia depois.  		<usetemplate name="okcancelbuttons" notext="Feminino" yestext="Masculino"/>  	</notification> +	<notification name="CantTeleportToGrid"> +		Não foi possível ir para [SLURL], que fica em outro grid ([GRID]) em relação ao grid atual, ([CURRENT_GRID]).  Feche o Visualizador e tente novamente. +		<usetemplate name="okbutton" yestext="OK"/> +	</notification> +	<notification name="GeneralCertificateError"> +		Falha de conexão com o servidor. +[REASON] + +SubjectName: [SUBJECT_NAME_STRING] +IssuerName: [ISSUER_NAME_STRING] +Válido de: [VALID_FROM] +Válido até: [VALID_TO] +MD5 Fingerprint: [SHA1_DIGEST] +Impressão digital SHA1: [MD5_DIGEST] +Uso da chave: [KEYUSAGE] +Uso estendido da chave: [EXTENDEDKEYUSAGE] +Identificador chave de assunto: [SUBJECTKEYIDENTIFIER] +		<usetemplate name="okbutton" yestext="OK"/> +	</notification> +	<notification name="TrustCertificateError"> +		A autoridade de certificação deste servidor é desconhecida. + +Dados do certificado: +SubjectName: [SUBJECT_NAME_STRING] +IssuerName: [ISSUER_NAME_STRING] +Válido de: [VALID_FROM] +Válido até: [VALID_TO] +MD5 Fingerprint: [SHA1_DIGEST] +Impressão digital SHA1: [MD5_DIGEST] +Uso da chave: [KEYUSAGE] +Uso estendido da chave: [EXTENDEDKEYUSAGE] +Identificador chave de assunto: [SUBJECTKEYIDENTIFIER] + +Confiar nesta autoridade? +		<usetemplate name="okcancelbuttons" notext="Cancelar" yestext="Confiança"/> +	</notification>  	<notification name="NotEnoughCurrency">  		[NAME] L$ [PRICE] Você não possui suficientes L$ para fazer isso.  	</notification> @@ -1493,9 +1543,9 @@ Ir para o Banco de Conhecimento para maiores informações sobre Classificaçõe  		Você não é permitido nesta região devido à sua Classificação de maturidade.  	</notification>  	<notification name="RegionEntryAccessBlocked_Change"> -		Você não pode entrar nessa região devido à sua seleção de maturidade.  +		Você não pode entrar nessa região devido à sua seleção de maturidade. -Clique em 'Mudar preferência' para aumentar o nível de maturidade e entrar nessa região.  De agora em diante você pode buscar e acessar conteúdo [REGIONMATURITY] .  Para modificar esta configuração, vá à Eu > Preferências > Geral. +Clique em 'Mudar preferência' para aumentar seu nível de maturidade e ganhar acesso imediato. Você então poderá fazer buscas e acessar conteúdo [REGIONMATURITY]. Para modificar o nível de maturidade, use o menu Eu > Preferências > Gerais.  		<form name="form">  			<button name="OK" text="Mudar preferência"/>  			<button default="true" name="Cancel" text="Fechar"/> @@ -2262,15 +2312,6 @@ Por favor, tente novamente em alguns instantes.  			<button name="Mute" text="Bloquear"/>  		</form>  	</notification> -	<notification name="ObjectGiveItemUnknownUser"> -		Um objeto chamado [OBJECTFROMNAME] de (residente desconhecido) lhe deu [OBJECTTYPE]: -[ITEM_SLURL] -		<form name="form"> -			<button name="Keep" text="Segure"/> -			<button name="Discard" text="Descarte"/> -			<button name="Mute" text="Bloquear"/> -		</form> -	</notification>  	<notification name="UserGiveItem">  		[NAME_SLURL] lhe deu [OBJECTTYPE]:  [ITEM_SLURL] @@ -2583,8 +2624,52 @@ O botão será exibido quando houver espaço suficente.  	<notification name="ShareNotification">  		Arraste itens do inventário para uma pessoa no seletor de residentes  	</notification> +	<notification name="DeedToGroupFail"> +		Ocorreu uma falha durante a doação ao grupo. +	</notification>  	<notification name="AvatarRezNotification"> -		O avatar de '[NAME]' renderizou em [TIME] s. +		( [EXISTENCE] segundos de vida ) +O avatar de '[NAME]' emergiu em [TIME] segundos. +	</notification> +	<notification name="AvatarRezSelfNotification"> +		( [EXISTENCE] segundos de vida ) +Você confeccionou seu look em [TIME] segundos. +	</notification> +	<notification name="AvatarRezCloudNotification"> +		( [EXISTENCE] segundos de vida ) +Avatar '[NAME]' transformou-se em nuvem. +	</notification> +	<notification name="AvatarRezArrivedNotification"> +		( [EXISTENCE] segundos de vida ) +Avatar '[NAME]' surgiu. +	</notification> +	<notification name="AvatarRezLeftCloudNotification"> +		( [EXISTENCE] segundos de vida ) +O avatar de '[NAME]' transformou-se em nuvem depois de [TIME] segundos. +	</notification> +	<notification name="AvatarRezEnteredAppearanceNotification"> +		( [EXISTENCE] segundos de vida ) +Avatar '[NAME]' entrou no modo aparência. +	</notification> +	<notification name="AvatarRezLeftAppearanceNotification"> +		( [EXISTENCE] segundos de vida ) +Avatar '[NAME]' sair do modo aparecer. +	</notification> +	<notification name="AvatarRezLeftNotification"> +		( [EXISTENCE] segundos de vida ) +Avatar '[NAME]' saiu totalmente carregado. +	</notification> +	<notification name="ConfirmLeaveCall"> +		Tem certeza de que quer sair desta ligação? +		<usetemplate ignoretext="Confirmar antes de deixar ligação" name="okcancelignore" notext="Não" yestext="Sim"/> +	</notification> +	<notification name="ConfirmMuteAll"> +		Você silenciou todos os participantes de uma ligação de grupo. +Todos os demais residentes que entrarem na ligação mais tarde também serão silenciados, mesmo se você sair da ligação. + + +Silenciar todos? +		<usetemplate ignoretext="Confirmar antes de silenciar todos os participantes em ligações de grupo." name="okcancelignore" notext="OK" yestext="Cancelar"/>  	</notification>  	<global name="UnsupportedCPU">  		- A velocidade da sua CPU não suporta os requisitos mínimos exigidos. diff --git a/indra/newview/skins/default/xui/pt/panel_body_parts_list_item.xml b/indra/newview/skins/default/xui/pt/panel_body_parts_list_item.xml new file mode 100644 index 0000000000..de764d8025 --- /dev/null +++ b/indra/newview/skins/default/xui/pt/panel_body_parts_list_item.xml @@ -0,0 +1,4 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<panel name="wearable_item"> +	<text name="item_name" value="..."/> +</panel> diff --git a/indra/newview/skins/default/xui/pt/panel_bodyparts_list_button_bar.xml b/indra/newview/skins/default/xui/pt/panel_bodyparts_list_button_bar.xml new file mode 100644 index 0000000000..094a03553b --- /dev/null +++ b/indra/newview/skins/default/xui/pt/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="Trocar" name="switch_btn"/> +	<button label="Comprar >" name="bodyparts_shop_btn"/> +</panel> diff --git a/indra/newview/skins/default/xui/pt/panel_bottomtray.xml b/indra/newview/skins/default/xui/pt/panel_bottomtray.xml index 092135bd42..9fd7da55df 100644 --- a/indra/newview/skins/default/xui/pt/panel_bottomtray.xml +++ b/indra/newview/skins/default/xui/pt/panel_bottomtray.xml @@ -1,11 +1,7 @@  <?xml version="1.0" encoding="utf-8" standalone="yes"?>  <panel name="bottom_tray"> -	<string name="SpeakBtnToolTip"> -		Liga e desliga o microfone -	</string> -	<string name="VoiceControlBtnToolTip"> -		Mostra/oculta os controles de voz -	</string> +	<string name="SpeakBtnToolTip" value="Liga e desliga o microfone"/> +	<string name="VoiceControlBtnToolTip" value="Mostra/oculta os controles de voz"/>  	<layout_stack name="toolbar_stack">  		<layout_panel name="speak_panel">  			<talk_button name="talk"> @@ -24,6 +20,21 @@  		<layout_panel name="snapshot_panel">  			<button label="" name="snapshots" tool_tip="Tirar foto"/>  		</layout_panel> +		<layout_panel name="sidebar_btn_panel"> +			<button label="Barra lateral" name="sidebar_btn" tool_tip="Mostra/oculta a barra lateral"/> +		</layout_panel> +		<layout_panel name="build_btn_panel"> +			<button label="Construir" name="build_btn" tool_tip="Mostra/oculta ferramentas de Construção"/> +		</layout_panel> +		<layout_panel name="search_btn_panel"> +			<button label="Busca" name="search_btn" tool_tip="Mostra/oculta os gestos"/> +		</layout_panel> +		<layout_panel name="world_map_btn_panel"> +			<button label="Mapa" name="world_map_btn" tool_tip="Mostra/oculta o Mapa Múndi"/> +		</layout_panel> +		<layout_panel name="mini_map_btn_panel"> +			<button label="Mini Mapa" name="mini_map_btn" tool_tip="Mostra/oculta o Mini Mapa"/> +		</layout_panel>  		<layout_panel name="im_well_panel">  			<chiclet_im_well name="im_well">  				<button name="Unread IM messages" tool_tip="Conversas"/> diff --git a/indra/newview/skins/default/xui/pt/panel_clothing_list_button_bar.xml b/indra/newview/skins/default/xui/pt/panel_clothing_list_button_bar.xml new file mode 100644 index 0000000000..bfdc7290d2 --- /dev/null +++ b/indra/newview/skins/default/xui/pt/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="Adicionar +" name="add_btn"/> +	<button label="Comprar >" name="clothing_shop_btn"/> +</panel> diff --git a/indra/newview/skins/default/xui/pt/panel_clothing_list_item.xml b/indra/newview/skins/default/xui/pt/panel_clothing_list_item.xml new file mode 100644 index 0000000000..de764d8025 --- /dev/null +++ b/indra/newview/skins/default/xui/pt/panel_clothing_list_item.xml @@ -0,0 +1,4 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<panel name="wearable_item"> +	<text name="item_name" value="..."/> +</panel> diff --git a/indra/newview/skins/default/xui/pt/panel_cof_wearables.xml b/indra/newview/skins/default/xui/pt/panel_cof_wearables.xml new file mode 100644 index 0000000000..3e4b12b001 --- /dev/null +++ b/indra/newview/skins/default/xui/pt/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="Anexos"/> +		<accordion_tab name="tab_clothing" title="Vestuário"/> +		<accordion_tab name="tab_body_parts" title="Corpo"/> +	</accordion> +</panel> diff --git a/indra/newview/skins/default/xui/pt/panel_deletable_wearable_list_item.xml b/indra/newview/skins/default/xui/pt/panel_deletable_wearable_list_item.xml new file mode 100644 index 0000000000..91d90a5660 --- /dev/null +++ b/indra/newview/skins/default/xui/pt/panel_deletable_wearable_list_item.xml @@ -0,0 +1,4 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<panel name="deletable_wearable_item"> +	<text name="item_name" value="..."/> +</panel> diff --git a/indra/newview/skins/default/xui/pt/panel_dummy_clothing_list_item.xml b/indra/newview/skins/default/xui/pt/panel_dummy_clothing_list_item.xml new file mode 100644 index 0000000000..6af84de0c7 --- /dev/null +++ b/indra/newview/skins/default/xui/pt/panel_dummy_clothing_list_item.xml @@ -0,0 +1,4 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<panel name="dummy_clothing_item"> +	<text name="item_name" value="..."/> +</panel> diff --git a/indra/newview/skins/default/xui/pt/panel_edit_shape.xml b/indra/newview/skins/default/xui/pt/panel_edit_shape.xml index 504486c3bb..6b9ac94cac 100644 --- a/indra/newview/skins/default/xui/pt/panel_edit_shape.xml +++ b/indra/newview/skins/default/xui/pt/panel_edit_shape.xml @@ -1,14 +1,8 @@  <?xml version="1.0" encoding="utf-8" standalone="yes"?>  <panel name="edit_shape_panel"> -	<panel name="avatar_sex_panel"> -		<text name="gender_text"> -			Sexo: -		</text> -		<radio_group name="sex_radio"> -			<radio_item label="Feminino" name="radio"/> -			<radio_item label="Masculino" name="radio2"/> -		</radio_group> -	</panel> +	<text name="avatar_height"> +		[HEIGHT] metros de altura +	</text>  	<panel label="Camisa" name="accordion_panel">  		<accordion name="wearable_accordion">  			<accordion_tab name="shape_body_tab" title="Corpo"/> diff --git a/indra/newview/skins/default/xui/pt/panel_edit_tattoo.xml b/indra/newview/skins/default/xui/pt/panel_edit_tattoo.xml index 23cde50acc..f85bb3c499 100644 --- a/indra/newview/skins/default/xui/pt/panel_edit_tattoo.xml +++ b/indra/newview/skins/default/xui/pt/panel_edit_tattoo.xml @@ -4,5 +4,6 @@  		<texture_picker label="Tatuagem de cabeça" name="Head Tattoo" tool_tip="Clique para escolher uma foto"/>  		<texture_picker label="Tatuagem superior" name="Upper Tattoo" tool_tip="Selecione uma foto"/>  		<texture_picker label="Tatuagem inferior" name="Lower Tattoo" tool_tip="Selecione uma foto"/> +		<color_swatch label="Cor/Tonalidade" name="Color/Tint" tool_tip="Selecionar a cor"/>  	</panel>  </panel> diff --git a/indra/newview/skins/default/xui/pt/panel_edit_wearable.xml b/indra/newview/skins/default/xui/pt/panel_edit_wearable.xml index a78539f274..f14a04f440 100644 --- a/indra/newview/skins/default/xui/pt/panel_edit_wearable.xml +++ b/indra/newview/skins/default/xui/pt/panel_edit_wearable.xml @@ -93,6 +93,12 @@  	<text name="edit_wearable_title" value="Editando forma"/>  	<panel label="Camisa" name="wearable_type_panel">  		<text name="description_text" value="Forma:"/> +		<radio_group name="sex_radio"> +			<radio_item label="" name="sex_male" tool_tip="Masculino" value="1"/> +			<radio_item label="" name="sex_female" tool_tip="Feminino" value="0"/> +		</radio_group> +		<icon name="male_icon" tool_tip="Masculino"/> +		<icon name="female_icon" tool_tip="Feminino"/>  	</panel>  	<panel label="gear_buttom_panel" name="gear_buttom_panel">  		<button name="friends_viewsort_btn" tool_tip="Opções"/> diff --git a/indra/newview/skins/default/xui/pt/panel_group_land_money.xml b/indra/newview/skins/default/xui/pt/panel_group_land_money.xml index 6f21b78b10..e57a85a726 100644 --- a/indra/newview/skins/default/xui/pt/panel_group_land_money.xml +++ b/indra/newview/skins/default/xui/pt/panel_group_land_money.xml @@ -6,6 +6,9 @@  	<panel.string name="cant_view_group_land_text">  		Você não está autorizado a acessar terrenos de grupos  	</panel.string> +	<panel.string name="epmty_view_group_land_text"> +		Nada consta +	</panel.string>  	<panel.string name="cant_view_group_accounting_text">  		Você não está autorizado a acessar os dados de contabilidade do grupo.  	</panel.string> diff --git a/indra/newview/skins/default/xui/pt/panel_group_notices.xml b/indra/newview/skins/default/xui/pt/panel_group_notices.xml index 4b5a00c761..9ccb85cdf6 100644 --- a/indra/newview/skins/default/xui/pt/panel_group_notices.xml +++ b/indra/newview/skins/default/xui/pt/panel_group_notices.xml @@ -39,6 +39,7 @@ Cada grupo pode enviar no máximo 200 avisos/dia  		<text name="string">  			Arrastar e soltar o item aqui para anexá-lo:  		</text> +		<button label="Inventário" name="open_inventory" tool_tip="Inventário aberto"/>  		<button label="Tirar" label_selected="Remover o anexo" name="remove_attachment" tool_tip="Remover anexo da notificação."/>  		<button label="Enviar" label_selected="Enviar" name="send_notice"/>  		<group_drop_target name="drop_target" tool_tip="Arrastar um item do inventário para a caixa para enviá-lo com o aviso. É preciso ter autorização de cópia e transferência do item para anexá-lo ao aviso."/> diff --git a/indra/newview/skins/default/xui/pt/panel_login.xml b/indra/newview/skins/default/xui/pt/panel_login.xml index 588b8deaa3..94a885960a 100644 --- a/indra/newview/skins/default/xui/pt/panel_login.xml +++ b/indra/newview/skins/default/xui/pt/panel_login.xml @@ -8,18 +8,15 @@  	</panel.string>  	<layout_stack name="login_widgets">  		<layout_panel name="login"> -			<text name="first_name_text"> -				Primeiro nome: +			<text name="username_text"> +				Nome de usuário:  			</text> -			<line_editor label="Nome" name="first_name_edit" tool_tip="[SECOND_LIFE] First Name"/> -			<text name="last_name_text"> -				Sobrenome: -			</text> -			<line_editor label="Sobrenome" name="last_name_edit" tool_tip="[SECOND_LIFE] Last Name"/> +			<line_editor label="Nome de usuário" name="username_edit" tool_tip="[SECOND_LIFE] Nome de usuário"/>  			<text name="password_text">  				Senha:  			</text>  			<check_box label="Lembrar senha" name="remember_check"/> +			<button label="conectar" name="connect_btn"/>  			<text name="start_location_text">  				Começar em:  			</text> @@ -27,7 +24,6 @@  				<combo_box.item label="Última posição" name="MyLastLocation"/>  				<combo_box.item label="Meu início" name="MyHome"/>  			</combo_box> -			<button label="conectar" name="connect_btn"/>  		</layout_panel>  		<layout_panel name="links">  			<text name="create_new_account_text"> diff --git a/indra/newview/skins/default/xui/pt/panel_main_inventory.xml b/indra/newview/skins/default/xui/pt/panel_main_inventory.xml index 104c3bface..dbf8e4fa52 100644 --- a/indra/newview/skins/default/xui/pt/panel_main_inventory.xml +++ b/indra/newview/skins/default/xui/pt/panel_main_inventory.xml @@ -9,62 +9,20 @@  	<text name="ItemcountText">  		Itens:  	</text> -	<menu_bar name="Inventory Menu"> -		<menu label="Arquivo" name="File"> -			<menu_item_call label="Abrir" name="Open"/> -			<menu label="Upload" name="upload"> -				<menu_item_call label="Imagem (L$[COST])..." name="Upload Image"/> -				<menu_item_call label="Som (L$[COST])..." name="Upload Sound"/> -				<menu_item_call label="Animação (L$[COST])..." name="Upload Animation"/> -				<menu_item_call label="Volume (L$[COST] per file)..." name="Bulk Upload"/> -			</menu> -			<menu_item_call label="Nova janela" name="New Window"/> -			<menu_item_call label="Mostrar filtros" name="Show Filters"/> -			<menu_item_call label="Restabelecer filtros" name="Reset Current"/> -			<menu_item_call label="Fechar todas as pastas" name="Close All Folders"/> -			<menu_item_call label="Esvaziar lixeira" name="Empty Trash"/> -			<menu_item_call label="Esvaziar achados e perdidos" name="Empty Lost And Found"/> -		</menu> -		<menu label="Crie" name="Create"> -			<menu_item_call label="Nova pasta" name="New Folder"/> -			<menu_item_call label="Novo script" name="New Script"/> -			<menu_item_call label="Nova anotação" name="New Note"/> -			<menu_item_call label="Novo gesto" name="New Gesture"/> -			<menu label="Novas roupas" name="New Clothes"> -				<menu_item_call label="Nova camisa" name="New Shirt"/> -				<menu_item_call label="Novas calças" name="New Pants"/> -				<menu_item_call label="Novos sapatos" name="New Shoes"/> -				<menu_item_call label="Novas meias" name="New Socks"/> -				<menu_item_call label="Nova blusa" name="New Jacket"/> -				<menu_item_call label="Nova saia" name="New Skirt"/> -				<menu_item_call label="Novas luvas" name="New Gloves"/> -				<menu_item_call label="Nova camiseta" name="New Undershirt"/> -				<menu_item_call label="Novas roupa de baixo" name="New Underpants"/> -				<menu_item_call label="Novo alpha" name="New Alpha"/> -				<menu_item_call label="Nova tatuagem" name="New Tattoo"/> -			</menu> -			<menu label="Nova parte do corpo" name="New Body Parts"> -				<menu_item_call label="Nova forma" name="New Shape"/> -				<menu_item_call label="Nova pele" name="New Skin"/> -				<menu_item_call label="Novo cabelo" name="New Hair"/> -				<menu_item_call label="Novos olhos" name="New Eyes"/> -			</menu> -		</menu> -		<menu label="Classificar" name="Sort"> -			<menu_item_check label="Por nome" name="By Name"/> -			<menu_item_check label="Por data" name="By Date"/> -			<menu_item_check label="Pastas sempre por nome" name="Folders Always By Name"/> -			<menu_item_check label="Pastas do sistema no topo" name="System Folders To Top"/> -		</menu> -	</menu_bar>  	<filter_editor label="Filtro" name="inventory search editor"/>  	<tab_container name="inventory filter tabs">  		<inventory_panel label="Todos os itens" name="All Items"/> -		<inventory_panel label="Itens recentes" name="Recent Items"/> +		<recent_inventory_panel label="Itens recentes" name="Recent Items"/>  	</tab_container> -	<panel name="bottom_panel"> -		<button name="options_gear_btn" tool_tip="Mostrar opções adicionais"/> -		<button name="add_btn" tool_tip="Adicionar novo item"/> -		<dnd_button name="trash_btn" tool_tip="Remover item selecionado"/> -	</panel> +	<layout_stack name="bottom_panel"> +		<layout_panel name="options_gear_btn_panel"> +			<button name="options_gear_btn" tool_tip="Mostrar opções adicionais"/> +		</layout_panel> +		<layout_panel name="add_btn_panel"> +			<button name="add_btn" tool_tip="Adicionar novo item"/> +		</layout_panel> +		<layout_panel name="trash_btn_panel"> +			<dnd_button name="trash_btn" tool_tip="Remover item selecionado"/> +		</layout_panel> +	</layout_stack>  </panel> diff --git a/indra/newview/skins/default/xui/pt/panel_outfit_edit.xml b/indra/newview/skins/default/xui/pt/panel_outfit_edit.xml index 3dc8b4cc75..61e470586e 100644 --- a/indra/newview/skins/default/xui/pt/panel_outfit_edit.xml +++ b/indra/newview/skins/default/xui/pt/panel_outfit_edit.xml @@ -2,6 +2,8 @@  <!-- Side tray Outfit Edit panel -->  <panel label="Editar look" name="outfit_edit">  	<string name="No Outfit" value="Nenhum"/> +	<string name="unsaved_changes" value="Mudanças não salvas"/> +	<string name="now_editing" value="Editando..."/>  	<panel.string name="not_available">  		(N\A)  	</panel.string> @@ -21,18 +23,13 @@  	</panel>  	<layout_stack name="im_panels">  		<layout_panel label="Painel de controle de MIs" name="outfit_wearables_panel"> -			<scroll_list name="look_items_list"> -				<scroll_list.columns label="Ver item" name="look_item"/> -				<scroll_list.columns label="Ordenar itens" name="look_item_sort"/> -			</scroll_list>  			<panel label="bottom_panel" name="edit_panel"/>  		</layout_panel>  		<layout_panel name="add_wearables_panel"> -			<filter_editor label="Filtro" name="look_item_filter"/> +			<text name="add_to_outfit_label" value="Adicionar ao look:"/>  			<layout_stack name="filter_panels"> -				<layout_panel label="Painel de controle de MIs" name="filter_button_panel"> -					<text name="add_to_outfit_label" value="Adicionar ao look:"/> -					<button label="O" name="filter_button"/> +				<layout_panel label="Painel de controle de MIs" name="filter_panel"> +					<filter_editor label="Filtro" name="look_item_filter"/>  				</layout_panel>  			</layout_stack>  			<panel label="add_wearables_button_bar" name="add_wearables_button_bar"> diff --git a/indra/newview/skins/default/xui/pt/panel_people.xml b/indra/newview/skins/default/xui/pt/panel_people.xml index 17f5b6cbac..efeea89fa9 100644 --- a/indra/newview/skins/default/xui/pt/panel_people.xml +++ b/indra/newview/skins/default/xui/pt/panel_people.xml @@ -2,9 +2,9 @@  <!-- Side tray panel -->  <panel label="Pessoas" name="people_panel">  	<string name="no_recent_people" value="Ninguém, recentemente. Em busca de alguém para conversar? Use a [secondlife:///app/search/people Busca] ou o [secondlife:///app/worldmap Mapa-Múndi]."/> -	<string name="no_filtered_recent_people" value="Não encontrou o que procura? Tente fazer uma [secondlife:///app/search/groups Busca]."/> +	<string name="no_filtered_recent_people" value="Não encontrou o que procura? Tente buscar no [secondlife:///app/search/people/[SEARCH_TERM] Search]."/>  	<string name="no_one_near" value="Ninguém por perto Em busca de alguém para conversar? Use a [secondlife:///app/search/people Busca] ou o [secondlife:///app/worldmap Mapa-Múndi]."/> -	<string name="no_one_filtered_near" value="Não encontrou o que procura? Tente fazer uma [secondlife:///app/search/groups Busca]."/> +	<string name="no_one_filtered_near" value="Não encontrou o que procura? Tente buscar no [secondlife:///app/search/people/[SEARCH_TERM] Search]."/>  	<string name="no_friends_online" value="Nenhum amigo online"/>  	<string name="no_friends" value="Nenhum amigo"/>  	<string name="no_friends_msg"> @@ -12,11 +12,11 @@  Em busca de alguém para conversar? Procure no [secondlife:///app/worldmap Mapa-Múndi].  	</string>  	<string name="no_filtered_friends_msg"> -		Não encontrou o que procura? Tente fazer uma [secondlife:///app/search/groups Busca]. +		Não encontrou o que procura? Tente buscar no [secondlife:///app/search/people/[SEARCH_TERM] Search].  	</string>  	<string name="people_filter_label" value="Filtro de pessoas"/>  	<string name="groups_filter_label" value="Filtro de grupos"/> -	<string name="no_filtered_groups_msg" value="Não encontrou o que procura? Tente fazer uma [secondlife:///app/search/groups Busca]."/> +	<string name="no_filtered_groups_msg" value="Não encontrou o que procura? Tente buscar no [secondlife:///app/search/groups/[SEARCH_TERM] Search]."/>  	<string name="no_groups_msg" value="À procura de grupos interessantes? Tente fazer uma [secondlife:///app/search/groups Busca]."/>  	<filter_editor label="Filtro" name="filter_input"/>  	<tab_container name="tabs"> @@ -55,8 +55,8 @@ Em busca de alguém para conversar? Procure no [secondlife:///app/worldmap Mapa-  		<button label="Perfil" name="view_profile_btn" tool_tip="Exibir fotografia, grupos e outras informações dos residentes" width="50"/>  		<button label="MI" name="im_btn" tool_tip="Iniciar MI" width="24"/>  		<button label="Chamada" name="call_btn" tool_tip="Ligar para este residente" width="61"/> -		<button label="Compartilhar" name="share_btn" width="82"/> -		<button label="Teletransporte" name="teleport_btn" tool_tip="Oferecer teletransporte"  width="86"/> +		<button label="Compartilhar" name="share_btn" tool_tip="Compartilhar item de inventário" width="82"/> +		<button label="Teletransporte" name="teleport_btn" tool_tip="Oferecer teletransporte" width="86"/>  		<button label="Perfil do grupo" name="group_info_btn" tool_tip="Exibir informação de grupo"/>  		<button label="Bate-papo de grupo" name="chat_btn" tool_tip="Iniciar bate-papo"/>  		<button label="Ligar para o grupo" name="group_call_btn" tool_tip="Ligar para este grupo"/> diff --git a/indra/newview/skins/default/xui/pt/panel_preferences_advanced.xml b/indra/newview/skins/default/xui/pt/panel_preferences_advanced.xml index 6f2cae0476..885aafc350 100644 --- a/indra/newview/skins/default/xui/pt/panel_preferences_advanced.xml +++ b/indra/newview/skins/default/xui/pt/panel_preferences_advanced.xml @@ -13,6 +13,7 @@  	</text>  	<check_box label="Construção/Edição" name="edit_camera_movement" tool_tip="Use o posicionamento automático da câmera quando entrar e sair do modo de edição"/>  	<check_box label="Aparência" name="appearance_camera_movement" tool_tip="Use o posicionamento automático da câmera quando em modo de edição"/> +	<check_box initial_value="1" label="Barra lateral" name="appearance_sidebar_positioning" tool_tip="Usar posicionamento automático da câmera na barra lateral"/>  	<check_box label="Mostre-me em visão de mouse" name="first_person_avatar_visible"/>  	<check_box label="Teclas de seta sempre me movem" name="arrow_keys_move_avatar_check"/>  	<check_box label="Dê dois toques e pressione para correr" name="tap_tap_hold_to_run"/> diff --git a/indra/newview/skins/default/xui/pt/panel_preferences_chat.xml b/indra/newview/skins/default/xui/pt/panel_preferences_chat.xml index e566fde27c..02b0ef35fe 100644 --- a/indra/newview/skins/default/xui/pt/panel_preferences_chat.xml +++ b/indra/newview/skins/default/xui/pt/panel_preferences_chat.xml @@ -45,6 +45,7 @@  	</text>  	<check_box initial_value="true" label="Executar animação digitada quando estiver conversando" name="play_typing_animation"/>  	<check_box label="Enviar MIs por email se estiver desconectado" name="send_im_to_email"/> +	<check_box label="Ativar MIs e bate-papos de texto simples" name="plain_text_chat_history"/>  	<text name="show_ims_in_label">  		Mostrar MIs em:  	</text> diff --git a/indra/newview/skins/default/xui/pt/panel_preferences_graphics1.xml b/indra/newview/skins/default/xui/pt/panel_preferences_graphics1.xml index eb38323940..ccf213099e 100644 --- a/indra/newview/skins/default/xui/pt/panel_preferences_graphics1.xml +++ b/indra/newview/skins/default/xui/pt/panel_preferences_graphics1.xml @@ -1,8 +1,5 @@  <?xml version="1.0" encoding="utf-8" standalone="yes"?>  <panel label="Gráficos" name="Display panel"> -	<text name="UI Size:"> -		Interface: -	</text>  	<text name="QualitySpeed">  		Qualidade e velocidade:  	</text> @@ -53,6 +50,10 @@ rápido  			m  		</text>  		<slider label="Contador máx. de partículas:" name="MaxParticleCount"/> +		<slider label="Distância máx. desenho avatar:" name="MaxAvatarDrawDistance"/> +		<text name="DrawDistanceMeterText3"> +			m +		</text>  		<slider label="Qualidade de Pós-processamento:" name="RenderPostProcess"/>  		<text name="MeshDetailText">  			Detalhes de Malha: diff --git a/indra/newview/skins/default/xui/pt/sidepanel_appearance.xml b/indra/newview/skins/default/xui/pt/sidepanel_appearance.xml index b8bbb4051a..f075f45b8f 100644 --- a/indra/newview/skins/default/xui/pt/sidepanel_appearance.xml +++ b/indra/newview/skins/default/xui/pt/sidepanel_appearance.xml @@ -1,9 +1,13 @@  <?xml version="1.0" encoding="utf-8" standalone="yes"?>  <panel label="Looks" name="appearance panel">  	<string name="No Outfit" value="Nenhum"/> +	<string name="Unsaved Changes" value="Mudanças não salvas"/> +	<string name="Now Wearing" value="Look atual..."/>  	<panel name="panel_currentlook"> -		<text name="currentlook_title"> -			(não salvo) +		<button label="E" name="editappearance_btn"/> +		<button label="O" name="openoutfit_btn"/> +		<text name="currentlook_status"> +			(Status)  		</text>  	</panel>  	<filter_editor label="Filtrar looks" name="Filter"/> diff --git a/indra/newview/skins/default/xui/pt/sidepanel_inventory.xml b/indra/newview/skins/default/xui/pt/sidepanel_inventory.xml index f634236cd2..31c96cad4c 100644 --- a/indra/newview/skins/default/xui/pt/sidepanel_inventory.xml +++ b/indra/newview/skins/default/xui/pt/sidepanel_inventory.xml @@ -4,6 +4,7 @@  		<panel name="button_panel">  			<button label="Perfil" name="info_btn"/>  			<button label="Compartilhar" name="share_btn"/> +			<button label="Comprar" name="shop_btn"/>  			<button label="Vestir" name="wear_btn"/>  			<button label="Tocar" name="play_btn"/>  			<button label="Teletransportar" name="teleport_btn"/> diff --git a/indra/newview/skins/default/xui/pt/strings.xml b/indra/newview/skins/default/xui/pt/strings.xml index 51b6581d42..f865124009 100644 --- a/indra/newview/skins/default/xui/pt/strings.xml +++ b/indra/newview/skins/default/xui/pt/strings.xml @@ -88,6 +88,24 @@  	<string name="LoginDownloadingClothing">  		Baixando roupas...  	</string> +	<string name="InvalidCertificate"> +		O servidor respondeu com um certificado inválido ou corrompido. Por favor contate o administrador do Grid. +	</string> +	<string name="CertInvalidHostname"> +		Um hostname inválido foi usado para acessar o servidor. Verifique o SLURL ou hostname do Grid. +	</string> +	<string name="CertExpired"> +		O certificado dado pelo Grid parece estar vencido.  Verifique o relógio do sistema ou contate o administrador do Grid. +	</string> +	<string name="CertKeyUsage"> +		O certificado dado pelo servidor não pôde ser usado para SSL.  Por favor contate o administrador do Grid. +	</string> +	<string name="CertBasicConstraints"> +		A cadeia de certificados do servidor tinha certificados demais.  Por favor contate o administrador do Grid. +	</string> +	<string name="CertInvalidSignature"> +		A assinatura do certificado dado pelo servidor do Grid não pôde ser verificada.  Por favor contate o administrador do Grid. +	</string>  	<string name="LoginFailedNoNetwork">  		Erro de rede: Não foi possível estabelecer a conexão, verifique sua conexão de rede.  	</string> @@ -819,6 +837,42 @@  	<string name="invalid">  		Inválido  	</string> +	<string name="shirt_not_worn"> +		Camisa não vestida +	</string> +	<string name="pants_not_worn"> +		Calças não vestidas +	</string> +	<string name="shoes_not_worn"> +		Sapatos não calçados +	</string> +	<string name="socks_not_worn"> +		Meias não calçadas +	</string> +	<string name="jacket_not_worn"> +		Jaqueta não vestida +	</string> +	<string name="gloves_not_worn"> +		Luvas não calçadas +	</string> +	<string name="undershirt_not_worn"> +		Camiseta não vestida +	</string> +	<string name="underpants_not_worn"> +		Roupa de baixo não vestida +	</string> +	<string name="skirt_not_worn"> +		Saia não vestida +	</string> +	<string name="alpha_not_worn"> +		Alpha não vestido +	</string> +	<string name="tattoo_not_worn"> +		Tatuagem não usada +	</string> +	<string name="invalid_not_worn"> +		inválido +	</string>  	<string name="NewWearable">  		Novo [WEARABLE_ITEM]  	</string> @@ -889,7 +943,10 @@  		Pressione ESC para retornar para visão do mundo  	</string>  	<string name="InventoryNoMatchingItems"> -		Não encontrou o que procura? Tente fazer uma [secondlife:///app/search/groups Busca]. +		Não encontrou o que procura? Tente buscar no [secondlife:///app/search/people/[SEARCH_TERM] Search]. +	</string> +	<string name="PlacesNoMatchingItems"> +		Não encontrou o que procura? Tente buscar no [secondlife:///app/search/groups/[SEARCH_TERM] Search].  	</string>  	<string name="FavoritesNoMatchingItems">  		Arraste um marco para adicioná-lo aos seus favoritos. @@ -919,6 +976,7 @@  	<string name="Wave" value="Acenar"/>  	<string name="HelloAvatar" value="Olá, avatar!"/>  	<string name="ViewAllGestures" value="Ver todos>>"/> +	<string name="GetMoreGestures" value="Mais >>"/>  	<string name="Animations" value="Animações,"/>  	<string name="Calling Cards" value="Cartões de visitas,"/>  	<string name="Clothing" value="Vestuário,"/> @@ -1542,6 +1600,9 @@  	<string name="MuteGroup">  		(grupo)  	</string> +	<string name="MuteExternal"> +		(Externo) +	</string>  	<string name="RegionNoCovenant">  		Não foi definido um contrato para essa região.  	</string> @@ -3299,11 +3360,14 @@ If you continue to receive this message, contact the [SUPPORT_SITE].  	<string name="answered_call">  		Ligação atendida  	</string> -	<string name="started_call"> -		Iniciou uma ligação de voz +	<string name="you_started_call"> +		Você iniciou uma ligação de voz +	</string> +	<string name="you_joined_call"> +		Você entrou na ligação  	</string> -	<string name="joined_call"> -		Entrou na ligação +	<string name="name_started_call"> +		[NAME] iniciou uma ligação de voz  	</string>  	<string name="ringing-im">  		Entrando em ligação de voz... @@ -3502,6 +3566,90 @@ Denunciar abuso  	<string name="Contents">  		Conteúdo  	</string> +	<string name="Gesture"> +		Gesto +	</string> +	<string name="Male Gestures"> +		Gestos masculinos +	</string> +	<string name="Female Gestures"> +		Gestos femininos +	</string> +	<string name="Other Gestures"> +		Outros gestos +	</string> +	<string name="Speech Gestures"> +		Gestos da fala +	</string> +	<string name="Common Gestures"> +		Gestos comuns +	</string> +	<string name="Male - Excuse me"> +		Perdão - masculino +	</string> +	<string name="Male - Get lost"> +		Deixe-me em paz - masculino +	</string> +	<string name="Male - Blow kiss"> +		Mandar beijo - masculino +	</string> +	<string name="Male - Boo"> +		Vaia - masculino +	</string> +	<string name="Male - Bored"> +		Maçante - masculino +	</string> +	<string name="Male - Hey"> +		Ôpa! - masculino +	</string> +	<string name="Male - Laugh"> +		Risada - masculino +	</string> +	<string name="Male - Repulsed"> +		Quero distância! - masculino +	</string> +	<string name="Male - Shrug"> +		Encolher de ombros - masculino +	</string> +	<string name="Male - Stick tougue out"> +		Mostrar a língua - masculino +	</string> +	<string name="Male - Wow"> +		Wow - masculino +	</string> +	<string name="FeMale - Excuse me"> +		Perdão - masc/fem +	</string> +	<string name="FeMale - Get lost"> +		Deixe-me em paz - feminino +	</string> +	<string name="FeMale - Blow kiss"> +		Mandar beijo - masc/fem +	</string> +	<string name="FeMale - Boo"> +		Vaia - masc/fem +	</string> +	<string name="Female - Bored"> +		Maçante - feminino +	</string> +	<string name="Female - Hey"> +		Ôpa - feminino +	</string> +	<string name="Female - Laugh"> +		Risada - feminina +	</string> +	<string name="Female - Repulsed"> +		Quero distância! - feminino +	</string> +	<string name="Female - Shrug"> +		Encolher ombros - feminino +	</string> +	<string name="Female - Stick tougue out"> +		Mostrar a língua - feminino +	</string> +	<string name="Female - Wow"> +		Wow - feminino +	</string>  	<string name="AvatarBirthDateFormat">  		[mthnum,datetime,slt]/[day,datetime,slt]/[year,datetime,slt]  	</string> | 
