diff --git a/indra/llmath/lloctree.h b/indra/llmath/lloctree.h index 07ca00913..cc1482b18 100644 --- a/indra/llmath/lloctree.h +++ b/indra/llmath/lloctree.h @@ -457,7 +457,7 @@ public: mDataEnd = NULL; } - notifyRemoval(data); + this->notifyRemoval(data); checkAlive(); } diff --git a/indra/llmessage/llcurl.cpp b/indra/llmessage/llcurl.cpp index fc057d969..f7fde67be 100644 --- a/indra/llmessage/llcurl.cpp +++ b/indra/llmessage/llcurl.cpp @@ -199,8 +199,9 @@ void LLCurl::Responder::completedHeader(U32 status, const std::string& reason, c } -namespace boost -{ +// DONT UNCOMMENT THIS IT BREAKS GCC47 +//namespace boost +//{ void intrusive_ptr_add_ref(LLCurl::Responder* p) { ++p->mReferenceCount; @@ -213,7 +214,7 @@ namespace boost delete p; } } -}; +//}; ////////////////////////////////////////////////////////////////////////////// diff --git a/indra/llmessage/llcurl.h b/indra/llmessage/llcurl.h index 76ef595e9..67abb30ff 100644 --- a/indra/llmessage/llcurl.h +++ b/indra/llmessage/llcurl.h @@ -304,11 +304,12 @@ private: easy_free_list_t mEasyFreeList; }; -namespace boost -{ +// DONT UNCOMMENT BREAKS GCC47 +//namespace boost +//{ void intrusive_ptr_add_ref(LLCurl::Responder* p); void intrusive_ptr_release(LLCurl::Responder* p); -}; +//}; class LLCurlRequest diff --git a/indra/llrender/llpostprocess.cpp b/indra/llrender/llpostprocess.cpp index 846badc60..2cedee327 100644 --- a/indra/llrender/llpostprocess.cpp +++ b/indra/llrender/llpostprocess.cpp @@ -565,13 +565,13 @@ void LLPostProcess::setSelectedEffect(std::string const & effectName) } } -void LLPostProcess::setSelectedEffectValue(std::string const & setting, LLSD& value) +void LLPostProcess::setSelectedEffectValue(std::string const & setting, LLSD value) { char buf[256]; S32 elem=0; if(sscanf(setting.c_str(),"%255[^[][%d]", buf, &elem) == 2) { - mSelectedEffectInfo[std::string(buf)][elem] = value; + mSelectedEffectInfo[static_cast(buf)][elem] = value; } else { diff --git a/indra/llrender/llpostprocess.h b/indra/llrender/llpostprocess.h index 830598a92..ec076842d 100644 --- a/indra/llrender/llpostprocess.h +++ b/indra/llrender/llpostprocess.h @@ -149,7 +149,7 @@ public: inline LLSD const & getSelectedEffectInfo(void) const { return mSelectedEffectInfo; } // Setters void setSelectedEffect(std::string const & effectName); - void setSelectedEffectValue(std::string const & setting, LLSD& value); + void setSelectedEffectValue(std::string const & setting, LLSD value); void resetSelectedEffect(); void saveEffectAs(std::string const & effectName); }; diff --git a/indra/llui/llfloater.h b/indra/llui/llfloater.h index b61a567bb..e710fa6dc 100644 --- a/indra/llui/llfloater.h +++ b/indra/llui/llfloater.h @@ -217,6 +217,7 @@ public: virtual BOOL canSaveAs() const { return FALSE; } virtual void saveAs() {} + virtual void saveAsType(BOOL type=false) {} // virtual LLUUID getItemID() { return LLUUID::null; } diff --git a/indra/llui/llscrolllistctrl.cpp b/indra/llui/llscrolllistctrl.cpp index e4ad47118..ea168a35c 100644 --- a/indra/llui/llscrolllistctrl.cpp +++ b/indra/llui/llscrolllistctrl.cpp @@ -666,6 +666,7 @@ LLScrollListCtrl::LLScrollListCtrl(const std::string& name, const LLRect& rect, mFgUnselectedColor( LLUI::sColorsGroup->getColor("ScrollUnselectedColor") ), mFgDisabledColor( LLUI::sColorsGroup->getColor("ScrollDisabledColor") ), mHighlightedColor( LLUI::sColorsGroup->getColor("ScrollHighlightedColor") ), + mDefaultListTextColor( LLUI::sColorsGroup->getColor("DefaultListText") ), mBorderThickness( 2 ), mOnDoubleClickCallback( NULL ), mOnMaximumSelectCallback( NULL ), @@ -3543,6 +3544,10 @@ LLScrollListItem* LLScrollListCtrl::addElement(const LLSD& value, EAddPosition p { cell->setColor(color); } + else + { + cell->setColor(mDefaultListTextColor); + } new_item->setColumn(index, cell); if (columnp->mHeader && !value.asString().empty()) { diff --git a/indra/llui/llscrolllistctrl.h b/indra/llui/llscrolllistctrl.h index ada8032f1..4060c1466 100644 --- a/indra/llui/llscrolllistctrl.h +++ b/indra/llui/llscrolllistctrl.h @@ -697,6 +697,7 @@ private: LLColor4 mFgUnselectedColor; LLColor4 mFgDisabledColor; LLColor4 mHighlightedColor; + LLColor4 mDefaultListTextColor; S32 mBorderThickness; void (*mOnDoubleClickCallback)(void* userdata); diff --git a/indra/newview/CMakeLists.txt b/indra/newview/CMakeLists.txt index d3c46bafb..251b2f588 100644 --- a/indra/newview/CMakeLists.txt +++ b/indra/newview/CMakeLists.txt @@ -217,7 +217,6 @@ set(viewer_SOURCE_FILES llfloatergroupinvite.cpp llfloatergroups.cpp llfloaterhandler.cpp - llfloaterhardwaresettings.cpp llfloaterhtmlcurrency.cpp llfloatermediabrowser.cpp llfloaterhtmlsimple.cpp @@ -721,7 +720,6 @@ set(viewer_HEADER_FILES llfloatergroupinvite.h llfloatergroups.h llfloaterhandler.h - llfloaterhardwaresettings.h llfloaterhtmlcurrency.h llfloatermediabrowser.h llfloaterhtmlsimple.h diff --git a/indra/newview/NACLantispam.cpp b/indra/newview/NACLantispam.cpp index 95aad581b..aac555a50 100644 --- a/indra/newview/NACLantispam.cpp +++ b/indra/newview/NACLantispam.cpp @@ -1,3 +1,18 @@ +/* DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE + * Version 2, December 2004 + * + * Copyright (C) 2004 Sam Hocevar + * + * Everyone is permitted to copy and distribute verbatim or modified + * copies of this license document, and changing it is allowed as long + * as the name is changed. + * + * DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE + * TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION + * + * 0. You just DO WHAT THE FUCK YOU WANT TO. + */ + #include "llviewerprecompiledheaders.h" #include "NACLantispam.h" #include "llviewercontrol.h" @@ -263,7 +278,7 @@ void NACLAntiSpamRegistry::blockGlobalEntry(LLUUID& source) } globalEntries[source.asString()]->setBlocked(); } -bool NACLAntiSpamRegistry::checkQueue(U32 name, LLUUID& source, U32 multiplier, bool silent) +bool NACLAntiSpamRegistry::checkQueue(U32 name, LLUUID& source, U32 multiplier) { if(source.isNull()) return false; if(gAgent.getID() == source) return false; @@ -295,7 +310,7 @@ bool NACLAntiSpamRegistry::checkQueue(U32 name, LLUUID& source, U32 multiplier, } else { - if(!silent) + if(gSavedSettings.getBOOL("AntiSpamNotify")) { LLSD args; args["MESSAGE"] = std::string(getQueueName(name))+": Blocked object "+source.asString(); diff --git a/indra/newview/NACLantispam.h b/indra/newview/NACLantispam.h index 2f65fc423..6da32f5c1 100644 --- a/indra/newview/NACLantispam.h +++ b/indra/newview/NACLantispam.h @@ -1,3 +1,18 @@ +/* DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE + * Version 2, December 2004 + * + * Copyright (C) 2004 Sam Hocevar + * + * Everyone is permitted to copy and distribute verbatim or modified + * copies of this license document, and changing it is allowed as long + * as the name is changed. + * + * DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE + * TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION + * + * 0. You just DO WHAT THE FUCK YOU WANT TO. + */ + #ifndef NACLANTISPAM_H #define NACLANTISPAM_H #include @@ -48,7 +63,7 @@ public: static void setRegisteredQueueAmount(U32 name,U32 amount); static void setAllQueueTimes(U32 amount); static void setAllQueueAmounts(U32 time); - static bool checkQueue(U32 name, LLUUID& source, U32 multiplier=1, bool silent=false); + static bool checkQueue(U32 name, LLUUID& source, U32 multiplier=1); static bool handleNaclAntiSpamGlobalQueueChanged(const LLSD& newvalue); static bool handleNaclAntiSpamTimeChanged(const LLSD& newvalue); static bool handleNaclAntiSpamAmountChanged(const LLSD& newvalue); @@ -86,7 +101,6 @@ private: static void blockGlobalEntry(LLUUID& source); }; - extern const std::string COLLISION_SOUNDS[]; extern const int COLLISION_SOUNDS_SIZE; diff --git a/indra/newview/app_settings/settings.xml b/indra/newview/app_settings/settings.xml index deee94daa..08a211576 100644 --- a/indra/newview/app_settings/settings.xml +++ b/indra/newview/app_settings/settings.xml @@ -894,7 +894,95 @@ Value 1 - _NACL_Antispam + AntiSpamAlerts + + Comment + When true, dialogs from alerts will be blocked. + Persist + 1 + Type + Boolean + Value + 0 + + AntiSpamFriendshipOffers + + Comment + When true, dialogs from friendship requests will be blocked. + Persist + 1 + Type + Boolean + Value + 0 + + AntiSpamGroupInvites + + Comment + When true, dialogs from group invites will be blocked. + Persist + 1 + Type + Boolean + Value + 0 + + AntiSpamGroupNotices + + Comment + When true, dialogs from group notices will be blocked. + Persist + 1 + Type + Boolean + Value + 0 + + AntiSpamItemOffers + + Comment + When true, dialogs from inventory item offers will be blocked. + Persist + 1 + Type + Boolean + Value + 0 + + AntiSpamNotify + + Comment + When true, notifications will appear any time a spamtype is blocked. + Persist + 1 + Type + Boolean + Value + 1 + + AntiSpamScripts + + Comment + When true, dialogs from scripts, including script-driven teleports and questions, and other interactive script stuff, will be blocked. + Persist + 1 + Type + Boolean + Value + 0 + + AntiSpamTeleports + + Comment + When true, dialogs from teleport requests from other residents will be blocked. + Persist + 1 + Type + Boolean + Value + 0 + + _NACL_Antispam Comment When true, all dialogs will be blocked, resets on restart. @@ -908,7 +996,7 @@ _NACL_AntiSpamGlobalQueue Comment - + Collect spamtypes together, instead of individually counting them Persist 1 Type @@ -919,24 +1007,24 @@ _NACL_AntiSpamTime Comment - + Time in seconds for spamtype to accumulate the _NACL_AntiSpamAmount and be blocked Persist 1 Type U32 Value - 2 + 1 _NACL_AntiSpamAmount Comment - + Amount of spamtype to be reached before the blocking will occur. Persist 1 Type U32 Value - 10 + 30 _NACL_AntiSpamSoundMulti @@ -947,7 +1035,7 @@ Type U32 Value - 4 + 20 _NACL_AntiSpamNewlines @@ -958,7 +1046,7 @@ Type U32 Value - 30 + 20 _NACL_AntiSpamSoundPreloadMulti @@ -969,7 +1057,7 @@ Type U32 Value - 4 + 20 AgentChatColor diff --git a/indra/newview/app_settings/settings_per_account.xml b/indra/newview/app_settings/settings_per_account.xml index ba157bd6a..b422fae32 100644 --- a/indra/newview/app_settings/settings_per_account.xml +++ b/indra/newview/app_settings/settings_per_account.xml @@ -461,7 +461,7 @@ Type Boolean Value - 0 + 1 LogChatIM @@ -472,7 +472,7 @@ Type Boolean Value - 0 + 1 LogChatTimestamp @@ -483,7 +483,7 @@ Type Boolean Value - 0 + 1 LogInstantMessages diff --git a/indra/newview/ascentprefschat.cpp b/indra/newview/ascentprefschat.cpp index 29e5d3ff0..5960024bd 100644 --- a/indra/newview/ascentprefschat.cpp +++ b/indra/newview/ascentprefschat.cpp @@ -42,6 +42,7 @@ #include "llviewercontrol.h" #include "NACLantispam.h" #include "lgghunspell_wrapper.h" +#include "lltrans.h" #include "llstartup.h" @@ -85,16 +86,17 @@ LLPrefsAscentChat::LLPrefsAscentChat() LLUUID itemid = (LLUUID)gSavedPerAccountSettings.getString("AscentInstantMessageResponseItemData"); LLViewerInventoryItem* item = gInventory.getItem(itemid); - if (item) childSetValue("im_give_disp_rect_txt","Currently set to: "+item->getName()); - else if (itemid.isNull()) childSetValue("im_give_disp_rect_txt","Currently not set"); - else childSetValue("im_give_disp_rect_txt","Currently set to an item not on this account"); + if (item) childSetValue("im_give_disp_rect_txt", LLTrans::getString("CurrentlySetTo") + LLTrans::getString(":") + " " +item->getName()); + else if (itemid.isNull()) childSetValue("im_give_disp_rect_txt", LLTrans::getString("CurrentlyNotSet")); + else childSetValue("im_give_disp_rect_txt", LLTrans::getString("CurrentlySetTo") + " " + LLTrans::getString("AnItemNotOnThisAccount")); } - else childSetValue("im_give_disp_rect_txt","Not logged in"); + else childSetValue("im_give_disp_rect_txt", LLTrans::getString("NotLoggedIn")); childSetCommitCallback("im_response", onCommitAutoResponse, this); childSetEnabled("reset_antispam", started); childSetCommitCallback("reset_antispam", onCommitResetAS, this); + childSetCommitCallback("antispam_checkbox", onCommitDialogBlock, this); childSetCommitCallback("KeywordsOn", onCommitKeywords, this); childSetCommitCallback("KeywordsList", onCommitKeywords, this); @@ -239,7 +241,7 @@ void LLPrefsAscentChat::onCommitAutoResponse(LLUICtrl* ctrl, void* user_data) void LLPrefsAscentChat::SinguIMResponseItemDrop(LLViewerInventoryItem* item) { gSavedPerAccountSettings.setString("AscentInstantMessageResponseItemData", item->getUUID().asString()); - sInst->childSetValue("im_give_disp_rect_txt","Currently set to: "+item->getName()); + sInst->childSetValue("im_give_disp_rect_txt", LLTrans::getString("CurrentlySetTo") + LLTrans::getString(":") + " " +item->getName()); } //static @@ -248,6 +250,21 @@ void LLPrefsAscentChat::onCommitResetAS(LLUICtrl*, void*) NACLAntiSpamRegistry::purgeAllQueues(); } +//static +void LLPrefsAscentChat::onCommitDialogBlock(LLUICtrl* ctrl, void* user_data) +{ + LLPrefsAscentChat* self = (LLPrefsAscentChat*)user_data; + bool enabled = ctrl->getValue().asBoolean(); + self->childSetEnabled("Block All Dialogs From", !enabled); + self->childSetEnabled("Alerts", !enabled); + self->childSetEnabled("Friendship Offers", !enabled); + self->childSetEnabled("Group Invites", !enabled); + self->childSetEnabled("Group Notices", !enabled); + self->childSetEnabled("Item Offers", !enabled); + self->childSetEnabled("Scripts", !enabled); + self->childSetEnabled("Teleport Offers", !enabled); +} + //static void LLPrefsAscentChat::onCommitKeywords(LLUICtrl* ctrl, void* user_data) { @@ -331,6 +348,14 @@ void LLPrefsAscentChat::refreshValues() mChatSpamCount = gSavedSettings.getU32("_NACL_AntiSpamAmount"); mChatSpamTime = gSavedSettings.getU32("_NACL_AntiSpamTime"); mBlockDialogSpam = gSavedSettings.getBOOL("_NACL_Antispam"); + mBlockAlertSpam = gSavedSettings.getBOOL("AntiSpamAlerts"); + mBlockFriendSpam = gSavedSettings.getBOOL("AntiSpamFriendshipOffers"); + mBlockGroupInviteSpam = gSavedSettings.getBOOL("AntiSpamGroupInvites"); + mBlockGroupNoticeSpam = gSavedSettings.getBOOL("AntiSpamGroupNotices"); + mBlockItemOfferSpam = gSavedSettings.getBOOL("AntiSpamItemOffers"); + mBlockScriptSpam = gSavedSettings.getBOOL("AntiSpamScripts"); + mBlockTeleportSpam = gSavedSettings.getBOOL("AntiSpamTeleports"); + mNotifyOnSpam = gSavedSettings.getBOOL("AntiSpamNotify"); mSoundMulti = gSavedSettings.getU32("_NACL_AntiSpamSoundMulti"); mNewLines = gSavedSettings.getU32("_NACL_AntiSpamNewlines"); mPreloadMulti = gSavedSettings.getU32("_NACL_AntiSpamSoundPreloadMulti"); @@ -378,6 +403,16 @@ void LLPrefsAscentChat::refresh() LLWStringUtil::replaceChar(auto_response, '%', ' '); childSetText("im_response", wstring_to_utf8str(auto_response)); + //Antispam ------------------------------------------------------------------------ + childSetEnabled("Block All Dialogs From", !mBlockDialogSpam); + childSetEnabled("Alerts", !mBlockDialogSpam); + childSetEnabled("Friendship Offers", !mBlockDialogSpam); + childSetEnabled("Group Invites", !mBlockDialogSpam); + childSetEnabled("Group Notices", !mBlockDialogSpam); + childSetEnabled("Item Offers", !mBlockDialogSpam); + childSetEnabled("Scripts", !mBlockDialogSpam); + childSetEnabled("Teleport Offers", !mBlockDialogSpam); + //Text Options ------------------------------------------------------------------------ combo = getChild("SpellBase"); @@ -518,6 +553,14 @@ void LLPrefsAscentChat::cancel() gSavedSettings.setU32("_NACL_AntiSpamAmount", mChatSpamCount); gSavedSettings.setU32("_NACL_AntiSpamTime", mChatSpamTime); gSavedSettings.setBOOL("_NACL_Antispam", mBlockDialogSpam); + gSavedSettings.setBOOL("AntiSpamAlerts", mBlockAlertSpam); + gSavedSettings.setBOOL("AntiSpamFriendshipOffers", mBlockFriendSpam); + gSavedSettings.setBOOL("AntiSpamGroupNotices", mBlockGroupNoticeSpam); + gSavedSettings.setBOOL("AntiSpamGroupInvites", mBlockGroupInviteSpam); + gSavedSettings.setBOOL("AntiSpamItemOffers", mBlockItemOfferSpam); + gSavedSettings.setBOOL("AntiSpamScripts", mBlockScriptSpam); + gSavedSettings.setBOOL("AntiSpamTeleports", mBlockTeleportSpam); + gSavedSettings.setBOOL("AntiSpamNotify", mNotifyOnSpam); gSavedSettings.setU32("_NACL_AntiSpamSoundMulti", mSoundMulti); gSavedSettings.setU32("_NACL_AntiSpamNewlines", mNewLines); gSavedSettings.setU32("_NACL_AntiSpamSoundPreloadMulti", mPreloadMulti); diff --git a/indra/newview/ascentprefschat.h b/indra/newview/ascentprefschat.h index d83b5b2d9..936646164 100644 --- a/indra/newview/ascentprefschat.h +++ b/indra/newview/ascentprefschat.h @@ -57,6 +57,7 @@ protected: static void onCommitTimeDate(LLUICtrl* ctrl, void *userdata); static void onCommitAutoResponse(LLUICtrl* ctrl, void* user_data); static void onCommitResetAS(LLUICtrl*,void*); + static void onCommitDialogBlock(LLUICtrl*, void*); static void onCommitKeywords(LLUICtrl* ctrl, void* user_data); //Chat/IM ----------------------------------------------------------------------------- @@ -89,6 +90,14 @@ protected: U32 mChatSpamCount; U32 mChatSpamTime; BOOL mBlockDialogSpam; + BOOL mBlockAlertSpam; + BOOL mBlockFriendSpam; + BOOL mBlockGroupNoticeSpam; + BOOL mBlockGroupInviteSpam; + BOOL mBlockItemOfferSpam; + BOOL mBlockScriptSpam; + BOOL mBlockTeleportSpam; + BOOL mNotifyOnSpam; BOOL mSoundMulti; U32 mNewLines; U32 mPreloadMulti; diff --git a/indra/newview/ascentprefssys.cpp b/indra/newview/ascentprefssys.cpp index c9f883c05..684a2fb0a 100644 --- a/indra/newview/ascentprefssys.cpp +++ b/indra/newview/ascentprefssys.cpp @@ -45,6 +45,7 @@ #include "lluictrlfactory.h" #include "llviewercontrol.h" #include "llstartup.h" +#include "lltrans.h" LLDropTarget* mBuildDropTarget; LLPrefsAscentSys* LLPrefsAscentSys::sInst; @@ -102,11 +103,11 @@ LLPrefsAscentSys::LLPrefsAscentSys() LLUUID itemid = (LLUUID)gSavedPerAccountSettings.getString("EmeraldBuildPrefs_Item"); LLViewerInventoryItem* item = gInventory.getItem(itemid); - if (item) childSetValue("build_item_add_disp_rect_txt", "Currently set to:\n"+item->getName()); - else if (itemid.isNull()) childSetValue("build_item_add_disp_rect_txt", "Currently\nnot set"); - else childSetValue("build_item_add_disp_rect_txt", "Currently set to\nan item not on this account"); + if (item) childSetValue("build_item_add_disp_rect_txt", LLTrans::getString("CurrentlySetTo") + LLTrans::getString(":") + "\n" +item->getName()); + else if (itemid.isNull()) childSetValue("build_item_add_disp_rect_txt", LLTrans::getString("CurrentlyNotSet")); + else childSetValue("build_item_add_disp_rect_txt", LLTrans::getString("CurrentlySetTo") + "\n" + LLTrans::getString("AnItemNotOnThisAccount")); } - else childSetValue("build_item_add_disp_rect_txt", "You are\nnot logged in"); + else childSetValue("build_item_add_disp_rect_txt", LLTrans::getString("NotLoggedIn")); refreshValues(); refresh(); @@ -165,7 +166,7 @@ void LLPrefsAscentSys::onCommitCheckBox(LLUICtrl* ctrl, void* user_data) gAudiop->triggerSound(LLUUID("58a38e89-44c6-c52b-deb8-9f1ddc527319"), gAgent.getID(), 1.0f, LLAudioEngine::AUDIO_TYPE_UI, lpos_global); LLChat chat; chat.mSourceType = CHAT_SOURCE_SYSTEM; - chat.mText = llformat("You are bestowed with powers beyond mortal comprehension.\nUse your newfound abilities wisely.\nUnlocked:\n- Animation Priority up to 7 - Meant for animations that should override anything and everything at all times. DO NOT USE THIS FOR GENERAL ANIMATIONS.\n- Right click > Destroy objects - Permanently deletes an object immediately, when you don't feel like waiting for the server to respond.\n- Right Click > Explode objects - Turns an object physical, temporary, and delinks it."); + chat.mText = LLTrans::getString("PowerUser1") + "\n" + LLTrans::getString("PowerUser2") + "\n" + LLTrans::getString("Unlocked:") + "\n" + LLTrans::getString("PowerUser3") + "\n- " + LLTrans::getString("RightClick") + " > " + LLTrans::getString("PowerUser4") + "\n- " + LLTrans::getString("RightClick") + " > " + LLTrans::getString("PowerUser5"); LLFloaterChat::addChat(chat); } } @@ -247,7 +248,7 @@ void LLPrefsAscentSys::onCommitTexturePicker(LLUICtrl* ctrl, void* userdata) void LLPrefsAscentSys::SinguBuildItemDrop(LLViewerInventoryItem* item) { gSavedPerAccountSettings.setString("EmeraldBuildPrefs_Item", item->getUUID().asString()); - sInst->childSetValue("build_item_add_disp_rect_txt","Currently set to:\n"+item->getName()); + sInst->childSetValue("build_item_add_disp_rect_txt", LLTrans::getString("CurrentlySetTo") + LLTrans::getString(":") + "\n" + item->getName()); } void LLPrefsAscentSys::refreshValues() diff --git a/indra/newview/floaterao.cpp b/indra/newview/floaterao.cpp index afc0fcb75..ec3fac0e5 100644 --- a/indra/newview/floaterao.cpp +++ b/indra/newview/floaterao.cpp @@ -22,6 +22,7 @@ #include "chatbar_as_cmdline.h" //#include "llfloaterchat.h" #include "llfirstuse.h" +#include "lltrans.h" #include "llinventory.h" #include "llinventoryfunctions.h" @@ -330,20 +331,20 @@ BOOL LLFloaterAO::postBuild() LLViewerInventoryItem* itemimport = gInventory.getItem(itemidimport); if(itemimport) { - childSetValue("ao_nc_text","Currently set to: "+itemimport->getName()); + childSetValue("ao_nc_text", LLTrans::getString("CurrentlySetTo") + LLTrans::getString(":") + " " +itemimport->getName()); } else if(itemidimport.isNull()) { - childSetValue("ao_nc_text","Currently not set"); + childSetValue("ao_nc_text", LLTrans::getString("CurrentlyNotSet")); } else { - childSetValue("ao_nc_text","Currently set to a item not on this account"); + childSetValue("ao_nc_text", LLTrans::getString("CurrentlySetTo") + " " + LLTrans::getString("AnItemNotOnThisAccount")); } } else { - childSetValue("ao_nc_text","Not logged in"); + childSetValue("ao_nc_text", LLTrans::getString("NotLoggedIn")); } childSetAction("more_btn", onClickMore, this); childSetAction("less_btn", onClickLess, this); @@ -794,7 +795,7 @@ void LLFloaterAO::setCurrentStandId(const LLUUID& id) void LLFloaterAO::AOItemDrop(LLViewerInventoryItem* item) { gSavedPerAccountSettings.setString("AOConfigNotecardID", item->getUUID().asString()); - sInstance->childSetValue("ao_nc_text","Currently set to: "+item->getName()); + sInstance->childSetValue("ao_nc_text", LLTrans::getString("CurrentlySetTo") + LLTrans::getString(":") + " " +item->getName()); } LLUUID LLFloaterAO::GetAnimID(const LLUUID& id) diff --git a/indra/newview/gpu_table.txt b/indra/newview/gpu_table.txt index afb812699..ce8e013f0 100644 --- a/indra/newview/gpu_table.txt +++ b/indra/newview/gpu_table.txt @@ -1,96 +1,100 @@ -// +// // Categorizes graphics chips into various classes by name // // The table contains chip names regular expressions to match // against driver strings, a class number, and whether we claim // to support them or not. // +// Format: +// Fields are separated by one or more tab (not space) characters +// +// // Class Numbers: -// 0 - Defaults to low graphics settings. No shaders on by default -// 1 - Defaults to mid graphics settings. Basic shaders on by default -// 2 - Defaults to high graphics settings. Atmospherics on by default. +// 0 - Defaults to low graphics settings. No shaders on by default +// 1 - Defaults to mid graphics settings. Basic shaders on by default +// 2 - Defaults to high graphics settings. Atmospherics on by default. // 3 - Same as class 2 for now. // // Supported Number: // 0 - We claim to not support this card. // 1 - We claim to support this card. // -// Format: -// -// -3Dfx .*3Dfx.* 0 0 -3Dlabs .*3Dlabs.* 0 0 -ATI 3D-Analyze .*ATI.*3D-Analyze.* 0 0 -ATI All-in-Wonder 7500 .*ATI.*All-in-Wonder 75.* 0 1 -ATI All-in-Wonder 8500 .*ATI.*All-in-Wonder 85.* 0 1 -ATI All-in-Wonder 9200 .*ATI.*All-in-Wonder 92.* 0 1 -ATI All-in-Wonder 9xxx .*ATI.*All-in-Wonder 9.* 1 1 -ATI All-in-Wonder HD .*ATI.*All-in-Wonder HD.* 1 1 -ATI All-in-Wonder X600 .*ATI.*All-in-Wonder X6.* 1 1 -ATI All-in-Wonder X800 .*ATI.*All-in-Wonder X8.* 2 1 -ATI All-in-Wonder X1800 .*ATI.*All-in-Wonder X18.* 3 1 -ATI All-in-Wonder X1900 .*ATI.*All-in-Wonder X19.* 3 1 -ATI All-in-Wonder PCI-E .*ATI.*All-in-Wonder.*PCI-E.* 1 1 -ATI All-in-Wonder Radeon .*ATI.*All-in-Wonder Radeon.* 0 1 +3Dfx .*3Dfx.* 0 0 +3Dlabs .*3Dlabs.* 0 0 +ATI 3D-Analyze .*ATI.*3D-Analyze.* 0 0 +ATI All-in-Wonder 7500 .*ATI.*All-in-Wonder 75.* 0 1 +ATI All-in-Wonder 8500 .*ATI.*All-in-Wonder 85.* 0 1 +ATI All-in-Wonder 9200 .*ATI.*All-in-Wonder 92.* 0 1 +ATI All-in-Wonder 9xxx .*ATI.*All-in-Wonder 9.* 1 1 +ATI All-in-Wonder HD .*ATI.*All-in-Wonder HD.* 1 1 +ATI All-in-Wonder X600 .*ATI.*All-in-Wonder X6.* 1 1 +ATI All-in-Wonder X800 .*ATI.*All-in-Wonder X8.* 2 1 +ATI All-in-Wonder X1800 .*ATI.*All-in-Wonder X18.* 3 1 +ATI All-in-Wonder X1900 .*ATI.*All-in-Wonder X19.* 3 1 +ATI All-in-Wonder PCI-E .*ATI.*All-in-Wonder.*PCI-E.* 1 1 +ATI All-in-Wonder Radeon .*ATI.*All-in-Wonder Radeon.* 0 1 ATI ASUS ARES .*ATI.*ASUS.*ARES.* 3 1 -ATI ASUS A9xxx .*ATI.*ASUS.*A9.* 1 1 -ATI ASUS AH24xx .*ATI.*ASUS.*AH24.* 1 1 -ATI ASUS AH26xx .*ATI.*ASUS.*AH26.* 3 1 -ATI ASUS AH34xx .*ATI.*ASUS.*AH34.* 1 1 -ATI ASUS AH36xx .*ATI.*ASUS.*AH36.* 3 1 -ATI ASUS AH46xx .*ATI.*ASUS.*AH46.* 3 1 -ATI ASUS AX3xx .*ATI.*ASUS.*AX3.* 1 1 -ATI ASUS AX5xx .*ATI.*ASUS.*AX5.* 1 1 -ATI ASUS AX8xx .*ATI.*ASUS.*AX8.* 2 1 -ATI ASUS EAH24xx .*ATI.*ASUS.*EAH24.* 2 1 -ATI ASUS EAH26xx .*ATI.*ASUS.*EAH26.* 3 1 +ATI ASUS A9xxx .*ATI.*ASUS.*A9.* 1 1 +ATI ASUS AH24xx .*ATI.*ASUS.*AH24.* 1 1 +ATI ASUS AH26xx .*ATI.*ASUS.*AH26.* 3 1 +ATI ASUS AH34xx .*ATI.*ASUS.*AH34.* 1 1 +ATI ASUS AH36xx .*ATI.*ASUS.*AH36.* 3 1 +ATI ASUS AH46xx .*ATI.*ASUS.*AH46.* 3 1 +ATI ASUS AX3xx .*ATI.*ASUS.*AX3.* 1 1 +ATI ASUS AX5xx .*ATI.*ASUS.*AX5.* 1 1 +ATI ASUS AX8xx .*ATI.*ASUS.*AX8.* 2 1 +ATI ASUS EAH24xx .*ATI.*ASUS.*EAH24.* 2 1 +ATI ASUS EAH26xx .*ATI.*ASUS.*EAH26.* 3 1 ATI ASUS EAH29xx .*ATI.*ASUS.*EAH29.* 3 1 -ATI ASUS EAH34xx .*ATI.*ASUS.*EAH34.* 1 1 -ATI ASUS EAH36xx .*ATI.*ASUS.*EAH36.* 3 1 -ATI ASUS EAH38xx .*ATI.*ASUS.*EAH38.* 3 1 -ATI ASUS EAH43xx .*ATI.*ASUS.*EAH43.* 1 1 -ATI ASUS EAH45xx .*ATI.*ASUS.*EAH45.* 1 1 -ATI ASUS EAH48xx .*ATI.*ASUS.*EAH48.* 3 1 +ATI ASUS EAH34xx .*ATI.*ASUS.*EAH34.* 1 1 +ATI ASUS EAH36xx .*ATI.*ASUS.*EAH36.* 3 1 +ATI ASUS EAH38xx .*ATI.*ASUS.*EAH38.* 3 1 +ATI ASUS EAH43xx .*ATI.*ASUS.*EAH43.* 1 1 +ATI ASUS EAH45xx .*ATI.*ASUS.*EAH45.* 1 1 +ATI ASUS EAH48xx .*ATI.*ASUS.*EAH48.* 3 1 ATI ASUS EAH57xx .*ATI.*ASUS.*EAH57.* 3 1 ATI ASUS EAH58xx .*ATI.*ASUS.*EAH58.* 3 1 ATI ASUS EAH6xxx .*ATI.*ASUS.*EAH6.* 3 1 -ATI ASUS Radeon X1xxx .*ATI.*ASUS.*X1.* 3 1 +ATI ASUS Radeon X1xxx .*ATI.*ASUS.*X1.* 3 1 ATI Radeon X7xx .*ATI.*ASUS.*X7.* 1 1 -ATI Radeon X19xx .*ATI.*X19.* 3 1 -ATI Radeon X18xx .*ATI.*X18.* 3 1 -ATI Radeon X17xx .*ATI.*X17.* 2 1 -ATI Radeon X16xx .*ATI.*X16.* 2 1 -ATI Radeon X15xx .*ATI.*X15.* 2 1 -ATI Radeon X13xx .*ATI.*X13.* 1 1 -ATI Radeon X1xxx .*ATI.*X1.* 1 1 -ATI Radeon X2xxx .*ATI.*X2.* 1 1 -ATI Radeon X500 .*ATI.*X5.* 1 1 -ATI Display Adapter .*ATI.*display adapter.* 0 1 -ATI FireGL 5200 .*ATI.*FireGL V52.* 0 1 -ATI FireGL 5xxx .*ATI.*FireGL V5.* 1 1 +ATI Radeon X19xx .*ATI.*X19.* 3 1 +ATI Radeon X18xx .*ATI.*X18.* 3 1 +ATI Radeon X17xx .*ATI.*X17.* 2 1 +ATI Radeon X16xx .*ATI.*X16.* 2 1 +ATI Radeon X15xx .*ATI.*X15.* 2 1 +ATI Radeon X13xx .*ATI.*X13.* 1 1 +ATI Radeon X1xxx .*ATI.*X1.* 1 1 +ATI Radeon X2xxx .*ATI.*X2.* 1 1 +ATI Radeon X500 .*ATI.*X5.* 1 1 +ATI Display Adapter .*ATI.*display adapter.* 0 1 +ATI FireGL 5200 .*ATI.*FireGL V52.* 0 1 +ATI FireGL 5xxx .*ATI.*FireGL V5.* 1 1 ATI FireGL .*ATI.*Fire.*GL.* 0 1 ATI FirePro M3900 .*ATI.*FirePro.*M39.* 2 1 ATI FirePro M5800 .*ATI.*FirePro.*M58.* 3 1 ATI FirePro M7740 .*ATI.*FirePro.*M77.* 3 1 ATI FirePro M7820 .*ATI.*FirePro.*M78.* 3 1 ATI FireMV .*ATI.*FireMV.* 0 1 -ATI Generic .*ATI.*Generic.* 0 0 -ATI Hercules 9800 .*ATI.*Hercules.*9800.* 1 1 -ATI IGP 340M .*ATI.*IGP.*340M.* 0 0 -ATI M52 .*ATI.*M52.* 1 1 -ATI M54 .*ATI.*M54.* 1 1 -ATI M56 .*ATI.*M56.* 1 1 -ATI M71 .*ATI.*M71.* 1 1 -ATI M72 .*ATI.*M72.* 1 1 +ATI Geforce 9500 GT .*ATI.*Geforce 9500 *GT.* 2 1 +ATI Geforce 9600 GT .*ATI.*Geforce 9600 *GT.* 2 1 +ATI Geforce 9800 GT .*ATI.*Geforce 9800 *GT.* 2 1 +ATI Generic .*ATI.*Generic.* 0 0 +ATI Hercules 9800 .*ATI.*Hercules.*9800.* 1 1 +ATI IGP 340M .*ATI.*IGP.*340M.* 0 0 +ATI M52 .*ATI.*M52.* 1 1 +ATI M54 .*ATI.*M54.* 1 1 +ATI M56 .*ATI.*M56.* 1 1 +ATI M71 .*ATI.*M71.* 1 1 +ATI M72 .*ATI.*M72.* 1 1 ATI M76 .*ATI.*M76.* 3 1 ATI Radeon HD 64xx .*ATI.*AMD Radeon.* HD [67]4..[MG] 3 1 ATI Radeon HD 65xx .*ATI.*AMD Radeon.* HD [67]5..[MG] 3 1 ATI Radeon HD 66xx .*ATI.*AMD Radeon.* HD [67]6..[MG] 3 1 ATI Mobility Radeon 4100 .*ATI.*Mobility.*41.. 1 1 -ATI Mobility Radeon 7xxx .*ATI.*Mobility.*Radeon 7.* 0 1 -ATI Mobility Radeon 8xxx .*ATI.*Mobility.*Radeon 8.* 0 1 -ATI Mobility Radeon 9800 .*ATI.*Mobility.*98.* 1 1 +ATI Mobility Radeon 7xxx .*ATI.*Mobility.*Radeon 7.* 0 1 +ATI Mobility Radeon 8xxx .*ATI.*Mobility.*Radeon 8.* 0 1 +ATI Mobility Radeon 9800 .*ATI.*Mobility.*98.* 1 1 ATI Mobility Radeon 9700 .*ATI.*Mobility.*97.* 1 1 ATI Mobility Radeon 9600 .*ATI.*Mobility.*96.* 0 1 ATI Mobility Radeon HD 530v .*ATI.*Mobility.*HD *530v.* 1 1 @@ -99,8 +103,8 @@ ATI Mobility Radeon HD 545v .*ATI.*Mobility.*HD *545v.* 2 1 ATI Mobility Radeon HD 550v .*ATI.*Mobility.*HD *550v.* 2 1 ATI Mobility Radeon HD 560v .*ATI.*Mobility.*HD *560v.* 2 1 ATI Mobility Radeon HD 565v .*ATI.*Mobility.*HD *565v.* 2 1 -ATI Mobility Radeon HD 2300 .*ATI.*Mobility.*HD *23.* 1 1 -ATI Mobility Radeon HD 2400 .*ATI.*Mobility.*HD *24.* 1 1 +ATI Mobility Radeon HD 2300 .*ATI.*Mobility.*HD *23.* 2 1 +ATI Mobility Radeon HD 2400 .*ATI.*Mobility.*HD *24.* 2 1 ATI Mobility Radeon HD 2600 .*ATI.*Mobility.*HD *26.* 3 1 ATI Mobility Radeon HD 2700 .*ATI.*Mobility.*HD *27.* 3 1 ATI Mobility Radeon HD 3100 .*ATI.*Mobility.*HD *31.* 0 1 @@ -119,7 +123,7 @@ ATI Mobility Radeon HD 5400 .*ATI.*Mobility.*HD *54.* 3 1 ATI Mobility Radeon HD 5500 .*ATI.*Mobility.*HD *55.* 3 1 ATI Mobility Radeon HD 5600 .*ATI.*Mobility.*HD *56.* 3 1 ATI Mobility Radeon HD 5700 .*ATI.*Mobility.*HD *57.* 3 1 -ATI Mobility Radeon HD 5800 .*ATI.*Mobility *HD *58.* 3 1 +ATI Mobility Radeon HD 5800 .*ATI.*Mobility *HD *58.* 3 1 ATI Mobility Radeon HD 6200 .*ATI.*Mobility.*HD *62.* 3 1 ATI Mobility Radeon HD 6300 .*ATI.*Mobility.*HD *63.* 3 1 ATI Mobility Radeon HD 6400M .*ATI.*Mobility.*HD *64.* 3 1 @@ -134,30 +138,30 @@ ATI Mobility Radeon HD 7600M .*ATI.*Mobility.*HD *76.* 3 1 ATI Mobility Radeon HD 7700M .*ATI.*Mobility.*HD *77.* 3 1 ATI Mobility Radeon HD 7800M .*ATI.*Mobility.*HD *78.* 3 1 ATI Mobility Radeon HD 7900M .*ATI.*Mobility.*HD *79.* 3 1 -ATI Mobility Radeon X1xxx .*ATI.*Mobility.*X1.* 0 1 -ATI Mobility Radeon X2xxx .*ATI.*Mobility.*X2.* 0 1 -ATI Mobility Radeon X3xx .*ATI.*Mobility.*X3.* 1 1 -ATI Mobility Radeon X6xx .*ATI.*Mobility.*X6.* 1 1 -ATI Mobility Radeon X7xx .*ATI.*Mobility.*X7.* 1 1 -ATI Mobility Radeon Xxxx .*ATI.*Mobility.*X.* 0 1 -ATI Mobility Radeon .*ATI.*Mobility.* 0 1 -ATI Radeon HD 2300 .*ATI.*Radeon HD *23.. 0 1 -ATI Radeon HD 2400 .*ATI.*Radeon HD *24.. 1 1 +ATI Mobility Radeon X1xxx .*ATI.*Mobility.*X1.* 0 1 +ATI Mobility Radeon X2xxx .*ATI.*Mobility.*X2.* 0 1 +ATI Mobility Radeon X3xx .*ATI.*Mobility.*X3.* 1 1 +ATI Mobility Radeon X6xx .*ATI.*Mobility.*X6.* 1 1 +ATI Mobility Radeon X7xx .*ATI.*Mobility.*X7.* 1 1 +ATI Mobility Radeon Xxxx .*ATI.*Mobility.*X.* 0 1 +ATI Mobility Radeon .*ATI.*Mobility.* 0 1 +ATI Radeon HD 2300 .*ATI.*Radeon HD *23.. 2 1 +ATI Radeon HD 2400 .*ATI.*Radeon HD *24.. 2 1 ATI Radeon HD 2600 .*ATI.*Radeon HD *26.. 2 1 ATI Radeon HD 2900 .*ATI.*Radeon HD *29.. 3 1 ATI Radeon HD 3000 .*ATI.*Radeon HD *30.. 0 1 ATI Radeon HD 3100 .*ATI.*Radeon HD *31.. 1 1 ATI Radeon HD 3200 .*ATI.*Radeon HD *32.. 1 1 -ATI Radeon HD 3300 .*ATI.*Radeon HD *33.. 1 1 -ATI Radeon HD 3400 .*ATI.*Radeon HD *34.. 1 1 -ATI Radeon HD 3500 .*ATI.*Radeon HD *35.. 1 1 +ATI Radeon HD 3300 .*ATI.*Radeon HD *33.. 2 1 +ATI Radeon HD 3400 .*ATI.*Radeon HD *34.. 2 1 +ATI Radeon HD 3500 .*ATI.*Radeon HD *35.. 2 1 ATI Radeon HD 3600 .*ATI.*Radeon HD *36.. 3 1 ATI Radeon HD 3700 .*ATI.*Radeon HD *37.. 3 1 ATI Radeon HD 3800 .*ATI.*Radeon HD *38.. 3 1 ATI Radeon HD 4100 .*ATI.*Radeon HD *41.. 1 1 ATI Radeon HD 4200 .*ATI.*Radeon HD *42.. 1 1 -ATI Radeon HD 4300 .*ATI.*Radeon HD *43.. 1 1 -ATI Radeon HD 4400 .*ATI.*Radeon HD *44.. 1 1 +ATI Radeon HD 4300 .*ATI.*Radeon HD *43.. 2 1 +ATI Radeon HD 4400 .*ATI.*Radeon HD *44.. 2 1 ATI Radeon HD 4500 .*ATI.*Radeon HD *45.. 3 1 ATI Radeon HD 4600 .*ATI.*Radeon HD *46.. 3 1 ATI Radeon HD 4700 .*ATI.*Radeon HD *47.. 3 1 @@ -169,15 +173,16 @@ ATI Radeon HD 5700 .*ATI.*Radeon HD *57.. 3 1 ATI Radeon HD 5800 .*ATI.*Radeon HD *58.. 3 1 ATI Radeon HD 5900 .*ATI.*Radeon HD *59.. 3 1 ATI Radeon HD 6200 .*ATI.*Radeon HD *62.. 3 1 -ATI Radeon HD 6300M .*ATI.*Radeon.*HD.*6300M.* 3 1 +ATI Radeon HD 6300M .*ATI.*Radeon.*HD.*6300M.* 3 1 ATI Radeon HD 6300 .*ATI.*Radeon HD *63.. 3 1 ATI Radeon HD 6400 .*ATI.*Radeon HD *64.. 3 1 -ATI Radeon HD 6500M .*ATI.*Radeon.*HD.*6500M.* 3 1 +ATI Radeon HD 6500M .*ATI.*Radeon.*HD.*6500M.* 3 1 ATI Radeon HD 6500 .*ATI.*Radeon HD *65.. 3 1 ATI Radeon HD 6600 .*ATI.*Radeon HD *66.. 3 1 ATI Radeon HD 6700 .*ATI.*Radeon HD *67.. 3 1 ATI Radeon HD 6800 .*ATI.*Radeon HD *68.. 3 1 ATI Radeon HD 6900 .*ATI.*Radeon HD *69.. 3 1 +ATI Radeon HD 7300 .*ATI.*Radeon HD *73.. 3 1 ATI Radeon HD 7400 .*ATI.*Radeon HD *74.. 3 1 ATI Radeon HD 7500 .*ATI.*Radeon HD *75.. 3 1 ATI Radeon HD 7600 .*ATI.*Radeon HD *76.. 3 1 @@ -198,22 +203,22 @@ ATI Radeon 9500 .*ATI.*Radeon 95.. 0 1 ATI Radeon 9600 .*ATI.*Radeon 96.. 0 1 ATI Radeon 9700 .*ATI.*Radeon 97.. 1 1 ATI Radeon 9800 .*ATI.*Radeon 98.. 1 1 -ATI Radeon RV250 .*ATI.*RV250.* 0 1 -ATI Radeon RV600 .*ATI.*RV6.* 1 1 -ATI Radeon RX700 .*ATI.*RX70.* 1 1 -ATI Radeon RX800 .*ATI.*Radeon *RX80.* 2 1 +ATI Radeon RV250 .*ATI.*RV250.* 0 1 +ATI Radeon RV600 .*ATI.*RV6.* 1 1 +ATI Radeon RX700 .*ATI.*RX70.* 1 1 +ATI Radeon RX800 .*ATI.*Radeon *RX80.* 2 1 ATI RS880M .*ATI.*RS880M 1 1 -ATI Radeon RX9550 .*ATI.*RX9550.* 1 1 -ATI Radeon VE .*ATI.*Radeon.*VE.* 0 0 -ATI Radeon X1000 .*ATI.*Radeon *X10.* 0 1 -ATI Radeon X1200 .*ATI.*Radeon *X12.* 0 1 -ATI Radeon X1300 .*ATI.*Radeon *X13.* 1 1 -ATI Radeon X1400 .*ATI.*Radeon ?X14.* 1 1 -ATI Radeon X1500 .*ATI.*Radeon ?X15.* 1 1 -ATI Radeon X1600 .*ATI.*Radeon *X16.* 1 1 -ATI Radeon X1700 .*ATI.*Radeon ?X17.* 1 1 -ATI Radeon X1800 .*ATI.*Radeon ?X18.* 3 1 -ATI Radeon X1900 .*ATI.*Radeon ?X19.* 3 1 +ATI Radeon RX9550 .*ATI.*RX9550.* 1 1 +ATI Radeon VE .*ATI.*Radeon.*VE.* 0 0 +ATI Radeon X1000 .*ATI.*Radeon *X10.* 0 1 +ATI Radeon X1200 .*ATI.*Radeon *X12.* 0 1 +ATI Radeon X1300 .*ATI.*Radeon *X13.* 1 1 +ATI Radeon X1400 .*ATI.*Radeon ?X14.* 1 1 +ATI Radeon X1500 .*ATI.*Radeon ?X15.* 1 1 +ATI Radeon X1600 .*ATI.*Radeon *X16.* 1 1 +ATI Radeon X1700 .*ATI.*Radeon ?X17.* 1 1 +ATI Radeon X1800 .*ATI.*Radeon ?X18.* 3 1 +ATI Radeon X1900 .*ATI.*Radeon ?X19.* 3 1 ATI Radeon X300 .*ATI.*Radeon *X3.* 0 1 ATI Radeon X400 .*ATI.*Radeon ?X4.* 0 1 ATI Radeon X500 .*ATI.*Radeon ?X5.* 0 1 @@ -297,8 +302,11 @@ Intel Brookdale .*Intel.*Brookdale.* 0 0 Intel Cantiga .*Intel.*Cantiga.* 0 1 Intel Eaglelake .*Intel.*Eaglelake.* 0 1 Intel Graphics Media HD .*Intel.*Graphics Media.*HD.* 0 1 +Intel HD Graphics 2000 .*Intel.*HD Graphics 2000.* 1 1 +Intel HD Graphics 3000 .*Intel.*HD Graphics 3000.* 2 1 +Intel HD Graphics 4000 .*Intel.*HD Graphics 4000.* 2 1 Intel HD Graphics .*Intel.*HD Graphics.* 2 1 -Intel Mobile 4 Series .*Intel.*Mobile *4 Series.* 0 1 +Intel Mobile 4 Series .*Intel.*Mobile.* 4 Series.* 0 1 Intel Media Graphics HD .*Intel.*Media Graphics HD.* 0 1 Intel Montara .*Intel.*Montara.* 0 0 Intel Pineview .*Intel.*Pineview.* 0 1 @@ -314,6 +322,8 @@ NVIDIA 310 .*NVIDIA .*GeForce 310.* 3 1 NVIDIA 315M .*NVIDIA .*GeForce 315M.* 2 1 NVIDIA 315 .*NVIDIA .*GeForce 315.* 3 1 NVIDIA 320M .*NVIDIA .*GeForce 320M.* 2 1 +NVIDIA 605M .*NVIDIA .*GeForce 605M.* 2 1 +NVIDIA 610M .*NVIDIA .*GeForce 610M.* 2 1 NVIDIA G100M .*NVIDIA .*100M.* 0 1 NVIDIA G100 .*NVIDIA .*100.* 0 1 NVIDIA G102M .*NVIDIA .*102M.* 0 1 @@ -359,6 +369,10 @@ NVIDIA GT 530M .*NVIDIA .*GT *530(M)?.* 3 1 NVIDIA GT 540M .*NVIDIA .*GT *54.(M)?.* 3 1 NVIDIA GT 550M .*NVIDIA .*GT *550(M)?.* 3 1 NVIDIA GT 555M .*NVIDIA .*GT *555(M)?.* 3 1 +NVIDIA GT 620M .*NVIDIA .*GT *620(M)?.* 3 1 +NVIDIA GT 630M .*NVIDIA .*GT *630(M)?.* 3 1 +NVIDIA GT 635M .*NVIDIA .*GT *635(M)?.* 3 1 +NVIDIA GT 640M .*NVIDIA .*GT *640(M)?.* 3 1 NVIDIA GTS 160M .*NVIDIA .*GT(S)? *160(M)?.* 2 1 NVIDIA GTS 240 .*NVIDIA .*GTS *24.* 3 1 NVIDIA GTS 250 .*NVIDIA .*GTS *25.* 3 1 @@ -388,12 +402,20 @@ NVIDIA GTX 570 .*NVIDIA .*GTX *57.* 3 1 NVIDIA GTX 580M .*NVIDIA .*GTX *580M.* 3 1 NVIDIA GTX 580 .*NVIDIA .*GTX *58.* 3 1 NVIDIA GTX 590 .*NVIDIA .*GTX *59.* 3 1 +NVIDIA GTX 650 .*NVIDIA .*GTX *65.* 3 1 +NVIDIA GTX 660 .*NVIDIA .*GTX *66.* 3 1 +NVIDIA GTX 670M .*NVIDIA .*GTX *670M.* 3 1 +NVIDIA GTX 675M .*NVIDIA .*GTX *675M.* 3 1 +NVIDIA GTX 670 .*NVIDIA .*GTX *67.* 3 1 +NVIDIA GTX 680M .*NVIDIA .*GTX *680M.* 3 1 +NVIDIA GTX 680 .*NVIDIA .*GTX *68.* 3 1 +NVIDIA GTX 690 .*NVIDIA .*GTX *69.* 3 1 NVIDIA C51 .*NVIDIA .*C51.* 0 1 NVIDIA G72 .*NVIDIA .*G72.* 1 1 -NVIDIA G73 .*NVIDIA.*G73.* 1 1 +NVIDIA G73 .*NVIDIA .*G73.* 1 1 NVIDIA G84 .*NVIDIA .*G84.* 2 1 -NVIDIA G86 .*NVIDIA.*G86.* 3 1 -NVIDIA G92 .*NVIDIA.*G92.* 3 1 +NVIDIA G86 .*NVIDIA .*G86.* 3 1 +NVIDIA G92 .*NVIDIA .*G92.* 3 1 NVIDIA GeForce .*GeForce 256.* 0 0 NVIDIA GeForce 2 .*GeForce ?2 ?.* 0 1 NVIDIA GeForce 3 .*GeForce ?3 ?.* 0 1 @@ -404,80 +426,80 @@ NVIDIA GeForce 4 MX .*NVIDIA .*GeForce ?4 MX.* 0 1 NVIDIA GeForce 4 PCX .*NVIDIA .*GeForce ?4 PCX.* 0 1 NVIDIA GeForce 4 Ti .*NVIDIA .*GeForce ?4 Ti.* 0 1 NVIDIA GeForce 6100 .*NVIDIA .*GeForce 61.* 0 1 -NVIDIA GeForce 6200 .*NVIDIA.*GeForce 62.* 0 1 -NVIDIA GeForce 6500 .*NVIDIA.*GeForce 65.* 0 1 -NVIDIA GeForce 6600 .*NVIDIA.*GeForce 66.* 1 1 -NVIDIA GeForce 6700 .*NVIDIA.*GeForce 67.* 2 1 -NVIDIA GeForce 6800 .*NVIDIA.*GeForce 68.* 2 1 -NVIDIA GeForce 7000M .*NVIDIA.*GeForce 7000M.* 0 1 -NVIDIA GeForce 7100M .*NVIDIA.*GeForce 7100M.* 0 1 -NVIDIA GeForce 7000 .*NVIDIA.*GeForce 70.* 0 1 -NVIDIA GeForce 7100 .*NVIDIA.*GeForce 71.* 0 1 -NVIDIA GeForce 7200 .*NVIDIA.*GeForce 72.* 1 1 -NVIDIA GeForce 7300 .*NVIDIA.*GeForce 73.* 1 1 -NVIDIA GeForce 7500 .*NVIDIA.*GeForce 75.* 1 1 -NVIDIA GeForce 7600 .*NVIDIA.*GeForce 76.* 2 1 -NVIDIA GeForce 7800 .*NVIDIA.*GeForce.*78.* 2 1 -NVIDIA GeForce 7900 .*NVIDIA.*GeForce.*79.* 2 1 -NVIDIA GeForce 8100 .*NVIDIA.*GeForce 81.* 1 1 -NVIDIA GeForce 8200M .*NVIDIA.*GeForce 8200M.* 1 1 -NVIDIA GeForce 8200 .*NVIDIA.*GeForce 82.* 1 1 -NVIDIA GeForce 8300 .*NVIDIA.*GeForce 83.* 1 1 -NVIDIA GeForce 8400M .*NVIDIA.*GeForce 8400M.* 1 1 -NVIDIA GeForce 8400 .*NVIDIA.*GeForce 84.* 1 1 -NVIDIA GeForce 8500 .*GeForce 85.* 3 1 -NVIDIA GeForce 8600M .*NVIDIA.*GeForce.*8600M.* 1 1 -NVIDIA GeForce 8600 .*NVIDIA.*GeForce 86.* 3 1 -NVIDIA GeForce 8700M .*NVIDIA.*GeForce 8700M.* 3 1 -NVIDIA GeForce 8700 .*NVIDIA.*GeForce 87.* 3 1 -NVIDIA GeForce 8800 .*NVIDIA.*GeForce 88.* 3 1 -NVIDIA GeForce 8800M .*NVIDIA.*GeForce 8800M.* 3 1 -NVIDIA GeForce 9100M .*NVIDIA.*GeForce 9100M.* 0 1 -NVIDIA GeForce 9100 .*NVIDIA.*GeForce 91.* 0 1 -NVIDIA GeForce 9200M .*NVIDIA.*GeForce 9200M.* 1 1 -NVIDIA GeForce 9200 .*NVIDIA.*GeForce 92.* 1 1 -NVIDIA GeForce 9300M .*NVIDIA.*GeForce 9300M.* 1 1 -NVIDIA GeForce 9300 .*NVIDIA.*GeForce 93.* 1 1 -NVIDIA GeForce 9400M .*NVIDIA.*GeForce 9400M.* 1 1 -NVIDIA GeForce 9400 .*NVIDIA.*GeForce 94.* 1 1 -NVIDIA GeForce 9500 .*NVIDIA.*GeForce 95.* 2 1 -NVIDIA GeForce 9500M .*NVIDIA.*GeForce 9500M.* 2 1 -NVIDIA GeForce 9600 .*NVIDIA.*GeForce.*96.* 2 1 -NVIDIA GeForce 9600M .*NVIDIA.*GeForce 9600M.* 2 1 -NVIDIA GeForce 9700M .*NVIDIA.*GeForce 9700M.* 2 1 -NVIDIA GeForce 9800M .*NVIDIA.*GeForce 9800M.* 3 1 -NVIDIA GeForce 9800 .*NVIDIA.*GeForce.*98.* 3 1 -NVIDIA GeForce FX 5100 .*NVIDIA.*GeForce FX 51.* 0 1 -NVIDIA GeForce FX 5200 .*NVIDIA.*GeForce FX 52.* 0 1 -NVIDIA GeForce FX 5300 .*NVIDIA.*GeForce FX 53.* 0 1 -NVIDIA GeForce FX 5500 .*NVIDIA.*GeForce FX 55.* 0 1 -NVIDIA GeForce FX 5600 .*NVIDIA.*GeForce FX 56.* 0 1 -NVIDIA GeForce FX 5700 .*NVIDIA.*GeForce FX 57.* 1 1 -NVIDIA GeForce FX 5800 .*NVIDIA.*GeForce FX 58.* 1 1 -NVIDIA GeForce FX 5900 .*NVIDIA.*GeForce FX 59.* 1 1 -NVIDIA GeForce FX Go5100 .*NVIDIA.*GeForce FX Go51.* 0 1 -NVIDIA GeForce FX Go5200 .*NVIDIA.*GeForce FX Go52.* 0 1 -NVIDIA GeForce FX Go5300 .*NVIDIA.*GeForce FX Go53.* 0 1 -NVIDIA GeForce FX Go5500 .*NVIDIA.*GeForce FX Go55.* 0 1 -NVIDIA GeForce FX Go5600 .*NVIDIA.*GeForce FX Go56.* 0 1 -NVIDIA GeForce FX Go5700 .*NVIDIA.*GeForce FX Go57.* 1 1 -NVIDIA GeForce FX Go5800 .*NVIDIA.*GeForce FX Go58.* 1 1 +NVIDIA GeForce 6200 .*NVIDIA .*GeForce 62.* 0 1 +NVIDIA GeForce 6500 .*NVIDIA .*GeForce 65.* 0 1 +NVIDIA GeForce 6600 .*NVIDIA .*GeForce 66.* 1 1 +NVIDIA GeForce 6700 .*NVIDIA .*GeForce 67.* 2 1 +NVIDIA GeForce 6800 .*NVIDIA .*GeForce 68.* 2 1 +NVIDIA GeForce 7000M .*NVIDIA.*GeForce 7000M.* 0 1 +NVIDIA GeForce 7000 .*NVIDIA .*GeForce 70.* 0 1 +NVIDIA GeForce 7100M .*NVIDIA.*GeForce 7100M.* 0 1 +NVIDIA GeForce 7100 .*NVIDIA .*GeForce 71.* 0 1 +NVIDIA GeForce 7200 .*NVIDIA .*GeForce 72.* 1 1 +NVIDIA GeForce 7300 .*NVIDIA .*GeForce 73.* 1 1 +NVIDIA GeForce 7500 .*NVIDIA .*GeForce 75.* 1 1 +NVIDIA GeForce 7600 .*NVIDIA .*GeForce 76.* 2 1 +NVIDIA GeForce 7800 .*NVIDIA .*GeForce 78.* 2 1 +NVIDIA GeForce 7900 .*NVIDIA .*GeForce 79.* 2 1 +NVIDIA GeForce 8100 .*NVIDIA .*GeForce 81.* 1 1 +NVIDIA GeForce 8200M .*NVIDIA .*GeForce 8200M.* 1 1 +NVIDIA GeForce 8200 .*NVIDIA .*GeForce 82.* 1 1 +NVIDIA GeForce 8300 .*NVIDIA .*GeForce 83.* 2 1 +NVIDIA GeForce 8400M .*NVIDIA .*GeForce 8400M.* 2 1 +NVIDIA GeForce 8400 .*NVIDIA .*GeForce 84.* 2 1 +NVIDIA GeForce 8500 .*NVIDIA .*GeForce 85.* 3 1 +NVIDIA GeForce 8600M .*NVIDIA .*GeForce 8600M.* 2 1 +NVIDIA GeForce 8600 .*NVIDIA .*GeForce 86.* 3 1 +NVIDIA GeForce 8700M .*NVIDIA .*GeForce 8700M.* 3 1 +NVIDIA GeForce 8700 .*NVIDIA .*GeForce 87.* 3 1 +NVIDIA GeForce 8800M .*NVIDIA .*GeForce 8800M.* 3 1 +NVIDIA GeForce 8800 .*NVIDIA .*GeForce 88.* 3 1 +NVIDIA GeForce 9100M .*NVIDIA .*GeForce 9100M.* 0 1 +NVIDIA GeForce 9100 .*NVIDIA .*GeForce 91.* 0 1 +NVIDIA GeForce 9200M .*NVIDIA .*GeForce 9200M.* 1 1 +NVIDIA GeForce 9200 .*NVIDIA .*GeForce 92.* 1 1 +NVIDIA GeForce 9300M .*NVIDIA .*GeForce 9300M.* 2 1 +NVIDIA GeForce 9300 .*NVIDIA .*GeForce 93.* 2 1 +NVIDIA GeForce 9400M .*NVIDIA .*GeForce 9400M.* 2 1 +NVIDIA GeForce 9400 .*NVIDIA .*GeForce 94.* 2 1 +NVIDIA GeForce 9500M .*NVIDIA .*GeForce 9500M.* 2 1 +NVIDIA GeForce 9500 .*NVIDIA .*GeForce 95.* 2 1 +NVIDIA GeForce 9600M .*NVIDIA .*GeForce 9600M.* 3 1 +NVIDIA GeForce 9600 .*NVIDIA .*GeForce 96.* 2 1 +NVIDIA GeForce 9700M .*NVIDIA .*GeForce 9700M.* 2 1 +NVIDIA GeForce 9800M .*NVIDIA .*GeForce 9800M.* 3 1 +NVIDIA GeForce 9800 .*NVIDIA .*GeForce 98.* 3 1 +NVIDIA GeForce FX 5100 .*NVIDIA .*GeForce FX 51.* 0 1 +NVIDIA GeForce FX 5200 .*NVIDIA .*GeForce FX 52.* 0 1 +NVIDIA GeForce FX 5300 .*NVIDIA .*GeForce FX 53.* 0 1 +NVIDIA GeForce FX 5500 .*NVIDIA .*GeForce FX 55.* 0 1 +NVIDIA GeForce FX 5600 .*NVIDIA .*GeForce FX 56.* 0 1 +NVIDIA GeForce FX 5700 .*NVIDIA .*GeForce FX 57.* 1 1 +NVIDIA GeForce FX 5800 .*NVIDIA .*GeForce FX 58.* 1 1 +NVIDIA GeForce FX 5900 .*NVIDIA .*GeForce FX 59.* 1 1 +NVIDIA GeForce FX Go5100 .*NVIDIA .*GeForce FX Go51.* 0 1 +NVIDIA GeForce FX Go5200 .*NVIDIA .*GeForce FX Go52.* 0 1 +NVIDIA GeForce FX Go5300 .*NVIDIA .*GeForce FX Go53.* 0 1 +NVIDIA GeForce FX Go5500 .*NVIDIA .*GeForce FX Go55.* 0 1 +NVIDIA GeForce FX Go5600 .*NVIDIA .*GeForce FX Go56.* 0 1 +NVIDIA GeForce FX Go5700 .*NVIDIA .*GeForce FX Go57.* 1 1 +NVIDIA GeForce FX Go5800 .*NVIDIA .*GeForce FX Go58.* 1 1 NVIDIA GeForce FX Go5900 .*NVIDIA .*GeForce FX Go59.* 1 1 NVIDIA GeForce FX Go5xxx .*NVIDIA .*GeForce FX Go.* 0 1 -NVIDIA GeForce Go 6100 .*NVIDIA.*GeForce Go 61.* 0 1 -NVIDIA GeForce Go 6200 .*NVIDIA.*GeForce Go 62.* 0 1 -NVIDIA GeForce Go 6400 .*NVIDIA.*GeForce Go 64.* 1 1 -NVIDIA GeForce Go 6500 .*NVIDIA.*GeForce Go 65.* 1 1 -NVIDIA GeForce Go 6600 .*NVIDIA.*GeForce Go 66.* 1 1 -NVIDIA GeForce Go 6700 .*NVIDIA.*GeForce Go 67.* 1 1 -NVIDIA GeForce Go 6800 .*NVIDIA.*GeForce Go 68.* 1 1 +NVIDIA GeForce Go 6100 .*NVIDIA .*GeForce Go 61.* 0 1 +NVIDIA GeForce Go 6200 .*NVIDIA .*GeForce Go 62.* 0 1 +NVIDIA GeForce Go 6400 .*NVIDIA .*GeForce Go 64.* 1 1 +NVIDIA GeForce Go 6500 .*NVIDIA .*GeForce Go 65.* 1 1 +NVIDIA GeForce Go 6600 .*NVIDIA .*GeForce Go 66.* 1 1 +NVIDIA GeForce Go 6700 .*NVIDIA .*GeForce Go 67.* 1 1 +NVIDIA GeForce Go 6800 .*NVIDIA .*GeForce Go 68.* 1 1 NVIDIA GeForce Go 7200 .*NVIDIA .*GeForce Go 72.* 1 1 NVIDIA GeForce Go 7300 LE .*NVIDIA .*GeForce Go 73.*LE.* 0 1 NVIDIA GeForce Go 7300 .*NVIDIA .*GeForce Go 73.* 1 1 NVIDIA GeForce Go 7400 .*NVIDIA .*GeForce Go 74.* 1 1 NVIDIA GeForce Go 7600 .*NVIDIA .*GeForce Go 76.* 2 1 -NVIDIA GeForce Go 7700 .*NVIDIA.*GeForce Go 77.* 2 1 -NVIDIA GeForce Go 7800 .*NVIDIA.*GeForce Go 78.* 2 1 +NVIDIA GeForce Go 7700 .*NVIDIA .*GeForce Go 77.* 2 1 +NVIDIA GeForce Go 7800 .*NVIDIA .*GeForce Go 78.* 2 1 NVIDIA GeForce Go 7900 .*NVIDIA .*GeForce Go 79.* 2 1 NVIDIA D9M .*NVIDIA .*D9M.* 1 1 NVIDIA G94 .*NVIDIA .*G94.* 3 1 @@ -520,40 +542,43 @@ NVIDIA Quadro 6000 .*Quadro.*6000.* 3 1 NVIDIA Quadro 400 .*Quadro.*400.* 2 1 NVIDIA Quadro 600 .*Quadro.*600.* 2 1 NVIDIA Quadro4 .*Quadro4.* 0 1 -NVIDIA Quadro DCC .*Quadro DCC.* 0 1 +NVIDIA Quadro DCC .*Quadro DCC.* 0 1 NVIDIA Quadro CX .*Quadro.*CX.* 3 1 -NVIDIA Quadro FX 770 .*Quadro.*FX *770(M)?.* 2 1 -NVIDIA Quadro FX 880 .*Quadro.*FX *880(M)?.* 2 1 -NVIDIA Quadro FX 1400 .*Quadro.*FX.*1400(M)?.* 1 1 -NVIDIA Quadro FX 1500 .*Quadro.*FX.*1500(M)?.* 1 1 -NVIDIA Quadro FX 1600 .*Quadro.*FX *1600(M)?.* 2 1 -NVIDIA Quadro FX 1700 .*Quadro.*FX.*1700(M)?.* 2 1 -NVIDIA Quadro FX 1800 .*Quadro.*FX.*1800(M)?.* 2 1 -NVIDIA Quadro FX 3400 .*Quadro.*FX.*3400(M)?.* 1 1 -NVIDIA Quadro FX 3450 .*Quadro.*FX.*3450(M)?.* 1 1 -NVIDIA Quadro FX 3500 .*Quadro.*FX.*3500(M)?.* 1 1 -NVIDIA Quadro FX 3700 .*Quadro.*FX.*3700(M)?.* 2 1 -NVIDIA Quadro FX 3800 .*Quadro.*FX.*3800(M)?.* 2 1 -NVIDIA Quadro FX 370 .*Quadro.*FX.*370(M)?.* 2 1 -NVIDIA Quadro FX 380 .*Quadro.*FX.*380(M)?.* 2 1 -NVIDIA Quadro FX 4000 .*Quadro.*FX.*4000(M)?.* 1 1 -NVIDIA Quadro FX 4500 .*Quadro.*FX.*4500(M)?.* 1 1 -NVIDIA Quadro FX 4600 .*Quadro.*FX.*4600(M)?.* 2 1 -NVIDIA Quadro FX 4700 .*Quadro.*FX.*4700(M)?.* 2 1 -NVIDIA Quadro FX 4800 .*Quadro.*FX.*4800(M)?.* 2 1 -NVIDIA Quadro FX 470 .*Quadro.*FX.*470(M)?.* 3 1 -NVIDIA Quadro FX 5500 .*Quadro.*FX.*5500(M)?.* 1 1 -NVIDIA Quadro FX 5600 .*Quadro.*FX.*5600(M)?.* 2 1 -NVIDIA Quadro FX 5700 .*Quadro.*FX.*5700(M)?.* 2 1 -NVIDIA Quadro FX 5800 .*Quadro.*FX.*5800(M)?.* 2 1 -NVIDIA Quadro FX 540 .*Quadro.*FX.*540(M)?.* 3 1 -NVIDIA Quadro FX 550 .*Quadro.*FX.*550(M)?.* 3 1 -NVIDIA Quadro FX 560 .*Quadro.*FX.*560(M)?.* 3 1 -NVIDIA Quadro FX 570 .*Quadro.*FX.*570(M)?.* 3 1 -NVIDIA Quadro FX 580 .*Quadro.*FX.*580(M)?.* 3 1 -NVIDIA Quadro FX .*Quadro FX.* 1 1 -NVIDIA Quadro NVS 1xxM .*Quadro NVS *1.[05]M.* 0 1 -NVIDIA Quadro VX 200 .*Quadro VX.*200.* 2 1 +NVIDIA Quadro FX 770 .*Quadro.*FX *770(M)?.* 2 1 +NVIDIA Quadro FX 1400 .*Quadro.*FX.*1400(M)?.* 1 1 +NVIDIA Quadro FX 1500 .*Quadro.*FX *1500(M)?.* 1 1 +NVIDIA Quadro FX 1600 .*Quadro.*FX *1600(M)?.* 2 1 +NVIDIA Quadro FX 1700 .*Quadro.*FX.*1700(M)?.* 2 1 +NVIDIA Quadro FX 1800 .*Quadro.*FX.*1800(M)?.* 2 1 +NVIDIA Quadro FX 2500M .*Quadro.*FX *2500M.* 2 1 +NVIDIA Quadro FX 2700M .*Quadro.*FX *2700M.* 3 1 +NVIDIA Quadro FX 2800M .*Quadro.*FX *2800M.* 3 1 +NVIDIA Quadro FX 3400 .*Quadro.*FX.*3400(M)?.* 1 1 +NVIDIA Quadro FX 3450 .*Quadro.*FX.*3450(M)?.* 1 1 +NVIDIA Quadro FX 3500 .*Quadro.*FX *3500.* 2 1 +NVIDIA Quadro FX 3600 .*Quadro.*FX *3600.* 3 1 +NVIDIA Quadro FX 3700 .*Quadro.*FX *3700.* 3 1 +NVIDIA Quadro FX 3800 .*Quadro.*FX *3800.* 3 1 +NVIDIA Quadro FX 370 .*Quadro.*FX.*370(M)?.* 2 1 +NVIDIA Quadro FX 380 .*Quadro.*FX.*380(M)?.* 2 1 +NVIDIA Quadro FX 4000 .*Quadro.*FX.*4000(M)?.* 1 1 +NVIDIA Quadro FX 4500 .*Quadro.*FX *45.* 3 1 +NVIDIA Quadro FX 880 .*Quadro.*FX *880(M)?.* 3 1 +NVIDIA Quadro FX 4600 .*Quadro.*FX.*4600(M)?.* 2 1 +NVIDIA Quadro FX 4700 .*Quadro.*FX.*4700(M)?.* 2 1 +NVIDIA Quadro FX 4800 .*NVIDIA .*Quadro *FX *4800.* 3 1 +NVIDIA Quadro FX 470 .*Quadro.*FX.*470(M)?.* 3 1 +NVIDIA Quadro FX 5500 .*Quadro.*FX.*5500(M)?.* 1 1 +NVIDIA Quadro FX 5600 .*Quadro.*FX.*5600(M)?.* 2 1 +NVIDIA Quadro FX 5700 .*Quadro.*FX.*5700(M)?.* 2 1 +NVIDIA Quadro FX 5800 .*Quadro.*FX.*5800(M)?.* 2 1 +NVIDIA Quadro FX 540 .*Quadro.*FX.*540(M)?.* 3 1 +NVIDIA Quadro FX 550 .*Quadro.*FX.*550(M)?.* 3 1 +NVIDIA Quadro FX 560 .*Quadro.*FX.*560(M)?.* 3 1 +NVIDIA Quadro FX 570 .*Quadro.*FX.*570(M)?.* 3 1 +NVIDIA Quadro FX 580 .*Quadro.*FX.*580(M)?.* 3 1 +NVIDIA Quadro FX .*Quadro FX.* 1 1 +NVIDIA Quadro VX 200 .*Quadro VX.*200.* 2 1 NVIDIA Quadro NVS 1xxM .*Quadro NVS *1.[05]M.* 0 1 NVIDIA Quadro NVS 300M .*NVIDIA .*NVS *300M.* 2 1 NVIDIA Quadro NVS 320M .*NVIDIA .*NVS *320M.* 2 1 @@ -561,21 +586,22 @@ NVIDIA Quadro NVS 2100M .*NVIDIA .*NVS *2100M.* 2 1 NVIDIA Quadro NVS 3100M .*NVIDIA .*NVS *3100M.* 2 1 NVIDIA Quadro NVS 4200M .*NVIDIA .*NVS *4200M.* 2 1 NVIDIA Quadro NVS 5100M .*NVIDIA .*NVS *5100M.* 2 1 -NVIDIA Quadro 2000 .*Quadro.*2000.* 2 1 -NVIDIA Quadro 4000 .*Quadro.*4000.* 2 1 -NVIDIA Quadro 5000 .*Quadro.*5000.* 2 1 -NVIDIA Quadro 6000 .*Quadro.*6000.* 2 1 -NVIDIA Quadro 600 .*Quadro.*600.* 2 1 +NVIDIA Quadro NVS .*NVIDIA .*NVS 0 1 +NVIDIA Quadro 2000 .*Quadro.*2000.* 2 1 +NVIDIA Quadro 4000 .*Quadro.*4000.* 2 1 +NVIDIA Quadro 5000 .*Quadro.*5000.* 2 1 +NVIDIA Quadro 6000 .*Quadro.*6000.* 2 1 +NVIDIA Quadro 600 .*Quadro.*600.* 2 1 NVIDIA Quadro NVS .*(Quadro|NVIDIA) NVS.* 0 1 -NVIDIA RIVA TNT .*RIVA TNT.* 0 0 -NVIDIA PCI .*NVIDIA.*/PCI/SSE2 0 0 -S3 .*S3 Graphics.* 0 0 -SiS SiS.* 0 0 -Trident Trident.* 0 0 -Tungsten Graphics Tungsten.* 0 0 -XGI XGI.* 0 0 -VIA VIA.* 0 0 -Apple Generic Apple.*Generic.* 0 0 -Apple Software Renderer Apple.*Software Renderer.* 0 0 -Microsoft RemoteFX Graphics Device - WDDM Microsoft.*RemoteFX.* 0 0 +NVIDIA RIVA TNT .*RIVA TNT.* 0 0 +NVIDIA PCI .*NVIDIA.*/PCI/SSE2 0 0 +S3 .*S3 Graphics.* 0 0 +SiS SiS.* 0 0 +Trident Trident.* 0 0 +Tungsten Graphics Tungsten.* 0 0 +XGI XGI.* 0 0 +VIA VIA.* 0 0 +Apple Generic Apple.*Generic.* 0 0 +Apple Software Renderer Apple.*Software Renderer.* 0 0 +Microsoft RemoteFX Graphics Device - WDDM Microsoft.*RemoteFX.* 0 0 Humper Humper.* 0 1 diff --git a/indra/newview/llcompilequeue.cpp b/indra/newview/llcompilequeue.cpp index 97831b4b2..5cf8b7fdc 100644 --- a/indra/newview/llcompilequeue.cpp +++ b/indra/newview/llcompilequeue.cpp @@ -61,6 +61,7 @@ #include "llfloaterchat.h" #include "llviewerstats.h" #include "lluictrlfactory.h" +#include "lltrans.h" #include "llselectmgr.h" @@ -68,16 +69,6 @@ /// Local function declarations, constants, enums, and typedefs ///---------------------------------------------------------------------------- -// *TODO:Translate -const std::string COMPILE_QUEUE_TITLE("Recompilation Progress"); -const std::string COMPILE_START_STRING("recompile"); -const std::string RESET_QUEUE_TITLE("Reset Progress"); -const std::string RESET_START_STRING("reset"); -const std::string RUN_QUEUE_TITLE("Set Running Progress"); -const std::string RUN_START_STRING("set running"); -const std::string NOT_RUN_QUEUE_TITLE("Set Not Running Progress"); -const std::string NOT_RUN_START_STRING("set not running"); - struct LLScriptQueueData { LLUUID mQueueID; @@ -211,8 +202,11 @@ BOOL LLFloaterScriptQueue::start() n_objects = selectHandle->getRootObjectCount(); } - buffer = llformat("Starting %s of %d items.", mStartString.c_str(), n_objects); // *TODO: Translate - + LLStringUtil::format_map_t args; + args["[START]"] = mStartString; + args["[COUNT]"] = llformat ("%d", mObjectIDs.count()); + buffer = getString ("Starting", args); + LLScrollListCtrl* list = getChild("queue output"); list->addCommentText(buffer); @@ -250,8 +244,7 @@ BOOL LLFloaterScriptQueue::nextObject() LLScrollListCtrl* list = getChild("queue output"); mDone = TRUE; - std::string buffer = "Done."; // *TODO: Translate - list->addCommentText(buffer); + list->addCommentText(getString("Done")); childSetEnabled("close",TRUE); } return successful_start; @@ -346,7 +339,7 @@ LLFloaterCompileQueue* LLFloaterCompileQueue::create(BOOL mono) } LLFloaterCompileQueue::LLFloaterCompileQueue(const std::string& name, const LLRect& rect) -: LLFloaterScriptQueue(name, rect, COMPILE_QUEUE_TITLE, COMPILE_START_STRING) +: LLFloaterScriptQueue(name, rect, LLTrans::getString("CompileQueueTitle"), LLTrans::getString("CompileQueueStart")) { } LLFloaterCompileQueue::~LLFloaterCompileQueue() @@ -454,7 +447,7 @@ void LLFloaterCompileQueue::scriptArrived(LLVFS *vfs, const LLUUID& asset_id, else { // It's now in the file, now compile it. - buffer = std::string("Downloaded, now compiling: ") + data->mScriptName; // *TODO: Translate + buffer = LLTrans::getString("CompileQueueDownloadedCompiling") + (": ") + data->mScriptName; // Write script to local file for compilation. LLFILE *fp = LLFile::fopen(filename, "wb"); /*Flawfinder: ignore*/ @@ -493,19 +486,21 @@ void LLFloaterCompileQueue::scriptArrived(LLVFS *vfs, const LLUUID& asset_id, if( LL_ERR_ASSET_REQUEST_NOT_IN_DATABASE == status ) { - LLChat chat(std::string("Script not found on server.")); // *TODO: Translate + LLChat chat(LLTrans::getString("CompileQueueScriptNotFound")); LLFloaterChat::addChat(chat); - buffer = std::string("Problem downloading: ") + data->mScriptName; // *TODO: Translate + + buffer = LLTrans::getString("CompileQueueProblemDownloading") + LLTrans::getString(":") + " " + data->mScriptName; } else if (LL_ERR_INSUFFICIENT_PERMISSIONS == status) { - LLChat chat(std::string("Insufficient permissions to download a script.")); // *TODO: Translate + LLChat chat(LLTrans::getString("CompileQueueInsufficientPermDownload")); LLFloaterChat::addChat(chat); - buffer = std::string("Insufficient permissions for: ") + data->mScriptName; // *TODO: Translate + + buffer = LLTrans::getString("CompileQueueInsufficientPermFor") + LLTrans::getString(":") + " " + data->mScriptName; } else { - buffer = std::string("Unknown failure to download ") + data->mScriptName; // *TODO: Translate + buffer = LLTrans::getString("CompileQueueUnknownFailure") + (" ") + data->mScriptName; } llwarns << "Problem downloading script asset." << llendl; @@ -671,7 +666,7 @@ LLFloaterResetQueue* LLFloaterResetQueue::create() } LLFloaterResetQueue::LLFloaterResetQueue(const std::string& name, const LLRect& rect) -: LLFloaterScriptQueue(name, rect, RESET_QUEUE_TITLE, RESET_START_STRING) +: LLFloaterScriptQueue(name, rect, LLTrans::getString("ResetQueueTitle"), LLTrans::getString("ResetQueueStart")) { } LLFloaterResetQueue::~LLFloaterResetQueue() @@ -698,7 +693,7 @@ void LLFloaterResetQueue::handleInventory(LLViewerObject* viewer_obj, LLInventoryItem* item = (LLInventoryItem*)((LLInventoryObject*)(*it)); LLScrollListCtrl* list = getChild("queue output"); std::string buffer; - buffer = std::string("Resetting: ") + item->getName(); // *TODO: Translate + buffer = getString("Resetting") + LLTrans::getString(":") + " " + item->getName(); list->addCommentText(buffer); LLMessageSystem* msg = gMessageSystem; msg->newMessageFast(_PREHASH_ScriptReset); @@ -733,7 +728,7 @@ LLFloaterRunQueue* LLFloaterRunQueue::create() } LLFloaterRunQueue::LLFloaterRunQueue(const std::string& name, const LLRect& rect) -: LLFloaterScriptQueue(name, rect, RUN_QUEUE_TITLE, RUN_START_STRING) +: LLFloaterScriptQueue(name, rect, LLTrans::getString("RunQueueTitle"), LLTrans::getString("RunQueueStart")) { } LLFloaterRunQueue::~LLFloaterRunQueue() @@ -741,7 +736,7 @@ LLFloaterRunQueue::~LLFloaterRunQueue() } void LLFloaterRunQueue::handleInventory(LLViewerObject* viewer_obj, - LLInventoryObject::object_list_t* inv) + LLInventoryObject::object_list_t* inv) { // find all of the lsl, leaving off duplicates. We'll remove // all matching asset uuids on compilation success. @@ -760,7 +755,7 @@ void LLFloaterRunQueue::handleInventory(LLViewerObject* viewer_obj, LLInventoryItem* item = (LLInventoryItem*)((LLInventoryObject*)(*it)); LLScrollListCtrl* list = getChild("queue output"); std::string buffer; - buffer = std::string("Running: ") + item->getName(); // *TODO: Translate + buffer = getString("Running") + LLTrans::getString(":") + " " + item->getName(); list->addCommentText(buffer); LLMessageSystem* msg = gMessageSystem; @@ -797,7 +792,7 @@ LLFloaterNotRunQueue* LLFloaterNotRunQueue::create() } LLFloaterNotRunQueue::LLFloaterNotRunQueue(const std::string& name, const LLRect& rect) -: LLFloaterScriptQueue(name, rect, NOT_RUN_QUEUE_TITLE, NOT_RUN_START_STRING) +: LLFloaterScriptQueue(name, rect, LLTrans::getString("NotRunQueueTitle"), LLTrans::getString("NotRunQueueStart")) { } LLFloaterNotRunQueue::~LLFloaterNotRunQueue() @@ -824,7 +819,7 @@ void LLFloaterNotRunQueue::handleInventory(LLViewerObject* viewer_obj, LLInventoryItem* item = (LLInventoryItem*)((LLInventoryObject*)(*it)); LLScrollListCtrl* list = getChild("queue output"); std::string buffer; - buffer = std::string("Not running: ") +item->getName(); // *TODO: Translate + buffer = getString("NotRunning") + LLTrans::getString(":") + " " + item->getName(); list->addCommentText(buffer); LLMessageSystem* msg = gMessageSystem; diff --git a/indra/newview/llfloateractivespeakers.cpp b/indra/newview/llfloateractivespeakers.cpp index ea902fa9d..f0f856ef0 100644 --- a/indra/newview/llfloateractivespeakers.cpp +++ b/indra/newview/llfloateractivespeakers.cpp @@ -538,15 +538,18 @@ void LLPanelActiveSpeakers::refreshSpeakers() LLScrollListCell* name_cell = itemp->getColumn(1); if (name_cell) { - //FIXME: remove hard coding of font colors if (speakerp->mStatus == LLSpeaker::STATUS_NOT_IN_CHANNEL) { - // draw inactive speakers in gray - name_cell->setColor(LLColor4::grey4); + // draw inactive speakers in different color + static LLCachedControl sSpeakersInactive(gColors, "SpeakersInactive"); + + name_cell->setColor(sSpeakersInactive); } else { - name_cell->setColor(LLColor4::black); + static LLCachedControl sDefaultListText(gColors, "DefaultListText"); + + name_cell->setColor(sDefaultListText); } // if(!mShowTextChatters && !(speakerp->mStatus == LLSpeaker::STATUS_NOT_IN_CHANNEL) && speakerp->mID != gAgent.getID()) @@ -567,7 +570,11 @@ void LLPanelActiveSpeakers::refreshSpeakers() } } if(!found) - name_cell->setColor(LLColor4::red); + { + static LLCachedControl sSpeakersGhost(gColors, "SpeakersGhost"); + + name_cell->setColor(sSpeakersGhost); + } } // diff --git a/indra/newview/llfloateravatarlist.cpp b/indra/newview/llfloateravatarlist.cpp index ff2f4247b..6d25b887c 100644 --- a/indra/newview/llfloateravatarlist.cpp +++ b/indra/newview/llfloateravatarlist.cpp @@ -35,6 +35,7 @@ #include "llfloaterreporter.h" #include "llagent.h" #include "llagentcamera.h" +#include "llfloaterregioninfo.h" #include "llviewerregion.h" #include "lltracker.h" #include "llviewerstats.h" @@ -74,43 +75,55 @@ extern U32 gFrameCount; typedef enum e_radar_alert_type { - ALERT_TYPE_SIM = 0, - ALERT_TYPE_DRAW = 1, - ALERT_TYPE_SHOUTRANGE = 2, - ALERT_TYPE_CHATRANGE = 3 + ALERT_TYPE_SIM = 1, + ALERT_TYPE_DRAW = 2, + ALERT_TYPE_SHOUTRANGE = 4, + ALERT_TYPE_CHATRANGE = 8, } ERadarAlertType; void chat_avatar_status(std::string name, LLUUID key, ERadarAlertType type, bool entering) { - if (gSavedSettings.getBOOL("RadarChatAlerts")) + static LLCachedControl radar_chat_alerts(gSavedSettings, "RadarChatAlerts"); + static LLCachedControl radar_alert_sim(gSavedSettings, "RadarAlertSim"); + static LLCachedControl radar_alert_draw(gSavedSettings, "RadarAlertDraw"); + static LLCachedControl radar_alert_shout_range(gSavedSettings, "RadarAlertShoutRange"); + static LLCachedControl radar_alert_chat_range(gSavedSettings, "RadarAlertChatRange"); + static LLCachedControl radar_chat_keys(gSavedSettings, "RadarChatKeys"); + + if (radar_chat_alerts) { LLChat chat; + LLFloaterAvatarList* self = LLFloaterAvatarList::getInstance(); + std::string message = name + " " + self->getString(entering ? "has_entered" : "has_left") + " "; switch(type) { - case ALERT_TYPE_SIM: - if (gSavedSettings.getBOOL("RadarAlertSim")) - { - chat.mText = name+" has "+(entering ? "entered" : "left")+" the sim."; - } - break; - case ALERT_TYPE_DRAW: - if (gSavedSettings.getBOOL("RadarAlertDraw")) - { - chat.mText = name+" has "+(entering ? "entered" : "left")+" draw distance."; - } - break; - case ALERT_TYPE_SHOUTRANGE: - if (gSavedSettings.getBOOL("RadarAlertShoutRange")) - { - chat.mText = name+" has "+(entering ? "entered" : "left")+" shout range."; - } - break; - case ALERT_TYPE_CHATRANGE: - if (gSavedSettings.getBOOL("RadarAlertChatRange")) - { - chat.mText = name+" has "+(entering ? "entered" : "left")+" chat range."; - } - break; + case ALERT_TYPE_SIM: + if (radar_alert_sim) + { + chat.mText = message + self->getString("the_sim") + "."; + } + break; + + case ALERT_TYPE_DRAW: + if (radar_alert_draw) + { + chat.mText = message + self->getString("draw_distance") + "."; + } + break; + + case ALERT_TYPE_SHOUTRANGE: + if (radar_alert_shout_range) + { + chat.mText = message + self->getString("shout_range") + "."; + } + break; + + case ALERT_TYPE_CHATRANGE: + if (radar_alert_chat_range) + { + chat.mText = message + self->getString("chat_range") + "."; + } + break; } if (chat.mText != "") { @@ -307,10 +320,6 @@ BOOL LLFloaterAvatarList::postBuild() mTracking = FALSE; mUpdate = TRUE; - // Hide them until some other way is found - // Users may not expect to find a Ban feature on the Eject button - childSetVisible("estate_ban_btn", false); - // Set callbacks childSetAction("profile_btn", onClickProfile, this); childSetAction("im_btn", onClickIM, this); @@ -331,6 +340,7 @@ BOOL LLFloaterAvatarList::postBuild() childSetAction("ar_btn", onClickAR, this); childSetAction("teleport_btn", onClickTeleport, this); childSetAction("estate_eject_btn", onClickEjectFromEstate, this); + childSetAction("estate_ban_btn", onClickBanFromEstate, this); childSetAction("send_keys_btn", onClickSendKeys, this); @@ -471,7 +481,7 @@ void LLFloaterAvatarList::updateAvatarList() LLAvatarName avatar_name; if (LLAvatarNameCache::get(avatarp->getID(), &avatar_name)) { - static const LLCachedControl phoenix_name_system("PhoenixNameSystem", 0); + static LLCachedControl phoenix_name_system("PhoenixNameSystem", 0); switch (phoenix_name_system) { case 0 : name = avatar_name.getLegacyName(); break; @@ -662,7 +672,7 @@ void LLFloaterAvatarList::refreshAvatarList() LLUUID av_id; std::string av_name; - LLAvatarListEntry *entry = &iter->second; + LLAvatarListEntry* entry = &iter->second; // Skip if avatar hasn't been around if (entry->isDead()) @@ -738,9 +748,13 @@ void LLFloaterAvatarList::refreshAvatarList() estate_owner = parent_estate->getOwner(); } - static const LLCachedControl unselected_color(gColors, "ScrollUnselectedColor",LLColor4(LLColor4U(0, 0, 0, 204)) ); + static const LLCachedControl unselected_color(gColors, "ScrollUnselectedColor",LLColor4(0.f, 0.f, 0.f, 0.8f)); - LLColor4 name_color = unselected_color; + static LLCachedControl sDefaultListText(gColors, "DefaultListText"); + static LLCachedControl sRadarTextChatRange(gColors, "RadarTextChatRange"); + static LLCachedControl sRadarTextShoutRange(gColors, "RadarTextShoutRange"); + static LLCachedControl sRadarTextDrawDist(gColors, "RadarTextDrawDist"); + LLColor4 name_color = sDefaultListText; //Lindens are always more Linden than your friend, make that take precedence if(LLMuteList::getInstance()->isLinden(av_name)) @@ -772,7 +786,7 @@ void LLFloaterAvatarList::refreshAvatarList() element["columns"][LIST_AVATAR_NAME]["color"] = name_color.getValue(); char temp[32]; - LLColor4 color = LLColor4::black; + LLColor4 color = sDefaultListText; element["columns"][LIST_DISTANCE]["column"] = "distance"; element["columns"][LIST_DISTANCE]["type"] = "text"; if (UnknownAltitude) @@ -780,28 +794,28 @@ void LLFloaterAvatarList::refreshAvatarList() strcpy(temp, "?"); if (entry->isDrawn()) { - color = LLColor4::green2; + color = sRadarTextDrawDist; } } else { - if (distance < 100.0) + if (distance <= 96.0) { snprintf(temp, sizeof(temp), "%.1f", distance); if (distance > 20.0f) { - color = LLColor4::yellow1; + color = sRadarTextShoutRange; } else { - color = LLColor4::red; + color = sRadarTextChatRange; } } else { if (entry->isDrawn()) { - color = LLColor4::green2; + color = sRadarTextDrawDist; } snprintf(temp, sizeof(temp), "%d", (S32)distance); } @@ -893,9 +907,9 @@ void LLFloaterAvatarList::refreshAvatarList() //element["columns"][LIST_METADATA]["column"] = "metadata"; //element["columns"][LIST_METADATA]["type"] = "text"; - static const LLCachedControl avatar_name_color(gColors, "AvatarNameColor",LLColor4(LLColor4U(251, 175, 93, 255)) ); + static const LLCachedControl avatar_name_color(gColors, "AvatarNameColor",LLColor4(0.98f, 0.69f, 0.36f, 1.f)); LLColor4 client_color(avatar_name_color); - LLVOAvatar *avatarp = gObjectList.findAvatar(av_id); + LLVOAvatar* avatarp = gObjectList.findAvatar(av_id); if(avatarp) { std::string client = SHClientTagMgr::instance().getClientName(avatarp, false); @@ -971,9 +985,9 @@ void LLFloaterAvatarList::onClickIM(void* userdata) } } -void LLFloaterAvatarList::onClickTeleportOffer(void *userdata) +void LLFloaterAvatarList::onClickTeleportOffer(void* userdata) { - LLFloaterAvatarList *self = (LLFloaterAvatarList*)userdata; + LLFloaterAvatarList* self = (LLFloaterAvatarList*)userdata; LLDynamicArray ids = self->mAvatarList->getSelectedIDs(); if (ids.size() > 0) @@ -982,11 +996,11 @@ void LLFloaterAvatarList::onClickTeleportOffer(void *userdata) } } -void LLFloaterAvatarList::onClickTrack(void *userdata) +void LLFloaterAvatarList::onClickTrack(void* userdata) { - LLFloaterAvatarList *self = (LLFloaterAvatarList*)userdata; + LLFloaterAvatarList* self = (LLFloaterAvatarList*)userdata; - LLScrollListItem *item = self->mAvatarList->getFirstSelected(); + LLScrollListItem* item = self->mAvatarList->getFirstSelected(); if (!item) return; LLUUID agent_id = item->getUUID(); @@ -1054,15 +1068,15 @@ LLAvatarListEntry * LLFloaterAvatarList::getAvatarEntry(LLUUID avatar) } //static -void LLFloaterAvatarList::onClickMark(void *userdata) +void LLFloaterAvatarList::onClickMark(void* userdata) { - LLFloaterAvatarList *self = (LLFloaterAvatarList*)userdata; + LLFloaterAvatarList* self = (LLFloaterAvatarList*)userdata; LLDynamicArray ids = self->mAvatarList->getSelectedIDs(); for (LLDynamicArray::iterator itr = ids.begin(); itr != ids.end(); ++itr) { LLUUID avid = *itr; - LLAvatarListEntry *entry = self->getAvatarEntry(avid); + LLAvatarListEntry* entry = self->getAvatarEntry(avid); if (entry != NULL) { entry->toggleMark(); @@ -1070,11 +1084,68 @@ void LLFloaterAvatarList::onClickMark(void *userdata) } } -void LLFloaterAvatarList::onClickFocus(void *userdata) +BOOL LLFloaterAvatarList::handleKeyHere(KEY key, MASK mask) { - LLFloaterAvatarList *self = (LLFloaterAvatarList*)userdata; + LLFloaterAvatarList* self = getInstance(); + LLScrollListItem* item = self->mAvatarList->getFirstSelected(); + if(item) + { + LLUUID agent_id = item->getUUID(); + if (( KEY_RETURN == key ) && (MASK_NONE == mask)) + { + self->mFocusedAvatar = agent_id; + self->focusOnCurrent(); + return TRUE; + } + else if (( KEY_RETURN == key ) && (MASK_CONTROL == mask)) + { + LLAvatarListEntry* entry = self->getAvatarEntry(agent_id); + if (entry) + { +// llinfos << "Trying to teleport to " << entry->getName() << " at " << entry->getPosition() << llendl; + gAgent.teleportViaLocation(entry->getPosition()); + } + return TRUE; + } + } - LLScrollListItem *item = self->mAvatarList->getFirstSelected(); + if (( KEY_RETURN == key ) && (MASK_SHIFT == mask)) + { + LLDynamicArray ids = self->mAvatarList->getSelectedIDs(); + if (ids.size() > 0) + { + if (ids.size() == 1) + { + // Single avatar + LLUUID agent_id = ids[0]; + + // [Ansariel: Display name support] + LLAvatarName avatar_name; + if (LLAvatarNameCache::get(agent_id, &avatar_name)) + { + gIMMgr->setFloaterOpen(TRUE); + gIMMgr->addSession(LLCacheName::cleanFullName(avatar_name.getLegacyName()),IM_NOTHING_SPECIAL,agent_id); + } + // [Ansariel: Display name support] + } + else + { + // Group IM + LLUUID session_id; + session_id.generate(); + gIMMgr->setFloaterOpen(TRUE); + gIMMgr->addSession("Avatars Conference", IM_SESSION_CONFERENCE_START, ids[0], ids); + } + } + } + return LLPanel::handleKeyHere(key, mask); +} + +void LLFloaterAvatarList::onClickFocus(void* userdata) +{ + LLFloaterAvatarList* self = (LLFloaterAvatarList*)userdata; + + LLScrollListItem* item = self->mAvatarList->getFirstSelected(); if (item) { self->mFocusedAvatar = item->getUUID(); @@ -1088,7 +1159,7 @@ void LLFloaterAvatarList::removeFocusFromAll() for (iter = mAvatars.begin(); iter != mAvatars.end(); iter++) { - LLAvatarListEntry *entry = &iter->second; + LLAvatarListEntry* entry = &iter->second; entry->setFocus(FALSE); } } @@ -1096,7 +1167,7 @@ void LLFloaterAvatarList::removeFocusFromAll() void LLFloaterAvatarList::focusOnCurrent() { std::map::iterator iter; - LLAvatarListEntry *entry; + LLAvatarListEntry* entry; if (mAvatars.size() == 0) { @@ -1123,8 +1194,8 @@ void LLFloaterAvatarList::focusOnCurrent() void LLFloaterAvatarList::focusOnPrev(BOOL marked_only) { std::map::iterator iter; - LLAvatarListEntry *prev = NULL; - LLAvatarListEntry *entry; + LLAvatarListEntry* prev = NULL; + LLAvatarListEntry* entry; if (mAvatars.size() == 0) { @@ -1162,8 +1233,8 @@ void LLFloaterAvatarList::focusOnNext(BOOL marked_only) { std::map::iterator iter; BOOL found = FALSE; - LLAvatarListEntry *next = NULL; - LLAvatarListEntry *entry; + LLAvatarListEntry* next = NULL; + LLAvatarListEntry* entry; if (mAvatars.size() == 0) { @@ -1220,38 +1291,38 @@ void LLFloaterAvatarList::lookAtAvatar(LLUUID &uuid) } //static -void LLFloaterAvatarList::onClickPrevInList(void *userdata) +void LLFloaterAvatarList::onClickPrevInList(void* userdata) { - LLFloaterAvatarList *self = (LLFloaterAvatarList*)userdata; + LLFloaterAvatarList* self = (LLFloaterAvatarList*)userdata; self->focusOnPrev(FALSE); } //static -void LLFloaterAvatarList::onClickNextInList(void *userdata) +void LLFloaterAvatarList::onClickNextInList(void* userdata) { - LLFloaterAvatarList *self = (LLFloaterAvatarList*)userdata; + LLFloaterAvatarList* self = (LLFloaterAvatarList*)userdata; self->focusOnNext(FALSE); } //static -void LLFloaterAvatarList::onClickPrevMarked(void *userdata) +void LLFloaterAvatarList::onClickPrevMarked(void* userdata) { - LLFloaterAvatarList *self = (LLFloaterAvatarList*)userdata; + LLFloaterAvatarList* self = (LLFloaterAvatarList*)userdata; self->focusOnPrev(TRUE); } //static -void LLFloaterAvatarList::onClickNextMarked(void *userdata) +void LLFloaterAvatarList::onClickNextMarked(void* userdata) { - LLFloaterAvatarList *self = (LLFloaterAvatarList*)userdata; + LLFloaterAvatarList* self = (LLFloaterAvatarList*)userdata; self->focusOnNext(TRUE); } //static void LLFloaterAvatarList::onClickGetKey(void *userdata) { - LLFloaterAvatarList *self = (LLFloaterAvatarList*)userdata; - LLScrollListItem *item = self->mAvatarList->getFirstSelected(); + LLFloaterAvatarList* self = (LLFloaterAvatarList*)userdata; + LLScrollListItem* item = self->mAvatarList->getFirstSelected(); if (NULL == item) return; @@ -1337,7 +1408,7 @@ void LLFloaterAvatarList::sound_trigger_hook(LLMessageSystem* msg,void **) msg->getUUIDFast(_PREHASH_SoundData, _PREHASH_OwnerID, owner_id); if(owner_id == gAgent.getID() && sound_id == LLUUID("76c78607-93f9-f55a-5238-e19b1a181389")) { - //lets ask if they want to turn it on. + //let's ask if they want to turn it on. if(gSavedSettings.getBOOL("RadarChatKeys")) { LLFloaterAvatarList::getInstance()->sendKeys(); @@ -1412,13 +1483,13 @@ static void send_eject(const LLUUID& avatar_id, bool ban) msg->nextBlock("Data"); msg->addUUID("TargetID", avatar_id); msg->addU32("Flags", flags); - msg->sendReliable( avatarp->getRegion()->getHost()); + msg->sendReliable(avatarp->getRegion()->getHost()); } } static void send_estate_message( const char* request, - const LLUUID &target) + const LLUUID& target) { LLMessageSystem* msg = gMessageSystem; @@ -1449,21 +1520,22 @@ static void send_estate_message( msg->sendReliable(gAgent.getRegion()->getHost()); } -static void cmd_freeze(const LLUUID& avatar, const std::string &name) { send_freeze(avatar, true); } -static void cmd_unfreeze(const LLUUID& avatar, const std::string &name) { send_freeze(avatar, false); } -static void cmd_eject(const LLUUID& avatar, const std::string &name) { send_eject(avatar, false); } -static void cmd_ban(const LLUUID& avatar, const std::string &name) { send_eject(avatar, true); } -static void cmd_profile(const LLUUID& avatar, const std::string &name) { LLFloaterAvatarInfo::showFromDirectory(avatar); } -static void cmd_estate_eject(const LLUUID &avatar, const std::string &name){ send_estate_message("teleporthomeuser", avatar); } +static void cmd_freeze(const LLUUID& avatar, const std::string& name) { send_freeze(avatar, true); } +static void cmd_unfreeze(const LLUUID& avatar, const std::string& name) { send_freeze(avatar, false); } +static void cmd_eject(const LLUUID& avatar, const std::string& name) { send_eject(avatar, false); } +static void cmd_ban(const LLUUID& avatar, const std::string& name) { send_eject(avatar, true); } +static void cmd_profile(const LLUUID& avatar, const std::string& name) { LLFloaterAvatarInfo::showFromDirectory(avatar); } +static void cmd_estate_eject(const LLUUID& avatar, const std::string& name){ send_estate_message("teleporthomeuser", avatar); } +static void cmd_estate_ban(const LLUUID &avatar, const std::string &name) { LLPanelEstateInfo::sendEstateAccessDelta(ESTATE_ACCESS_BANNED_AGENT_ADD | ESTATE_ACCESS_ALLOWED_AGENT_REMOVE | ESTATE_ACCESS_NO_REPLY, avatar); } -void LLFloaterAvatarList::doCommand(void (*func)(const LLUUID &avatar, const std::string &name)) +void LLFloaterAvatarList::doCommand(void (*func)(const LLUUID& avatar, const std::string& name)) { LLDynamicArray ids = mAvatarList->getSelectedIDs(); for (LLDynamicArray::iterator itr = ids.begin(); itr != ids.end(); ++itr) { LLUUID avid = *itr; - LLAvatarListEntry *entry = getAvatarEntry(avid); + LLAvatarListEntry* entry = getAvatarEntry(avid); if (entry != NULL) { llinfos << "Executing command on " << entry->getName() << llendl; @@ -1480,7 +1552,7 @@ std::string LLFloaterAvatarList::getSelectedNames(const std::string& separator) for (LLDynamicArray::iterator itr = ids.begin(); itr != ids.end(); ++itr) { LLUUID avid = *itr; - LLAvatarListEntry *entry = getAvatarEntry(avid); + LLAvatarListEntry* entry = getAvatarEntry(avid); if (entry != NULL) { if (!ret.empty()) ret += separator; @@ -1494,7 +1566,7 @@ std::string LLFloaterAvatarList::getSelectedNames(const std::string& separator) std::string LLFloaterAvatarList::getSelectedName() { LLUUID id = getSelectedID(); - LLAvatarListEntry *entry = getAvatarEntry(id); + LLAvatarListEntry* entry = getAvatarEntry(id); if (entry) { return entry->getName(); @@ -1504,7 +1576,7 @@ std::string LLFloaterAvatarList::getSelectedName() LLUUID LLFloaterAvatarList::getSelectedID() { - LLScrollListItem *item = mAvatarList->getFirstSelected(); + LLScrollListItem* item = mAvatarList->getFirstSelected(); if (item) return item->getUUID(); return LLUUID::null; } @@ -1516,11 +1588,11 @@ void LLFloaterAvatarList::callbackFreeze(const LLSD& notification, const LLSD& r if (option == 0) { - getInstance()->doCommand( cmd_freeze ); + getInstance()->doCommand(cmd_freeze); } else if (option == 1) { - getInstance()->doCommand( cmd_unfreeze ); + getInstance()->doCommand(cmd_unfreeze); } } @@ -1531,11 +1603,11 @@ void LLFloaterAvatarList::callbackEject(const LLSD& notification, const LLSD& re if (option == 0) { - getInstance()->doCommand( cmd_eject ); + getInstance()->doCommand(cmd_eject); } else if (option == 1) { - getInstance()->doCommand( cmd_ban ); + getInstance()->doCommand(cmd_ban); } } @@ -1546,16 +1618,28 @@ void LLFloaterAvatarList::callbackEjectFromEstate(const LLSD& notification, cons if (option == 0) { - getInstance()->doCommand( cmd_estate_eject ); + getInstance()->doCommand(cmd_estate_eject); } } //static -void LLFloaterAvatarList::callbackIdle(void *userdata) +void LLFloaterAvatarList::callbackBanFromEstate(const LLSD& notification, const LLSD& response) +{ + S32 option = LLNotification::getSelectedOption(notification, response); + + if (option == 0) + { + getInstance()->doCommand(cmd_estate_eject); //Eject first, just in case. + getInstance()->doCommand(cmd_estate_ban); + } +} + +//static +void LLFloaterAvatarList::callbackIdle(void* userdata) { if (instanceExists()) { - // Do not update at every frame: this would be insane ! + // Do not update at every frame: this would be insane! if (gFrameCount % getInstance()->mUpdateRate == 0) { getInstance()->updateAvatarList(); @@ -1563,7 +1647,7 @@ void LLFloaterAvatarList::callbackIdle(void *userdata) } } -void LLFloaterAvatarList::onClickFreeze(void *userdata) +void LLFloaterAvatarList::onClickFreeze(void* userdata) { LLSD args; LLSD payload; @@ -1572,7 +1656,7 @@ void LLFloaterAvatarList::onClickFreeze(void *userdata) } //static -void LLFloaterAvatarList::onClickEject(void *userdata) +void LLFloaterAvatarList::onClickEject(void* userdata) { LLSD args; LLSD payload; @@ -1581,9 +1665,9 @@ void LLFloaterAvatarList::onClickEject(void *userdata) } //static -void LLFloaterAvatarList::onClickMute(void *userdata) +void LLFloaterAvatarList::onClickMute(void* userdata) { - LLFloaterAvatarList *self = (LLFloaterAvatarList*)userdata; + LLFloaterAvatarList* self = (LLFloaterAvatarList*)userdata; LLDynamicArray ids = self->mAvatarList->getSelectedIDs(); if (ids.size() > 0) @@ -1611,7 +1695,7 @@ void LLFloaterAvatarList::onClickMute(void *userdata) } //static -void LLFloaterAvatarList::onClickEjectFromEstate(void *userdata) +void LLFloaterAvatarList::onClickEjectFromEstate(void* userdata) { LLSD args; LLSD payload; @@ -1620,14 +1704,23 @@ void LLFloaterAvatarList::onClickEjectFromEstate(void *userdata) } //static -void LLFloaterAvatarList::onClickAR(void *userdata) +void LLFloaterAvatarList::onClickBanFromEstate(void* userdata) { - LLFloaterAvatarList *self = (LLFloaterAvatarList*)userdata; - LLScrollListItem *item = self->mAvatarList->getFirstSelected(); + LLSD args; + LLSD payload; + args["EVIL_USER"] = ((LLFloaterAvatarList*)userdata)->getSelectedNames(); + LLNotificationsUtil::add("EstateBanUser", args, payload, callbackBanFromEstate); +} + +//static +void LLFloaterAvatarList::onClickAR(void* userdata) +{ + LLFloaterAvatarList* self = (LLFloaterAvatarList*)userdata; + LLScrollListItem* item = self->mAvatarList->getFirstSelected(); if (item) { LLUUID agent_id = item->getUUID(); - LLAvatarListEntry *entry = self->getAvatarEntry(agent_id); + LLAvatarListEntry* entry = self->getAvatarEntry(agent_id); if (entry) { LLFloaterReporter::showFromObject(entry->getID()); @@ -1638,19 +1731,19 @@ void LLFloaterAvatarList::onClickAR(void *userdata) // static void LLFloaterAvatarList::onClickProfile(void* userdata) { - LLFloaterAvatarList *self = (LLFloaterAvatarList*)userdata; + LLFloaterAvatarList* self = (LLFloaterAvatarList*)userdata; self->doCommand(cmd_profile); } //static void LLFloaterAvatarList::onClickTeleport(void* userdata) { - LLFloaterAvatarList *self = (LLFloaterAvatarList*)userdata; - LLScrollListItem *item = self->mAvatarList->getFirstSelected(); + LLFloaterAvatarList* self = (LLFloaterAvatarList*)userdata; + LLScrollListItem* item = self->mAvatarList->getFirstSelected(); if (item) { LLUUID agent_id = item->getUUID(); - LLAvatarListEntry *entry = self->getAvatarEntry(agent_id); + LLAvatarListEntry* entry = self->getAvatarEntry(agent_id); if (entry) { // llinfos << "Trying to teleport to " << entry->getName() << " at " << entry->getPosition() << llendl; @@ -1663,11 +1756,11 @@ void LLFloaterAvatarList::onSelectName(LLUICtrl*, void* userdata) { LLFloaterAvatarList* self = (LLFloaterAvatarList*)userdata; - LLScrollListItem *item = self->mAvatarList->getFirstSelected(); + LLScrollListItem* item = self->mAvatarList->getFirstSelected(); if (item) { LLUUID agent_id = item->getUUID(); - LLAvatarListEntry *entry = self->getAvatarEntry(agent_id); + LLAvatarListEntry* entry = self->getAvatarEntry(agent_id); if (entry) { BOOL enabled = entry->isDrawn(); diff --git a/indra/newview/llfloateravatarlist.h b/indra/newview/llfloateravatarlist.h index 44bc3df84..46bdd1a0f 100644 --- a/indra/newview/llfloateravatarlist.h +++ b/indra/newview/llfloateravatarlist.h @@ -171,6 +171,8 @@ private: public: ~LLFloaterAvatarList(); + virtual BOOL handleKeyHere(KEY key, MASK mask); + /*virtual*/ void onClose(bool app_quitting); /*virtual*/ void onOpen(); /*virtual*/ BOOL postBuild(); @@ -280,11 +282,13 @@ private: static void onClickAR(void *userdata); static void onClickTeleport(void *userdata); static void onClickEjectFromEstate(void *userdata); + static void onClickBanFromEstate(void *userdata); static void callbackFreeze(const LLSD& notification, const LLSD& response); static void callbackEject(const LLSD& notification, const LLSD& response); static void callbackAR(void *userdata); static void callbackEjectFromEstate(const LLSD& notification, const LLSD& response); + static void callbackBanFromEstate(const LLSD& notification, const LLSD& response); static void onSelectName(LLUICtrl*, void *userdata); diff --git a/indra/newview/llfloaterhardwaresettings.cpp b/indra/newview/llfloaterhardwaresettings.cpp deleted file mode 100644 index d1d19e86c..000000000 --- a/indra/newview/llfloaterhardwaresettings.cpp +++ /dev/null @@ -1,224 +0,0 @@ -/** - * @file llfloaterhardwaresettings.cpp - * @brief Menu of all the different graphics hardware settings - * - * $LicenseInfo:firstyear=2001&license=viewergpl$ - * - * Copyright (c) 2001-2009, Linden Research, Inc. - * - * Second Life Viewer Source Code - * The source code in this file ("Source Code") is provided by Linden Lab - * to you under the terms of the GNU General Public License, version 2.0 - * ("GPL"), unless you have obtained a separate licensing agreement - * ("Other License"), formally executed by you and Linden Lab. Terms of - * the GPL can be found in doc/GPL-license.txt in this distribution, or - * online at http://secondlifegrid.net/programs/open_source/licensing/gplv2 - * - * There are special exceptions to the terms and conditions of the GPL as - * it is applied to this Source Code. View the full text of the exception - * in the file doc/FLOSS-exception.txt in this software distribution, or - * online at - * http://secondlifegrid.net/programs/open_source/licensing/flossexception - * - * By copying, modifying or distributing this software, you acknowledge - * that you have read and understood your obligations described above, - * and agree to abide by those obligations. - * - * ALL LINDEN LAB SOURCE CODE IS PROVIDED "AS IS." LINDEN LAB MAKES NO - * WARRANTIES, EXPRESS, IMPLIED OR OTHERWISE, REGARDING ITS ACCURACY, - * COMPLETENESS OR PERFORMANCE. - * $/LicenseInfo$ - */ - -#include "llviewerprecompiledheaders.h" - -#include "llfloaterhardwaresettings.h" -#include "llfloaterpreference.h" -#include "llviewerwindow.h" -#include "llwindow.h" -#include "llviewercontrol.h" -#include "llviewertexturelist.h" -#include "llfeaturemanager.h" -#include "llstartup.h" - -#include "llradiogroup.h" -#include "lluictrlfactory.h" - -#include "llimagegl.h" -#include "pipeline.h" - -LLFloaterHardwareSettings* LLFloaterHardwareSettings::sHardwareSettings = NULL; - -LLFloaterHardwareSettings::LLFloaterHardwareSettings() : LLFloater(std::string("Hardware Settings Floater")) -{ - LLUICtrlFactory::getInstance()->buildFloater(this, "floater_hardware_settings.xml"); - - // load it up - initCallbacks(); -} - -LLFloaterHardwareSettings::~LLFloaterHardwareSettings() -{ -} - -void LLFloaterHardwareSettings::onClickHelp(void* data) -{ - const char* xml_alert = "HardwareSettingsHelpButton"; - LLNotifications::instance().add(xml_alert); -} - -void LLFloaterHardwareSettings::initCallbacks(void) -{ -} - -// menu maintenance functions - -void LLFloaterHardwareSettings::refresh() -{ - LLPanel::refresh(); - - mUseVBO = gSavedSettings.getBOOL("RenderVBOEnable"); - mUseFBO = gSavedSettings.getBOOL("RenderUseFBO"); - mUseAniso = gSavedSettings.getBOOL("RenderAnisotropic"); - mFSAASamples = gSavedSettings.getU32("RenderFSAASamples"); - mGamma = gSavedSettings.getF32("RenderGamma"); - mVideoCardMem = gSavedSettings.getS32("TextureMemory"); - mFogRatio = gSavedSettings.getF32("RenderFogRatio"); - mProbeHardwareOnStartup = gSavedSettings.getBOOL("ProbeHardwareOnStartup"); - - childSetValue("fsaa", (LLSD::Integer) mFSAASamples); - refreshEnabledState(); -} - -void LLFloaterHardwareSettings::refreshEnabledState() -{ - S32 min_tex_mem = LLViewerTextureList::getMinVideoRamSetting(); - S32 max_tex_mem = LLViewerTextureList::getMaxVideoRamSetting(); - childSetMinValue("GrapicsCardTextureMemory", min_tex_mem); - childSetMaxValue("GrapicsCardTextureMemory", max_tex_mem); - - mLastVBOState = LLVertexBuffer::sEnableVBOs; - if (!LLFeatureManager::getInstance()->isFeatureAvailable("RenderVBOEnable") || - !gGLManager.mHasVertexBufferObject) - { - childSetEnabled("vbo", FALSE); - //Streaming VBOs -Shyotl - childSetEnabled("vbo_stream", FALSE); - } - else - { - childSetEnabled("vbo_stream", LLVertexBuffer::sEnableVBOs); - } - - childSetEnabled("fbo",gGLManager.mHasFramebufferObject && !LLPipeline::sRenderDeferred); - - // if no windlight shaders, turn off nighttime brightness, gamma, and fog distance - childSetEnabled("gamma", !gPipeline.canUseWindLightShaders()); - childSetEnabled("(brightness, lower is brighter)", !gPipeline.canUseWindLightShaders()); - childSetEnabled("fog", !gPipeline.canUseWindLightShaders()); - -} - -// static instance of it -LLFloaterHardwareSettings* LLFloaterHardwareSettings::instance() -{ - if (!sHardwareSettings) - { - sHardwareSettings = new LLFloaterHardwareSettings(); - sHardwareSettings->close(); - } - return sHardwareSettings; -} -void LLFloaterHardwareSettings::show() -{ - LLFloaterHardwareSettings* hardSettings = instance(); - hardSettings->refresh(); - hardSettings->center(); - - // comment in if you want the menu to rebuild each time - //LLUICtrlFactory::getInstance()->buildFloater(hardSettings, "floater_hardware_settings.xml"); - //hardSettings->initCallbacks(); - - hardSettings->open(); -} - -bool LLFloaterHardwareSettings::isOpen() -{ - if (sHardwareSettings != NULL) - { - return true; - } - return false; -} - -// virtual -void LLFloaterHardwareSettings::onClose(bool app_quitting) -{ - if (sHardwareSettings) - { - sHardwareSettings->setVisible(FALSE); - } -} - -// virtual -void LLFloaterHardwareSettings::draw() -{ - if(mLastVBOState == !LLVertexBuffer::sEnableVBOs) - refreshEnabledState(); - LLFloater::draw(); -} - -//============================================================================ - -BOOL LLFloaterHardwareSettings::postBuild() -{ - childSetAction("OK", onBtnOK, this); - - refresh(); - - return TRUE; -} - - -void LLFloaterHardwareSettings::apply() -{ - //Still do a bit of voodoo here. V2 forces restart to change FSAA with FBOs off. - //Let's not do that, and instead do pre-V2 FSAA change handling for that particular case - if(!LLRenderTarget::sUseFBO && (mFSAASamples != (U32)childGetValue("fsaa").asInteger())) - { - BOOL logged_in = (LLStartUp::getStartupState() >= STATE_STARTED); - LLWindow* window = gViewerWindow->getWindow(); - LLCoordScreen size; - window->getSize(&size); - gViewerWindow->changeDisplaySettings(window->getFullscreen(), - size, - gSavedSettings.getBOOL("DisableVerticalSync"), - logged_in); - } - - refresh(); -} - - -void LLFloaterHardwareSettings::cancel() -{ - gSavedSettings.setBOOL("RenderVBOEnable", mUseVBO); - gSavedSettings.setBOOL("RenderUseFBO", mUseFBO); - gSavedSettings.setBOOL("RenderAnisotropic", mUseAniso); - gSavedSettings.setU32("RenderFSAASamples", mFSAASamples); - gSavedSettings.setF32("RenderGamma", mGamma); - gSavedSettings.setS32("TextureMemory", mVideoCardMem); - gSavedSettings.setF32("RenderFogRatio", mFogRatio); - gSavedSettings.setBOOL("ProbeHardwareOnStartup", mProbeHardwareOnStartup ); - - close(); -} - -// static -void LLFloaterHardwareSettings::onBtnOK( void* userdata ) -{ - LLFloaterHardwareSettings *fp =(LLFloaterHardwareSettings *)userdata; - fp->apply(); - fp->close(false); -} - diff --git a/indra/newview/llfloaterhardwaresettings.h b/indra/newview/llfloaterhardwaresettings.h deleted file mode 100644 index 0d78d67a2..000000000 --- a/indra/newview/llfloaterhardwaresettings.h +++ /dev/null @@ -1,110 +0,0 @@ -/** - * @file llfloaterhardwaresettings.h - * @brief Menu of all the different graphics hardware settings - * - * $LicenseInfo:firstyear=2001&license=viewergpl$ - * - * Copyright (c) 2001-2009, Linden Research, Inc. - * - * Second Life Viewer Source Code - * The source code in this file ("Source Code") is provided by Linden Lab - * to you under the terms of the GNU General Public License, version 2.0 - * ("GPL"), unless you have obtained a separate licensing agreement - * ("Other License"), formally executed by you and Linden Lab. Terms of - * the GPL can be found in doc/GPL-license.txt in this distribution, or - * online at http://secondlifegrid.net/programs/open_source/licensing/gplv2 - * - * There are special exceptions to the terms and conditions of the GPL as - * it is applied to this Source Code. View the full text of the exception - * in the file doc/FLOSS-exception.txt in this software distribution, or - * online at - * http://secondlifegrid.net/programs/open_source/licensing/flossexception - * - * By copying, modifying or distributing this software, you acknowledge - * that you have read and understood your obligations described above, - * and agree to abide by those obligations. - * - * ALL LINDEN LAB SOURCE CODE IS PROVIDED "AS IS." LINDEN LAB MAKES NO - * WARRANTIES, EXPRESS, IMPLIED OR OTHERWISE, REGARDING ITS ACCURACY, - * COMPLETENESS OR PERFORMANCE. - * $/LicenseInfo$ - */ - -#ifndef LL_LLFLOATER_HARDWARE_SETTINGS_H -#define LL_LLFLOATER_HARDWARE_SETTINGS_H - -#include "llfloater.h" - -class LLSliderCtrl; - -/// Menuing system for all of windlight's functionality -class LLFloaterHardwareSettings : public LLFloater -{ - friend class LLPreferenceCore; - -public: - - LLFloaterHardwareSettings(); - virtual ~LLFloaterHardwareSettings(); - - virtual BOOL postBuild(); - - /// initialize all the callbacks for the menu - void initCallbacks(void); - - /// one and one instance only - static LLFloaterHardwareSettings* instance(); - - /// callback for the menus help button - static void onClickHelp(void* data); - - /// OK button - static void onBtnOK( void* userdata ); - - //// menu management - - /// show off our menu - static void show(); - - /// return if the menu exists or not - static bool isOpen(); - - /// stuff to do on exit - virtual void onClose(bool app_quitting); - - /// sync up menu with parameters - void refresh(); - - /// Draw the panel... - void draw(); - - /// Apply the changed values. - void apply(); - - /// don't apply the changed values - void cancel(); - - /// refresh the enabled values - void refreshEnabledState(); - -protected: - LLSliderCtrl* mCtrlVideoCardMem; - - //Retained values for cancel/reset - BOOL mUseVBO; - BOOL mUseFBO; - BOOL mUseAniso; - U32 mFSAASamples; - F32 mGamma; - S32 mVideoCardMem; - F32 mFogRatio; - BOOL mProbeHardwareOnStartup; - - bool mLastVBOState; //track changes to LLVertexBuffer::sEnableVBOs every frame. Bleh. -private: - // one instance on the inside - static LLFloaterHardwareSettings* sHardwareSettings; -}; - -#endif - diff --git a/indra/newview/llfloaterland.cpp b/indra/newview/llfloaterland.cpp index 9f9e2d308..20f60e920 100644 --- a/indra/newview/llfloaterland.cpp +++ b/indra/newview/llfloaterland.cpp @@ -80,6 +80,7 @@ #include "llviewercontrol.h" #include "roles_constants.h" #include "llworld.h" +#include "lltrans.h" #include "hippogridmanager.h" @@ -1498,7 +1499,7 @@ void LLPanelLandObjects::onClickRefresh(void* userdata) // ready the list for results self->mOwnerList->deleteAllItems(); - self->mOwnerList->addCommentText(std::string("Searching...")); // *TODO: Translate + self->mOwnerList->addCommentText(LLTrans::getString("Searching")); self->mOwnerList->setEnabled(FALSE); self->mFirstReply = TRUE; @@ -1612,7 +1613,7 @@ void LLPanelLandObjects::processParcelObjectOwnersReply(LLMessageSystem *msg, vo // check for no results if (0 == self->mOwnerList->getItemCount()) { - self->mOwnerList->addCommentText(std::string("None found.")); // *TODO: Translate + self->mOwnerList->addCommentText(LLTrans::getString("None_found")); } else { @@ -2446,7 +2447,6 @@ void LLPanelLandAccess::refresh() childSetToolTipArg("AccessList", "[LISTED]", llformat("%d",count)); childSetToolTipArg("AccessList", "[MAX]", llformat("%d",PARCEL_MAX_ACCESS_LIST)); - // *TODO: Translate for (access_map_const_iterator cit = parcel->mAccessList.begin(); cit != parcel->mAccessList.end(); ++cit) { @@ -2460,19 +2460,23 @@ void LLPanelLandAccess::refresh() suffix.assign(" ("); if (seconds >= 120) { - std::string buf = llformat("%d minutes", (seconds/60)); + std::string buf = llformat("%d ", (seconds/60)) + getString("minutes"); suffix.append(buf); } else if (seconds >= 60) { - suffix.append("1 minute"); + suffix.append(getString("1_minute")); + } + else if (seconds == 1) + { + suffix.append(getString("1_second")); } else { - std::string buf = llformat("%d seconds", seconds); + std::string buf = llformat("%d ", seconds) + getString("seconds"); suffix.append(buf); } - suffix.append(" remaining)"); + suffix.append(" " + getString("remaining") + ")"); } if (mListAccess) mListAccess->addNameItem(entry.mID, ADD_SORTED, TRUE, suffix); @@ -2499,19 +2503,23 @@ void LLPanelLandAccess::refresh() suffix.assign(" ("); if (seconds >= 120) { - std::string buf = llformat("%d minutes", (seconds/60)); + std::string buf = llformat("%d ", (seconds/60)) + getString("minutes"); suffix.append(buf); } else if (seconds >= 60) { - suffix.append("1 minute"); + suffix.append(getString("1_minute")); + } + else if (seconds == 1) + { + suffix.append(getString("1_second")); } else { - std::string buf = llformat("%d seconds", seconds); + std::string buf = llformat("%d ", seconds) + getString("seconds"); suffix.append(buf); } - suffix.append(" remaining)"); + suffix.append(" " + getString("remaining") + ")"); } mListBanned->addNameItem(entry.mID, ADD_SORTED, TRUE, suffix); } diff --git a/indra/newview/llfloaterpreference.cpp b/indra/newview/llfloaterpreference.cpp index f973a7619..6d839b66d 100644 --- a/indra/newview/llfloaterpreference.cpp +++ b/indra/newview/llfloaterpreference.cpp @@ -78,7 +78,6 @@ #include "llviewerwindow.h" #include "llkeyboard.h" #include "llscrollcontainer.h" -#include "llfloaterhardwaresettings.h" #include "hippopanelgrids.h" const S32 PREF_BORDER = 4; @@ -303,9 +302,6 @@ void LLPreferenceCore::apply() mPrefsAscentSys->apply(); mPrefsAscentVan->apply(); - // hardware menu apply - LLFloaterHardwareSettings::instance()->apply(); - mWebPanel->apply(); } @@ -327,9 +323,6 @@ void LLPreferenceCore::cancel() mPrefsAscentSys->cancel(); mPrefsAscentVan->cancel(); - // cancel hardware menu - LLFloaterHardwareSettings::instance()->cancel(); - mWebPanel->cancel(); } @@ -349,7 +342,6 @@ void LLPreferenceCore::setPersonalInfo(const std::string& visibility, bool im_vi void LLPreferenceCore::refreshEnabledGraphics() { - LLFloaterHardwareSettings::instance()->refreshEnabledState(); mDisplayPanel->refreshEnabledState(); } diff --git a/indra/newview/llfloaterproperties.cpp b/indra/newview/llfloaterproperties.cpp index c9c8e0482..3e279936f 100644 --- a/indra/newview/llfloaterproperties.cpp +++ b/indra/newview/llfloaterproperties.cpp @@ -197,9 +197,12 @@ LLFloaterProperties::LLFloaterProperties(const std::string& name, const LLRect& // owner permissions // Permissions debug text // group permissions - childSetCommitCallback("CheckShareWithGroup",&onCommitPermissions, this); + childSetCommitCallback("CheckGroupCopy",&onCommitPermissions, this); + childSetCommitCallback("CheckGroupMod",&onCommitPermissions, this); + childSetCommitCallback("CheckGroupMove",&onCommitPermissions, this); // everyone permissions childSetCommitCallback("CheckEveryoneCopy",&onCommitPermissions, this); + childSetCommitCallback("CheckEveryoneMove",&onCommitPermissions, this); // next owner permissions childSetCommitCallback("CheckNextOwnerModify",&onCommitPermissions, this); childSetCommitCallback("CheckNextOwnerCopy",&onCommitPermissions, this); @@ -261,8 +264,11 @@ void LLFloaterProperties::refresh() "CheckOwnerModify", "CheckOwnerCopy", "CheckOwnerTransfer", - "CheckShareWithGroup", + "CheckGroupCopy", + "CheckGroupMod", + "CheckGroupMove", "CheckEveryoneCopy", + "CheckEveryoneMove", "CheckNextOwnerModify", "CheckNextOwnerCopy", "CheckNextOwnerTransfer", @@ -530,13 +536,23 @@ void LLFloaterProperties::refreshFromItem(LLInventoryItem* item) // Check for ability to change values. if (!is_link && is_obj_modify && can_agent_manipulate) { - childSetEnabled("CheckShareWithGroup",TRUE); + childSetEnabled("GroupLabel", true); + childSetEnabled("CheckGroupCopy",owner_mask & PERM_TRANSFER); + childSetEnabled("CheckGroupMod", owner_mask & PERM_MODIFY); + childSetEnabled("CheckGroupMove", true); + childSetEnabled("EveryoneLabel", true); childSetEnabled("CheckEveryoneCopy",(owner_mask & PERM_COPY) && (owner_mask & PERM_TRANSFER)); + childSetEnabled("CheckEveryoneMove",true); } else { - childSetEnabled("CheckShareWithGroup",FALSE); + childSetEnabled("GroupLabel", false); + childSetEnabled("CheckGroupCopy", false); + childSetEnabled("CheckGroupMod", false); + childSetEnabled("CheckGroupMove", false); + childSetEnabled("EveryoneLabel", false); childSetEnabled("CheckEveryoneCopy",FALSE); + childSetEnabled("CheckEveryoneMove",false); } // Set values. @@ -544,36 +560,12 @@ void LLFloaterProperties::refreshFromItem(LLInventoryItem* item) BOOL is_group_modify = (group_mask & PERM_MODIFY) ? TRUE : FALSE; BOOL is_group_move = (group_mask & PERM_MOVE) ? TRUE : FALSE; - if (is_group_copy && is_group_modify && is_group_move) - { - childSetValue("CheckShareWithGroup",LLSD((BOOL)TRUE)); - - LLCheckBoxCtrl* ctl = getChild("CheckShareWithGroup"); - if(ctl) - { - ctl->setTentative(FALSE); - } - } - else if (!is_group_copy && !is_group_modify && !is_group_move) - { - childSetValue("CheckShareWithGroup",LLSD((BOOL)FALSE)); - LLCheckBoxCtrl* ctl = getChild("CheckShareWithGroup"); - if(ctl) - { - ctl->setTentative(FALSE); - } - } - else - { - LLCheckBoxCtrl* ctl = getChild("CheckShareWithGroup"); - if(ctl) - { - ctl->setTentative(TRUE); - ctl->set(TRUE); - } - } + childSetValue("CheckGroupCopy", is_group_copy); + childSetValue("CheckGroupMod", is_group_modify); + childSetValue("CheckGroupMove", is_group_move); childSetValue("CheckEveryoneCopy",LLSD((BOOL)(everyone_mask & PERM_COPY))); + childSetValue("CheckEveryoneMove",LLSD((BOOL)(everyone_mask & PERM_MOVE))); /////////////// // SALE INFO // @@ -762,13 +754,30 @@ void LLFloaterProperties::onCommitPermissions(LLUICtrl* ctrl, void* data) LLPermissions perm(item->getPermissions()); - LLCheckBoxCtrl* CheckShareWithGroup = self->getChild("CheckShareWithGroup"); - - if(CheckShareWithGroup) + LLCheckBoxCtrl* CheckGroupCopy = self->getChild("CheckGroupCopy"); + if(CheckGroupCopy) { perm.setGroupBits(gAgent.getID(), gAgent.getGroupID(), - CheckShareWithGroup->get(), - PERM_MODIFY | PERM_MOVE | PERM_COPY); + CheckGroupCopy->get(), PERM_COPY); + } + LLCheckBoxCtrl* CheckGroupMod = self->getChild("CheckGroupMod"); + if(CheckGroupMod) + { + perm.setGroupBits(gAgent.getID(), gAgent.getGroupID(), + CheckGroupMod->get(), PERM_MODIFY); + } + LLCheckBoxCtrl* CheckGroupMove = self->getChild("CheckGroupMove"); + if(CheckGroupMove) + { + perm.setGroupBits(gAgent.getID(), gAgent.getGroupID(), + CheckGroupMove->get(), PERM_MOVE); + } + + LLCheckBoxCtrl* CheckEveryoneMove = self->getChild("CheckEveryoneMove"); + if(CheckEveryoneMove) + { + perm.setEveryoneBits(gAgent.getID(), gAgent.getGroupID(), + CheckEveryoneMove->get(), PERM_MOVE); } LLCheckBoxCtrl* CheckEveryoneCopy = self->getChild("CheckEveryoneCopy"); if(CheckEveryoneCopy) diff --git a/indra/newview/llfolderview.cpp b/indra/newview/llfolderview.cpp index f7ba56bf8..1fc54068c 100644 --- a/indra/newview/llfolderview.cpp +++ b/indra/newview/llfolderview.cpp @@ -959,11 +959,16 @@ void LLFolderView::draw() static LLCachedControl sSearchStatusColor(gColors, "InventorySearchStatusColor", LLColor4::white ); if (LLInventoryModelBackgroundFetch::instance().folderFetchActive() || mCompletedFilterGeneration < mFilter->getMinRequiredGeneration()) { - mStatusText = std::string("Searching..."); // *TODO:translate + mStatusText = LLTrans::getString("Searching"); } else { - mStatusText = std::string("No matching items found in inventory."); // *TODO:translate + // if(getFilter()) + // { + // LLStringUtil::format_map_t args; + // args["[SEARCH_TERM]"] = LLURI::escape(getFilter()->getFilterSubStringOrig()); + mStatusText = LLTrans::getString("InventoryNoMatchingItems"); //, args); + // } } mStatusTextBox->setWrappedText(mStatusText); mStatusTextBox->setVisible( TRUE ); diff --git a/indra/newview/llgroupnotify.cpp b/indra/newview/llgroupnotify.cpp index 24ff0408e..46f368300 100644 --- a/indra/newview/llgroupnotify.cpp +++ b/indra/newview/llgroupnotify.cpp @@ -48,6 +48,7 @@ #include "llfloatergroupinfo.h" #include "llinventoryicon.h" #include "llinventory.h" +#include "lltrans.h" #include "llglheaders.h" #include "llagent.h" @@ -143,14 +144,14 @@ LLGroupNotifyBox::LLGroupNotifyBox(const std::string& subject, }; // Title - addChild(new NoticeText(std::string("title"),LLRect(x,y,RIGHT - HPAD,y - LINE_HEIGHT),std::string("Group Notice"),LLFontGL::getFontSansSerifHuge())); + addChild(new NoticeText(std::string("title"),LLRect(x,y,RIGHT - HPAD,y - LINE_HEIGHT),LLTrans::getString("GroupNotifyGroupNotice"),LLFontGL::getFontSansSerifHuge())); y -= llfloor(1.5f*LINE_HEIGHT); x += HPAD + HPAD + ICON_WIDTH; std::stringstream from; - from << "Sent by " << from_name << ", " << group_name; + from << LLTrans::getString("GroupNotifySentBy") << " " + from_name << LLTrans::getString(",") + " " << group_name; addChild(new NoticeText(std::string("group"),LLRect(x,y,RIGHT - HPAD,y - LINE_HEIGHT),from.str(),LLFontGL::getFontSansSerif())); @@ -216,7 +217,7 @@ LLGroupNotifyBox::LLGroupNotifyBox(const std::string& subject, if (mHasInventory) { - addChild(new NoticeText(std::string("subjecttitle"),LLRect(x,y,x + LABEL_WIDTH,y - LINE_HEIGHT),std::string("Attached: "),LLFontGL::getFontSansSerif())); + addChild(new NoticeText(std::string("subjecttitle"),LLRect(x,y,x + LABEL_WIDTH,y - LINE_HEIGHT),LLTrans::getString("GroupNotifyAttached"),LLFontGL::getFontSansSerif())); LLUIImagePtr item_icon = LLInventoryIcon::getIcon(mInventoryOffer->mType, LLInventoryType::IT_TEXTURE, @@ -244,7 +245,7 @@ LLGroupNotifyBox::LLGroupNotifyBox(const std::string& subject, } LLButton* btn; - btn = new LLButton(std::string("next"), + btn = new LLButton(LLTrans::getString("next"), LLRect(getRect().getWidth()-26, BOTTOM_PAD + 20, getRect().getWidth()-2, BOTTOM_PAD), std::string("notify_next.png"), std::string("notify_next.png"), @@ -252,7 +253,7 @@ LLGroupNotifyBox::LLGroupNotifyBox(const std::string& subject, onClickNext, this, LLFontGL::getFontSansSerif()); - btn->setToolTip(std::string("Next")); // *TODO: Translate + btn->setToolTip(LLTrans::getString("next")); btn->setScaleImage(TRUE); addChild(btn); mNextBtn = btn; @@ -267,7 +268,7 @@ LLGroupNotifyBox::LLGroupNotifyBox(const std::string& subject, btn_width, BTN_HEIGHT); - btn = new LLButton(std::string("OK"), btn_rect, LLStringUtil::null, onClickOk, this); + btn = new LLButton(LLTrans::getString("ok"), btn_rect, LLStringUtil::null, onClickOk, this); addChild(btn, -1); setDefaultBtn(btn); @@ -279,8 +280,8 @@ LLGroupNotifyBox::LLGroupNotifyBox(const std::string& subject, wide_btn_width, BTN_HEIGHT); - btn = new LLButton(std::string("Group Notices"), btn_rect, LLStringUtil::null, onClickGroupInfo, this); - btn->setToolTip(std::string("View past notices or opt-out of receiving these messages here.")); // TODO: Translate + btn = new LLButton(LLTrans::getString("GroupNotifyGroupNotices"), btn_rect, LLStringUtil::null, onClickGroupInfo, this); + btn->setToolTip(LLTrans::getString("GroupNotifyViewPastNotices")); addChild(btn, -1); if (mHasInventory) @@ -295,11 +296,11 @@ LLGroupNotifyBox::LLGroupNotifyBox(const std::string& subject, std::string btn_lbl(""); if(is_openable(mInventoryOffer->mType)) { - btn_lbl = "Open Attachment"; + btn_lbl = LLTrans::getString("GroupNotifyOpenAttachment"); } else { - btn_lbl = "Save Attachment"; + btn_lbl = LLTrans::getString("GroupNotifySaveAttachment"); } mSaveInventoryBtn = new LLButton(btn_lbl, btn_rect, LLStringUtil::null, onClickSaveInventory, this); mSaveInventoryBtn->setVisible(mHasInventory); diff --git a/indra/newview/llinventoryfilter.cpp b/indra/newview/llinventoryfilter.cpp index 42a4f5c46..429b68ac0 100644 --- a/indra/newview/llinventoryfilter.cpp +++ b/indra/newview/llinventoryfilter.cpp @@ -665,133 +665,156 @@ const std::string& LLInventoryFilter::getFilterText() if (isFilterObjectTypesWith(LLInventoryType::IT_ANIMATION)) { - filtered_types += " Animations,"; + //filtered_types += " Animations,"; + filtered_types += LLTrans::getString("Animations"); filtered_by_type = TRUE; num_filter_types++; } else { - not_filtered_types += " Animations,"; + //not_filtered_types += " Animations,"; + not_filtered_types += LLTrans::getString("Animations"); + filtered_by_all_types = FALSE; } if (isFilterObjectTypesWith(LLInventoryType::IT_CALLINGCARD)) { - filtered_types += " Calling Cards,"; + //filtered_types += " Calling Cards,"; + filtered_types += LLTrans::getString("Calling Cards"); filtered_by_type = TRUE; num_filter_types++; } else { - not_filtered_types += " Calling Cards,"; + //not_filtered_types += " Calling Cards,"; + not_filtered_types += LLTrans::getString("Calling Cards"); filtered_by_all_types = FALSE; } if (isFilterObjectTypesWith(LLInventoryType::IT_WEARABLE)) { - filtered_types += " Clothing,"; + //filtered_types += " Clothing,"; + filtered_types += LLTrans::getString("Clothing"); filtered_by_type = TRUE; num_filter_types++; } else { - not_filtered_types += " Clothing,"; + //not_filtered_types += " Clothing,"; + not_filtered_types += LLTrans::getString("Clothing"); filtered_by_all_types = FALSE; } if (isFilterObjectTypesWith(LLInventoryType::IT_GESTURE)) { - filtered_types += " Gestures,"; + //filtered_types += " Gestures,"; + filtered_types += LLTrans::getString("Gestures"); filtered_by_type = TRUE; num_filter_types++; } else { - not_filtered_types += " Gestures,"; + //not_filtered_types += " Gestures,"; + not_filtered_types += LLTrans::getString("Gestures"); filtered_by_all_types = FALSE; } if (isFilterObjectTypesWith(LLInventoryType::IT_LANDMARK)) { - filtered_types += " Landmarks,"; + //filtered_types += " Landmarks,"; + filtered_types += LLTrans::getString("Landmarks"); filtered_by_type = TRUE; num_filter_types++; } else { - not_filtered_types += " Landmarks,"; + //not_filtered_types += " Landmarks,"; + not_filtered_types += LLTrans::getString("Landmarks"); filtered_by_all_types = FALSE; } if (isFilterObjectTypesWith(LLInventoryType::IT_NOTECARD)) { - filtered_types += " Notecards,"; + //filtered_types += " Notecards,"; + filtered_types += LLTrans::getString("Notecards"); filtered_by_type = TRUE; num_filter_types++; } else { - not_filtered_types += " Notecards,"; + //not_filtered_types += " Notecards,"; + not_filtered_types += LLTrans::getString("Notecards"); filtered_by_all_types = FALSE; } if (isFilterObjectTypesWith(LLInventoryType::IT_OBJECT) && isFilterObjectTypesWith(LLInventoryType::IT_ATTACHMENT)) { - filtered_types += " Objects,"; + //filtered_types += " Objects,"; + filtered_types += LLTrans::getString("Objects"); filtered_by_type = TRUE; num_filter_types++; } else { - not_filtered_types += " Objects,"; + //not_filtered_types += " Objects,"; + not_filtered_types += LLTrans::getString("Objects"); filtered_by_all_types = FALSE; } if (isFilterObjectTypesWith(LLInventoryType::IT_LSL)) { - filtered_types += " Scripts,"; + //filtered_types += " Scripts,"; + filtered_types += LLTrans::getString("Scripts"); filtered_by_type = TRUE; num_filter_types++; } else { - not_filtered_types += " Scripts,"; + //not_filtered_types += " Scripts,"; + not_filtered_types += LLTrans::getString("Scripts"); filtered_by_all_types = FALSE; } if (isFilterObjectTypesWith(LLInventoryType::IT_SOUND)) { - filtered_types += " Sounds,"; + //filtered_types += " Sounds,"; + filtered_types += LLTrans::getString("Sounds"); filtered_by_type = TRUE; num_filter_types++; } else { - not_filtered_types += " Sounds,"; + //not_filtered_types += " Sounds,"; + not_filtered_types += LLTrans::getString("Sounds"); filtered_by_all_types = FALSE; } if (isFilterObjectTypesWith(LLInventoryType::IT_TEXTURE)) { - filtered_types += " Textures,"; + //filtered_types += " Textures,"; + filtered_types += LLTrans::getString("Textures"); filtered_by_type = TRUE; num_filter_types++; } else { - not_filtered_types += " Textures,"; + //not_filtered_types += " Textures,"; + not_filtered_types += LLTrans::getString("Textures"); filtered_by_all_types = FALSE; } if (isFilterObjectTypesWith(LLInventoryType::IT_SNAPSHOT)) { - filtered_types += " Snapshots,"; + //filtered_types += " Snapshots,"; + filtered_types += LLTrans::getString("Snapshots"); filtered_by_type = TRUE; num_filter_types++; } else { - not_filtered_types += " Snapshots,"; + //not_filtered_types += " Snapshots,"; + not_filtered_types += LLTrans::getString("Snapshots"); filtered_by_all_types = FALSE; } @@ -806,7 +829,8 @@ const std::string& LLInventoryFilter::getFilterText() } else { - mFilterText += "No "; + //mFilterText += "No "; + mFilterText += LLTrans::getString("No Filters"); mFilterText += not_filtered_types; } // remove the ',' at the end @@ -815,12 +839,14 @@ const std::string& LLInventoryFilter::getFilterText() if (isSinceLogoff()) { - mFilterText += " - Since Logoff"; + //mFilterText += " - Since Logoff"; + mFilterText += LLTrans::getString("Since Logoff"); } if (getFilterWorn()) { - mFilterText += " - Worn"; + //mFilterText += " - Worn"; + mFilterText += LLTrans::getString("Worn"); } return mFilterText; diff --git a/indra/newview/llmaniprotate.cpp b/indra/newview/llmaniprotate.cpp index b0b8fe7f8..304f00e4b 100644 --- a/indra/newview/llmaniprotate.cpp +++ b/indra/newview/llmaniprotate.cpp @@ -65,6 +65,7 @@ #include "pipeline.h" #include "lldrawable.h" #include "llglheaders.h" +#include "lltrans.h" const F32 RADIUS_PIXELS = 100.f; // size in screen space const F32 SQ_RADIUS = RADIUS_PIXELS * RADIUS_PIXELS; @@ -152,6 +153,7 @@ void LLManipRotate::render() gGL.pushMatrix(); { + // are we in the middle of a constrained drag? if (mManipPart >= LL_ROT_X && mManipPart <= LL_ROT_Z) { @@ -292,6 +294,7 @@ void LLManipRotate::render() // First pass: centers. Second pass: sides. for( S32 i=0; i<2; i++ ) { + gGL.pushMatrix(); { if (mHighlightedPart == LL_ROT_Z) @@ -350,6 +353,7 @@ void LLManipRotate::render() { mManipulatorScales = lerp(mManipulatorScales, LLVector4(1.f, 1.f, 1.f, SELECTED_MANIPULATOR_SCALE), LLCriticalDamp::getInterpolant(MANIPULATOR_SCALE_HALF_LIFE)); } + } } @@ -363,6 +367,7 @@ void LLManipRotate::render() gGL.popMatrix(); gGL.popMatrix(); + LLVector3 euler_angles; LLQuaternion object_rot = first_object->getRotationEdit(); object_rot.getEulerAngles(&(euler_angles.mV[VX]), &(euler_angles.mV[VY]), &(euler_angles.mV[VZ])); @@ -933,7 +938,6 @@ void LLManipRotate::renderSnapGuides() } gGL.end(); - // *TODO: Translate //RN: text rendering does own shadow pass, so only render once if (pass == 1 && render_text && i % 16 == 0) { @@ -941,32 +945,32 @@ void LLManipRotate::renderSnapGuides() { if (i == 0) { - renderTickText(text_point, mObjectSelection->isAttachment() ? std::string("Forward") : std::string("East"), LLColor4::white); + renderTickText(text_point, LLTrans::getString(mObjectSelection->isAttachment() ? "Direction_Forward" : "Direction_East"), LLColor4::white); } else if (i == 16) { if (constraint_axis.mV[VZ] > 0.f) { - renderTickText(text_point, mObjectSelection->isAttachment() ? std::string("Left") : std::string("North"), LLColor4::white); + renderTickText(text_point, LLTrans::getString(mObjectSelection->isAttachment() ? "Direction_Left" : "Direction_North"), LLColor4::white); } else { - renderTickText(text_point, mObjectSelection->isAttachment() ? std::string("Right") : std::string("South"), LLColor4::white); + renderTickText(text_point, LLTrans::getString(mObjectSelection->isAttachment() ? "Direction_Right" : "Direction_South"), LLColor4::white); } } else if (i == 32) { - renderTickText(text_point, mObjectSelection->isAttachment() ? std::string("Back") : std::string("West"), LLColor4::white); + renderTickText(text_point, LLTrans::getString(mObjectSelection->isAttachment() ? "Direction_Back" : "Direction_West"), LLColor4::white); } else { if (constraint_axis.mV[VZ] > 0.f) { - renderTickText(text_point, mObjectSelection->isAttachment() ? std::string("Right") : std::string("South"), LLColor4::white); + renderTickText(text_point, LLTrans::getString(mObjectSelection->isAttachment() ? "Direction_Right" : "Direction_South"), LLColor4::white); } else { - renderTickText(text_point, mObjectSelection->isAttachment() ? std::string("Left") : std::string("North"), LLColor4::white); + renderTickText(text_point, LLTrans::getString(mObjectSelection->isAttachment() ? "Direction_Left" : "Direction_North"), LLColor4::white); } } } @@ -974,32 +978,32 @@ void LLManipRotate::renderSnapGuides() { if (i == 0) { - renderTickText(text_point, mObjectSelection->isAttachment() ? std::string("Left") : std::string("North"), LLColor4::white); + renderTickText(text_point, LLTrans::getString(mObjectSelection->isAttachment() ? "Direction_Left" : "Direction_North"), LLColor4::white); } else if (i == 16) { if (constraint_axis.mV[VX] > 0.f) { - renderTickText(text_point, std::string("Up"), LLColor4::white); + renderTickText(text_point, LLTrans::getString("Direction_Up"), LLColor4::white); } else { - renderTickText(text_point, std::string("Down"), LLColor4::white); + renderTickText(text_point, LLTrans::getString("Direction_Down"), LLColor4::white); } } else if (i == 32) { - renderTickText(text_point, mObjectSelection->isAttachment() ? std::string("Right") : std::string("South"), LLColor4::white); + renderTickText(text_point, LLTrans::getString(mObjectSelection->isAttachment() ? "Direction_Right" : "Direction_South"), LLColor4::white); } else { if (constraint_axis.mV[VX] > 0.f) { - renderTickText(text_point, std::string("Down"), LLColor4::white); + renderTickText(text_point, LLTrans::getString("Direction_Down"), LLColor4::white); } else { - renderTickText(text_point, std::string("Up"), LLColor4::white); + renderTickText(text_point, LLTrans::getString("Direction_Up"), LLColor4::white); } } } @@ -1007,32 +1011,32 @@ void LLManipRotate::renderSnapGuides() { if (i == 0) { - renderTickText(text_point, std::string("Up"), LLColor4::white); + renderTickText(text_point, LLTrans::getString("Direction_Up"), LLColor4::white); } else if (i == 16) { if (constraint_axis.mV[VY] > 0.f) { - renderTickText(text_point, mObjectSelection->isAttachment() ? std::string("Forward") : std::string("East"), LLColor4::white); + renderTickText(text_point, LLTrans::getString(mObjectSelection->isAttachment() ? "Direction_Forward" : "Direction_East"), LLColor4::white); } else { - renderTickText(text_point, mObjectSelection->isAttachment() ? std::string("Back") : std::string("West"), LLColor4::white); + renderTickText(text_point, LLTrans::getString(mObjectSelection->isAttachment() ? "Direction_Back" : "Direction_West"), LLColor4::white); } } else if (i == 32) { - renderTickText(text_point, std::string("Down"), LLColor4::white); + renderTickText(text_point, LLTrans::getString("Direction_Down"), LLColor4::white); } else { if (constraint_axis.mV[VY] > 0.f) { - renderTickText(text_point, mObjectSelection->isAttachment() ? std::string("Back") : std::string("West"), LLColor4::white); + renderTickText(text_point, LLTrans::getString(mObjectSelection->isAttachment() ? "Direction_Back" : "Direction_West"), LLColor4::white); } else { - renderTickText(text_point, mObjectSelection->isAttachment() ? std::string("Forward") : std::string("East"), LLColor4::white); + renderTickText(text_point, LLTrans::getString(mObjectSelection->isAttachment() ? "Direction_Forward" : "Direction_East"), LLColor4::white); } } } diff --git a/indra/newview/llnotify.cpp b/indra/newview/llnotify.cpp index c942aee44..8b7f52afd 100644 --- a/indra/newview/llnotify.cpp +++ b/indra/newview/llnotify.cpp @@ -327,7 +327,7 @@ LLNotifyBox::LLNotifyBox(LLNotificationPtr notification, this, sFont); btn->setScaleImage(TRUE); - btn->setToolTip(std::string("Next")); // *TODO: Translate + btn->setToolTip(LLTrans::getString("next")); addChild(btn); mNextBtn = btn; diff --git a/indra/newview/llpanelavatar.cpp b/indra/newview/llpanelavatar.cpp index 6d21cab60..14709805e 100644 --- a/indra/newview/llpanelavatar.cpp +++ b/indra/newview/llpanelavatar.cpp @@ -320,7 +320,7 @@ void LLPanelAvatarSecondLife::processProperties(void* data, EAvatarProcessorType // } if (0 == pAvatarGroups->group_list.size()) { - group_list->addCommentText(std::string("None")); // *TODO: Translate + group_list->addCommentText(getString("None")); } for(LLAvatarGroups::group_list_t::const_iterator it = pAvatarGroups->group_list.begin(); @@ -571,11 +571,6 @@ BOOL LLPanelAvatarSecondLife::postBuild(void) childSetVisible("online_yes",FALSE); - // These are cruft but may still exist in some xml files - // TODO: remove the following 2 lines once translators grab these changes - childSetVisible("online_unknown",FALSE); - childSetVisible("online_no",FALSE); - childSetAction("Find on Map", LLPanelAvatar::onClickTrack, getPanelAvatar()); childSetAction("Instant Message...", LLPanelAvatar::onClickIM, getPanelAvatar()); childSetAction("GroupInvite_Button", LLPanelAvatar::onClickGroupInvite, getPanelAvatar()); diff --git a/indra/newview/llpaneldirbrowser.cpp b/indra/newview/llpaneldirbrowser.cpp index a306d4730..4680780da 100644 --- a/indra/newview/llpaneldirbrowser.cpp +++ b/indra/newview/llpaneldirbrowser.cpp @@ -212,7 +212,7 @@ void LLPanelDirBrowser::updateResultCount() // add none found response if (list->getItemCount() == 0) { - list->addCommentText(std::string("None found.")); // *TODO: Translate + list->addCommentText(LLTrans::getString("NoneFound")); list->operateOnAll(LLCtrlListInterface::OP_DESELECT); } } @@ -1222,7 +1222,7 @@ void LLPanelDirBrowser::setupNewSearch() // ready the list for results list->operateOnAll(LLCtrlListInterface::OP_DELETE); - list->addCommentText(std::string("Searching...")); // *TODO: Translate + list->addCommentText(LLTrans::getString("Searching")); childDisable("results"); mResultsReceived = 0; diff --git a/indra/newview/llpaneldisplay.cpp b/indra/newview/llpaneldisplay.cpp index b9cf32442..d5a888d12 100644 --- a/indra/newview/llpaneldisplay.cpp +++ b/indra/newview/llpaneldisplay.cpp @@ -71,7 +71,6 @@ #include "lluictrlfactory.h" #include "llfeaturemanager.h" #include "llviewershadermgr.h" -#include "llfloaterhardwaresettings.h" #include "llboost.h" //RN temporary includes for resolution switching @@ -111,9 +110,6 @@ BOOL LLPanelDisplay::postBuild() // Help button childSetAction("GraphicsPreferencesHelpButton", onOpenHelp, this); - // Hardware settings button - childSetAction("GraphicsHardwareButton", onOpenHardwareSettings, NULL); - //============================================================================ // Resolution @@ -359,6 +355,9 @@ BOOL LLPanelDisplay::postBuild() mShadowDetailText = getChild("ShadowDetailText"); mTerrainScaleText = getChild("TerrainScaleText"); + // Hardware tab + childSetCommitCallback("vbo", &LLPanelDisplay::onRenderVBOEnable, this); + refresh(); return TRUE; @@ -463,6 +462,17 @@ void LLPanelDisplay::refresh() updateSliderText(mCtrlPostProcess, mPostProcessText); updateSliderText(mCtrlSkyFactor, mSkyFactorText); + // Hardware tab + mUseVBO = gSavedSettings.getBOOL("RenderVBOEnable"); + mUseFBO = gSavedSettings.getBOOL("RenderUseFBO"); + mUseAniso = gSavedSettings.getBOOL("RenderAnisotropic"); + mFSAASamples = gSavedSettings.getU32("RenderFSAASamples"); + mGamma = gSavedSettings.getF32("RenderGamma"); + mVideoCardMem = gSavedSettings.getS32("TextureMemory"); + mFogRatio = gSavedSettings.getF32("RenderFogRatio"); + + childSetValue("fsaa", (LLSD::Integer) mFSAASamples); + refreshEnabledState(); } @@ -503,10 +513,6 @@ void LLPanelDisplay::refreshEnabledState() bool bumpshiny = gGLManager.mHasCubeMap && LLCubeMap::sUseCubeMaps && LLFeatureManager::getInstance()->isFeatureAvailable("RenderObjectBump"); mCtrlBumpShiny->setEnabled(bumpshiny ? TRUE : FALSE); - // Avatar Mode - S32 max_avatar_shader = LLViewerShaderMgr::instance()->mMaxAvatarShaderLevel; - mCtrlAvatarVP->setEnabled((max_avatar_shader > 0) ? TRUE : FALSE); - if (gSavedSettings.getBOOL("VertexShaderEnable") == FALSE || gSavedSettings.getBOOL("RenderAvatarVP") == FALSE) { @@ -517,6 +523,7 @@ void LLPanelDisplay::refreshEnabledState() mCtrlAvatarCloth->setEnabled(true); } + static LLCachedControl wlatmos("WindLightUseAtmosShaders",false); //I actually recommend RenderUseFBO:FALSE for ati users when not using deferred, so RenderUseFBO shouldn't control visibility of the element. // Instead, gGLManager.mHasFramebufferObject seems better as it is determined by hardware and not current user settings. -Shyotl //Enabling deferred will force RenderUseFBO to TRUE. @@ -524,13 +531,14 @@ void LLPanelDisplay::refreshEnabledState() LLFeatureManager::getInstance()->isFeatureAvailable("RenderDeferred") && //Ensure it's enabled in the gpu feature table LLFeatureManager::getInstance()->isFeatureAvailable("RenderAvatarVP") && //Hardware Skinning. Deferred forces RenderAvatarVP to true LLFeatureManager::getInstance()->isFeatureAvailable("VertexShaderEnable") && gSavedSettings.getBOOL("VertexShaderEnable") && //Basic Shaders - LLFeatureManager::getInstance()->isFeatureAvailable("WindLightUseAtmosShaders") && gSavedSettings.getBOOL("WindLightUseAtmosShaders"); //Atmospheric Shaders + LLFeatureManager::getInstance()->isFeatureAvailable("WindLightUseAtmosShaders") && wlatmos; //Atmospheric Shaders mCtrlDeferred->setEnabled(can_defer); - mCtrlShadowDetail->setEnabled(can_defer && gSavedSettings.getBOOL("RenderDeferred")); - mCtrlAmbientOcc->setEnabled(can_defer && gSavedSettings.getBOOL("RenderDeferred")); - mCtrlDeferredDoF->setEnabled(can_defer && gSavedSettings.getBOOL("RenderDeferred")); + static LLCachedControl render_deferred("RenderDeferred",false); + mCtrlShadowDetail->setEnabled(can_defer && render_deferred); + mCtrlAmbientOcc->setEnabled(can_defer && render_deferred); + mCtrlDeferredDoF->setEnabled(can_defer && render_deferred); // Disable max non-impostors slider if avatar impostors are off mCtrlNonImpostors->setEnabled(gSavedSettings.getBOOL("RenderUseImpostors")); @@ -543,15 +551,15 @@ void LLPanelDisplay::refreshEnabledState() mCtrlShaderEnable->setEnabled(fCtrlShaderEnable && (!gRlvHandler.hasBehaviour(RLV_BHVR_SETENV) || !mShaderEnable)); // [/RLVa:KB] - BOOL shaders = mCtrlShaderEnable->get(); + bool shaders = mCtrlShaderEnable->get(); if (shaders) { mRadioTerrainDetail->setValue(1); - mRadioTerrainDetail->setEnabled(FALSE); + mRadioTerrainDetail->setEnabled(false); } else { - mRadioTerrainDetail->setEnabled(TRUE); + mRadioTerrainDetail->setEnabled(true); } // *HACK just checks to see if we can use shaders... @@ -563,9 +571,52 @@ void LLPanelDisplay::refreshEnabledState() mCtrlWindLight->setEnabled(fCtrlWindLightEnable && (!gRlvHandler.hasBehaviour(RLV_BHVR_SETENV) || !mWindLight)); // [/RLVa:KB] - // turn off sky detail if atmostpherics isn't on - mCtrlSkyFactor->setEnabled(gSavedSettings.getBOOL("WindLightUseAtmosShaders")); - mSkyFactorText->setEnabled(gSavedSettings.getBOOL("WindLightUseAtmosShaders")); + // turn off sky detail if atmospherics isn't on + mCtrlSkyFactor->setEnabled(wlatmos); + mSkyFactorText->setEnabled(wlatmos); + + // Avatar Mode and FBO + if (render_deferred && wlatmos && shaders) + { + childSetEnabled("fbo", false); + childSetValue("fbo", true); + mCtrlAvatarVP->setEnabled(false); + gSavedSettings.setBOOL("RenderAvatarVP", true); + } + else if (!shaders) + { + childSetEnabled("fbo", gGLManager.mHasFramebufferObject); + mCtrlAvatarVP->setEnabled(false); + gSavedSettings.setBOOL("RenderAvatarVP", false); + } + else + { + childSetEnabled("fbo", gGLManager.mHasFramebufferObject); + mCtrlAvatarVP->setEnabled(true); + } + + // Hardware tab + S32 min_tex_mem = LLViewerTextureList::getMinVideoRamSetting(); + S32 max_tex_mem = LLViewerTextureList::getMaxVideoRamSetting(); + childSetMinValue("GrapicsCardTextureMemory", min_tex_mem); + childSetMaxValue("GrapicsCardTextureMemory", max_tex_mem); + + if (!LLFeatureManager::getInstance()->isFeatureAvailable("RenderVBOEnable") || + !gGLManager.mHasVertexBufferObject) + { + childSetEnabled("vbo", false); + //Streaming VBOs -Shyotl + childSetEnabled("vbo_stream", false); + } + else + { + childSetEnabled("vbo_stream", LLVertexBuffer::sEnableVBOs); + } + + // if no windlight shaders, enable gamma, and fog distance + childSetEnabled("gamma",!wlatmos); + childSetEnabled("fog", !wlatmos); + childSetVisible("note", wlatmos); // now turn off any features that are unavailable disableUnavailableSettings(); @@ -812,6 +863,15 @@ void LLPanelDisplay::cancel() gSavedSettings.setU32("WLSkyDetail", mSkyLOD); gSavedSettings.setS32("RenderMaxPartCount", mParticleCount); gSavedSettings.setS32("RenderGlowResolutionPow", mPostProcess); + + // Hardware tab + gSavedSettings.setBOOL("RenderVBOEnable", mUseVBO); + gSavedSettings.setBOOL("RenderUseFBO", mUseFBO); + gSavedSettings.setBOOL("RenderAnisotropic", mUseAniso); + gSavedSettings.setU32("RenderFSAASamples", mFSAASamples); + gSavedSettings.setF32("RenderGamma", mGamma); + gSavedSettings.setS32("TextureMemory", mVideoCardMem); + gSavedSettings.setF32("RenderFogRatio", mFogRatio); } void LLPanelDisplay::apply() @@ -823,6 +883,21 @@ void LLPanelDisplay::apply() { applyWindowSize(); } + + // Hardware tab + //Still do a bit of voodoo here. V2 forces restart to change FSAA with FBOs off. + //Let's not do that, and instead do pre-V2 FSAA change handling for that particular case + if(!LLRenderTarget::sUseFBO && (mFSAASamples != (U32)childGetValue("fsaa").asInteger())) + { + bool logged_in = (LLStartUp::getStartupState() >= STATE_STARTED); + LLWindow* window = gViewerWindow->getWindow(); + LLCoordScreen size; + window->getSize(&size); + gViewerWindow->changeDisplaySettings(window->getFullscreen(), + size, + gSavedSettings.getBOOL("DisableVerticalSync"), + logged_in); + } } void LLPanelDisplay::onChangeQuality(LLUICtrl *ctrl, void *data) @@ -856,11 +931,6 @@ void LLPanelDisplay::onOpenHelp(void* user_data) LLNotifications::instance().add(parent_floater->contextualNotification(xml_alert)); } -void LLPanelDisplay::onOpenHardwareSettings(void* user_data) -{ - LLFloaterHardwareSettings::show(); -} - void LLPanelDisplay::onApplyResolution(LLUICtrl* src, void* user_data) { ((LLPanelDisplay*) src)->applyResolution(); @@ -1037,6 +1107,15 @@ void LLPanelDisplay::onVertexShaderEnable(LLUICtrl* self, void* data) LLFloaterPreference::refreshEnabledGraphics(); } +//static +void LLPanelDisplay::onRenderVBOEnable(LLUICtrl* self, void* data) +{ + LLPanelDisplay* panel = (LLPanelDisplay*)data; + bool enable = panel->childGetValue("vbo").asBoolean(); + panel->childSetEnabled("vbo_stream", enable); + if(!enable) panel->childSetValue("vbo_stream", false); +} + void LLPanelDisplay::setHardwareDefaults(void* user_data) { LLFeatureManager::getInstance()->applyRecommendedSettings(); diff --git a/indra/newview/llpaneldisplay.h b/indra/newview/llpaneldisplay.h index 234c785b6..185263f9f 100644 --- a/indra/newview/llpaneldisplay.h +++ b/indra/newview/llpaneldisplay.h @@ -185,6 +185,15 @@ protected: S32 mParticleCount; S32 mPostProcess; + // Hardware tab + BOOL mUseVBO; + BOOL mUseFBO; + BOOL mUseAniso; + U32 mFSAASamples; + F32 mGamma; + S32 mVideoCardMem; + F32 mFogRatio; + static void setGraphicsSettings(LLControlGroup& group); static void createGroup(); @@ -195,7 +204,6 @@ protected: static void onChangeCustom(LLUICtrl *ctrl, void *data); static void onOpenHelp(void *data); - static void onOpenHardwareSettings(void *data); static void onCommitAutoDetectAspect(LLUICtrl *ctrl, void *data); static void onKeystrokeAspectRatio(LLLineEditor* caller, void* user_data); static void onSelectAspectRatio(LLUICtrl*, void*); @@ -210,6 +218,9 @@ protected: // callback for when client turns on shaders static void onVertexShaderEnable(LLUICtrl*, void*); + // callbacks for hardware tab + static void onRenderVBOEnable(LLUICtrl*, void*); + // helper function static void fractionFromDecimal(F32 decimal_val, S32& numerator, S32& denominator); }; diff --git a/indra/newview/llpanelobjectinventory.cpp b/indra/newview/llpanelobjectinventory.cpp index 31cb8bcc8..c78f3ce21 100644 --- a/indra/newview/llpanelobjectinventory.cpp +++ b/indra/newview/llpanelobjectinventory.cpp @@ -707,14 +707,13 @@ void LLTaskInvFVBridge::buildContextMenu(LLMenuGL& menu, U32 flags) return; } - // *TODO: Translate if(gAgent.allowOperation(PERM_OWNER, item->getPermissions(), GP_OBJECT_MANIPULATE) && item->getSaleInfo().isForSale()) { items.push_back(std::string("Task Buy")); - std::string label("Buy"); + std::string label= LLTrans::getString("Buy"); // Check the price of the item. S32 price = getPrice(); if (-1 == price) @@ -1072,13 +1071,12 @@ void LLTaskSoundBridge::buildContextMenu(LLMenuGL& menu, U32 flags) std::vector items; std::vector disabled_items; - // *TODO: Translate if(item->getPermissions().getOwner() != gAgent.getID() && item->getSaleInfo().isForSale()) { items.push_back(std::string("Task Buy")); - std::string label("Buy"); + std::string label= LLTrans::getString("Buy"); // Check the price of the item. S32 price = getPrice(); if (-1 == price) @@ -1905,24 +1903,23 @@ void LLPanelObjectInventory::draw() if(mIsInventoryEmpty) { - // *TODO: Translate if((LLUUID::null != mTaskUUID) && (!mHaveInventory)) { - LLFontGL::getFontSansSerif()->renderUTF8(std::string("Loading contents..."), 0, - (S32)(getRect().getWidth() * 0.5f), - 10, - LLColor4( 1, 1, 1, 1 ), - LLFontGL::HCENTER, - LLFontGL::BOTTOM); + LLFontGL::getFontSansSerif()->renderUTF8(LLTrans::getString("LoadingContents"), 0, + (S32)(getRect().getWidth() * 0.5f), + 10, + LLColor4( 1, 1, 1, 1 ), + LLFontGL::HCENTER, + LLFontGL::BOTTOM); } else if(mHaveInventory) { - LLFontGL::getFontSansSerif()->renderUTF8(std::string("No contents"), 0, - (S32)(getRect().getWidth() * 0.5f), - 10, - LLColor4( 1, 1, 1, 1 ), - LLFontGL::HCENTER, - LLFontGL::BOTTOM); + LLFontGL::getFontSansSerif()->renderUTF8(LLTrans::getString("NoContents"), 0, + (S32)(getRect().getWidth() * 0.5f), + 10, + LLColor4( 1, 1, 1, 1 ), + LLFontGL::HCENTER, + LLFontGL::BOTTOM); } } } diff --git a/indra/newview/llprefsim.cpp b/indra/newview/llprefsim.cpp index e0eee0c72..ac803a6e7 100644 --- a/indra/newview/llprefsim.cpp +++ b/indra/newview/llprefsim.cpp @@ -53,8 +53,6 @@ #include "rlvhandler.h" // [/RLVa:KB] -class AIDirPicker; - class LLPrefsIMImpl : public LLPanel { public: @@ -269,6 +267,7 @@ void LLPrefsIMImpl::setPersonalInfo(const std::string& visibility, bool im_via_e childEnable("log_chat_timestamp"); childEnable("log_chat_IM"); childEnable("log_date_timestamp"); + childEnable("logfile_name_datestamp"); //RN: get wide string so replace char can work (requires fixed-width encoding) LLWString busy_response = utf8str_to_wstring( gSavedPerAccountSettings.getString("BusyModeResponse") ); diff --git a/indra/newview/llpreviewscript.cpp b/indra/newview/llpreviewscript.cpp index c7850b9c9..baf963d68 100644 --- a/indra/newview/llpreviewscript.cpp +++ b/indra/newview/llpreviewscript.cpp @@ -1290,9 +1290,8 @@ LLPreviewLSL::LLPreviewLSL(const std::string& name, const LLRect& rect, void LLPreviewLSL::callbackLSLCompileSucceeded() { llinfos << "LSL Bytecode saved" << llendl; - // *TODO: Translate - mScriptEd->mErrorList->addCommentText(std::string("Compile successful!")); - mScriptEd->mErrorList->addCommentText(std::string("Save complete.")); + mScriptEd->mErrorList->addCommentText(LLTrans::getString("CompileSuccessful")); + mScriptEd->mErrorList->addCommentText(LLTrans::getString("SaveComplete")); closeIfNeeded(); } @@ -1890,9 +1889,8 @@ void LLLiveLSLEditor::callbackLSLCompileSucceeded(const LLUUID& task_id, bool is_script_running) { lldebugs << "LSL Bytecode saved" << llendl; - // *TODO: Translate - mScriptEd->mErrorList->addCommentText(std::string("Compile successful!")); - mScriptEd->mErrorList->addCommentText(std::string("Save complete.")); + mScriptEd->mErrorList->addCommentText(LLTrans::getString("CompileSuccessful")); + mScriptEd->mErrorList->addCommentText(LLTrans::getString("SaveComplete")); closeIfNeeded(); } @@ -2244,8 +2242,7 @@ void LLLiveLSLEditor::draw() { // HACK: Display this information in the title bar. // Really ought to put in main window. - // *TODO: Translate - setTitle(std::string("Script (object out of range)")); + setTitle(LLTrans::getString("ObjectOutOfRange")); runningCheckbox->setEnabled(FALSE); // object may have fallen out of range. mHaveRunningInfo = FALSE; @@ -2468,8 +2465,7 @@ void LLLiveLSLEditor::uploadAssetLegacy(const std::string& filename, else { llinfos << "Compile worked!" << llendl; - // *TODO: Translate - mScriptEd->mErrorList->addCommentText(std::string("Compile successful, saving...")); + mScriptEd->mErrorList->addCommentText(LLTrans::getString("CompileSuccessfulSaving")); if(gAssetStorage) { llinfos << "LLLiveLSLEditor::saveAsset " @@ -2543,8 +2539,7 @@ void LLLiveLSLEditor::onSaveBytecodeComplete(const LLUUID& asset_uuid, void* use if(self) { // Tell the user that the compile worked. - // *TODO: Translate - self->mScriptEd->mErrorList->addCommentText(std::string("Save complete.")); + self->mScriptEd->mErrorList->addCommentText(LLTrans::getString("SaveComplete")); // close the window if this completes both uploads self->getWindow()->decBusyCount(); self->mPendingUploads--; diff --git a/indra/newview/llpreviewtexture.cpp b/indra/newview/llpreviewtexture.cpp index 8bcf0dd2a..d4b0d7099 100644 --- a/indra/newview/llpreviewtexture.cpp +++ b/indra/newview/llpreviewtexture.cpp @@ -39,6 +39,7 @@ #include "llcombobox.h" #include "statemachine/aifilepicker.h" #include "llfloaterinventory.h" +#include "llimagepng.h" #include "llimagetga.h" #include "llinventory.h" #include "llnotificationsutil.h" @@ -375,17 +376,27 @@ BOOL LLPreviewTexture::canSaveAs() const return mIsCopyable && !mLoadingFullImage && mImage.notNull() && !mImage->isMissingAsset(); } +static bool sPng(false); // virtual -void LLPreviewTexture::saveAs() +void LLPreviewTexture::saveAsType(BOOL png) { if( mLoadingFullImage ) return; const LLViewerInventoryItem* item = getItem() ; AIFilePicker* filepicker = AIFilePicker::create(); - filepicker->open(item ? LLDir::getScrubbedFileName(item->getName()) + ".tga" : LLStringUtil::null, FFSAVE_TGA, "", "image"); - filepicker->run(boost::bind(&LLPreviewTexture::saveAs_continued, this, item, filepicker)); + sPng = png; + if(png) + { + filepicker->open(item ? LLDir::getScrubbedFileName(item->getName()) + ".png" : LLStringUtil::null, FFSAVE_PNG, "", "image"); + filepicker->run(boost::bind(&LLPreviewTexture::saveAs_continued, this, item, filepicker)); + } + else + { + filepicker->open(item ? LLDir::getScrubbedFileName(item->getName()) + ".tga" : LLStringUtil::null, FFSAVE_TGA, "", "image"); + filepicker->run(boost::bind(&LLPreviewTexture::saveAs_continued, this, item, filepicker)); + } } void LLPreviewTexture::saveAs_continued(LLViewerInventoryItem const* item, AIFilePicker* filepicker) @@ -433,14 +444,16 @@ void LLPreviewTexture::onFileLoadedForSave(BOOL success, if( self && final && success ) { + //FIXME: There has to be a better way + LLPointer image_png = new LLImagePNG; LLPointer image_tga = new LLImageTGA; - if( !image_tga->encode( src ) ) + if( sPng ? !image_png->encode( src, 0.0 ) : !image_tga->encode( src ) ) { LLSD args; args["FILE"] = self->mSaveFileName; LLNotificationsUtil::add("CannotEncodeFile", args); } - else if( !image_tga->save( self->mSaveFileName ) ) + else if( sPng ? !image_png->save( self->mSaveFileName ) : !image_tga->save( self->mSaveFileName ) ) { LLSD args; args["FILE"] = self->mSaveFileName; diff --git a/indra/newview/llpreviewtexture.h b/indra/newview/llpreviewtexture.h index ce26d4dd4..bb20af473 100644 --- a/indra/newview/llpreviewtexture.h +++ b/indra/newview/llpreviewtexture.h @@ -64,7 +64,8 @@ public: virtual void draw(); virtual BOOL canSaveAs() const; - virtual void saveAs(); + virtual void saveAs(){ saveAsType(false); } + void saveAsType(BOOL png); void saveAs_continued(LLViewerInventoryItem const* item, AIFilePicker* filepicker); virtual LLUUID getItemID(); virtual std::string getItemCreatorName(); diff --git a/indra/newview/llscrollingpanelparam.cpp b/indra/newview/llscrollingpanelparam.cpp index 88127e68f..7afcf82c4 100644 --- a/indra/newview/llscrollingpanelparam.cpp +++ b/indra/newview/llscrollingpanelparam.cpp @@ -77,9 +77,8 @@ LLScrollingPanelParam::LLScrollingPanelParam( const std::string& name, mHintMin->setAllowsUpdates( FALSE ); mHintMax->setAllowsUpdates( FALSE ); - // *TODO::translate - std::string min_name = param->getMinDisplayName(); - std::string max_name = param->getMaxDisplayName(); + std::string min_name = LLTrans::getString(param->getMinDisplayName()); + std::string max_name = LLTrans::getString(param->getMaxDisplayName()); childSetValue("min param text", min_name); childSetValue("max param text", max_name); mLess = getChild("less"); diff --git a/indra/newview/llstatusbar.cpp b/indra/newview/llstatusbar.cpp index 987dbee5c..f9af3a2a9 100644 --- a/indra/newview/llstatusbar.cpp +++ b/indra/newview/llstatusbar.cpp @@ -122,6 +122,7 @@ static void onClickFly(void*); static void onClickPush(void*); static void onClickVoice(void*); static void onClickBuild(void*); +static void onClickSeeAV(void*); static void onClickScripts(void*); static void onClickBuyLand(void*); static void onClickScriptDebug(void*); @@ -168,6 +169,7 @@ mSquareMetersCommitted(0) childSetAction("buyland", onClickBuyLand, this ); childSetAction("buycurrency", onClickBuyCurrency, this ); childSetAction("no_build", onClickBuild, this ); + childSetAction("status_SeeAV", onClickSeeAV, this ); childSetAction("no_scripts", onClickScripts, this ); childSetAction("restrictpush", onClickPush, this ); childSetAction("status_no_voice", onClickVoice, this ); @@ -831,6 +833,11 @@ static void onClickBuild(void*) LLNotificationsUtil::add("NoBuild"); } +static void onClickSeeAV(void*) +{ + LLNotificationsUtil::add("SeeAvatars"); +} + static void onClickScripts(void*) { LLViewerRegion* region = gAgent.getRegion(); diff --git a/indra/newview/lltexturectrl.cpp b/indra/newview/lltexturectrl.cpp index e39f3b7df..990a7228a 100644 --- a/indra/newview/lltexturectrl.cpp +++ b/indra/newview/lltexturectrl.cpp @@ -1099,7 +1099,7 @@ LLTextureCtrl::LLTextureCtrl( LLRect( 0, image_middle + line_height / 2, getRect().getWidth(), image_middle - line_height / 2 ), - std::string("Multiple"), + LLTrans::getString("multiple_textures"), LLFontGL::getFontSansSerifSmall() ); mTentativeLabel->setHAlign( LLFontGL::HCENTER ); mTentativeLabel->setFollowsAll(); diff --git a/indra/newview/lltoolpie.cpp b/indra/newview/lltoolpie.cpp index 71d3b049b..0dc00f826 100644 --- a/indra/newview/lltoolpie.cpp +++ b/indra/newview/lltoolpie.cpp @@ -40,7 +40,6 @@ #include "llagent.h" #include "llagentcamera.h" -#include "llviewercontrol.h" #include "llfocusmgr.h" #include "llfirstuse.h" #include "llfloateravatarinfo.h" @@ -56,8 +55,10 @@ #include "lltoolgrab.h" #include "lltoolmgr.h" #include "lltoolselect.h" +#include "lltrans.h" #include "llviewercamera.h" #include "llviewerparcelmedia.h" +#include "llviewercontrol.h" #include "llviewermenu.h" #include "llviewerobjectlist.h" #include "llviewerobject.h" @@ -65,8 +66,8 @@ #include "llviewerwindow.h" #include "llwindow.h" #include "llviewermedia.h" -#include "llviewermediafocus.h" #include "llvoavatarself.h" +#include "llviewermediafocus.h" #include "llworld.h" #include "llui.h" #include "llweb.h" @@ -401,12 +402,12 @@ BOOL LLToolPie::pickAndShowMenu(BOOL always_show) std::string name = avatar->getFullname(); if (LLMuteList::getInstance()->isMuted(avatar->getID(), name)) { - gMenuHolder->childSetText("Avatar Mute", std::string("Unmute")); // *TODO:Translate + gMenuHolder->childSetText("Avatar Mute", LLTrans::getString("UnmuteAvatar")); //gMutePieMenu->setLabel("Unmute"); } else { - gMenuHolder->childSetText("Avatar Mute", std::string("Mute")); // *TODO:Translate + gMenuHolder->childSetText("Avatar Mute", LLTrans::getString("MuteAvatar")); //gMutePieMenu->setLabel("Mute"); } @@ -451,12 +452,12 @@ BOOL LLToolPie::pickAndShowMenu(BOOL always_show) } if (LLMuteList::getInstance()->isMuted(object->getID(), name)) { - gMenuHolder->childSetText("Object Mute", std::string("Unmute")); // *TODO:Translate + gMenuHolder->childSetText("Object Mute", LLTrans::getString("UnmuteObject")); //gMuteObjectPieMenu->setLabel("Unmute"); } else { - gMenuHolder->childSetText("Object Mute", std::string("Mute")); // *TODO:Translate + gMenuHolder->childSetText("Object Mute", LLTrans::getString("MuteObject2")); //gMuteObjectPieMenu->setLabel("Mute"); } diff --git a/indra/newview/llviewerdisplay.cpp b/indra/newview/llviewerdisplay.cpp index 2279197e5..291d3a3fe 100644 --- a/indra/newview/llviewerdisplay.cpp +++ b/indra/newview/llviewerdisplay.cpp @@ -440,7 +440,7 @@ void display(BOOL rebuild, F32 zoom_factor, int subfield, BOOL for_snapshot, boo case LLAgent::TELEPORT_START_ARRIVAL: // Transition to ARRIVING. Viewer has received avatar update, etc., from destination simulator gTeleportArrivalTimer.reset(); - gViewerWindow->setProgressCancelButtonVisible(FALSE, std::string("Cancel")); //TODO: Translate + gViewerWindow->setProgressCancelButtonVisible(FALSE, LLTrans::getString("Cancel")); gViewerWindow->setProgressPercent(75.f); gAgent.setTeleportState( LLAgent::TELEPORT_ARRIVING ); gAgent.setTeleportMessage( @@ -459,7 +459,7 @@ void display(BOOL rebuild, F32 zoom_factor, int subfield, BOOL for_snapshot, boo LLFirstUse::useTeleport(); gAgent.setTeleportState( LLAgent::TELEPORT_NONE ); } - gViewerWindow->setProgressCancelButtonVisible(FALSE, std::string("Cancel")); //TODO: Translate + gViewerWindow->setProgressCancelButtonVisible(FALSE, LLTrans::getString("Cancel")); gViewerWindow->setProgressPercent( arrival_fraction * 25.f + 75.f); gViewerWindow->setProgressString(message); } diff --git a/indra/newview/llviewermenufile.cpp b/indra/newview/llviewermenufile.cpp index 63a9e002a..8f3019121 100644 --- a/indra/newview/llviewermenufile.cpp +++ b/indra/newview/llviewermenufile.cpp @@ -46,6 +46,7 @@ #include "llsdserialize.h" #include "llsdutil.h" #include "llstring.h" +#include "lltrans.h" #include "lltransactiontypes.h" #include "lluictrlfactory.h" #include "lluuid.h" @@ -94,6 +95,7 @@ #include "lllocalinventory.h" // +#include "hippogridmanager.h" #include "importtracker.h" using namespace LLOldEvents; @@ -502,6 +504,19 @@ class LLFileSavePreview : public view_listener_t } }; +class LLFileSavePreviewPNG : public view_listener_t +{ + bool handleEvent(LLPointer event, const LLSD& userdata) + { + LLFloater* top = gFloaterView->getFrontmost(); + if (top) + { + top->saveAsType(true); + } + return true; + } +}; + class LLFileTakeSnapshot : public view_listener_t { bool handleEvent(LLPointer event, const LLSD& userdata) @@ -855,8 +870,7 @@ void upload_new_resource(const std::string& src_filename, std::string name, else { // Unknown extension - // *TODO: Translate? - error_message = llformat("Unknown file extension .%s\nExpected .wav, .tga, .bmp, .jpg, .jpeg, or .bvh", exten.c_str()); + error_message = llformat(LLTrans::getString("UnknownFileExtension").c_str(), exten.c_str()); error = TRUE;; } @@ -1021,10 +1035,11 @@ void upload_done_callback(const LLUUID& uuid, void* user_data, S32 result, LLExt if(!(can_afford_transaction(expected_upload_cost))) { - LLFloaterBuyCurrency::buyCurrency( - llformat("Uploading %s costs", - data->mAssetInfo.getName().c_str()), // *TODO: Translate - expected_upload_cost); + LLStringUtil::format_map_t args; + args["[NAME]"] = data->mAssetInfo.getName(); + args["[CURRENCY]"] = gHippoGridManager->getConnectedGrid()->getCurrencySymbol(); + args["[AMOUNT]"] = llformat("%d", expected_upload_cost); + LLFloaterBuyCurrency::buyCurrency( LLTrans::getString("UploadingCosts", args), expected_upload_cost ); is_balance_sufficient = FALSE; } else if(region) @@ -1311,6 +1326,7 @@ void init_menu_file() (new LLFileMinimizeAllWindows())->registerListener(gMenuHolder, "File.MinimizeAllWindows"); // (new LLFileSavePreview())->registerListener(gMenuHolder, "File.SavePreview"); + (new LLFileSavePreviewPNG())->registerListener(gMenuHolder, "File.SavePreviewPNG"); (new LLFileTakeSnapshot())->registerListener(gMenuHolder, "File.TakeSnapshot"); (new LLFileTakeSnapshotToDisk())->registerListener(gMenuHolder, "File.TakeSnapshotToDisk"); (new LLFileQuit())->registerListener(gMenuHolder, "File.Quit"); diff --git a/indra/newview/llviewermessage.cpp b/indra/newview/llviewermessage.cpp index bebc154b1..6b1ffbdfd 100644 --- a/indra/newview/llviewermessage.cpp +++ b/indra/newview/llviewermessage.cpp @@ -1410,7 +1410,6 @@ bool LLOfferInfo::inventory_offer_callback(const LLSD& notification, const LLSD& itemp = (LLViewerInventoryItem*)gInventory.getItem(mObjectID); } - // *TODO:translate std::string from_string; // Used in the pop-up. std::string chatHistory_string; // Used in chat history. if (mFromObject == TRUE) @@ -1420,13 +1419,18 @@ bool LLOfferInfo::inventory_offer_callback(const LLSD& notification, const LLSD& std::string group_name; if (gCacheName->getGroupName(mFromID, group_name)) { - from_string = std::string("An object named '") + mFromName + "' owned by the group '" + group_name + "'"; - chatHistory_string = mFromName + " owned by the group '" + group_name + "'"; + from_string = LLTrans::getString("InvOfferAnObjectNamed") + " " + LLTrans::getString("'") + + mFromName + LLTrans::getString("'") + " " + LLTrans::getString("InvOfferOwnedByGroup") + + " " + LLTrans::getString("'") + group_name + LLTrans::getString("'"); + + chatHistory_string = mFromName + " " + LLTrans::getString("InvOfferOwnedByGroup") + + " " + group_name + LLTrans::getString("'") + LLTrans::getString("."); } else { - from_string = std::string("An object named '") + mFromName + "' owned by an unknown group"; - chatHistory_string = mFromName + " owned by an unknown group"; + from_string = LLTrans::getString("InvOfferAnObjectNamed") + " " + LLTrans::getString("'") + + mFromName + LLTrans::getString("'") + " " + LLTrans::getString("InvOfferOwnedByUnknownGroup"); + chatHistory_string = mFromName + " " + LLTrans::getString("InvOfferOwnedByUnknownGroup") + LLTrans::getString("."); } } else @@ -1439,16 +1443,19 @@ bool LLOfferInfo::inventory_offer_callback(const LLSD& notification, const LLSD& { full_name = RlvStrings::getAnonym(full_name); } - from_string = std::string("An object named '") + mFromName + "' owned by " + full_name; - chatHistory_string = mFromName + " owned by " + full_name; + from_string = LLTrans::getString("InvOfferAnObjectNamed") + " " + LLTrans::getString("'") + mFromName + + LLTrans::getString("'") +" " + LLTrans::getString("InvOfferOwnedBy") + full_name; + chatHistory_string = mFromName + " " + LLTrans::getString("InvOfferOwnedBy") + " " + full_name + LLTrans::getString("."); // [/RLVa:KB] //from_string = std::string("An object named '") + mFromName + "' owned by " + first_name + " " + last_name; //chatHistory_string = mFromName + " owned by " + first_name + " " + last_name; } else { - from_string = std::string("An object named '") + mFromName + "' owned by an unknown user"; - chatHistory_string = mFromName + " owned by an unknown user"; + + from_string = LLTrans::getString("InvOfferAnObjectNamed") + " " + LLTrans::getString("'") + + mFromName + LLTrans::getString("'") + " " + LLTrans::getString("InvOfferOwnedByUnknownUser"); + chatHistory_string = mFromName + " " + LLTrans::getString("InvOfferOwnedByUnknownUser") + LLTrans::getString("."); } } } @@ -1504,7 +1511,7 @@ bool LLOfferInfo::inventory_offer_callback(const LLSD& notification, const LLSD& //don't spam them if they are getting flooded if (check_offer_throttle(mFromName, true)) { - log_message = chatHistory_string + " gave you " + mDesc + "."; + log_message = chatHistory_string + " " + LLTrans::getString("InvOfferGaveYou") + " " + mDesc + LLTrans::getString("."); chat.mText = log_message; LLFloaterChat::addChatHistory(chat); } @@ -1590,7 +1597,10 @@ bool LLOfferInfo::inventory_offer_callback(const LLSD& notification, const LLSD& } // [/RLVa:KB] - log_message = "You decline " + mDesc + " from " + mFromName + "."; + LLStringUtil::format_map_t log_message_args; + log_message_args["[DESC]"] = mDesc; + log_message_args["[NAME]"] = mFromName; + log_message = LLTrans::getString("InvOfferDecline", log_message_args); chat.mText = log_message; if( LLMuteList::getInstance()->isMuted(mFromID ) && ! LLMuteList::getInstance()->isLinden(mFromName) ) // muting for SL-42269 { @@ -1638,7 +1648,7 @@ bool LLOfferInfo::inventory_offer_callback(const LLSD& notification, const LLSD& void inventory_offer_handler(LLOfferInfo* info, BOOL from_task) { - //Until throttling is implmented, busy mode should reject inventory instead of silently + //Until throttling is implemented, busy mode should reject inventory instead of silently //accepting it. SEE SL-39554 if (gAgent.getBusy()) { @@ -1648,7 +1658,7 @@ void inventory_offer_handler(LLOfferInfo* info, BOOL from_task) // NaCl - Antispam Registry static LLCachedControl antispam(gSavedSettings,"_NACL_Antispam"); - if(antispam || NACLAntiSpamRegistry::checkQueue((U32)NACLAntiSpamRegistry::QUEUE_INVENTORY,info->mFromID)) + if(antispam || gSavedSettings.getBOOL("AntiSpamItemOffers") || NACLAntiSpamRegistry::checkQueue((U32)NACLAntiSpamRegistry::QUEUE_INVENTORY,info->mFromID)) return; // NaCl End //If muted, don't even go through the messaging stuff. Just curtail the offer here. @@ -1933,24 +1943,27 @@ void process_improved_im(LLMessageSystem *msg, void **user_data) //msg->getData("MessageBlock", "Count", &count); msg->getStringFast(_PREHASH_MessageBlock, _PREHASH_FromAgentName, name); msg->getStringFast(_PREHASH_MessageBlock, _PREHASH_Message, message); - // NaCl - Newline flood protection - LLViewerObject* obj=gObjectList.findObject(from_id); - if(!from_id.isNull() //Not from nothing. - && gAgent.getID() != from_id //Not from self. - && !(obj && obj->permYouOwner())) //Not from own object. - { - static LLCachedControl SpamNewlines(gSavedSettings,"_NACL_AntiSpamNewlines"); - boost::sregex_iterator iter(message.begin(), message.end(), NEWLINES); - if((U32)std::abs(std::distance(iter, boost::sregex_iterator())) > SpamNewlines) - { - NACLAntiSpamRegistry::blockOnQueue((U32)NACLAntiSpamRegistry::QUEUE_IM,from_id); - LLSD args; - args["MESSAGE"] = "Message: Blocked newline flood from "+from_id.asString(); - LLNotificationsUtil::add("SystemMessageTip", args); - return; - } - } - // NaCl End + // NaCl - Newline flood protection + LLViewerObject* obj=gObjectList.findObject(from_id); + if(!from_id.isNull() //Not from nothing. + && gAgent.getID() != from_id //Not from self. + && !(obj && obj->permYouOwner())) //Not from own object. + { + static LLCachedControl SpamNewlines(gSavedSettings,"_NACL_AntiSpamNewlines"); + boost::sregex_iterator iter(message.begin(), message.end(), NEWLINES); + if((U32)std::abs(std::distance(iter, boost::sregex_iterator())) > SpamNewlines) + { + NACLAntiSpamRegistry::blockOnQueue((U32)NACLAntiSpamRegistry::QUEUE_IM,from_id); + if(gSavedSettings.getBOOL("AntiSpamNotify")) + { + LLSD args; + args["MESSAGE"] = "Message: Blocked newline flood from "+from_id.asString(); + LLNotificationsUtil::add("SystemMessageTip", args); + } + return; + } + } + // NaCl End msg->getU32Fast(_PREHASH_MessageBlock, _PREHASH_ParentEstateID, parent_estate_id); msg->getUUIDFast(_PREHASH_MessageBlock, _PREHASH_RegionID, region_id); msg->getVector3Fast(_PREHASH_MessageBlock, _PREHASH_Position, position); @@ -1959,10 +1972,10 @@ void process_improved_im(LLMessageSystem *msg, void **user_data) EInstantMessage dialog = (EInstantMessage)d; // NaCl - Antispam Registry - if((dialog != IM_TYPING_START && dialog != IM_TYPING_STOP) - && NACLAntiSpamRegistry::checkQueue((U32)NACLAntiSpamRegistry::QUEUE_IM,from_id)) - return; - // NaCl End + if((dialog != IM_TYPING_START && dialog != IM_TYPING_STOP) + && NACLAntiSpamRegistry::checkQueue((U32)NACLAntiSpamRegistry::QUEUE_IM,from_id)) + return; + // NaCl End // make sure that we don't have an empty or all-whitespace name LLStringUtil::trim(name); @@ -2032,7 +2045,7 @@ void process_improved_im(LLMessageSystem *msg, void **user_data) computed_session_id, from_id, name, - llformat("%s has begun an IM session with you.",name.c_str()), + llformat("%s ",name.c_str()) + LLTrans::getString("IM_announce_incoming"), name, IM_NOTHING_SPECIAL, parent_estate_id, @@ -2057,8 +2070,8 @@ void process_improved_im(LLMessageSystem *msg, void **user_data) LLAvatarTracker::instance().getBuddyInfo(from_id) == NULL ) do_auto_response = true; - if( is_muted && !gSavedPerAccountSettings.getBOOL("AscentInstantMessageResponseMuted") ) - do_auto_response = false; + if( is_muted ) + do_auto_response = gSavedPerAccountSettings.getBOOL("AscentInstantMessageResponseMuted"); if( offline != IM_ONLINE ) do_auto_response = false; @@ -2096,7 +2109,7 @@ void process_improved_im(LLMessageSystem *msg, void **user_data) computed_session_id, from_id, SYSTEM_FROM, - llformat("Autoresponse sent to %s.",name.c_str()), + LLTrans::getString("IM_autoresponded_to") + llformat(" %s.",name.c_str()), LLStringUtil::null, IM_NOTHING_SPECIAL, parent_estate_id, @@ -2214,7 +2227,7 @@ void process_improved_im(LLMessageSystem *msg, void **user_data) computed_session_id, from_id, SYSTEM_FROM, - llformat("Sent %s auto-response item \"%s\"",name.c_str(),item->getName().c_str()), + llformat("%s %s \"%s\"",name.c_str(), LLTrans::getString("IM_autoresponse_sent_item").c_str(), item->getName().c_str()), LLStringUtil::null, IM_NOTHING_SPECIAL, parent_estate_id, @@ -2365,7 +2378,9 @@ void process_improved_im(LLMessageSystem *msg, void **user_data) std::string saved; if(offline == IM_OFFLINE) { - saved = llformat("(Saved %s) ", formatted_time(timestamp).c_str()); + LLStringUtil::format_map_t args; + args["[LONG_TIMESTAMP]"] = formatted_time(timestamp); + saved = LLTrans::getString("Saved_message", args); } buffer = separator_string + saved + message.substr(message_offset); @@ -2427,7 +2442,7 @@ void process_improved_im(LLMessageSystem *msg, void **user_data) case IM_GROUP_NOTICE_REQUESTED: { // NaCl - Antispam - if(antispam) + if(antispam || gSavedSettings.getBOOL("AntiSpamGroupNotices")) return; // NaCl End LL_INFOS("Messaging") << "Received IM_GROUP_NOTICE message." << LL_ENDL; @@ -2526,7 +2541,7 @@ void process_improved_im(LLMessageSystem *msg, void **user_data) case IM_GROUP_INVITATION: { // NaCl - Antispam - if(antispam) + if(antispam || gSavedSettings.getBOOL("AntiSpamGroupInvites")) return; // NaCl End //if (!is_linden && (is_busy || is_muted)) @@ -2574,7 +2589,7 @@ void process_improved_im(LLMessageSystem *msg, void **user_data) // Someone has offered us some inventory. { // NaCl - Antispam - if(antispam) + if(antispam || gSavedSettings.getBOOL("AntiSpamItemOffers")) return; // NaCl End LLOfferInfo* info = new LLOfferInfo; @@ -2829,10 +2844,10 @@ void process_improved_im(LLMessageSystem *msg, void **user_data) } break; case IM_FROM_TASK_AS_ALERT: - // NaCl - Antispam - if(antispam) - return; - // NaCl End + // NaCl - Antispam + if(antispam || (!is_owned_by_me && gSavedSettings.getBOOL("AntiSpamAlerts"))) + return; + // NaCl End if (is_busy && !is_owned_by_me) { return; @@ -2870,7 +2885,7 @@ void process_improved_im(LLMessageSystem *msg, void **user_data) case IM_LURE_USER: { - if(antispam) return; //NaCl Antispam + if(antispam || gSavedSettings.getBOOL("AntiSpamTeleports")) return; //NaCl Antispam // [RLVa:KB] - Checked: 2010-12-11 (RLVa-1.2.2c) | Added: RLVa-1.2.2c // If the lure sender is a specific @accepttp exception they will override muted and busy status bool fRlvSummon = (rlv_handler_t::isEnabled()) && (gRlvHandler.isException(RLV_BHVR_ACCEPTTP, from_id)); @@ -3011,10 +3026,6 @@ void process_improved_im(LLMessageSystem *msg, void **user_data) case IM_GOTO_URL: { - // NaCl - Antispam - if(antispam) - return; - // NaCl End LLSD args; // n.b. this is for URLs sent by the system, not for // URLs sent by scripts (i.e. llLoadURL) @@ -3040,7 +3051,7 @@ void process_improved_im(LLMessageSystem *msg, void **user_data) case IM_FRIENDSHIP_OFFERED: { // NaCl - Antispam - if(antispam) + if(antispam || gSavedSettings.getBOOL("AntiSpamFriendshipOffers")) return; // NaCl End LLSD payload; @@ -3179,7 +3190,7 @@ void process_offer_callingcard(LLMessageSystem* msg, void**) { // NaCl - Antispam static LLCachedControl antispam(gSavedSettings,"_NACL_Antispam"); - if(antispam) + if(antispam || gSavedSettings.getBOOL("AntiSpamFriendshipOffers")) return; // NaCl End // someone has offered to form a friendship @@ -3189,9 +3200,9 @@ void process_offer_callingcard(LLMessageSystem* msg, void**) msg->getUUIDFast(_PREHASH_AgentData, _PREHASH_AgentID, source_id); // NaCl - Antispam Registry - if(NACLAntiSpamRegistry::checkQueue((U32)NACLAntiSpamRegistry::QUEUE_CALLING_CARD,source_id)) - return; - // NaCl End + if(NACLAntiSpamRegistry::checkQueue((U32)NACLAntiSpamRegistry::QUEUE_CALLING_CARD,source_id)) + return; + // NaCl End LLUUID tid; msg->getUUIDFast(_PREHASH_AgentBlock, _PREHASH_TransactionID, tid); @@ -3379,13 +3390,12 @@ void process_chat_from_simulator(LLMessageSystem *msg, void **user_data) msg->getU8("ChatData", "ChatType", type_temp); chat.mChatType = (EChatType)type_temp; - - // NaCL - Antispam Registry - if((chat.mChatType != CHAT_TYPE_START && chat.mChatType != CHAT_TYPE_STOP) //Chat type isn't typing - &&((owner_id.isNull() && NACLAntiSpamRegistry::checkQueue((U32)NACLAntiSpamRegistry::QUEUE_CHAT,from_id)) //Spam from an object? - ||(NACLAntiSpamRegistry::checkQueue((U32)NACLAntiSpamRegistry::QUEUE_CHAT,owner_id)))) //Spam from a resident? - return; - // NaCl End + // NaCL - Antispam Registry + if((chat.mChatType != CHAT_TYPE_START && chat.mChatType != CHAT_TYPE_STOP) //Chat type isn't typing + &&((owner_id.isNull() && NACLAntiSpamRegistry::checkQueue((U32)NACLAntiSpamRegistry::QUEUE_CHAT,from_id)) //Spam from an object? + ||(NACLAntiSpamRegistry::checkQueue((U32)NACLAntiSpamRegistry::QUEUE_CHAT,owner_id)))) //Spam from a resident? + return; + // NaCl End msg->getU8Fast(_PREHASH_ChatData, _PREHASH_Audible, audible_temp); chat.mAudible = (EChatAudible)audible_temp; @@ -3507,23 +3517,26 @@ void process_chat_from_simulator(LLMessageSystem *msg, void **user_data) msg->getStringFast(_PREHASH_ChatData, _PREHASH_Message, mesg); // NaCl - Newline flood protection - LLViewerObject* obj=gObjectList.findObject(from_id); - if(!(from_id.isNull()) //Not from nothing. - || !(gAgent.getID() != from_id) //Not from self. - || !(obj && obj->permYouOwner())) //Not from own object. - { - static LLCachedControl SpamNewlines(gSavedSettings,"_NACL_AntiSpamNewlines"); - boost::sregex_iterator iter(mesg.begin(), mesg.end(), NEWLINES); - if((U32)std::abs(std::distance(iter, boost::sregex_iterator())) > SpamNewlines) - { - NACLAntiSpamRegistry::blockOnQueue((U32)NACLAntiSpamRegistry::QUEUE_CHAT,owner_id); - LLSD args; - args["MESSAGE"] = "Chat: Blocked newline flood from "+owner_id.asString(); - LLNotificationsUtil::add("SystemMessageTip", args); - return; - } - } - // NaCl End + LLViewerObject* obj=gObjectList.findObject(from_id); + if(!(from_id.isNull()) //Not from nothing. + || !(gAgent.getID() != from_id) //Not from self. + || !(obj && obj->permYouOwner())) //Not from own object. + { + static LLCachedControl SpamNewlines(gSavedSettings,"_NACL_AntiSpamNewlines"); + boost::sregex_iterator iter(mesg.begin(), mesg.end(), NEWLINES); + if((U32)std::abs(std::distance(iter, boost::sregex_iterator())) > SpamNewlines) + { + NACLAntiSpamRegistry::blockOnQueue((U32)NACLAntiSpamRegistry::QUEUE_CHAT,owner_id); + if(gSavedSettings.getBOOL("AntiSpamNotify")) + { + LLSD args; + args["MESSAGE"] = "Chat: Blocked newline flood from "+owner_id.asString(); + LLNotificationsUtil::add("SystemMessageTip", args); + } + return; + } + } + // NaCl End static std::map sChatObjectAuth; @@ -3893,7 +3906,7 @@ void process_teleport_start(LLMessageSystem *msg, void**) } else { - gViewerWindow->setProgressCancelButtonVisible(TRUE, std::string("Cancel")); // *TODO: Translate + gViewerWindow->setProgressCancelButtonVisible(TRUE, LLTrans::getString("Cancel")); } // Freeze the UI and show progress bar @@ -3932,7 +3945,7 @@ void process_teleport_progress(LLMessageSystem* msg, void**) } else { - gViewerWindow->setProgressCancelButtonVisible(TRUE, std::string("Cancel")); //TODO: Translate + gViewerWindow->setProgressCancelButtonVisible(TRUE, LLTrans::getString("Cancel")); } std::string buffer; msg->getString("Info", "Message", buffer); @@ -4842,19 +4855,18 @@ void process_sound_trigger(LLMessageSystem *msg, void **) msg->getUUIDFast(_PREHASH_SoundData, _PREHASH_ObjectID, object_id); // NaCl - Antispam Registry - /*if(owner_id.isNull()) - {*/ - bool bDoSpamCheck=1; - std::string sSound=sound_id.asString(); - static LLCachedControl _NACL_AntiSpamSoundMulti(gSavedSettings,"_NACL_AntiSpamSoundMulti"); - for(int i=0;i< COLLISION_SOUNDS_SIZE;i++) - if(COLLISION_SOUNDS[i] == sSound) - bDoSpamCheck=0; + static LLCachedControl _NACL_AntiSpamSoundMulti(gSavedSettings,"_NACL_AntiSpamSoundMulti"); + if(owner_id.isNull()) + { + bool bDoSpamCheck=1; + std::string sSound=sound_id.asString(); + for(int i=0;i< COLLISION_SOUNDS_SIZE;i++) + if(COLLISION_SOUNDS[i] == sSound) + bDoSpamCheck=0; if(bDoSpamCheck) - if(NACLAntiSpamRegistry::checkQueue((U32)NACLAntiSpamRegistry::QUEUE_SOUND,object_id, _NACL_AntiSpamSoundMulti,true)) return; - /*} - else - if(NACLAntiSpamRegistry::checkQueue("Soundspam",owner_id)) return;*/ + if(NACLAntiSpamRegistry::checkQueue((U32)NACLAntiSpamRegistry::QUEUE_SOUND,object_id, _NACL_AntiSpamSoundMulti)) return; + } + else if(NACLAntiSpamRegistry::checkQueue((U32)NACLAntiSpamRegistry::QUEUE_SOUND,owner_id, _NACL_AntiSpamSoundMulti)) return; // NaCl End msg->getUUIDFast(_PREHASH_SoundData, _PREHASH_ParentID, parent_id); @@ -4920,13 +4932,13 @@ void process_preload_sound(LLMessageSystem *msg, void **user_data) msg->getUUIDFast(_PREHASH_DataBlock, _PREHASH_ObjectID, object_id); msg->getUUIDFast(_PREHASH_DataBlock, _PREHASH_OwnerID, owner_id); - // NaCl - Antispam Registry - static LLCachedControl _NACL_AntiSpamSoundPreloadMulti(gSavedSettings,"_NACL_AntiSpamSoundPreloadMulti"); - if((owner_id.isNull() - && NACLAntiSpamRegistry::checkQueue((U32)NACLAntiSpamRegistry::QUEUE_SOUND_PRELOAD,object_id,_NACL_AntiSpamSoundPreloadMulti)) - || NACLAntiSpamRegistry::checkQueue((U32)NACLAntiSpamRegistry::QUEUE_SOUND_PRELOAD,owner_id,_NACL_AntiSpamSoundPreloadMulti)) - return; - // NaCl End + // NaCl - Antispam Registry + static LLCachedControl _NACL_AntiSpamSoundPreloadMulti(gSavedSettings,"_NACL_AntiSpamSoundPreloadMulti"); + if((owner_id.isNull() + && NACLAntiSpamRegistry::checkQueue((U32)NACLAntiSpamRegistry::QUEUE_SOUND_PRELOAD,object_id,_NACL_AntiSpamSoundPreloadMulti)) + || NACLAntiSpamRegistry::checkQueue((U32)NACLAntiSpamRegistry::QUEUE_SOUND_PRELOAD,owner_id,_NACL_AntiSpamSoundPreloadMulti)) + return; + // NaCl End LLViewerObject *objectp = gObjectList.findObject(object_id); if (!objectp) return; @@ -4964,12 +4976,12 @@ void process_attached_sound(LLMessageSystem *msg, void **user_data) msg->getUUIDFast(_PREHASH_DataBlock, _PREHASH_ObjectID, object_id); msg->getUUIDFast(_PREHASH_DataBlock, _PREHASH_OwnerID, owner_id); - // NaCl - Antispam Registry - if(/*owner_id.isNull() - &&*/ NACLAntiSpamRegistry::checkQueue((U32)NACLAntiSpamRegistry::QUEUE_SOUND,object_id)) - /*|| (NACLAntiSpamRegistry::checkQueue("Soundspam",owner_id))*/ - return; - // NaCl End + // NaCl - Antispam Registry + if((owner_id.isNull() + && NACLAntiSpamRegistry::checkQueue((U32)NACLAntiSpamRegistry::QUEUE_SOUND,object_id)) + || NACLAntiSpamRegistry::checkQueue((U32)NACLAntiSpamRegistry::QUEUE_SOUND,owner_id)) + return; + // NaCl End msg->getF32Fast(_PREHASH_DataBlock, _PREHASH_Gain, gain); msg->getU8Fast(_PREHASH_DataBlock, _PREHASH_Flags, flags); @@ -6235,7 +6247,7 @@ void process_script_question(LLMessageSystem *msg, void **user_data) { // NaCl - Antispam static LLCachedControl antispam(gSavedSettings,"_NACL_Antispam"); - if(antispam) + if(antispam || gSavedSettings.getBOOL("AntiSpamScripts")) return; // NaCl End // *TODO: Translate owner name -> [FIRST] [LAST] @@ -6253,12 +6265,12 @@ void process_script_question(LLMessageSystem *msg, void **user_data) // itemid -> script asset key of script requesting permissions msg->getUUIDFast(_PREHASH_Data, _PREHASH_ItemID, itemid ); - // NaCl - Antispam Registry - if((taskid.isNull() - && NACLAntiSpamRegistry::checkQueue((U32)NACLAntiSpamRegistry::QUEUE_SCRIPT_DIALOG,itemid)) - || NACLAntiSpamRegistry::checkQueue((U32)NACLAntiSpamRegistry::QUEUE_SCRIPT_DIALOG,taskid)) - return; - // NaCl End + // NaCl - Antispam Registry + if((taskid.isNull() + && NACLAntiSpamRegistry::checkQueue((U32)NACLAntiSpamRegistry::QUEUE_SCRIPT_DIALOG,itemid)) + || NACLAntiSpamRegistry::checkQueue((U32)NACLAntiSpamRegistry::QUEUE_SCRIPT_DIALOG,taskid)) + return; + // NaCl End msg->getStringFast(_PREHASH_Data, _PREHASH_ObjectName, object_name); msg->getStringFast(_PREHASH_Data, _PREHASH_ObjectOwner, owner_name); @@ -6397,7 +6409,7 @@ void container_inventory_arrived(LLViewerObject* object, LLUUID cat_id; cat_id = gInventory.createNewCategory(gInventory.getRootFolderID(), LLFolderType::FT_NONE, - std::string("Acquired Items")); //TODO: Translate + LLTrans::getString("AcquiredItems")); LLInventoryObject::object_list_t::const_iterator it = inventory->begin(); LLInventoryObject::object_list_t::const_iterator end = inventory->end(); @@ -6920,7 +6932,7 @@ void process_script_dialog(LLMessageSystem* msg, void**) { // NaCl - Antispam static LLCachedControl antispam(gSavedSettings,"_NACL_Antispam"); - if(antispam) + if(antispam || gSavedSettings.getBOOL("AntiSpamScripts")) return; // NaCl End S32 i; @@ -6930,9 +6942,9 @@ void process_script_dialog(LLMessageSystem* msg, void**) msg->getUUID("Data", "ObjectID", object_id); // NaCl - Antispam Registry - if(NACLAntiSpamRegistry::checkQueue((U32)NACLAntiSpamRegistry::QUEUE_SCRIPT_DIALOG,object_id)) - return; - // NaCl End + if(NACLAntiSpamRegistry::checkQueue((U32)NACLAntiSpamRegistry::QUEUE_SCRIPT_DIALOG,object_id)) + return; + // NaCl End // For compability with OS grids first check for presence of extended packet before fetching data. LLUUID owner_id; @@ -6940,11 +6952,10 @@ void process_script_dialog(LLMessageSystem* msg, void**) { msg->getUUID("OwnerData", "OwnerID", owner_id); - // NaCl - Antispam Registry - if(NACLAntiSpamRegistry::checkQueue((U32)NACLAntiSpamRegistry::QUEUE_SCRIPT_DIALOG,owner_id)) - return; - // NaCl End - + // NaCl - Antispam Registry + if(NACLAntiSpamRegistry::checkQueue((U32)NACLAntiSpamRegistry::QUEUE_SCRIPT_DIALOG,owner_id)) + return; + // NaCl End } if (LLMuteList::getInstance()->isMuted(object_id) || LLMuteList::getInstance()->isMuted(owner_id)) @@ -7102,7 +7113,7 @@ void process_load_url(LLMessageSystem* msg, void**) { // NaCl - Antispam static LLCachedControl antispam(gSavedSettings,"_NACL_Antispam"); - if(antispam) + if(antispam || gSavedSettings.getBOOL("AntiSpamScripts")) return; // NaCl End LLUUID object_id; @@ -7116,12 +7127,12 @@ void process_load_url(LLMessageSystem* msg, void**) msg->getUUID( "Data", "ObjectID", object_id); msg->getUUID( "Data", "OwnerID", owner_id); - // NaCl - Antispam Registry - if((owner_id.isNull() - && NACLAntiSpamRegistry::checkQueue((U32)NACLAntiSpamRegistry::QUEUE_SCRIPT_DIALOG,object_id)) - || NACLAntiSpamRegistry::checkQueue((U32)NACLAntiSpamRegistry::QUEUE_SCRIPT_DIALOG,owner_id)) - return; - // NaCl End + // NaCl - Antispam Registry + if((owner_id.isNull() + && NACLAntiSpamRegistry::checkQueue((U32)NACLAntiSpamRegistry::QUEUE_SCRIPT_DIALOG,object_id)) + || NACLAntiSpamRegistry::checkQueue((U32)NACLAntiSpamRegistry::QUEUE_SCRIPT_DIALOG,owner_id)) + return; + // NaCl End msg->getBOOL( "Data", "OwnerIsGroup", owner_is_group); msg->getString("Data", "Message", 256, message); @@ -7197,7 +7208,7 @@ void process_script_teleport_request(LLMessageSystem* msg, void**) { // NaCl - Antispam static LLCachedControl antispam(gSavedSettings,"_NACL_Antispam"); - if(antispam) + if(antispam || gSavedSettings.getBOOL("AntiSpamScripts")) return; // NaCl End if (!gSavedSettings.getBOOL("ScriptsCanShowUI")) return; diff --git a/indra/newview/llvoavatarself.cpp b/indra/newview/llvoavatarself.cpp index 76006a315..fbf0f63ae 100644 --- a/indra/newview/llvoavatarself.cpp +++ b/indra/newview/llvoavatarself.cpp @@ -256,24 +256,23 @@ BOOL LLVOAvatarSelf::buildMenus() //------------------------------------------------------------------------- if(gNoRender) return TRUE; - // *TODO: Translate gAttachBodyPartPieMenus[0] = NULL; - gAttachBodyPartPieMenus[1] = new LLPieMenu(std::string("Right Arm >")); - gAttachBodyPartPieMenus[2] = new LLPieMenu(std::string("Head >")); - gAttachBodyPartPieMenus[3] = new LLPieMenu(std::string("Left Arm >")); + gAttachBodyPartPieMenus[1] = new LLPieMenu(LLTrans::getString("BodyPartsRightArm") + " >"); + gAttachBodyPartPieMenus[2] = new LLPieMenu(LLTrans::getString("BodyPartsHead") + " >"); + gAttachBodyPartPieMenus[3] = new LLPieMenu(LLTrans::getString("BodyPartsLeftArm") + " >"); gAttachBodyPartPieMenus[4] = NULL; - gAttachBodyPartPieMenus[5] = new LLPieMenu(std::string("Left Leg >")); - gAttachBodyPartPieMenus[6] = new LLPieMenu(std::string("Torso >")); - gAttachBodyPartPieMenus[7] = new LLPieMenu(std::string("Right Leg >")); + gAttachBodyPartPieMenus[5] = new LLPieMenu(LLTrans::getString("BodyPartsLeftLeg") + " >"); + gAttachBodyPartPieMenus[6] = new LLPieMenu(LLTrans::getString("BodyPartsTorso") + " >"); + gAttachBodyPartPieMenus[7] = new LLPieMenu(LLTrans::getString("BodyPartsRightLeg") + " >"); gDetachBodyPartPieMenus[0] = NULL; - gDetachBodyPartPieMenus[1] = new LLPieMenu(std::string("Right Arm >")); - gDetachBodyPartPieMenus[2] = new LLPieMenu(std::string("Head >")); - gDetachBodyPartPieMenus[3] = new LLPieMenu(std::string("Left Arm >")); + gDetachBodyPartPieMenus[1] = new LLPieMenu(LLTrans::getString("BodyPartsRightArm") + " >"); + gDetachBodyPartPieMenus[2] = new LLPieMenu(LLTrans::getString("BodyPartsHead") + " >"); + gDetachBodyPartPieMenus[3] = new LLPieMenu(LLTrans::getString("BodyPartsLeftArm") + " >"); gDetachBodyPartPieMenus[4] = NULL; - gDetachBodyPartPieMenus[5] = new LLPieMenu(std::string("Left Leg >")); - gDetachBodyPartPieMenus[6] = new LLPieMenu(std::string("Torso >")); - gDetachBodyPartPieMenus[7] = new LLPieMenu(std::string("Right Leg >")); + gDetachBodyPartPieMenus[5] = new LLPieMenu(LLTrans::getString("BodyPartsLeftLeg") + " >"); + gDetachBodyPartPieMenus[6] = new LLPieMenu(LLTrans::getString("BodyPartsTorso") + " >"); + gDetachBodyPartPieMenus[7] = new LLPieMenu(LLTrans::getString("BodyPartsRightLeg") + " >"); for (S32 i = 0; i < 8; i++) { @@ -2744,4 +2743,4 @@ void LLVOAvatarSelf::setInvisible(bool invisible) requestLayerSetUploads(); gAgent.sendAgentSetAppearance(); } -} \ No newline at end of file +} diff --git a/indra/newview/skins/darkgred/colors.xml b/indra/newview/skins/darkgred/colors.xml index d7132d44d..22034c252 100644 --- a/indra/newview/skins/darkgred/colors.xml +++ b/indra/newview/skins/darkgred/colors.xml @@ -70,6 +70,7 @@ + diff --git a/indra/newview/skins/darkorange/colors.xml b/indra/newview/skins/darkorange/colors.xml index f3ff107f0..87e646e51 100644 --- a/indra/newview/skins/darkorange/colors.xml +++ b/indra/newview/skins/darkorange/colors.xml @@ -72,6 +72,7 @@ + diff --git a/indra/newview/skins/default/colors_base.xml b/indra/newview/skins/default/colors_base.xml index eafb95481..eaed66c4d 100644 --- a/indra/newview/skins/default/colors_base.xml +++ b/indra/newview/skins/default/colors_base.xml @@ -73,6 +73,7 @@ + @@ -149,6 +150,13 @@ + + + + + + + diff --git a/indra/newview/skins/default/xui/en-us/floater_about_land.xml b/indra/newview/skins/default/xui/en-us/floater_about_land.xml index 0cdb416c2..f40659986 100644 --- a/indra/newview/skins/default/xui/en-us/floater_about_land.xml +++ b/indra/newview/skins/default/xui/en-us/floater_about_land.xml @@ -1345,6 +1345,11 @@ Select the thumbnail to choose a different texture. One or more of these options is set at the estate level + minutes + 1 minute + 1 second + seconds + remaining - - Filtering: - - Antialiasing: - - Disabled - 2x - 4x - 8x - 16x - - - (brightness, lower is brighter, 0=use default) - Enable VBO: - - - Enable Framebuffer Objects: - - - - - Note: the Gamma and Fog Distance Ratio settings are unavailable - (since useless) when the Atmospheric Shaders are enabled. - -