diff options
Diffstat (limited to 'indra/newview')
508 files changed, 5337 insertions, 2041 deletions
diff --git a/indra/newview/CMakeLists.txt b/indra/newview/CMakeLists.txt index d6d7d2c563..9ac1c3520d 100644 --- a/indra/newview/CMakeLists.txt +++ b/indra/newview/CMakeLists.txt @@ -248,7 +248,6 @@ set(viewer_SOURCE_FILES llfloaterimsession.cpp llfloaterimcontainer.cpp llfloaterinspect.cpp - llfloaterinventory.cpp llfloaterjoystick.cpp llfloaterlagmeter.cpp llfloaterland.cpp @@ -262,7 +261,8 @@ set(viewer_SOURCE_FILES llfloatermodeluploadbase.cpp llfloaternamedesc.cpp llfloaternotificationsconsole.cpp - llfloaternotificationstabbed.cpp + llfloaternotificationstabbed.cpp + llfloateroutfitphotopreview.cpp llfloateroutfitsnapshot.cpp llfloaterobjectweights.cpp llfloateropenobject.cpp @@ -867,7 +867,6 @@ set(viewer_HEADER_FILES llfloaterimsession.h llfloaterimcontainer.h llfloaterinspect.h - llfloaterinventory.h llfloaterjoystick.h llfloaterlagmeter.h llfloaterland.h @@ -881,7 +880,8 @@ set(viewer_HEADER_FILES llfloatermodeluploadbase.h llfloaternamedesc.h llfloaternotificationsconsole.h - llfloaternotificationstabbed.h + llfloaternotificationstabbed.h + llfloateroutfitphotopreview.h llfloateroutfitsnapshot.h llfloaterobjectweights.h llfloateropenobject.h diff --git a/indra/newview/app_settings/commands.xml b/indra/newview/app_settings/commands.xml index a0d3dc0f99..9bc0a7c701 100644 --- a/indra/newview/app_settings/commands.xml +++ b/indra/newview/app_settings/commands.xml @@ -282,4 +282,14 @@ is_running_function="Floater.IsOpen" is_running_parameters="camera" /> + <command name="reporter" + available_in_toybox="true" + icon="Command_Report_Abuse_Icon" + label_ref="Command_Report_Abuse_Label" + tooltip_ref="Command_Report_Abuse_Tooltip" + execute_function="Floater.ToggleOrBringToFront" + execute_parameters="reporter" + is_running_function="Floater.IsOpen" + is_running_parameters="reporter" + /> </commands> diff --git a/indra/newview/app_settings/settings.xml b/indra/newview/app_settings/settings.xml index 6621b9e269..717deba8c7 100644 --- a/indra/newview/app_settings/settings.xml +++ b/indra/newview/app_settings/settings.xml @@ -1608,18 +1608,6 @@ <real>60.0</real> </map> - <key>CameraAspectRatio</key> - <map> - <key>Comment</key> - <string>Camera aspect ratio for DoF effect</string> - <key>Persist</key> - <integer>1</integer> - <key>Type</key> - <string>F32</string> - <key>Value</key> - <real>1.5</real> - </map> - <key>CertStore</key> <map> <key>Comment</key> @@ -5263,6 +5251,17 @@ <key>Value</key> <integer>0</integer> </map> + <key>LastAppearanceTab</key> + <map> + <key>Comment</key> + <string>Last selected tab in appearance floater</string> + <key>Persist</key> + <integer>1</integer> + <key>Type</key> + <string>S32</string> + <key>Value</key> + <integer>0</integer> + </map> <key>LastMediaSettingsTab</key> <map> <key>Comment</key> @@ -5377,7 +5376,7 @@ <key>LeftClickShowMenu</key> <map> <key>Comment</key> - <string>Left click opens pie menu (FALSE = left click touches or grabs object)</string> + <string>Unused obsolete setting</string> <key>Persist</key> <integer>1</integer> <key>Type</key> @@ -6629,6 +6628,17 @@ <key>Value</key> <integer>0</integer> </map> + <key>MuteListLimit</key> + <map> + <key>Comment</key> + <string>Maximum number of entries in the mute list</string> + <key>Persist</key> + <integer>1</integer> + <key>Type</key> + <string>S32</string> + <key>Value</key> + <integer>1000</integer> + </map> <key>MyOutfitsAutofill</key> <map> <key>Comment</key> @@ -11802,6 +11812,17 @@ <key>Value</key> <integer>75</integer> </map> + <key>AbuseReportScreenshotDelay</key> + <map> + <key>Comment</key> + <string>Time delay before taking screenshot to avoid UI artifacts.</string> + <key>Persist</key> + <integer>1</integer> + <key>Type</key> + <string>F32</string> + <key>Value</key> + <real>0.3</real> + </map> <key>SpeedTest</key> <map> <key>Comment</key> @@ -14722,6 +14743,7 @@ <string>snapshot</string> <string>postcard</string> <string>mini_map</string> + <string>beacons</string> </array> </map> <key>LandmarksSortedByDate</key> diff --git a/indra/newview/app_settings/settings_per_account.xml b/indra/newview/app_settings/settings_per_account.xml index fd6b1b5b3f..92e61d2e86 100644 --- a/indra/newview/app_settings/settings_per_account.xml +++ b/indra/newview/app_settings/settings_per_account.xml @@ -242,6 +242,17 @@ <key>Value</key> <integer>0</integer> </map> + <key>PreviousScreenshotForReport</key> + <map> + <key>Comment</key> + <string>Use Previous Screenshot for Abuse report</string> + <key>Persist</key> + <integer>1</integer> + <key>Type</key> + <string>Boolean</string> + <key>Value</key> + <integer>0</integer> + </map> <!-- Settings below are for back compatibility only. They are not used in current viewer anymore. But they can't be removed to avoid influence on previous versions of the viewer in case of settings are not used or default value @@ -251,7 +262,7 @@ <key>LogChat</key> <map> <key>Comment</key> - <string>Log Chat</string> + <string>Obsolete - this setting is no longer used and has no effect.</string> <key>Persist</key> <integer>1</integer> <key>Type</key> @@ -262,7 +273,7 @@ <key>LogChatIM</key> <map> <key>Comment</key> - <string>Log Incoming Instant Messages with Chat</string> + <string>Obsolete - this setting is no longer used and has no effect.</string> <key>Persist</key> <integer>1</integer> <key>Type</key> @@ -273,7 +284,7 @@ <key>LogChatTimestamp</key> <map> <key>Comment</key> - <string>Log Timestamp of Chat</string> + <string>Obsolete - this setting is no longer used and has no effect.</string> <key>Persist</key> <integer>1</integer> <key>Type</key> @@ -281,6 +292,7 @@ <key>Value</key> <integer>0</integer> </map> + <!-- End of back compatibility settings --> <key>TranslatingEnabled</key> <map> <key>Comment</key> @@ -336,6 +348,49 @@ <key>Value</key> <integer>1</integer> </map> - <!-- End of back compatibility settings --> + <key>ModelUploadFolder</key> + <map> + <key>Comment</key> + <string>All model uploads will be stored in this directory (UUID)</string> + <key>Persist</key> + <integer>1</integer> + <key>Type</key> + <string>String</string> + <key>Value</key> + <string></string> + </map> + <key>TextureUploadFolder</key> + <map> + <key>Comment</key> + <string>All image(texture) uploads will be stored in this directory (UUID)</string> + <key>Persist</key> + <integer>1</integer> + <key>Type</key> + <string>String</string> + <key>Value</key> + <string></string> + </map> + <key>SoundUploadFolder</key> + <map> + <key>Comment</key> + <string>All sound uploads will be stored in this directory (UUID)</string> + <key>Persist</key> + <integer>1</integer> + <key>Type</key> + <string>String</string> + <key>Value</key> + <string></string> + </map> + <key>AnimationUploadFolder</key> + <map> + <key>Comment</key> + <string>All animation uploads will be stored in this directory (UUID)</string> + <key>Persist</key> + <integer>1</integer> + <key>Type</key> + <string>String</string> + <key>Value</key> + <string></string> + </map> </map> </llsd> diff --git a/indra/newview/app_settings/shaders/class1/lighting/lightAlphaMaskNonIndexedF.glsl b/indra/newview/app_settings/shaders/class1/lighting/lightAlphaMaskNonIndexedF.glsl index b9ddbc8e1c..8918182853 100644 --- a/indra/newview/app_settings/shaders/class1/lighting/lightAlphaMaskNonIndexedF.glsl +++ b/indra/newview/app_settings/shaders/class1/lighting/lightAlphaMaskNonIndexedF.glsl @@ -43,12 +43,12 @@ void default_lighting() { vec4 color = texture2D(diffuseMap,vary_texcoord0.xy); + color *= vertex_color; + if (color.a < minimum_alpha) { discard; } - - color.rgb *= vertex_color.rgb; color.rgb = atmosLighting(color.rgb); diff --git a/indra/newview/llaccountingcostmanager.h b/indra/newview/llaccountingcostmanager.h index f251ceffd4..55e1d19f05 100644 --- a/indra/newview/llaccountingcostmanager.h +++ b/indra/newview/llaccountingcostmanager.h @@ -58,9 +58,9 @@ protected: //=============================================================================== class LLAccountingCostManager : public LLSingleton<LLAccountingCostManager> { + LLSINGLETON(LLAccountingCostManager); + public: - //Ctor - LLAccountingCostManager(); //Store an object that will be eventually fetched void addObject( const LLUUID& objectID ); //Request quotas for object list diff --git a/indra/newview/llagent.cpp b/indra/newview/llagent.cpp index 66e2d6fa6a..7d0d39e22a 100644 --- a/indra/newview/llagent.cpp +++ b/indra/newview/llagent.cpp @@ -2050,7 +2050,10 @@ void LLAgent::endAnimationUpdateUI() { skip_list.insert(LLFloaterReg::findInstance("mini_map")); } - + if (LLFloaterReg::findInstance("beacons")) + { + skip_list.insert(LLFloaterReg::findInstance("beacons")); + } LLFloaterIMContainer* im_box = LLFloaterReg::getTypedInstance<LLFloaterIMContainer>("im_container"); LLFloaterIMContainer::floater_list_t conversations; im_box->getDetachedConversationFloaters(conversations); @@ -2172,6 +2175,7 @@ void LLAgent::endAnimationUpdateUI() #else // Use this for now LLFloaterView::skip_list_t skip_list; skip_list.insert(LLFloaterReg::findInstance("mini_map")); + skip_list.insert(LLFloaterReg::findInstance("beacons")); gFloaterView->pushVisibleAll(FALSE, skip_list); #endif @@ -3191,7 +3195,7 @@ void LLAgent::initOriginGlobal(const LLVector3d &origin_global) } BOOL LLAgent::leftButtonGrabbed() const -{ +{ const BOOL camera_mouse_look = gAgentCamera.cameraMouselook(); return (!camera_mouse_look && mControlsTakenCount[CONTROL_LBUTTON_DOWN_INDEX] > 0) || (camera_mouse_look && mControlsTakenCount[CONTROL_ML_LBUTTON_DOWN_INDEX] > 0) @@ -3199,13 +3203,6 @@ BOOL LLAgent::leftButtonGrabbed() const || (camera_mouse_look && mControlsTakenPassedOnCount[CONTROL_ML_LBUTTON_DOWN_INDEX] > 0); } -BOOL LLAgent::leftButtonBlocked() const -{ - const BOOL camera_mouse_look = gAgentCamera.cameraMouselook(); - return (!camera_mouse_look && mControlsTakenCount[CONTROL_LBUTTON_DOWN_INDEX] > 0) - || (camera_mouse_look && mControlsTakenCount[CONTROL_ML_LBUTTON_DOWN_INDEX] > 0); -} - BOOL LLAgent::rotateGrabbed() const { return (mControlsTakenCount[CONTROL_YAW_POS_INDEX] > 0) @@ -3663,14 +3660,7 @@ BOOL LLAgent::anyControlGrabbed() const BOOL LLAgent::isControlGrabbed(S32 control_index) const { - if (gAgent.mControlsTakenCount[control_index] > 0) - return TRUE; - return gAgent.mControlsTakenPassedOnCount[control_index] > 0; -} - -BOOL LLAgent::isControlBlocked(S32 control_index) const -{ - return mControlsTakenCount[control_index] > 0; + return mControlsTakenCount[control_index] > 0; } void LLAgent::forceReleaseControls() diff --git a/indra/newview/llagent.h b/indra/newview/llagent.h index d82ff7a67f..b5da5e9062 100644 --- a/indra/newview/llagent.h +++ b/indra/newview/llagent.h @@ -444,8 +444,7 @@ private: // Grab //-------------------------------------------------------------------- public: - BOOL leftButtonGrabbed() const; - BOOL leftButtonBlocked() const; + BOOL leftButtonGrabbed() const; BOOL rotateGrabbed() const; BOOL forwardGrabbed() const; BOOL backwardGrabbed() const; @@ -462,9 +461,8 @@ public: BOOL controlFlagsDirty() const; void enableControlFlagReset(); void resetControlFlags(); - BOOL anyControlGrabbed() const; // True if a script has taken over any control - BOOL isControlGrabbed(S32 control_index) const; // True if a script has taken over a control - BOOL isControlBlocked(S32 control_index) const; // Control should be ignored or won't be passed + BOOL anyControlGrabbed() const; // True iff a script has taken over a control + BOOL isControlGrabbed(S32 control_index) const; // Send message to simulator to force grabbed controls to be // released, in case of a poorly written script. void forceReleaseControls(); diff --git a/indra/newview/llagentpicksinfo.h b/indra/newview/llagentpicksinfo.h index abf7027ed2..f981e08ff7 100644 --- a/indra/newview/llagentpicksinfo.h +++ b/indra/newview/llagentpicksinfo.h @@ -36,14 +36,12 @@ struct LLAvatarPicks; */ class LLAgentPicksInfo : public LLSingleton<LLAgentPicksInfo> { + LLSINGLETON(LLAgentPicksInfo); + virtual ~LLAgentPicksInfo(); + class LLAgentPicksObserver; public: - - LLAgentPicksInfo(); - - virtual ~LLAgentPicksInfo(); - /** * Requests number of picks from server. * diff --git a/indra/newview/llagentwearables.h b/indra/newview/llagentwearables.h index b27698fd8f..2710262910 100644 --- a/indra/newview/llagentwearables.h +++ b/indra/newview/llagentwearables.h @@ -38,6 +38,7 @@ #include "llviewerinventory.h" #include "llavatarappearancedefines.h" #include "llwearabledata.h" +#include "llinitdestroyclass.h" class LLInventoryItem; class LLVOAvatarSelf; diff --git a/indra/newview/llappdelegate-objc.mm b/indra/newview/llappdelegate-objc.mm index be8877328d..8188c6c3f9 100644 --- a/indra/newview/llappdelegate-objc.mm +++ b/indra/newview/llappdelegate-objc.mm @@ -58,7 +58,7 @@ frameTimer = [NSTimer scheduledTimerWithTimeInterval:0.0 target:self selector:@selector(oneFrame) userInfo:nil repeats:YES]; } else { - handleQuit(); + exit(0); } [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(languageUpdated) name:@"NSTextInputContextKeyboardSelectionDidChangeNotification" object:nil]; diff --git a/indra/newview/llappearancemgr.cpp b/indra/newview/llappearancemgr.cpp index 4d6d7a9d89..046e829070 100644 --- a/indra/newview/llappearancemgr.cpp +++ b/indra/newview/llappearancemgr.cpp @@ -1227,11 +1227,12 @@ void LLWearableHoldingPattern::onWearableAssetFetch(LLViewerWearable *wearable) return; } + U32 use_count = 0; for (LLWearableHoldingPattern::found_list_t::iterator iter = getFoundList().begin(); - iter != getFoundList().end(); ++iter) + iter != getFoundList().end(); ++iter) { LLFoundData& data = *iter; - if(wearable->getAssetID() == data.mAssetID) + if (wearable->getAssetID() == data.mAssetID) { // Failing this means inventory or asset server are corrupted in a way we don't handle. if ((data.mWearableType >= LLWearableType::WT_COUNT) || (wearable->getType() != data.mWearableType)) @@ -1240,9 +1241,45 @@ void LLWearableHoldingPattern::onWearableAssetFetch(LLViewerWearable *wearable) break; } - data.mWearable = wearable; + if (use_count == 0) + { + data.mWearable = wearable; + use_count++; + } + else if (wearable->getPermissions().allowModifyBy(gAgent.getID())) + { + // We can't edit and do some other interactions with same asset twice, copy it + LLViewerWearable* new_wearable = LLWearableList::instance().createCopy(wearable, wearable->getName()); + data.mWearable = new_wearable; + data.mAssetID = new_wearable->getAssetID(); + + LLViewerInventoryItem* item = gInventory.getItem(data.mItemID); + if (item) + { + // Update existing inventory item + item->setAssetUUID(new_wearable->getAssetID()); + item->setTransactionID(new_wearable->getTransactionID()); + gInventory.updateItem(item, LLInventoryObserver::INTERNAL); + item->updateServer(FALSE); + } + use_count++; + } + else + { + // Note: technically a bug, LLViewerWearable can identify only one item id at a time, + // yet we are tying it to multiple items here. + // LLViewerWearable need to support more then one item. + LL_WARNS() << "Same LLViewerWearable is used by multiple items! " << wearable->getAssetID() << LL_ENDL; + data.mWearable = wearable; + } } } + + if (use_count > 1) + { + LL_WARNS() << "Copying wearable, multiple asset id uses! " << wearable->getAssetID() << LL_ENDL; + gInventory.notifyObservers(); + } } static void onWearableAssetFetch(LLViewerWearable* wearable, void* data) @@ -3410,9 +3447,21 @@ LLSD LLAppearanceMgr::dumpCOF() const return result; } +// static +void LLAppearanceMgr::onIdle(void *) +{ + LLAppearanceMgr* mgr = LLAppearanceMgr::getInstance(); + if (mgr->mRerequestAppearanceBake) + { + mgr->requestServerAppearanceUpdate(); + } +} + void LLAppearanceMgr::requestServerAppearanceUpdate() { - if (!mOutstandingAppearanceBakeRequest) + // Workaround: we shouldn't request update from server prior to uploading all attachments, but it is + // complicated to check for pending attachment uploads, so we are just waiting for uploads to complete + if (!mOutstandingAppearanceBakeRequest && gAssetStorage->getNumPendingUploads() == 0) { mRerequestAppearanceBake = false; LLCoprocedureManager::CoProcedure_t proc = boost::bind(&LLAppearanceMgr::serverAppearanceUpdateCoro, this, _1); @@ -3420,13 +3469,14 @@ void LLAppearanceMgr::requestServerAppearanceUpdate() } else { + // Shedule update mRerequestAppearanceBake = true; } } void LLAppearanceMgr::serverAppearanceUpdateCoro(LLCoreHttpUtil::HttpCoroutineAdapter::ptr_t &httpAdapter) { - mRerequestAppearanceBake = false; + BoolSetter outstanding(mOutstandingAppearanceBakeRequest); if (!gAgent.getRegion()) { LL_WARNS("Avatar") << "Region not set, cannot request server appearance update" << LL_ENDL; @@ -3458,8 +3508,6 @@ void LLAppearanceMgr::serverAppearanceUpdateCoro(LLCoreHttpUtil::HttpCoroutineAd bool bRetry; do { - BoolSetter outstanding(mOutstandingAppearanceBakeRequest); - // If we have already received an update for this or higher cof version, // put a warning in the log and cancel the request. S32 cofVersion = getCOFVersion(); @@ -3571,12 +3619,6 @@ void LLAppearanceMgr::serverAppearanceUpdateCoro(LLCoreHttpUtil::HttpCoroutineAd } } while (bRetry); - - if (mRerequestAppearanceBake) - { // A bake request came in while this one was still outstanding. - // Requeue ourself for a later request. - requestServerAppearanceUpdate(); - } } /*static*/ @@ -3942,7 +3984,6 @@ LLAppearanceMgr::LLAppearanceMgr(): mAttachmentInvLinkEnabled(false), mOutfitIsDirty(false), mOutfitLocked(false), - mInFlightCounter(0), mInFlightTimer(), mIsInUpdateAppearanceFromCOF(false), mOutstandingAppearanceBakeRequest(false), @@ -3957,6 +3998,7 @@ LLAppearanceMgr::LLAppearanceMgr(): "OutfitOperationsTimeout"))); gIdleCallbacks.addFunction(&LLAttachmentsMgr::onIdle, NULL); + gIdleCallbacks.addFunction(&LLAppearanceMgr::onIdle, NULL); //sheduling appearance update requests } LLAppearanceMgr::~LLAppearanceMgr() diff --git a/indra/newview/llappearancemgr.h b/indra/newview/llappearancemgr.h index f0d3f80f59..166c663feb 100644 --- a/indra/newview/llappearancemgr.h +++ b/indra/newview/llappearancemgr.h @@ -42,9 +42,10 @@ class LLOutfitUnLockTimer; class LLAppearanceMgr: public LLSingleton<LLAppearanceMgr> { + LLSINGLETON(LLAppearanceMgr); + ~LLAppearanceMgr(); LOG_CLASS(LLAppearanceMgr); - friend class LLSingleton<LLAppearanceMgr>; friend class LLOutfitUnLockTimer; public: @@ -224,6 +225,7 @@ public: bool isInUpdateAppearanceFromCOF() { return mIsInUpdateAppearanceFromCOF; } + static void onIdle(void *); void requestServerAppearanceUpdate(); void setAppearanceServiceURL(const std::string& url) { mAppearanceServiceURL = url; } @@ -234,17 +236,12 @@ public: boost::signals2::connection setAttachmentsChangedCallback(attachments_changed_callback_t cb); - private: void serverAppearanceUpdateCoro(LLCoreHttpUtil::HttpCoroutineAdapter::ptr_t &httpAdapter); static void debugAppearanceUpdateCOF(const LLSD& content); std::string mAppearanceServiceURL; - -protected: - LLAppearanceMgr(); - ~LLAppearanceMgr(); private: @@ -272,7 +269,6 @@ private: * to avoid unsynchronized outfit state or performing duplicate operations. */ bool mOutfitLocked; - S32 mInFlightCounter; LLTimer mInFlightTimer; static bool mActive; diff --git a/indra/newview/llappviewer.cpp b/indra/newview/llappviewer.cpp index e178bbb21a..5eb82a2d0b 100644 --- a/indra/newview/llappviewer.cpp +++ b/indra/newview/llappviewer.cpp @@ -209,7 +209,7 @@ #include "llfloaterreg.h" #include "llfloateroutfitsnapshot.h" #include "llfloatersnapshot.h" -#include "llfloaterinventory.h" +#include "llsidepanelinventory.h" // includes for idle() idleShutdown() #include "llviewercontrol.h" @@ -234,6 +234,7 @@ #include "llsecapi.h" #include "llmachineid.h" #include "llmainlooprepeater.h" +#include "llcleanup.h" #include "llcoproceduremanager.h" #include "llviewereventrecorder.h" @@ -388,6 +389,7 @@ const char* const VIEWER_WINDOW_CLASSNAME = "Second Life"; */ class LLDeferredTaskList: public LLSingleton<LLDeferredTaskList> { + LLSINGLETON_EMPTY_CTOR(LLDeferredTaskList); LOG_CLASS(LLDeferredTaskList); friend class LLAppViewer; @@ -738,7 +740,7 @@ LLAppViewer::LLAppViewer() LLAppViewer::~LLAppViewer() { delete mSettingsLocationList; - LLViewerEventRecorder::instance().~LLViewerEventRecorder(); + LLViewerEventRecorder::deleteSingleton(); LLLoginInstance::instance().setUpdaterService(0); @@ -1233,7 +1235,8 @@ bool LLAppViewer::init() boost::bind(&LLControlGroup::getU32, boost::ref(gSavedSettings), _1), boost::bind(&LLControlGroup::declareU32, boost::ref(gSavedSettings), _1, _2, _3, LLControlVariable::PERSIST_ALWAYS)); - showReleaseNotesIfRequired(); + // TODO: consider moving proxy initialization here or LLCopocedureManager after proxy initialization, may be implement + // some other protection to make sure we don't use network before initializng proxy /*----------------------------------------------------------------------*/ // nat 2016-06-29 moved the following here from the former mainLoop(). @@ -1741,7 +1744,7 @@ bool LLAppViewer::cleanup() gTransferManager.cleanup(); #endif - LLLocalBitmapMgr::cleanupClass(); + SUBSYSTEM_CLEANUP(LLLocalBitmapMgr); // Note: this is where gWorldMap used to be deleted. @@ -1850,11 +1853,11 @@ bool LLAppViewer::cleanup() LLViewerObject::cleanupVOClasses(); - LLAvatarAppearance::cleanupClass(); + SUBSYSTEM_CLEANUP(LLAvatarAppearance); - LLAvatarAppearance::cleanupClass(); + SUBSYSTEM_CLEANUP(LLAvatarAppearance); - LLPostProcess::cleanupClass(); + SUBSYSTEM_CLEANUP(LLPostProcess); LLTracker::cleanupInstance(); @@ -1880,12 +1883,12 @@ bool LLAppViewer::cleanup() //end_messaging_system(); - LLFollowCamMgr::cleanupClass(); - //LLVolumeMgr::cleanupClass(); + SUBSYSTEM_CLEANUP(LLFollowCamMgr); + //SUBSYSTEM_CLEANUP(LLVolumeMgr); LLPrimitive::cleanupVolumeManager(); - LLWorldMapView::cleanupClass(); - LLFolderViewItem::cleanupClass(); - LLUI::cleanupClass(); + SUBSYSTEM_CLEANUP(LLWorldMapView); + SUBSYSTEM_CLEANUP(LLFolderViewItem); + SUBSYSTEM_CLEANUP(LLUI); // // Shut down the VFS's AFTER the decode manager cleans up (since it cleans up vfiles). @@ -1894,7 +1897,7 @@ bool LLAppViewer::cleanup() // LL_INFOS() << "Cleaning up VFS" << LL_ENDL; - LLVFile::cleanupClass(); + SUBSYSTEM_CLEANUP(LLVFile); LL_INFOS() << "Saving Data" << LL_ENDL; @@ -1997,9 +2000,9 @@ bool LLAppViewer::cleanup() // Non-LLCurl libcurl library mAppCoreHttp.cleanup(); - LLFilePickerThread::cleanupClass(); + SUBSYSTEM_CLEANUP(LLFilePickerThread); - //MUST happen AFTER LLCurl::cleanupClass + //MUST happen AFTER SUBSYSTEM_CLEANUP(LLCurl) delete sTextureCache; sTextureCache = NULL; delete sTextureFetch; @@ -2023,22 +2026,22 @@ bool LLAppViewer::cleanup() gDirUtilp->getExpandedFilename(LL_PATH_LOGS, report_name)); } - LLMetricPerformanceTesterBasic::cleanClass() ; + SUBSYSTEM_CLEANUP(LLMetricPerformanceTesterBasic) ; LL_INFOS() << "Cleaning up Media and Textures" << LL_ENDL; //Note: - //LLViewerMedia::cleanupClass() has to be put before gTextureList.shutdown() + //SUBSYSTEM_CLEANUP(LLViewerMedia) has to be put before gTextureList.shutdown() //because some new image might be generated during cleaning up media. --bao - LLViewerMedia::cleanupClass(); - LLViewerParcelMedia::cleanupClass(); + SUBSYSTEM_CLEANUP(LLViewerMedia); + SUBSYSTEM_CLEANUP(LLViewerParcelMedia); gTextureList.shutdown(); // shutdown again in case a callback added something LLUIImageList::getInstance()->cleanUp(); // This should eventually be done in LLAppViewer - LLImage::cleanupClass(); - LLVFSThread::cleanupClass(); - LLLFSThread::cleanupClass(); + SUBSYSTEM_CLEANUP(LLImage); + SUBSYSTEM_CLEANUP(LLVFSThread); + SUBSYSTEM_CLEANUP(LLLFSThread); #ifndef LL_RELEASE_FOR_DOWNLOAD LL_INFOS() << "Auditing VFS" << LL_ENDL; @@ -2081,10 +2084,10 @@ bool LLAppViewer::cleanup() LL_INFOS() << "File launched." << LL_ENDL; } LL_INFOS() << "Cleaning up LLProxy." << LL_ENDL; - LLProxy::cleanupClass(); + SUBSYSTEM_CLEANUP(LLProxy); LLCore::LLHttp::cleanup(); - LLWearableType::cleanupClass(); + SUBSYSTEM_CLEANUP(LLWearableType); LLMainLoopRepeater::instance().stop(); @@ -2096,10 +2099,34 @@ bool LLAppViewer::cleanup() LLError::LLCallStacks::cleanup(); removeMarkerFiles(); - - LL_INFOS() << "Goodbye!" << LL_ENDL; - removeDumpDir(); + // It's not at first obvious where, in this long sequence, generic cleanup + // calls OUGHT to go. So let's say this: as we migrate cleanup from + // explicit hand-placed calls into the generic mechanism, eventually + // all cleanup will get subsumed into the generic calls. So the calls you + // still see above are calls that MUST happen before the generic cleanup + // kicks in. + + // This calls every remaining LLSingleton's cleanupSingleton() method. + // This method should perform any cleanup that might take significant + // realtime, or might throw an exception. + LLSingletonBase::cleanupAll(); + + // This calls every remaining LLSingleton's deleteSingleton() method. + // No class destructor should perform any cleanup that might take + // significant realtime, or throw an exception. + // LLSingleton machinery includes a last-gasp implicit deleteAll() call, + // so this explicit call shouldn't strictly be necessary. However, by the + // time the runtime engages that implicit call, it may already have + // destroyed things like std::cerr -- so the implicit deleteAll() refrains + // from logging anything. Since both cleanupAll() and deleteAll() call + // their respective cleanup methods in computed dependency order, it's + // probably useful to be able to log that order. + LLSingletonBase::deleteAll(); + + LL_INFOS() << "Goodbye!" << LL_ENDL; + + removeDumpDir(); // return 0; return true; @@ -3324,6 +3351,26 @@ LLSD LLAppViewer::getViewerInfo() const info["OPENGL_VERSION"] = (const char*)(glGetString(GL_VERSION)); + // Settings + + LLRect window_rect = gViewerWindow->getWindowRectRaw(); + info["WINDOW_WIDTH"] = window_rect.getWidth(); + info["WINDOW_HEIGHT"] = window_rect.getHeight(); + info["FONT_SIZE_ADJUSTMENT"] = gSavedSettings.getF32("FontScreenDPI"); + info["UI_SCALE"] = gSavedSettings.getF32("UIScaleFactor"); + info["DRAW_DISTANCE"] = gSavedSettings.getF32("RenderFarClip"); + info["NET_BANDWITH"] = gSavedSettings.getF32("ThrottleBandwidthKBPS"); + info["LOD_FACTOR"] = gSavedSettings.getF32("RenderVolumeLODFactor"); + info["RENDER_QUALITY"] = (F32)gSavedSettings.getU32("RenderQualityPerformance"); + info["GPU_SHADERS"] = gSavedSettings.getBOOL("RenderDeferred") ? "Enabled" : "Disabled"; + info["TEXTURE_MEMORY"] = gSavedSettings.getS32("TextureMemory"); + + LLSD substitution; + substitution["datetime"] = (S32)(gVFS ? gVFS->creationTime() : 0); + info["VFS_TIME"] = LLTrans::getString("AboutTime", substitution); + + // Libraries + info["J2C_VERSION"] = LLImageJ2C::getEngineInfo(); bool want_fullname = true; info["AUDIO_DRIVER_VERSION"] = gAudiop ? LLSD(gAudiop->getDriverName(want_fullname)) : LLSD(); @@ -3443,7 +3490,9 @@ std::string LLAppViewer::getViewerInfoString() const { support << "\n" << LLTrans::getString("AboutDriver", args); } - support << "\n" << LLTrans::getString("AboutLibs", args); + support << "\n" << LLTrans::getString("AboutOGL", args); + support << "\n\n" << LLTrans::getString("AboutSettings", args); + support << "\n\n" << LLTrans::getString("AboutLibs", args); if (info.has("COMPILER")) { support << "\n" << LLTrans::getString("AboutCompiler", args); @@ -5494,12 +5543,15 @@ void LLAppViewer::disconnectViewer() } saveNameCache(); - LLExperienceCache *expCache = LLExperienceCache::getIfExists(); - if (expCache) - expCache->cleanup(); + if (LLExperienceCache::instanceExists()) + { + // TODO: LLExperienceCache::cleanup() logic should be moved to + // cleanupSingleton(). + LLExperienceCache::instance().cleanup(); + } // close inventory interface, close all windows - LLFloaterInventory::cleanup(); + LLSidepanelInventory::cleanup(); gAgentWearables.cleanup(); gAgentCamera.cleanup(); @@ -5812,21 +5864,6 @@ void LLAppViewer::launchUpdater() // LLAppViewer::instance()->forceQuit(); } -/** -* Check if user is running a new version of the viewer. -* Display the Release Notes if it's not overriden by the "UpdaterShowReleaseNotes" setting. -*/ -void LLAppViewer::showReleaseNotesIfRequired() -{ - if (LLVersionInfo::getChannelAndVersion() != gLastRunVersion - && gSavedSettings.getBOOL("UpdaterShowReleaseNotes") - && !gSavedSettings.getBOOL("FirstLoginThisInstall")) - { - LLSD info(getViewerInfo()); - LLWeb::loadURLInternal(info["VIEWER_RELEASE_NOTES_URL"]); - } -} - //virtual void LLAppViewer::setMasterSystemAudioMute(bool mute) { diff --git a/indra/newview/llappviewer.h b/indra/newview/llappviewer.h index 948d316009..7bb3c32c51 100644 --- a/indra/newview/llappviewer.h +++ b/indra/newview/llappviewer.h @@ -255,8 +255,6 @@ private: void sendLogoutRequest(); void disconnectViewer(); - void showReleaseNotesIfRequired(); - // *FIX: the app viewer class should be some sort of singleton, no? // Perhaps its child class is the singleton and this should be an abstract base. static LLAppViewer* sInstance; diff --git a/indra/newview/llattachmentsmgr.h b/indra/newview/llattachmentsmgr.h index bb7d35edbc..a4ef762e8b 100644 --- a/indra/newview/llattachmentsmgr.h +++ b/indra/newview/llattachmentsmgr.h @@ -62,6 +62,9 @@ class LLViewerInventoryItem; //-------------------------------------------------------------------------------- class LLAttachmentsMgr: public LLSingleton<LLAttachmentsMgr> { + LLSINGLETON(LLAttachmentsMgr); + virtual ~LLAttachmentsMgr(); + public: // Stores info for attachments that will be requested during idle. struct AttachmentsInfo @@ -72,9 +75,6 @@ public: }; typedef std::deque<AttachmentsInfo> attachments_vec_t; - LLAttachmentsMgr(); - virtual ~LLAttachmentsMgr(); - void addAttachmentRequest(const LLUUID& item_id, const U8 attachment_pt, const BOOL add); diff --git a/indra/newview/llautoreplace.h b/indra/newview/llautoreplace.h index 9eecc2d981..23cc313646 100644 --- a/indra/newview/llautoreplace.h +++ b/indra/newview/llautoreplace.h @@ -191,6 +191,7 @@ class LLAutoReplaceSettings */ class LLAutoReplace : public LLSingleton<LLAutoReplace> { + LLSINGLETON(LLAutoReplace); public: /// Callback that provides the hook for use in text entry methods void autoreplaceCallback(S32& replacement_start, S32& replacement_length, LLWString& replacement_string, S32& cursor_pos, const LLWString& input_text); @@ -202,8 +203,6 @@ public: void setSettings(const LLAutoReplaceSettings& settings); private: - friend class LLSingleton<LLAutoReplace>; - LLAutoReplace(); /*virtual*/ void initSingleton(); LLAutoReplaceSettings mSettings; ///< configuration information diff --git a/indra/newview/llavataractions.cpp b/indra/newview/llavataractions.cpp index 7b8c630837..36e95c07f4 100644 --- a/indra/newview/llavataractions.cpp +++ b/indra/newview/llavataractions.cpp @@ -689,6 +689,8 @@ namespace action_give_inventory struct LLShareInfo : public LLSingleton<LLShareInfo> { + LLSINGLETON_EMPTY_CTOR(LLShareInfo); + public: std::vector<LLAvatarName> mAvatarNames; uuid_vec_t mAvatarUuids; }; diff --git a/indra/newview/llavatariconctrl.h b/indra/newview/llavatariconctrl.h index 5b5720f4ac..a1dacd1a27 100644 --- a/indra/newview/llavatariconctrl.h +++ b/indra/newview/llavatariconctrl.h @@ -37,6 +37,8 @@ class LLAvatarName; class LLAvatarIconIDCache: public LLSingleton<LLAvatarIconIDCache> { + LLSINGLETON(LLAvatarIconIDCache); + public: struct LLAvatarIconIDCacheItem { @@ -46,10 +48,6 @@ public: bool expired(); }; - LLAvatarIconIDCache() - : mFilename("avatar_icons_cache.txt") - {} - void load (); void save (); @@ -64,6 +62,11 @@ protected: std::map<LLUUID,LLAvatarIconIDCacheItem> mCache;//we cache only LLUID and time }; +inline +LLAvatarIconIDCache::LLAvatarIconIDCache() + : mFilename("avatar_icons_cache.txt") +{} + namespace LLAvatarIconCtrlEnums { enum ESymbolPos diff --git a/indra/newview/llavatarpropertiesprocessor.h b/indra/newview/llavatarpropertiesprocessor.h index 1dcd2c9b90..d5c5c75c69 100644 --- a/indra/newview/llavatarpropertiesprocessor.h +++ b/indra/newview/llavatarpropertiesprocessor.h @@ -187,13 +187,12 @@ public: class LLAvatarPropertiesProcessor : public LLSingleton<LLAvatarPropertiesProcessor> { -public: - - LLAvatarPropertiesProcessor(); + LLSINGLETON(LLAvatarPropertiesProcessor); virtual ~LLAvatarPropertiesProcessor(); +public: void addObserver(const LLUUID& avatar_id, LLAvatarPropertiesObserver* observer); - + void removeObserver(const LLUUID& avatar_id, LLAvatarPropertiesObserver* observer); // Request various types of avatar data. Duplicate requests will be diff --git a/indra/newview/llavatarrenderinfoaccountant.h b/indra/newview/llavatarrenderinfoaccountant.h index 870ef4f394..6b5fa7bc35 100644 --- a/indra/newview/llavatarrenderinfoaccountant.h +++ b/indra/newview/llavatarrenderinfoaccountant.h @@ -38,13 +38,13 @@ class LLViewerRegion; // that is sent to or fetched from regions. class LLAvatarRenderInfoAccountant : public LLSingleton<LLAvatarRenderInfoAccountant> { + LLSINGLETON(LLAvatarRenderInfoAccountant); + ~LLAvatarRenderInfoAccountant(); + private: LOG_CLASS(LLAvatarRenderInfoAccountant); public: - LLAvatarRenderInfoAccountant(); - ~LLAvatarRenderInfoAccountant(); - void sendRenderInfoToRegion(LLViewerRegion * regionp); void getRenderInfoFromRegion(LLViewerRegion * regionp); diff --git a/indra/newview/llavatarrendernotifier.h b/indra/newview/llavatarrendernotifier.h index a169baef40..ec17b3d9e6 100644 --- a/indra/newview/llavatarrendernotifier.h +++ b/indra/newview/llavatarrendernotifier.h @@ -67,9 +67,9 @@ typedef std::list<LLHUDComplexity> hud_complexity_list_t; // reported that user's agent is too 'heavy' for their settings class LLAvatarRenderNotifier : public LLSingleton<LLAvatarRenderNotifier> { -public: - LLAvatarRenderNotifier(); + LLSINGLETON(LLAvatarRenderNotifier); +public: void displayNotification(bool show_over_limit); bool isNotificationVisible(); @@ -114,10 +114,10 @@ private: // Class to notify user about heavy set of HUD class LLHUDRenderNotifier : public LLSingleton<LLHUDRenderNotifier> { -public: - LLHUDRenderNotifier(); + LLSINGLETON(LLHUDRenderNotifier); ~LLHUDRenderNotifier(); +public: void updateNotificationHUD(hud_complexity_list_t complexity); bool isNotificationVisible(); diff --git a/indra/newview/llchannelmanager.h b/indra/newview/llchannelmanager.h index a5de8a5327..8b9d0dda8b 100644 --- a/indra/newview/llchannelmanager.h +++ b/indra/newview/llchannelmanager.h @@ -43,6 +43,9 @@ namespace LLNotificationsUI */ class LLChannelManager : public LLSingleton<LLChannelManager> { + LLSINGLETON(LLChannelManager); + virtual ~LLChannelManager(); + public: @@ -65,9 +68,6 @@ public: } }; - LLChannelManager(); - virtual ~LLChannelManager(); - // On LoginCompleted - show StartUp toast void onLoginCompleted(); // removes a channel intended for the startup toast and allows other channels to show their toasts diff --git a/indra/newview/llchatitemscontainerctrl.cpp b/indra/newview/llchatitemscontainerctrl.cpp index cfc62c07b6..f5721fb348 100644 --- a/indra/newview/llchatitemscontainerctrl.cpp +++ b/indra/newview/llchatitemscontainerctrl.cpp @@ -240,6 +240,32 @@ void LLFloaterIMNearbyChatToastPanel::init(LLSD& notification) } } + S32 chars_in_line = mMsgText->getRect().getWidth() / messageFont->getWidth("c"); + S32 max_lines = notification["available_height"].asInteger() / (mMsgText->getTextPixelHeight() + 4); + S32 new_line_chars = std::count(messageText.begin(), messageText.end(), '\n'); + S32 lines_count = (messageText.size() - new_line_chars) / chars_in_line + new_line_chars + 1; + + //Remove excessive chars if message is not fit in available height. MAINT-6891 + if(lines_count > max_lines) + { + while(lines_count > max_lines) + { + std::size_t nl_pos = messageText.rfind('\n'); + if (nl_pos != std::string::npos) + { + nl_pos = nl_pos > messageText.length() - chars_in_line? nl_pos : messageText.length() - chars_in_line; + messageText.erase(messageText.begin() + nl_pos, messageText.end()); + } + else + { + messageText.erase(messageText.end() - chars_in_line, messageText.end()); + } + new_line_chars = std::count(messageText.begin(), messageText.end(), '\n'); + lines_count = (messageText.size() - new_line_chars) / chars_in_line + new_line_chars; + } + messageText += " ..."; + } + //append text { LLStyle::Params style_params; diff --git a/indra/newview/llchicletbar.cpp b/indra/newview/llchicletbar.cpp index 254e3f61a8..c4f959bfa9 100644 --- a/indra/newview/llchicletbar.cpp +++ b/indra/newview/llchicletbar.cpp @@ -38,7 +38,7 @@ namespace const std::string& PANEL_CHICLET_NAME = "chiclet_list_panel"; } -LLChicletBar::LLChicletBar(const LLSD&) +LLChicletBar::LLChicletBar() : mChicletPanel(NULL), mToolbarStack(NULL) { diff --git a/indra/newview/llchicletbar.h b/indra/newview/llchicletbar.h index 956c82cb77..6c521dc1d5 100644 --- a/indra/newview/llchicletbar.h +++ b/indra/newview/llchicletbar.h @@ -38,8 +38,9 @@ class LLChicletBar : public LLSingleton<LLChicletBar> , public LLPanel { + LLSINGLETON(LLChicletBar); LOG_CLASS(LLChicletBar); - friend class LLSingleton<LLChicletBar>; + public: BOOL postBuild(); @@ -82,8 +83,6 @@ private: void fitWithTopInfoBar(); protected: - LLChicletBar(const LLSD& key = LLSD()); - LLChicletPanel* mChicletPanel; LLLayoutStack* mToolbarStack; }; diff --git a/indra/newview/llconversationlog.h b/indra/newview/llconversationlog.h index 62f08144b9..035cbcb945 100644 --- a/indra/newview/llconversationlog.h +++ b/indra/newview/llconversationlog.h @@ -109,7 +109,7 @@ private: class LLConversationLog : public LLSingleton<LLConversationLog>, LLIMSessionObserver { - friend class LLSingleton<LLConversationLog>; + LLSINGLETON(LLConversationLog); public: void removeConversation(const LLConversation& conversation); @@ -157,7 +157,6 @@ public: private: - LLConversationLog(); virtual ~LLConversationLog() { if (mAvatarNameCacheConnection.connected()) diff --git a/indra/newview/llconversationview.cpp b/indra/newview/llconversationview.cpp index b18e543f0a..15a8aacd37 100644 --- a/indra/newview/llconversationview.cpp +++ b/indra/newview/llconversationview.cpp @@ -303,7 +303,7 @@ BOOL LLConversationViewSession::handleMouseUp( S32 x, S32 y, MASK mask ) LLConversationItem* item = dynamic_cast<LLConversationItem *>(getViewModelItem()); LLUUID session_id = item? item->getUUID() : LLUUID(); LLFloaterIMSessionTab* session_floater = LLFloaterIMSessionTab::findConversation(session_id); - if(!session_floater->hasFocus()) + if(session_floater && !session_floater->hasFocus()) { session_floater->setFocus(true); } @@ -458,6 +458,11 @@ void LLConversationViewSession::refresh() } } } + + if (mSpeakingIndicator) + { + mSpeakingIndicator->setShowParticipantsSpeaking(mIsInActiveVoiceChannel); + } requestArrange(); // Do the regular upstream refresh LLFolderViewFolder::refresh(); diff --git a/indra/newview/lldaycyclemanager.h b/indra/newview/lldaycyclemanager.h index 3d2144960d..04db9d5dac 100644 --- a/indra/newview/lldaycyclemanager.h +++ b/indra/newview/lldaycyclemanager.h @@ -40,6 +40,7 @@ */ class LLDayCycleManager : public LLSingleton<LLDayCycleManager> { + LLSINGLETON_EMPTY_CTOR(LLDayCycleManager); LOG_CLASS(LLDayCycleManager); public: @@ -66,7 +67,6 @@ public: boost::signals2::connection setModifyCallback(const modify_signal_t::slot_type& cb); private: - friend class LLSingleton<LLDayCycleManager>; /*virtual*/ void initSingleton(); void loadAllPresets(); diff --git a/indra/newview/lldeferredsounds.h b/indra/newview/lldeferredsounds.h index bf1eb62957..33f02b3521 100644 --- a/indra/newview/lldeferredsounds.h +++ b/indra/newview/lldeferredsounds.h @@ -33,7 +33,7 @@ struct SoundData; class LLDeferredSounds : public LLSingleton<LLDeferredSounds> { -private: + LLSINGLETON_EMPTY_CTOR(LLDeferredSounds); std::vector<SoundData> soundVector; public: //Add sounds to be played once progress bar is hidden (such as after teleport or loading screen) diff --git a/indra/newview/lldonotdisturbnotificationstorage.cpp b/indra/newview/lldonotdisturbnotificationstorage.cpp index 7836e2cb94..7d2712eec7 100644 --- a/indra/newview/lldonotdisturbnotificationstorage.cpp +++ b/indra/newview/lldonotdisturbnotificationstorage.cpp @@ -69,8 +69,7 @@ BOOL LLDoNotDisturbNotificationStorageTimer::tick() } LLDoNotDisturbNotificationStorage::LLDoNotDisturbNotificationStorage() - : LLSingleton<LLDoNotDisturbNotificationStorage>() - , LLNotificationStorage("") + : LLNotificationStorage("") , mDirty(false) { nameToPayloadParameterMap[toastName] = "SESSION_ID"; diff --git a/indra/newview/lldonotdisturbnotificationstorage.h b/indra/newview/lldonotdisturbnotificationstorage.h index 6e68b0d1be..e6cb7835e3 100644 --- a/indra/newview/lldonotdisturbnotificationstorage.h +++ b/indra/newview/lldonotdisturbnotificationstorage.h @@ -47,14 +47,14 @@ public: class LLDoNotDisturbNotificationStorage : public LLSingleton<LLDoNotDisturbNotificationStorage>, public LLNotificationStorage { + LLSINGLETON(LLDoNotDisturbNotificationStorage); + ~LLDoNotDisturbNotificationStorage(); + LOG_CLASS(LLDoNotDisturbNotificationStorage); public: static const char * toastName; static const char * offerName; - LLDoNotDisturbNotificationStorage(); - ~LLDoNotDisturbNotificationStorage(); - void initialize(); bool getDirty(); void resetDirty(); diff --git a/indra/newview/lldrawpoolalpha.cpp b/indra/newview/lldrawpoolalpha.cpp index 84ead0bdde..60056ac21d 100644 --- a/indra/newview/lldrawpoolalpha.cpp +++ b/indra/newview/lldrawpoolalpha.cpp @@ -401,7 +401,9 @@ void LLDrawPoolAlpha::renderAlpha(U32 mask, S32 pass) if ((params.mVertexBuffer->getTypeMask() & mask) != mask) { //FIXME! - LL_WARNS() << "Missing required components, skipping render batch." << LL_ENDL; + LL_WARNS_ONCE() << "Missing required components, expected mask: " << mask + << " present: " << (params.mVertexBuffer->getTypeMask() & mask) + << ". Skipping render batch." << LL_ENDL; continue; } diff --git a/indra/newview/llenvmanager.cpp b/indra/newview/llenvmanager.cpp index a626ad1bff..b97e483fd9 100644 --- a/indra/newview/llenvmanager.cpp +++ b/indra/newview/llenvmanager.cpp @@ -609,10 +609,15 @@ bool LLEnvManagerNew::useRegionSky() return true; } - // *TODO: Support fixed sky from region. - - // Otherwise apply region day cycle. + // Otherwise apply region day cycle/skies. LL_DEBUGS("Windlight") << "Applying region sky" << LL_ENDL; + + // *TODO: Support fixed sky from region. Just do sky reset for now. + if (region_settings.getSkyMap().size() == 1) + { + // Region is set to fixed sky. Reset. + useSkyParams(region_settings.getSkyMap().beginMap()->second); + } return useDayCycleParams( region_settings.getWLDayCycle(), LLEnvKey::SCOPE_REGION, diff --git a/indra/newview/llenvmanager.h b/indra/newview/llenvmanager.h index c7877303fc..6a0a267f4e 100644 --- a/indra/newview/llenvmanager.h +++ b/indra/newview/llenvmanager.h @@ -162,14 +162,13 @@ public: */ class LLEnvManagerNew : public LLSingleton<LLEnvManagerNew> { + LLSINGLETON(LLEnvManagerNew); LOG_CLASS(LLEnvManagerNew); public: typedef boost::signals2::signal<void()> prefs_change_signal_t; typedef boost::signals2::signal<void()> region_settings_change_signal_t; typedef boost::signals2::signal<void(bool)> region_settings_applied_signal_t; - LLEnvManagerNew(); - // getters to access user env. preferences bool getUseRegionSettings() const; bool getUseDayCycle() const; @@ -231,7 +230,6 @@ public: void onRegionSettingsApplyResponse(bool ok); private: - friend class LLSingleton<LLEnvManagerNew>; /*virtual*/ void initSingleton(); void loadUserPrefs(); diff --git a/indra/newview/llestateinfomodel.h b/indra/newview/llestateinfomodel.h index fcfbd1ce7d..e7a6a2a725 100644 --- a/indra/newview/llestateinfomodel.h +++ b/indra/newview/llestateinfomodel.h @@ -38,6 +38,7 @@ class LLMessageSystem; */ class LLEstateInfoModel : public LLSingleton<LLEstateInfoModel> { + LLSINGLETON(LLEstateInfoModel); LOG_CLASS(LLEstateInfoModel); public: @@ -73,11 +74,8 @@ public: protected: typedef std::vector<std::string> strings_t; - friend class LLSingleton<LLEstateInfoModel>; friend class LLDispatchEstateUpdateInfo; - LLEstateInfoModel(); - /// refresh model with data from the incoming server message void update(const strings_t& strings); diff --git a/indra/newview/llexpandabletextbox.cpp b/indra/newview/llexpandabletextbox.cpp index f0331f20d8..314b859cea 100644 --- a/indra/newview/llexpandabletextbox.cpp +++ b/indra/newview/llexpandabletextbox.cpp @@ -63,10 +63,10 @@ public: { return start_offset; } - /*virtual*/ S32 getNumChars(S32 num_pixels, S32 segment_offset, S32 line_offset, S32 max_chars) const + /*virtual*/ S32 getNumChars(S32 num_pixels, S32 segment_offset, S32 line_offset, S32 max_chars, S32 line_ind) const { // require full line to ourselves - if (line_offset == 0) + if (line_offset == 0) { // print all our text return getEnd() - getStart(); diff --git a/indra/newview/llexperiencelog.h b/indra/newview/llexperiencelog.h index ac227db336..09e0cd8821 100644 --- a/indra/newview/llexperiencelog.h +++ b/indra/newview/llexperiencelog.h @@ -33,6 +33,7 @@ class LLExperienceLog : public LLSingleton<LLExperienceLog> { + LLSINGLETON(LLExperienceLog); public: typedef boost::signals2::signal<void(LLSD&)> callback_signal_t; @@ -62,7 +63,6 @@ public: void setEventsToSave(LLSD new_events){mEventsToSave = new_events; } bool isNotExpired(std::string& date); protected: - LLExperienceLog(); void handleExperienceMessage(LLSD& message); @@ -81,7 +81,6 @@ protected: bool mNotifyNewEvent; friend class LLExperienceLogDispatchHandler; - friend class LLSingleton<LLExperienceLog>; }; diff --git a/indra/newview/llfacebookconnect.h b/indra/newview/llfacebookconnect.h index 2a2cdb5499..7fd4070f54 100644 --- a/indra/newview/llfacebookconnect.h +++ b/indra/newview/llfacebookconnect.h @@ -43,6 +43,8 @@ class LLEventPump; */ class LLFacebookConnect : public LLSingleton<LLFacebookConnect> { + LLSINGLETON(LLFacebookConnect); + ~LLFacebookConnect() {}; LOG_CLASS(LLFacebookConnect); public: enum EConnectionState @@ -86,10 +88,7 @@ public: void openFacebookWeb(std::string url); private: - friend class LLSingleton<LLFacebookConnect>; - LLFacebookConnect(); - ~LLFacebookConnect() {}; std::string getFacebookConnectURL(const std::string& route = "", bool include_read_from_master = false); EConnectionState mConnectionState; diff --git a/indra/newview/llfasttimerview.cpp b/indra/newview/llfasttimerview.cpp index d1e77f57e2..a69b3b7dc7 100644 --- a/indra/newview/llfasttimerview.cpp +++ b/indra/newview/llfasttimerview.cpp @@ -238,7 +238,7 @@ BOOL LLFastTimerView::handleHover(S32 x, S32 y, MASK mask) { return TRUE; } - else if (mHoverBarIndex == -1) + else if (mHoverBarIndex < 0) { mHoverBarIndex = 0; } @@ -260,7 +260,7 @@ BOOL LLFastTimerView::handleHover(S32 x, S32 y, MASK mask) { hover_bar = &bar; if (bar.mTimeBlock->getTreeNode().mCollapsed) - { + { // stop on first collapsed BlockTimerStatHandle, since we can't select any children break; } diff --git a/indra/newview/llfavoritesbar.h b/indra/newview/llfavoritesbar.h index 2115f77cf3..cac32c7f2a 100644 --- a/indra/newview/llfavoritesbar.h +++ b/indra/newview/llfavoritesbar.h @@ -34,6 +34,7 @@ #include "llinventoryobserver.h" #include "llinventorymodel.h" #include "llviewerinventory.h" +#include "llinitdestroyclass.h" class LLMenuItemCallGL; class LLToggleableMenu; @@ -173,6 +174,7 @@ private: class LLFavoritesOrderStorage : public LLSingleton<LLFavoritesOrderStorage> , public LLDestroyClass<LLFavoritesOrderStorage> { + LLSINGLETON(LLFavoritesOrderStorage); LOG_CLASS(LLFavoritesOrderStorage); public: /** @@ -221,10 +223,6 @@ public: std::map<LLUUID,std::string> mFavoriteNames; private: - friend class LLSingleton<LLFavoritesOrderStorage>; - LLFavoritesOrderStorage() : mIsDirty(false), mUpdateRequired(false){ load(); } - ~LLFavoritesOrderStorage() {} - /** * Removes sort indexes for items which are not in Favorites bar for now. */ @@ -274,4 +272,10 @@ private: }; }; + +inline +LLFavoritesOrderStorage::LLFavoritesOrderStorage() : + mIsDirty(false), mUpdateRequired(false) +{ load(); } + #endif // LL_LLFAVORITESBARCTRL_H diff --git a/indra/newview/llfeaturemanager.h b/indra/newview/llfeaturemanager.h index c3d87cea0b..54bd07329a 100644 --- a/indra/newview/llfeaturemanager.h +++ b/indra/newview/llfeaturemanager.h @@ -97,20 +97,10 @@ protected: class LLFeatureManager : public LLFeatureList, public LLSingleton<LLFeatureManager> { -public: - LLFeatureManager() - : LLFeatureList("default"), - - mInited(FALSE), - mTableVersion(0), - mSafe(FALSE), - mGPUClass(GPU_CLASS_UNKNOWN), - mExpectedGLVersion(0.f), - mGPUSupported(FALSE) - { - } + LLSINGLETON(LLFeatureManager); ~LLFeatureManager() {cleanupFeatureTables();} +public: // initialize this by loading feature table and gpu table void init(); @@ -181,5 +171,17 @@ protected: BOOL mGPUSupported; }; +inline +LLFeatureManager::LLFeatureManager() +: LLFeatureList("default"), + + mInited(FALSE), + mTableVersion(0), + mSafe(FALSE), + mGPUClass(GPU_CLASS_UNKNOWN), + mExpectedGLVersion(0.f), + mGPUSupported(FALSE) +{ +} #endif // LL_LLFEATUREMANAGER_H diff --git a/indra/newview/llfilteredwearablelist.cpp b/indra/newview/llfilteredwearablelist.cpp index a29ccf2b6d..f2af9b5300 100644 --- a/indra/newview/llfilteredwearablelist.cpp +++ b/indra/newview/llfilteredwearablelist.cpp @@ -93,4 +93,9 @@ void LLFilteredWearableListManager::populateList() mWearableList->refreshList(item_array); } +void LLFilteredWearableListManager::holdProgress() +{ + mWearableList->setForceRefresh(false); +} + // EOF diff --git a/indra/newview/llfilteredwearablelist.h b/indra/newview/llfilteredwearablelist.h index c21458ca98..f44ab1466f 100644 --- a/indra/newview/llfilteredwearablelist.h +++ b/indra/newview/llfilteredwearablelist.h @@ -56,6 +56,11 @@ public: */ void populateList(); + /** + * Drop operation + */ + void holdProgress(); + private: LLInventoryItemsList* mWearableList; LLInventoryCollectFunctor* mCollector; diff --git a/indra/newview/llflickrconnect.h b/indra/newview/llflickrconnect.h index 0155804da0..43cadca708 100644 --- a/indra/newview/llflickrconnect.h +++ b/indra/newview/llflickrconnect.h @@ -43,6 +43,8 @@ class LLEventPump; */ class LLFlickrConnect : public LLSingleton<LLFlickrConnect> { + LLSINGLETON(LLFlickrConnect); + ~LLFlickrConnect() {}; LOG_CLASS(LLFlickrConnect); public: enum EConnectionState @@ -80,10 +82,7 @@ public: void openFlickrWeb(std::string url); private: - friend class LLSingleton<LLFlickrConnect>; - LLFlickrConnect(); - ~LLFlickrConnect() {}; std::string getFlickrConnectURL(const std::string& route = "", bool include_read_from_master = false); EConnectionState mConnectionState; diff --git a/indra/newview/llfloateravatarpicker.cpp b/indra/newview/llfloateravatarpicker.cpp index aa7bfbfdb7..c394eb815b 100644 --- a/indra/newview/llfloateravatarpicker.cpp +++ b/indra/newview/llfloateravatarpicker.cpp @@ -502,37 +502,39 @@ void LLFloaterAvatarPicker::find() url.reserve(128); // avoid a memory allocation or two LLViewerRegion* region = gAgent.getRegion(); - url = region->getCapability("AvatarPickerSearch"); - // Prefer use of capabilities to search on both SLID and display name - if (!url.empty()) + if(region) { - // capability urls don't end in '/', but we need one to parse - // query parameters correctly - if (url.size() > 0 && url[url.size()-1] != '/') + url = region->getCapability("AvatarPickerSearch"); + // Prefer use of capabilities to search on both SLID and display name + if (!url.empty()) { - url += "/"; - } - url += "?page_size=100&names="; - std::replace(text.begin(), text.end(), '.', ' '); - url += LLURI::escape(text); - LL_INFOS() << "avatar picker " << url << LL_ENDL; + // capability urls don't end in '/', but we need one to parse + // query parameters correctly + if (url.size() > 0 && url[url.size()-1] != '/') + { + url += "/"; + } + url += "?page_size=100&names="; + std::replace(text.begin(), text.end(), '.', ' '); + url += LLURI::escape(text); + LL_INFOS() << "avatar picker " << url << LL_ENDL; - LLCoros::instance().launch("LLFloaterAvatarPicker::findCoro", - boost::bind(&LLFloaterAvatarPicker::findCoro, url, mQueryID, getKey().asString())); - } - else - { - LLMessageSystem* msg = gMessageSystem; - msg->newMessage("AvatarPickerRequest"); - msg->nextBlock("AgentData"); - msg->addUUID("AgentID", gAgent.getID()); - msg->addUUID("SessionID", gAgent.getSessionID()); - msg->addUUID("QueryID", mQueryID); // not used right now - msg->nextBlock("Data"); - msg->addString("Name", text); - gAgent.sendReliableMessage(); + LLCoros::instance().launch("LLFloaterAvatarPicker::findCoro", + boost::bind(&LLFloaterAvatarPicker::findCoro, url, mQueryID, getKey().asString())); + } + else + { + LLMessageSystem* msg = gMessageSystem; + msg->newMessage("AvatarPickerRequest"); + msg->nextBlock("AgentData"); + msg->addUUID("AgentID", gAgent.getID()); + msg->addUUID("SessionID", gAgent.getSessionID()); + msg->addUUID("QueryID", mQueryID); // not used right now + msg->nextBlock("Data"); + msg->addString("Name", text); + gAgent.sendReliableMessage(); + } } - getChild<LLScrollListCtrl>("SearchResults")->deleteAllItems(); getChild<LLScrollListCtrl>("SearchResults")->setCommentText(getString("searching")); diff --git a/indra/newview/llfloaterbuycontents.cpp b/indra/newview/llfloaterbuycontents.cpp index b32ac860aa..4607b4ac41 100644 --- a/indra/newview/llfloaterbuycontents.cpp +++ b/indra/newview/llfloaterbuycontents.cpp @@ -44,7 +44,6 @@ #include "llinventorymodel.h" // for gInventory #include "llfirstuse.h" #include "llfloaterreg.h" -#include "llfloaterinventory.h" // for LLInventoryIcon::getIcon #include "llnotificationsutil.h" #include "llselectmgr.h" #include "llscrolllistctrl.h" diff --git a/indra/newview/llfloaterbvhpreview.cpp b/indra/newview/llfloaterbvhpreview.cpp index d33a138e94..5f606ec326 100644 --- a/indra/newview/llfloaterbvhpreview.cpp +++ b/indra/newview/llfloaterbvhpreview.cpp @@ -1004,7 +1004,7 @@ void LLFloaterBvhPreview::onBtnOK(void* userdata) { std::string name = floaterp->getChild<LLUICtrl>("name_form")->getValue().asString(); std::string desc = floaterp->getChild<LLUICtrl>("description_form")->getValue().asString(); - S32 expected_upload_cost = LLGlobalEconomy::Singleton::getInstance()->getPriceUpload(); + S32 expected_upload_cost = LLGlobalEconomy::getInstance()->getPriceUpload(); LLResourceUploadInfo::ptr_t assetUpdloadInfo(new LLResourceUploadInfo( floaterp->mTransactionID, LLAssetType::AT_ANIMATION, diff --git a/indra/newview/llfloaterimcontainer.cpp b/indra/newview/llfloaterimcontainer.cpp index 15b67b905d..7007c58b3c 100644 --- a/indra/newview/llfloaterimcontainer.cpp +++ b/indra/newview/llfloaterimcontainer.cpp @@ -101,7 +101,7 @@ LLFloaterIMContainer::~LLFloaterIMContainer() gSavedPerAccountSettings.setBOOL("ConversationsMessagePaneCollapsed", mMessagesPane->isCollapsed()); gSavedPerAccountSettings.setBOOL("ConversationsParticipantListCollapsed", !isParticipantListExpanded()); - if (!LLSingleton<LLIMMgr>::destroyed()) + if (LLIMMgr::instanceExists()) { LLIMMgr::getInstance()->removeSessionObserver(this); } @@ -1505,15 +1505,21 @@ bool LLFloaterIMContainer::checkContextMenuItem(const std::string& item, uuid_ve bool LLFloaterIMContainer::visibleContextMenuItem(const LLSD& userdata) { + const LLConversationItem *conversation_item = getCurSelectedViewModelItem(); + if(!conversation_item) + { + return false; + } + const std::string& item = userdata.asString(); if ("show_mute" == item) { - return !isMuted(getCurSelectedViewModelItem()->getUUID()); + return !isMuted(conversation_item->getUUID()); } else if ("show_unmute" == item) { - return isMuted(getCurSelectedViewModelItem()->getUUID()); + return isMuted(conversation_item->getUUID()); } return true; diff --git a/indra/newview/llfloaterimnearbychathandler.cpp b/indra/newview/llfloaterimnearbychathandler.cpp index 9fd731ed56..4cd91c53d8 100644 --- a/indra/newview/llfloaterimnearbychathandler.cpp +++ b/indra/newview/llfloaterimnearbychathandler.cpp @@ -285,6 +285,14 @@ void LLFloaterIMNearbyChatScreenChannel::addChat(LLSD& chat) if(mStopProcessing) return; + if (mFloaterSnapRegion == NULL) + { + mFloaterSnapRegion = gViewerWindow->getRootView()->getChildView("floater_snap_region"); + } + LLRect channel_rect; + mFloaterSnapRegion->localRectToOtherView(mFloaterSnapRegion->getLocalRect(), &channel_rect, gFloaterView); + chat["available_height"] = channel_rect.getHeight() - channel_rect.mBottom - gSavedSettings.getS32("ToastGap") - 110;; + /* find last toast and check ID */ @@ -380,7 +388,7 @@ void LLFloaterIMNearbyChatScreenChannel::arrangeToasts() setFollows(FOLLOWS_ALL); } - LLRect toast_rect; + LLRect toast_rect; updateRect(); LLRect channel_rect; diff --git a/indra/newview/llfloaterinventory.cpp b/indra/newview/llfloaterinventory.cpp deleted file mode 100644 index 9b9b90e521..0000000000 --- a/indra/newview/llfloaterinventory.cpp +++ /dev/null @@ -1,109 +0,0 @@ -/** - * @file llfloaterinventory.cpp - * @brief Implementation of the inventory view and associated stuff. - * - * $LicenseInfo:firstyear=2001&license=viewerlgpl$ - * Second Life Viewer Source Code - * Copyright (C) 2010, Linden Research, Inc. - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; - * version 2.1 of the License only. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - * - * Linden Research, Inc., 945 Battery Street, San Francisco, CA 94111 USA - * $/LicenseInfo$ - */ - -#include "llviewerprecompiledheaders.h" - -#include "llfloaterinventory.h" - -#include "llagentcamera.h" -//#include "llfirstuse.h" -#include "llfloaterreg.h" -#include "llinventorymodel.h" -#include "llpanelmaininventory.h" -#include "llresmgr.h" -#include "llviewerfoldertype.h" -#include "lltransientfloatermgr.h" - -///---------------------------------------------------------------------------- -/// LLFloaterInventory -///---------------------------------------------------------------------------- - -LLFloaterInventory::LLFloaterInventory(const LLSD& key) - : LLFloater(key) -{ - LLTransientFloaterMgr::getInstance()->addControlView(this); -} - -LLFloaterInventory::~LLFloaterInventory() -{ - LLTransientFloaterMgr::getInstance()->removeControlView(this); -} - -BOOL LLFloaterInventory::postBuild() -{ - mPanelMainInventory = findChild<LLPanelMainInventory>("Inventory Panel"); - return TRUE; -} - -LLInventoryPanel* LLFloaterInventory::getPanel() -{ - if (mPanelMainInventory) - return mPanelMainInventory->getPanel(); - return NULL; -} - -// static -LLFloaterInventory* LLFloaterInventory::showAgentInventory() -{ - // Hack to generate semi-unique key for each inventory floater. - static S32 instance_num = 0; - instance_num = (instance_num + 1) % S32_MAX; - - LLFloaterInventory* iv = NULL; - if (!gAgentCamera.cameraMouselook()) - { - iv = LLFloaterReg::showTypedInstance<LLFloaterInventory>("inventory", LLSD(instance_num)); - } - return iv; -} - -// static -void LLFloaterInventory::cleanup() -{ - LLFloaterReg::const_instance_list_t& inst_list = LLFloaterReg::getFloaterList("inventory"); - for (LLFloaterReg::const_instance_list_t::const_iterator iter = inst_list.begin(); iter != inst_list.end();) - { - LLFloaterInventory* iv = dynamic_cast<LLFloaterInventory*>(*iter++); - if (iv) - { - iv->destroy(); - } - } -} - -void LLFloaterInventory::onOpen(const LLSD& key) -{ - //LLFirstUse::useInventory(); -} - -void LLFloaterInventory::onClose(bool app_quitting) -{ - LLFloater::onClose(app_quitting); - if (mKey.asInteger() > 1) - { - destroy(); - } -} diff --git a/indra/newview/llfloaterinventory.h b/indra/newview/llfloaterinventory.h deleted file mode 100644 index 823c4903b4..0000000000 --- a/indra/newview/llfloaterinventory.h +++ /dev/null @@ -1,72 +0,0 @@ -/** - * @file llfloaterinventory.h - * @brief LLFloaterInventory, LLInventoryFolder, and LLInventoryItem - * class definition - * - * $LicenseInfo:firstyear=2001&license=viewerlgpl$ - * Second Life Viewer Source Code - * Copyright (C) 2010, Linden Research, Inc. - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; - * version 2.1 of the License only. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - * - * Linden Research, Inc., 945 Battery Street, San Francisco, CA 94111 USA - * $/LicenseInfo$ - */ - -#ifndef LL_LLFLOATERINVENTORY_H -#define LL_LLFLOATERINVENTORY_H - -#include "llfloater.h" -#include "llfoldertype.h" - -class LLInventoryPanel; -class LLPanelMainInventory; - -//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -// Class LLFloaterInventory -// -// This deals with the buttons and views used to navigate as -// well as controlling the behavior of the overall object. -//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - -class LLFloaterInventory : public LLFloater -{ -public: - LLFloaterInventory(const LLSD& key); - ~LLFloaterInventory(); - - BOOL postBuild(); - - // This method makes sure that an inventory view exists, is - // visible, and has focus. The view chosen is returned. - static LLFloaterInventory* showAgentInventory(); - - // Final cleanup, destroy all open inventory views. - static void cleanup(); - - // Inherited functionality - /*virtual*/ void onOpen(const LLSD& key); - /*virtual*/ void onClose(bool app_quitting); - - LLInventoryPanel* getPanel(); - LLPanelMainInventory* getMainInventoryPanel() { return mPanelMainInventory;} -private: - LLPanelMainInventory* mPanelMainInventory; -}; - -#endif // LL_LLFLOATERINVENTORY_H - - - diff --git a/indra/newview/llfloaterland.cpp b/indra/newview/llfloaterland.cpp index 7f952d4dd4..a340cd1143 100644 --- a/indra/newview/llfloaterland.cpp +++ b/indra/newview/llfloaterland.cpp @@ -2029,7 +2029,6 @@ void LLPanelLandOptions::refresh() else { // something selected, hooray! - LLViewerRegion* regionp = LLViewerParcelMgr::getInstance()->getSelectionRegion(); // Display options BOOL can_change_options = LLViewerParcelMgr::isParcelModifiableByAgent(parcel, GP_LAND_OPTIONS); @@ -2045,9 +2044,8 @@ void LLPanelLandOptions::refresh() mCheckGroupObjectEntry ->set( parcel->getAllowGroupObjectEntry() || parcel->getAllowAllObjectEntry()); mCheckGroupObjectEntry ->setEnabled( can_change_options && !parcel->getAllowAllObjectEntry() ); - BOOL region_damage = regionp ? regionp->getAllowDamage() : FALSE; mCheckSafe ->set( !parcel->getAllowDamage() ); - mCheckSafe ->setEnabled( can_change_options && region_damage ); + mCheckSafe ->setEnabled( can_change_options ); mCheckFly ->set( parcel->getAllowFly() ); mCheckFly ->setEnabled( can_change_options ); @@ -2127,6 +2125,7 @@ void LLPanelLandOptions::refresh() // they can see the checkbox, but its disposition depends on the // state of the region + LLViewerRegion* regionp = LLViewerParcelMgr::getInstance()->getSelectionRegion(); if (regionp) { if (regionp->getSimAccess() == SIM_ACCESS_PG) @@ -2448,6 +2447,7 @@ void LLPanelLandAccess::refresh() mListAccess->deleteAllItems(); S32 count = parcel->mAccessList.size(); getChild<LLUICtrl>("AllowedText")->setTextArg("[COUNT]", llformat("%d",count)); + getChild<LLUICtrl>("AllowedText")->setTextArg("[MAX]", llformat("%d",PARCEL_MAX_ACCESS_LIST)); getChild<LLUICtrl>("AccessList")->setToolTipArg(LLStringExplicit("[LISTED]"), llformat("%d",count)); getChild<LLUICtrl>("AccessList")->setToolTipArg(LLStringExplicit("[MAX]"), llformat("%d",PARCEL_MAX_ACCESS_LIST)); @@ -2495,6 +2495,7 @@ void LLPanelLandAccess::refresh() mListBanned->deleteAllItems(); S32 count = parcel->mBanList.size(); getChild<LLUICtrl>("BanCheck")->setTextArg("[COUNT]", llformat("%d",count)); + getChild<LLUICtrl>("BanCheck")->setTextArg("[MAX]", llformat("%d",PARCEL_MAX_ACCESS_LIST)); getChild<LLUICtrl>("BannedList")->setToolTipArg(LLStringExplicit("[LISTED]"), llformat("%d",count)); getChild<LLUICtrl>("BannedList")->setToolTipArg(LLStringExplicit("[MAX]"), llformat("%d",PARCEL_MAX_ACCESS_LIST)); diff --git a/indra/newview/llfloatermodelpreview.cpp b/indra/newview/llfloatermodelpreview.cpp index 7aae48cf5d..c654817849 100644 --- a/indra/newview/llfloatermodelpreview.cpp +++ b/indra/newview/llfloatermodelpreview.cpp @@ -1197,6 +1197,7 @@ void LLFloaterModelPreview::onMouseCaptureLostModelPreview(LLMouseHandler* handl LLModelPreview::LLModelPreview(S32 width, S32 height, LLFloater* fmp) : LLViewerDynamicTexture(width, height, 3, ORDER_MIDDLE, FALSE), LLMutex(NULL) , mLodsQuery() +, mLodsWithParsingError() , mPelvisZOffset( 0.0f ) , mLegacyRigValid( false ) , mRigValidJointUpload( false ) @@ -1780,8 +1781,8 @@ void LLModelPreview::loadModel(std::string filename, S32 lod, bool force_disable // this is the initial file picking. Close the whole floater // if we don't have a base model to show for high LOD. mFMP->closeFloater(false); - mLoading = false; } + mLoading = false; return; } @@ -1938,9 +1939,16 @@ void LLModelPreview::loadModelCallback(S32 loaded_lod) { mLoading = false ; mModelLoader = NULL; + mLodsWithParsingError.push_back(loaded_lod); return ; } + mLodsWithParsingError.erase(std::remove(mLodsWithParsingError.begin(), mLodsWithParsingError.end(), loaded_lod), mLodsWithParsingError.end()); + if(mLodsWithParsingError.empty()) + { + mFMP->childEnable( "calculate_btn" ); + } + // Copy determinations about rig so UI will reflect them // setRigValidForJointPositionUpload(mModelLoader->isRigValidForJointPositionUpload()); @@ -2162,7 +2170,11 @@ void LLModelPreview::loadModelCallback(S32 loaded_lod) if (!mBaseModel.empty()) { const std::string& model_name = mBaseModel[0]->getName(); - mFMP->getChild<LLUICtrl>("description_form")->setValue(model_name); + LLLineEditor* description_form = mFMP->getChild<LLLineEditor>("description_form"); + if (description_form->getText().empty()) + { + description_form->setText(model_name); + } } } refresh(); @@ -2687,17 +2699,7 @@ void LLModelPreview::updateStatusMessages() setLoadState( LLModelLoader::ERROR_MATERIALS ); mFMP->childDisable( "calculate_btn" ); } - - int refFaceCnt = 0; - int modelFaceCnt = 0; - - if (!lod_model->matchMaterialOrder(model_high_lod, refFaceCnt, modelFaceCnt ) ) - { - setLoadState( LLModelLoader::ERROR_MATERIALS ); - mFMP->childDisable( "calculate_btn" ); - } - - if (lod_model) + else { //for each model in the lod S32 cur_tris = 0; @@ -3630,7 +3632,7 @@ BOOL LLModelPreview::render() } } - if (has_skin_weights) + if (has_skin_weights && lodsReady()) { //model has skin weights, enable view options for skin weights and joint positions if (fmp && isLegacyRigValid() ) { @@ -4555,4 +4557,12 @@ void LLFloaterModelPreview::setPermissonsErrorStatus(S32 status, const std::stri LLNotificationsUtil::add("MeshUploadPermError"); } +bool LLFloaterModelPreview::isModelLoading() +{ + if(mModelPreview) + { + return mModelPreview->mLoading; + } + return false; +} diff --git a/indra/newview/llfloatermodelpreview.h b/indra/newview/llfloatermodelpreview.h index a7a5c1b33a..0b2b7db2b6 100644 --- a/indra/newview/llfloatermodelpreview.h +++ b/indra/newview/llfloatermodelpreview.h @@ -115,6 +115,8 @@ public: void enableViewOption(const std::string& option); void disableViewOption(const std::string& option); + bool isModelLoading(); + // shows warning message if agent has no permissions to upload model /*virtual*/ void onPermissionsReceived(const LLSD& result); @@ -304,6 +306,7 @@ public: static bool sIgnoreLoadedCallback; std::vector<S32> mLodsQuery; + std::vector<S32> mLodsWithParsingError; protected: diff --git a/indra/newview/llfloatermodeluploadbase.cpp b/indra/newview/llfloatermodeluploadbase.cpp index 0fe97fd610..7cdfd56d9a 100644 --- a/indra/newview/llfloatermodeluploadbase.cpp +++ b/indra/newview/llfloatermodeluploadbase.cpp @@ -80,6 +80,7 @@ void LLFloaterModelUploadBase::requestAgentUploadPermissionsCoro(std::string url if (!observer) { LL_WARNS("MeshUploadFlag") << "Unable to get observer after call to '" << url << "' aborting." << LL_ENDL; + return; } if (!status) diff --git a/indra/newview/llfloaternamedesc.cpp b/indra/newview/llfloaternamedesc.cpp index 4a5732aecf..c9a689281e 100644 --- a/indra/newview/llfloaternamedesc.cpp +++ b/indra/newview/llfloaternamedesc.cpp @@ -123,7 +123,7 @@ BOOL LLFloaterNameDesc::postBuild() // Cancel button getChild<LLUICtrl>("cancel_btn")->setCommitCallback(boost::bind(&LLFloaterNameDesc::onBtnCancel, this)); - getChild<LLUICtrl>("ok_btn")->setLabelArg("[AMOUNT]", llformat("%d", LLGlobalEconomy::Singleton::getInstance()->getPriceUpload() )); + getChild<LLUICtrl>("ok_btn")->setLabelArg("[AMOUNT]", llformat("%d", LLGlobalEconomy::getInstance()->getPriceUpload() )); setDefaultBtn("ok_btn"); @@ -162,7 +162,7 @@ void LLFloaterNameDesc::onBtnOK( ) getChildView("ok_btn")->setEnabled(FALSE); // don't allow inadvertent extra uploads LLAssetStorage::LLStoreAssetCallback callback = NULL; - S32 expected_upload_cost = LLGlobalEconomy::Singleton::getInstance()->getPriceUpload(); // kinda hack - assumes that unsubclassed LLFloaterNameDesc is only used for uploading chargeable assets, which it is right now (it's only used unsubclassed for the sound upload dialog, and THAT should be a subclass). + S32 expected_upload_cost = LLGlobalEconomy::getInstance()->getPriceUpload(); // kinda hack - assumes that unsubclassed LLFloaterNameDesc is only used for uploading chargeable assets, which it is right now (it's only used unsubclassed for the sound upload dialog, and THAT should be a subclass). if (can_afford_transaction(expected_upload_cost)) { diff --git a/indra/newview/llfloaterobjectweights.cpp b/indra/newview/llfloaterobjectweights.cpp index feaeef4ad0..ed1ad4426f 100644 --- a/indra/newview/llfloaterobjectweights.cpp +++ b/indra/newview/llfloaterobjectweights.cpp @@ -145,6 +145,14 @@ void LLFloaterObjectWeights::updateLandImpacts(const LLParcel* parcel) { S32 rezzed_prims = parcel->getSimWidePrimCount(); S32 total_capacity = parcel->getSimWideMaxPrimCapacity(); + // Can't have more than region max tasks, regardless of parcel + // object bonus factor. + LLViewerRegion* region = LLViewerParcelMgr::getInstance()->getSelectionRegion(); + if (region) + { + S32 max_tasks_per_region = (S32)region->getMaxTasks(); + total_capacity = llmin(total_capacity, max_tasks_per_region); + } mRezzedOnLand->setText(llformat("%d", rezzed_prims)); mRemainingCapacity->setText(llformat("%d", total_capacity - rezzed_prims)); diff --git a/indra/newview/llfloateropenobject.cpp b/indra/newview/llfloateropenobject.cpp index ef746d308d..2a1749bd42 100644 --- a/indra/newview/llfloateropenobject.cpp +++ b/indra/newview/llfloateropenobject.cpp @@ -39,7 +39,6 @@ #include "lltextbox.h" #include "llinventorybridge.h" -#include "llfloaterinventory.h" #include "llinventorymodel.h" #include "llinventorypanel.h" #include "llpanelobjectinventory.h" diff --git a/indra/newview/llfloateroutfitphotopreview.cpp b/indra/newview/llfloateroutfitphotopreview.cpp new file mode 100644 index 0000000000..6c39db730c --- /dev/null +++ b/indra/newview/llfloateroutfitphotopreview.cpp @@ -0,0 +1,289 @@ +/** + * @file llfloateroutfitphotopreview.cpp + * @brief LLFloaterOutfitPhotoPreview class implementation + * + * $LicenseInfo:firstyear=2002&license=viewerlgpl$ + * Second Life Viewer Source Code + * Copyright (C) 2010, Linden Research, Inc. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; + * version 2.1 of the License only. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + * + * Linden Research, Inc., 945 Battery Street, San Francisco, CA 94111 USA + * $/LicenseInfo$ + */ + +#include "llviewerprecompiledheaders.h" + +#include "llwindow.h" + +#include "llfloateroutfitphotopreview.h" + +#include "llagent.h" +#include "llappearancemgr.h" +#include "llbutton.h" +#include "llcombobox.h" +#include "llfilepicker.h" +#include "llfloaterreg.h" +#include "llimagetga.h" +#include "llimagepng.h" +#include "llinventory.h" +#include "llinventorymodel.h" +#include "llnotificationsutil.h" +#include "llresmgr.h" +#include "lltrans.h" +#include "lltextbox.h" +#include "lltextureview.h" +#include "llui.h" +#include "llviewerinventory.h" +#include "llviewertexture.h" +#include "llviewertexturelist.h" +#include "lluictrlfactory.h" +#include "llviewerwindow.h" +#include "lllineeditor.h" + +const S32 MAX_OUTFIT_PHOTO_WIDTH = 256; +const S32 MAX_OUTFIT_PHOTO_HEIGHT = 256; + +const S32 CLIENT_RECT_VPAD = 4; + +LLFloaterOutfitPhotoPreview::LLFloaterOutfitPhotoPreview(const LLSD& key) + : LLPreview(key), + mUpdateDimensions(TRUE), + mImage(NULL), + mOutfitID(LLUUID()), + mImageOldBoostLevel(LLGLTexture::BOOST_NONE), + mExceedLimits(FALSE) +{ + updateImageID(); +} + +LLFloaterOutfitPhotoPreview::~LLFloaterOutfitPhotoPreview() +{ + LLLoadedCallbackEntry::cleanUpCallbackList(&mCallbackTextureList) ; + + if (mImage.notNull()) + { + mImage->setBoostLevel(mImageOldBoostLevel); + mImage = NULL; + } +} + +// virtual +BOOL LLFloaterOutfitPhotoPreview::postBuild() +{ + getChild<LLButton>("ok_btn")->setClickedCallback(boost::bind(&LLFloaterOutfitPhotoPreview::onOkBtn, this)); + getChild<LLButton>("cancel_btn")->setClickedCallback(boost::bind(&LLFloaterOutfitPhotoPreview::onCancelBtn, this)); + + return LLPreview::postBuild(); +} + +void LLFloaterOutfitPhotoPreview::draw() +{ + updateDimensions(); + + LLPreview::draw(); + + if (!isMinimized()) + { + LLGLSUIDefault gls_ui; + gGL.getTexUnit(0)->unbind(LLTexUnit::TT_TEXTURE); + + const LLRect& border = mClientRect; + LLRect interior = mClientRect; + interior.stretch( -PREVIEW_BORDER_WIDTH ); + + // ...border + gl_rect_2d( border, LLColor4(0.f, 0.f, 0.f, 1.f)); + gl_rect_2d_checkerboard( interior ); + + if ( mImage.notNull() ) + { + // Draw the texture + gGL.diffuseColor3f( 1.f, 1.f, 1.f ); + gl_draw_scaled_image(interior.mLeft, + interior.mBottom, + interior.getWidth(), + interior.getHeight(), + mImage); + + // Pump the texture priority + F32 pixel_area = (F32)(interior.getWidth() * interior.getHeight() ); + mImage->addTextureStats( pixel_area ); + + S32 int_width = interior.getWidth(); + S32 int_height = interior.getHeight(); + mImage->setKnownDrawSize(int_width, int_height); + } + } + +} + +// virtual +void LLFloaterOutfitPhotoPreview::reshape(S32 width, S32 height, BOOL called_from_parent) +{ + LLPreview::reshape(width, height, called_from_parent); + + LLRect dim_rect(getChildView("dimensions")->getRect()); + + S32 horiz_pad = 2 * (LLPANEL_BORDER_WIDTH + PREVIEW_PAD) + PREVIEW_RESIZE_HANDLE_SIZE; + + S32 info_height = dim_rect.mTop + CLIENT_RECT_VPAD; + + LLRect client_rect(horiz_pad, getRect().getHeight(), getRect().getWidth() - horiz_pad, 0); + client_rect.mTop -= (PREVIEW_HEADER_SIZE + CLIENT_RECT_VPAD); + client_rect.mBottom += PREVIEW_BORDER + CLIENT_RECT_VPAD + info_height ; + + S32 client_width = client_rect.getWidth(); + S32 client_height = client_width; + + if(client_height > client_rect.getHeight()) + { + client_height = client_rect.getHeight(); + client_width = client_height; + } + mClientRect.setLeftTopAndSize(client_rect.getCenterX() - (client_width / 2), client_rect.getCenterY() + (client_height / 2), client_width, client_height); + +} + + +void LLFloaterOutfitPhotoPreview::updateDimensions() +{ + if (!mImage) + { + return; + } + if ((mImage->getFullWidth() * mImage->getFullHeight()) == 0) + { + return; + } + + if (mAssetStatus != PREVIEW_ASSET_LOADED) + { + mAssetStatus = PREVIEW_ASSET_LOADED; + mUpdateDimensions = TRUE; + } + + getChild<LLUICtrl>("dimensions")->setTextArg("[WIDTH]", llformat("%d", mImage->getFullWidth())); + getChild<LLUICtrl>("dimensions")->setTextArg("[HEIGHT]", llformat("%d", mImage->getFullHeight())); + + if ((mImage->getFullWidth() <= MAX_OUTFIT_PHOTO_WIDTH) && (mImage->getFullHeight() <= MAX_OUTFIT_PHOTO_HEIGHT)) + { + getChild<LLButton>("ok_btn")->setEnabled(TRUE); + mExceedLimits = FALSE; + } + else + { + mExceedLimits = TRUE; + LLStringUtil::format_map_t args; + args["MAX_WIDTH"] = llformat("%d", MAX_OUTFIT_PHOTO_WIDTH); + args["MAX_HEIGHT"] = llformat("%d", MAX_OUTFIT_PHOTO_HEIGHT); + std::string label = getString("exceed_limits", args); + getChild<LLUICtrl>("notification")->setValue(label); + getChild<LLUICtrl>("notification")->setColor(LLColor4::yellow); + getChild<LLButton>("ok_btn")->setEnabled(FALSE); + } + + if (mUpdateDimensions) + { + mUpdateDimensions = FALSE; + + reshape(getRect().getWidth(), getRect().getHeight()); + gFloaterView->adjustToFitScreen(this, FALSE); + } +} + +void LLFloaterOutfitPhotoPreview::loadAsset() +{ + if (mImage.notNull()) + { + mImage->setBoostLevel(mImageOldBoostLevel); + } + mImage = LLViewerTextureManager::getFetchedTexture(mImageID, FTT_DEFAULT, MIPMAP_TRUE, LLGLTexture::BOOST_NONE, LLViewerTexture::LOD_TEXTURE); + mImageOldBoostLevel = mImage->getBoostLevel(); + mImage->setBoostLevel(LLGLTexture::BOOST_PREVIEW); + mImage->forceToSaveRawImage(0) ; + mAssetStatus = PREVIEW_ASSET_LOADING; + mUpdateDimensions = TRUE; + updateDimensions(); +} + +LLPreview::EAssetStatus LLFloaterOutfitPhotoPreview::getAssetStatus() +{ + if (mImage.notNull() && (mImage->getFullWidth() * mImage->getFullHeight() > 0)) + { + mAssetStatus = PREVIEW_ASSET_LOADED; + } + return mAssetStatus; +} + +void LLFloaterOutfitPhotoPreview::updateImageID() +{ + const LLViewerInventoryItem *item = static_cast<const LLViewerInventoryItem*>(getItem()); + if(item) + { + mImageID = item->getAssetUUID(); + LLPermissions perm(item->getPermissions()); + } + else + { + mImageID = mItemUUID; + } + +} + +/* virtual */ +void LLFloaterOutfitPhotoPreview::setObjectID(const LLUUID& object_id) +{ + mObjectUUID = object_id; + + const LLUUID old_image_id = mImageID; + + updateImageID(); + if (mImageID != old_image_id) + { + mAssetStatus = PREVIEW_ASSET_UNLOADED; + loadAsset(); + } + refreshFromItem(); +} + +void LLFloaterOutfitPhotoPreview::setOutfitID(const LLUUID& outfit_id) +{ + mOutfitID = outfit_id; + LLViewerInventoryCategory* outfit_folder = gInventory.getCategory(mOutfitID); + if(outfit_folder && !mExceedLimits) + { + getChild<LLUICtrl>("notification")->setValue( getString("photo_confirmation")); + getChild<LLUICtrl>("notification")->setTextArg("[OUTFIT]", outfit_folder->getName()); + getChild<LLUICtrl>("notification")->setColor(LLColor4::white); + } + +} + +void LLFloaterOutfitPhotoPreview::onOkBtn() +{ + if(mOutfitID.notNull() && getItem()) + { + LLAppearanceMgr::instance().removeOutfitPhoto(mOutfitID); + LLPointer<LLInventoryCallback> cb = NULL; + link_inventory_object(mOutfitID, LLConstPointer<LLInventoryObject>(getItem()), cb); + } + closeFloater(); +} + +void LLFloaterOutfitPhotoPreview::onCancelBtn() +{ + closeFloater(); +} diff --git a/indra/newview/llfloateroutfitphotopreview.h b/indra/newview/llfloateroutfitphotopreview.h new file mode 100644 index 0000000000..a1e7b58abe --- /dev/null +++ b/indra/newview/llfloateroutfitphotopreview.h @@ -0,0 +1,77 @@ +/** + * @file llfloateroutfitphotopreview.h + * @brief LLFloaterOutfitPhotoPreview class definition + * + * $LicenseInfo:firstyear=2002&license=viewerlgpl$ + * Second Life Viewer Source Code + * Copyright (C) 2010, Linden Research, Inc. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; + * version 2.1 of the License only. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + * + * Linden Research, Inc., 945 Battery Street, San Francisco, CA 94111 USA + * $/LicenseInfo$ + */ + +#ifndef LL_LLFLOATEROUTFITPHOTOPREVIEW_H +#define LL_LLFLOATEROUTFITPHOTOPREVIEW_H + +#include "llpreview.h" +#include "llbutton.h" +#include "llframetimer.h" +#include "llviewertexture.h" + +class LLComboBox; +class LLImageRaw; + +class LLFloaterOutfitPhotoPreview : public LLPreview +{ +public: + LLFloaterOutfitPhotoPreview(const LLSD& key); + ~LLFloaterOutfitPhotoPreview(); + + virtual void draw(); + + virtual void loadAsset(); + virtual EAssetStatus getAssetStatus(); + + virtual void reshape(S32 width, S32 height, BOOL called_from_parent = TRUE); + + /*virtual*/ void setObjectID(const LLUUID& object_id); + + void setOutfitID(const LLUUID& outfit_id); + void onOkBtn(); + void onCancelBtn(); + +protected: + void init(); + /* virtual */ BOOL postBuild(); + +private: + void updateImageID(); // set what image is being uploaded. + void updateDimensions(); + LLUUID mImageID; + LLUUID mOutfitID; + LLPointer<LLViewerFetchedTexture> mImage; + S32 mImageOldBoostLevel; + + // This is stored off in a member variable, because the save-as + // button and drag and drop functionality need to know. + BOOL mUpdateDimensions; + + BOOL mExceedLimits; + + LLLoadedCallbackEntry::source_callback_list_t mCallbackTextureList ; +}; +#endif // LL_LLFLOATEROUTFITPHOTOPREVIEW_H diff --git a/indra/newview/llfloaterpathfindingobjects.cpp b/indra/newview/llfloaterpathfindingobjects.cpp index f6ff83eaf4..5cf16f3ad6 100644 --- a/indra/newview/llfloaterpathfindingobjects.cpp +++ b/indra/newview/llfloaterpathfindingobjects.cpp @@ -329,7 +329,7 @@ void LLFloaterPathfindingObjects::handleUpdateObjectList(LLPathfindingManager::r } } -void LLFloaterPathfindingObjects::rebuildObjectsScrollList() +void LLFloaterPathfindingObjects::rebuildObjectsScrollList(bool update_if_needed) { if (!mHasObjectsToBeSelected) { @@ -355,7 +355,14 @@ void LLFloaterPathfindingObjects::rebuildObjectsScrollList() { buildObjectsScrollList(mObjectList); - mObjectsScrollList->selectMultiple(mObjectsToBeSelected); + if(mObjectsScrollList->selectMultiple(mObjectsToBeSelected) == 0) + { + if(update_if_needed && mRefreshListButton->getEnabled()) + { + requestGetObjects(); + return; + } + } if (mHasObjectsToBeSelected) { mObjectsScrollList->scrollToShowSelected(); @@ -484,7 +491,7 @@ void LLFloaterPathfindingObjects::showFloaterWithSelectionObjects() } else { - rebuildObjectsScrollList(); + rebuildObjectsScrollList(true); if (isMinimized()) { setMinimized(FALSE); diff --git a/indra/newview/llfloaterpathfindingobjects.h b/indra/newview/llfloaterpathfindingobjects.h index 4024e15fd6..752f741959 100644 --- a/indra/newview/llfloaterpathfindingobjects.h +++ b/indra/newview/llfloaterpathfindingobjects.h @@ -80,7 +80,7 @@ protected: void handleNewObjectList(LLPathfindingManager::request_id_t pRequestId, LLPathfindingManager::ERequestStatus pRequestStatus, LLPathfindingObjectListPtr pObjectList); void handleUpdateObjectList(LLPathfindingManager::request_id_t pRequestId, LLPathfindingManager::ERequestStatus pRequestStatus, LLPathfindingObjectListPtr pObjectList); - void rebuildObjectsScrollList(); + void rebuildObjectsScrollList(bool update_if_needed = false); virtual void buildObjectsScrollList(const LLPathfindingObjectListPtr pObjectListPtr); void addObjectToScrollList(const LLPathfindingObjectPtr pObjectPr, const LLSD &pScrollListItemData); diff --git a/indra/newview/llfloaterpay.cpp b/indra/newview/llfloaterpay.cpp index dfe462c8d1..87973c2286 100644 --- a/indra/newview/llfloaterpay.cpp +++ b/indra/newview/llfloaterpay.cpp @@ -284,7 +284,6 @@ void LLFloaterPay::processPayPriceReply(LLMessageSystem* msg, void **userdata) self->mQuickPayButton[i]->setLabelUnselected(button_str); self->mQuickPayButton[i]->setVisible(TRUE); self->mQuickPayInfo[i]->mAmount = pay_button; - self->getChildView("fastpay text")->setVisible(TRUE); if ( pay_button > max_pay_amount ) { @@ -412,7 +411,6 @@ void LLFloaterPay::payDirectly(money_callback callback, floater->getChildView("pay btn")->setVisible(TRUE); floater->getChildView("amount text")->setVisible(TRUE); - floater->getChildView("fastpay text")->setVisible(TRUE); for(S32 i=0;i<MAX_PAY_BUTTONS;++i) { floater->mQuickPayButton[i]->setVisible(TRUE); @@ -594,7 +592,8 @@ void LLFloaterPay::give(S32 amount) else { // just transfer the L$ - mCallback(mTargetUUID, gAgent.getRegion(), amount, mTargetIsGroup, TRANS_GIFT, LLStringUtil::null); + std::string paymentMessage(getChild<LLLineEditor>("payment_message")->getValue().asString()); + mCallback(mTargetUUID, gAgent.getRegion(), amount, mTargetIsGroup, TRANS_GIFT, (paymentMessage.empty() ? LLStringUtil::null : paymentMessage)); // check if the payee needs to be unmuted LLMuteList::getInstance()->autoRemove(mTargetUUID, LLMuteList::AR_MONEY); diff --git a/indra/newview/llfloaterperms.cpp b/indra/newview/llfloaterperms.cpp index b0b2770c6e..2281ea1496 100644 --- a/indra/newview/llfloaterperms.cpp +++ b/indra/newview/llfloaterperms.cpp @@ -183,6 +183,11 @@ void LLFloaterPermsDefault::sendInitialPerms() void LLFloaterPermsDefault::updateCap() { + if (!gAgent.getRegion()) + { + LL_WARNS("Avatar") << "Region not set, cannot request capability update" << LL_ENDL; + return; + } std::string object_url = gAgent.getRegion()->getCapability("AgentPreferences"); if(!object_url.empty()) diff --git a/indra/newview/llfloaterpreference.cpp b/indra/newview/llfloaterpreference.cpp index 100ee5ab72..30dfff4ac8 100644 --- a/indra/newview/llfloaterpreference.cpp +++ b/indra/newview/llfloaterpreference.cpp @@ -467,6 +467,11 @@ BOOL LLFloaterPreference::postBuild() gSavedSettings.getControl("PreferredMaturity")->getSignal()->connect(boost::bind(&LLFloaterPreference::onChangeMaturity, this)); + gSavedPerAccountSettings.getControl("ModelUploadFolder")->getSignal()->connect(boost::bind(&LLFloaterPreference::onChangeModelFolder, this)); + gSavedPerAccountSettings.getControl("TextureUploadFolder")->getSignal()->connect(boost::bind(&LLFloaterPreference::onChangeTextureFolder, this)); + gSavedPerAccountSettings.getControl("SoundUploadFolder")->getSignal()->connect(boost::bind(&LLFloaterPreference::onChangeSoundFolder, this)); + gSavedPerAccountSettings.getControl("AnimationUploadFolder")->getSignal()->connect(boost::bind(&LLFloaterPreference::onChangeAnimationFolder, this)); + LLTabContainer* tabcontainer = getChild<LLTabContainer>("pref core"); if (!tabcontainer->selectTab(gSavedSettings.getS32("LastPrefTab"))) tabcontainer->selectFirstTab(); @@ -501,6 +506,7 @@ BOOL LLFloaterPreference::postBuild() fov_slider->setMinValue(LLViewerCamera::getInstance()->getMinView()); fov_slider->setMaxValue(LLViewerCamera::getInstance()->getMaxView()); + return TRUE; } @@ -742,7 +748,12 @@ void LLFloaterPreference::onOpen(const LLSD& key) // Display selected maturity icons. onChangeMaturity(); - + + onChangeModelFolder(); + onChangeTextureFolder(); + onChangeSoundFolder(); + onChangeAnimationFolder(); + // Load (double-)click to walk/teleport settings. updateClickActionControls(); @@ -1979,6 +1990,57 @@ void LLFloaterPreference::onChangeMaturity() getChild<LLIconCtrl>("rating_icon_adult")->setVisible(sim_access == SIM_ACCESS_ADULT); } +std::string get_category_path(LLUUID cat_id) +{ + LLViewerInventoryCategory* cat = gInventory.getCategory(cat_id); + if (cat->getParentUUID().notNull()) + { + return get_category_path(cat->getParentUUID()) + " > " + cat->getName(); + } + else + { + return cat->getName(); + } +} + +std::string get_category_path(LLFolderType::EType cat_type) +{ + LLUUID cat_id = gInventory.findUserDefinedCategoryUUIDForType(cat_type); + return get_category_path(cat_id); +} + +void LLFloaterPreference::onChangeModelFolder() +{ + if (gInventory.isInventoryUsable()) + { + getChild<LLTextBox>("upload_models")->setText(get_category_path(LLFolderType::FT_OBJECT)); + } +} + +void LLFloaterPreference::onChangeTextureFolder() +{ + if (gInventory.isInventoryUsable()) + { + getChild<LLTextBox>("upload_textures")->setText(get_category_path(LLFolderType::FT_TEXTURE)); + } +} + +void LLFloaterPreference::onChangeSoundFolder() +{ + if (gInventory.isInventoryUsable()) + { + getChild<LLTextBox>("upload_sounds")->setText(get_category_path(LLFolderType::FT_SOUND)); + } +} + +void LLFloaterPreference::onChangeAnimationFolder() +{ + if (gInventory.isInventoryUsable()) + { + getChild<LLTextBox>("upload_animation")->setText(get_category_path(LLFolderType::FT_ANIMATION)); + } +} + // FIXME: this will stop you from spawning the sidetray from preferences dialog on login screen // but the UI for this will still be enabled void LLFloaterPreference::onClickBlockList() diff --git a/indra/newview/llfloaterpreference.h b/indra/newview/llfloaterpreference.h index fa0c09e97a..ea199cf034 100644 --- a/indra/newview/llfloaterpreference.h +++ b/indra/newview/llfloaterpreference.h @@ -161,6 +161,10 @@ public: void onCommitMusicEnabled(); void applyResolution(); void onChangeMaturity(); + void onChangeModelFolder(); + void onChangeTextureFolder(); + void onChangeSoundFolder(); + void onChangeAnimationFolder(); void onClickBlockList(); void onClickProxySettings(); void onClickTranslationSettings(); diff --git a/indra/newview/llfloaterreporter.cpp b/indra/newview/llfloaterreporter.cpp index a6ce0ba678..515c2b0c4b 100644 --- a/indra/newview/llfloaterreporter.cpp +++ b/indra/newview/llfloaterreporter.cpp @@ -35,8 +35,10 @@ #include "llassetstorage.h" #include "llavatarnamecache.h" #include "llcachename.h" +#include "llcallbacklist.h" #include "llcheckboxctrl.h" #include "llfontgl.h" +#include "llimagebmp.h" #include "llimagej2c.h" #include "llinventory.h" #include "llnotificationsutil.h" @@ -76,6 +78,7 @@ #include "llselectmgr.h" #include "llversioninfo.h" #include "lluictrlfactory.h" +#include "llviewercontrol.h" #include "llviewernetwork.h" #include "llagentui.h" @@ -86,6 +89,7 @@ #include "llcorehttputil.h" #include "llviewerassetupload.h" +const std::string SCREEN_PREV_FILENAME = "screen_report_last.bmp"; //========================================================================= //----------------------------------------------------------------------------- @@ -181,11 +185,6 @@ BOOL LLFloaterReporter::postBuild() } setPosBox(pos); - // Take a screenshot, but don't draw this floater. - setVisible(FALSE); - takeScreenshot(); - setVisible(TRUE); - // Default text to be blank getChild<LLUICtrl>("object_name")->setValue(LLStringUtil::null); getChild<LLUICtrl>("owner_name")->setValue(LLStringUtil::null); @@ -213,7 +212,7 @@ BOOL LLFloaterReporter::postBuild() // grab the user's name std::string reporter = LLSLURL("agent", gAgent.getID(), "inspect").getSLURLString(); getChild<LLUICtrl>("reporter_field")->setValue(reporter); - + center(); return TRUE; @@ -512,50 +511,59 @@ void LLFloaterReporter::showFromMenu(EReportType report_type) LL_WARNS() << "Unknown LLViewerReporter type : " << report_type << LL_ENDL; return; } - - LLFloaterReporter* f = LLFloaterReg::showTypedInstance<LLFloaterReporter>("reporter", LLSD()); - if (f) + LLFloaterReporter* reporter_floater = LLFloaterReg::findTypedInstance<LLFloaterReporter>("reporter"); + if(reporter_floater && reporter_floater->isInVisibleChain()) { - f->setReportType(report_type); + gSavedPerAccountSettings.setBOOL("PreviousScreenshotForReport", FALSE); + } + reporter_floater = LLFloaterReg::showTypedInstance<LLFloaterReporter>("reporter", LLSD()); + if (reporter_floater) + { + reporter_floater->setReportType(report_type); } } // static void LLFloaterReporter::show(const LLUUID& object_id, const std::string& avatar_name, const LLUUID& experience_id) { - LLFloaterReporter* f = LLFloaterReg::showTypedInstance<LLFloaterReporter>("reporter"); - + LLFloaterReporter* reporter_floater = LLFloaterReg::findTypedInstance<LLFloaterReporter>("reporter"); + if(reporter_floater && reporter_floater->isInVisibleChain()) + { + gSavedPerAccountSettings.setBOOL("PreviousScreenshotForReport", FALSE); + } + reporter_floater = LLFloaterReg::showTypedInstance<LLFloaterReporter>("reporter"); if (avatar_name.empty()) { // Request info for this object - f->getObjectInfo(object_id); + reporter_floater->getObjectInfo(object_id); } else { - f->setFromAvatarID(object_id); + reporter_floater->setFromAvatarID(object_id); } if(experience_id.notNull()) { - f->getExperienceInfo(experience_id); + reporter_floater->getExperienceInfo(experience_id); } // Need to deselect on close - f->mDeselectOnClose = TRUE; - - f->openFloater(); + reporter_floater->mDeselectOnClose = TRUE; } void LLFloaterReporter::showFromExperience( const LLUUID& experience_id ) { - LLFloaterReporter* f = LLFloaterReg::showTypedInstance<LLFloaterReporter>("reporter"); - f->getExperienceInfo(experience_id); + LLFloaterReporter* reporter_floater = LLFloaterReg::findTypedInstance<LLFloaterReporter>("reporter"); + if(reporter_floater && reporter_floater->isInVisibleChain()) + { + gSavedPerAccountSettings.setBOOL("PreviousScreenshotForReport", FALSE); + } + reporter_floater = LLFloaterReg::showTypedInstance<LLFloaterReporter>("reporter"); + reporter_floater->getExperienceInfo(experience_id); // Need to deselect on close - f->mDeselectOnClose = TRUE; - - f->openFloater(); + reporter_floater->mDeselectOnClose = TRUE; } @@ -769,18 +777,24 @@ void LLFloaterReporter::sendReportViaCaps(std::string url, std::string sshot_url } } -void LLFloaterReporter::takeScreenshot() +void LLFloaterReporter::takeScreenshot(bool use_prev_screenshot) { - const S32 IMAGE_WIDTH = 1024; - const S32 IMAGE_HEIGHT = 768; - - LLPointer<LLImageRaw> raw = new LLImageRaw; - if( !gViewerWindow->rawSnapshot(raw, IMAGE_WIDTH, IMAGE_HEIGHT, TRUE, FALSE, TRUE, FALSE)) + gSavedPerAccountSettings.setBOOL("PreviousScreenshotForReport", TRUE); + if(!use_prev_screenshot) { - LL_WARNS() << "Unable to take screenshot" << LL_ENDL; - return; + std::string screenshot_filename(gDirUtilp->getLindenUserDir() + gDirUtilp->getDirDelimiter() + SCREEN_PREV_FILENAME); + LLPointer<LLImageBMP> bmp_image = new LLImageBMP; + if(bmp_image->encode(mImageRaw, 0.0f)) + { + bmp_image->save(screenshot_filename); + } + } + else + { + mImageRaw = mPrevImageRaw; } - LLPointer<LLImageJ2C> upload_data = LLViewerTextureList::convertToUploadFile(raw); + + LLPointer<LLImageJ2C> upload_data = LLViewerTextureList::convertToUploadFile(mImageRaw); // create a resource data mResourceDatap->mInventoryType = LLInventoryType::IT_NONE; @@ -812,7 +826,7 @@ void LLFloaterReporter::takeScreenshot() // store in the image list so it doesn't try to fetch from the server LLPointer<LLViewerFetchedTexture> image_in_list = LLViewerTextureManager::getFetchedTexture(mResourceDatap->mAssetInfo.mUuid); - image_in_list->createGLTexture(0, raw, 0, TRUE, LLGLTexture::OTHER); + image_in_list->createGLTexture(0, mImageRaw, 0, TRUE, LLGLTexture::OTHER); // the texture picker then uses that texture LLTextureCtrl* texture = getChild<LLTextureCtrl>("screenshot"); @@ -822,7 +836,55 @@ void LLFloaterReporter::takeScreenshot() texture->setDefaultImageAssetID(mResourceDatap->mAssetInfo.mUuid); texture->setCaption(getString("Screenshot")); } +} + +void LLFloaterReporter::takeNewSnapshot() +{ + childSetEnabled("send_btn", true); + mImageRaw = new LLImageRaw; + const S32 IMAGE_WIDTH = 1024; + const S32 IMAGE_HEIGHT = 768; + + // Take a screenshot, but don't draw this floater. + setVisible(FALSE); + if( !gViewerWindow->rawSnapshot(mImageRaw, IMAGE_WIDTH, IMAGE_HEIGHT, TRUE, FALSE, TRUE, FALSE)) + { + LL_WARNS() << "Unable to take screenshot" << LL_ENDL; + setVisible(TRUE); + return; + } + setVisible(TRUE); + + if(gSavedPerAccountSettings.getBOOL("PreviousScreenshotForReport")) + { + std::string screenshot_filename(gDirUtilp->getLindenUserDir() + gDirUtilp->getDirDelimiter() + SCREEN_PREV_FILENAME); + mPrevImageRaw = new LLImageRaw; + LLPointer<LLImageBMP> start_image_bmp = new LLImageBMP; + if(start_image_bmp->load(screenshot_filename)) + { + if (start_image_bmp->decode(mPrevImageRaw, 0.0f)) + { + LLNotificationsUtil::add("LoadPreviousReportScreenshot", LLSD(), LLSD(), boost::bind(&LLFloaterReporter::onLoadScreenshotDialog,this, _1, _2)); + return; + } + } + } + takeScreenshot(); +} + +void LLFloaterReporter::onOpen(const LLSD& key) +{ + childSetEnabled("send_btn", false); + //Time delay to avoid UI artifacts. MAINT-7067 + doAfterInterval(boost::bind(&LLFloaterReporter::takeNewSnapshot,this), gSavedSettings.getF32("AbuseReportScreenshotDelay")); + +} + +void LLFloaterReporter::onLoadScreenshotDialog(const LLSD& notification, const LLSD& response) +{ + S32 option = LLNotificationsUtil::getSelectedOption(notification, response); + takeScreenshot(option == 0); } void LLFloaterReporter::uploadImage() @@ -886,6 +948,11 @@ void LLFloaterReporter::setPosBox(const LLVector3d &pos) getChild<LLUICtrl>("pos_field")->setValue(pos_string); } +void LLFloaterReporter::onClose(bool app_quitting) +{ + gSavedPerAccountSettings.setBOOL("PreviousScreenshotForReport", app_quitting); +} + // void LLFloaterReporter::setDescription(const std::string& description, LLMeanCollisionData *mcd) // { diff --git a/indra/newview/llfloaterreporter.h b/indra/newview/llfloaterreporter.h index 1aff07bd37..decc01be98 100644 --- a/indra/newview/llfloaterreporter.h +++ b/indra/newview/llfloaterreporter.h @@ -81,6 +81,8 @@ public: LLFloaterReporter(const LLSD& key); /*virtual*/ ~LLFloaterReporter(); /*virtual*/ BOOL postBuild(); + /*virtual*/ void onOpen(const LLSD& key); + /*virtual*/ void onClose(bool app_quitting); virtual void draw(); void setReportType(EReportType type) { mReportType = type; } @@ -103,10 +105,14 @@ public: void setPickedObjectProperties(const std::string& object_name, const std::string& owner_name, const LLUUID owner_id); + void onLoadScreenshotDialog(const LLSD& notification, const LLSD& response); + + void takeNewSnapshot(); + private: static void show(const LLUUID& object_id, const std::string& avatar_name = LLStringUtil::null, const LLUUID& experience_id = LLUUID::null); - void takeScreenshot(); + void takeScreenshot(bool use_prev_screenshot = false); void sendReportViaCaps(std::string url); void uploadImage(); bool validateReport(); @@ -140,6 +146,9 @@ private: std::string mDefaultSummary; LLResourceData* mResourceDatap; boost::signals2::connection mAvatarNameCacheConnection; + + LLPointer<LLImageRaw> mImageRaw; + LLPointer<LLImageRaw> mPrevImageRaw; }; #endif diff --git a/indra/newview/llfloaterscriptdebug.cpp b/indra/newview/llfloaterscriptdebug.cpp index 6c17f62c1e..5f4bc9d301 100644 --- a/indra/newview/llfloaterscriptdebug.cpp +++ b/indra/newview/llfloaterscriptdebug.cpp @@ -34,6 +34,7 @@ #include "llrect.h" #include "llerror.h" #include "llstring.h" +#include "llvoavatarself.h" #include "message.h" // project include @@ -105,7 +106,14 @@ void LLFloaterScriptDebug::addScriptLine(const std::string &utf8mesg, const std: if (objectp) { - objectp->setIcon(LLViewerTextureManager::getFetchedTextureFromFile("script_error.j2c", FTT_LOCAL_FILE, TRUE, LLGLTexture::BOOST_UI)); + if(objectp->isHUDAttachment()) + { + ((LLViewerObject*)gAgentAvatarp)->setIcon(LLViewerTextureManager::getFetchedTextureFromFile("script_error.j2c", FTT_LOCAL_FILE, TRUE, LLGLTexture::BOOST_UI)); + } + else + { + objectp->setIcon(LLViewerTextureManager::getFetchedTextureFromFile("script_error.j2c", FTT_LOCAL_FILE, TRUE, LLGLTexture::BOOST_UI)); + } floater_label = llformat("%s(%.0f, %.0f, %.0f)", user_name.c_str(), objectp->getPositionRegion().mV[VX], diff --git a/indra/newview/llfloaterscriptlimits.cpp b/indra/newview/llfloaterscriptlimits.cpp index eae16b9f03..c14bb4e7ae 100644 --- a/indra/newview/llfloaterscriptlimits.cpp +++ b/indra/newview/llfloaterscriptlimits.cpp @@ -523,6 +523,8 @@ void LLPanelScriptLimitsRegionMemory::setRegionDetails(LLSD content) LLScrollListCell::Params cell_params; cell_params.font = LLFontGL::getFontSansSerif(); + // Start out right justifying numeric displays + cell_params.font_halign = LLFontGL::RIGHT; cell_params.column = "size"; cell_params.value = size; @@ -532,6 +534,8 @@ void LLPanelScriptLimitsRegionMemory::setRegionDetails(LLSD content) cell_params.value = urls; item_params.columns.add(cell_params); + cell_params.font_halign = LLFontGL::LEFT; + // The rest of the columns are text to left justify them cell_params.column = "name"; cell_params.value = name_buf; item_params.columns.add(cell_params); @@ -546,7 +550,7 @@ void LLPanelScriptLimitsRegionMemory::setRegionDetails(LLSD content) cell_params.column = "location"; cell_params.value = has_locations - ? llformat("<%0.1f,%0.1f,%0.1f>", location_x, location_y, location_z) + ? llformat("<%0.0f, %0.0f, %0.0f>", location_x, location_y, location_z) : ""; item_params.columns.add(cell_params); @@ -623,13 +627,20 @@ void LLPanelScriptLimitsRegionMemory::setRegionSummary(LLSD content) if((mParcelMemoryUsed >= 0) && (mParcelMemoryMax >= 0)) { - S32 parcel_memory_available = mParcelMemoryMax - mParcelMemoryUsed; - LLStringUtil::format_map_t args_parcel_memory; args_parcel_memory["[COUNT]"] = llformat ("%d", mParcelMemoryUsed); - args_parcel_memory["[MAX]"] = llformat ("%d", mParcelMemoryMax); - args_parcel_memory["[AVAILABLE]"] = llformat ("%d", parcel_memory_available); - std::string msg_parcel_memory = LLTrans::getString("ScriptLimitsMemoryUsed", args_parcel_memory); + std::string translate_message = "ScriptLimitsMemoryUsedSimple"; + + if (0 < mParcelMemoryMax) + { + S32 parcel_memory_available = mParcelMemoryMax - mParcelMemoryUsed; + + args_parcel_memory["[MAX]"] = llformat ("%d", mParcelMemoryMax); + args_parcel_memory["[AVAILABLE]"] = llformat ("%d", parcel_memory_available); + translate_message = "ScriptLimitsMemoryUsed"; + } + + std::string msg_parcel_memory = LLTrans::getString(translate_message, args_parcel_memory); getChild<LLUICtrl>("memory_used")->setValue(LLSD(msg_parcel_memory)); } @@ -1061,10 +1072,12 @@ void LLPanelScriptLimitsAttachment::setAttachmentDetails(LLSD content) element["columns"][0]["column"] = "size"; element["columns"][0]["value"] = llformat("%d", size); element["columns"][0]["font"] = "SANSSERIF"; + element["columns"][0]["halign"] = LLFontGL::RIGHT; element["columns"][1]["column"] = "urls"; element["columns"][1]["value"] = llformat("%d", urls); element["columns"][1]["font"] = "SANSSERIF"; + element["columns"][1]["halign"] = LLFontGL::RIGHT; element["columns"][2]["column"] = "name"; element["columns"][2]["value"] = name; @@ -1151,14 +1164,20 @@ void LLPanelScriptLimitsAttachment::setAttachmentSummary(LLSD content) if((mAttachmentMemoryUsed >= 0) && (mAttachmentMemoryMax >= 0)) { - S32 attachment_memory_available = mAttachmentMemoryMax - mAttachmentMemoryUsed; - LLStringUtil::format_map_t args_attachment_memory; args_attachment_memory["[COUNT]"] = llformat ("%d", mAttachmentMemoryUsed); - args_attachment_memory["[MAX]"] = llformat ("%d", mAttachmentMemoryMax); - args_attachment_memory["[AVAILABLE]"] = llformat ("%d", attachment_memory_available); - std::string msg_attachment_memory = LLTrans::getString("ScriptLimitsMemoryUsed", args_attachment_memory); - getChild<LLUICtrl>("memory_used")->setValue(LLSD(msg_attachment_memory)); + std::string translate_message = "ScriptLimitsMemoryUsedSimple"; + + if (0 < mAttachmentMemoryMax) + { + S32 attachment_memory_available = mAttachmentMemoryMax - mAttachmentMemoryUsed; + + args_attachment_memory["[MAX]"] = llformat ("%d", mAttachmentMemoryMax); + args_attachment_memory["[AVAILABLE]"] = llformat ("%d", attachment_memory_available); + translate_message = "ScriptLimitsMemoryUsed"; + } + + getChild<LLUICtrl>("memory_used")->setValue(LLTrans::getString(translate_message, args_attachment_memory)); } if((mAttachmentURLsUsed >= 0) && (mAttachmentURLsMax >= 0)) diff --git a/indra/newview/llfloatersidepanelcontainer.cpp b/indra/newview/llfloatersidepanelcontainer.cpp index c7218ad9d5..8b3cfa7fd5 100644 --- a/indra/newview/llfloatersidepanelcontainer.cpp +++ b/indra/newview/llfloatersidepanelcontainer.cpp @@ -80,6 +80,11 @@ void LLFloaterSidePanelContainer::closeFloater(bool app_quitting) } LLFloater::closeFloater(app_quitting); + + if (getInstanceName() == "inventory" && !getKey().isUndefined()) + { + destroy(); + } } LLPanel* LLFloaterSidePanelContainer::openChildPanel(const std::string& panel_name, const LLSD& params) diff --git a/indra/newview/llfloatersidepanelcontainer.h b/indra/newview/llfloatersidepanelcontainer.h index d7ecd52e57..635514e26c 100644 --- a/indra/newview/llfloatersidepanelcontainer.h +++ b/indra/newview/llfloatersidepanelcontainer.h @@ -53,6 +53,8 @@ public: /*virtual*/ void closeFloater(bool app_quitting = false); + void cleanup() { destroy(); } + LLPanel* openChildPanel(const std::string& panel_name, const LLSD& params); static void showPanel(const std::string& floater_name, const LLSD& key); diff --git a/indra/newview/llfloatersnapshot.cpp b/indra/newview/llfloatersnapshot.cpp index b5ba64716d..c0980719bb 100644 --- a/indra/newview/llfloatersnapshot.cpp +++ b/indra/newview/llfloatersnapshot.cpp @@ -762,7 +762,8 @@ void LLFloaterSnapshot::Impl::updateResolution(LLUICtrl* ctrl, void* data, BOOL // hide old preview as the aspect ratio could be wrong checkAutoSnapshot(previewp, FALSE); LL_DEBUGS() << "updating thumbnail" << LL_ENDL; - getPreviewView()->updateSnapshot(TRUE); + // Don't update immediately, give window chance to redraw + getPreviewView()->updateSnapshot(TRUE, FALSE, 1.f); if(do_update) { LL_DEBUGS() << "Will update controls" << LL_ENDL; diff --git a/indra/newview/llfloatertools.cpp b/indra/newview/llfloatertools.cpp index 987a7449ee..b14b9b7578 100644 --- a/indra/newview/llfloatertools.cpp +++ b/indra/newview/llfloatertools.cpp @@ -1177,7 +1177,12 @@ void LLFloaterTools::updateLandImpacts() S32 rezzed_prims = parcel->getSimWidePrimCount(); S32 total_capacity = parcel->getSimWideMaxPrimCapacity(); - + LLViewerRegion* region = LLViewerParcelMgr::getInstance()->getSelectionRegion(); + if (region) + { + S32 max_tasks_per_region = (S32)region->getMaxTasks(); + total_capacity = llmin(total_capacity, max_tasks_per_region); + } std::string remaining_capacity_str = ""; bool show_mesh_cost = gMeshRepo.meshRezEnabled(); diff --git a/indra/newview/llfloaterworldmap.cpp b/indra/newview/llfloaterworldmap.cpp index c67feb8158..c0bd9b1c23 100644 --- a/indra/newview/llfloaterworldmap.cpp +++ b/indra/newview/llfloaterworldmap.cpp @@ -546,7 +546,7 @@ void LLFloaterWorldMap::trackAvatar( const LLUUID& avatar_id, const std::string& // convenience. if(gAgent.isGodlike()) { - getChild<LLUICtrl>("spin z")->setValue(LLSD(200.f)); + getChild<LLUICtrl>("teleport_coordinate_z")->setValue(LLSD(200.f)); } // Don't re-request info if we already have it or we won't have it in time to teleport if (mTrackedStatus != LLTracker::TRACKING_AVATAR || name != mTrackedAvatarName) @@ -1375,7 +1375,7 @@ void LLFloaterWorldMap::teleport() && av_tracker.haveTrackingInfo() ) { pos_global = av_tracker.getGlobalPos(); - pos_global.mdV[VZ] = getChild<LLUICtrl>("spin z")->getValue(); + pos_global.mdV[VZ] = getChild<LLUICtrl>("teleport_coordinate_z")->getValue(); } else if ( LLTracker::TRACKING_LANDMARK == tracking_status) { diff --git a/indra/newview/llfriendcard.h b/indra/newview/llfriendcard.h index ae3800e17b..2fb912a930 100644 --- a/indra/newview/llfriendcard.h +++ b/indra/newview/llfriendcard.h @@ -37,9 +37,10 @@ class LLFriendCardsManager : public LLSingleton<LLFriendCardsManager> , public LLFriendObserver { + LLSINGLETON(LLFriendCardsManager); + ~LLFriendCardsManager(); LOG_CLASS(LLFriendCardsManager); - friend class LLSingleton<LLFriendCardsManager>; friend class CreateFriendCardCallback; public: @@ -97,8 +98,6 @@ public: private: typedef boost::function<void()> callback_t; - LLFriendCardsManager(); - ~LLFriendCardsManager(); /** diff --git a/indra/newview/llgesturemgr.h b/indra/newview/llgesturemgr.h index 26a5924ec3..402bdf6039 100644 --- a/indra/newview/llgesturemgr.h +++ b/indra/newview/llgesturemgr.h @@ -51,6 +51,8 @@ public: class LLGestureMgr : public LLSingleton<LLGestureMgr>, public LLInventoryFetchItemsObserver { + LLSINGLETON(LLGestureMgr); + ~LLGestureMgr(); public: typedef boost::function<void (LLMultiGesture* loaded_gesture)> gesture_loaded_callback_t; @@ -58,8 +60,6 @@ public: typedef std::map<LLUUID, LLMultiGesture*> item_map_t; typedef std::map<LLUUID, gesture_loaded_callback_t> callback_map_t; - LLGestureMgr(); - ~LLGestureMgr(); void init(); diff --git a/indra/newview/llgroupmgr.h b/indra/newview/llgroupmgr.h index e5ce768035..940ef6eea1 100644 --- a/indra/newview/llgroupmgr.h +++ b/indra/newview/llgroupmgr.h @@ -348,6 +348,8 @@ struct LLRoleActionSet class LLGroupMgr : public LLSingleton<LLGroupMgr> { + LLSINGLETON(LLGroupMgr); + ~LLGroupMgr(); LOG_CLASS(LLGroupMgr); public: @@ -369,8 +371,6 @@ public: public: - LLGroupMgr(); - ~LLGroupMgr(); void addObserver(LLGroupMgrObserver* observer); void addObserver(const LLUUID& group_id, LLParticularGroupObserver* observer); diff --git a/indra/newview/llhints.h b/indra/newview/llhints.h index ebffe561b9..dd6195a9ce 100644 --- a/indra/newview/llhints.h +++ b/indra/newview/llhints.h @@ -29,6 +29,7 @@ #include "llpanel.h" #include "llnotifications.h" +#include "llinitdestroyclass.h" class LLHints : public LLInitClass<LLHints> diff --git a/indra/newview/llhudmanager.h b/indra/newview/llhudmanager.h index 9c5d49decd..7782739690 100644 --- a/indra/newview/llhudmanager.h +++ b/indra/newview/llhudmanager.h @@ -36,10 +36,10 @@ class LLMessageSystem; class LLHUDManager : public LLSingleton<LLHUDManager> { -public: - LLHUDManager(); + LLSINGLETON(LLHUDManager); ~LLHUDManager(); +public: LLHUDEffect *createViewerEffect(const U8 type, BOOL send_to_sim = TRUE, BOOL originated_here = TRUE); void updateEffects(); diff --git a/indra/newview/llimagefiltersmanager.h b/indra/newview/llimagefiltersmanager.h index 4751933065..f1ed3cf1c3 100644 --- a/indra/newview/llimagefiltersmanager.h +++ b/indra/newview/llimagefiltersmanager.h @@ -34,6 +34,8 @@ class LLImageFiltersManager : public LLSingleton<LLImageFiltersManager> { + LLSINGLETON(LLImageFiltersManager); + ~LLImageFiltersManager(); LOG_CLASS(LLImageFiltersManager); public: const std::vector<std::string> getFiltersList() const; @@ -43,10 +45,7 @@ private: void loadAllFilters(); void loadFiltersFromDir(const std::string& dir); - friend class LLSingleton<LLImageFiltersManager>; /*virtual*/ void initSingleton(); - LLImageFiltersManager(); - ~LLImageFiltersManager(); // List of filters : first is the user friendly localized name, second is the xml file name std::map<std::string,std::string> mFiltersList; diff --git a/indra/newview/llimview.cpp b/indra/newview/llimview.cpp index 951389b856..2e9332c355 100644 --- a/indra/newview/llimview.cpp +++ b/indra/newview/llimview.cpp @@ -2354,7 +2354,13 @@ void LLIncomingCallDialog::onAvatarNameCache(const LLUUID& agent_id, void LLIncomingCallDialog::onOpen(const LLSD& key) { LLCallDialog::onOpen(key); - make_ui_sound("UISndStartIM"); + + if (gSavedSettings.getBOOL("PlaySoundIncomingVoiceCall")) + { + // play a sound for incoming voice call if respective property is set + make_ui_sound("UISndStartIM"); + } + LLStringUtil::format_map_t args; LLGroupData data; // if it's a group call, retrieve group name to use it in question @@ -2697,7 +2703,7 @@ void LLIMMgr::addMessage( // Logically it would make more sense to reject the session sooner, in another area of the // code, but the session has to be established inside the server before it can be left. - if (LLMuteList::getInstance()->isMuted(other_participant_id) && !from_linden) + if (LLMuteList::getInstance()->isMuted(other_participant_id, LLMute::flagTextChat) && !from_linden) { LL_WARNS() << "Leaving IM session from initiating muted resident " << from << LL_ENDL; if(!gIMMgr->leaveSession(new_session_id)) @@ -3005,14 +3011,20 @@ void LLIMMgr::inviteToSession( payload["question_type"] = question_type; //ignore invites from muted residents - if (LLMuteList::getInstance()->isMuted(caller_id) && !is_linden) + if (!is_linden) { - if (voice_invite && "VoiceInviteQuestionDefault" == question_type) + if (LLMuteList::getInstance()->isMuted(caller_id, LLMute::flagVoiceChat) + && voice_invite && "VoiceInviteQuestionDefault" == question_type) { LL_INFOS() << "Rejecting voice call from initiating muted resident " << caller_name << LL_ENDL; LLIncomingCallDialog::processCallResponse(1, payload); + return; + } + else if (LLMuteList::getInstance()->isMuted(caller_id, LLMute::flagAll & ~LLMute::flagVoiceChat)) + { + LL_INFOS() << "Rejecting session invite from initiating muted resident " << caller_name << LL_ENDL; + return; } - return; } LLVoiceChannel* channelp = LLVoiceChannel::getChannelByID(session_id); diff --git a/indra/newview/llimview.h b/indra/newview/llimview.h index 41a8813acb..da40ac8393 100644 --- a/indra/newview/llimview.h +++ b/indra/newview/llimview.h @@ -33,6 +33,7 @@ #include "lllogchat.h" #include "llvoicechannel.h" +#include "llinitdestroyclass.h" #include "llcoros.h" #include "lleventcoro.h" @@ -61,6 +62,7 @@ private: */ class LLIMModel : public LLSingleton<LLIMModel> { + LLSINGLETON(LLIMModel); public: struct LLIMSession : public boost::signals2::trackable @@ -151,7 +153,6 @@ public: }; - LLIMModel(); /** Session id to session object */ std::map<LLUUID, LLIMSession*> mId2SessionMap; @@ -312,6 +313,7 @@ public: class LLIMMgr : public LLSingleton<LLIMMgr> { + LLSINGLETON(LLIMMgr); friend class LLIMModel; public: @@ -322,8 +324,6 @@ public: INVITATION_TYPE_IMMEDIATE = 2 }; - LLIMMgr(); - virtual ~LLIMMgr() {}; // Add a message to a session. The session can keyed to sesion id // or agent id. diff --git a/indra/newview/llinventorybridge.cpp b/indra/newview/llinventorybridge.cpp index eebb6a0384..b7f5424f25 100644 --- a/indra/newview/llinventorybridge.cpp +++ b/indra/newview/llinventorybridge.cpp @@ -41,6 +41,7 @@ #include "llfloateropenobject.h" #include "llfloaterreg.h" #include "llfloatermarketplacelistings.h" +#include "llfloateroutfitphotopreview.h" #include "llfloatersidepanelcontainer.h" #include "llfloaterworldmap.h" #include "llfolderview.h" @@ -3092,6 +3093,10 @@ void LLFolderBridge::performAction(LLInventoryModel* model, std::string action) LLAppearanceMgr::instance().takeOffOutfit( cat->getLinkedUUID() ); return; } + else if ("copyoutfittoclipboard" == action) + { + copyOutfitToClipboard(); + } else if ("purge" == action) { purgeItem(model, mUUID); @@ -3249,6 +3254,39 @@ void LLFolderBridge::gatherMessage(std::string& message, S32 depth, LLError::ELe } } +void LLFolderBridge::copyOutfitToClipboard() +{ + std::string text; + + LLInventoryModel::cat_array_t* cat_array; + LLInventoryModel::item_array_t* item_array; + gInventory.getDirectDescendentsOf(mUUID, cat_array, item_array); + + S32 item_count(0); + if( item_array ) + { + item_count = item_array->size(); + } + + if (item_count) + { + for (S32 i = 0; i < item_count;) + { + LLSD uuid =item_array->at(i)->getUUID(); + LLViewerInventoryItem* item = gInventory.getItem(uuid); + + i++; + if (item != NULL) + { + // Append a newline to all but the last line + text += i != item_count ? item->getName() + "\n" : item->getName(); + } + } + } + + LLClipboard::instance().copyToClipboard(utf8str_to_wstring(text),0,text.size()); +} + void LLFolderBridge::openItem() { LL_DEBUGS() << "LLFolderBridge::openItem()" << LL_ENDL; @@ -3736,12 +3774,22 @@ void LLFolderBridge::buildContextMenuOptions(U32 flags, menuentry_vec_t& items // This is the lost+found folder. items.push_back(std::string("Empty Lost And Found")); + LLInventoryModel::cat_array_t* cat_array; + LLInventoryModel::item_array_t* item_array; + gInventory.getDirectDescendentsOf(mUUID, cat_array, item_array); + // Enable Empty menu item only when there is something to act upon. + if (0 == cat_array->size() && 0 == item_array->size()) + { + disabled_items.push_back(std::string("Empty Lost And Found")); + } + disabled_items.push_back(std::string("New Folder")); disabled_items.push_back(std::string("New Script")); disabled_items.push_back(std::string("New Note")); disabled_items.push_back(std::string("New Gesture")); disabled_items.push_back(std::string("New Clothes")); disabled_items.push_back(std::string("New Body Parts")); + disabled_items.push_back(std::string("upload_def")); } if (favorites == mUUID) { @@ -3768,6 +3816,7 @@ void LLFolderBridge::buildContextMenuOptions(U32 flags, menuentry_vec_t& items disabled_items.push_back(std::string("New Gesture")); disabled_items.push_back(std::string("New Clothes")); disabled_items.push_back(std::string("New Body Parts")); + disabled_items.push_back(std::string("upload_def")); } if (marketplace_listings_id == mUUID) { @@ -3780,6 +3829,15 @@ void LLFolderBridge::buildContextMenuOptions(U32 flags, menuentry_vec_t& items { // This is the trash. items.push_back(std::string("Empty Trash")); + + LLInventoryModel::cat_array_t* cat_array; + LLInventoryModel::item_array_t* item_array; + gInventory.getDirectDescendentsOf(mUUID, cat_array, item_array); + // Enable Empty menu item only when there is something to act upon. + if (0 == cat_array->size() && 0 == item_array->size()) + { + disabled_items.push_back(std::string("Empty Trash")); + } } else if(isItemInTrash()) { @@ -3808,6 +3866,7 @@ void LLFolderBridge::buildContextMenuOptions(U32 flags, menuentry_vec_t& items items.push_back(std::string("New Gesture")); items.push_back(std::string("New Clothes")); items.push_back(std::string("New Body Parts")); + items.push_back(std::string("upload_def")); } } getClipboardEntries(false, items, disabled_items, flags); @@ -3829,6 +3888,11 @@ void LLFolderBridge::buildContextMenuOptions(U32 flags, menuentry_vec_t& items } } + if (model->findCategoryUUIDForType(LLFolderType::FT_CURRENT_OUTFIT) == mUUID) + { + items.push_back(std::string("Copy outfit list to clipboard")); + } + //Added by aura to force inventory pull on right-click to display folder options correctly. 07-17-06 mCallingCards = mWearables = FALSE; @@ -4393,7 +4457,7 @@ static BOOL can_move_to_outfit(LLInventoryItem* inv_item, BOOL move_is_into_curr if((inv_type == LLInventoryType::IT_TEXTURE) || (inv_type == LLInventoryType::IT_SNAPSHOT)) { - return TRUE; + return !move_is_into_current_outfit; } if (move_is_into_current_outfit && get_is_item_worn(inv_item->getUUID())) @@ -4448,9 +4512,15 @@ void LLFolderBridge::dropToOutfit(LLInventoryItem* inv_item, BOOL move_is_into_c { if((inv_item->getInventoryType() == LLInventoryType::IT_TEXTURE) || (inv_item->getInventoryType() == LLInventoryType::IT_SNAPSHOT)) { - LLAppearanceMgr::instance().removeOutfitPhoto(mUUID); - LLPointer<LLInventoryCallback> cb = NULL; - link_inventory_object(mUUID, LLConstPointer<LLInventoryObject>(inv_item), cb); + const LLUUID &my_outifts_id = getInventoryModel()->findCategoryUUIDForType(LLFolderType::FT_MY_OUTFITS, false); + if(mUUID != my_outifts_id) + { + LLFloaterOutfitPhotoPreview* photo_preview = LLFloaterReg::showTypedInstance<LLFloaterOutfitPhotoPreview>("outfit_photo_preview", inv_item->getUUID()); + if(photo_preview) + { + photo_preview->setOutfitID(mUUID); + } + } return; } diff --git a/indra/newview/llinventorybridge.h b/indra/newview/llinventorybridge.h index df25e01688..b7d8c9d034 100644 --- a/indra/newview/llinventorybridge.h +++ b/indra/newview/llinventorybridge.h @@ -344,6 +344,7 @@ protected: BOOL checkFolderForContentsOfType(LLInventoryModel* model, LLInventoryCollectFunctor& typeToCheck); void modifyOutfit(BOOL append); + void copyOutfitToClipboard(); void determineFolderType(); void dropToFavorites(LLInventoryItem* inv_item); diff --git a/indra/newview/llinventoryfilter.cpp b/indra/newview/llinventoryfilter.cpp index e995c138b4..1433ea36bf 100644 --- a/indra/newview/llinventoryfilter.cpp +++ b/indra/newview/llinventoryfilter.cpp @@ -40,6 +40,7 @@ #include "llinventorybridge.h" #include "llviewerfoldertype.h" #include "llradiogroup.h" +#include "llstartup.h" // linden library includes #include "llclipboard.h" @@ -132,8 +133,10 @@ bool LLInventoryFilter::checkFolder(const LLUUID& folder_id) const } // when applying a filter, matching folders get their contents downloaded first + // but make sure we are not interfering with pre-download if (isNotDefault() - && !gInventory.isCategoryComplete(folder_id)) + && !gInventory.isCategoryComplete(folder_id) + && LLStartUp::getStartupState() > STATE_WEARABLES_WAIT) { LLInventoryModelBackgroundFetch::instance().start(folder_id); } @@ -307,7 +310,11 @@ bool LLInventoryFilter::checkAgainstFilterType(const LLFolderViewModelItemInvent if (is_hidden_if_empty) { // Force the fetching of those folders so they are hidden if they really are empty... - gInventory.fetchDescendentsOf(object_id); + // But don't interfere with startup download + if (LLStartUp::getStartupState() > STATE_WEARABLES_WAIT) + { + gInventory.fetchDescendentsOf(object_id); + } LLInventoryModel::cat_array_t* cat_array = NULL; LLInventoryModel::item_array_t* item_array = NULL; diff --git a/indra/newview/llinventoryfunctions.cpp b/indra/newview/llinventoryfunctions.cpp index d8f019374e..f04d6cc753 100644 --- a/indra/newview/llinventoryfunctions.cpp +++ b/indra/newview/llinventoryfunctions.cpp @@ -48,7 +48,6 @@ #include "llavataractions.h" #include "llclipboard.h" #include "lldonotdisturbnotificationstorage.h" -#include "llfloaterinventory.h" #include "llfloatersidepanelcontainer.h" #include "llfocusmgr.h" #include "llfolderview.h" @@ -752,36 +751,13 @@ void show_item_original(const LLUUID& item_uuid) void reset_inventory_filter() { - //inventory floater - bool floater_inventory_visible = false; - - LLFloaterReg::const_instance_list_t& inst_list = LLFloaterReg::getFloaterList("inventory"); - for (LLFloaterReg::const_instance_list_t::const_iterator iter = inst_list.begin(); iter != inst_list.end(); ++iter) + LLSidepanelInventory *sidepanel_inventory = LLFloaterSidePanelContainer::getPanel<LLSidepanelInventory>("inventory"); + if (sidepanel_inventory) { - LLFloaterInventory* floater_inventory = dynamic_cast<LLFloaterInventory*>(*iter); - if (floater_inventory) + LLPanelMainInventory* main_inventory = sidepanel_inventory->getMainInventoryPanel(); + if (main_inventory) { - LLPanelMainInventory* main_inventory = floater_inventory->getMainInventoryPanel(); - main_inventory->onFilterEdit(""); - - if(floater_inventory->getVisible()) - { - floater_inventory_visible = true; - } - } - } - - if(!floater_inventory_visible) - { - LLSidepanelInventory *sidepanel_inventory = LLFloaterSidePanelContainer::getPanel<LLSidepanelInventory>("inventory"); - if (sidepanel_inventory) - { - LLPanelMainInventory* main_inventory = sidepanel_inventory->getMainInventoryPanel(); - if (main_inventory) - { - main_inventory->onFilterEdit(""); - } } } } diff --git a/indra/newview/llinventoryicon.cpp b/indra/newview/llinventoryicon.cpp index 013a5a7629..495180f087 100644 --- a/indra/newview/llinventoryicon.cpp +++ b/indra/newview/llinventoryicon.cpp @@ -46,8 +46,7 @@ struct IconEntry : public LLDictionaryEntry class LLIconDictionary : public LLSingleton<LLIconDictionary>, public LLDictionary<LLInventoryType::EIconName, IconEntry> { -public: - LLIconDictionary(); + LLSINGLETON(LLIconDictionary); }; typedef LLPointer<LLUIImage> LLUIImagePtr; diff --git a/indra/newview/llinventoryitemslist.cpp b/indra/newview/llinventoryitemslist.cpp index 36e1cc97d1..1dc1aa395e 100644 --- a/indra/newview/llinventoryitemslist.cpp +++ b/indra/newview/llinventoryitemslist.cpp @@ -45,7 +45,7 @@ LLInventoryItemsList::Params::Params() LLInventoryItemsList::LLInventoryItemsList(const LLInventoryItemsList::Params& p) : LLFlatListViewEx(p) -, mNeedsRefresh(false) +, mRefreshState(REFRESH_COMPLETE) , mForceRefresh(false) { // TODO: mCommitOnSelectionChange is set to "false" in LLFlatListView @@ -66,13 +66,13 @@ LLInventoryItemsList::~LLInventoryItemsList() void LLInventoryItemsList::refreshList(const LLInventoryModel::item_array_t item_array) { - getIDs().clear(); + getIDs().clear(); LLInventoryModel::item_array_t::const_iterator it = item_array.begin(); for( ; item_array.end() != it; ++it) { getIDs().push_back((*it)->getUUID()); } - mNeedsRefresh = true; + mRefreshState = REFRESH_ALL; } boost::signals2::connection LLInventoryItemsList::setRefreshCompleteCallback(const commit_signal_t::slot_type& cb) @@ -113,9 +113,9 @@ void LLInventoryItemsList::updateSelection() void LLInventoryItemsList::doIdle() { - if (!mNeedsRefresh) return; + if (mRefreshState == REFRESH_COMPLETE) return; - if (isInVisibleChain() || mForceRefresh) + if (isInVisibleChain() || mForceRefresh ) { refresh(); @@ -137,54 +137,130 @@ LLTrace::BlockTimerStatHandle FTM_INVENTORY_ITEMS_REFRESH("Inventory List Refres void LLInventoryItemsList::refresh() { - LL_RECORD_BLOCK_TIME(FTM_INVENTORY_ITEMS_REFRESH); - static const unsigned ADD_LIMIT = 20; - - uuid_vec_t added_items; - uuid_vec_t removed_items; - - computeDifference(getIDs(), added_items, removed_items); - - bool add_limit_exceeded = false; - unsigned int nadded = 0; - - uuid_vec_t::const_iterator it = added_items.begin(); - for( ; added_items.end() != it; ++it) - { - if(nadded >= ADD_LIMIT) - { - add_limit_exceeded = true; - break; - } - LLViewerInventoryItem* item = gInventory.getItem(*it); - // Do not rearrange items on each adding, let's do that on filter call - llassert(item); - if (item) - { - addNewItem(item, false); - ++nadded; - } - } - - it = removed_items.begin(); - for( ; removed_items.end() != it; ++it) - { - // don't filter items right away - removeItemByUUID(*it, false); - } - - // Filter, rearrange and notify parent about shape changes - filterItems(); - - bool needs_refresh = add_limit_exceeded; - setNeedsRefresh(needs_refresh); - setForceRefresh(needs_refresh); - - // After list building completed, select items that had been requested to select before list was build - if(!needs_refresh) - { - updateSelection(); - } + LL_RECORD_BLOCK_TIME(FTM_INVENTORY_ITEMS_REFRESH); + + switch (mRefreshState) + { + case REFRESH_ALL: + { + mAddedItems.clear(); + mRemovedItems.clear(); + computeDifference(getIDs(), mAddedItems, mRemovedItems); + if (mRemovedItems.size() > 0) + { + mRefreshState = REFRESH_LIST_ERASE; + } + else if (mAddedItems.size() > 0) + { + mRefreshState = REFRESH_LIST_APPEND; + } + else + { + mRefreshState = REFRESH_LIST_SORT; + } + + rearrangeItems(); + notifyParentItemsRectChanged(); + break; + } + case REFRESH_LIST_ERASE: + { + uuid_vec_t::const_iterator it = mRemovedItems.begin(); + for (; mRemovedItems.end() != it; ++it) + { + // don't filter items right away + removeItemByUUID(*it, false); + } + mRemovedItems.clear(); + mRefreshState = REFRESH_LIST_SORT; // fix visibility and arrange + break; + } + case REFRESH_LIST_APPEND: + { + static const unsigned ADD_LIMIT = 25; // Note: affects perfomance + + unsigned int nadded = 0; + + // form a list to add + uuid_vec_t::iterator it = mAddedItems.begin(); + pairs_list_t panel_list; + while(mAddedItems.size() > 0 && nadded < ADD_LIMIT) + { + LLViewerInventoryItem* item = gInventory.getItem(*it); + llassert(item); + if (item) + { + LLPanel *list_item = createNewItem(item); + if (list_item) + { + item_pair_t* new_pair = new item_pair_t(list_item, item->getUUID()); + panel_list.push_back(new_pair); + ++nadded; + } + } + + it = mAddedItems.erase(it); + } + + // add the list + // Note: usually item pairs are sorted with std::sort, but we are calling + // this function on idle and pairs' list can take a lot of time to sort + // through, so we are sorting items into list while adding them + addItemPairs(panel_list, false); + + // update visibility of items in the list + std::string cur_filter = getFilterSubString(); + LLStringUtil::toUpper(cur_filter); + LLSD action; + action.with("match_filter", cur_filter); + + pairs_const_iterator_t pair_it = panel_list.begin(); + for (; pair_it != panel_list.end(); ++pair_it) + { + item_pair_t* item_pair = *pair_it; + if (item_pair->first->getParent() != NULL) + { + updateItemVisibility(item_pair->first, action); + } + } + + rearrangeItems(); + notifyParentItemsRectChanged(); + + if (mAddedItems.size() > 0) + { + mRefreshState = REFRESH_LIST_APPEND; + } + else + { + // Note: while we do sort and check visibility at REFRESH_LIST_APPEND, update + // could have changed something about existing items so redo checks for all items. + mRefreshState = REFRESH_LIST_SORT; + } + break; + } + case REFRESH_LIST_SORT: + { + // Filter, sort, rearrange and notify parent about shape changes + filterItems(); + + if (mAddedItems.size() == 0) + { + // After list building completed, select items that had been requested to select before list was build + updateSelection(); + mRefreshState = REFRESH_COMPLETE; + } + else + { + mRefreshState = REFRESH_LIST_APPEND; + } + break; + } + default: + break; + } + + setForceRefresh(mRefreshState != REFRESH_COMPLETE); } void LLInventoryItemsList::computeDifference( @@ -204,24 +280,15 @@ void LLInventoryItemsList::computeDifference( LLCommonUtils::computeDifference(vnew, vcur, vadded, vremoved); } -void LLInventoryItemsList::addNewItem(LLViewerInventoryItem* item, bool rearrange /*= true*/) +LLPanel* LLInventoryItemsList::createNewItem(LLViewerInventoryItem* item) { - if (!item) - { - LL_WARNS() << "No inventory item. Couldn't create flat list item." << LL_ENDL; - llassert(item != NULL); - } - - LLPanelInventoryListItemBase *list_item = LLPanelInventoryListItemBase::create(item); - if (!list_item) - return; - - bool is_item_added = addItem(list_item, item->getUUID(), ADD_BOTTOM, rearrange); - if (!is_item_added) - { - LL_WARNS() << "Couldn't add flat list item." << LL_ENDL; - llassert(is_item_added); - } + if (!item) + { + LL_WARNS() << "No inventory item. Couldn't create flat list item." << LL_ENDL; + llassert(item != NULL); + return NULL; + } + return LLPanelInventoryListItemBase::create(item); } // EOF diff --git a/indra/newview/llinventoryitemslist.h b/indra/newview/llinventoryitemslist.h index 1aa230df99..fe05c2ed7c 100644 --- a/indra/newview/llinventoryitemslist.h +++ b/indra/newview/llinventoryitemslist.h @@ -51,9 +51,9 @@ public: /** * Let list know items need to be refreshed in next doIdle() */ - void setNeedsRefresh(bool needs_refresh){ mNeedsRefresh = needs_refresh; } + void setNeedsRefresh(bool needs_refresh){ mRefreshState = needs_refresh ? REFRESH_ALL : REFRESH_COMPLETE; } - bool getNeedsRefresh(){ return mNeedsRefresh; } + U32 getNeedsRefresh(){ return mRefreshState; } /** * Sets the flag indicating that the list needs to be refreshed even if it is @@ -71,7 +71,7 @@ public: * This is needed for example to filter items of the list hidden by closed * accordion tab. */ - void doIdle(); // Real idle routine + virtual void doIdle(); // Real idle routine static void idle(void* user_data); // static glue to doIdle() protected: @@ -94,17 +94,29 @@ protected: void computeDifference(const uuid_vec_t& vnew, uuid_vec_t& vadded, uuid_vec_t& vremoved); /** - * Add an item to the list - */ - virtual void addNewItem(LLViewerInventoryItem* item, bool rearrange = true); + * Create panel(item) from inventory item + */ + virtual LLPanel* createNewItem(LLViewerInventoryItem* item); + +protected: + enum ERefreshStates + { + REFRESH_COMPLETE = 0, + REFRESH_LIST_SORT, + REFRESH_LIST_APPEND, + REFRESH_LIST_ERASE, + REFRESH_ALL + }; + + ERefreshStates mRefreshState; private: uuid_vec_t mIDs; // IDs of items that were added in refreshList(). // Will be used in refresh() to determine added and removed ids uuid_vec_t mSelectTheseIDs; // IDs that will be selected if list is not loaded till now - - bool mNeedsRefresh; + uuid_vec_t mAddedItems; + uuid_vec_t mRemovedItems; bool mForceRefresh; diff --git a/indra/newview/llinventorymodel.cpp b/indra/newview/llinventorymodel.cpp index 503fa28a33..287fa4c45b 100644 --- a/indra/newview/llinventorymodel.cpp +++ b/indra/newview/llinventorymodel.cpp @@ -515,6 +515,42 @@ const LLUUID LLInventoryModel::findCategoryUUIDForType(LLFolderType::EType prefe return findCategoryUUIDForTypeInRoot(preferred_type, create_folder, gInventory.getRootFolderID()); } +const LLUUID LLInventoryModel::findUserDefinedCategoryUUIDForType(LLFolderType::EType preferred_type) +{ + LLUUID cat_id; + switch (preferred_type) + { + case LLFolderType::FT_OBJECT: + { + cat_id = LLUUID(gSavedPerAccountSettings.getString("ModelUploadFolder")); + break; + } + case LLFolderType::FT_TEXTURE: + { + cat_id = LLUUID(gSavedPerAccountSettings.getString("TextureUploadFolder")); + break; + } + case LLFolderType::FT_SOUND: + { + cat_id = LLUUID(gSavedPerAccountSettings.getString("SoundUploadFolder")); + break; + } + case LLFolderType::FT_ANIMATION: + { + cat_id = LLUUID(gSavedPerAccountSettings.getString("AnimationUploadFolder")); + break; + } + default: + break; + } + + if (cat_id.isNull() || !getCategory(cat_id)) + { + cat_id = findCategoryUUIDForTypeInRoot(preferred_type, true, getRootFolderID()); + } + return cat_id; +} + const LLUUID LLInventoryModel::findLibraryCategoryUUIDForType(LLFolderType::EType preferred_type, bool create_folder) { return findCategoryUUIDForTypeInRoot(preferred_type, create_folder, gInventory.getLibraryRootFolderID()); diff --git a/indra/newview/llinventorymodel.h b/indra/newview/llinventorymodel.h index 826d1f880d..dee1769172 100644 --- a/indra/newview/llinventorymodel.h +++ b/indra/newview/llinventorymodel.h @@ -287,6 +287,9 @@ public: // will search in the user's library folder instead of "My Inventory" const LLUUID findLibraryCategoryUUIDForType(LLFolderType::EType preferred_type, bool create_folder = true); + // Returns user specified category for uploads, returns default id if there are no + // user specified one or it does not exist, creates default category if it is missing. + const LLUUID findUserDefinedCategoryUUIDForType(LLFolderType::EType preferred_type); // Get whatever special folder this object is a child of, if any. const LLViewerInventoryCategory *getFirstNondefaultParent(const LLUUID& obj_id) const; diff --git a/indra/newview/llinventorymodelbackgroundfetch.h b/indra/newview/llinventorymodelbackgroundfetch.h index 19fbfc2ed3..00d2908c1b 100644 --- a/indra/newview/llinventorymodelbackgroundfetch.h +++ b/indra/newview/llinventorymodelbackgroundfetch.h @@ -43,9 +43,9 @@ //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ class LLInventoryModelBackgroundFetch : public LLSingleton<LLInventoryModelBackgroundFetch> { -public: - LLInventoryModelBackgroundFetch(); + LLSINGLETON(LLInventoryModelBackgroundFetch); ~LLInventoryModelBackgroundFetch(); +public: // Start and stop background breadth-first fetching of inventory contents. // This gets triggered when performing a filter-search. diff --git a/indra/newview/llinventoryobserver.cpp b/indra/newview/llinventoryobserver.cpp index ce8705b7ac..4427f32de9 100644 --- a/indra/newview/llinventoryobserver.cpp +++ b/indra/newview/llinventoryobserver.cpp @@ -656,7 +656,7 @@ void LLInventoryCategoriesObserver::changed(U32 mask) } } -bool LLInventoryCategoriesObserver::addCategory(const LLUUID& cat_id, callback_t cb) +bool LLInventoryCategoriesObserver::addCategory(const LLUUID& cat_id, callback_t cb, bool init_name_hash) { S32 version = LLViewerInventoryCategory::VERSION_UNKNOWN; S32 current_num_known_descendents = LLViewerInventoryCategory::DESCENDENT_COUNT_UNKNOWN; @@ -694,8 +694,15 @@ bool LLInventoryCategoriesObserver::addCategory(const LLUUID& cat_id, callback_t if (can_be_added) { - mCategoryMap.insert(category_map_value_t( - cat_id,LLCategoryData(cat_id, cb, version, current_num_known_descendents))); + if(init_name_hash) + { + LLMD5 item_name_hash = gInventory.hashDirectDescendentNames(cat_id); + mCategoryMap.insert(category_map_value_t(cat_id,LLCategoryData(cat_id, cb, version, current_num_known_descendents,item_name_hash))); + } + else + { + mCategoryMap.insert(category_map_value_t(cat_id,LLCategoryData(cat_id, cb, version, current_num_known_descendents))); + } } return can_be_added; @@ -718,6 +725,18 @@ LLInventoryCategoriesObserver::LLCategoryData::LLCategoryData( mItemNameHash.finalize(); } +LLInventoryCategoriesObserver::LLCategoryData::LLCategoryData( + const LLUUID& cat_id, callback_t cb, S32 version, S32 num_descendents, LLMD5 name_hash) + + : mCatID(cat_id) + , mCallback(cb) + , mVersion(version) + , mDescendentsCount(num_descendents) + , mIsNameHashInitialized(true) + , mItemNameHash(name_hash) +{ +} + void LLScrollOnRenameObserver::changed(U32 mask) { if (mask & LLInventoryObserver::LABEL) diff --git a/indra/newview/llinventoryobserver.h b/indra/newview/llinventoryobserver.h index 8cf6a6bdab..36d8ee3f59 100644 --- a/indra/newview/llinventoryobserver.h +++ b/indra/newview/llinventoryobserver.h @@ -267,14 +267,14 @@ public: * @return "true" if category was added, "false" if it could * not be found. */ - bool addCategory(const LLUUID& cat_id, callback_t cb); + bool addCategory(const LLUUID& cat_id, callback_t cb, bool init_name_hash = false); void removeCategory(const LLUUID& cat_id); protected: struct LLCategoryData { LLCategoryData(const LLUUID& cat_id, callback_t cb, S32 version, S32 num_descendents); - + LLCategoryData(const LLUUID& cat_id, callback_t cb, S32 version, S32 num_descendents, LLMD5 name_hash); callback_t mCallback; S32 mVersion; S32 mDescendentsCount; diff --git a/indra/newview/llinventorypanel.cpp b/indra/newview/llinventorypanel.cpp index f5dcbf838d..bd15ba4975 100644 --- a/indra/newview/llinventorypanel.cpp +++ b/indra/newview/llinventorypanel.cpp @@ -34,7 +34,6 @@ #include "llappearancemgr.h" #include "llavataractions.h" #include "llclipboard.h" -#include "llfloaterinventory.h" #include "llfloaterreg.h" #include "llfloatersidepanelcontainer.h" #include "llfolderview.h" @@ -168,7 +167,7 @@ LLInventoryPanel::LLInventoryPanel(const LLInventoryPanel::Params& p) : mCommitCallbackRegistrar.add("Inventory.AttachObject", boost::bind(&LLInventoryPanel::attachObject, this, _2)); mCommitCallbackRegistrar.add("Inventory.BeginIMSession", boost::bind(&LLInventoryPanel::beginIMSession, this)); mCommitCallbackRegistrar.add("Inventory.Share", boost::bind(&LLAvatarActions::shareWithAvatars, this)); - + mCommitCallbackRegistrar.add("Inventory.FileUploadLocation", boost::bind(&LLInventoryPanel::fileUploadLocation, this, _2)); } LLFolderView * LLInventoryPanel::createFolderRoot(LLUUID root_id ) @@ -1191,6 +1190,27 @@ bool LLInventoryPanel::beginIMSession() return true; } +void LLInventoryPanel::fileUploadLocation(const LLSD& userdata) +{ + const std::string param = userdata.asString(); + if (param == "model") + { + gSavedPerAccountSettings.setString("ModelUploadFolder", LLFolderBridge::sSelf.get()->getUUID().asString()); + } + else if (param == "texture") + { + gSavedPerAccountSettings.setString("TextureUploadFolder", LLFolderBridge::sSelf.get()->getUUID().asString()); + } + else if (param == "sound") + { + gSavedPerAccountSettings.setString("SoundUploadFolder", LLFolderBridge::sSelf.get()->getUUID().asString()); + } + else if (param == "animation") + { + gSavedPerAccountSettings.setString("AnimationUploadFolder", LLFolderBridge::sSelf.get()->getUUID().asString()); + } +} + bool LLInventoryPanel::attachObject(const LLSD& userdata) { // Copy selected item UUIDs to a vector. diff --git a/indra/newview/llinventorypanel.h b/indra/newview/llinventorypanel.h index b69edd8b93..5cb9dde47a 100644 --- a/indra/newview/llinventorypanel.h +++ b/indra/newview/llinventorypanel.h @@ -201,6 +201,7 @@ public: void doToSelected(const LLSD& userdata); void doCreate(const LLSD& userdata); bool beginIMSession(); + void fileUploadLocation(const LLSD& userdata); bool attachObject(const LLSD& userdata); static void idle(void* user_data); diff --git a/indra/newview/lllocationhistory.h b/indra/newview/lllocationhistory.h index 9fef42c5df..1cecbabd3b 100644 --- a/indra/newview/lllocationhistory.h +++ b/indra/newview/lllocationhistory.h @@ -103,6 +103,7 @@ public: class LLLocationHistory: public LLSingleton<LLLocationHistory> { + LLSINGLETON(LLLocationHistory); LOG_CLASS(LLLocationHistory); public: @@ -117,7 +118,6 @@ public: typedef boost::function<void(EChangeType event)> history_changed_callback_t; typedef boost::signals2::signal<void(EChangeType event)> history_changed_signal_t; - LLLocationHistory(); void addItem(const LLLocationHistoryItem& item); bool touchItem(const LLLocationHistoryItem& item); diff --git a/indra/newview/lllogchat.cpp b/indra/newview/lllogchat.cpp index 485d4677b1..b9194c6c67 100644 --- a/indra/newview/lllogchat.cpp +++ b/indra/newview/lllogchat.cpp @@ -132,15 +132,9 @@ void append_to_last_message(std::list<LLSD>& messages, const std::string& line) class LLLogChatTimeScanner: public LLSingleton<LLLogChatTimeScanner> { -public: - LLLogChatTimeScanner() - { - // Note, date/time facets will be destroyed by string streams - mDateStream.imbue(std::locale(mDateStream.getloc(), new date_input_facet(DATE_FORMAT))); - mTimeStream.imbue(std::locale(mTimeStream.getloc(), new time_facet(TIME_FORMAT))); - mTimeStream.imbue(std::locale(mTimeStream.getloc(), new time_input_facet(DATE_FORMAT))); - } + LLSINGLETON(LLLogChatTimeScanner); +public: date getTodayPacificDate() { typedef boost::date_time::local_adjustor<ptime, -8, no_dst> pst; @@ -205,6 +199,15 @@ private: std::stringstream mTimeStream; }; +inline +LLLogChatTimeScanner::LLLogChatTimeScanner() +{ + // Note, date/time facets will be destroyed by string streams + mDateStream.imbue(std::locale(mDateStream.getloc(), new date_input_facet(DATE_FORMAT))); + mTimeStream.imbue(std::locale(mTimeStream.getloc(), new time_facet(TIME_FORMAT))); + mTimeStream.imbue(std::locale(mTimeStream.getloc(), new time_input_facet(DATE_FORMAT))); +} + LLLogChat::save_history_signal_t * LLLogChat::sSaveHistorySignal = NULL; std::map<LLUUID,LLLoadHistoryThread *> LLLogChat::sLoadHistoryThreads; diff --git a/indra/newview/llloginhandler.cpp b/indra/newview/llloginhandler.cpp index 39f3c0f113..eca34c0d4d 100644 --- a/indra/newview/llloginhandler.cpp +++ b/indra/newview/llloginhandler.cpp @@ -168,7 +168,6 @@ LLPointer<LLCredential> LLLoginHandler::loadSavedUserLoginInfo() authenticator["algorithm"] = "md5"; authenticator["secret"] = md5pass; // yuck, we'll fix this with mani's changes. - gSavedSettings.setBOOL("AutoLogin", TRUE); return gSecAPIHandler->createCredential(LLGridManager::getInstance()->getGrid(), identifier, authenticator); } diff --git a/indra/newview/lllogininstance.h b/indra/newview/lllogininstance.h index c6773bbf68..282ddc1cea 100644 --- a/indra/newview/lllogininstance.h +++ b/indra/newview/lllogininstance.h @@ -40,12 +40,12 @@ class LLUpdaterService; // negotiate user authentication attempts. class LLLoginInstance : public LLSingleton<LLLoginInstance> { + LLSINGLETON(LLLoginInstance); + ~LLLoginInstance(); + public: class Disposable; - LLLoginInstance(); - ~LLLoginInstance(); - void connect(LLPointer<LLCredential> credentials); // Connect to the current grid choice. void connect(const std::string& uri, LLPointer<LLCredential> credentials); // Connect to the given uri. void reconnect(); // reconnect using the current credentials. diff --git a/indra/newview/llmainlooprepeater.h b/indra/newview/llmainlooprepeater.h index f84c0ca94c..2ec3a74e4a 100644 --- a/indra/newview/llmainlooprepeater.h +++ b/indra/newview/llmainlooprepeater.h @@ -43,9 +43,8 @@ class LLMainLoopRepeater: public LLSingleton<LLMainLoopRepeater> { + LLSINGLETON(LLMainLoopRepeater); public: - LLMainLoopRepeater(void); - // Start the repeater service. void start(void); diff --git a/indra/newview/llmaniprotate.cpp b/indra/newview/llmaniprotate.cpp index 3a0f96cd37..7bd5e4cba2 100644 --- a/indra/newview/llmaniprotate.cpp +++ b/indra/newview/llmaniprotate.cpp @@ -1157,6 +1157,9 @@ BOOL LLManipRotate::updateVisiblity() BOOL visible = FALSE; + //Assume that UI scale factor is equivalent for X and Y axis + F32 ui_scale_factor = LLUI::getScaleFactor().mV[VX]; + LLVector3 center = gAgent.getPosAgentFromGlobal( mRotationCenter ); if (mObjectSelection->getSelectType() == SELECT_TYPE_HUD) { @@ -1166,6 +1169,7 @@ BOOL LLManipRotate::updateVisiblity() mRadiusMeters = RADIUS_PIXELS / (F32) LLViewerCamera::getInstance()->getViewHeightInPixels(); mRadiusMeters /= gAgentCamera.mHUDCurZoom; + mRadiusMeters *= ui_scale_factor; mCenterToProfilePlaneMag = mRadiusMeters * mRadiusMeters / mCenterToCamMag; mCenterToProfilePlane = -mCenterToProfilePlaneMag * mCenterToCamNorm; @@ -1205,6 +1209,7 @@ BOOL LLManipRotate::updateVisiblity() F32 fraction_of_fov = RADIUS_PIXELS / (F32) LLViewerCamera::getInstance()->getViewHeightInPixels(); F32 apparent_angle = fraction_of_fov * LLViewerCamera::getInstance()->getView(); // radians mRadiusMeters = z_dist * tan(apparent_angle); + mRadiusMeters *= ui_scale_factor; mCenterToProfilePlaneMag = mRadiusMeters * mRadiusMeters / mCenterToCamMag; mCenterToProfilePlane = -mCenterToProfilePlaneMag * mCenterToCamNorm; diff --git a/indra/newview/llmanipscale.cpp b/indra/newview/llmanipscale.cpp index 3cbe742e3c..8b2ac4f303 100644 --- a/indra/newview/llmanipscale.cpp +++ b/indra/newview/llmanipscale.cpp @@ -228,12 +228,16 @@ void LLManipScale::render() const F32 BOX_HANDLE_BASE_SIZE = 50.0f; // box size in pixels = BOX_HANDLE_BASE_SIZE * BOX_HANDLE_BASE_FACTOR const F32 BOX_HANDLE_BASE_FACTOR = 0.2f; + //Assume that UI scale factor is equivalent for X and Y axis + F32 ui_scale_factor = LLUI::getScaleFactor().mV[VX]; + if (mObjectSelection->getSelectType() == SELECT_TYPE_HUD) { for (S32 i = 0; i < NUM_MANIPULATORS; i++) { mBoxHandleSize[i] = BOX_HANDLE_BASE_SIZE * BOX_HANDLE_BASE_FACTOR / (F32) LLViewerCamera::getInstance()->getViewHeightInPixels(); mBoxHandleSize[i] /= gAgentCamera.mHUDCurZoom; + mBoxHandleSize[i] *= ui_scale_factor; } } else @@ -266,6 +270,7 @@ void LLManipScale::render() // range == zero mBoxHandleSize[i] = BOX_HANDLE_BASE_FACTOR; } + mBoxHandleSize[i] *= ui_scale_factor; } } diff --git a/indra/newview/llmaniptranslate.cpp b/indra/newview/llmaniptranslate.cpp index 3975d3980b..785022792b 100644 --- a/indra/newview/llmaniptranslate.cpp +++ b/indra/newview/llmaniptranslate.cpp @@ -1857,6 +1857,9 @@ void LLManipTranslate::renderTranslationHandles() mArrowLengthMeters = 1.0f; } } + //Assume that UI scale factor is equivalent for X and Y axis + F32 ui_scale_factor = LLUI::getScaleFactor().mV[VX]; + mArrowLengthMeters *= ui_scale_factor; mPlaneManipOffsetMeters = mArrowLengthMeters * 1.8f; mGridSizeMeters = gSavedSettings.getF32("GridDrawSize"); diff --git a/indra/newview/llmarketplacefunctions.h b/indra/newview/llmarketplacefunctions.h index 9d795c6ced..ec312baca3 100644 --- a/indra/newview/llmarketplacefunctions.h +++ b/indra/newview/llmarketplacefunctions.h @@ -86,11 +86,10 @@ namespace MarketplaceFetchCodes class LLMarketplaceInventoryImporter : public LLSingleton<LLMarketplaceInventoryImporter> { + LLSINGLETON(LLMarketplaceInventoryImporter); public: static void update(); - - LLMarketplaceInventoryImporter(); - + typedef boost::signals2::signal<void (bool)> status_changed_signal_t; typedef boost::signals2::signal<void (U32, const LLSD&)> status_report_signal_t; @@ -181,10 +180,11 @@ class LLSLMDeleteListingsResponder; class LLMarketplaceData : public LLSingleton<LLMarketplaceData> { - friend class LLSingleton < LLMarketplaceData > ; + LLSINGLETON(LLMarketplaceData); + virtual ~LLMarketplaceData(); public: - friend class LLSLMGetMerchantResponder; + friend class LLSLMGetMerchantResponder; friend class LLSLMGetListingsResponder; friend class LLSLMCreateListingsResponder; friend class LLSLMGetListingResponder; @@ -242,9 +242,6 @@ public: void decrementValidationWaiting(const LLUUID& folder_id, S32 count = 1); private: - LLMarketplaceData(); - virtual ~LLMarketplaceData(); - // Modify Marketplace data set : each method returns true if the function succeeds, false if error // Used internally only by SLM Responders when data are received from the SLM Server bool addListing(const LLUUID& folder_id, S32 listing_id, const LLUUID& version_id, bool is_listed, const std::string& edit_url, S32 count); diff --git a/indra/newview/llmaterialmgr.h b/indra/newview/llmaterialmgr.h index 36dd0904b6..60b58d17de 100644 --- a/indra/newview/llmaterialmgr.h +++ b/indra/newview/llmaterialmgr.h @@ -38,9 +38,7 @@ class LLViewerRegion; class LLMaterialMgr : public LLSingleton<LLMaterialMgr> { - friend class LLSingleton<LLMaterialMgr>; -protected: - LLMaterialMgr(); + LLSINGLETON(LLMaterialMgr); virtual ~LLMaterialMgr(); public: diff --git a/indra/newview/llmenuoptionpathfindingrebakenavmesh.cpp b/indra/newview/llmenuoptionpathfindingrebakenavmesh.cpp index 8879cfd7fb..63d97f6ac2 100644 --- a/indra/newview/llmenuoptionpathfindingrebakenavmesh.cpp +++ b/indra/newview/llmenuoptionpathfindingrebakenavmesh.cpp @@ -41,8 +41,7 @@ #include "llpathfindingnavmeshstatus.h" #include "llviewerregion.h" -LLMenuOptionPathfindingRebakeNavmesh::LLMenuOptionPathfindingRebakeNavmesh() - : LLSingleton<LLMenuOptionPathfindingRebakeNavmesh>(), +LLMenuOptionPathfindingRebakeNavmesh::LLMenuOptionPathfindingRebakeNavmesh() : mIsInitialized(false), mCanRebakeRegion(false), mRebakeNavMeshMode(kRebakeNavMesh_Default), diff --git a/indra/newview/llmenuoptionpathfindingrebakenavmesh.h b/indra/newview/llmenuoptionpathfindingrebakenavmesh.h index 7b1d2873ba..649a387dd3 100644 --- a/indra/newview/llmenuoptionpathfindingrebakenavmesh.h +++ b/indra/newview/llmenuoptionpathfindingrebakenavmesh.h @@ -37,6 +37,8 @@ class LLPathfindingNavMeshStatus; class LLMenuOptionPathfindingRebakeNavmesh : public LLSingleton<LLMenuOptionPathfindingRebakeNavmesh> { + LLSINGLETON(LLMenuOptionPathfindingRebakeNavmesh); + virtual ~LLMenuOptionPathfindingRebakeNavmesh(); LOG_CLASS(LLMenuOptionPathfindingRebakeNavmesh); public: @@ -49,8 +51,6 @@ public: kRebakeNavMesh_Default = kRebakeNavMesh_NotAvailable } ERebakeNavMeshMode; - LLMenuOptionPathfindingRebakeNavmesh(); - virtual ~LLMenuOptionPathfindingRebakeNavmesh(); void initialize(); void quit(); diff --git a/indra/newview/llmeshrepository.cpp b/indra/newview/llmeshrepository.cpp index 9dacae2c4e..1a533dace7 100644 --- a/indra/newview/llmeshrepository.cpp +++ b/indra/newview/llmeshrepository.cpp @@ -2030,8 +2030,8 @@ void LLMeshUploadThread::wholeModelToLLSD(LLSD& dest, bool include_textures) LLSD result; LLSD res; - result["folder_id"] = gInventory.findCategoryUUIDForType(LLFolderType::FT_OBJECT); - result["texture_folder_id"] = gInventory.findCategoryUUIDForType(LLFolderType::FT_TEXTURE); + result["folder_id"] = gInventory.findUserDefinedCategoryUUIDForType(LLFolderType::FT_OBJECT); + result["texture_folder_id"] = gInventory.findUserDefinedCategoryUUIDForType(LLFolderType::FT_TEXTURE); result["asset_type"] = "mesh"; result["inventory_type"] = "object"; result["description"] = "(No Description)"; @@ -3536,11 +3536,11 @@ void LLMeshRepository::notifyLoadedMeshes() // Handle addition of texture, if any. if ( data.mResponse.has("new_texture_folder_id") ) { - const LLUUID& folder_id = data.mResponse["new_texture_folder_id"].asUUID(); + const LLUUID& new_folder_id = data.mResponse["new_texture_folder_id"].asUUID(); - if ( folder_id.notNull() ) + if ( new_folder_id.notNull() ) { - LLUUID parent_id = gInventory.findCategoryUUIDForType(LLFolderType::FT_TEXTURE); + LLUUID parent_id = gInventory.findUserDefinedCategoryUUIDForType(LLFolderType::FT_TEXTURE); std::string name; // Check if the server built a different name for the texture folder @@ -3555,7 +3555,7 @@ void LLMeshRepository::notifyLoadedMeshes() // Add the category to the internal representation LLPointer<LLViewerInventoryCategory> cat = - new LLViewerInventoryCategory(folder_id, parent_id, + new LLViewerInventoryCategory(new_folder_id, parent_id, LLFolderType::FT_NONE, name, gAgent.getID()); cat->setVersion(LLViewerInventoryCategory::VERSION_UNKNOWN); diff --git a/indra/newview/llmutelist.cpp b/indra/newview/llmutelist.cpp index 01cf68bcda..0f70c9d13f 100644 --- a/indra/newview/llmutelist.cpp +++ b/indra/newview/llmutelist.cpp @@ -47,6 +47,7 @@ #include "pipeline.h" #include <boost/tokenizer.hpp> +#include <boost/bind.hpp> #include "lldispatcher.h" #include "llxfermanager.h" @@ -56,6 +57,7 @@ #include "llworld.h" //for particle system banning #include "llimview.h" #include "llnotifications.h" +#include "llviewercontrol.h" #include "llviewerobjectlist.h" #include "lltrans.h" @@ -146,22 +148,6 @@ std::string LLMute::getDisplayType() const } } - -/* static */ -LLMuteList* LLMuteList::getInstance() -{ - // Register callbacks at the first time that we find that the message system has been created. - static BOOL registered = FALSE; - if( !registered && gMessageSystem != NULL) - { - registered = TRUE; - // Register our various callbacks - gMessageSystem->setHandlerFuncFast(_PREHASH_MuteListUpdate, processMuteListUpdate); - gMessageSystem->setHandlerFuncFast(_PREHASH_UseCachedMuteList, processUseCachedMuteList); - } - return LLSingleton<LLMuteList>::getInstance(); // Call the "base" implementation. -} - //----------------------------------------------------------------------------- // LLMuteList() //----------------------------------------------------------------------------- @@ -169,6 +155,18 @@ LLMuteList::LLMuteList() : mIsLoaded(FALSE) { gGenericDispatcher.addHandler("emptymutelist", &sDispatchEmptyMuteList); + + // Register our callbacks. We may be constructed before gMessageSystem, so + // use callWhenReady() to register them as soon as gMessageSystem becomes + // available. + // When using bind(), must be explicit about default arguments such as + // that last NULL. + gMessageSystem.callWhenReady(boost::bind(&LLMessageSystem::setHandlerFuncFast, _1, + _PREHASH_MuteListUpdate, processMuteListUpdate, + static_cast<void**>(NULL))); + gMessageSystem.callWhenReady(boost::bind(&LLMessageSystem::setHandlerFuncFast, _1, + _PREHASH_UseCachedMuteList, processUseCachedMuteList, + static_cast<void**>(NULL))); } //----------------------------------------------------------------------------- @@ -231,6 +229,16 @@ BOOL LLMuteList::add(const LLMute& mute, U32 flags) return FALSE; } + S32 mute_list_limit = gSavedSettings.getS32("MuteListLimit"); + if (getMutes().size() >= mute_list_limit) + { + LL_WARNS() << "Mute limit is reached; ignored" << LL_ENDL; + LLSD args; + args["MUTE_LIMIT"] = mute_list_limit; + LLNotifications::instance().add(LLNotification::Params("MuteLimitReached").substitutions(args)); + return FALSE; + } + if (mute.mType == LLMute::BY_NAME) { // Can't mute empty string by name diff --git a/indra/newview/llmutelist.h b/indra/newview/llmutelist.h index 4e7b6ee880..4ceddc97fd 100644 --- a/indra/newview/llmutelist.h +++ b/indra/newview/llmutelist.h @@ -71,6 +71,8 @@ public: class LLMuteList : public LLSingleton<LLMuteList> { + LLSINGLETON(LLMuteList); + ~LLMuteList(); public: // reasons for auto-unmuting a resident enum EAutoReason @@ -81,13 +83,6 @@ public: AR_COUNT // enum count }; - LLMuteList(); - ~LLMuteList(); - - // Implemented locally so that we can perform some delayed initialization. - // Callers should be careful to call this one and not LLSingleton<LLMuteList>::getInstance() - // which would circumvent that mechanism. -MG - static LLMuteList* getInstance(); void addObserver(LLMuteListObserver* observer); void removeObserver(LLMuteListObserver* observer); diff --git a/indra/newview/llnavigationbar.h b/indra/newview/llnavigationbar.h index 29dbaedf7a..a44c6dd699 100644..100755 --- a/indra/newview/llnavigationbar.h +++ b/indra/newview/llnavigationbar.h @@ -30,6 +30,7 @@ #include "llpanel.h" #include "llbutton.h" #include "lllayoutstack.h" +#include "llinitdestroyclass.h" class LLLocationInputCtrl; class LLMenuGL; @@ -84,12 +85,12 @@ protected: class LLNavigationBar : public LLPanel, public LLSingleton<LLNavigationBar>, private LLDestroyClass<LLNavigationBar> { + LLSINGLETON(LLNavigationBar); + virtual ~LLNavigationBar(); LOG_CLASS(LLNavigationBar); friend class LLDestroyClass<LLNavigationBar>; - + public: - LLNavigationBar(); - virtual ~LLNavigationBar(); /*virtual*/ void draw(); /*virtual*/ BOOL handleRightMouseDown(S32 x, S32 y, MASK mask); diff --git a/indra/newview/llnotificationmanager.h b/indra/newview/llnotificationmanager.h index f37c6b833c..52c79cc689 100644 --- a/indra/newview/llnotificationmanager.h +++ b/indra/newview/llnotificationmanager.h @@ -46,11 +46,11 @@ class LLToast; */ class LLNotificationManager : public LLSingleton<LLNotificationManager> { - typedef std::pair<std::string, LLEventHandler*> eventhandlers; -public: - LLNotificationManager(); + LLSINGLETON(LLNotificationManager); virtual ~LLNotificationManager(); + typedef std::pair<std::string, LLEventHandler*> eventhandlers; +public: //TODO: make private // this method initialize handlers' map for different types of notifications void init(void); diff --git a/indra/newview/llnotificationstorage.cpp b/indra/newview/llnotificationstorage.cpp index 3418b33d37..35fdfa88bb 100644 --- a/indra/newview/llnotificationstorage.cpp +++ b/indra/newview/llnotificationstorage.cpp @@ -45,9 +45,10 @@ typedef boost::function<LLNotificationResponderInterface * (const LLSD& pParams) class LLResponderRegistry : public LLRegistrySingleton<std::string, responder_constructor_t, LLResponderRegistry> { - public: - template<typename RESPONDER_TYPE> static LLNotificationResponderInterface * create(const LLSD& pParams); - LLNotificationResponderInterface * createResponder(const std::string& pNotificationName, const LLSD& pParams); + LLSINGLETON_EMPTY_CTOR(LLResponderRegistry); +public: + template<typename RESPONDER_TYPE> static LLNotificationResponderInterface * create(const LLSD& pParams); + LLNotificationResponderInterface * createResponder(const std::string& pNotificationName, const LLSD& pParams); }; template<typename RESPONDER_TYPE> LLNotificationResponderInterface * LLResponderRegistry::create(const LLSD& pParams) diff --git a/indra/newview/lloutfitgallery.cpp b/indra/newview/lloutfitgallery.cpp index de6a36ce2f..eeeb7e5c25 100644 --- a/indra/newview/lloutfitgallery.cpp +++ b/indra/newview/lloutfitgallery.cpp @@ -106,7 +106,8 @@ BOOL LLOutfitGallery::postBuild() { BOOL rv = LLOutfitListBase::postBuild(); mScrollPanel = getChild<LLScrollContainer>("gallery_scroll_panel"); - mGalleryPanel = getChild<LLPanel>("gallery_panel"); + LLPanel::Params params = LLPanel::getDefaultParams(); // Don't parse XML when creating dummy LLPanel + mGalleryPanel = LLUICtrlFactory::create<LLPanel>(params); mMessageTextBox = getChild<LLTextBox>("no_outfits_txt"); mOutfitGalleryMenu = new LLOutfitGalleryContextMenu(this); return rv; @@ -234,6 +235,7 @@ void LLOutfitGallery::removeLastRow() { mRowCount--; mGalleryPanel->removeChild(mLastRowPanel); + mUnusedRowPanels.push_back(mLastRowPanel); mRowPanels.pop_back(); mLastRowPanel = mRowPanels.back(); } @@ -335,6 +337,7 @@ void LLOutfitGallery::removeFromLastRow(LLOutfitGalleryItem* item) { mItemPanels.back()->removeChild(item); mLastRowPanel->removeChild(mItemPanels.back()); + mUnusedItemPanels.push_back(mItemPanels.back()); mItemPanels.pop_back(); } @@ -374,7 +377,16 @@ LLPanel* LLOutfitGallery::buildItemPanel(int left) { LLPanel::Params lpparams; int top = 0; - LLPanel* lpanel = LLUICtrlFactory::create<LLPanel>(lpparams); + LLPanel* lpanel = NULL; + if(mUnusedItemPanels.empty()) + { + lpanel = LLUICtrlFactory::create<LLPanel>(lpparams); + } + else + { + lpanel = mUnusedItemPanels.back(); + mUnusedItemPanels.pop_back(); + } LLRect rect = LLRect(left, top + mItemHeight, left + mItemWidth + mItemHorizontalGap, top); lpanel->setRect(rect); lpanel->reshape(mItemWidth + mItemHorizontalGap, mItemHeight); @@ -387,7 +399,16 @@ LLPanel* LLOutfitGallery::buildItemPanel(int left) LLPanel* LLOutfitGallery::buildRowPanel(int left, int bottom) { LLPanel::Params sparams; - LLPanel* stack = LLUICtrlFactory::create<LLPanel>(sparams); + LLPanel* stack = NULL; + if(mUnusedRowPanels.empty()) + { + stack = LLUICtrlFactory::create<LLPanel>(sparams); + } + else + { + stack = mUnusedRowPanels.back(); + mUnusedRowPanels.pop_back(); + } moveRowPanel(stack, left, bottom); return stack; } @@ -417,6 +438,19 @@ LLOutfitGallery::~LLOutfitGallery() gInventory.removeObserver(mOutfitsObserver); } delete mOutfitsObserver; + + while (!mUnusedRowPanels.empty()) + { + LLPanel* panelp = mUnusedRowPanels.back(); + mUnusedRowPanels.pop_back(); + panelp->die(); + } + while (!mUnusedItemPanels.empty()) + { + LLPanel* panelp = mUnusedItemPanels.back(); + mUnusedItemPanels.pop_back(); + panelp->die(); + } } void LLOutfitGallery::setFilterSubString(const std::string& string) @@ -497,7 +531,7 @@ void LLOutfitGallery::updateAddedCategory(LLUUID cat_id) // Start observing changes in "My Outfits" category. mOutfitsObserver->addCategory(cat_id, - boost::bind(&LLOutfitGallery::refreshOutfit, this, cat_id)); + boost::bind(&LLOutfitGallery::refreshOutfit, this, cat_id), true); outfit_category->fetch(); refreshOutfit(cat_id); @@ -640,7 +674,6 @@ BOOL LLOutfitGalleryItem::postBuild() mOutfitNameText = getChild<LLTextBox>("outfit_name"); mOutfitWornText = getChild<LLTextBox>("outfit_worn_text"); - mFotoBgPanel = getChild<LLPanel>("foto_bg_panel"); mTextBgPanel = getChild<LLPanel>("text_bg_panel"); setOutfitWorn(false); mHidden = false; @@ -1093,7 +1126,7 @@ void LLOutfitGallery::uploadPhoto(LLUUID outfit_id) return; } - S32 expected_upload_cost = LLGlobalEconomy::Singleton::getInstance()->getPriceUpload(); // kinda hack - assumes that unsubclassed LLFloaterNameDesc is only used for uploading chargeable assets, which it is right now (it's only used unsubclassed for the sound upload dialog, and THAT should be a subclass). + S32 expected_upload_cost = LLGlobalEconomy::getInstance()->getPriceUpload(); // kinda hack - assumes that unsubclassed LLFloaterNameDesc is only used for uploading chargeable assets, which it is right now (it's only used unsubclassed for the sound upload dialog, and THAT should be a subclass). void *nruserdata = NULL; nruserdata = (void *)&outfit_id; @@ -1161,7 +1194,7 @@ void LLOutfitGallery::onTexturePickerCommit(LLTextureCtrl::ETexturePickOp op, LL } else { - image_item_id = floaterp->findItemID(floaterp->getAssetID(), FALSE); + image_item_id = floaterp->findItemID(floaterp->getAssetID(), FALSE, TRUE); if (image_item_id.isNull()) { LL_WARNS() << "id or image_item_id is NULL!" << LL_ENDL; diff --git a/indra/newview/lloutfitgallery.h b/indra/newview/lloutfitgallery.h index 6b13f264a4..b9fc10f015 100644 --- a/indra/newview/lloutfitgallery.h +++ b/indra/newview/lloutfitgallery.h @@ -158,6 +158,8 @@ private: void moveRowPanel(LLPanel* stack, int left, int bottom); std::vector<LLPanel*> mRowPanels; std::vector<LLPanel*> mItemPanels; + std::vector<LLPanel*> mUnusedRowPanels; + std::vector<LLPanel*> mUnusedItemPanels; std::vector<LLOutfitGalleryItem*> mItems; std::vector<LLOutfitGalleryItem*> mHiddenItems; LLScrollContainer* mScrollPanel; @@ -273,7 +275,6 @@ private: LLTextBox* mOutfitNameText; LLTextBox* mOutfitWornText; LLPanel* mTextBgPanel; - LLPanel* mFotoBgPanel; bool mSelected; bool mWorn; bool mDefaultImage; diff --git a/indra/newview/lloutfitobserver.h b/indra/newview/lloutfitobserver.h index 87d4b0c998..77041db68d 100644 --- a/indra/newview/lloutfitobserver.h +++ b/indra/newview/lloutfitobserver.h @@ -36,10 +36,10 @@ */ class LLOutfitObserver: public LLInventoryObserver, public LLSingleton<LLOutfitObserver> { -public: + LLSINGLETON(LLOutfitObserver); virtual ~LLOutfitObserver(); - friend class LLSingleton<LLOutfitObserver>; +public: virtual void changed(U32 mask); @@ -58,7 +58,6 @@ public: void addOutfitLockChangedCallback(const signal_t::slot_type& cb) { mOutfitLockChanged.connect(cb); } protected: - LLOutfitObserver(); /** Get a version of an inventory category specified by its UUID */ static S32 getCategoryVersion(const LLUUID& cat_id); diff --git a/indra/newview/lloutfitslist.cpp b/indra/newview/lloutfitslist.cpp index 87c3c5042b..e1f51e62e3 100644 --- a/indra/newview/lloutfitslist.cpp +++ b/indra/newview/lloutfitslist.cpp @@ -872,8 +872,15 @@ void LLOutfitListBase::refreshList(const LLUUID& category_id) ++items_iter) { LLViewerInventoryCategory *cat = gInventory.getCategory(*items_iter); - if (!cat) return; - + if (!cat) + { + LLInventoryObject* obj = gInventory.getObject(*items_iter); + if(!obj || (obj->getType() != LLAssetType::AT_CATEGORY)) + { + return; + } + cat = (LLViewerInventoryCategory*)obj; + } std::string name = cat->getName(); updateChangedCategoryName(cat, name); diff --git a/indra/newview/llpaneleditwearable.cpp b/indra/newview/llpaneleditwearable.cpp index b7e1b2d3a4..f2d43a1037 100644 --- a/indra/newview/llpaneleditwearable.cpp +++ b/indra/newview/llpaneleditwearable.cpp @@ -117,8 +117,7 @@ class LLEditWearableDictionary : public LLSingleton<LLEditWearableDictionary> //-------------------------------------------------------------------- // Constructors and Destructors //-------------------------------------------------------------------- -public: - LLEditWearableDictionary(); + LLSINGLETON(LLEditWearableDictionary); virtual ~LLEditWearableDictionary(); //-------------------------------------------------------------------- diff --git a/indra/newview/llpanelgroupnotices.cpp b/indra/newview/llpanelgroupnotices.cpp index 54728885c1..48b659a81e 100644 --- a/indra/newview/llpanelgroupnotices.cpp +++ b/indra/newview/llpanelgroupnotices.cpp @@ -37,7 +37,6 @@ #include "llinventoryfunctions.h" #include "llinventoryicon.h" #include "llinventorymodel.h" -#include "llfloaterinventory.h" #include "llagent.h" #include "llagentui.h" diff --git a/indra/newview/llpanelmaininventory.cpp b/indra/newview/llpanelmaininventory.cpp index eb40616a9c..fa946ee5c7 100644 --- a/indra/newview/llpanelmaininventory.cpp +++ b/indra/newview/llpanelmaininventory.cpp @@ -33,7 +33,6 @@ #include "lldndbutton.h" #include "lleconomy.h" #include "llfilepicker.h" -#include "llfloaterinventory.h" #include "llinventorybridge.h" #include "llinventoryfunctions.h" #include "llinventorymodelbackgroundfetch.h" @@ -115,7 +114,6 @@ LLPanelMainInventory::LLPanelMainInventory(const LLPanel::Params& p) mCommitCallbackRegistrar.add("Inventory.EmptyTrash", boost::bind(&LLInventoryModel::emptyFolderType, &gInventory, "ConfirmEmptyTrash", LLFolderType::FT_TRASH)); mCommitCallbackRegistrar.add("Inventory.EmptyLostAndFound", boost::bind(&LLInventoryModel::emptyFolderType, &gInventory, "ConfirmEmptyLostAndFound", LLFolderType::FT_LOST_AND_FOUND)); mCommitCallbackRegistrar.add("Inventory.DoCreate", boost::bind(&LLPanelMainInventory::doCreate, this, _2)); - //mCommitCallbackRegistrar.add("Inventory.NewWindow", boost::bind(&LLPanelMainInventory::newWindow, this)); mCommitCallbackRegistrar.add("Inventory.ShowFilters", boost::bind(&LLPanelMainInventory::toggleFindOptions, this)); mCommitCallbackRegistrar.add("Inventory.ResetFilters", boost::bind(&LLPanelMainInventory::resetFilters, this)); mCommitCallbackRegistrar.add("Inventory.SetSortBy", boost::bind(&LLPanelMainInventory::setSortBy, this, _2)); @@ -1194,6 +1192,20 @@ bool LLPanelMainInventory::isSaveTextureEnabled(const LLSD& userdata) BOOL LLPanelMainInventory::isActionEnabled(const LLSD& userdata) { const std::string command_name = userdata.asString(); + if (command_name == "not_empty") + { + BOOL status = FALSE; + LLFolderViewItem* current_item = getActivePanel()->getRootFolder()->getCurSelectedItem(); + if (current_item) + { + const LLUUID& item_id = static_cast<LLFolderViewModelItemInventory*>(current_item->getViewModelItem())->getUUID(); + LLInventoryModel::cat_array_t* cat_array; + LLInventoryModel::item_array_t* item_array; + gInventory.getDirectDescendentsOf(item_id, cat_array, item_array); + status = (0 == cat_array->size() && 0 == item_array->size()); + } + return status; + } if (command_name == "delete") { return getActivePanel()->isSelectionRemovable(); @@ -1251,6 +1263,18 @@ BOOL LLPanelMainInventory::isActionEnabled(const LLSD& userdata) LLSidepanelInventory* parent = LLFloaterSidePanelContainer::getPanel<LLSidepanelInventory>("inventory"); return parent ? parent->canShare() : FALSE; } + if (command_name == "empty_trash") + { + const LLUUID &trash_id = gInventory.findCategoryUUIDForType(LLFolderType::FT_TRASH); + LLInventoryModel::EHasChildren children = gInventory.categoryHasChildren(trash_id); + return children != LLInventoryModel::CHILDREN_NO; + } + if (command_name == "empty_lostnfound") + { + const LLUUID &trash_id = gInventory.findCategoryUUIDForType(LLFolderType::FT_LOST_AND_FOUND); + LLInventoryModel::EHasChildren children = gInventory.categoryHasChildren(trash_id); + return children != LLInventoryModel::CHILDREN_NO; + } return TRUE; } @@ -1309,7 +1333,7 @@ void LLPanelMainInventory::setUploadCostIfNeeded() LLMenuItemBranchGL* upload_menu = menu->findChild<LLMenuItemBranchGL>("upload"); if(upload_menu) { - S32 upload_cost = LLGlobalEconomy::Singleton::getInstance()->getPriceUpload(); + S32 upload_cost = LLGlobalEconomy::getInstance()->getPriceUpload(); std::string cost_str; // getPriceUpload() returns -1 if no data available yet. diff --git a/indra/newview/llpanelmaininventory.h b/indra/newview/llpanelmaininventory.h index efa18b42c1..38936804ac 100644 --- a/indra/newview/llpanelmaininventory.h +++ b/indra/newview/llpanelmaininventory.h @@ -86,6 +86,8 @@ public: void setFocusFilterEditor(); + static void newWindow(); + protected: // // Misc functions @@ -110,7 +112,6 @@ protected: // menu callbacks void doToSelected(const LLSD& userdata); void closeAllFolders(); - void newWindow(); void doCreate(const LLSD& userdata); void resetFilters(); void setSortBy(const LLSD& userdata); diff --git a/indra/newview/llpaneloutfitedit.cpp b/indra/newview/llpaneloutfitedit.cpp index 8b9941c0ca..208ee77f2d 100644 --- a/indra/newview/llpaneloutfitedit.cpp +++ b/indra/newview/llpaneloutfitedit.cpp @@ -51,7 +51,6 @@ #include "llbutton.h" #include "llcombobox.h" #include "llfiltereditor.h" -#include "llfloaterinventory.h" #include "llinventorybridge.h" #include "llinventorymodel.h" #include "llinventorymodelbackgroundfetch.h" @@ -779,6 +778,10 @@ void LLPanelOutfitEdit::onVisibilityChanged(const LLSD &in_visible_chain) { update(); } + else + { + mWearableListManager->holdProgress(); //list population restarts with visibility + } } void LLPanelOutfitEdit::onAddWearableClicked(void) diff --git a/indra/newview/llpaneloutfitsinventory.cpp b/indra/newview/llpaneloutfitsinventory.cpp index 3f700496a9..007ab4dd63 100644 --- a/indra/newview/llpaneloutfitsinventory.cpp +++ b/indra/newview/llpaneloutfitsinventory.cpp @@ -42,6 +42,7 @@ #include "llpanelwearing.h" #include "llsaveoutfitcombobtn.h" #include "llsidepanelappearance.h" +#include "llviewercontrol.h" #include "llviewerfoldertype.h" static const std::string OUTFITS_TAB_NAME = "outfitslist_tab"; @@ -67,6 +68,10 @@ LLPanelOutfitsInventory::LLPanelOutfitsInventory() : LLPanelOutfitsInventory::~LLPanelOutfitsInventory() { + if (mAppearanceTabs) + { + gSavedSettings.setS32("LastAppearanceTab", mAppearanceTabs->getCurrentPanelIndex()); + } } // virtual @@ -102,6 +107,10 @@ void LLPanelOutfitsInventory::onOpen(const LLSD& key) panel_appearance->fetchInventory(); panel_appearance->refreshCurrentOutfitName(); } + + if (!mAppearanceTabs->selectTab(gSavedSettings.getS32("LastAppearanceTab"))) + mAppearanceTabs->selectFirstTab(); + mInitialized = true; } diff --git a/indra/newview/llpanelpermissions.cpp b/indra/newview/llpanelpermissions.cpp index 6e677bbce5..203c57b732 100644 --- a/indra/newview/llpanelpermissions.cpp +++ b/indra/newview/llpanelpermissions.cpp @@ -63,6 +63,7 @@ #include "roles_constants.h" #include "llgroupactions.h" #include "lltrans.h" +#include "llinventorymodel.h" U8 string_value_to_click_action(std::string p_value); @@ -1016,13 +1017,26 @@ void LLPanelPermissions::onCommitNextOwnerTransfer(LLUICtrl* ctrl, void* data) // static void LLPanelPermissions::onCommitName(LLUICtrl*, void* data) { - //LL_INFOS() << "LLPanelPermissions::onCommitName()" << LL_ENDL; LLPanelPermissions* self = (LLPanelPermissions*)data; LLLineEditor* tb = self->getChild<LLLineEditor>("Object Name"); - if(tb) + if (!tb) { - LLSelectMgr::getInstance()->selectionSetObjectName(tb->getText()); -// LLSelectMgr::getInstance()->selectionSetObjectName(self->mLabelObjectName->getText()); + return; + } + LLSelectMgr::getInstance()->selectionSetObjectName(tb->getText()); + LLObjectSelectionHandle selection = LLSelectMgr::getInstance()->getSelection(); + if (selection->isAttachment() && (selection->getNumNodes() == 1) && !tb->getText().empty()) + { + LLUUID object_id = selection->getFirstObject()->getAttachmentItemID(); + LLViewerInventoryItem* item = findItem(object_id); + if (item) + { + LLPointer<LLViewerInventoryItem> new_item = new LLViewerInventoryItem(item); + new_item->rename(tb->getText()); + new_item->updateServer(FALSE); + gInventory.updateItem(new_item); + gInventory.notifyObservers(); + } } } @@ -1030,12 +1044,26 @@ void LLPanelPermissions::onCommitName(LLUICtrl*, void* data) // static void LLPanelPermissions::onCommitDesc(LLUICtrl*, void* data) { - //LL_INFOS() << "LLPanelPermissions::onCommitDesc()" << LL_ENDL; LLPanelPermissions* self = (LLPanelPermissions*)data; LLLineEditor* le = self->getChild<LLLineEditor>("Object Description"); - if(le) + if (!le) { - LLSelectMgr::getInstance()->selectionSetObjectDescription(le->getText()); + return; + } + LLSelectMgr::getInstance()->selectionSetObjectDescription(le->getText()); + LLObjectSelectionHandle selection = LLSelectMgr::getInstance()->getSelection(); + if (selection->isAttachment() && (selection->getNumNodes() == 1)) + { + LLUUID object_id = selection->getFirstObject()->getAttachmentItemID(); + LLViewerInventoryItem* item = findItem(object_id); + if (item) + { + LLPointer<LLViewerInventoryItem> new_item = new LLViewerInventoryItem(item); + new_item->setDescription(le->getText()); + new_item->updateServer(FALSE); + gInventory.updateItem(new_item); + gInventory.notifyObservers(); + } } } @@ -1159,3 +1187,12 @@ void LLPanelPermissions::onCommitIncludeInSearch(LLUICtrl* ctrl, void*) LLSelectMgr::getInstance()->selectionSetIncludeInSearch(box->get()); } + +LLViewerInventoryItem* LLPanelPermissions::findItem(LLUUID &object_id) +{ + if (!object_id.isNull()) + { + return gInventory.getItem(object_id); + } + return NULL; +} diff --git a/indra/newview/llpanelpermissions.h b/indra/newview/llpanelpermissions.h index 87805bbf90..2d15954baa 100644 --- a/indra/newview/llpanelpermissions.h +++ b/indra/newview/llpanelpermissions.h @@ -37,6 +37,7 @@ //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ class LLNameBox; +class LLViewerInventoryItem; class LLPanelPermissions : public LLPanel { @@ -77,6 +78,8 @@ protected: static void onCommitClickAction(LLUICtrl* ctrl, void*); static void onCommitIncludeInSearch(LLUICtrl* ctrl, void*); + static LLViewerInventoryItem* findItem(LLUUID &object_id); + protected: void disableAll(); diff --git a/indra/newview/llpanelplaceprofile.cpp b/indra/newview/llpanelplaceprofile.cpp index 2fa4ee376a..610b3a6396 100644 --- a/indra/newview/llpanelplaceprofile.cpp +++ b/indra/newview/llpanelplaceprofile.cpp @@ -502,10 +502,6 @@ void LLPanelPlaceProfile::displaySelectedParcelInfo(LLParcel* parcel, if(!parcel->getGroupID().isNull()) { - // FIXME: Using parcel group as region group. - gCacheName->getGroup(parcel->getGroupID(), - boost::bind(&LLPanelPlaceInfo::onNameCache, mRegionGroupText, _2)); - std::string owner = LLSLURL("group", parcel->getGroupID(), "inspect").getSLURLString(); mParcelOwner->setText(owner); @@ -524,12 +520,20 @@ void LLPanelPlaceProfile::displaySelectedParcelInfo(LLParcel* parcel, LLSLURL("agent", parcel->getOwnerID(), "inspect").getSLURLString(); mParcelOwner->setText(parcel_owner); LLAvatarNameCache::get(region->getOwner(), boost::bind(&LLPanelPlaceInfo::onAvatarNameCache, _1, _2, mRegionOwnerText)); + mRegionGroupText->setText( getString("none_text")); } if(LLParcel::OS_LEASE_PENDING == parcel->getOwnershipStatus()) { mRegionOwnerText->setText(mRegionOwnerText->getText() + getString("sale_pending_text")); } + + if(!parcel->getGroupID().isNull()) + { + // FIXME: Using parcel group as region group. + gCacheName->getGroup(parcel->getGroupID(), + boost::bind(&LLPanelPlaceInfo::onNameCache, mRegionGroupText, _2)); + } } mEstateRatingText->setText(region->getSimAccessString()); diff --git a/indra/newview/llpanelplaces.cpp b/indra/newview/llpanelplaces.cpp index a9a0c30e26..ed942fc7fc 100644 --- a/indra/newview/llpanelplaces.cpp +++ b/indra/newview/llpanelplaces.cpp @@ -304,7 +304,11 @@ BOOL LLPanelPlaces::postBuild() enable_registrar.add("Places.OverflowMenu.Enable", boost::bind(&LLPanelPlaces::onOverflowMenuItemEnable, this, _2)); mPlaceMenu = LLUICtrlFactory::getInstance()->createFromFile<LLToggleableMenu>("menu_place.xml", gMenuHolder, LLViewerMenuHolderGL::child_registry_t::instance()); - if (!mPlaceMenu) + if (mPlaceMenu) + { + mPlaceMenu->setAlwaysShowMenu(TRUE); + } + else { LL_WARNS() << "Error loading Place menu" << LL_ENDL; } @@ -711,6 +715,34 @@ void LLPanelPlaces::onEditButtonClicked() updateVerbs(); } +class LLUpdateLandmarkParent : public LLInventoryCallback +{ +public: + LLUpdateLandmarkParent(LLPointer<LLViewerInventoryItem> item, LLUUID new_parent) : + mItem(item), + mNewParentId(new_parent) + {}; + /* virtual */ void fire(const LLUUID& inv_item_id) + { + LLInventoryModel::update_list_t update; + LLInventoryModel::LLCategoryUpdate old_folder(mItem->getParentUUID(), -1); + update.push_back(old_folder); + LLInventoryModel::LLCategoryUpdate new_folder(mNewParentId, 1); + update.push_back(new_folder); + gInventory.accountForUpdate(update); + + mItem->setParent(mNewParentId); + mItem->updateParentOnServer(FALSE); + + gInventory.updateItem(mItem); + gInventory.notifyObservers(); + } + +private: + LLPointer<LLViewerInventoryItem> mItem; + LLUUID mNewParentId; +}; + void LLPanelPlaces::onSaveButtonClicked() { if (!mLandmarkInfo || mItem.isNull()) @@ -726,6 +758,7 @@ void LLPanelPlaces::onSaveButtonClicked() LLUUID item_id = mItem->getUUID(); LLUUID folder_id = mLandmarkInfo->getLandmarkFolder(); + bool change_parent = folder_id != mItem->getParentUUID(); LLPointer<LLViewerInventoryItem> new_item = new LLViewerInventoryItem(mItem); @@ -734,10 +767,16 @@ void LLPanelPlaces::onSaveButtonClicked() { new_item->rename(current_title_value); new_item->setDescription(current_notes_value); - new_item->updateServer(FALSE); + LLPointer<LLInventoryCallback> cb; + if (change_parent) + { + cb = new LLUpdateLandmarkParent(new_item, folder_id); + } + LLInventoryModel::LLCategoryUpdate up(mItem->getParentUUID(), 0); + gInventory.accountForUpdate(up); + update_inventory_item(new_item, cb); } - - if(folder_id != mItem->getParentUUID()) + else if (change_parent) { LLInventoryModel::update_list_t update; LLInventoryModel::LLCategoryUpdate old_folder(mItem->getParentUUID(),-1); @@ -971,7 +1010,7 @@ void LLPanelPlaces::togglePlaceInfoPanel(BOOL visible) mPlaceInfoType == LANDMARK_TAB_INFO_TYPE) { mLandmarkInfo->setVisible(visible); - + mPlaceProfile->setVisible(FALSE); if (visible) { mLandmarkInfo->resetLocation(); @@ -979,8 +1018,6 @@ void LLPanelPlaces::togglePlaceInfoPanel(BOOL visible) LLRect rect = getRect(); LLRect new_rect = LLRect(rect.mLeft, rect.mTop, rect.mRight, mTabContainer->getRect().mBottom); mLandmarkInfo->reshape(new_rect.getWidth(), new_rect.getHeight()); - - mPlaceProfile->setVisible(FALSE); } else { diff --git a/indra/newview/llpanelprimmediacontrols.cpp b/indra/newview/llpanelprimmediacontrols.cpp index 0bcd8a9e63..5f413fc3c0 100644 --- a/indra/newview/llpanelprimmediacontrols.cpp +++ b/indra/newview/llpanelprimmediacontrols.cpp @@ -566,11 +566,16 @@ void LLPanelPrimMediaControls::updateShape() } } - // MAINT-1392 If this is a HUD always set it visible, but hide each control if user has no perms. - // When setting it invisible it won't receive any mouse messages anymore + // Web plugins and HUD may have media controls invisible for user, but still need scroll mouse events. + // LLView checks for visibleEnabledAndContains() and won't pass events to invisible panel, so instead + // of hiding whole panel hide each control instead (if user has no perms). + // Note: It might be beneficial to keep panel visible for all plugins to make behavior consistent, but + // for now limiting change to cases that need events. - if( !is_hud ) + if (!is_hud && (!media_plugin || media_plugin->pluginSupportsMediaTime())) + { setVisible(enabled); + } else { if( !hasPermsControl ) diff --git a/indra/newview/llpanelsnapshotinventory.cpp b/indra/newview/llpanelsnapshotinventory.cpp index b2952834fb..21ac7604ff 100644 --- a/indra/newview/llpanelsnapshotinventory.cpp +++ b/indra/newview/llpanelsnapshotinventory.cpp @@ -135,7 +135,7 @@ BOOL LLPanelSnapshotInventory::postBuild() // virtual void LLPanelSnapshotInventory::onOpen(const LLSD& key) { - getChild<LLUICtrl>("hint_lbl")->setTextArg("[UPLOAD_COST]", llformat("%d", LLGlobalEconomy::Singleton::getInstance()->getPriceUpload())); + getChild<LLUICtrl>("hint_lbl")->setTextArg("[UPLOAD_COST]", llformat("%d", LLGlobalEconomy::getInstance()->getPriceUpload())); LLPanelSnapshot::onOpen(key); } @@ -155,7 +155,7 @@ void LLPanelSnapshotInventory::onResolutionCommit(LLUICtrl* ctrl) void LLPanelSnapshotInventoryBase::onSend() { - S32 expected_upload_cost = LLGlobalEconomy::Singleton::getInstance()->getPriceUpload(); + S32 expected_upload_cost = LLGlobalEconomy::getInstance()->getPriceUpload(); if (can_afford_transaction(expected_upload_cost)) { if (mSnapshotFloater) @@ -191,7 +191,7 @@ BOOL LLPanelOutfitSnapshotInventory::postBuild() // virtual void LLPanelOutfitSnapshotInventory::onOpen(const LLSD& key) { - getChild<LLUICtrl>("hint_lbl")->setTextArg("[UPLOAD_COST]", llformat("%d", LLGlobalEconomy::Singleton::getInstance()->getPriceUpload())); + getChild<LLUICtrl>("hint_lbl")->setTextArg("[UPLOAD_COST]", llformat("%d", LLGlobalEconomy::getInstance()->getPriceUpload())); LLPanelSnapshot::onOpen(key); } diff --git a/indra/newview/llpanelsnapshotoptions.cpp b/indra/newview/llpanelsnapshotoptions.cpp index 269f16c5e4..95c14e4226 100644 --- a/indra/newview/llpanelsnapshotoptions.cpp +++ b/indra/newview/llpanelsnapshotoptions.cpp @@ -77,12 +77,12 @@ LLPanelSnapshotOptions::LLPanelSnapshotOptions() mCommitCallbackRegistrar.add("Snapshot.SendToFacebook", boost::bind(&LLPanelSnapshotOptions::onSendToFacebook, this)); mCommitCallbackRegistrar.add("Snapshot.SendToTwitter", boost::bind(&LLPanelSnapshotOptions::onSendToTwitter, this)); mCommitCallbackRegistrar.add("Snapshot.SendToFlickr", boost::bind(&LLPanelSnapshotOptions::onSendToFlickr, this)); - LLGlobalEconomy::Singleton::getInstance()->addObserver(this); + LLGlobalEconomy::getInstance()->addObserver(this); } LLPanelSnapshotOptions::~LLPanelSnapshotOptions() { - LLGlobalEconomy::Singleton::getInstance()->removeObserver(this); + LLGlobalEconomy::getInstance()->removeObserver(this); } // virtual @@ -100,7 +100,7 @@ void LLPanelSnapshotOptions::onOpen(const LLSD& key) void LLPanelSnapshotOptions::updateUploadCost() { - S32 upload_cost = LLGlobalEconomy::Singleton::getInstance()->getPriceUpload(); + S32 upload_cost = LLGlobalEconomy::getInstance()->getPriceUpload(); getChild<LLUICtrl>("save_to_inventory_btn")->setLabelArg("[AMOUNT]", llformat("%d", upload_cost)); } diff --git a/indra/newview/llpanelteleporthistory.cpp b/indra/newview/llpanelteleporthistory.cpp index 3de9dc2f80..fe0608d544 100644 --- a/indra/newview/llpanelteleporthistory.cpp +++ b/indra/newview/llpanelteleporthistory.cpp @@ -104,7 +104,9 @@ private: //////////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////////// -class LLTeleportHistoryFlatItemStorage: public LLSingleton<LLTeleportHistoryFlatItemStorage> { +class LLTeleportHistoryFlatItemStorage: public LLSingleton<LLTeleportHistoryFlatItemStorage> +{ + LLSINGLETON_EMPTY_CTOR(LLTeleportHistoryFlatItemStorage); protected: typedef std::vector< LLHandle<LLTeleportHistoryFlatItem> > flat_item_list_t; diff --git a/indra/newview/llpaneltopinfobar.h b/indra/newview/llpaneltopinfobar.h index f37bd9c048..78dd997029 100644 --- a/indra/newview/llpaneltopinfobar.h +++ b/indra/newview/llpaneltopinfobar.h @@ -28,6 +28,7 @@ #define LLPANELTOPINFOBAR_H_ #include "llpanel.h" +#include "llinitdestroyclass.h" class LLButton; class LLTextBox; @@ -36,6 +37,8 @@ class LLParcelChangeObserver; class LLPanelTopInfoBar : public LLPanel, public LLSingleton<LLPanelTopInfoBar>, private LLDestroyClass<LLPanelTopInfoBar> { + LLSINGLETON(LLPanelTopInfoBar); + ~LLPanelTopInfoBar(); LOG_CLASS(LLPanelTopInfoBar); friend class LLDestroyClass<LLPanelTopInfoBar>; @@ -43,9 +46,6 @@ class LLPanelTopInfoBar : public LLPanel, public LLSingleton<LLPanelTopInfoBar>, public: typedef boost::signals2::signal<void ()> resize_signal_t; - LLPanelTopInfoBar(); - ~LLPanelTopInfoBar(); - /*virtual*/ BOOL postBuild(); /*virtual*/ void draw(); diff --git a/indra/newview/llpanelwearing.cpp b/indra/newview/llpanelwearing.cpp index 796372ba04..a150007177 100644 --- a/indra/newview/llpanelwearing.cpp +++ b/indra/newview/llpanelwearing.cpp @@ -232,6 +232,7 @@ BOOL LLPanelWearing::postBuild() { mAccordionCtrl = getChild<LLAccordionCtrl>("wearables_accordion"); mWearablesTab = getChild<LLAccordionCtrlTab>("tab_wearables"); + mWearablesTab->setIgnoreResizeNotification(true); mAttachmentsTab = getChild<LLAccordionCtrlTab>("tab_temp_attachments"); mAttachmentsTab->setDropDownStateChangedCallback(boost::bind(&LLPanelWearing::onAccordionTabStateChanged, this)); diff --git a/indra/newview/llpathfindingmanager.cpp b/indra/newview/llpathfindingmanager.cpp index 711a869e82..cb4c07a417 100644 --- a/indra/newview/llpathfindingmanager.cpp +++ b/indra/newview/llpathfindingmanager.cpp @@ -144,8 +144,7 @@ typedef boost::shared_ptr<LinksetsResponder> LinksetsResponderPtr; // LLPathfindingManager //--------------------------------------------------------------------------- -LLPathfindingManager::LLPathfindingManager() - : LLSingleton<LLPathfindingManager>(), +LLPathfindingManager::LLPathfindingManager(): mNavMeshMap(), mAgentStateSignal() { diff --git a/indra/newview/llpathfindingmanager.h b/indra/newview/llpathfindingmanager.h index e8fad590ba..a44cd892da 100644 --- a/indra/newview/llpathfindingmanager.h +++ b/indra/newview/llpathfindingmanager.h @@ -48,6 +48,9 @@ class LinksetsResponder; class LLPathfindingManager : public LLSingleton<LLPathfindingManager> { + LLSINGLETON(LLPathfindingManager); + virtual ~LLPathfindingManager(); + friend class LLNavMeshSimStateChangeNode; friend class NavMeshStatusResponder; friend class LLAgentStateChangeNode; @@ -60,9 +63,6 @@ public: kRequestError } ERequestStatus; - LLPathfindingManager(); - virtual ~LLPathfindingManager(); - void initSystem(); void quitSystem(); diff --git a/indra/newview/llpathfindingpathtool.cpp b/indra/newview/llpathfindingpathtool.cpp index 006755e20b..3187325101 100644 --- a/indra/newview/llpathfindingpathtool.cpp +++ b/indra/newview/llpathfindingpathtool.cpp @@ -46,7 +46,6 @@ LLPathfindingPathTool::LLPathfindingPathTool() : LLTool(PATH_TOOL_NAME), - LLSingleton<LLPathfindingPathTool>(), mFinalPathData(), mTempPathData(), mPathResult(LLPathingLib::LLPL_NO_PATH), diff --git a/indra/newview/llpathfindingpathtool.h b/indra/newview/llpathfindingpathtool.h index 97284265f1..88cb3a15f8 100644 --- a/indra/newview/llpathfindingpathtool.h +++ b/indra/newview/llpathfindingpathtool.h @@ -36,6 +36,9 @@ class LLPathfindingPathTool : public LLTool, public LLSingleton<LLPathfindingPathTool> { + LLSINGLETON(LLPathfindingPathTool); + virtual ~LLPathfindingPathTool(); + public: typedef enum { @@ -59,9 +62,6 @@ public: kCharacterTypeD } ECharacterType; - LLPathfindingPathTool(); - virtual ~LLPathfindingPathTool(); - typedef boost::function<void (void)> path_event_callback_t; typedef boost::signals2::signal<void (void)> path_event_signal_t; typedef boost::signals2::connection path_event_slot_t; diff --git a/indra/newview/llpersistentnotificationstorage.cpp b/indra/newview/llpersistentnotificationstorage.cpp index 9c0222d0bc..264382ae82 100644 --- a/indra/newview/llpersistentnotificationstorage.cpp +++ b/indra/newview/llpersistentnotificationstorage.cpp @@ -36,9 +36,8 @@ #include "llscriptfloater.h" #include "llviewermessage.h" #include "llviewernetwork.h" -LLPersistentNotificationStorage::LLPersistentNotificationStorage() - : LLSingleton<LLPersistentNotificationStorage>() - , LLNotificationStorage("") +LLPersistentNotificationStorage::LLPersistentNotificationStorage(): + LLNotificationStorage("") , mLoaded(false) { } diff --git a/indra/newview/llpersistentnotificationstorage.h b/indra/newview/llpersistentnotificationstorage.h index bf0306380e..40c9923c74 100644 --- a/indra/newview/llpersistentnotificationstorage.h +++ b/indra/newview/llpersistentnotificationstorage.h @@ -45,10 +45,10 @@ class LLSD; class LLPersistentNotificationStorage : public LLSingleton<LLPersistentNotificationStorage>, public LLNotificationStorage { + LLSINGLETON(LLPersistentNotificationStorage); + ~LLPersistentNotificationStorage(); LOG_CLASS(LLPersistentNotificationStorage); public: - LLPersistentNotificationStorage(); - ~LLPersistentNotificationStorage(); void saveNotifications(); void loadNotifications(); diff --git a/indra/newview/llplacesinventorybridge.cpp b/indra/newview/llplacesinventorybridge.cpp index a498d27d2b..55cb7d616b 100644 --- a/indra/newview/llplacesinventorybridge.cpp +++ b/indra/newview/llplacesinventorybridge.cpp @@ -30,7 +30,6 @@ #include "llplacesinventorybridge.h" -#include "llfloaterinventory.h" // for LLInventoryPanel #include "llfolderview.h" // for FIRST_SELECTED_ITEM #include "llinventorypanel.h" diff --git a/indra/newview/llplacesinventorypanel.h b/indra/newview/llplacesinventorypanel.h index 2805fc4257..27d9b83bd1 100644 --- a/indra/newview/llplacesinventorypanel.h +++ b/indra/newview/llplacesinventorypanel.h @@ -27,7 +27,6 @@ #ifndef LL_LLINVENTORYSUBTREEPANEL_H #define LL_LLINVENTORYSUBTREEPANEL_H -#include "llfloaterinventory.h" #include "llinventorypanel.h" class LLLandmarksPanel; diff --git a/indra/newview/llpresetsmanager.cpp b/indra/newview/llpresetsmanager.cpp index 836f63bffa..f40b3e0295 100644 --- a/indra/newview/llpresetsmanager.cpp +++ b/indra/newview/llpresetsmanager.cpp @@ -55,6 +55,10 @@ void LLPresetsManager::triggerChangeSignal() void LLPresetsManager::createMissingDefault() { + if(gDirUtilp->getLindenUserDir().empty()) + { + return; + } std::string default_file = gDirUtilp->getExpandedFilename(LL_PATH_PER_SL_ACCOUNT, PRESETS_DIR, PRESETS_GRAPHIC, PRESETS_DEFAULT + ".xml"); if (!gDirUtilp->fileExists(default_file)) { diff --git a/indra/newview/llpresetsmanager.h b/indra/newview/llpresetsmanager.h index 21f9885f27..0014e32267 100644 --- a/indra/newview/llpresetsmanager.h +++ b/indra/newview/llpresetsmanager.h @@ -46,6 +46,9 @@ enum EDefaultOptions class LLPresetsManager : public LLSingleton<LLPresetsManager> { + LLSINGLETON(LLPresetsManager); + ~LLPresetsManager(); + public: typedef std::list<std::string> preset_name_list_t; @@ -67,9 +70,6 @@ public: preset_name_list_t mPresetNames; - LLPresetsManager(); - ~LLPresetsManager(); - preset_list_signal_t mPresetListChangeSignal; private: diff --git a/indra/newview/llproductinforequest.h b/indra/newview/llproductinforequest.h index 75dbf220d1..d1036374e8 100644 --- a/indra/newview/llproductinforequest.h +++ b/indra/newview/llproductinforequest.h @@ -41,12 +41,11 @@ */ class LLProductInfoRequestManager : public LLSingleton<LLProductInfoRequestManager> { + LLSINGLETON(LLProductInfoRequestManager); public: - LLProductInfoRequestManager(); std::string getDescriptionForSku(const std::string& sku); private: - friend class LLSingleton<LLProductInfoRequestManager>; /* virtual */ void initSingleton(); void getLandDescriptionsCoro(std::string url); diff --git a/indra/newview/llrecentpeople.h b/indra/newview/llrecentpeople.h index d0d6376867..c7aaf604f5 100644 --- a/indra/newview/llrecentpeople.h +++ b/indra/newview/llrecentpeople.h @@ -50,6 +50,7 @@ class LLDate; */ class LLRecentPeople: public LLSingleton<LLRecentPeople>, public LLOldEvents::LLSimpleListener { + LLSINGLETON_EMPTY_CTOR(LLRecentPeople); LOG_CLASS(LLRecentPeople); public: typedef boost::signals2::signal<void ()> signal_t; diff --git a/indra/newview/llregioninfomodel.h b/indra/newview/llregioninfomodel.h index d22a0de463..ea9640efda 100644 --- a/indra/newview/llregioninfomodel.h +++ b/indra/newview/llregioninfomodel.h @@ -36,6 +36,7 @@ class LLMessageSystem; */ class LLRegionInfoModel : public LLSingleton<LLRegionInfoModel> { + LLSINGLETON(LLRegionInfoModel); LOG_CLASS(LLRegionInfoModel); public: @@ -73,10 +74,8 @@ public: std::string mSimType; protected: - friend class LLSingleton<LLRegionInfoModel>; friend class LLViewerRegion; - LLRegionInfoModel(); /** * Refresh model with data from the incoming server message. diff --git a/indra/newview/llremoteparcelrequest.h b/indra/newview/llremoteparcelrequest.h index cb5af50c5f..5b0d189137 100644 --- a/indra/newview/llremoteparcelrequest.h +++ b/indra/newview/llremoteparcelrequest.h @@ -74,9 +74,10 @@ protected: class LLRemoteParcelInfoProcessor : public LLSingleton<LLRemoteParcelInfoProcessor> { -public: + LLSINGLETON_EMPTY_CTOR(LLRemoteParcelInfoProcessor); virtual ~LLRemoteParcelInfoProcessor() {} +public: void addObserver(const LLUUID& parcel_id, LLRemoteParcelInfoObserver* observer); void removeObserver(const LLUUID& parcel_id, LLRemoteParcelInfoObserver* observer); diff --git a/indra/newview/llrootview.h b/indra/newview/llrootview.h index 5223a314f3..2ac958e7b8 100644 --- a/indra/newview/llrootview.h +++ b/indra/newview/llrootview.h @@ -32,7 +32,9 @@ #include "lltooltip.h" class LLRootViewRegistry : public LLChildRegistry<LLRootViewRegistry> -{}; +{ + LLSINGLETON(LLRootViewRegistry); +}; class LLRootView : public LLView { diff --git a/indra/newview/llscenemonitor.h b/indra/newview/llscenemonitor.h index 2b6ea57b96..7cd531bd34 100644 --- a/indra/newview/llscenemonitor.h +++ b/indra/newview/llscenemonitor.h @@ -39,10 +39,10 @@ class LLViewerTexture; class LLSceneMonitor : public LLSingleton<LLSceneMonitor> { + LLSINGLETON(LLSceneMonitor); + ~LLSceneMonitor(); LOG_CLASS(LLSceneMonitor); public: - LLSceneMonitor(); - ~LLSceneMonitor(); void freezeAvatar(LLCharacter* avatarp); void setDebugViewerVisible(bool visible); diff --git a/indra/newview/llscreenchannel.cpp b/indra/newview/llscreenchannel.cpp index ba2c37ce7c..681787bcbe 100644 --- a/indra/newview/llscreenchannel.cpp +++ b/indra/newview/llscreenchannel.cpp @@ -117,6 +117,14 @@ BOOL LLScreenChannelBase::postBuild() void LLScreenChannelBase::reshape(S32 width, S32 height, BOOL called_from_parent) { + if (mChannelAlignment == CA_CENTRE) + { + // Keep notifications and alerts centered + // WorldViewRectScaled is out of date at reshape but Window has same width + S32 channel_bound = gViewerWindow->getWindowRectScaled().getWidth() / 2; + setRect(LLRect(channel_bound, 0, channel_bound, 0)); + updateRect(); //sets top and bottom only + } redrawToasts(); } diff --git a/indra/newview/llscriptfloater.h b/indra/newview/llscriptfloater.h index 70451194b3..c0b84abdcb 100644 --- a/indra/newview/llscriptfloater.h +++ b/indra/newview/llscriptfloater.h @@ -41,6 +41,7 @@ class LLScriptFloaterManager : public LLSingleton<LLScriptFloaterManager> // *TODO // LLScriptFloaterManager and LLScriptFloater will need some refactoring after we // know how script notifications should look like. + LLSINGLETON_EMPTY_CTOR(LLScriptFloaterManager); public: typedef enum e_object_type diff --git a/indra/newview/llsearchhistory.h b/indra/newview/llsearchhistory.h index 3309a8fcac..5aab5e6765 100644 --- a/indra/newview/llsearchhistory.h +++ b/indra/newview/llsearchhistory.h @@ -28,6 +28,7 @@ #define LL_LLSEARCHHISTORY_H #include "llsingleton.h" +#include "llinitdestroyclass.h" #include "llui.h" /** @@ -36,6 +37,7 @@ */ class LLSearchHistory : public LLSingleton<LLSearchHistory>, private LLDestroyClass<LLSearchHistory> { + LLSINGLETON(LLSearchHistory); friend class LLDestroyClass<LLSearchHistory>; public: @@ -71,7 +73,6 @@ public: */ void addEntry(const std::string& search_text); - LLSearchHistory(); /** * Class for storing data about single search request. diff --git a/indra/newview/llselectmgr.cpp b/indra/newview/llselectmgr.cpp index 323689b788..e4641d8721 100644 --- a/indra/newview/llselectmgr.cpp +++ b/indra/newview/llselectmgr.cpp @@ -6006,6 +6006,11 @@ S32 LLSelectNode::getLastSelectedTE() return mLastTESelected; } +S32 LLSelectNode::getLastOperatedTE() +{ + return mLastTESelected; +} + LLViewerObject* LLSelectNode::getObject() { if (!mObject) @@ -6244,6 +6249,9 @@ void pushWireframe(LLDrawable* drawable) void LLSelectNode::renderOneWireframe(const LLColor4& color) { + //Need to because crash on ATI 3800 (and similar cards) MAINT-5018 + LLGLDisable multisample(LLPipeline::RenderFSAASamples > 0 ? GL_MULTISAMPLE_ARB : 0); + LLViewerObject* objectp = getObject(); if (!objectp) { @@ -7093,7 +7101,7 @@ F32 LLObjectSelection::getSelectedLinksetCost() LLSelectNode* node = *iter; LLViewerObject* object = node->getObject(); - if (object) + if (object && !object->isAttachment()) { LLViewerObject* root = static_cast<LLViewerObject*>(object->getRoot()); if (root) @@ -7197,7 +7205,9 @@ U32 LLObjectSelection::getSelectedObjectTriangleCount(S32* vcount) if (object) { - count += object->getTriangleCount(vcount); + S32 vt = 0; + count += object->getTriangleCount(&vt); + *vcount += vt; } } diff --git a/indra/newview/llselectmgr.h b/indra/newview/llselectmgr.h index bc50e443f8..2a893af266 100644 --- a/indra/newview/llselectmgr.h +++ b/indra/newview/llselectmgr.h @@ -170,6 +170,7 @@ public: void selectTE(S32 te_index, BOOL selected); BOOL isTESelected(S32 te_index); S32 getLastSelectedTE(); + S32 getLastOperatedTE(); S32 getTESelectMask() { return mTESelectMask; } void renderOneWireframe(const LLColor4& color); void renderOneSilhouette(const LLColor4 &color); @@ -388,6 +389,9 @@ struct LLSelectGetFirstTest; class LLSelectMgr : public LLEditMenuHandler, public LLSingleton<LLSelectMgr> { + LLSINGLETON(LLSelectMgr); + ~LLSelectMgr(); + public: static BOOL sRectSelectInclusive; // do we need to surround an object to pick it? static BOOL sRenderHiddenSelections; // do we show selection silhouettes that are occluded? @@ -413,9 +417,6 @@ public: LLCachedControl<bool> mDebugSelectMgr; public: - LLSelectMgr(); - ~LLSelectMgr(); - static void cleanupGlobals(); // LLEditMenuHandler interface diff --git a/indra/newview/llsidepanelappearance.cpp b/indra/newview/llsidepanelappearance.cpp index f07f0ed86c..3e95811bb8 100644 --- a/indra/newview/llsidepanelappearance.cpp +++ b/indra/newview/llsidepanelappearance.cpp @@ -383,12 +383,22 @@ void LLSidepanelAppearance::toggleOutfitEditPanel(BOOL visible, BOOL disable_cam void LLSidepanelAppearance::toggleWearableEditPanel(BOOL visible, LLViewerWearable *wearable, BOOL disable_camera_switch) { - if (!mEditWearable || ((mEditWearable->getWearable() == wearable) && mEditWearable->getVisible() == visible)) + if (!mEditWearable) { - // visibility isn't changing, hence nothing to do return; } + if (mEditWearable->getVisible() == visible && (!visible || mEditWearable->getWearable() != wearable)) + { + // visibility isn't changing and panel doesn't need an update, hence nothing to do + return; + } + + // If we're just switching between outfit and wearable editing or updating item, + // don't end customization and don't switch camera + // Don't end customization and don't switch camera without visibility change + BOOL change_state = !disable_camera_switch && mEditWearable->getVisible() != visible; + if (!wearable) { wearable = gAgentWearables.getViewerWearable(LLWearableType::WT_SHAPE, 0); @@ -403,18 +413,19 @@ void LLSidepanelAppearance::toggleWearableEditPanel(BOOL visible, LLViewerWearab if (visible) { - LLVOAvatarSelf::onCustomizeStart(disable_camera_switch); - mEditWearable->setWearable(wearable, disable_camera_switch); + LLVOAvatarSelf::onCustomizeStart(!change_state); + mEditWearable->setWearable(wearable, !change_state); mEditWearable->onOpen(LLSD()); // currently no-op, just for consistency } else { // Save changes if closing. mEditWearable->saveChanges(); + mEditWearable->setWearable(NULL); LLAppearanceMgr::getInstance()->updateIsDirty(); - if (!disable_camera_switch) // if we're just switching between outfit and wearable editing, don't end customization. + if (change_state) { - LLVOAvatarSelf::onCustomizeEnd(disable_camera_switch); + LLVOAvatarSelf::onCustomizeEnd(!change_state); } } } diff --git a/indra/newview/llsidepanelinventory.cpp b/indra/newview/llsidepanelinventory.cpp index 6bcae1e858..c6a0198afd 100644 --- a/indra/newview/llsidepanelinventory.cpp +++ b/indra/newview/llsidepanelinventory.cpp @@ -34,6 +34,7 @@ #include "llbutton.h" #include "lldate.h" #include "llfirstuse.h" +#include "llfloaterreg.h" #include "llfloatersidepanelcontainer.h" #include "llfoldertype.h" #include "llfolderview.h" @@ -731,3 +732,16 @@ std::set<LLFolderViewItem*> LLSidepanelInventory::getInboxSelectionList() return inventory_selected_uuids; } + +void LLSidepanelInventory::cleanup() +{ + LLFloaterReg::const_instance_list_t& inst_list = LLFloaterReg::getFloaterList("inventory"); + for (LLFloaterReg::const_instance_list_t::const_iterator iter = inst_list.begin(); iter != inst_list.end();) + { + LLFloaterSidePanelContainer* iv = dynamic_cast<LLFloaterSidePanelContainer*>(*iter++); + if (iv) + { + iv->cleanup(); + } + } +} diff --git a/indra/newview/llsidepanelinventory.h b/indra/newview/llsidepanelinventory.h index 17a3098db9..5060f7025f 100644 --- a/indra/newview/llsidepanelinventory.h +++ b/indra/newview/llsidepanelinventory.h @@ -82,6 +82,8 @@ public: void updateVerbs(); + static void cleanup(); + protected: // Tracks highlighted (selected) item in inventory panel. LLInventoryItem *getSelectedItem(); diff --git a/indra/newview/llsnapshotlivepreview.cpp b/indra/newview/llsnapshotlivepreview.cpp index 049aae1336..58e48480c1 100644 --- a/indra/newview/llsnapshotlivepreview.cpp +++ b/indra/newview/llsnapshotlivepreview.cpp @@ -465,7 +465,11 @@ void LLSnapshotLivePreview::reshape(S32 width, S32 height, BOOL called_from_pare LL_DEBUGS() << "window reshaped, updating thumbnail" << LL_ENDL; if (mViewContainer && mViewContainer->isInVisibleChain()) { - updateSnapshot(TRUE); + // We usually resize only on window reshape, so give it a chance to redraw, assign delay + updateSnapshot( + TRUE, // new snapshot is needed + FALSE, // thumbnail will be updated either way. + AUTO_SNAPSHOT_TIME_DELAY); // shutter delay. } } } @@ -1032,7 +1036,7 @@ void LLSnapshotLivePreview::saveTexture(BOOL outfit_snapshot, std::string name) LLAgentUI::buildLocationString(pos_string, LLAgentUI::LOCATION_FORMAT_FULL); std::string who_took_it; LLAgentUI::buildFullname(who_took_it); - S32 expected_upload_cost = LLGlobalEconomy::Singleton::getInstance()->getPriceUpload(); + S32 expected_upload_cost = LLGlobalEconomy::getInstance()->getPriceUpload(); std::string res_name = outfit_snapshot ? name : "Snapshot : " + pos_string; std::string res_desc = outfit_snapshot ? "" : "Taken by " + who_took_it + " at " + pos_string; LLFolderType::EType folder_type = outfit_snapshot ? LLFolderType::FT_NONE : LLFolderType::FT_SNAPSHOT_CATEGORY; diff --git a/indra/newview/llspeakers.h b/indra/newview/llspeakers.h index 5cff70f377..617bae3984 100644 --- a/indra/newview/llspeakers.h +++ b/indra/newview/llspeakers.h @@ -341,20 +341,18 @@ protected: class LLActiveSpeakerMgr : public LLSpeakerMgr, public LLSingleton<LLActiveSpeakerMgr> { + LLSINGLETON(LLActiveSpeakerMgr); LOG_CLASS(LLActiveSpeakerMgr); -public: - LLActiveSpeakerMgr(); protected: virtual void updateSpeakerList(); }; class LLLocalSpeakerMgr : public LLSpeakerMgr, public LLSingleton<LLLocalSpeakerMgr> { - LOG_CLASS(LLLocalSpeakerMgr); -public: - LLLocalSpeakerMgr(); + LLSINGLETON(LLLocalSpeakerMgr); ~LLLocalSpeakerMgr (); + LOG_CLASS(LLLocalSpeakerMgr); protected: virtual void updateSpeakerList(); }; diff --git a/indra/newview/llspeakingindicatormanager.cpp b/indra/newview/llspeakingindicatormanager.cpp index 78fe7863c8..5ca1d4b4a5 100644 --- a/indra/newview/llspeakingindicatormanager.cpp +++ b/indra/newview/llspeakingindicatormanager.cpp @@ -48,6 +48,8 @@ */ class SpeakingIndicatorManager : public LLSingleton<SpeakingIndicatorManager>, LLVoiceClientParticipantObserver { + LLSINGLETON(SpeakingIndicatorManager); + ~SpeakingIndicatorManager(); LOG_CLASS(SpeakingIndicatorManager); public: @@ -91,10 +93,6 @@ private: typedef speaking_indicators_mmap_t::const_iterator indicator_const_iterator; typedef std::pair<indicator_const_iterator, indicator_const_iterator> indicator_range_t; - friend class LLSingleton<SpeakingIndicatorManager>; - SpeakingIndicatorManager(); - ~SpeakingIndicatorManager(); - /** * Callback to determine when voice channel is changed. * diff --git a/indra/newview/llstartup.cpp b/indra/newview/llstartup.cpp index dab25f144b..57a06da287 100644 --- a/indra/newview/llstartup.cpp +++ b/indra/newview/llstartup.cpp @@ -194,6 +194,7 @@ #include "llstartuplistener.h" #include "lltoolbarview.h" #include "llexperiencelog.h" +#include "llcleanup.h" #include "llstacktrace.h" @@ -255,6 +256,7 @@ boost::scoped_ptr<LLViewerStats::PhaseMap> LLStartUp::sPhases(new LLViewerStats: void login_show(); void login_callback(S32 option, void* userdata); +void show_release_notes_if_required(); void show_first_run_dialog(); bool first_run_dialog_callback(const LLSD& notification, const LLSD& response); void set_startup_status(const F32 frac, const std::string& string, const std::string& msg); @@ -681,10 +683,17 @@ bool idle_startup() } else if (gSavedSettings.getBOOL("AutoLogin")) { + // Log into last account gRememberPassword = TRUE; gSavedSettings.setBOOL("RememberPassword", TRUE); show_connect_box = false; } + else if (gSavedSettings.getLLSD("UserLoginInfo").size() == 3) + { + // Console provided login&password + gRememberPassword = gSavedSettings.getBOOL("RememberPassword"); + show_connect_box = false; + } else { gRememberPassword = gSavedSettings.getBOOL("RememberPassword"); @@ -708,6 +717,7 @@ bool idle_startup() set_startup_status(0.03f, msg.c_str(), gAgent.mMOTD.c_str()); display_startup(); // LLViewerMedia::initBrowser(); + show_release_notes_if_required(); LLStartUp::setStartupState( STATE_LOGIN_SHOW ); return FALSE; } @@ -2246,6 +2256,22 @@ void login_callback(S32 option, void *userdata) } } +/** +* Check if user is running a new version of the viewer. +* Display the Release Notes if it's not overriden by the "UpdaterShowReleaseNotes" setting. +*/ +void show_release_notes_if_required() +{ + if (LLVersionInfo::getChannelAndVersion() != gLastRunVersion + && LLVersionInfo::getChannel().find("Test") == std::string::npos // don't show Release Notes for the test builds + && gSavedSettings.getBOOL("UpdaterShowReleaseNotes") + && !gSavedSettings.getBOOL("FirstLoginThisInstall")) + { + LLSD info(LLAppViewer::instance()->getViewerInfo()); + LLWeb::loadURLInternal(info["VIEWER_RELEASE_NOTES_URL"]); + } +} + void show_first_run_dialog() { LLNotificationsUtil::add("FirstRun", LLSD(), LLSD(), first_run_dialog_callback); @@ -2811,7 +2837,7 @@ void LLStartUp::initExperiences() void LLStartUp::cleanupNameCache() { - LLAvatarNameCache::cleanupClass(); + SUBSYSTEM_CLEANUP(LLAvatarNameCache); delete gCacheName; gCacheName = NULL; @@ -3028,7 +3054,7 @@ bool LLStartUp::startLLProxy() } else { - LL_WARNS("Proxy") << "Invalid other HTTP proxy configuration."<< LL_ENDL; + LL_WARNS("Proxy") << "Invalid other HTTP proxy configuration: " << httpProxyType << LL_ENDL; // Set the missing or wrong configuration back to something valid. gSavedSettings.setString("HttpProxyType", "None"); diff --git a/indra/newview/llstatusbar.cpp b/indra/newview/llstatusbar.cpp index 041eae4b3c..72c5c961aa 100644 --- a/indra/newview/llstatusbar.cpp +++ b/indra/newview/llstatusbar.cpp @@ -309,7 +309,7 @@ void LLStatusBar::refresh() (LLViewerMedia::hasInWorldMedia() || LLViewerMedia::hasParcelMedia() || LLViewerMedia::hasParcelAudio()); mMediaToggle->setEnabled(button_enabled); // Note the "sense" of the toggle is opposite whether media is playing or not - bool any_media_playing = (LLViewerMedia::isAnyMediaShowing() || + bool any_media_playing = (LLViewerMedia::isAnyMediaPlaying() || LLViewerMedia::isParcelMediaPlaying() || LLViewerMedia::isParcelAudioPlaying()); mMediaToggle->setValue(!any_media_playing); @@ -562,8 +562,8 @@ void LLStatusBar::onClickMediaToggle(void* data) { LLStatusBar *status_bar = (LLStatusBar*)data; // "Selected" means it was showing the "play" icon (so media was playing), and now it shows "pause", so turn off media - bool enable = ! status_bar->mMediaToggle->getValue(); - LLViewerMedia::setAllMediaEnabled(enable); + bool pause = status_bar->mMediaToggle->getValue(); + LLViewerMedia::setAllMediaPaused(pause); } BOOL can_afford_transaction(S32 cost) diff --git a/indra/newview/llstylemap.h b/indra/newview/llstylemap.h index 8aa0af535c..96b3920593 100644 --- a/indra/newview/llstylemap.h +++ b/indra/newview/llstylemap.h @@ -39,6 +39,7 @@ typedef std::map<LLUUID, LLStyle::Params> style_map_t; class LLStyleMap : public LLSingleton<LLStyleMap> { + LLSINGLETON_EMPTY_CTOR(LLStyleMap); public: // Just like the [] accessor but it will add the entry in if it doesn't exist. const LLStyle::Params &lookupAgent(const LLUUID &source); diff --git a/indra/newview/llsyntaxid.cpp b/indra/newview/llsyntaxid.cpp index 9e54c521b5..10a9dee415 100644 --- a/indra/newview/llsyntaxid.cpp +++ b/indra/newview/llsyntaxid.cpp @@ -50,6 +50,7 @@ LLSyntaxIdLSL::LLSyntaxIdLSL() , mCapabilityURL(std::string()) , mFilePath(LL_PATH_APP_SETTINGS) , mSyntaxId(LLUUID()) +, mInitialized(false) { loadDefaultKeywordsIntoLLSD(); mRegionChangedCallback = gAgent.addRegionChangedCallback(boost::bind(&LLSyntaxIdLSL::handleRegionChanged, this)); @@ -179,6 +180,7 @@ void LLSyntaxIdLSL::cacheFile(const std::string &fileSpec, const LLSD& content_r //----------------------------------------------------------------------------- void LLSyntaxIdLSL::initialize() { + if(mInitialized) return; if (mSyntaxId.isNull()) { loadDefaultKeywordsIntoLLSD(); @@ -213,6 +215,7 @@ void LLSyntaxIdLSL::initialize() LL_DEBUGS("SyntaxLSL") << "LSLSyntaxId capability URL is empty." << LL_ENDL; loadDefaultKeywordsIntoLLSD(); } + mInitialized = true; } //----------------------------------------------------------------------------- @@ -303,6 +306,7 @@ void LLSyntaxIdLSL::handleRegionChanged() { buildFullFileSpec(); fetchKeywordsFile(mFullFileSpec); + mInitialized = false; } } diff --git a/indra/newview/llsyntaxid.h b/indra/newview/llsyntaxid.h index 0afa6dc04b..caddba5527 100644 --- a/indra/newview/llsyntaxid.h +++ b/indra/newview/llsyntaxid.h @@ -38,9 +38,9 @@ class fetchKeywordsFileResponder; class LLSyntaxIdLSL : public LLSingleton<LLSyntaxIdLSL> { - friend class LLSingleton<LLSyntaxIdLSL>; + LLSINGLETON(LLSyntaxIdLSL); friend class fetchKeywordsFileResponder; - + private: std::set<std::string> mInflightFetches; typedef boost::signals2::signal<void()> syntax_id_changed_signal_t; @@ -65,9 +65,9 @@ private: ELLPath mFilePath; LLUUID mSyntaxId; LLSD mKeywordsXml; + bool mInitialized; public: - LLSyntaxIdLSL(); void initialize(); bool keywordFetchInProgress(); LLSD getKeywordsXML() const { return mKeywordsXml; }; diff --git a/indra/newview/llsyswellwindow.h b/indra/newview/llsyswellwindow.h index d02293e6ff..b96a2573a1 100644 --- a/indra/newview/llsyswellwindow.h +++ b/indra/newview/llsyswellwindow.h @@ -32,6 +32,7 @@ #include "llscreenchannel.h" #include "llsyswellitem.h" #include "lltransientdockablefloater.h" +#include "llinitdestroyclass.h" class LLAvatarName; class LLChiclet; diff --git a/indra/newview/llteleporthistory.h b/indra/newview/llteleporthistory.h index e9c29c39bf..db0ccdda59 100644 --- a/indra/newview/llteleporthistory.h +++ b/indra/newview/llteleporthistory.h @@ -73,6 +73,8 @@ public: */ class LLTeleportHistory: public LLSingleton<LLTeleportHistory> { + LLSINGLETON(LLTeleportHistory); + ~LLTeleportHistory(); LOG_CLASS(LLTeleportHistory); public: @@ -81,9 +83,6 @@ public: typedef boost::function<void()> history_callback_t; typedef boost::signals2::signal<void()> history_signal_t; - LLTeleportHistory(); - ~LLTeleportHistory(); - /** * Go back in the history. */ diff --git a/indra/newview/llteleporthistorystorage.h b/indra/newview/llteleporthistorystorage.h index cf4c85a991..946ac0af1a 100644 --- a/indra/newview/llteleporthistorystorage.h +++ b/indra/newview/llteleporthistorystorage.h @@ -68,6 +68,8 @@ public: */ class LLTeleportHistoryStorage: public LLSingleton<LLTeleportHistoryStorage> { + LLSINGLETON(LLTeleportHistoryStorage); + ~LLTeleportHistoryStorage(); LOG_CLASS(LLTeleportHistoryStorage); public: @@ -78,9 +80,6 @@ public: typedef boost::function<void(S32 removed_index)> history_callback_t; typedef boost::signals2::signal<void(S32 removed_index)> history_signal_t; - LLTeleportHistoryStorage(); - ~LLTeleportHistoryStorage(); - /** * @return history items. */ diff --git a/indra/newview/lltextureatlasmanager.h b/indra/newview/lltextureatlasmanager.h index b643056198..1b8df708c6 100644 --- a/indra/newview/lltextureatlasmanager.h +++ b/indra/newview/lltextureatlasmanager.h @@ -85,12 +85,11 @@ private: class LLTextureAtlasManager : public LLSingleton<LLTextureAtlasManager> { -private: + LLSINGLETON(LLTextureAtlasManager); + ~LLTextureAtlasManager(); typedef std::list<LLPointer<LLTextureAtlas> > ll_texture_atlas_list_t ; public: - LLTextureAtlasManager(); - ~LLTextureAtlasManager(); LLPointer<LLTextureAtlasSlot> reserveAtlasSlot(S32 sub_texture_size, S8 ncomponents, LLSpatialGroup* groupp, LLViewerTexture* imagep) ; diff --git a/indra/newview/lltexturecache.cpp b/indra/newview/lltexturecache.cpp index 36c4f0d516..a541273621 100644 --- a/indra/newview/lltexturecache.cpp +++ b/indra/newview/lltexturecache.cpp @@ -547,10 +547,18 @@ bool LLTextureCacheRemoteWorker::doWrite() // First state / stage : check that what we're trying to cache is in an OK shape if (mState == INIT) { - llassert_always(mOffset == 0); // We currently do not support write offsets - llassert_always(mDataSize > 0); // Things will go badly wrong if mDataSize is nul or negative... - llassert_always(mImageSize >= mDataSize); - mState = CACHE; + if ((mOffset != 0) // We currently do not support write offsets + || (mDataSize <= 0) // Things will go badly wrong if mDataSize is nul or negative... + || (mImageSize < mDataSize)) + { + LL_WARNS() << "INIT state check failed" << LL_ENDL; + mDataSize = -1; // failed + done = true; + } + else + { + mState = CACHE; + } } // No LOCAL state for write(): because it doesn't make much sense to cache a local file... @@ -559,7 +567,7 @@ bool LLTextureCacheRemoteWorker::doWrite() if (!done && (mState == CACHE)) { bool alreadyCached = false; - LLTextureCache::Entry entry ; + LLTextureCache::Entry entry; // Checks if this image is already in the entry list idx = mCache->getHeaderCacheEntry(mID, entry); @@ -571,107 +579,132 @@ bool LLTextureCacheRemoteWorker::doWrite() // (almost always) write to the fast cache. if (mRawImage->getDataSize()) { - llassert_always(mCache->writeToFastCache(idx, mRawImage, mRawDiscardLevel)); + if(!mCache->writeToFastCache(idx, mRawImage, mRawDiscardLevel)) + { + LL_WARNS() << "writeToFastCache failed" << LL_ENDL; + mDataSize = -1; // failed + done = true; + } + } } } - } else { alreadyCached = mCache->updateEntry(idx, entry, mImageSize, mDataSize); // update the existing entry. } - if (idx < 0) - { - LL_WARNS() << "LLTextureCacheWorker: " << mID - << " Unable to create header entry for writing!" << LL_ENDL; - mDataSize = -1; // failed - done = true; - } - else + if (!done) { - if (alreadyCached && (mDataSize <= TEXTURE_CACHE_ENTRY_SIZE)) + if (idx < 0) { - // Small texture already cached case: we're done with writing + LL_WARNS() << "LLTextureCacheWorker: " << mID + << " Unable to create header entry for writing!" << LL_ENDL; + mDataSize = -1; // failed done = true; } else { - // If the texture has already been cached, we don't resave the header and go directly to the body part - mState = alreadyCached ? BODY : HEADER; + if (alreadyCached && (mDataSize <= TEXTURE_CACHE_ENTRY_SIZE)) + { + // Small texture already cached case: we're done with writing + done = true; + } + else + { + // If the texture has already been cached, we don't resave the header and go directly to the body part + mState = alreadyCached ? BODY : HEADER; + } } } } + // Third stage / state : write the header record in the header file (texture.cache) if (!done && (mState == HEADER)) { - llassert_always(idx >= 0); // we need an entry here or storing the header makes no sense - S32 offset = idx * TEXTURE_CACHE_ENTRY_SIZE; // skip to the correct spot in the header file - S32 size = TEXTURE_CACHE_ENTRY_SIZE; // record size is fixed for the header - S32 bytes_written; - - if (mDataSize < TEXTURE_CACHE_ENTRY_SIZE) + if (idx < 0) // we need an entry here or storing the header makes no sense { - // We need to write a full record in the header cache so, if the amount of data is smaller - // than a record, we need to transfer the data to a buffer padded with 0 and write that - U8* padBuffer = (U8*)ALLOCATE_MEM(LLImageBase::getPrivatePool(), TEXTURE_CACHE_ENTRY_SIZE); - memset(padBuffer, 0, TEXTURE_CACHE_ENTRY_SIZE); // Init with zeros - memcpy(padBuffer, mWriteData, mDataSize); // Copy the write buffer - bytes_written = LLAPRFile::writeEx(mCache->mHeaderDataFileName, padBuffer, offset, size, mCache->getLocalAPRFilePool()); - FREE_MEM(LLImageBase::getPrivatePool(), padBuffer); + LL_WARNS() << "index check failed" << LL_ENDL; + mDataSize = -1; // failed + done = true; } else { - // Write the header record (== first TEXTURE_CACHE_ENTRY_SIZE bytes of the raw file) in the header file - bytes_written = LLAPRFile::writeEx(mCache->mHeaderDataFileName, mWriteData, offset, size, mCache->getLocalAPRFilePool()); - } + S32 offset = idx * TEXTURE_CACHE_ENTRY_SIZE; // skip to the correct spot in the header file + S32 size = TEXTURE_CACHE_ENTRY_SIZE; // record size is fixed for the header + S32 bytes_written; - if (bytes_written <= 0) - { - LL_WARNS() << "LLTextureCacheWorker: " << mID + if (mDataSize < TEXTURE_CACHE_ENTRY_SIZE) + { + // We need to write a full record in the header cache so, if the amount of data is smaller + // than a record, we need to transfer the data to a buffer padded with 0 and write that + U8* padBuffer = (U8*)ALLOCATE_MEM(LLImageBase::getPrivatePool(), TEXTURE_CACHE_ENTRY_SIZE); + memset(padBuffer, 0, TEXTURE_CACHE_ENTRY_SIZE); // Init with zeros + memcpy(padBuffer, mWriteData, mDataSize); // Copy the write buffer + bytes_written = LLAPRFile::writeEx(mCache->mHeaderDataFileName, padBuffer, offset, size, mCache->getLocalAPRFilePool()); + FREE_MEM(LLImageBase::getPrivatePool(), padBuffer); + } + else + { + // Write the header record (== first TEXTURE_CACHE_ENTRY_SIZE bytes of the raw file) in the header file + bytes_written = LLAPRFile::writeEx(mCache->mHeaderDataFileName, mWriteData, offset, size, mCache->getLocalAPRFilePool()); + } + + if (bytes_written <= 0) + { + LL_WARNS() << "LLTextureCacheWorker: " << mID << " Unable to write header entry!" << LL_ENDL; - mDataSize = -1; // failed - done = true; - } + mDataSize = -1; // failed + done = true; + } - // If we wrote everything (may be more with padding) in the header cache, - // we're done so we don't have a body to store - if (mDataSize <= bytes_written) - { - done = true; - } - else - { - mState = BODY; + // If we wrote everything (may be more with padding) in the header cache, + // we're done so we don't have a body to store + if (mDataSize <= bytes_written) + { + done = true; + } + else + { + mState = BODY; + } } } // Fourth stage / state : write the body file, i.e. the rest of the texture in a "UUID" file name if (!done && (mState == BODY)) { - llassert(mDataSize > TEXTURE_CACHE_ENTRY_SIZE); // wouldn't make sense to be here otherwise... - S32 file_size = mDataSize - TEXTURE_CACHE_ENTRY_SIZE; - + if (mDataSize <= TEXTURE_CACHE_ENTRY_SIZE) // wouldn't make sense to be here otherwise... { - // build the cache file name from the UUID - std::string filename = mCache->getTextureFileName(mID); -// LL_INFOS() << "Writing Body: " << filename << " Bytes: " << file_offset+file_size << LL_ENDL; - S32 bytes_written = LLAPRFile::writeEx( filename, - mWriteData + TEXTURE_CACHE_ENTRY_SIZE, - 0, file_size, - mCache->getLocalAPRFilePool()); - if (bytes_written <= 0) + LL_WARNS() << "mDataSize check failed" << LL_ENDL; + mDataSize = -1; // failed + done = true; + } + else + { + S32 file_size = mDataSize - TEXTURE_CACHE_ENTRY_SIZE; + { - LL_WARNS() << "LLTextureCacheWorker: " << mID + // build the cache file name from the UUID + std::string filename = mCache->getTextureFileName(mID); + // LL_INFOS() << "Writing Body: " << filename << " Bytes: " << file_offset+file_size << LL_ENDL; + S32 bytes_written = LLAPRFile::writeEx(filename, + mWriteData + TEXTURE_CACHE_ENTRY_SIZE, + 0, file_size, + mCache->getLocalAPRFilePool()); + if (bytes_written <= 0) + { + LL_WARNS() << "LLTextureCacheWorker: " << mID << " incorrect number of bytes written to body: " << bytes_written << " / " << file_size << LL_ENDL; - mDataSize = -1; // failed - done = true; + mDataSize = -1; // failed + done = true; + } } + + // Nothing else to do at that point... + done = true; } - - // Nothing else to do at that point... - done = true; } mRawImage = NULL; diff --git a/indra/newview/lltexturectrl.cpp b/indra/newview/lltexturectrl.cpp index 24bc55c998..c7adaa908f 100644 --- a/indra/newview/lltexturectrl.cpp +++ b/indra/newview/lltexturectrl.cpp @@ -43,7 +43,6 @@ #include "llinventorymodelbackgroundfetch.h" #include "llinventoryobserver.h" #include "llinventorypanel.h" -#include "llfloaterinventory.h" #include "lllineeditor.h" #include "llui.h" #include "llviewerinventory.h" @@ -565,7 +564,7 @@ void LLFloaterTexturePicker::draw() } } -const LLUUID& LLFloaterTexturePicker::findItemID(const LLUUID& asset_id, BOOL copyable_only) +const LLUUID& LLFloaterTexturePicker::findItemID(const LLUUID& asset_id, BOOL copyable_only, BOOL ignore_library) { LLViewerInventoryCategory::cat_array_t cats; LLViewerInventoryItem::item_array_t items; @@ -585,7 +584,10 @@ const LLUUID& LLFloaterTexturePicker::findItemID(const LLUUID& asset_id, BOOL co LLPermissions item_permissions = itemp->getPermissions(); if (item_permissions.allowCopyBy(gAgent.getID(), gAgent.getGroupID())) { - return itemp->getUUID(); + if(!ignore_library || !gInventory.isObjectDescendentOf(itemp->getUUID(),gInventory.getLibraryRootFolderID())) + { + return itemp->getUUID(); + } } } // otherwise just return first instance, unless copyable requested @@ -595,7 +597,10 @@ const LLUUID& LLFloaterTexturePicker::findItemID(const LLUUID& asset_id, BOOL co } else { - return items[0]->getUUID(); + if(!ignore_library || !gInventory.isObjectDescendentOf(items[0]->getUUID(),gInventory.getLibraryRootFolderID())) + { + return items[0]->getUUID(); + } } } diff --git a/indra/newview/lltexturectrl.h b/indra/newview/lltexturectrl.h index 61f99de5c0..840feddfaf 100644 --- a/indra/newview/lltexturectrl.h +++ b/indra/newview/lltexturectrl.h @@ -278,7 +278,7 @@ public: void setImageID(const LLUUID& image_asset_id, bool set_selection = true); void updateImageStats(); const LLUUID& getAssetID() { return mImageAssetID; } - const LLUUID& findItemID(const LLUUID& asset_id, BOOL copyable_only); + const LLUUID& findItemID(const LLUUID& asset_id, BOOL copyable_only, BOOL ignore_library = FALSE); void setCanApplyImmediately(BOOL b); void setActive(BOOL active); diff --git a/indra/newview/lltoastgroupnotifypanel.cpp b/indra/newview/lltoastgroupnotifypanel.cpp index f6ca0bc9d7..f7dc32d0d7 100644 --- a/indra/newview/lltoastgroupnotifypanel.cpp +++ b/indra/newview/lltoastgroupnotifypanel.cpp @@ -47,7 +47,6 @@ #include "llglheaders.h" #include "llagent.h" #include "llavatariconctrl.h" -#include "llfloaterinventory.h" #include "llinventorytype.h" const S32 LLToastGroupNotifyPanel::DEFAULT_MESSAGE_MAX_LINE_COUNT = 7; diff --git a/indra/newview/lltool.cpp b/indra/newview/lltool.cpp index 5e703933ca..4aad650b68 100644 --- a/indra/newview/lltool.cpp +++ b/indra/newview/lltool.cpp @@ -38,7 +38,6 @@ #include "lltoolfocus.h" #include "llfocusmgr.h" #include "llagent.h" -#include "llagentcamera.h" #include "llviewerjoystick.h" extern BOOL gDebugClicks; @@ -85,14 +84,7 @@ BOOL LLTool::handleMouseDown(S32 x, S32 y, MASK mask) } // by default, didn't handle it // LL_INFOS() << "LLTool::handleMouseDown" << LL_ENDL; - if (gAgentCamera.cameraMouselook()) - { - gAgent.setControlFlags(AGENT_CONTROL_ML_LBUTTON_DOWN); - } - else - { - gAgent.setControlFlags(AGENT_CONTROL_LBUTTON_DOWN); - } + gAgent.setControlFlags(AGENT_CONTROL_LBUTTON_DOWN); return TRUE; } @@ -103,15 +95,8 @@ BOOL LLTool::handleMouseUp(S32 x, S32 y, MASK mask) LL_INFOS() << "LLTool left mouse up" << LL_ENDL; } // by default, didn't handle it - // LL_INFOS() << "LLTool::handleMouseUp" << LL_ENDL; - if (gAgentCamera.cameraMouselook()) - { - gAgent.setControlFlags(AGENT_CONTROL_ML_LBUTTON_UP); - } - else - { - gAgent.setControlFlags(AGENT_CONTROL_LBUTTON_UP); - } + // LL_INFOS() << "LLTool::handleMouseUp" << LL_ENDL; + gAgent.setControlFlags(AGENT_CONTROL_LBUTTON_UP); return TRUE; } diff --git a/indra/newview/lltoolbrush.h b/indra/newview/lltoolbrush.h index 2ec6911de9..c108d83256 100644 --- a/indra/newview/lltoolbrush.h +++ b/indra/newview/lltoolbrush.h @@ -43,10 +43,10 @@ class LLViewerRegion; class LLToolBrushLand : public LLTool, public LLEditMenuHandler, public LLSingleton<LLToolBrushLand> { + LLSINGLETON(LLToolBrushLand); typedef std::set<LLViewerRegion*> region_list_t; public: - LLToolBrushLand(); // x,y in window coords, 0,0 = left,bot virtual BOOL handleMouseDown( S32 x, S32 y, MASK mask ); diff --git a/indra/newview/lltoolcomp.cpp b/indra/newview/lltoolcomp.cpp index 2b4fa757f6..392c103d7c 100644 --- a/indra/newview/lltoolcomp.cpp +++ b/indra/newview/lltoolcomp.cpp @@ -683,7 +683,7 @@ LLToolCompGun::LLToolCompGun() : LLToolComposite(std::string("Mouselook")) { mGun = new LLToolGun(this); - mGrab = new LLToolGrab(this); + mGrab = new LLToolGrabBase(this); mNull = sNullTool; setCurrentTool(mGun); @@ -742,13 +742,12 @@ BOOL LLToolCompGun::handleHover(S32 x, S32 y, MASK mask) BOOL LLToolCompGun::handleMouseDown(S32 x, S32 y, MASK mask) { - // if the left button is blocked, don't put up the pie menu - if (gAgent.leftButtonBlocked()) - { - // in case of "grabbed" control flag will be set later - gAgent.setControlFlags(AGENT_CONTROL_ML_LBUTTON_DOWN); - return FALSE; - } + // if the left button is grabbed, don't put up the pie menu + if (gAgent.leftButtonGrabbed()) + { + gAgent.setControlFlags(AGENT_CONTROL_ML_LBUTTON_DOWN); + return FALSE; + } // On mousedown, start grabbing gGrabTransientTool = this; @@ -760,13 +759,12 @@ BOOL LLToolCompGun::handleMouseDown(S32 x, S32 y, MASK mask) BOOL LLToolCompGun::handleDoubleClick(S32 x, S32 y, MASK mask) { - // if the left button is blocked, don't put up the pie menu - if (gAgent.leftButtonBlocked()) - { - // in case of "grabbed" control flag will be set later - gAgent.setControlFlags(AGENT_CONTROL_ML_LBUTTON_DOWN); - return FALSE; - } + // if the left button is grabbed, don't put up the pie menu + if (gAgent.leftButtonGrabbed()) + { + gAgent.setControlFlags(AGENT_CONTROL_ML_LBUTTON_DOWN); + return FALSE; + } // On mousedown, start grabbing gGrabTransientTool = this; diff --git a/indra/newview/lltoolcomp.h b/indra/newview/lltoolcomp.h index e75d3c22e2..86506f725e 100644 --- a/indra/newview/lltoolcomp.h +++ b/indra/newview/lltoolcomp.h @@ -103,9 +103,9 @@ public: class LLToolCompInspect : public LLToolComposite, public LLSingleton<LLToolCompInspect> { -public: - LLToolCompInspect(); + LLSINGLETON(LLToolCompInspect); virtual ~LLToolCompInspect(); +public: // Overridden from LLToolComposite virtual BOOL handleMouseDown(S32 x, S32 y, MASK mask); @@ -128,9 +128,9 @@ private: class LLToolCompTranslate : public LLToolComposite, public LLSingleton<LLToolCompTranslate> { -public: - LLToolCompTranslate(); + LLSINGLETON(LLToolCompTranslate); virtual ~LLToolCompTranslate(); +public: // Overridden from LLToolComposite virtual BOOL handleMouseDown(S32 x, S32 y, MASK mask); @@ -149,9 +149,9 @@ public: class LLToolCompScale : public LLToolComposite, public LLSingleton<LLToolCompScale> { -public: - LLToolCompScale(); + LLSINGLETON(LLToolCompScale); virtual ~LLToolCompScale(); +public: // Overridden from LLToolComposite virtual BOOL handleMouseDown(S32 x, S32 y, MASK mask); @@ -171,9 +171,9 @@ public: class LLToolCompRotate : public LLToolComposite, public LLSingleton<LLToolCompRotate> { -public: - LLToolCompRotate(); + LLSINGLETON(LLToolCompRotate); virtual ~LLToolCompRotate(); +public: // Overridden from LLToolComposite virtual BOOL handleMouseDown(S32 x, S32 y, MASK mask); @@ -194,9 +194,9 @@ protected: class LLToolCompCreate : public LLToolComposite, public LLSingleton<LLToolCompCreate> { -public: - LLToolCompCreate(); + LLSINGLETON(LLToolCompCreate); virtual ~LLToolCompCreate(); +public: // Overridden from LLToolComposite virtual BOOL handleMouseDown(S32 x, S32 y, MASK mask); @@ -214,14 +214,14 @@ protected: // LLToolCompGun class LLToolGun; -class LLToolGrab; +class LLToolGrabBase; class LLToolSelect; class LLToolCompGun : public LLToolComposite, public LLSingleton<LLToolCompGun> { -public: - LLToolCompGun(); + LLSINGLETON(LLToolCompGun); virtual ~LLToolCompGun(); +public: // Overridden from LLToolComposite virtual BOOL handleHover(S32 x, S32 y, MASK mask); @@ -237,7 +237,7 @@ public: protected: LLToolGun* mGun; - LLToolGrab* mGrab; + LLToolGrabBase* mGrab; LLTool* mNull; }; diff --git a/indra/newview/lltooldraganddrop.h b/indra/newview/lltooldraganddrop.h index 63be1ef09b..766046785b 100644 --- a/indra/newview/lltooldraganddrop.h +++ b/indra/newview/lltooldraganddrop.h @@ -43,11 +43,10 @@ class LLPickInfo; class LLToolDragAndDrop : public LLTool, public LLSingleton<LLToolDragAndDrop> { + LLSINGLETON(LLToolDragAndDrop); public: typedef boost::signals2::signal<void ()> enddrag_signal_t; - LLToolDragAndDrop(); - // overridden from LLTool virtual BOOL handleMouseUp(S32 x, S32 y, MASK mask); virtual BOOL handleHover(S32 x, S32 y, MASK mask); @@ -281,8 +280,8 @@ private: class LLDragAndDropDictionary : public LLSingleton<LLDragAndDropDictionary>, public LLDictionary<EDragAndDropType, DragAndDropEntry> { + LLSINGLETON(LLDragAndDropDictionary); public: - LLDragAndDropDictionary(); dragOrDrop3dImpl get(EDragAndDropType dad_type, EDropTarget drop_target); }; }; diff --git a/indra/newview/lltoolface.h b/indra/newview/lltoolface.h index 7eb13b0fbc..e4b8ae12b8 100644 --- a/indra/newview/lltoolface.h +++ b/indra/newview/lltoolface.h @@ -35,9 +35,9 @@ class LLPickInfo; class LLToolFace : public LLTool, public LLSingleton<LLToolFace> { -public: - LLToolFace(); + LLSINGLETON(LLToolFace); virtual ~LLToolFace(); +public: virtual BOOL handleMouseDown(S32 x, S32 y, MASK mask); virtual BOOL handleDoubleClick(S32 x, S32 y, MASK mask); diff --git a/indra/newview/lltoolfocus.h b/indra/newview/lltoolfocus.h index d23eb2cce6..cfc235b6c2 100644 --- a/indra/newview/lltoolfocus.h +++ b/indra/newview/lltoolfocus.h @@ -34,9 +34,9 @@ class LLPickInfo; class LLToolCamera : public LLTool, public LLSingleton<LLToolCamera> { -public: - LLToolCamera(); + LLSINGLETON(LLToolCamera); virtual ~LLToolCamera(); +public: virtual BOOL handleMouseDown(S32 x, S32 y, MASK mask); virtual BOOL handleMouseUp(S32 x, S32 y, MASK mask); diff --git a/indra/newview/lltoolgrab.cpp b/indra/newview/lltoolgrab.cpp index c0ca4d7a9a..5623036b91 100644 --- a/indra/newview/lltoolgrab.cpp +++ b/indra/newview/lltoolgrab.cpp @@ -69,7 +69,7 @@ extern BOOL gDebugClicks; // // Methods // -LLToolGrab::LLToolGrab( LLToolComposite* composite ) +LLToolGrabBase::LLToolGrabBase( LLToolComposite* composite ) : LLTool( std::string("Grab"), composite ), mMode( GRAB_INACTIVE ), mVerticalDragging( FALSE ), @@ -88,12 +88,12 @@ LLToolGrab::LLToolGrab( LLToolComposite* composite ) mHideBuildHighlight(FALSE) { } -LLToolGrab::~LLToolGrab() +LLToolGrabBase::~LLToolGrabBase() { } // virtual -void LLToolGrab::handleSelect() +void LLToolGrabBase::handleSelect() { if(gFloaterTools) { @@ -106,7 +106,7 @@ void LLToolGrab::handleSelect() gGrabBtnSpin = FALSE; } -void LLToolGrab::handleDeselect() +void LLToolGrabBase::handleDeselect() { if( hasMouseCapture() ) { @@ -123,7 +123,7 @@ void LLToolGrab::handleDeselect() } -BOOL LLToolGrab::handleDoubleClick(S32 x, S32 y, MASK mask) +BOOL LLToolGrabBase::handleDoubleClick(S32 x, S32 y, MASK mask) { if (gDebugClicks) { @@ -133,7 +133,7 @@ BOOL LLToolGrab::handleDoubleClick(S32 x, S32 y, MASK mask) return FALSE; } -BOOL LLToolGrab::handleMouseDown(S32 x, S32 y, MASK mask) +BOOL LLToolGrabBase::handleMouseDown(S32 x, S32 y, MASK mask) { if (gDebugClicks) { @@ -143,7 +143,7 @@ BOOL LLToolGrab::handleMouseDown(S32 x, S32 y, MASK mask) // call the base class to propogate info to sim LLTool::handleMouseDown(x, y, mask); - if (!gAgent.leftButtonBlocked()) + if (!gAgent.leftButtonGrabbed()) { // can grab transparent objects (how touch event propagates, scripters rely on this) gViewerWindow->pickAsync(x, y, mask, pickCallback, /*BOOL pick_transparent*/ TRUE); @@ -152,7 +152,7 @@ BOOL LLToolGrab::handleMouseDown(S32 x, S32 y, MASK mask) return TRUE; } -void LLToolGrab::pickCallback(const LLPickInfo& pick_info) +void LLToolGrabBase::pickCallback(const LLPickInfo& pick_info) { LLToolGrab::getInstance()->mGrabPick = pick_info; LLViewerObject *objectp = pick_info.getObject(); @@ -182,7 +182,7 @@ void LLToolGrab::pickCallback(const LLPickInfo& pick_info) } } -BOOL LLToolGrab::handleObjectHit(const LLPickInfo& info) +BOOL LLToolGrabBase::handleObjectHit(const LLPickInfo& info) { mGrabPick = info; LLViewerObject* objectp = mGrabPick.getObject(); @@ -315,7 +315,7 @@ BOOL LLToolGrab::handleObjectHit(const LLPickInfo& info) } -void LLToolGrab::startSpin() +void LLToolGrabBase::startSpin() { LLViewerObject* objectp = mGrabPick.getObject(); if (!objectp) @@ -339,7 +339,7 @@ void LLToolGrab::startSpin() } -void LLToolGrab::stopSpin() +void LLToolGrabBase::stopSpin() { mSpinGrabbing = FALSE; @@ -373,7 +373,7 @@ void LLToolGrab::stopSpin() } -void LLToolGrab::startGrab() +void LLToolGrabBase::startGrab() { // Compute grab_offset in the OBJECT's root's coordinate frame // (sometimes root == object) @@ -422,7 +422,7 @@ void LLToolGrab::startGrab() } -BOOL LLToolGrab::handleHover(S32 x, S32 y, MASK mask) +BOOL LLToolGrabBase::handleHover(S32 x, S32 y, MASK mask) { if (!gViewerWindow->getLeftMouseDown()) { @@ -466,7 +466,7 @@ const F32 GRAB_SENSITIVITY_Y = 0.0075f; // Dragging. -void LLToolGrab::handleHoverActive(S32 x, S32 y, MASK mask) +void LLToolGrabBase::handleHoverActive(S32 x, S32 y, MASK mask) { LLViewerObject* objectp = mGrabPick.getObject(); if (!objectp || !hasMouseCapture() ) return; @@ -724,7 +724,7 @@ void LLToolGrab::handleHoverActive(S32 x, S32 y, MASK mask) } -void LLToolGrab::handleHoverNonPhysical(S32 x, S32 y, MASK mask) +void LLToolGrabBase::handleHoverNonPhysical(S32 x, S32 y, MASK mask) { LLViewerObject* objectp = mGrabPick.getObject(); if (!objectp || !hasMouseCapture() ) return; @@ -881,7 +881,7 @@ void LLToolGrab::handleHoverNonPhysical(S32 x, S32 y, MASK mask) // Not dragging. Just showing affordances -void LLToolGrab::handleHoverInactive(S32 x, S32 y, MASK mask) +void LLToolGrabBase::handleHoverInactive(S32 x, S32 y, MASK mask) { // JC - TODO - change cursor based on gGrabBtnVertical, gGrabBtnSpin LL_DEBUGS("UserInput") << "hover handled by LLToolGrab (inactive-not over editable object)" << LL_ENDL; @@ -889,7 +889,7 @@ void LLToolGrab::handleHoverInactive(S32 x, S32 y, MASK mask) } // User is trying to do something that's not allowed. -void LLToolGrab::handleHoverFailed(S32 x, S32 y, MASK mask) +void LLToolGrabBase::handleHoverFailed(S32 x, S32 y, MASK mask) { if( GRAB_NOOBJECT == mMode ) { @@ -930,7 +930,7 @@ void LLToolGrab::handleHoverFailed(S32 x, S32 y, MASK mask) -BOOL LLToolGrab::handleMouseUp(S32 x, S32 y, MASK mask) +BOOL LLToolGrabBase::handleMouseUp(S32 x, S32 y, MASK mask) { // call the base class to propogate info to sim LLTool::handleMouseUp(x, y, mask); @@ -961,7 +961,7 @@ BOOL LLToolGrab::handleMouseUp(S32 x, S32 y, MASK mask) return TRUE; } -void LLToolGrab::stopEditing() +void LLToolGrabBase::stopEditing() { if( hasMouseCapture() ) { @@ -969,7 +969,7 @@ void LLToolGrab::stopEditing() } } -void LLToolGrab::onMouseCaptureLost() +void LLToolGrabBase::onMouseCaptureLost() { LLViewerObject* objectp = mGrabPick.getObject(); if (!objectp) @@ -1026,7 +1026,7 @@ void LLToolGrab::onMouseCaptureLost() } -void LLToolGrab::stopGrab() +void LLToolGrabBase::stopGrab() { LLViewerObject* objectp = mGrabPick.getObject(); if (!objectp) @@ -1067,29 +1067,29 @@ void LLToolGrab::stopGrab() } -void LLToolGrab::draw() +void LLToolGrabBase::draw() { } -void LLToolGrab::render() +void LLToolGrabBase::render() { } -BOOL LLToolGrab::isEditing() +BOOL LLToolGrabBase::isEditing() { return (mGrabPick.getObject().notNull()); } -LLViewerObject* LLToolGrab::getEditingObject() +LLViewerObject* LLToolGrabBase::getEditingObject() { return mGrabPick.getObject(); } -LLVector3d LLToolGrab::getEditingPointGlobal() +LLVector3d LLToolGrabBase::getEditingPointGlobal() { return getGrabPointGlobal(); } -LLVector3d LLToolGrab::getGrabPointGlobal() +LLVector3d LLToolGrabBase::getGrabPointGlobal() { switch(mMode) { diff --git a/indra/newview/lltoolgrab.h b/indra/newview/lltoolgrab.h index 5d24c8813e..02ed5c26d7 100644 --- a/indra/newview/lltoolgrab.h +++ b/indra/newview/lltoolgrab.h @@ -45,12 +45,17 @@ void send_ObjectGrab_message(LLViewerObject* object, const LLPickInfo & pick, co void send_ObjectDeGrab_message(LLViewerObject* object, const LLPickInfo & pick); - -class LLToolGrab : public LLTool, public LLSingleton<LLToolGrab> +/** + * LLToolGrabBase contains most of the semantics of LLToolGrab. It's just that + * LLToolGrab is an LLSingleton, but we also explicitly instantiate + * LLToolGrabBase as part of LLToolCompGun. You can't just make an extra + * instance of an LLSingleton! + */ +class LLToolGrabBase : public LLTool { public: - LLToolGrab( LLToolComposite* composite = NULL ); - ~LLToolGrab(); + LLToolGrabBase(LLToolComposite* composite=NULL); + ~LLToolGrabBase(); /*virtual*/ BOOL handleHover(S32 x, S32 y, MASK mask); /*virtual*/ BOOL handleMouseDown(S32 x, S32 y, MASK mask); @@ -140,10 +145,14 @@ private: BOOL mClickedInMouselook; }; +/// This is the LLSingleton instance of LLToolGrab. +class LLToolGrab : public LLToolGrabBase, public LLSingleton<LLToolGrab> +{ + LLSINGLETON_EMPTY_CTOR(LLToolGrab); +}; + extern BOOL gGrabBtnVertical; extern BOOL gGrabBtnSpin; extern LLTool* gGrabTransientTool; #endif // LL_TOOLGRAB_H - - diff --git a/indra/newview/lltoolindividual.h b/indra/newview/lltoolindividual.h index 961a6a4d93..e7c2060fba 100644 --- a/indra/newview/lltoolindividual.h +++ b/indra/newview/lltoolindividual.h @@ -39,9 +39,9 @@ class LLPickInfo; class LLToolIndividual : public LLTool, public LLSingleton<LLToolIndividual> { -public: - LLToolIndividual(); + LLSINGLETON(LLToolIndividual); virtual ~LLToolIndividual(); +public: virtual BOOL handleMouseDown(S32 x, S32 y, MASK mask); virtual BOOL handleDoubleClick(S32 x, S32 y, MASK mask); diff --git a/indra/newview/lltoolmgr.h b/indra/newview/lltoolmgr.h index e5b45750d9..28465d5d2c 100644 --- a/indra/newview/lltoolmgr.h +++ b/indra/newview/lltoolmgr.h @@ -42,9 +42,9 @@ const MASK MASK_COPY = MASK_SHIFT; class LLToolMgr : public LLSingleton<LLToolMgr> { -public: - LLToolMgr(); + LLSINGLETON(LLToolMgr); ~LLToolMgr(); +public: // Must be called after gSavedSettings set up. void initTools(); diff --git a/indra/newview/lltoolobjpicker.h b/indra/newview/lltoolobjpicker.h index 0c37be1f92..5ad9b67e21 100644 --- a/indra/newview/lltoolobjpicker.h +++ b/indra/newview/lltoolobjpicker.h @@ -35,8 +35,8 @@ class LLPickInfo; class LLToolObjPicker : public LLTool, public LLSingleton<LLToolObjPicker> { + LLSINGLETON(LLToolObjPicker); public: - LLToolObjPicker(); virtual BOOL handleMouseDown(S32 x, S32 y, MASK mask); virtual BOOL handleMouseUp(S32 x, S32 y, MASK mask); diff --git a/indra/newview/lltoolpie.cpp b/indra/newview/lltoolpie.cpp index e17651dc91..e79ce55854 100644 --- a/indra/newview/lltoolpie.cpp +++ b/indra/newview/lltoolpie.cpp @@ -338,56 +338,41 @@ BOOL LLToolPie::handleLeftClickPick() // If left-click never selects or spawns a menu // Eat the event. - if (!gSavedSettings.getBOOL("LeftClickShowMenu")) + + // mouse already released + if (!mMouseButtonDown) { - // mouse already released - if (!mMouseButtonDown) - { - return true; - } + return true; + } - while( object && object->isAttachment() && !object->flagHandleTouch()) + while (object && object->isAttachment() && !object->flagHandleTouch()) + { + // don't pick avatar through hud attachment + if (object->isHUDAttachment()) { - // don't pick avatar through hud attachment - if (object->isHUDAttachment()) - { - break; - } - object = (LLViewerObject*)object->getParent(); + break; } - if (object && object == gAgentAvatarp && !gSavedSettings.getBOOL("ClickToWalk")) - { - // we left clicked on avatar, switch to focus mode - mMouseButtonDown = false; - LLToolMgr::getInstance()->setTransientTool(LLToolCamera::getInstance()); - gViewerWindow->hideCursor(); - LLToolCamera::getInstance()->setMouseCapture(TRUE); - LLToolCamera::getInstance()->pickCallback(mPick); - gAgentCamera.setFocusOnAvatar(TRUE, TRUE); + object = (LLViewerObject*)object->getParent(); + } + if (object && object == gAgentAvatarp && !gSavedSettings.getBOOL("ClickToWalk")) + { + // we left clicked on avatar, switch to focus mode + mMouseButtonDown = false; + LLToolMgr::getInstance()->setTransientTool(LLToolCamera::getInstance()); + gViewerWindow->hideCursor(); + LLToolCamera::getInstance()->setMouseCapture(TRUE); + LLToolCamera::getInstance()->pickCallback(mPick); + gAgentCamera.setFocusOnAvatar(TRUE, TRUE); - return TRUE; - } + return TRUE; + } ////////// // // Could be first left-click on nothing // LLFirstUse::useLeftClickNoHit(); ///////// - - // Eat the event - return LLTool::handleMouseDown(x, y, mask); - } - - if (gAgent.leftButtonGrabbed()) - { - // if the left button is grabbed, don't put up the pie menu - return LLTool::handleMouseDown(x, y, mask); - } - - // Can't ignore children here. - LLToolSelect::handleObjectSelection(mPick, FALSE, TRUE); - // Spawn pie menu - LLTool::handleRightMouseDown(x, y, mask); - return TRUE; + // Eat the event + return LLTool::handleMouseDown(x, y, mask); } BOOL LLToolPie::useClickAction(MASK mask, diff --git a/indra/newview/lltoolpie.h b/indra/newview/lltoolpie.h index 6391e675c5..95d155a474 100644 --- a/indra/newview/lltoolpie.h +++ b/indra/newview/lltoolpie.h @@ -37,9 +37,9 @@ class LLObjectSelection; class LLToolPie : public LLTool, public LLSingleton<LLToolPie> { + LLSINGLETON(LLToolPie); LOG_CLASS(LLToolPie); public: - LLToolPie( ); // Virtual functions inherited from LLMouseHandler virtual BOOL handleAnyMouseClick(S32 x, S32 y, MASK mask, EClickType clicktype, BOOL down); diff --git a/indra/newview/lltoolpipette.h b/indra/newview/lltoolpipette.h index 8a83bf31af..7575d8ad18 100644 --- a/indra/newview/lltoolpipette.h +++ b/indra/newview/lltoolpipette.h @@ -43,10 +43,10 @@ class LLPickInfo; class LLToolPipette : public LLTool, public LLSingleton<LLToolPipette> { -public: - LLToolPipette(); + LLSINGLETON(LLToolPipette); virtual ~LLToolPipette(); +public: virtual BOOL handleMouseDown(S32 x, S32 y, MASK mask); virtual BOOL handleMouseUp(S32 x, S32 y, MASK mask); virtual BOOL handleHover(S32 x, S32 y, MASK mask); diff --git a/indra/newview/lltoolselectland.h b/indra/newview/lltoolselectland.h index b368a4b153..b5ba72f16d 100644 --- a/indra/newview/lltoolselectland.h +++ b/indra/newview/lltoolselectland.h @@ -35,10 +35,10 @@ class LLParcelSelection; class LLToolSelectLand : public LLTool, public LLSingleton<LLToolSelectLand> { -public: - LLToolSelectLand( ); + LLSINGLETON(LLToolSelectLand); virtual ~LLToolSelectLand(); +public: /*virtual*/ BOOL handleMouseDown(S32 x, S32 y, MASK mask); /*virtual*/ BOOL handleDoubleClick(S32 x, S32 y, MASK mask); /*virtual*/ BOOL handleMouseUp(S32 x, S32 y, MASK mask); diff --git a/indra/newview/lltransientfloatermgr.h b/indra/newview/lltransientfloatermgr.h index b4611c8c87..d126543f15 100644 --- a/indra/newview/lltransientfloatermgr.h +++ b/indra/newview/lltransientfloatermgr.h @@ -38,9 +38,7 @@ class LLTransientFloater; */ class LLTransientFloaterMgr: public LLSingleton<LLTransientFloaterMgr> { -protected: - LLTransientFloaterMgr(); - friend class LLSingleton<LLTransientFloaterMgr>; + LLSINGLETON(LLTransientFloaterMgr); public: enum ETransientGroup diff --git a/indra/newview/lltwitterconnect.h b/indra/newview/lltwitterconnect.h index be481a17c1..e77048cc35 100644 --- a/indra/newview/lltwitterconnect.h +++ b/indra/newview/lltwitterconnect.h @@ -43,6 +43,7 @@ class LLEventPump; */ class LLTwitterConnect : public LLSingleton<LLTwitterConnect> { + LLSINGLETON(LLTwitterConnect); LOG_CLASS(LLTwitterConnect); public: enum EConnectionState @@ -81,10 +82,7 @@ public: void openTwitterWeb(std::string url); private: - friend class LLSingleton<LLTwitterConnect>; - LLTwitterConnect(); - ~LLTwitterConnect() {}; std::string getTwitterConnectURL(const std::string& route = "", bool include_read_from_master = false); EConnectionState mConnectionState; diff --git a/indra/newview/llviewerassettype.cpp b/indra/newview/llviewerassettype.cpp index 08ba5a5f25..ad0c1734f9 100644 --- a/indra/newview/llviewerassettype.cpp +++ b/indra/newview/llviewerassettype.cpp @@ -48,8 +48,7 @@ struct ViewerAssetEntry : public LLDictionaryEntry class LLViewerAssetDictionary : public LLSingleton<LLViewerAssetDictionary>, public LLDictionary<LLViewerAssetType::EType, ViewerAssetEntry> { -public: - LLViewerAssetDictionary(); + LLSINGLETON(LLViewerAssetDictionary); }; LLViewerAssetDictionary::LLViewerAssetDictionary() diff --git a/indra/newview/llviewerassetupload.cpp b/indra/newview/llviewerassetupload.cpp index 94f1b09fa9..49d29c0e4e 100644 --- a/indra/newview/llviewerassetupload.cpp +++ b/indra/newview/llviewerassetupload.cpp @@ -174,7 +174,7 @@ S32 LLResourceUploadInfo::getEconomyUploadCost() getAssetType() == LLAssetType::AT_ANIMATION || getAssetType() == LLAssetType::AT_MESH) { - return LLGlobalEconomy::Singleton::instance().getPriceUpload(); + return LLGlobalEconomy::instance().getPriceUpload(); } return 0; @@ -307,10 +307,9 @@ void LLResourceUploadInfo::assignDefaults() mDescription = "(No Description)"; } - mFolderId = gInventory.findCategoryUUIDForType( + mFolderId = gInventory.findUserDefinedCategoryUUIDForType( (mDestinationFolderType == LLFolderType::FT_NONE) ? (LLFolderType::EType)mAssetType : mDestinationFolderType); - } std::string LLResourceUploadInfo::getDisplayName() const @@ -824,8 +823,15 @@ void LLViewerAssetUpload::HandleUploadError(LLCore::HttpStatus status, LLSD &res } LLSD args; - args["FILE"] = uploadInfo->getDisplayName(); - args["REASON"] = reason; + if(label == "ErrorMessage") + { + args["ERROR_MESSAGE"] = reason; + } + else + { + args["FILE"] = uploadInfo->getDisplayName(); + args["REASON"] = reason; + } LLNotificationsUtil::add(label, args); diff --git a/indra/newview/llvieweraudio.h b/indra/newview/llvieweraudio.h index 8c302c6549..16f9b63113 100644 --- a/indra/newview/llvieweraudio.h +++ b/indra/newview/llvieweraudio.h @@ -43,6 +43,9 @@ void audio_update_wind(bool force_update = true); class LLViewerAudio : public LLSingleton<LLViewerAudio> { + LLSINGLETON(LLViewerAudio); + virtual ~LLViewerAudio(); + public: enum EFadeState @@ -52,9 +55,6 @@ public: FADE_OUT, }; - LLViewerAudio(); - virtual ~LLViewerAudio(); - void startInternetStreamWithAutoFade(std::string streamURI); void stopInternetStreamWithAutoFade(); diff --git a/indra/newview/llviewercamera.h b/indra/newview/llviewercamera.h index 7b2887d725..f8c973690a 100644 --- a/indra/newview/llviewercamera.h +++ b/indra/newview/llviewercamera.h @@ -54,6 +54,7 @@ extern template class LLViewerCamera* LLSingleton<class LLViewerCamera>::getInst LL_ALIGN_PREFIX(16) class LLViewerCamera : public LLCamera, public LLSingleton<LLViewerCamera> { + LLSINGLETON(LLViewerCamera); public: void* operator new(size_t size) { @@ -82,8 +83,6 @@ public: static eCameraID sCurCameraID; - LLViewerCamera(); - void updateCameraLocation(const LLVector3 ¢er, const LLVector3 &up_direction, const LLVector3 &point_of_interest); diff --git a/indra/newview/llviewercontrol.cpp b/indra/newview/llviewercontrol.cpp index db71849659..7c1921b143 100644 --- a/indra/newview/llviewercontrol.cpp +++ b/indra/newview/llviewercontrol.cpp @@ -507,7 +507,7 @@ bool handleVelocityInterpolate(const LLSD& newvalue) bool handleForceShowGrid(const LLSD& newvalue) { - LLPanelLogin::updateServer( ); + LLPanelLogin::updateLocationSelectorsVisibility(); return true; } diff --git a/indra/newview/llviewerfloaterreg.cpp b/indra/newview/llviewerfloaterreg.cpp index 6d13d28e18..ec7a81584a 100644 --- a/indra/newview/llviewerfloaterreg.cpp +++ b/indra/newview/llviewerfloaterreg.cpp @@ -77,7 +77,6 @@ #include "llfloaterimagepreview.h" #include "llfloaterimsession.h" #include "llfloaterinspect.h" -#include "llfloaterinventory.h" #include "llfloaterjoystick.h" #include "llfloaterlagmeter.h" #include "llfloaterland.h" @@ -93,6 +92,7 @@ #include "llfloaternotificationstabbed.h" #include "llfloaterobjectweights.h" #include "llfloateropenobject.h" +#include "llfloateroutfitphotopreview.h" #include "llfloateroutfitsnapshot.h" #include "llfloaterpathfindingcharacters.h" #include "llfloaterpathfindingconsole.h" @@ -277,6 +277,7 @@ void LLViewerFloaterReg::registerFloaters() LLFloaterReg::add("object_weights", "floater_object_weights.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLFloaterObjectWeights>); LLFloaterReg::add("openobject", "floater_openobject.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLFloaterOpenObject>); LLFloaterReg::add("outgoing_call", "floater_outgoing_call.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLOutgoingCallDialog>); + LLFloaterReg::add("outfit_photo_preview", "floater_outfit_photo_preview.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLFloaterOutfitPhotoPreview>); LLFloaterPayUtil::registerFloater(); LLFloaterReg::add("pathfinding_characters", "floater_pathfinding_characters.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLFloaterPathfindingCharacters>); diff --git a/indra/newview/llviewerfoldertype.cpp b/indra/newview/llviewerfoldertype.cpp index b8ff2cc9b4..9cb2e0336a 100644 --- a/indra/newview/llviewerfoldertype.cpp +++ b/indra/newview/llviewerfoldertype.cpp @@ -103,8 +103,7 @@ struct ViewerFolderEntry : public LLDictionaryEntry class LLViewerFolderDictionary : public LLSingleton<LLViewerFolderDictionary>, public LLDictionary<LLFolderType::EType, ViewerFolderEntry> { -public: - LLViewerFolderDictionary(); + LLSINGLETON(LLViewerFolderDictionary); protected: bool initEnsemblesFromFile(); // Reads in ensemble information from foldertypes.xml }; diff --git a/indra/newview/llviewerhelp.h b/indra/newview/llviewerhelp.h index a983012e2e..da50e07a43 100644 --- a/indra/newview/llviewerhelp.h +++ b/indra/newview/llviewerhelp.h @@ -39,7 +39,7 @@ class LLUICtrl; class LLViewerHelp : public LLHelp, public LLSingleton<LLViewerHelp> { - friend class LLSingleton<LLViewerHelp>; + LLSINGLETON_EMPTY_CTOR(LLViewerHelp); public: /// display the specified help topic in the help viewer diff --git a/indra/newview/llviewerinventory.cpp b/indra/newview/llviewerinventory.cpp index 0bbe9fa2c2..caffeadb73 100644 --- a/indra/newview/llviewerinventory.cpp +++ b/indra/newview/llviewerinventory.cpp @@ -49,7 +49,6 @@ #include "llinventorybridge.h" #include "llinventorypanel.h" -#include "llfloaterinventory.h" #include "lllandmarkactions.h" #include "llviewerassettype.h" @@ -94,107 +93,10 @@ void doInventoryCb(LLPointer<LLInventoryCallback> cb, LLUUID id) ///---------------------------------------------------------------------------- class LLLocalizedInventoryItemsDictionary : public LLSingleton<LLLocalizedInventoryItemsDictionary> { + LLSINGLETON(LLLocalizedInventoryItemsDictionary); public: std::map<std::string, std::string> mInventoryItemsDict; - LLLocalizedInventoryItemsDictionary() - { - mInventoryItemsDict["New Shape"] = LLTrans::getString("New Shape"); - mInventoryItemsDict["New Skin"] = LLTrans::getString("New Skin"); - mInventoryItemsDict["New Hair"] = LLTrans::getString("New Hair"); - mInventoryItemsDict["New Eyes"] = LLTrans::getString("New Eyes"); - mInventoryItemsDict["New Shirt"] = LLTrans::getString("New Shirt"); - mInventoryItemsDict["New Pants"] = LLTrans::getString("New Pants"); - mInventoryItemsDict["New Shoes"] = LLTrans::getString("New Shoes"); - mInventoryItemsDict["New Socks"] = LLTrans::getString("New Socks"); - mInventoryItemsDict["New Jacket"] = LLTrans::getString("New Jacket"); - mInventoryItemsDict["New Gloves"] = LLTrans::getString("New Gloves"); - mInventoryItemsDict["New Undershirt"] = LLTrans::getString("New Undershirt"); - mInventoryItemsDict["New Underpants"] = LLTrans::getString("New Underpants"); - mInventoryItemsDict["New Skirt"] = LLTrans::getString("New Skirt"); - mInventoryItemsDict["New Alpha"] = LLTrans::getString("New Alpha"); - mInventoryItemsDict["New Tattoo"] = LLTrans::getString("New Tattoo"); - mInventoryItemsDict["New Physics"] = LLTrans::getString("New Physics"); - mInventoryItemsDict["Invalid Wearable"] = LLTrans::getString("Invalid Wearable"); - - mInventoryItemsDict["New Gesture"] = LLTrans::getString("New Gesture"); - mInventoryItemsDict["New Script"] = LLTrans::getString("New Script"); - mInventoryItemsDict["New Folder"] = LLTrans::getString("New Folder"); - mInventoryItemsDict["New Note"] = LLTrans::getString("New Note"); - mInventoryItemsDict["Contents"] = LLTrans::getString("Contents"); - - mInventoryItemsDict["Gesture"] = LLTrans::getString("Gesture"); - mInventoryItemsDict["Male Gestures"] = LLTrans::getString("Male Gestures"); - mInventoryItemsDict["Female Gestures"] = LLTrans::getString("Female Gestures"); - mInventoryItemsDict["Other Gestures"] = LLTrans::getString("Other Gestures"); - mInventoryItemsDict["Speech Gestures"] = LLTrans::getString("Speech Gestures"); - mInventoryItemsDict["Common Gestures"] = LLTrans::getString("Common Gestures"); - - //predefined gestures - - //male - mInventoryItemsDict["Male - Excuse me"] = LLTrans::getString("Male - Excuse me"); - mInventoryItemsDict["Male - Get lost"] = LLTrans::getString("Male - Get lost"); // double space after Male. EXT-8319 - mInventoryItemsDict["Male - Blow kiss"] = LLTrans::getString("Male - Blow kiss"); - mInventoryItemsDict["Male - Boo"] = LLTrans::getString("Male - Boo"); - mInventoryItemsDict["Male - Bored"] = LLTrans::getString("Male - Bored"); - mInventoryItemsDict["Male - Hey"] = LLTrans::getString("Male - Hey"); - mInventoryItemsDict["Male - Laugh"] = LLTrans::getString("Male - Laugh"); - mInventoryItemsDict["Male - Repulsed"] = LLTrans::getString("Male - Repulsed"); - mInventoryItemsDict["Male - Shrug"] = LLTrans::getString("Male - Shrug"); - mInventoryItemsDict["Male - Stick tougue out"] = LLTrans::getString("Male - Stick tougue out"); - mInventoryItemsDict["Male - Wow"] = LLTrans::getString("Male - Wow"); - - //female - mInventoryItemsDict["Female - Chuckle"] = LLTrans::getString("Female - Chuckle"); - mInventoryItemsDict["Female - Cry"] = LLTrans::getString("Female - Cry"); - mInventoryItemsDict["Female - Embarrassed"] = LLTrans::getString("Female - Embarrassed"); - mInventoryItemsDict["Female - Excuse me"] = LLTrans::getString("Female - Excuse me"); - mInventoryItemsDict["Female - Get lost"] = LLTrans::getString("Female - Get lost"); // double space after Female. EXT-8319 - mInventoryItemsDict["Female - Blow kiss"] = LLTrans::getString("Female - Blow kiss"); - mInventoryItemsDict["Female - Boo"] = LLTrans::getString("Female - Boo"); - mInventoryItemsDict["Female - Bored"] = LLTrans::getString("Female - Bored"); - mInventoryItemsDict["Female - Hey"] = LLTrans::getString("Female - Hey"); - mInventoryItemsDict["Female - Hey baby"] = LLTrans::getString("Female - Hey baby"); - mInventoryItemsDict["Female - Laugh"] = LLTrans::getString("Female - Laugh"); - mInventoryItemsDict["Female - Looking good"] = LLTrans::getString("Female - Looking good"); - mInventoryItemsDict["Female - Over here"] = LLTrans::getString("Female - Over here"); - mInventoryItemsDict["Female - Please"] = LLTrans::getString("Female - Please"); - mInventoryItemsDict["Female - Repulsed"] = LLTrans::getString("Female - Repulsed"); - mInventoryItemsDict["Female - Shrug"] = LLTrans::getString("Female - Shrug"); - mInventoryItemsDict["Female - Stick tougue out"]= LLTrans::getString("Female - Stick tougue out"); - mInventoryItemsDict["Female - Wow"] = LLTrans::getString("Female - Wow"); - - //common - mInventoryItemsDict["/bow"] = LLTrans::getString("/bow"); - mInventoryItemsDict["/clap"] = LLTrans::getString("/clap"); - mInventoryItemsDict["/count"] = LLTrans::getString("/count"); - mInventoryItemsDict["/extinguish"] = LLTrans::getString("/extinguish"); - mInventoryItemsDict["/kmb"] = LLTrans::getString("/kmb"); - mInventoryItemsDict["/muscle"] = LLTrans::getString("/muscle"); - mInventoryItemsDict["/no"] = LLTrans::getString("/no"); - mInventoryItemsDict["/no!"] = LLTrans::getString("/no!"); - mInventoryItemsDict["/paper"] = LLTrans::getString("/paper"); - mInventoryItemsDict["/pointme"] = LLTrans::getString("/pointme"); - mInventoryItemsDict["/pointyou"] = LLTrans::getString("/pointyou"); - mInventoryItemsDict["/rock"] = LLTrans::getString("/rock"); - mInventoryItemsDict["/scissor"] = LLTrans::getString("/scissor"); - mInventoryItemsDict["/smoke"] = LLTrans::getString("/smoke"); - mInventoryItemsDict["/stretch"] = LLTrans::getString("/stretch"); - mInventoryItemsDict["/whistle"] = LLTrans::getString("/whistle"); - mInventoryItemsDict["/yes"] = LLTrans::getString("/yes"); - mInventoryItemsDict["/yes!"] = LLTrans::getString("/yes!"); - mInventoryItemsDict["afk"] = LLTrans::getString("afk"); - mInventoryItemsDict["dance1"] = LLTrans::getString("dance1"); - mInventoryItemsDict["dance2"] = LLTrans::getString("dance2"); - mInventoryItemsDict["dance3"] = LLTrans::getString("dance3"); - mInventoryItemsDict["dance4"] = LLTrans::getString("dance4"); - mInventoryItemsDict["dance5"] = LLTrans::getString("dance5"); - mInventoryItemsDict["dance6"] = LLTrans::getString("dance6"); - mInventoryItemsDict["dance7"] = LLTrans::getString("dance7"); - mInventoryItemsDict["dance8"] = LLTrans::getString("dance8"); - } - /** * Finds passed name in dictionary and replaces it with found localized value. * @@ -217,6 +119,103 @@ public: } }; +LLLocalizedInventoryItemsDictionary::LLLocalizedInventoryItemsDictionary() +{ + mInventoryItemsDict["New Shape"] = LLTrans::getString("New Shape"); + mInventoryItemsDict["New Skin"] = LLTrans::getString("New Skin"); + mInventoryItemsDict["New Hair"] = LLTrans::getString("New Hair"); + mInventoryItemsDict["New Eyes"] = LLTrans::getString("New Eyes"); + mInventoryItemsDict["New Shirt"] = LLTrans::getString("New Shirt"); + mInventoryItemsDict["New Pants"] = LLTrans::getString("New Pants"); + mInventoryItemsDict["New Shoes"] = LLTrans::getString("New Shoes"); + mInventoryItemsDict["New Socks"] = LLTrans::getString("New Socks"); + mInventoryItemsDict["New Jacket"] = LLTrans::getString("New Jacket"); + mInventoryItemsDict["New Gloves"] = LLTrans::getString("New Gloves"); + mInventoryItemsDict["New Undershirt"] = LLTrans::getString("New Undershirt"); + mInventoryItemsDict["New Underpants"] = LLTrans::getString("New Underpants"); + mInventoryItemsDict["New Skirt"] = LLTrans::getString("New Skirt"); + mInventoryItemsDict["New Alpha"] = LLTrans::getString("New Alpha"); + mInventoryItemsDict["New Tattoo"] = LLTrans::getString("New Tattoo"); + mInventoryItemsDict["New Physics"] = LLTrans::getString("New Physics"); + mInventoryItemsDict["Invalid Wearable"] = LLTrans::getString("Invalid Wearable"); + + mInventoryItemsDict["New Gesture"] = LLTrans::getString("New Gesture"); + mInventoryItemsDict["New Script"] = LLTrans::getString("New Script"); + mInventoryItemsDict["New Folder"] = LLTrans::getString("New Folder"); + mInventoryItemsDict["New Note"] = LLTrans::getString("New Note"); + mInventoryItemsDict["Contents"] = LLTrans::getString("Contents"); + + mInventoryItemsDict["Gesture"] = LLTrans::getString("Gesture"); + mInventoryItemsDict["Male Gestures"] = LLTrans::getString("Male Gestures"); + mInventoryItemsDict["Female Gestures"] = LLTrans::getString("Female Gestures"); + mInventoryItemsDict["Other Gestures"] = LLTrans::getString("Other Gestures"); + mInventoryItemsDict["Speech Gestures"] = LLTrans::getString("Speech Gestures"); + mInventoryItemsDict["Common Gestures"] = LLTrans::getString("Common Gestures"); + + //predefined gestures + + //male + mInventoryItemsDict["Male - Excuse me"] = LLTrans::getString("Male - Excuse me"); + mInventoryItemsDict["Male - Get lost"] = LLTrans::getString("Male - Get lost"); // double space after Male. EXT-8319 + mInventoryItemsDict["Male - Blow kiss"] = LLTrans::getString("Male - Blow kiss"); + mInventoryItemsDict["Male - Boo"] = LLTrans::getString("Male - Boo"); + mInventoryItemsDict["Male - Bored"] = LLTrans::getString("Male - Bored"); + mInventoryItemsDict["Male - Hey"] = LLTrans::getString("Male - Hey"); + mInventoryItemsDict["Male - Laugh"] = LLTrans::getString("Male - Laugh"); + mInventoryItemsDict["Male - Repulsed"] = LLTrans::getString("Male - Repulsed"); + mInventoryItemsDict["Male - Shrug"] = LLTrans::getString("Male - Shrug"); + mInventoryItemsDict["Male - Stick tougue out"] = LLTrans::getString("Male - Stick tougue out"); + mInventoryItemsDict["Male - Wow"] = LLTrans::getString("Male - Wow"); + + //female + mInventoryItemsDict["Female - Chuckle"] = LLTrans::getString("Female - Chuckle"); + mInventoryItemsDict["Female - Cry"] = LLTrans::getString("Female - Cry"); + mInventoryItemsDict["Female - Embarrassed"] = LLTrans::getString("Female - Embarrassed"); + mInventoryItemsDict["Female - Excuse me"] = LLTrans::getString("Female - Excuse me"); + mInventoryItemsDict["Female - Get lost"] = LLTrans::getString("Female - Get lost"); // double space after Female. EXT-8319 + mInventoryItemsDict["Female - Blow kiss"] = LLTrans::getString("Female - Blow kiss"); + mInventoryItemsDict["Female - Boo"] = LLTrans::getString("Female - Boo"); + mInventoryItemsDict["Female - Bored"] = LLTrans::getString("Female - Bored"); + mInventoryItemsDict["Female - Hey"] = LLTrans::getString("Female - Hey"); + mInventoryItemsDict["Female - Hey baby"] = LLTrans::getString("Female - Hey baby"); + mInventoryItemsDict["Female - Laugh"] = LLTrans::getString("Female - Laugh"); + mInventoryItemsDict["Female - Looking good"] = LLTrans::getString("Female - Looking good"); + mInventoryItemsDict["Female - Over here"] = LLTrans::getString("Female - Over here"); + mInventoryItemsDict["Female - Please"] = LLTrans::getString("Female - Please"); + mInventoryItemsDict["Female - Repulsed"] = LLTrans::getString("Female - Repulsed"); + mInventoryItemsDict["Female - Shrug"] = LLTrans::getString("Female - Shrug"); + mInventoryItemsDict["Female - Stick tougue out"]= LLTrans::getString("Female - Stick tougue out"); + mInventoryItemsDict["Female - Wow"] = LLTrans::getString("Female - Wow"); + + //common + mInventoryItemsDict["/bow"] = LLTrans::getString("/bow"); + mInventoryItemsDict["/clap"] = LLTrans::getString("/clap"); + mInventoryItemsDict["/count"] = LLTrans::getString("/count"); + mInventoryItemsDict["/extinguish"] = LLTrans::getString("/extinguish"); + mInventoryItemsDict["/kmb"] = LLTrans::getString("/kmb"); + mInventoryItemsDict["/muscle"] = LLTrans::getString("/muscle"); + mInventoryItemsDict["/no"] = LLTrans::getString("/no"); + mInventoryItemsDict["/no!"] = LLTrans::getString("/no!"); + mInventoryItemsDict["/paper"] = LLTrans::getString("/paper"); + mInventoryItemsDict["/pointme"] = LLTrans::getString("/pointme"); + mInventoryItemsDict["/pointyou"] = LLTrans::getString("/pointyou"); + mInventoryItemsDict["/rock"] = LLTrans::getString("/rock"); + mInventoryItemsDict["/scissor"] = LLTrans::getString("/scissor"); + mInventoryItemsDict["/smoke"] = LLTrans::getString("/smoke"); + mInventoryItemsDict["/stretch"] = LLTrans::getString("/stretch"); + mInventoryItemsDict["/whistle"] = LLTrans::getString("/whistle"); + mInventoryItemsDict["/yes"] = LLTrans::getString("/yes"); + mInventoryItemsDict["/yes!"] = LLTrans::getString("/yes!"); + mInventoryItemsDict["afk"] = LLTrans::getString("afk"); + mInventoryItemsDict["dance1"] = LLTrans::getString("dance1"); + mInventoryItemsDict["dance2"] = LLTrans::getString("dance2"); + mInventoryItemsDict["dance3"] = LLTrans::getString("dance3"); + mInventoryItemsDict["dance4"] = LLTrans::getString("dance4"); + mInventoryItemsDict["dance5"] = LLTrans::getString("dance5"); + mInventoryItemsDict["dance6"] = LLTrans::getString("dance6"); + mInventoryItemsDict["dance7"] = LLTrans::getString("dance7"); + mInventoryItemsDict["dance8"] = LLTrans::getString("dance8"); +} ///---------------------------------------------------------------------------- /// Local function declarations, constants, enums, and typedefs @@ -1303,12 +1302,18 @@ void update_inventory_item( if (updates.has("asset_id")) { updates.erase("asset_id"); - updates["hash_id"] = update_item->getTransactionID(); + if (update_item->getTransactionID().notNull()) + { + updates["hash_id"] = update_item->getTransactionID(); + } } if (updates.has("shadow_id")) { updates.erase("shadow_id"); - updates["hash_id"] = update_item->getTransactionID(); + if (update_item->getTransactionID().notNull()) + { + updates["hash_id"] = update_item->getTransactionID(); + } } AISAPI::completion_t cr = boost::bind(&doInventoryCb, cb, _1); AISAPI::UpdateItem(item_id, updates, cr); diff --git a/indra/newview/llviewerinventory.h b/indra/newview/llviewerinventory.h index 5194679a0c..074d51b8b3 100644 --- a/indra/newview/llviewerinventory.h +++ b/indra/newview/llviewerinventory.h @@ -30,7 +30,7 @@ #include "llinventory.h" #include "llframetimer.h" #include "llwearable.h" -#include "llui.h" //for LLDestroyClass +#include "llinitdestroyclass.h" //for LLDestroyClass #include <boost/signals2.hpp> // boost::signals2::trackable diff --git a/indra/newview/llviewerjoystick.h b/indra/newview/llviewerjoystick.h index 80c758a5af..016b435ee8 100644 --- a/indra/newview/llviewerjoystick.h +++ b/indra/newview/llviewerjoystick.h @@ -45,10 +45,10 @@ typedef enum e_joystick_driver_state class LLViewerJoystick : public LLSingleton<LLViewerJoystick> { -public: - LLViewerJoystick(); + LLSINGLETON(LLViewerJoystick); virtual ~LLViewerJoystick(); - + +public: void init(bool autoenable); void terminate(); diff --git a/indra/newview/llviewerkeyboard.cpp b/indra/newview/llviewerkeyboard.cpp index 2186ed3c52..fd4315a319 100644 --- a/indra/newview/llviewerkeyboard.cpp +++ b/indra/newview/llviewerkeyboard.cpp @@ -57,6 +57,7 @@ const F32 ORBIT_NUDGE_RATE = 0.05f; // fraction of normal speed struct LLKeyboardActionRegistry : public LLRegistrySingleton<std::string, boost::function<void (EKeystate keystate)>, LLKeyboardActionRegistry> { + LLSINGLETON_EMPTY_CTOR(LLKeyboardActionRegistry); }; LLViewerKeyboard gViewerKeyboard; diff --git a/indra/newview/llviewermedia.cpp b/indra/newview/llviewermedia.cpp index 78c4d98d55..9f05ee61bd 100644 --- a/indra/newview/llviewermedia.cpp +++ b/indra/newview/llviewermedia.cpp @@ -167,6 +167,7 @@ static bool sForceUpdate = false; static LLUUID sOnlyAudibleTextureID = LLUUID::null; static F64 sLowestLoadableImplInterest = 0.0f; static bool sAnyMediaShowing = false; +static bool sAnyMediaPlaying = false; static boost::signals2::connection sTeleportFinishConnection; static std::string sUpdatedCookies; static const char *PLUGIN_COOKIE_FILE_NAME = "plugin_cookies.txt"; @@ -606,6 +607,7 @@ void LLViewerMedia::updateMedia(void *dummy_arg) createSpareBrowserMediaSource(); sAnyMediaShowing = false; + sAnyMediaPlaying = false; sUpdatedCookies = getCookieStore()->getChangedCookies(); if(!sUpdatedCookies.empty()) { @@ -808,6 +810,12 @@ void LLViewerMedia::updateMedia(void *dummy_arg) sAnyMediaShowing = true; } + if (!pimpl->getUsedInUI() && pimpl->hasMedia() && (pimpl->isMediaPlaying() || !pimpl->isMediaTimeBased())) + { + // consider visible non-timebased media as playing + sAnyMediaPlaying = true; + } + } } @@ -858,6 +866,13 @@ bool LLViewerMedia::isAnyMediaShowing() ////////////////////////////////////////////////////////////////////////////////////////// // static +bool LLViewerMedia::isAnyMediaPlaying() +{ + return sAnyMediaPlaying; +} + +////////////////////////////////////////////////////////////////////////////////////////// +// static void LLViewerMedia::setAllMediaEnabled(bool val) { // Set "tentative" autoplay first. We need to do this here or else @@ -913,6 +928,77 @@ void LLViewerMedia::setAllMediaEnabled(bool val) ////////////////////////////////////////////////////////////////////////////////////////// // static +void LLViewerMedia::setAllMediaPaused(bool val) +{ + // Set "tentative" autoplay first. We need to do this here or else + // re-enabling won't start up the media below. + gSavedSettings.setBOOL("MediaTentativeAutoPlay", !val); + + // Then + impl_list::iterator iter = sViewerMediaImplList.begin(); + impl_list::iterator end = sViewerMediaImplList.end(); + + for (; iter != end; iter++) + { + LLViewerMediaImpl* pimpl = *iter; + if (!pimpl->getUsedInUI()) + { + // upause/pause time based media, enable/disable any other + if (!val) + { + pimpl->setDisabled(val); + if (pimpl->isMediaTimeBased() && pimpl->isMediaPaused()) + { + pimpl->play(); + } + } + else if (pimpl->isMediaTimeBased() && pimpl->mMediaSource && (pimpl->isMediaPlaying() || pimpl->isMediaPaused())) + { + pimpl->pause(); + } + else + { + pimpl->setDisabled(val); + } + } + } + + // Also do Parcel Media and Parcel Audio + if (!val) + { + if (!LLViewerMedia::isParcelMediaPlaying() && LLViewerMedia::hasParcelMedia()) + { + LLViewerParcelMedia::play(LLViewerParcelMgr::getInstance()->getAgentParcel()); + } + + if (gSavedSettings.getBOOL("AudioStreamingMusic") && + !LLViewerMedia::isParcelAudioPlaying() && + gAudiop && + LLViewerMedia::hasParcelAudio()) + { + if (LLAudioEngine::AUDIO_PAUSED == gAudiop->isInternetStreamPlaying()) + { + // 'false' means unpause + gAudiop->pauseInternetStream(false); + } + else + { + LLViewerAudio::getInstance()->startInternetStreamWithAutoFade(LLViewerMedia::getParcelAudioURL()); + } + } + } + else { + // This actually unloads the impl, as opposed to "stop"ping the media + LLViewerParcelMedia::stop(); + if (gAudiop) + { + LLViewerAudio::getInstance()->stopInternetStreamWithAutoFade(); + } + } +} + +////////////////////////////////////////////////////////////////////////////////////////// +// static bool LLViewerMedia::isParcelMediaPlaying() { return (LLViewerMedia::hasParcelMedia() && LLViewerParcelMedia::getParcelMedia() && LLViewerParcelMedia::getParcelMedia()->hasMedia()); @@ -1820,7 +1906,9 @@ LLPluginClassMedia* LLViewerMediaImpl::newSourceFromMediaType(std::string media_ } else if(LLFile::stat(plugin_name, &s)) { +#if !LL_LINUX LL_WARNS_ONCE("Media") << "Couldn't find plugin at " << plugin_name << LL_ENDL; +#endif } else { @@ -1862,8 +1950,10 @@ LLPluginClassMedia* LLViewerMediaImpl::newSourceFromMediaType(std::string media_ } } } - +#if !LL_LINUX LL_WARNS_ONCE("Plugin") << "plugin initialization failed for mime type: " << media_type << LL_ENDL; +#endif + if(gAgent.isInitialized()) { if (std::find(sMimeTypesFailed.begin(), sMimeTypesFailed.end(), media_type) == sMimeTypesFailed.end()) diff --git a/indra/newview/llviewermedia.h b/indra/newview/llviewermedia.h index 1fecf15fc9..0212bf88bf 100644 --- a/indra/newview/llviewermedia.h +++ b/indra/newview/llviewermedia.h @@ -105,9 +105,13 @@ public: // Is any media currently "showing"? Includes Parcel Media. Does not include media in the UI. static bool isAnyMediaShowing(); + // Shows if any media is playing, counts visible non time based media as playing. Does not include media in the UI. + static bool isAnyMediaPlaying(); // Set all media enabled or disabled, depending on val. Does not include media in the UI. static void setAllMediaEnabled(bool val); - + // Set all media paused(stopped for non time based) or playing, depending on val. Does not include media in the UI. + static void setAllMediaPaused(bool val); + static void updateMedia(void* dummy_arg = NULL); static void initClass(); diff --git a/indra/newview/llviewermediafocus.h b/indra/newview/llviewermediafocus.h index 0b2a64868e..368c671f84 100644 --- a/indra/newview/llviewermediafocus.h +++ b/indra/newview/llviewermediafocus.h @@ -41,10 +41,10 @@ class LLViewerMediaFocus : public LLFocusableElement, public LLSingleton<LLViewerMediaFocus> { -public: - LLViewerMediaFocus(); + LLSINGLETON(LLViewerMediaFocus); ~LLViewerMediaFocus(); - + +public: // Set/clear the face that has media focus (takes keyboard input and has the full set of controls) void setFocusFace(LLPointer<LLViewerObject> objectp, S32 face, viewer_media_t media_impl, LLVector3 pick_normal = LLVector3::zero); void clearFocus(); diff --git a/indra/newview/llviewermenu.cpp b/indra/newview/llviewermenu.cpp index 72579d4d7a..99b7a98abc 100644 --- a/indra/newview/llviewermenu.cpp +++ b/indra/newview/llviewermenu.cpp @@ -62,7 +62,6 @@ #include "llfloaterbuycontents.h" #include "llbuycurrencyhtml.h" #include "llfloatergodtools.h" -#include "llfloaterinventory.h" #include "llfloaterimcontainer.h" #include "llfloaterland.h" #include "llfloaterimnearbychat.h" @@ -80,6 +79,7 @@ #include "lllandmarkactions.h" #include "llgroupmgr.h" #include "lltooltip.h" +#include "lltoolface.h" #include "llhints.h" #include "llhudeffecttrail.h" #include "llhudmanager.h" @@ -89,6 +89,7 @@ #include "llinventoryfunctions.h" #include "llpanellogin.h" #include "llpanelblockedlist.h" +#include "llpanelmaininventory.h" #include "llmarketplacefunctions.h" #include "llmenuoptionpathfindingrebakenavmesh.h" #include "llmoveview.h" @@ -133,6 +134,7 @@ #include "llpathfindingmanager.h" #include "llstartup.h" #include "boost/unordered_map.hpp" +#include "llcleanup.h" using namespace LLAvatarAppearanceDefines; @@ -1211,14 +1213,15 @@ class LLAdvancedToggleWireframe : public view_listener_t bool handleEvent(const LLSD& userdata) { gUseWireframe = !(gUseWireframe); + gWindowResized = TRUE; + + LLPipeline::updateRenderDeferred(); if (gUseWireframe) { gInitialDeferredModeForWireframe = LLPipeline::sRenderDeferred; } - gWindowResized = TRUE; - LLPipeline::updateRenderDeferred(); gPipeline.resetVertexBuffers(); if (!gUseWireframe && !gInitialDeferredModeForWireframe && LLPipeline::sRenderDeferred != gInitialDeferredModeForWireframe && gPipeline.isInit()) @@ -5183,30 +5186,91 @@ class LLToolsEnableSelectNextPart : public view_listener_t { bool handleEvent(const LLSD& userdata) { - bool new_value = (gSavedSettings.getBOOL("EditLinkedParts") && - !LLSelectMgr::getInstance()->getSelection()->isEmpty()); + bool new_value = (!LLSelectMgr::getInstance()->getSelection()->isEmpty() + && (gSavedSettings.getBOOL("EditLinkedParts") + || LLToolFace::getInstance() == LLToolMgr::getInstance()->getCurrentTool())); return new_value; } }; -// Cycle selection through linked children in selected object. +// Cycle selection through linked children or/and faces in selected object. // FIXME: Order of children list is not always the same as sim's idea of link order. This may confuse // resis. Need link position added to sim messages to address this. -class LLToolsSelectNextPart : public view_listener_t +class LLToolsSelectNextPartFace : public view_listener_t { - bool handleEvent(const LLSD& userdata) - { + bool handleEvent(const LLSD& userdata) + { + bool cycle_faces = LLToolFace::getInstance() == LLToolMgr::getInstance()->getCurrentTool(); + bool cycle_linked = gSavedSettings.getBOOL("EditLinkedParts"); + + if (!cycle_faces && !cycle_linked) + { + // Nothing to do + return true; + } + + bool fwd = (userdata.asString() == "next"); + bool prev = (userdata.asString() == "previous"); + bool ifwd = (userdata.asString() == "includenext"); + bool iprev = (userdata.asString() == "includeprevious"); + + LLViewerObject* to_select = NULL; + bool restart_face_on_part = !cycle_faces; + S32 new_te = 0; + + if (cycle_faces) + { + // Cycle through faces of current selection, if end is reached, swithc to next part (if present) + LLSelectNode* nodep = LLSelectMgr::getInstance()->getSelection()->getFirstNode(); + if (!nodep) return false; + to_select = nodep->getObject(); + if (!to_select) return false; + + S32 te_count = to_select->getNumTEs(); + S32 selected_te = nodep->getLastOperatedTE(); + + if (fwd || ifwd) + { + if (selected_te < 0) + { + new_te = 0; + } + else if (selected_te + 1 < te_count) + { + // select next face + new_te = selected_te + 1; + } + else + { + // restart from first face on next part + restart_face_on_part = true; + } + } + else if (prev || iprev) + { + if (selected_te > te_count) + { + new_te = te_count - 1; + } + else if (selected_te - 1 >= 0) + { + // select previous face + new_te = selected_te - 1; + } + else + { + // restart from last face on next part + restart_face_on_part = true; + } + } + } + S32 object_count = LLSelectMgr::getInstance()->getSelection()->getObjectCount(); - if (gSavedSettings.getBOOL("EditLinkedParts") && object_count) + if (cycle_linked && object_count && restart_face_on_part) { LLViewerObject* selected = LLSelectMgr::getInstance()->getSelection()->getFirstObject(); if (selected && selected->getRootEdit()) { - bool fwd = (userdata.asString() == "next"); - bool prev = (userdata.asString() == "previous"); - bool ifwd = (userdata.asString() == "includenext"); - bool iprev = (userdata.asString() == "includeprevious"); - LLViewerObject* to_select = NULL; LLViewerObject::child_list_t children = selected->getRootEdit()->getChildren(); children.push_front(selected->getRootEdit()); // need root in the list too @@ -5248,22 +5312,40 @@ class LLToolsSelectNextPart : public view_listener_t } } } - - if (to_select) - { - if (gFocusMgr.childHasKeyboardFocus(gFloaterTools)) - { - gFocusMgr.setKeyboardFocus(NULL); // force edit toolbox to commit any changes - } - if (fwd || prev) - { - LLSelectMgr::getInstance()->deselectAll(); - } - LLSelectMgr::getInstance()->selectObjectOnly(to_select); - return true; - } } } + + if (to_select) + { + if (gFocusMgr.childHasKeyboardFocus(gFloaterTools)) + { + gFocusMgr.setKeyboardFocus(NULL); // force edit toolbox to commit any changes + } + if (fwd || prev) + { + LLSelectMgr::getInstance()->deselectAll(); + } + if (cycle_faces) + { + if (restart_face_on_part) + { + if (fwd || ifwd) + { + new_te = 0; + } + else + { + new_te = to_select->getNumTEs() - 1; + } + } + LLSelectMgr::getInstance()->addAsIndividual(to_select, new_te, FALSE); + } + else + { + LLSelectMgr::getInstance()->selectObjectOnly(to_select); + } + return true; + } return true; } }; @@ -8509,7 +8591,7 @@ class LLWorldPostProcess : public view_listener_t void handle_flush_name_caches() { - LLAvatarNameCache::cleanupClass(); + SUBSYSTEM_CLEANUP(LLAvatarNameCache); if (gCacheName) gCacheName->clear(); } @@ -8553,7 +8635,7 @@ class LLToggleUIHints : public view_listener_t void LLUploadCostCalculator::calculateCost() { - S32 upload_cost = LLGlobalEconomy::Singleton::getInstance()->getPriceUpload(); + S32 upload_cost = LLGlobalEconomy::getInstance()->getPriceUpload(); // getPriceUpload() returns -1 if no data available yet. if(upload_cost >= 0) @@ -8770,7 +8852,7 @@ void initialize_menus() view_listener_t::addMenu(new LLToolsEditLinkedParts(), "Tools.EditLinkedParts"); view_listener_t::addMenu(new LLToolsSnapObjectXY(), "Tools.SnapObjectXY"); view_listener_t::addMenu(new LLToolsUseSelectionForGrid(), "Tools.UseSelectionForGrid"); - view_listener_t::addMenu(new LLToolsSelectNextPart(), "Tools.SelectNextPart"); + view_listener_t::addMenu(new LLToolsSelectNextPartFace(), "Tools.SelectNextPart"); commit.add("Tools.Link", boost::bind(&LLSelectMgr::linkObjects, LLSelectMgr::getInstance())); commit.add("Tools.Unlink", boost::bind(&LLSelectMgr::unlinkObjects, LLSelectMgr::getInstance())); view_listener_t::addMenu(new LLToolsStopAllAnimations(), "Tools.StopAllAnimations"); @@ -9097,7 +9179,7 @@ void initialize_menus() view_listener_t::addMenu(new LLGoToObject(), "GoToObject"); commit.add("PayObject", boost::bind(&handle_give_money_dialog)); - commit.add("Inventory.NewWindow", boost::bind(&LLFloaterInventory::showAgentInventory)); + commit.add("Inventory.NewWindow", boost::bind(&LLPanelMainInventory::newWindow)); enable.add("EnablePayObject", boost::bind(&enable_pay_object)); enable.add("EnablePayAvatar", boost::bind(&enable_pay_avatar)); diff --git a/indra/newview/llviewermenufile.cpp b/indra/newview/llviewermenufile.cpp index b48b45502b..d46bb0199b 100644 --- a/indra/newview/llviewermenufile.cpp +++ b/indra/newview/llviewermenufile.cpp @@ -84,7 +84,7 @@ class LLFileEnableUpload : public view_listener_t bool handleEvent(const LLSD& userdata) { return true; -// bool new_value = gStatusBar && LLGlobalEconomy::Singleton::getInstance() && (gStatusBar->getBalance() >= LLGlobalEconomy::Singleton::getInstance()->getPriceUpload()); +// bool new_value = gStatusBar && LLGlobalEconomy::getInstance() && (gStatusBar->getBalance() >= LLGlobalEconomy::getInstance()->getPriceUpload()); // return new_value; } }; @@ -93,6 +93,12 @@ class LLFileEnableUploadModel : public view_listener_t { bool handleEvent(const LLSD& userdata) { + LLFloaterModelPreview* fmp = (LLFloaterModelPreview*) LLFloaterReg::findInstance("upload_model"); + if (fmp && fmp->isModelLoading()) + { + return false; + } + return true; } }; @@ -359,7 +365,7 @@ class LLFileUploadModel : public view_listener_t bool handleEvent(const LLSD& userdata) { LLFloaterModelPreview* fmp = (LLFloaterModelPreview*) LLFloaterReg::getInstance("upload_model"); - if (fmp) + if (fmp && !fmp->isModelLoading()) { fmp->loadModel(3); } @@ -423,7 +429,7 @@ class LLFileUploadBulk : public view_listener_t if (picker.getMultipleOpenFiles()) { std::string filename = picker.getFirstFile(); - S32 expected_upload_cost = LLGlobalEconomy::Singleton::getInstance()->getPriceUpload(); + S32 expected_upload_cost = LLGlobalEconomy::getInstance()->getPriceUpload(); while (!filename.empty()) { diff --git a/indra/newview/llviewermessage.cpp b/indra/newview/llviewermessage.cpp index f472db080f..d81cb804e4 100644 --- a/indra/newview/llviewermessage.cpp +++ b/indra/newview/llviewermessage.cpp @@ -5467,9 +5467,12 @@ static std::string reason_from_transaction_type(S32 transaction_type, case TRANS_CLASSIFIED_CHARGE: return LLTrans::getString("to publish a classified ad"); + case TRANS_GIFT: + // Simulator returns "Payment" if no custom description has been entered + return (item_desc == "Payment" ? std::string() : item_desc); + // These have no reason to display, but are expected and should not // generate warnings - case TRANS_GIFT: case TRANS_PAY_OBJECT: case TRANS_OBJECT_PAYS: return std::string(); @@ -5579,6 +5582,7 @@ static void process_money_balance_reply_extended(LLMessageSystem* msg) LLSD payload; bool you_paid_someone = (source_id == gAgentID); + std::string gift_suffix = (transaction_type == TRANS_GIFT ? "_gift" : ""); if (you_paid_someone) { if(!gSavedSettings.getBOOL("NotifyMoneySpend")) @@ -5592,8 +5596,8 @@ static void process_money_balance_reply_extended(LLMessageSystem* msg) { if (dest_id.notNull()) { - message = success ? LLTrans::getString("you_paid_ldollars", args) : - LLTrans::getString("you_paid_failure_ldollars", args); + message = success ? LLTrans::getString("you_paid_ldollars" + gift_suffix, args) : + LLTrans::getString("you_paid_failure_ldollars" + gift_suffix, args); } else { @@ -5620,7 +5624,8 @@ static void process_money_balance_reply_extended(LLMessageSystem* msg) payload["dest_id"] = dest_id; notification = success ? "PaymentSent" : "PaymentFailure"; } - else { + else + { // ...someone paid you if(!gSavedSettings.getBOOL("NotifyMoneyReceived")) { @@ -5631,9 +5636,10 @@ static void process_money_balance_reply_extended(LLMessageSystem* msg) name_id = source_id; if (!reason.empty()) { - message = LLTrans::getString("paid_you_ldollars", args); + message = LLTrans::getString("paid_you_ldollars" + gift_suffix, args); } - else { + else + { message = LLTrans::getString("paid_you_ldollars_no_reason", args); } final_args["MESSAGE"] = message; @@ -6278,9 +6284,9 @@ void process_frozen_message(LLMessageSystem *msgsystem, void **user_data) // do some extra stuff once we get our economy data void process_economy_data(LLMessageSystem *msg, void** /*user_data*/) { - LLGlobalEconomy::processEconomyData(msg, LLGlobalEconomy::Singleton::getInstance()); + LLGlobalEconomy::processEconomyData(msg, LLGlobalEconomy::getInstance()); - S32 upload_cost = LLGlobalEconomy::Singleton::getInstance()->getPriceUpload(); + S32 upload_cost = LLGlobalEconomy::getInstance()->getPriceUpload(); LL_INFOS_ONCE("Messaging") << "EconomyData message arrived; upload cost is L$" << upload_cost << LL_ENDL; @@ -6385,6 +6391,16 @@ bool unknown_script_question_cb(const LLSD& notification, const LLSD& response) return false; } +void experiencePermissionBlock(LLUUID experience, LLSD result) +{ + LLSD permission; + LLSD data; + permission["permission"] = "Block"; + data[experience.asString()] = permission; + data["experience"] = experience; + LLEventPumps::instance().obtain("experience_permission").post(data); +} + bool script_question_cb(const LLSD& notification, const LLSD& response) { S32 option = LLNotificationsUtil::getSelectedOption(notification, response); @@ -6461,14 +6477,8 @@ bool script_question_cb(const LLSD& notification, const LLSD& response) if (!region) return false; - LLExperienceCache::instance().setExperiencePermission(experience, std::string("Block"), LLExperienceCache::ExperienceGetFn_t()); + LLExperienceCache::instance().setExperiencePermission(experience, std::string("Block"), boost::bind(&experiencePermissionBlock, experience, _1)); - LLSD permission; - LLSD data; - permission["permission"] = "Block"; - data[experience.asString()] = permission; - data["experience"] = experience; - LLEventPumps::instance().obtain("experience_permission").post(data); } } return false; diff --git a/indra/newview/llviewermessage.h b/indra/newview/llviewermessage.h index d8f5c71f8d..b0eaa37541 100644 --- a/indra/newview/llviewermessage.h +++ b/indra/newview/llviewermessage.h @@ -210,6 +210,7 @@ void set_dad_inbox_object(const LLUUID& object_id); class LLViewerMessage : public LLSingleton<LLViewerMessage> { + LLSINGLETON_EMPTY_CTOR(LLViewerMessage); public: typedef boost::function<void()> teleport_started_callback_t; typedef boost::signals2::signal<void()> teleport_started_signal_t; diff --git a/indra/newview/llviewernetwork.cpp b/indra/newview/llviewernetwork.cpp index 2525886222..6937d064f9 100644 --- a/indra/newview/llviewernetwork.cpp +++ b/indra/newview/llviewernetwork.cpp @@ -95,13 +95,6 @@ LLGridManager::LLGridManager() } -LLGridManager::LLGridManager(const std::string& grid_file) -{ - // initialize with an explicity grid file for testing. - LL_DEBUGS("GridManager")<<LL_ENDL; - initialize(grid_file); -} - // // LLGridManager - class for managing the list of known grids, and the current // selection diff --git a/indra/newview/llviewernetwork.h b/indra/newview/llviewernetwork.h index 228303d8e2..b8ff494b8b 100644 --- a/indra/newview/llviewernetwork.h +++ b/indra/newview/llviewernetwork.h @@ -58,16 +58,15 @@ protected: **/ class LLGridManager : public LLSingleton<LLGridManager> { + /// Instantiate the grid manager, load default grids, selects the default grid + LLSINGLETON(LLGridManager); + ~LLGridManager(); + public: /* ================================================================ * @name Initialization and Configuration * @{ */ - /// Instantiate the grid manager, load default grids, selects the default grid - LLGridManager(const std::string& grid_file); - LLGridManager(); - ~LLGridManager(); - /// add grids from an external grids file void initialize(const std::string& grid_file); diff --git a/indra/newview/llviewerobject.cpp b/indra/newview/llviewerobject.cpp index 4da26404e5..45dbd95bea 100644 --- a/indra/newview/llviewerobject.cpp +++ b/indra/newview/llviewerobject.cpp @@ -102,6 +102,7 @@ #include "llmediaentry.h" #include "llfloaterperms.h" #include "llvocache.h" +#include "llcleanup.h" //#define DEBUG_UPDATE_TYPE @@ -530,11 +531,11 @@ void LLViewerObject::initVOClasses() void LLViewerObject::cleanupVOClasses() { - LLVOGrass::cleanupClass(); - LLVOWater::cleanupClass(); - LLVOTree::cleanupClass(); - LLVOAvatar::cleanupClass(); - LLVOVolume::cleanupClass(); + SUBSYSTEM_CLEANUP(LLVOGrass); + SUBSYSTEM_CLEANUP(LLVOWater); + SUBSYSTEM_CLEANUP(LLVOTree); + SUBSYSTEM_CLEANUP(LLVOAvatar); + SUBSYSTEM_CLEANUP(LLVOVolume); sObjectDataMap.clear(); } diff --git a/indra/newview/llviewerparcelmgr.cpp b/indra/newview/llviewerparcelmgr.cpp index dddfb6745e..2a126c9f01 100644 --- a/indra/newview/llviewerparcelmgr.cpp +++ b/indra/newview/llviewerparcelmgr.cpp @@ -706,7 +706,7 @@ bool LLViewerParcelMgr::allowAgentScripts(const LLViewerRegion* region, const LL bool LLViewerParcelMgr::allowAgentDamage(const LLViewerRegion* region, const LLParcel* parcel) const { return (region && region->getAllowDamage()) - && (parcel && parcel->getAllowDamage()); + || (parcel && parcel->getAllowDamage()); } BOOL LLViewerParcelMgr::isOwnedAt(const LLVector3d& pos_global) const diff --git a/indra/newview/llviewerparcelmgr.h b/indra/newview/llviewerparcelmgr.h index bb6bbf3308..29219843c9 100644 --- a/indra/newview/llviewerparcelmgr.h +++ b/indra/newview/llviewerparcelmgr.h @@ -75,6 +75,8 @@ public: class LLViewerParcelMgr : public LLSingleton<LLViewerParcelMgr> { + LLSINGLETON(LLViewerParcelMgr); + ~LLViewerParcelMgr(); public: typedef boost::function<void (const LLVector3d&, const bool& local)> teleport_finished_callback_t; @@ -82,9 +84,6 @@ public: typedef boost::function<void()> teleport_failed_callback_t; typedef boost::signals2::signal<void()> teleport_failed_signal_t; - LLViewerParcelMgr(); - ~LLViewerParcelMgr(); - static void cleanupGlobals(); BOOL selectionEmpty() const; diff --git a/indra/newview/llviewerpartsim.h b/indra/newview/llviewerpartsim.h index 40e8e1d45d..ab1cd715ab 100644 --- a/indra/newview/llviewerpartsim.h +++ b/indra/newview/llviewerpartsim.h @@ -135,9 +135,8 @@ protected: class LLViewerPartSim : public LLSingleton<LLViewerPartSim> { + LLSINGLETON(LLViewerPartSim); public: - LLViewerPartSim(); - virtual ~LLViewerPartSim(){} void destroyClass(); typedef std::vector<LLViewerPartGroup *> group_list_t; diff --git a/indra/newview/llviewerstats.h b/indra/newview/llviewerstats.h index 7843652589..97a060d95e 100644 --- a/indra/newview/llviewerstats.h +++ b/indra/newview/llviewerstats.h @@ -246,13 +246,11 @@ extern LLTrace::EventStatHandle<LLUnit<F32, LLUnits::Percent> > OBJECT_CACHE_HIT class LLViewerStats : public LLSingleton<LLViewerStats> { -public: - void resetStats(); + LLSINGLETON(LLViewerStats); + ~LLViewerStats(); public: - - LLViewerStats(); - ~LLViewerStats(); + void resetStats(); void updateFrameStats(const F64Seconds time_diff); diff --git a/indra/newview/llviewerstatsrecorder.h b/indra/newview/llviewerstatsrecorder.h index d1744f4910..c974bea49d 100644 --- a/indra/newview/llviewerstatsrecorder.h +++ b/indra/newview/llviewerstatsrecorder.h @@ -44,11 +44,11 @@ class LLViewerObject; class LLViewerStatsRecorder : public LLSingleton<LLViewerStatsRecorder> { - public: - LOG_CLASS(LLViewerStatsRecorder); - LLViewerStatsRecorder(); + LLSINGLETON(LLViewerStatsRecorder); + LOG_CLASS(LLViewerStatsRecorder); ~LLViewerStatsRecorder(); + public: void objectUpdateFailure(U32 local_id, const EObjectUpdateType update_type, S32 msg_size) { #if LL_RECORD_VIEWER_STATS diff --git a/indra/newview/llviewertexteditor.cpp b/indra/newview/llviewertexteditor.cpp index 09cdfe1309..9e09971ced 100644 --- a/indra/newview/llviewertexteditor.cpp +++ b/indra/newview/llviewertexteditor.cpp @@ -191,7 +191,7 @@ public: return false; } - /*virtual*/ S32 getNumChars(S32 num_pixels, S32 segment_offset, S32 line_offset, S32 max_chars) const + /*virtual*/ S32 getNumChars(S32 num_pixels, S32 segment_offset, S32 line_offset, S32 max_chars, S32 line_ind) const { // always draw at beginning of line if (line_offset == 0) @@ -1105,10 +1105,6 @@ BOOL LLViewerTextEditor::openEmbeddedItem(LLPointer<LLInventoryItem> item, llwch openEmbeddedSound( item, wc ); return TRUE; - case LLAssetType::AT_NOTECARD: - openEmbeddedNotecard( item, wc ); - return TRUE; - case LLAssetType::AT_LANDMARK: openEmbeddedLandmark( item, wc ); return TRUE; @@ -1117,6 +1113,7 @@ BOOL LLViewerTextEditor::openEmbeddedItem(LLPointer<LLInventoryItem> item, llwch openEmbeddedCallingcard( item, wc ); return TRUE; + case LLAssetType::AT_NOTECARD: case LLAssetType::AT_LSL_TEXT: case LLAssetType::AT_CLOTHING: case LLAssetType::AT_OBJECT: @@ -1182,11 +1179,6 @@ void LLViewerTextEditor::openEmbeddedLandmark( LLPointer<LLInventoryItem> item_p } } -void LLViewerTextEditor::openEmbeddedNotecard( LLInventoryItem* item, llwchar wc ) -{ - copyInventory(item, gInventoryCallbacks.registerCB(mInventoryCallback)); -} - void LLViewerTextEditor::openEmbeddedCallingcard( LLInventoryItem* item, llwchar wc ) { if(item && !item->getCreatorUUID().isNull()) diff --git a/indra/newview/llviewertexteditor.h b/indra/newview/llviewertexteditor.h index 477119d4f2..33cfca4f90 100644 --- a/indra/newview/llviewertexteditor.h +++ b/indra/newview/llviewertexteditor.h @@ -105,7 +105,6 @@ private: void openEmbeddedTexture( LLInventoryItem* item, llwchar wc ); void openEmbeddedSound( LLInventoryItem* item, llwchar wc ); void openEmbeddedLandmark( LLPointer<LLInventoryItem> item_ptr, llwchar wc ); - void openEmbeddedNotecard( LLInventoryItem* item, llwchar wc); void openEmbeddedCallingcard( LLInventoryItem* item, llwchar wc); void showCopyToInvDialog( LLInventoryItem* item, llwchar wc ); void showUnsavedAlertDialog( LLInventoryItem* item ); diff --git a/indra/newview/llviewertexture.cpp b/indra/newview/llviewertexture.cpp index 178aa1e646..3cef34445a 100644 --- a/indra/newview/llviewertexture.cpp +++ b/indra/newview/llviewertexture.cpp @@ -1419,11 +1419,17 @@ BOOL LLViewerFetchedTexture::createTexture(S32 usename/*= 0*/) destroyRawImage(); return FALSE; } - mNeedsCreateTexture = FALSE; + mNeedsCreateTexture = FALSE; if (mRawImage.isNull()) { LL_ERRS() << "LLViewerTexture trying to create texture with no Raw Image" << LL_ENDL; } + if (mRawImage->isBufferInvalid()) + { + LL_WARNS() << "Can't create a texture: invalid image data" << LL_ENDL; + destroyRawImage(); + return FALSE; + } // LL_INFOS() << llformat("IMAGE Creating (%d) [%d x %d] Bytes: %d ", // mRawDiscardLevel, // mRawImage->getWidth(), mRawImage->getHeight(),mRawImage->getDataSize()) diff --git a/indra/newview/llviewertexturelist.h b/indra/newview/llviewertexturelist.h index ba76770838..070544063a 100644 --- a/indra/newview/llviewertexturelist.h +++ b/indra/newview/llviewertexturelist.h @@ -237,6 +237,7 @@ private: class LLUIImageList : public LLImageProviderInterface, public LLSingleton<LLUIImageList> { + LLSINGLETON_EMPTY_CTOR(LLUIImageList); public: // LLImageProviderInterface /*virtual*/ LLPointer<LLUIImage> getUIImageByID(const LLUUID& id, S32 priority); diff --git a/indra/newview/llviewerwindow.cpp b/indra/newview/llviewerwindow.cpp index 9e68bb78e0..61505b7c07 100644 --- a/indra/newview/llviewerwindow.cpp +++ b/indra/newview/llviewerwindow.cpp @@ -208,6 +208,7 @@ #include "llwindowlistener.h" #include "llviewerwindowlistener.h" #include "llpaneltopinfobar.h" +#include "llcleanup.h" #if LL_WINDOWS #include <tchar.h> // For Unicode conversion methods @@ -292,13 +293,8 @@ public: class RecordToChatConsole : public LLSingleton<RecordToChatConsole> { + LLSINGLETON(RecordToChatConsole); public: - RecordToChatConsole() - : LLSingleton<RecordToChatConsole>(), - mRecorder(new RecordToChatConsoleRecorder()) - { - } - void startRecorder() { LLError::addRecorder(mRecorder); } void stopRecorder() { LLError::removeRecorder(mRecorder); } @@ -306,6 +302,11 @@ private: LLError::RecorderPtr mRecorder; }; +RecordToChatConsole::RecordToChatConsole(): + mRecorder(new RecordToChatConsoleRecorder()) +{ +} + //////////////////////////////////////////////////////////////////////////// // // LLDebugText @@ -1598,17 +1599,20 @@ BOOL LLViewerWindow::handleDeviceChange(LLWindow *window) return FALSE; } -void LLViewerWindow::handleDPIChanged(LLWindow *window, F32 ui_scale_factor, S32 window_width, S32 window_height) +BOOL LLViewerWindow::handleDPIChanged(LLWindow *window, F32 ui_scale_factor, S32 window_width, S32 window_height) { if (ui_scale_factor >= MIN_UI_SCALE && ui_scale_factor <= MAX_UI_SCALE) { + gSavedSettings.setF32("LastSystemUIScaleFactor", ui_scale_factor); gSavedSettings.setF32("UIScaleFactor", ui_scale_factor); LLViewerWindow::reshape(window_width, window_height); mResDirty = true; + return TRUE; } else { LL_WARNS() << "DPI change caused UI scale to go out of bounds: " << ui_scale_factor << LL_ENDL; + return FALSE; } } @@ -2176,10 +2180,7 @@ void LLViewerWindow::shutdownViews() // destroy the nav bar, not currently part of gViewerWindow // *TODO: Make LLNavigationBar part of gViewerWindow - if (LLNavigationBar::instanceExists()) - { - delete LLNavigationBar::getInstance(); - } + LLNavigationBar::deleteSingleton(); LL_INFOS() << "LLNavigationBar destroyed." << LL_ENDL ; // destroy menus after instantiating navbar above, as it needs @@ -2215,7 +2216,7 @@ void LLViewerWindow::shutdownGL() // Shutdown GL cleanly. Order is very important here. //-------------------------------------------------------- LLFontGL::destroyDefaultFonts(); - LLFontManager::cleanupClass(); + SUBSYSTEM_CLEANUP(LLFontManager); stop_glerror(); gSky.cleanup(); @@ -2238,7 +2239,7 @@ void LLViewerWindow::shutdownGL() LLWorldMapView::cleanupTextures(); LLViewerTextureManager::cleanup() ; - LLImageGL::cleanupClass() ; + SUBSYSTEM_CLEANUP(LLImageGL) ; LL_INFOS() << "All textures and llimagegl images are destroyed!" << LL_ENDL ; @@ -2251,7 +2252,7 @@ void LLViewerWindow::shutdownGL() gGL.shutdown(); - LLVertexBuffer::cleanupClass(); + SUBSYSTEM_CLEANUP(LLVertexBuffer); LL_INFOS() << "LLVertexBuffer cleaned." << LL_ENDL ; } diff --git a/indra/newview/llviewerwindow.h b/indra/newview/llviewerwindow.h index 72b7370621..a134dfaaa9 100644 --- a/indra/newview/llviewerwindow.h +++ b/indra/newview/llviewerwindow.h @@ -211,7 +211,7 @@ public: /*virtual*/ void handleDataCopy(LLWindow *window, S32 data_type, void *data); /*virtual*/ BOOL handleTimerEvent(LLWindow *window); /*virtual*/ BOOL handleDeviceChange(LLWindow *window); - /*virtual*/ void handleDPIChanged(LLWindow *window, F32 ui_scale_factor, S32 window_width, S32 window_height); + /*virtual*/ BOOL handleDPIChanged(LLWindow *window, F32 ui_scale_factor, S32 window_width, S32 window_height); /*virtual*/ void handlePingWatchdog(LLWindow *window, const char * msg); /*virtual*/ void handlePauseWatchdog(LLWindow *window); diff --git a/indra/newview/llvocache.h b/indra/newview/llvocache.h index 082f5f0b1d..7aabde1b2d 100644 --- a/indra/newview/llvocache.h +++ b/indra/newview/llvocache.h @@ -223,6 +223,9 @@ private: // class LLVOCache : public LLSingleton<LLVOCache> { + LLSINGLETON(LLVOCache); + ~LLVOCache() ; + private: struct HeaderEntryInfo { @@ -253,13 +256,8 @@ private: }; typedef std::set<HeaderEntryInfo*, header_entry_less> header_entry_queue_t; typedef std::map<U64, HeaderEntryInfo*> handle_entry_map_t; -private: - friend class LLSingleton<LLVOCache>; - LLVOCache() ; public: - ~LLVOCache() ; - void initCache(ELLPath location, U32 size, U32 cache_version) ; void removeCache(ELLPath location, bool started = false) ; diff --git a/indra/newview/llvoicechannel.h b/indra/newview/llvoicechannel.h index ef15b2c79e..309c3eebdd 100644 --- a/indra/newview/llvoicechannel.h +++ b/indra/newview/llvoicechannel.h @@ -167,8 +167,8 @@ private: class LLVoiceChannelProximal : public LLVoiceChannel, public LLSingleton<LLVoiceChannelProximal> { + LLSINGLETON(LLVoiceChannelProximal); public: - LLVoiceChannelProximal(); /*virtual*/ void onChange(EStatusType status, const std::string &channelURI, bool proximal); /*virtual*/ void handleStatusChange(EStatusType status); diff --git a/indra/newview/llvoiceclient.h b/indra/newview/llvoiceclient.h index b05bcb23b7..32637dcf42 100644 --- a/indra/newview/llvoiceclient.h +++ b/indra/newview/llvoiceclient.h @@ -299,11 +299,11 @@ public: class LLVoiceClient: public LLSingleton<LLVoiceClient> { + LLSINGLETON(LLVoiceClient); LOG_CLASS(LLVoiceClient); -public: - LLVoiceClient(); ~LLVoiceClient(); +public: typedef boost::signals2::signal<void(void)> micro_changed_signal_t; micro_changed_signal_t mMicroChangedSignal; @@ -485,6 +485,8 @@ protected: **/ class LLSpeakerVolumeStorage : public LLSingleton<LLSpeakerVolumeStorage> { + LLSINGLETON(LLSpeakerVolumeStorage); + ~LLSpeakerVolumeStorage(); LOG_CLASS(LLSpeakerVolumeStorage); public: @@ -513,10 +515,6 @@ public: void removeSpeakerVolume(const LLUUID& speaker_id); private: - friend class LLSingleton<LLSpeakerVolumeStorage>; - LLSpeakerVolumeStorage(); - ~LLSpeakerVolumeStorage(); - const static std::string SETTINGS_FILE_NAME; void load(); diff --git a/indra/newview/llvoicevivox.h b/indra/newview/llvoicevivox.h index f32c7c975f..81e924e438 100644 --- a/indra/newview/llvoicevivox.h +++ b/indra/newview/llvoicevivox.h @@ -56,12 +56,11 @@ class LLVivoxVoiceClient : public LLSingleton<LLVivoxVoiceClient>, virtual public LLVoiceModuleInterface, virtual public LLVoiceEffectInterface { + LLSINGLETON(LLVivoxVoiceClient); LOG_CLASS(LLVivoxVoiceClient); -public: - LLVivoxVoiceClient(); virtual ~LLVivoxVoiceClient(); - - + +public: /// @name LLVoiceModuleInterface virtual implementations /// @see LLVoiceModuleInterface //@{ @@ -1027,10 +1026,10 @@ protected: class LLVivoxSecurity : public LLSingleton<LLVivoxSecurity> { - public: - LLVivoxSecurity(); - virtual ~LLVivoxSecurity(); + LLSINGLETON(LLVivoxSecurity); + virtual ~LLVivoxSecurity(); + public: std::string connectorHandle() { return mConnectorHandle; }; std::string accountHandle() { return mAccountHandle; }; diff --git a/indra/newview/llvovolume.cpp b/indra/newview/llvovolume.cpp index 657babd92c..098996147f 100644 --- a/indra/newview/llvovolume.cpp +++ b/indra/newview/llvovolume.cpp @@ -81,6 +81,8 @@ const F32 FORCE_SIMPLE_RENDER_AREA = 512.f; const F32 FORCE_CULL_AREA = 8.f; +const F32 MIN_RENDER_COMPLEXITY = 0.f; +const F32 MAX_RENDER_COMPLEXITY = 1.0e6f; U32 JOINT_COUNT_REQUIRED_FOR_FULLRIG = 1; BOOL gAnimateTextures = TRUE; @@ -3615,6 +3617,8 @@ U32 LLVOVolume::getRenderCost(texture_cost_t &textures) const shame += media_faces * ARC_MEDIA_FACE_COST; } + shame = llclamp(shame, MIN_RENDER_COMPLEXITY, MAX_RENDER_COMPLEXITY); + if (shame > mRenderComplexity_current) { mRenderComplexity_current = (S32)shame; diff --git a/indra/newview/llvowlsky.cpp b/indra/newview/llvowlsky.cpp index 90bc6509a6..16130b5ca7 100644 --- a/indra/newview/llvowlsky.cpp +++ b/indra/newview/llvowlsky.cpp @@ -810,18 +810,18 @@ BOOL LLVOWLSky::updateStarGeometry(LLDrawable *drawable) up *= sc; *(verticesp++) = mStarVertices[vtx]; - *(verticesp++) = mStarVertices[vtx]+left; + *(verticesp++) = mStarVertices[vtx]+up; *(verticesp++) = mStarVertices[vtx]+left+up; - *(verticesp++) = mStarVertices[vtx]+left; + *(verticesp++) = mStarVertices[vtx]; *(verticesp++) = mStarVertices[vtx]+left+up; - *(verticesp++) = mStarVertices[vtx]+up; + *(verticesp++) = mStarVertices[vtx]+left; - *(texcoordsp++) = LLVector2(0,0); - *(texcoordsp++) = LLVector2(0,1); + *(texcoordsp++) = LLVector2(1,0); *(texcoordsp++) = LLVector2(1,1); *(texcoordsp++) = LLVector2(0,1); - *(texcoordsp++) = LLVector2(1,1); *(texcoordsp++) = LLVector2(1,0); + *(texcoordsp++) = LLVector2(0,1); + *(texcoordsp++) = LLVector2(0,0); *(colorsp++) = LLColor4U(mStarColors[vtx]); *(colorsp++) = LLColor4U(mStarColors[vtx]); diff --git a/indra/newview/llwatchdog.h b/indra/newview/llwatchdog.h index fee3ec6f20..9a6624258e 100644 --- a/indra/newview/llwatchdog.h +++ b/indra/newview/llwatchdog.h @@ -75,10 +75,10 @@ private: class LLWatchdogTimerThread; // Defined in the cpp class LLWatchdog : public LLSingleton<LLWatchdog> { -public: - LLWatchdog(); + LLSINGLETON(LLWatchdog); ~LLWatchdog(); +public: // Add an entry to the watchdog. void add(LLWatchdogEntry* e); void remove(LLWatchdogEntry* e); diff --git a/indra/newview/llwaterparammanager.h b/indra/newview/llwaterparammanager.h index dc7d41be2a..3f169e439a 100644 --- a/indra/newview/llwaterparammanager.h +++ b/indra/newview/llwaterparammanager.h @@ -214,6 +214,8 @@ struct WaterExpFloatControl /// WindLight parameter manager class - what controls all the wind light shaders class LLWaterParamManager : public LLSingleton<LLWaterParamManager> { + LLSINGLETON(LLWaterParamManager); + ~LLWaterParamManager(); LOG_CLASS(LLWaterParamManager); public: typedef std::list<std::string> preset_name_list_t; @@ -317,11 +319,7 @@ public: F32 mDensitySliderValue; private: - friend class LLSingleton<LLWaterParamManager>; /*virtual*/ void initSingleton(); - LLWaterParamManager(); - ~LLWaterParamManager(); - void loadAllPresets(); void loadPresetsFromDir(const std::string& dir); bool loadPreset(const std::string& path); diff --git a/indra/newview/llwearableitemslist.cpp b/indra/newview/llwearableitemslist.cpp index f8981d0c51..ee2270c323 100644 --- a/indra/newview/llwearableitemslist.cpp +++ b/indra/newview/llwearableitemslist.cpp @@ -653,24 +653,16 @@ LLWearableItemsList::~LLWearableItemsList() {} // virtual -void LLWearableItemsList::addNewItem(LLViewerInventoryItem* item, bool rearrange /*= true*/) +LLPanel* LLWearableItemsList::createNewItem(LLViewerInventoryItem* item) { - if (!item) - { - LL_WARNS() << "No inventory item. Couldn't create flat list item." << LL_ENDL; - llassert(item != NULL); - } - - LLPanelWearableOutfitItem *list_item = LLPanelWearableOutfitItem::create(item, mWornIndicationEnabled); - if (!list_item) - return; + if (!item) + { + LL_WARNS() << "No inventory item. Couldn't create flat list item." << LL_ENDL; + llassert(item != NULL); + return NULL; + } - bool is_item_added = addItem(list_item, item->getUUID(), ADD_BOTTOM, rearrange); - if (!is_item_added) - { - LL_WARNS() << "Couldn't add flat list item." << LL_ENDL; - llassert(is_item_added); - } + return LLPanelWearableOutfitItem::create(item, mWornIndicationEnabled); } void LLWearableItemsList::updateList(const LLUUID& category_id) diff --git a/indra/newview/llwearableitemslist.h b/indra/newview/llwearableitemslist.h index 18a30f083b..f3182ed163 100644 --- a/indra/newview/llwearableitemslist.h +++ b/indra/newview/llwearableitemslist.h @@ -411,8 +411,8 @@ public: */ class ContextMenu : public LLListContextMenu, public LLSingleton<ContextMenu> { + LLSINGLETON(ContextMenu); public: - ContextMenu(); /*virtual*/ void show(LLView* spawning_view, const uuid_vec_t& uuids, S32 x, S32 y); protected: @@ -453,7 +453,7 @@ public: virtual ~LLWearableItemsList(); - /*virtual*/ void addNewItem(LLViewerInventoryItem* item, bool rearrange = true); + /*virtual*/ LLPanel* createNewItem(LLViewerInventoryItem* item); void updateList(const LLUUID& category_id); diff --git a/indra/newview/llwearablelist.h b/indra/newview/llwearablelist.h index d6f0fd09a6..782f7751e5 100644 --- a/indra/newview/llwearablelist.h +++ b/indra/newview/llwearablelist.h @@ -41,9 +41,9 @@ */ class LLWearableList : public LLSingleton<LLWearableList> { -public: - LLWearableList() {} + LLSINGLETON_EMPTY_CTOR(LLWearableList); ~LLWearableList(); +public: void cleanup() ; S32 getLength() const { return mList.size(); } diff --git a/indra/newview/llwindebug.h b/indra/newview/llwindebug.h index a3cbf6dc03..90882cf04a 100644 --- a/indra/newview/llwindebug.h +++ b/indra/newview/llwindebug.h @@ -34,6 +34,7 @@ class LLWinDebug: public LLSingleton<LLWinDebug> { + LLSINGLETON_EMPTY_CTOR(LLWinDebug); public: static void init(); static void generateMinidump(struct _EXCEPTION_POINTERS *pExceptionInfo = NULL); diff --git a/indra/newview/llwlanimator.cpp b/indra/newview/llwlanimator.cpp index 2142885767..c8879e73eb 100644 --- a/indra/newview/llwlanimator.cpp +++ b/indra/newview/llwlanimator.cpp @@ -155,17 +155,28 @@ F64 LLWLAnimator::getDayTime() // we're not solving the non-linear equation that determines sun phase // we're just linearly interpolating between the major points - if (phase <= 5.0 / 4.0) { + + if (phase <= 5.0 / 4.0) + { + // mDayTime from 0.33 to 0.75 (6:00 to 21:00) mDayTime = (1.0 / 3.0) * phase + (1.0 / 3.0); } + else if (phase > 7.0 / 4.0) + { + // maximum value for phase is 2 + // mDayTime from 0.25 to 0.33 (3:00 to 6:00) + mDayTime = (1.0 / 3.0) - (1.0 / 3.0) * (2 - phase); + } else { + // phase == 3/2 is where day restarts (24:00) + // mDayTime from 0.75 to 0.999 and 0 to 0.25 (21:00 to 03:00) mDayTime = phase - (1.0 / 2.0); - } - if(mDayTime > 1) - { - mDayTime--; + if(mDayTime > 1) + { + mDayTime--; + } } return mDayTime; diff --git a/indra/newview/llwlparammanager.h b/indra/newview/llwlparammanager.h index e13aed98ed..a10102edf7 100644 --- a/indra/newview/llwlparammanager.h +++ b/indra/newview/llwlparammanager.h @@ -213,6 +213,8 @@ public: /// WindLight parameter manager class - what controls all the wind light shaders class LLWLParamManager : public LLSingleton<LLWLParamManager> { + LLSINGLETON(LLWLParamManager); + ~LLWLParamManager(); LOG_CLASS(LLWLParamManager); public: @@ -375,11 +377,7 @@ private: static std::string getSysDir(); static std::string getUserDir(); - friend class LLSingleton<LLWLParamManager>; /*virtual*/ void initSingleton(); - LLWLParamManager(); - ~LLWLParamManager(); - // list of all the parameters, listed by name std::map<LLWLParamKey, LLWLParamSet> mParamList; diff --git a/indra/newview/llworld.h b/indra/newview/llworld.h index b2d8418064..c9ac241d5a 100644 --- a/indra/newview/llworld.h +++ b/indra/newview/llworld.h @@ -61,8 +61,8 @@ class LLVOAvatar; class LLWorld : public LLSingleton<LLWorld> { + LLSINGLETON(LLWorld); public: - LLWorld(); void destroyClass(); LLViewerRegion* addRegion(const U64 ®ion_handle, const LLHost &host); diff --git a/indra/newview/llworldmap.h b/indra/newview/llworldmap.h index 1a168e4b4d..5e5caa6a74 100644 --- a/indra/newview/llworldmap.h +++ b/indra/newview/llworldmap.h @@ -193,10 +193,10 @@ const S32 MAP_BLOCK_RES = (MAP_MAX_SIZE / MAP_BLOCK_SIZE); class LLWorldMap : public LLSingleton<LLWorldMap> { -public: - LLWorldMap(); + LLSINGLETON(LLWorldMap); ~LLWorldMap(); +public: // Clear all: list of region info, tiles, blocks and items void reset(); diff --git a/indra/newview/llworldmapmessage.h b/indra/newview/llworldmapmessage.h index ac1ea1607c..65276df068 100644 --- a/indra/newview/llworldmapmessage.h +++ b/indra/newview/llworldmapmessage.h @@ -34,13 +34,13 @@ class LLMessageSystem; class LLWorldMapMessage : public LLSingleton<LLWorldMapMessage> { + LLSINGLETON(LLWorldMapMessage); + ~LLWorldMapMessage(); + public: typedef boost::function<void(U64 region_handle, const std::string& url, const LLUUID& snapshot_id, bool teleport)> url_callback_t; - LLWorldMapMessage(); - ~LLWorldMapMessage(); - // Process incoming answers to map stuff requests static void processMapBlockReply(LLMessageSystem*, void**); static void processMapItemReply(LLMessageSystem*, void**); diff --git a/indra/newview/pipeline.cpp b/indra/newview/pipeline.cpp index c6bbfb1c8f..19487c3230 100644 --- a/indra/newview/pipeline.cpp +++ b/indra/newview/pipeline.cpp @@ -114,6 +114,7 @@ #include "llpathfindingpathtool.h" #include "llscenemonitor.h" #include "llprogressview.h" +#include "llcleanup.h" #ifdef _DEBUG // Debug indices is disabled for now for debug performance - djs 4/24/02 @@ -7385,7 +7386,7 @@ void LLPipeline::doResetVertexBuffers(bool forced) } LLVOPartGroup::destroyGL(); - LLVertexBuffer::cleanupClass(); + SUBSYSTEM_CLEANUP(LLVertexBuffer); //delete all name pool caches LLGLNamePool::cleanupPools(); @@ -7772,12 +7773,10 @@ void LLPipeline::renderBloom(BOOL for_snapshot, F32 zoom_factor, int subfield) F32 fov = LLViewerCamera::getInstance()->getView(); const F32 default_fov = CameraFieldOfView * F_PI/180.f; - //const F32 default_aspect_ratio = gSavedSettings.getF32("CameraAspectRatio"); //F32 aspect_ratio = (F32) mScreen.getWidth()/(F32)mScreen.getHeight(); F32 dv = 2.f*default_focal_length * tanf(default_fov/2.f); - //F32 dh = 2.f*default_focal_length * tanf(default_fov*default_aspect_ratio/2.f); F32 focal_length = dv/(2*tanf(fov/2.f)); diff --git a/indra/newview/skins/default/textures/textures.xml b/indra/newview/skins/default/textures/textures.xml index f2da22256c..760c294f90 100644 --- a/indra/newview/skins/default/textures/textures.xml +++ b/indra/newview/skins/default/textures/textures.xml @@ -150,6 +150,7 @@ with the same filename but different name <texture name="Command_Places_Icon" file_name="toolbar_icons/places.png" preload="true" /> <texture name="Command_Preferences_Icon" file_name="toolbar_icons/preferences.png" preload="true" /> <texture name="Command_Profile_Icon" file_name="toolbar_icons/profile.png" preload="true" /> + <texture name="Command_Report_Abuse_Icon" file_name="toolbar_icons/report_abuse.png" preload="true" /> <texture name="Command_Search_Icon" file_name="toolbar_icons/search.png" preload="true" /> <texture name="Command_Snapshot_Icon" file_name="toolbar_icons/snapshot.png" preload="true" /> <texture name="Command_Speak_Icon" file_name="toolbar_icons/speak.png" preload="true" /> diff --git a/indra/newview/skins/default/textures/toolbar_icons/report_abuse.png b/indra/newview/skins/default/textures/toolbar_icons/report_abuse.png Binary files differnew file mode 100644 index 0000000000..d5cb6ca259 --- /dev/null +++ b/indra/newview/skins/default/textures/toolbar_icons/report_abuse.png diff --git a/indra/newview/skins/default/xui/da/floater_about.xml b/indra/newview/skins/default/xui/da/floater_about.xml index 8c0b5748de..779b168ae0 100644 --- a/indra/newview/skins/default/xui/da/floater_about.xml +++ b/indra/newview/skins/default/xui/da/floater_about.xml @@ -25,6 +25,7 @@ Grafik kort: [GRAPHICS_CARD] J2C Decoder Version: [J2C_VERSION] Audio Driver Version: [AUDIO_DRIVER_VERSION] LLCEFLib/CEF Version: [LLCEFLIB_VERSION] +LibVLC Version: [LIBVLC_VERSION] Voice Server Version: [VOICE_VERSION] </floater.string> <floater.string name="none"> diff --git a/indra/newview/skins/default/xui/de/floater_model_preview.xml b/indra/newview/skins/default/xui/de/floater_model_preview.xml index f06e856966..337fee8cb1 100644 --- a/indra/newview/skins/default/xui/de/floater_model_preview.xml +++ b/indra/newview/skins/default/xui/de/floater_model_preview.xml @@ -245,6 +245,7 @@ </text> <check_box label="Skingewicht einschließen" name="upload_skin"/> <check_box label="Gelenkpositionen einschließen" name="upload_joints"/> + <check_box label="Skala sperren, wenn Gelenkposition definiert ist" name="lock_scale_if_joint_position"/> <text name="pelvis_offset_label"> Z-Offset (Avatar anheben oder senken): </text> diff --git a/indra/newview/skins/default/xui/de/floater_pay.xml b/indra/newview/skins/default/xui/de/floater_pay.xml index 1882f5150b..b9e253a668 100644 --- a/indra/newview/skins/default/xui/de/floater_pay.xml +++ b/indra/newview/skins/default/xui/de/floater_pay.xml @@ -1,9 +1,20 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <floater name="Give Money" title=""> - <string name="payee_group">Gruppe bezahlen</string> - <string name="payee_resident">Einwohner bezahlen</string> - <text name="paying_text">Sie zahlen:</text> - <text left="130" name="payee_name">Extrem langen Namen testen, um zu prüfen, ob er abgeschnitten wird</text> + <string name="payee_group"> + Gruppe bezahlen + </string> + <string name="payee_resident"> + Einwohner bezahlen + </string> + <text name="paying_text"> + Sie zahlen: + </text> + <text left="130" name="payee_name"> + Extrem langen Namen testen, um zu prüfen, ob er abgeschnitten wird + </text> + <text name="payment_message_label"> + Beschreibung (optional): + </text> <panel label="Suchen" name="PatternsPanel"> <button label="L$ 1 zahlen" label_selected="L$ 1 zahlen" name="fastpay 1"/> <button label="L$ 5 zahlen" label_selected="L$ 5 zahlen" name="fastpay 5"/> @@ -11,7 +22,9 @@ <button label="L$ 20 zahlen" label_selected="L$ 20 zahlen" name="fastpay 20"/> </panel> <panel label="Suchen" name="InputPanel"> - <text name="amount text">Anderer Betrag:</text> + <text name="amount text"> + Anderer Betrag: + </text> <button label="Bezahlen" label_selected="Bezahlen" name="pay btn"/> <button label="Abbrechen" label_selected="Abbrechen" name="cancel btn"/> </panel> diff --git a/indra/newview/skins/default/xui/de/floater_script_queue.xml b/indra/newview/skins/default/xui/de/floater_script_queue.xml index f267fe4b7c..d11ce83a3e 100644 --- a/indra/newview/skins/default/xui/de/floater_script_queue.xml +++ b/indra/newview/skins/default/xui/de/floater_script_queue.xml @@ -15,5 +15,11 @@ <floater.string name="NotRunning"> Läuft nicht </floater.string> + <floater.string name="Timeout"> + Timeout: [OBJECT_NAME] + </floater.string> + <floater.string name="LoadingObjInv"> + Inventar wird geladen für: [OBJECT_NAME] + </floater.string> <button label="Schließen" label_selected="Schließen" left="215" name="close" width="72"/> </floater> diff --git a/indra/newview/skins/default/xui/de/floater_web_content.xml b/indra/newview/skins/default/xui/de/floater_web_content.xml index 6ab119eeab..c5c6eb969f 100644 --- a/indra/newview/skins/default/xui/de/floater_web_content.xml +++ b/indra/newview/skins/default/xui/de/floater_web_content.xml @@ -10,5 +10,9 @@ <icon name="media_secure_lock_flag" tool_tip="Sicheres Browsen"/> <button name="popexternal" tool_tip="Aktuelle URL im Desktop-Browser öffnen"/> </layout_panel> + <layout_panel name="debug_controls"> + <button name="web_test_home_page" tool_tip="Webtests Homepage"/> + <button name="VLC Plugin Test" tool_tip="MPEG4-Videotest"/> + </layout_panel> </layout_stack> </floater> diff --git a/indra/newview/skins/default/xui/de/menu_attachment_other.xml b/indra/newview/skins/default/xui/de/menu_attachment_other.xml index ba1b36db06..e0f0ea72ed 100644 --- a/indra/newview/skins/default/xui/de/menu_attachment_other.xml +++ b/indra/newview/skins/default/xui/de/menu_attachment_other.xml @@ -7,6 +7,7 @@ <menu_item_call label="Anrufen" name="Call"/> <menu_item_call label="In Gruppe einladen" name="Invite..."/> <menu_item_call label="Skelett zurücksetzen" name="Reset Skeleton"/> + <menu_item_call label="Skelett und Animationen zurücksetzen" name="Reset Skeleton And Animations"/> <menu_item_call label="Ignorieren" name="Avatar Mute"/> <menu_item_call label="Melden" name="abuse"/> <menu_item_call label="Einfrieren" name="Freeze..."/> diff --git a/indra/newview/skins/default/xui/de/menu_attachment_self.xml b/indra/newview/skins/default/xui/de/menu_attachment_self.xml index cd24e6ad3f..f477b78b38 100644 --- a/indra/newview/skins/default/xui/de/menu_attachment_self.xml +++ b/indra/newview/skins/default/xui/de/menu_attachment_self.xml @@ -10,6 +10,7 @@ <menu_item_call label="Meine Form bearbeiten" name="Edit My Shape"/> <menu_item_call label="Schwebehöhe" name="Hover Height"/> <menu_item_call label="Skelett zurücksetzen" name="Reset Skeleton"/> + <menu_item_call label="Skelett und Animationen zurücksetzen" name="Reset Skeleton And Animations"/> <menu_item_call label="Meine Freunde" name="Friends..."/> <menu_item_call label="Meine Gruppen" name="Groups..."/> <menu_item_call label="Mein Profil" name="Profile..."/> diff --git a/indra/newview/skins/default/xui/de/menu_avatar_other.xml b/indra/newview/skins/default/xui/de/menu_avatar_other.xml index 447655cde7..9c24dc2199 100644 --- a/indra/newview/skins/default/xui/de/menu_avatar_other.xml +++ b/indra/newview/skins/default/xui/de/menu_avatar_other.xml @@ -7,6 +7,7 @@ <menu_item_call label="Anrufen" name="Call"/> <menu_item_call label="In Gruppe einladen" name="Invite..."/> <menu_item_call label="Skelett zurücksetzen" name="Reset Skeleton"/> + <menu_item_call label="Skelett und Animationen zurücksetzen" name="Reset Skeleton And Animations"/> <menu_item_call label="Ignorieren" name="Avatar Mute"/> <menu_item_call label="Melden" name="abuse"/> <menu_item_call label="Einfrieren" name="Freeze..."/> diff --git a/indra/newview/skins/default/xui/de/menu_avatar_self.xml b/indra/newview/skins/default/xui/de/menu_avatar_self.xml index f4a3cc17b8..9b6e267b42 100644 --- a/indra/newview/skins/default/xui/de/menu_avatar_self.xml +++ b/indra/newview/skins/default/xui/de/menu_avatar_self.xml @@ -27,6 +27,7 @@ <menu_item_call label="Meine Form bearbeiten" name="Edit My Shape"/> <menu_item_call label="Schwebehöhe" name="Hover Height"/> <menu_item_call label="Skelett zurücksetzen" name="Reset Skeleton"/> + <menu_item_call label="Skelett und Animationen zurücksetzen" name="Reset Skeleton And Animations"/> <menu_item_call label="Meine Freunde" name="Friends..."/> <menu_item_call label="Meine Gruppen" name="Groups..."/> <menu_item_call label="Mein Profil" name="Profile..."/> diff --git a/indra/newview/skins/default/xui/de/menu_login.xml b/indra/newview/skins/default/xui/de/menu_login.xml index 2dc4c1d687..ff21f07943 100644 --- a/indra/newview/skins/default/xui/de/menu_login.xml +++ b/indra/newview/skins/default/xui/de/menu_login.xml @@ -20,13 +20,12 @@ <menu_item_check label="Debug-Menü anzeigen" name="Show Debug Menu"/> <menu label="Debug" name="Debug"> <menu_item_call label="Debug-Einstellungen anzeigen" name="Debug Settings"/> - <menu_item_call label="UI/Farb-Einstellungen" name="UI/Color Settings"/> <menu_item_call label="XUI-Editor" name="UI Preview Tool"/> <menu label="UI-Tests" name="UI Tests"/> <menu_item_call label="Fenstergröße einstellen..." name="Set Window Size..."/> <menu_item_call label="Servicebedingungen anzeigen" name="TOS"/> <menu_item_call label="Wichtige Meldung anzeigen" name="Critical"/> - <menu_item_call label="Web Content Floater Debug Test" name="Web Content Floater Debug Test"/> + <menu_item_call label="Medienbrowser" name="Media Browser"/> <menu label="Protokollierungsstufe festlegen" name="Set Logging Level"> <menu_item_check label="Debug" name="Debug"/> <menu_item_check label="Info" name="Info"/> diff --git a/indra/newview/skins/default/xui/de/menu_object_icon.xml b/indra/newview/skins/default/xui/de/menu_object_icon.xml index f92fa0f82b..f2f3dddd0b 100644 --- a/indra/newview/skins/default/xui/de/menu_object_icon.xml +++ b/indra/newview/skins/default/xui/de/menu_object_icon.xml @@ -2,6 +2,7 @@ <menu name="Object Icon Menu"> <menu_item_call label="Objektprofil..." name="Object Profile"/> <menu_item_call label="Ignorieren..." name="Block"/> + <menu_item_call label="Freischalten" name="Unblock"/> <menu_item_call label="Auf Karte anzeigen" name="show_on_map"/> <menu_item_call label="Zu Objektposition teleportieren" name="teleport_to_object"/> </menu> diff --git a/indra/newview/skins/default/xui/de/menu_outfit_gear.xml b/indra/newview/skins/default/xui/de/menu_outfit_gear.xml index 0cf3c09882..211cc5c54e 100644 --- a/indra/newview/skins/default/xui/de/menu_outfit_gear.xml +++ b/indra/newview/skins/default/xui/de/menu_outfit_gear.xml @@ -3,6 +3,10 @@ <menu_item_call label="Anziehen - Aktuelles Outfit ersetzen" name="wear"/> <menu_item_call label="Anziehen - Aktuelles Outfit hinzufügen" name="wear_add"/> <menu_item_call label="Ausziehen - Aus aktuellem Outfit entfernen" name="take_off"/> + <menu_item_call label="Foto hochladen (10 L$)" name="upload_photo"/> + <menu_item_call label="Foto auswählen" name="select_photo"/> + <menu_item_call label="Schnappschuss aufnehmen" name="take_snapshot"/> + <menu_item_call label="Foto entfernen" name="remove_photo"/> <menu label="Neue Kleider" name="New Clothes"> <menu_item_call label="Neues Hemd" name="New Shirt"/> <menu_item_call label="Neue Hose" name="New Pants"/> @@ -27,4 +31,5 @@ <menu_item_call label="Alle Ordner schließen" name="collapse"/> <menu_item_call label="Outfit neu benennen" name="rename"/> <menu_item_call label="Outfit löschen" name="delete_outfit"/> + <menu_item_check label="Ordner immer nach Namen sortieren" name="sort_folders_by_name"/> </toggleable_menu> diff --git a/indra/newview/skins/default/xui/de/menu_people_friends_view.xml b/indra/newview/skins/default/xui/de/menu_people_friends_view.xml index da4890fe96..d6c4d419fa 100644 --- a/indra/newview/skins/default/xui/de/menu_people_friends_view.xml +++ b/indra/newview/skins/default/xui/de/menu_people_friends_view.xml @@ -4,5 +4,6 @@ <menu_item_check label="Nach Status sortieren" name="sort_status"/> <menu_item_check label="Symbole für Personen anzeigen" name="view_icons"/> <menu_item_check label="Erteilte Genehmigungen anzeigen" name="view_permissions"/> + <menu_item_check label="Benutzernamen ausblenden" name="view_usernames"/> <menu_item_check label="Unterhaltungsprotokoll anzeigen..." name="view_conversation"/> </toggleable_menu> diff --git a/indra/newview/skins/default/xui/de/menu_people_nearby.xml b/indra/newview/skins/default/xui/de/menu_people_nearby.xml index cdbb3ae917..40914b6f68 100644 --- a/indra/newview/skins/default/xui/de/menu_people_nearby.xml +++ b/indra/newview/skins/default/xui/de/menu_people_nearby.xml @@ -13,4 +13,6 @@ <menu_item_call label="Freigeben" name="share"/> <menu_item_call label="Bezahlen" name="pay"/> <menu_item_check label="Ignorieren/Nicht mehr ignorieren" name="block_unblock"/> + <menu_item_call label="Einfrieren" name="freeze"/> + <menu_item_call label="Hinauswerfen" name="eject"/> </context_menu> diff --git a/indra/newview/skins/default/xui/de/menu_people_nearby_view.xml b/indra/newview/skins/default/xui/de/menu_people_nearby_view.xml index d38ec65037..61cc4fe098 100644 --- a/indra/newview/skins/default/xui/de/menu_people_nearby_view.xml +++ b/indra/newview/skins/default/xui/de/menu_people_nearby_view.xml @@ -5,4 +5,5 @@ <menu_item_check label="Nach Nähe sortieren" name="sort_distance"/> <menu_item_check label="Symbole für Personen anzeigen" name="view_icons"/> <menu_item_check label="Karte anzeigen" name="view_map"/> + <menu_item_check label="Benutzernamen ausblenden" name="view_usernames"/> </toggleable_menu> diff --git a/indra/newview/skins/default/xui/de/menu_url_objectim.xml b/indra/newview/skins/default/xui/de/menu_url_objectim.xml index fc01ea8444..95fe97407b 100644 --- a/indra/newview/skins/default/xui/de/menu_url_objectim.xml +++ b/indra/newview/skins/default/xui/de/menu_url_objectim.xml @@ -2,6 +2,7 @@ <context_menu name="Url Popup"> <menu_item_call label="Objektprofil..." name="show_object"/> <menu_item_call label="Blockieren..." name="block_object"/> + <menu_item_call label="Freischalten" name="unblock_object"/> <menu_item_call label="Auf Karte zeigen" name="show_on_map"/> <menu_item_call label="Zu Objekt-Position teleportieren" name="teleport_to_object"/> <menu_item_call label="Objektname in Zwischenablage kopieren" name="url_copy_label"/> diff --git a/indra/newview/skins/default/xui/de/menu_viewer.xml b/indra/newview/skins/default/xui/de/menu_viewer.xml index 319162db34..db57e41661 100644 --- a/indra/newview/skins/default/xui/de/menu_viewer.xml +++ b/indra/newview/skins/default/xui/de/menu_viewer.xml @@ -113,11 +113,11 @@ <menu_item_call label="Verknüpfung" name="Link"/> <menu_item_call label="Verknüpfung auflösen" name="Unlink"/> <menu_item_check label="Verknüpfte Teile bearbeiten" name="Edit Linked Parts"/> - <menu label="Verknüpfte Teile auswählen" name="Select Linked Parts"> - <menu_item_call label="Nächstes Teil auswählen" name="Select Next Part"/> - <menu_item_call label="Vorheriges Teil auswählen" name="Select Previous Part"/> - <menu_item_call label="Nächsten Teil mit einsschließen" name="Include Next Part"/> - <menu_item_call label="Vorherige Teile mit einschließen" name="Include Previous Part"/> + <menu label="Elemente auswählen" name="Select Elements"> + <menu_item_call label="Nächsten Teil oder nächste Fläche auswählen" name="Select Next Part or Face"/> + <menu_item_call label="Vorherigen Teil oder vorherige Fläche auswählen" name="Select Previous Part or Face"/> + <menu_item_call label="Nächsten Teil oder nächste Fläche einschließen" name="Include Next Part or Face"/> + <menu_item_call label="Vorherigen Teil oder vorherige Fläche einschließen" name="Include Previous Part or Face"/> </menu> <menu_item_call label="Linksets..." name="pathfinding_linkset_menu_item"/> <menu_item_call label="Fokus auf Auswahl" name="Focus on Selection"/> @@ -368,8 +368,7 @@ <menu_item_call label="Regionsobjekt-Cache ausgeben" name="Dump Region Object Cache"/> </menu> <menu label="UI" name="UI"> - <menu_item_call label="Test Medienbrowser" name="Web Browser Test"/> - <menu_item_call label="Webinhaltsbrowser" name="Web Content Browser"/> + <menu_item_call label="Medienbrowser" name="Media Browser"/> <menu_item_call label="SelectMgr ausgeben" name="Dump SelectMgr"/> <menu_item_call label="Inventarinfo ausgeben" name="Dump Inventory"/> <menu_item_call label="Timer ausgeben" name="Dump Timers"/> diff --git a/indra/newview/skins/default/xui/de/menu_wearing_tab.xml b/indra/newview/skins/default/xui/de/menu_wearing_tab.xml index 695451a105..61002b3dad 100644 --- a/indra/newview/skins/default/xui/de/menu_wearing_tab.xml +++ b/indra/newview/skins/default/xui/de/menu_wearing_tab.xml @@ -3,4 +3,6 @@ <menu_item_call label="Ausziehen" name="take_off"/> <menu_item_call label="Abnehmen" name="detach"/> <menu_item_call label="Outfit bearbeiten" name="edit"/> + <menu_item_call label="Bearbeiten" name="edit_item"/> + <menu_item_call label="Original anzeigen" name="show_original"/> </context_menu> diff --git a/indra/newview/skins/default/xui/de/mime_types.xml b/indra/newview/skins/default/xui/de/mime_types.xml index ee05e47a63..8728a57737 100644 --- a/indra/newview/skins/default/xui/de/mime_types.xml +++ b/indra/newview/skins/default/xui/de/mime_types.xml @@ -57,6 +57,11 @@ Echtzeit-Streaming </label> </scheme> + <scheme name="libvlc"> + <label name="libvlc_label"> + Von LibVLC unterstützte Medien + </label> + </scheme> <mimetype name="blank"> <label name="blank_label"> - Keine - @@ -202,6 +207,11 @@ Video (MP4) </label> </mimetype> + <mimetype name="application/octet-stream"> + <label name="video/octet-stream"> + Film + </label> + </mimetype> <mimetype menu="1" name="video/quicktime"> <label name="video/quicktime_label"> Video (QuickTime) diff --git a/indra/newview/skins/default/xui/de/notifications.xml b/indra/newview/skins/default/xui/de/notifications.xml index 0af00ab705..25e013ed90 100644 --- a/indra/newview/skins/default/xui/de/notifications.xml +++ b/indra/newview/skins/default/xui/de/notifications.xml @@ -336,6 +336,9 @@ Wenn diese Rolle nicht mehr diese Fähigkeiten haben soll, deaktivieren Sie sie Sie sind dabei, [COUNT] Mitglieder aus der Gruppe zu verbannen. <usetemplate ignoretext="Verbannen mehrerer Gruppenmitglieder bestätigen" name="okcancelignore" notext="Abbrechen" yestext="Verbannen"/> </notification> + <notification name="GroupBanUserOnBanlist"> + Manchen Einwohnern wurde keine Einladung gesendet, weil sie aus der Gruppe ausgeschlossen sind. + </notification> <notification name="AttachmentDrop"> Sie möchten Ihren Anhang wirklich fallen lassen? Möchten Sie fortfahren? @@ -464,6 +467,12 @@ Um Medien nur auf einer Fläche einzufügen, wählen Sie „Oberfläche auswähl <notification name="ErrorEncodingSnapshot"> Fehler beim Erstellen des Fotos! </notification> + <notification name="ErrorPhotoCannotAfford"> + Es kostet L$[COST], um ein Foto in Ihrem Inventar zu speichern. Sie können entweder L$ kaufen oder das Foto auf Ihrem Computer speichern. + </notification> + <notification name="ErrorTextureCannotAfford"> + Es kostet L$[COST], um eine Textur in Ihrem Inventar zu speichern. Sie können entweder L$ kaufen oder das Foto auf Ihrem Computer speichern. + </notification> <notification name="ErrorUploadingPostcard"> Ein Foto konnte aus folgendem Grund nicht gesendet werden: [REASON] </notification> @@ -582,6 +591,10 @@ Hinweis: Der Cache wird dabei gelöscht/geleert. Notizkarte löschen? <usetemplate name="okcancelbuttons" notext="Abbrechen" yestext="OK"/> </notification> + <notification name="LoadPreviousReportScreenshot"> + Möchten Sie den vorherigen Screenshot für Ihren Bericht verwenden? + <usetemplate name="okcancelbuttons" notext="Abbrechen" yestext="OK"/> + </notification> <notification name="GestureSaveFailedTooManySteps"> Speichern der Geste fehlgeschlagen. Die Geste besteht aus zu vielen Schritten. @@ -642,30 +655,12 @@ Weitere Informationen finden Sie auf [_URL]. </url> <usetemplate ignoretext="Meine Hardware wird nicht unterstützt" name="okcancelignore" notext="Nein" yestext="Ja"/> </notification> - <notification name="IntelOldDriver"> - Wahrscheinlich gibt es einen neueren Treiber für Ihren Grafikchip. Durch Aktualisieren der Grafiktreiber lässt sich die Leistung u. U. beträchtlich verbessern. - - Unter [_URL] nach aktualisierten Treibern suchen? - <url name="url"> - http://www.intel.com/p/de_DE/support/detect/graphics - </url> - <usetemplate ignoretext="Mein Grafiktreiber ist veraltet" name="okcancelignore" notext="Nein" yestext="Ja"/> - </notification> - <notification name="AMDOldDriver"> - Wahrscheinlich gibt es einen neueren Treiber für Ihren Grafikchip. Durch Aktualisieren der Grafiktreiber lässt sich die Leistung u. U. beträchtlich verbessern. - - Unter [_URL] nach aktualisierten Treibern suchen? - <url name="url"> - http://support.amd.com/de/Pages/AMDSupportHub.aspx - </url> - <usetemplate ignoretext="Mein Grafiktreiber ist veraltet" name="okcancelignore" notext="Nein" yestext="Ja"/> - </notification> - <notification name="NVIDIAOldDriver"> + <notification name="OldGPUDriver"> Wahrscheinlich gibt es einen neueren Treiber für Ihren Grafikchip. Durch Aktualisieren der Grafiktreiber lässt sich die Leistung u. U. beträchtlich verbessern. - Unter [_URL] nach aktualisierten Treibern suchen? + Unter [URL] nach aktualisierten Treibern suchen? <url name="url"> - http://www.nvidia.com/Download/index.aspx?lang=de-de + [URL] </url> <usetemplate ignoretext="Mein Grafiktreiber ist veraltet" name="okcancelignore" notext="Nein" yestext="Ja"/> </notification> @@ -756,6 +751,9 @@ Verschieben Sie alle betreffenden Objekte in dieselbe Region. </url> <usetemplate name="okcancelbuttons" notext="Abbrechen" yestext="OK"/> </notification> + <notification name="MuteLimitReached"> + Sie können keinen weiteren Eintrag zur Liste der ignorierten Einwohner hinzufügen, weil der Höchstwert ([MUTE_LIMIT] Einträge) erreicht ist. + </notification> <notification name="UnableToLinkObjects"> Verknüpfung dieser [COUNT] Objekte nicht möglich. Sie können maximal [MAX] Objekte verknüpfen. @@ -1393,6 +1391,11 @@ Sie können [SECOND_LIFE] normal verwenden. Andere Benutzer können Sie korrekt </notification> <notification name="AgentComplexity"> Ihre [https://community.secondlife.com/t5/English-Knowledge-Base/Avatar-Rendering-Complexity/ta-p/2967838 Avatarkomplexität] ist [AGENT_COMPLEXITY]. + <usetemplate ignoretext="Warnung anzeigen, wenn sich die Komplexität meines Avatars ändert" name="notifyignore"/> + </notification> + <notification name="HUDComplexityWarning"> + [HUD_REASON]; dies wirkt sich wahrscheinlich negativ auf die Leistung aus. + <usetemplate ignoretext="Warnung anzeigen, wenn die Komplexität meines HUD zu hoch ist" name="notifyignore"/> </notification> <notification name="FirstRun"> Installation von [APP_NAME] vollständig abgeschlossen. @@ -1485,6 +1488,10 @@ Wählen Sie ein einzelnes Objekt aus und versuchen Sie es erneut. Alle Einwohner in dieser Region nach Hause teleportieren? <usetemplate name="okcancelbuttons" notext="Abbrechen" yestext="OK"/> </notification> + <notification name="ChangeObjectBonusFactor"> + Wenn Sie den Objektbonus heruntersetzen, nachdem in einer Region Bauwerke errichtet wurden, können Objekte möglicherweise zurückgegeben oder gelöscht werden. Möchten Sie den Objektbonus wirklich ändern? + <usetemplate ignoretext="Änderung des Objektbonusfaktors bestätigen" name="okcancelignore" notext="Abbrechen" yestext="OK"/> + </notification> <notification name="EstateObjectReturn"> Möchten Sie wirklich alle Objekte zurückgeben, die [USER_NAME] gehören? <usetemplate name="okcancelbuttons" notext="Abbrechen" yestext="OK"/> @@ -1532,6 +1539,9 @@ Ersetzen Sie die Textur [TEXTURE_NUM] mit einer Bilddatei von maximal 512x512 un <notification name="OwnerCanNotBeDenied"> Der Eigentümer des Grundbesitzes kann nicht zur Liste der „Verbannten Einwohner“ hinzugefügt werden. </notification> + <notification name="ProblemAddingEstateManagerBanned"> + Verbannter Einwohner kann nicht zur Grundbesitzverwalterliste hinzugefügt werden. + </notification> <notification name="CanNotChangeAppearanceUntilLoaded"> Das Aussehen lässt sich erst ändern, wenn Kleider und Form/Gestalt geladen sind. </notification> @@ -1703,6 +1713,10 @@ Wenn Sie die neuesten Features und Fixes ausprobieren möchten, gehen Sie zur Se Möchten Sie Ihren Internetbrowser öffnen, um diesen Inhalt anzuzeigen? <usetemplate ignoretext="Meinen Browser starten, um eine Webseite anzuzeigen" name="okcancelignore" notext="Abbrechen" yestext="OK"/> </notification> + <notification name="SystemUIScaleFactorChanged"> + Der UI-Größenfaktor des Systems hat sich seit der letzten Ausführung geändert. Möchten Sie die Seite mit den UI-Größeneinstellungen öffnen? + <usetemplate name="okcancelbuttons" notext="Abbrechen" yestext="OK"/> + </notification> <notification name="WebLaunchJoinNow"> Möchten Sie Ihre [http://secondlife.com/account/ Startseite] aufrufen, um Ihr Konto zu verwalten? <usetemplate ignoretext="Meinen Browser starten, um mein Konto zu verwalten" name="okcancelignore" notext="Abbrechen" yestext="OK"/> @@ -1742,10 +1756,17 @@ Wenn Sie die neuesten Features und Fixes ausprobieren möchten, gehen Sie zur Se Diese Gruppe verlassen? <usetemplate name="okcancelbuttons" notext="Abbrechen" yestext="OK"/> </notification> + <notification name="GroupDepart"> + Sie haben die Gruppe „[group_name]“ verlassen. + </notification> <notification name="OwnerCannotLeaveGroup"> Sie können die Gruppe nicht verlassen, da Sie der letzte Besitzer der Gruppe sind. Weisen Sie die Besitzerrolle zuerst einem anderen Mitglied zu. <usetemplate name="okbutton" yestext="OK"/> </notification> + <notification name="GroupDepartError"> + Sie können die Gruppe nicht verlassen, + <usetemplate name="okbutton" yestext="OK"/> + </notification> <notification name="ConfirmKick"> Möchten Sie WIRKLICH alle Benutzer aus dem Grid werfen? <usetemplate name="okcancelbuttons" notext="Abbrechen" yestext="Alle Benutzer hinauswerfen"/> @@ -2145,6 +2166,10 @@ Tausende Regionen werden verändert und der Spaceserver wird dadurch stark belas Zu viele Prims wurden ausgewählt. Bitte wählen Sie höchstens [MAX_PRIM_COUNT] Prims aus und versuchen Sie es erneut. <usetemplate name="okbutton" yestext="OK"/> </notification> + <notification name="TooManyScriptsSelected"> + Zu viele Skripts in den Objekten ausgewählt. Bitte wählen Sie weniger Objekte aus und versuchen Sie es erneut. + <usetemplate name="okbutton" yestext="OK"/> + </notification> <notification name="ProblemImportingEstateCovenant"> Problem beim Import des Grundbesitzvertrags. <usetemplate name="okbutton" yestext="OK"/> @@ -2314,6 +2339,10 @@ Inventarobjekt(e) verschieben? Zahlung fehlgeschlagen: Objekt nicht gefunden. <usetemplate name="okbutton" yestext="OK"/> </notification> + <notification name="PaymentBlockedButtonMismatch"> + Zahlung gestoppt: Der bezahlte Preis stimmt nicht mit den für dieses Objekt definierten Zahlungsschaltflächen überein. + <usetemplate name="okbutton" yestext="OK"/> + </notification> <notification name="OpenObjectCannotCopy"> Sie haben keine Berechtigung zum Kopieren von Elementen in diesem Objekt. </notification> @@ -2349,6 +2378,11 @@ Diese Aktion kann nicht rückgängig gemacht werden. Dies ist eine große Auswahl mit Linksets. Wenn Sie die Verknüpfung auflösen, kann sie möglicherweise nicht erneut hergestellt werden. Als Vorsichtsmaßnahme empfiehlt es sich, Kopien von Linksets in Ihr Inventar aufzunehmen. <usetemplate ignoretext="Auflösen der Verknüpfung eines Linksets bestätigen" name="okcancelignore" notext="Abbrechen" yestext="Verknüpfung auflösen"/> </notification> + <notification name="HelpReportAbuseConfirm"> + Vielen Dank, dass Sie uns über dieses Problem informiert haben. +Wir untersuchen Ihre Meldung, um zu bestimmen, ob ein Missbrauch vorliegt, und werden dann die entsprechende Maßnahme ergreifen. + <usetemplate name="okbutton" yestext="OK"/> + </notification> <notification name="HelpReportAbuseSelectCategory"> Wählen Sie eine Missbrauchskategorie aus. Die Angabe einer Kategorie hilft uns bei der Bearbeitung des Berichts. @@ -2776,6 +2810,10 @@ Fliegen ist hier nicht möglich. <notification name="PathfindingDirty"> Diese Region weist ausstehende Pathfinding-Änderungen auf. Wenn Sie Baurechte besitzen, können Sie die Region durch Klicken auf die Schaltfläche „Region neu formen“ neu formen. </notification> + <notification name="PathfindingDirtyRebake"> + Diese Region weist ausstehende Pathfinding-Änderungen auf. Wenn Sie Baurechte besitzen, können Sie die Region durch Klicken auf die Schaltfläche „Region neu formen“ neu formen. + <usetemplate name="okbutton" yestext="Region neu formen"/> + </notification> <notification name="DynamicPathfindingDisabled"> Dynamisches Pathfinding ist in dieser Region nicht aktiviert. Geskriptete Objekte, die Pathfinding-LSL-Aufrufe verwenden, funktionieren in dieser Region u. U. nicht wie erwartet. </notification> @@ -3284,10 +3322,12 @@ Diese werden für ein paar Sekunden sicherheitshalber gesperrt. </notification> <notification name="AppearanceToXMLFailed"> Fehler beim Speichern des Erscheinungsbilds als XML. - icon="notifytip.tga" - name="PresetNotDeleted" - type="notifytip"> -Fehler beim Löschen der Voreinstellung [NAME]. + </notification> + <notification name="PresetNotSaved"> + Fehler beim Speichern der Voreinstellung [NAME]. + </notification> + <notification name="PresetNotDeleted"> + Fehler beim Löschen der Voreinstellung [NAME]. </notification> <notification name="UnableToFindHelpTopic"> Hilfethema für dieses Element wurde nicht gefunden. @@ -3495,13 +3535,6 @@ Durch Ausblenden der Schaltfläche „Sprechen“ wird die Sprechfunktion deakti <notification name="ForceQuitDueToLowMemory"> SL wird wegen Speichermangel in 30 Sekunden beendet. </notification> - <notification name="PopupAttempt"> - Ein Popup konnte nicht geöffnet werden. - <form name="form"> - <ignore name="ignore" text="Alle Popups aktivieren"/> - <button name="open" text="Popup-Fenster öffnen"/> - </form> - </notification> <notification name="SOCKS_NOT_PERMITTED"> SOCKS 5-Proxy „[HOST]:[PORT]“ hat Verbindungsverbindung abgewiesen, da laut Regelsatz nicht zulässig. <usetemplate name="okbutton" yestext="OK"/> @@ -3876,6 +3909,9 @@ Warten Sie kurz und versuchen Sie es noch einmal. Objekt „[OBJECT_NAME]“ kann nicht nach [OBJ_POSITION] in Region [REGION_NAME] verschoben werden, da nicht genügend Ressourcen für dieses Objekt auf dieser Parzelle vorhanden sind. </notification> + <notification name="NoParcelPermsNoObject"> + Kopiervorgang fehlgeschlagen, da Sie keinen Zugriff auf diese Parzelle haben. + </notification> <notification name="CantMoveObjectRegionVersion"> Objekt „[OBJECT_NAME]“ kann nicht nach [OBJ_POSITION] in Region [REGION_NAME] verschoben werden, da die andere Region eine ältere Version verwendet, die das Empfangen dieses Objekts per Regionswechsel nicht unterstützt. @@ -3891,6 +3927,10 @@ Warten Sie kurz und versuchen Sie es noch einmal. <notification name="NoPermModifyObject"> Ihnen fehlt die Berechtigung zum Modifizieren dieses Objekts. </notification> + <notification name="TooMuchObjectInventorySelected"> + Zu viele Objekte mit umfangreichem Inventar ausgewählt. Bitte wählen Sie weniger Objekte aus und versuchen Sie es erneut. + <usetemplate name="okbutton" yestext="OK"/> + </notification> <notification name="CantEnablePhysObjContributesToNav"> Physik kann nicht für ein Objekt aktiviert werden, das zum Navmesh beiträgt. </notification> @@ -3927,6 +3967,12 @@ Warten Sie kurz und versuchen Sie es noch einmal. <notification name="CantSaveModifyAttachment"> Kein Speichern in Objektinhalt möglich: Dadurch würden die Anhängeberechtigungen geändert. </notification> + <notification name="AttachmentHasTooMuchInventory"> + Ihre Anhänge enthalten zu viele Inventarobjekte. Sie können keine weiteren hinzufügen. + </notification> + <notification name="IllegalAttachment"> + Der Anhang hat einen nicht vorhandenen Punkt auf dem Avatar angefordert. Der Anhang wurde stattdessen auf der Brust angebracht. + </notification> <notification name="TooManyScripts"> Zu viele Skripts. </notification> @@ -4019,6 +4065,12 @@ Warten Sie kurz und versuchen Sie es noch einmal. <notification name="TeleportedByObjectUnknownUser"> Sie wurden von Objekt „[OBJECT_NAME]“, das einem unbekannten Benutzer gehört, teleportiert. </notification> + <notification name="StandDeniedByObject"> + „[OBJECT_NAME]“ lässt zur Zeit nicht zu, dass Sie stehen. + </notification> + <notification name="ResitDeniedByObject"> + „[OBJECT_NAME]“ lässt zur Zeit nicht zu, dass Sie sich woanders hinsetzen. + </notification> <notification name="CantCreateObjectRegionFull"> Angefordertes Objekt kann nicht erstellt werden. Die Region ist voll. </notification> @@ -4100,9 +4152,6 @@ Warten Sie kurz und versuchen Sie es noch einmal. <notification name="CantAttachNotEnoughScriptResources"> Nicht genügend Skriptressourcen verfügbar, um Objekt anzuhängen. </notification> - <notification name="IllegalAttachment"> - Der Anhang hat einen nicht vorhandenen Punkt auf dem Avatar angefordert. Der Anhang wurde stattdessen auf der Brust angebracht. - </notification> <notification name="CantDropItemTrialUser"> Ablegen von Objekten hier nicht möglich; versuchen Sie es mit dem kostenlosen Testbereich. </notification> @@ -4318,6 +4367,9 @@ Wählen Sie eine kleinere Landfläche aus. <notification name="CantTransfterMoneyRegionDisabled"> Geldüberweisungen an Objekte sind in dieser Region gegenwärtig deaktiviert. </notification> + <notification name="DroppedMoneyTransferRequest"> + Zahlung konnte aufgrund der Systembelastung nicht durchgeführt werden. + </notification> <notification name="CantPayNoAgent"> Nicht ersichtlich, wer bezahlt werden muss. </notification> @@ -4353,4 +4405,8 @@ Wählen Sie eine kleinere Landfläche aus. Chatverlaufsdatei ist noch mit vorheriger Operation beschäftigt. Versuchen Sie es in ein paar Minuten noch einmal oder chatten Sie mit einer anderen Person. <usetemplate name="okbutton" yestext="OK"/> </notification> + <notification name="OutfitPhotoLoadError"> + [REASON] + <usetemplate name="okbutton" yestext="OK"/> + </notification> </notifications> diff --git a/indra/newview/skins/default/xui/de/panel_outfits_inventory.xml b/indra/newview/skins/default/xui/de/panel_outfits_inventory.xml index d5158b2d97..365269d95e 100644 --- a/indra/newview/skins/default/xui/de/panel_outfits_inventory.xml +++ b/indra/newview/skins/default/xui/de/panel_outfits_inventory.xml @@ -7,6 +7,7 @@ Ausgewählte Objekte tragen </panel.string> <tab_container name="appearance_tabs"> + <panel label="OUTFIT-GALERIE" name="outfit_gallery_tab"/> <panel label="MEINE OUTFITS" name="outfitslist_tab"/> <panel label="AKTUELLES OUTFIT" name="cof_tab"/> </tab_container> diff --git a/indra/newview/skins/default/xui/de/panel_outfits_wearing.xml b/indra/newview/skins/default/xui/de/panel_outfits_wearing.xml index 27141796a8..10c31d334c 100644 --- a/indra/newview/skins/default/xui/de/panel_outfits_wearing.xml +++ b/indra/newview/skins/default/xui/de/panel_outfits_wearing.xml @@ -1,6 +1,13 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <panel name="Wearing"> + <panel.string name="no_attachments"> + Keine Anhänge getragen. + </panel.string> + <accordion name="wearables_accordion"> + <accordion_tab name="tab_wearables" title="Tragbare Objekte"/> + <accordion_tab name="tab_temp_attachments" title="Temporäre Anhänge"/> + </accordion> <panel name="bottom_panel"> - <button name="options_gear_btn" tool_tip="Zusätzliche Optionen anzeigen"/> + <menu_button name="options_gear_btn" tool_tip="Zusätzliche Optionen anzeigen"/> </panel> </panel> diff --git a/indra/newview/skins/default/xui/de/panel_preferences_setup.xml b/indra/newview/skins/default/xui/de/panel_preferences_setup.xml index dc456e2281..4414bbfae7 100644 --- a/indra/newview/skins/default/xui/de/panel_preferences_setup.xml +++ b/indra/newview/skins/default/xui/de/panel_preferences_setup.xml @@ -30,6 +30,7 @@ <combo_box.item label="Ich werde Updates manuell herunterladen und installieren" name="Install_manual"/> </combo_box> <check_box label="Bereit, Release-Kandidaten zu verwenden" name="update_willing_to_test"/> + <check_box label="Versionshinweise nach der Aktualisierung anzeigen" name="update_show_release_notes"/> <text name="Proxy Settings:"> Proxy-Einstellungen: </text> diff --git a/indra/newview/skins/default/xui/de/strings.xml b/indra/newview/skins/default/xui/de/strings.xml index 9dd94d2230..4a2cbcc81f 100644 --- a/indra/newview/skins/default/xui/de/strings.xml +++ b/indra/newview/skins/default/xui/de/strings.xml @@ -61,17 +61,34 @@ Grafikkarte: [GRAPHICS_CARD] <string name="AboutDriver"> Windows-Grafiktreiberversion: [GRAPHICS_DRIVER_VERSION] </string> - <string name="AboutLibs"> + <string name="AboutOGL"> OpenGL-Version: [OPENGL_VERSION] - -J2C-Decoderversion: [J2C_VERSION] + </string> + <string name="AboutSettings"> + Fenstergröße: [WINDOW_WIDTH]x[WINDOW_HEIGHT] +Schriftgrößenanpassung [FONT_SIZE_ADJUSTMENT] Pt +UI-Skalierung: [UI_SCALE] +Sichtweite: [DRAW_DISTANCE] m +Bandbreite: [NET_BANDWITH] kbit/s +LOD-Faktor: [LOD_FACTOR] +Darstellungsqualität: [RENDER_QUALITY] / 7 +Erweitertes Beleuchtungsmodell: [GPU_SHADERS] +Texturspeicher: [TEXTURE_MEMORY] MB +Erstellungszeit VFS (Cache): [VFS_TIME] + </string> + <string name="AboutLibs"> + J2C-Decoderversion: [J2C_VERSION] Audiotreiberversion: [AUDIO_DRIVER_VERSION] LLCEFLib/CEF-Version: [LLCEFLIB_VERSION] +LibVLC-Version: [LIBVLC_VERSION] Voice-Server-Version: [VOICE_VERSION] </string> <string name="AboutTraffic"> Paketverlust: [PACKETS_LOST,number,0]/[PACKETS_IN,number,0] ([PACKETS_PCT,number,1] %) </string> + <string name="AboutTime"> + [month, datetime, slt] [day, datetime, slt] [year, datetime, slt] [hour, datetime, slt]:[min, datetime, slt]:[second,datetime,slt] + </string> <string name="ErrorFetchingServerReleaseNotesURL"> Fehler beim Abrufen der URL für die Server-Versionshinweise. </string> @@ -1089,6 +1106,9 @@ Warten Sie kurz und versuchen Sie dann noch einmal, sich anzumelden. <string name="TeleportYourAgent"> Sie teleportieren </string> + <string name="ForceSitAvatar"> + Ihren Avatar zwingen, sich zu setzen + </string> <string name="NotConnected"> Nicht verbunden </string> @@ -1937,6 +1957,27 @@ Warten Sie kurz und versuchen Sie dann noch einmal, sich anzumelden. <string name="av_render_anyone"> Sie sind u. U. für niemanden in Ihrer Nähe sichtbar. </string> + <string name="hud_description_total"> + Ihr HUD + </string> + <string name="hud_name_with_joint"> + [OBJ_NAME] (getragen von [JNT_NAME]) + </string> + <string name="hud_render_memory_warning"> + [HUD_DETAILS] beansprucht viel Texturspeicher + </string> + <string name="hud_render_cost_warning"> + [HUD_DETAILS] enthält zu viele ressourcenintensive Objekte und Texturen + </string> + <string name="hud_render_heavy_textures_warning"> + [HUD_DETAILS] enthält viele große Texturen + </string> + <string name="hud_render_cramped_warning"> + [HUD_DETAILS] enthält zu viele Objekte + </string> + <string name="hud_render_textures_warning"> + [HUD_DETAILS] enthält zu viele Texturen + </string> <string name="AgeYearsA"> [COUNT] Jahr </string> @@ -2096,6 +2137,9 @@ Warten Sie kurz und versuchen Sie dann noch einmal, sich anzumelden. <string name="ObjectOutOfRange"> Skript (Objekt außerhalb des Bereichs) </string> + <string name="ScriptWasDeleted"> + Skript (aus Inventar gelöscht) + </string> <string name="GodToolsObjectOwnedBy"> Objekt [OBJECT], Besitzer [OWNER] </string> @@ -2708,6 +2752,15 @@ Gültige Formate: .wav, .tga, .bmp, .jpg, .jpeg oder .bvh <string name="Play Media"> Medien Abspielen/Pausieren </string> + <string name="IntelDriverPage"> + http://www.intel.com/p/en_US/support/detect/graphics + </string> + <string name="NvidiaDriverPage"> + http://www.nvidia.com/Download/index.aspx?lang=de-de + </string> + <string name="AMDDriverPage"> + http://support.amd.com/de/Pages/AMDSupportHub.aspx + </string> <string name="MBCmdLineError"> Beim Parsen der Befehlszeile wurde ein Fehler festgestellt. Weitere Informationen: http://wiki.secondlife.com/wiki/Client_parameters (EN) @@ -4483,12 +4536,18 @@ Falls diese Meldung weiterhin angezeigt wird, wenden Sie sich bitte an [SUPPORT_ <string name="paid_you_ldollars"> [NAME] hat Ihnen [REASON] [AMOUNT] L$ bezahlt. </string> + <string name="paid_you_ldollars_gift"> + [NAME] hat Ihnen [AMOUNT] L$ bezahlt: [REASON] + </string> <string name="paid_you_ldollars_no_reason"> [NAME] hat Ihnen [AMOUNT] L$ bezahlt. </string> <string name="you_paid_ldollars"> Sie haben [REASON] [AMOUNT] L$ an [NAME] bezahlt. </string> + <string name="you_paid_ldollars_gift"> + Sie haben [NAME] [AMOUNT] L$ bezahlt: [REASON] + </string> <string name="you_paid_ldollars_no_info"> Sie haben [AMOUNT] L$ bezahlt. </string> @@ -4501,6 +4560,9 @@ Falls diese Meldung weiterhin angezeigt wird, wenden Sie sich bitte an [SUPPORT_ <string name="you_paid_failure_ldollars"> Sie haben [NAME] [AMOUNT] L$ [REASON] nicht bezahlt. </string> + <string name="you_paid_failure_ldollars_gift"> + Sie haben [NAME] [AMOUNT] L$ nicht bezahlt: [REASON] + </string> <string name="you_paid_failure_ldollars_no_info"> Sie haben [AMOUNT] L$ nicht bezahlt. </string> @@ -4827,6 +4889,15 @@ Missbrauchsbericht <string name="texture_load_dimensions_error"> Bilder, die größer sind als [WIDTH]*[HEIGHT] können nicht geladen werden </string> + <string name="outfit_photo_load_dimensions_error"> + Max. Fotogröße für Outfit ist [WIDTH]*[HEIGHT]. Bitte verkleinern Sie das Bild oder verwenden Sie ein anderes. + </string> + <string name="outfit_photo_select_dimensions_error"> + Max. Fotogröße für Outfit ist [WIDTH]*[HEIGHT]. Bitte wählen Sie eine andere Textur aus. + </string> + <string name="outfit_photo_verify_dimensions_error"> + Fotoabmessungen können nicht bestätigt werden. Bitte warten Sie, bis die Fotogröße im Auswahlfenster angezeigt wird. + </string> <string name="words_separator" value=","/> <string name="server_is_down"> Trotz all unserer Bemühungen ist ein unerwarteter Fehler aufgetreten. @@ -5331,6 +5402,9 @@ Setzen Sie den Editorpfad in Anführungszeichen <string name="Command_Profile_Label"> Profil </string> + <string name="Command_Report_Abuse_Label"> + Missbrauch melden + </string> <string name="Command_Search_Label"> Suchen </string> @@ -5421,6 +5495,9 @@ Setzen Sie den Editorpfad in Anführungszeichen <string name="Command_Profile_Tooltip"> Ihr Profil bearbeiten oder anzeigen </string> + <string name="Command_Report_Abuse_Tooltip"> + Missbrauch melden + </string> <string name="Command_Search_Tooltip"> Orte, Veranstaltungen, Leute finden </string> diff --git a/indra/newview/skins/default/xui/en/floater_about_land.xml b/indra/newview/skins/default/xui/en/floater_about_land.xml index 8391bacf51..a137770e26 100644 --- a/indra/newview/skins/default/xui/en/floater_about_land.xml +++ b/indra/newview/skins/default/xui/en/floater_about_land.xml @@ -2014,7 +2014,7 @@ Only large parcels can be listed in search. name="AllowedText" top="0" width="230"> - Allowed Residents ([COUNT]) + Allowed Residents ([COUNT], max [MAX]) </text> <name_list column_padding="0" @@ -2063,7 +2063,7 @@ Only large parcels can be listed in search. name="BanCheck" top="0" width="200"> - Banned Residents ([COUNT]) + Banned Residents ([COUNT], max [MAX]) </text> <name_list column_padding="0" diff --git a/indra/newview/skins/default/xui/en/floater_avatar.xml b/indra/newview/skins/default/xui/en/floater_avatar.xml index cd5cca02bd..92c5d8bcbe 100644 --- a/indra/newview/skins/default/xui/en/floater_avatar.xml +++ b/indra/newview/skins/default/xui/en/floater_avatar.xml @@ -1,7 +1,6 @@ <?xml version="1.0" encoding="utf-8" standalone="yes" ?> <floater positioning="cascading" - ignore_ui_scale="false" legacy_header_height="225" can_minimize="true" can_close="true" diff --git a/indra/newview/skins/default/xui/en/floater_camera.xml b/indra/newview/skins/default/xui/en/floater_camera.xml index 521389d7b3..72a7b5540c 100644 --- a/indra/newview/skins/default/xui/en/floater_camera.xml +++ b/indra/newview/skins/default/xui/en/floater_camera.xml @@ -43,13 +43,11 @@ name="controls" width="226"> <panel - color="Transparent" follows="all" height="102" layout="topleft" left="8" name="preset_views_list" - opaque="true" top="24" width="212" visible="false"> @@ -100,14 +98,11 @@ </panel_camera_item> </panel> <panel - color="Transparent" follows="all" height="68" - item_pad="4" layout="topleft" left="8" name="camera_modes_list" - opaque="true" top="24" width="212" visible="false"> diff --git a/indra/newview/skins/default/xui/en/floater_destinations.xml b/indra/newview/skins/default/xui/en/floater_destinations.xml index 94ebaa9cb2..4fe8e3bdd1 100644 --- a/indra/newview/skins/default/xui/en/floater_destinations.xml +++ b/indra/newview/skins/default/xui/en/floater_destinations.xml @@ -1,11 +1,9 @@ <?xml version="1.0" encoding="utf-8" standalone="yes" ?> <floater positioning="cascading" - ignore_ui_scale="false" legacy_header_height="225" can_minimize="true" can_close="true" - user_resize="true" can_resize="true" min_height="230" min_width="350" diff --git a/indra/newview/skins/default/xui/en/floater_edit_hover_height.xml b/indra/newview/skins/default/xui/en/floater_edit_hover_height.xml index 8ec6735a01..52084e5f8e 100644 --- a/indra/newview/skins/default/xui/en/floater_edit_hover_height.xml +++ b/indra/newview/skins/default/xui/en/floater_edit_hover_height.xml @@ -1,7 +1,6 @@ <?xml version="1.0" encoding="utf-8" standalone="yes" ?> <floater positioning="cascading" - ignore_ui_scale="false" legacy_header_height="225" can_minimize="true" can_close="true" diff --git a/indra/newview/skins/default/xui/en/floater_facebook.xml b/indra/newview/skins/default/xui/en/floater_facebook.xml index 2ea34fb751..b34d70516a 100644 --- a/indra/newview/skins/default/xui/en/floater_facebook.xml +++ b/indra/newview/skins/default/xui/en/floater_facebook.xml @@ -22,8 +22,7 @@ top="7" height="437" follows="all" - halign="center" - use_highlighting_on_hover="true"> + halign="center"> <panel filename="panel_facebook_status.xml" class="llfacebookstatuspanel" diff --git a/indra/newview/skins/default/xui/en/floater_flickr.xml b/indra/newview/skins/default/xui/en/floater_flickr.xml index 24de3ddd8d..52ef16c7e8 100644 --- a/indra/newview/skins/default/xui/en/floater_flickr.xml +++ b/indra/newview/skins/default/xui/en/floater_flickr.xml @@ -29,8 +29,7 @@ top="7" height="555" follows="all" - halign="center" - use_highlighting_on_hover="true"> + halign="center"> <panel filename="panel_flickr_photo.xml" class="llflickrphotopanel" diff --git a/indra/newview/skins/default/xui/en/floater_im_container.xml b/indra/newview/skins/default/xui/en/floater_im_container.xml index 28c89868bd..34fa0b0fe9 100644 --- a/indra/newview/skins/default/xui/en/floater_im_container.xml +++ b/indra/newview/skins/default/xui/en/floater_im_container.xml @@ -121,7 +121,6 @@ follows="all" layout="topleft" name="conversations_list_panel" - opaque="true" top_pad="0" left="5" right="-1"/> @@ -144,7 +143,6 @@ follows="all" layout="topleft" name="stub_panel" - opaque="true" top_pad="0" left="0" right="-1"> diff --git a/indra/newview/skins/default/xui/en/floater_inspect.xml b/indra/newview/skins/default/xui/en/floater_inspect.xml index bea35e5fc1..ae46736ddf 100644 --- a/indra/newview/skins/default/xui/en/floater_inspect.xml +++ b/indra/newview/skins/default/xui/en/floater_inspect.xml @@ -27,15 +27,15 @@ tool_tip="Select an object from this list to highlight it in-world" top="20"> <scroll_list.columns - dynamic_width="true" + relative_width="0.32" label="Object Name" name="object_name" /> <scroll_list.columns - dynamic_width="true" + relative_width="0.34" label="Owner Name" name="owner_name" /> <scroll_list.columns - dynamic_width="true" + relative_width="0.34" label="Creator Name" name="creator_name" /> <scroll_list.columns diff --git a/indra/newview/skins/default/xui/en/floater_moveview.xml b/indra/newview/skins/default/xui/en/floater_moveview.xml index 5e84283ab0..90166232e9 100644 --- a/indra/newview/skins/default/xui/en/floater_moveview.xml +++ b/indra/newview/skins/default/xui/en/floater_moveview.xml @@ -155,7 +155,6 @@ layout="topleft" name="move right btn" quadrant="right" - right_delta="4" scale_image="false" tool_tip="Walk right (press Shift + Right Arrow or D)" top_pad="10" @@ -210,7 +209,6 @@ image_pressed_selected="Movement_Down_On" image_unselected="Movement_Down_Off" layout="topleft" - right_delta="0" name="move down btn" scale_image="false" tool_tip="Fly down (press C)" diff --git a/indra/newview/skins/default/xui/en/floater_outfit_photo_preview.xml b/indra/newview/skins/default/xui/en/floater_outfit_photo_preview.xml new file mode 100644 index 0000000000..bfc1c39e9d --- /dev/null +++ b/indra/newview/skins/default/xui/en/floater_outfit_photo_preview.xml @@ -0,0 +1,65 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<floater + legacy_header_height="18" + can_resize="false" + height="325" + layout="topleft" + name="outfit_photo_preview" + help_topic="preview_texture" + width="410"> + <floater.string + name="Title"> + Texture: [NAME] + </floater.string> + <floater.string + name="exceed_limits"> + Max outfit photo size is [MAX_WIDTH]*[MAX_HEIGHT]. Please select another texture. + </floater.string> + <floater.string + name="photo_confirmation"> + Set this as Outfit Photo for [OUTFIT]? + </floater.string> + <text + type="string" + halign="right" + length="1" + follows="right|bottom" + height="16" + layout="topleft" + left="110" + name="dimensions" + top="255" + width="200"> + [WIDTH]px x [HEIGHT]px + </text> + <text + type="string" + follows="left|top" + height="16" + layout="topleft" + name="notification" + left="25" + halign="center" + top_pad="5" + width="360"> + </text> + <button + follows="right|bottom" + height="22" + label="OK" + layout="topleft" + name="ok_btn" + top_pad="5" + right="-115" + top_delta="0" + width="90" /> + <button + follows="right|bottom" + height="22" + label="Cancel" + layout="topleft" + name="cancel_btn" + right="-20" + top_delta="0" + width="90" /> +</floater> diff --git a/indra/newview/skins/default/xui/en/floater_outgoing_call.xml b/indra/newview/skins/default/xui/en/floater_outgoing_call.xml index ffbb6aa28b..d714cc613e 100644 --- a/indra/newview/skins/default/xui/en/floater_outgoing_call.xml +++ b/indra/newview/skins/default/xui/en/floater_outgoing_call.xml @@ -8,6 +8,7 @@ layout="topleft" name="outgoing call" help_topic="outgoing_call" + sound_flags="0" save_dock_state="true" title="CALLING" width="410"> diff --git a/indra/newview/skins/default/xui/en/floater_pathfinding_linksets.xml b/indra/newview/skins/default/xui/en/floater_pathfinding_linksets.xml index 52d03cc432..00d70556b4 100644 --- a/indra/newview/skins/default/xui/en/floater_pathfinding_linksets.xml +++ b/indra/newview/skins/default/xui/en/floater_pathfinding_linksets.xml @@ -290,7 +290,7 @@ layout="topleft" left="0" height="67" - width="1010"> + width="1070"> <text name="linksets_actions_label" height="13" diff --git a/indra/newview/skins/default/xui/en/floater_pay.xml b/indra/newview/skins/default/xui/en/floater_pay.xml index 9d91f801a6..3e3f8b49ce 100644 --- a/indra/newview/skins/default/xui/en/floater_pay.xml +++ b/indra/newview/skins/default/xui/en/floater_pay.xml @@ -2,7 +2,7 @@ <floater legacy_header_height="18" can_minimize="false" - height="186" + height="208" layout="topleft" name="Give Money" help_topic="give_money" @@ -43,6 +43,26 @@ width="180"> Test Name That Is Extremely Long To Check Clipping </text> + <text + type="string" + follows="top|left" + height="18" + left="10" + name="payment_message_label" + top_pad="6" + width="120"> + Description (optional): + </text> + <line_editor + border_style="line" + follows="left|top|right" + height="19" + top_delta="-2" + layout="topleft" + max_length_bytes="127" + name="payment_message" + right="-11" + width="109" /> <panel border_thickness="0" height="104" @@ -125,7 +145,7 @@ top_pad="0" max_length_bytes="9" name="amount" - width="90" /> + right="-1" /> <button enabled="false" height="23" diff --git a/indra/newview/skins/default/xui/en/floater_preferences.xml b/indra/newview/skins/default/xui/en/floater_preferences.xml index 9a9101e0da..5ca527ad20 100644 --- a/indra/newview/skins/default/xui/en/floater_preferences.xml +++ b/indra/newview/skins/default/xui/en/floater_preferences.xml @@ -120,6 +120,13 @@ layout="topleft" help_topic="preferences_advanced1_tab" name="advanced1" /> + <panel + class="panel_preference" + filename="panel_preferences_uploads.xml" + label="Uploads" + layout="topleft" + help_topic="preferences_uploads_tab" + name="uploads" /> </tab_container> </floater> diff --git a/indra/newview/skins/default/xui/en/floater_scene_load_stats.xml b/indra/newview/skins/default/xui/en/floater_scene_load_stats.xml index 71ff961c59..62cce3a1e3 100644 --- a/indra/newview/skins/default/xui/en/floater_scene_load_stats.xml +++ b/indra/newview/skins/default/xui/en/floater_scene_load_stats.xml @@ -7,29 +7,23 @@ save_rect="true" save_visibility="true" title="SCENE LOAD STATISTICS" - width="260"> - <button follows="top|left" - top="20" - bottom="60" - left="10" - width="100" - label="Pause" - name="playpause"/> + min_width="250" + width="400"> <scroll_container follows="top|left|bottom|right" bottom="400" layout="topleft" left="0" name="statistics_scroll" reserve_scroll_corner="true" - top="60" - width="260"> + top="20" + width="395"> <container_view follows="top|left|bottom|right" height="378" layout="topleft" left="2" name="statistics_view" top="20" - width="245" > + width="380" > <!--Basic Section--> <stat_view name="basic" label="Basic" diff --git a/indra/newview/skins/default/xui/en/floater_script_limits.xml b/indra/newview/skins/default/xui/en/floater_script_limits.xml index 6b36cdfcc5..96b2ceec63 100644 --- a/indra/newview/skins/default/xui/en/floater_script_limits.xml +++ b/indra/newview/skins/default/xui/en/floater_script_limits.xml @@ -8,7 +8,8 @@ name="scriptlimits" save_rect="true" title="SCRIPT INFORMATION" - width="480"> + min_width="620" + width="620"> <tab_container bottom="555" follows="left|right|top|bottom" diff --git a/indra/newview/skins/default/xui/en/floater_stats.xml b/indra/newview/skins/default/xui/en/floater_stats.xml index 90f9591f29..e4f735740b 100644 --- a/indra/newview/skins/default/xui/en/floater_stats.xml +++ b/indra/newview/skins/default/xui/en/floater_stats.xml @@ -8,7 +8,8 @@ save_rect="true" save_visibility="true" title="STATISTICS" - width="260"> + min_width="250" + width="270"> <scroll_container follows="all" height="380" layout="topleft" @@ -16,14 +17,14 @@ name="statistics_scroll" reserve_scroll_corner="true" top="20" - width="260"> + width="265"> <container_view follows="all" height="378" layout="topleft" - left="2" + left="0" name="statistics_view" top="20" - width="245" > + width="250" > <stat_view name="basic" label="Basic" setting="OpenDebugStatBasic"> diff --git a/indra/newview/skins/default/xui/en/floater_texture_ctrl.xml b/indra/newview/skins/default/xui/en/floater_texture_ctrl.xml index 6021ba0a5a..53618b684b 100644 --- a/indra/newview/skins/default/xui/en/floater_texture_ctrl.xml +++ b/indra/newview/skins/default/xui/en/floater_texture_ctrl.xml @@ -85,8 +85,7 @@ layout="topleft" left_delta="-12" name="unknown" - top_pad="4" - width=""> + top_pad="4"> Size: [DIMENSIONS] </text> @@ -219,7 +218,6 @@ height="260" follows="left|top|right|bottom" column_padding="0" - can_resize="false" draw_heading="true" multi_select="true" search_column="1" diff --git a/indra/newview/skins/default/xui/en/floater_tools.xml b/indra/newview/skins/default/xui/en/floater_tools.xml index 3c28233875..91e4c1b603 100644 --- a/indra/newview/skins/default/xui/en/floater_tools.xml +++ b/indra/newview/skins/default/xui/en/floater_tools.xml @@ -1104,7 +1104,6 @@ even though the user gets a free copy. name="Edit Cost" label="L$" label_width="15" - label_text.valign="center" valign="center" width="85" min_val="0" diff --git a/indra/newview/skins/default/xui/en/floater_twitter.xml b/indra/newview/skins/default/xui/en/floater_twitter.xml index 3e1a91e58d..5e8dfb8a52 100644 --- a/indra/newview/skins/default/xui/en/floater_twitter.xml +++ b/indra/newview/skins/default/xui/en/floater_twitter.xml @@ -20,8 +20,7 @@ tab_position="top" top="7" height="457" - halign="center" - use_highlighting_on_hover="true"> + halign="center"> <panel filename="panel_twitter_photo.xml" class="lltwitterphotopanel" diff --git a/indra/newview/skins/default/xui/en/menu_gesture_gear.xml b/indra/newview/skins/default/xui/en/menu_gesture_gear.xml index b08d21e8f4..c1458977ca 100644 --- a/indra/newview/skins/default/xui/en/menu_gesture_gear.xml +++ b/indra/newview/skins/default/xui/en/menu_gesture_gear.xml @@ -5,8 +5,7 @@ name="menu_gesture_gear" visible="false"> <menu_item_call - font="SansSerifBold" - label="Add/Remove from Favorites" + label="Activate/Deactivate selected gesture" layout="topleft" name="activate"> <on_click diff --git a/indra/newview/skins/default/xui/en/menu_inventory.xml b/indra/newview/skins/default/xui/en/menu_inventory.xml index 61002bf1b5..e1f9269c70 100644 --- a/indra/newview/skins/default/xui/en/menu_inventory.xml +++ b/indra/newview/skins/default/xui/en/menu_inventory.xml @@ -322,6 +322,43 @@ </menu_item_call> </menu> <menu + label="Use as default for" + layout="topleft" + name="upload_def"> + <menu_item_call + label="Image uploads" + layout="topleft" + name="Image uploads"> + <menu_item_call.on_click + function="Inventory.FileUploadLocation" + parameter="texture" /> + </menu_item_call> + <menu_item_call + label="Sound uploads" + layout="topleft" + name="Sound uploads"> + <menu_item_call.on_click + function="Inventory.FileUploadLocation" + parameter="sound" /> + </menu_item_call> + <menu_item_call + label="Animation uploads" + layout="topleft" + name="Animation uploads"> + <menu_item_call.on_click + function="Inventory.FileUploadLocation" + parameter="animation" /> + </menu_item_call> + <menu_item_call + label="Model uploads" + layout="topleft" + name="Model uploads"> + <menu_item_call.on_click + function="Inventory.FileUploadLocation" + parameter="model" /> + </menu_item_call> + </menu> + <menu label="Change Type" layout="topleft" name="Change Type"> @@ -457,6 +494,14 @@ function="Inventory.DoToSelected" parameter="removefromoutfit" /> </menu_item_call> + <menu_item_call + label="Copy outfit list to clipboard" + layout="topleft" + name="Copy outfit list to clipboard"> + <menu_item_call.on_click + function="Inventory.DoToSelected" + parameter="copyoutfittoclipboard" /> + </menu_item_call> <menu_item_separator layout="topleft" name="Outfit Separator" /> diff --git a/indra/newview/skins/default/xui/en/menu_inventory_gear_default.xml b/indra/newview/skins/default/xui/en/menu_inventory_gear_default.xml index 06d0b849a3..61cc9dfe77 100644 --- a/indra/newview/skins/default/xui/en/menu_inventory_gear_default.xml +++ b/indra/newview/skins/default/xui/en/menu_inventory_gear_default.xml @@ -95,6 +95,9 @@ <on_click function="Inventory.GearDefault.Custom.Action" parameter="empty_lostnfound" /> + <on_enable + function="Inventory.GearDefault.Enable" + parameter="empty_lostnfound" /> </menu_item_call> <menu_item_separator layout="topleft" /> @@ -152,5 +155,8 @@ <on_click function="Inventory.GearDefault.Custom.Action" parameter="empty_trash" /> + <on_enable + function="Inventory.GearDefault.Enable" + parameter="empty_trash" /> </menu_item_call> </toggleable_menu> diff --git a/indra/newview/skins/default/xui/en/menu_login.xml b/indra/newview/skins/default/xui/en/menu_login.xml index a39ee5fddd..8cd0c415f4 100644 --- a/indra/newview/skins/default/xui/en/menu_login.xml +++ b/indra/newview/skins/default/xui/en/menu_login.xml @@ -20,6 +20,18 @@ function="Floater.Toggle" parameter="preferences" /> </menu_item_call> + <menu_item_check + label="Show Grid Picker" + name="Show Grid Picker" + visible="false" + shortcut="control|shift|G"> + <on_check + function="CheckControl" + parameter="ForceShowGrid" /> + <on_click + function="ToggleControl" + parameter="ForceShowGrid" /> + </menu_item_check> <menu_item_separator /> <menu_item_call label="Exit [APP_NAME]" @@ -287,18 +299,6 @@ parameter="4" /> </menu_item_check> </menu> - <menu_item_check - label="Show Grid Picker" - name="Show Grid Picker" - visible="false" - shortcut="control|shift|G"> - <on_check - function="CheckControl" - parameter="ForceShowGrid" /> - <on_click - function="ToggleControl" - parameter="ForceShowGrid" /> - </menu_item_check> <menu_item_call label="Show Notifications Console" name="Show Notifications Console" diff --git a/indra/newview/skins/default/xui/en/menu_viewer.xml b/indra/newview/skins/default/xui/en/menu_viewer.xml index ea826d2243..7c128d1523 100644 --- a/indra/newview/skins/default/xui/en/menu_viewer.xml +++ b/indra/newview/skins/default/xui/en/menu_viewer.xml @@ -447,8 +447,15 @@ function="Floater.Toggle" parameter="mini_map" /> </menu_item_check> + <menu_item_call + label="Events" + name="Events"> + <menu_item_call.on_click + function="Advanced.ShowURL" + parameter="http://events.secondlife.com"/> + </menu_item_call> <menu_item_check - label="Search" + label="Search..." name="Search" shortcut="control|F"> <menu_item_check.on_check @@ -885,12 +892,12 @@ </menu_item_check> <menu create_jump_keys="true" - label="Select Linked Parts" - name="Select Linked Parts" + label="Select Elements" + name="Select Elements" tear_off="true"> <menu_item_call - label="Select Next Part" - name="Select Next Part" + label="Select Next Part or Face" + name="Select Next Part or Face" shortcut="control|."> <menu_item_call.on_click function="Tools.SelectNextPart" @@ -899,8 +906,8 @@ function="Tools.EnableSelectNextPart" /> </menu_item_call> <menu_item_call - label="Select Previous Part" - name="Select Previous Part" + label="Select Previous Part or Face" + name="Select Previous Part or Face" shortcut="control|,"> <menu_item_call.on_click function="Tools.SelectNextPart" @@ -909,8 +916,8 @@ function="Tools.EnableSelectNextPart" /> </menu_item_call> <menu_item_call - label="Include Next Part" - name="Include Next Part" + label="Include Next Part or Face" + name="Include Next Part or Face" shortcut="control|shift|."> <menu_item_call.on_click function="Tools.SelectNextPart" @@ -919,8 +926,8 @@ function="Tools.EnableSelectNextPart" /> </menu_item_call> <menu_item_call - label="Include Previous Part" - name="Include Previous Part" + label="Include Previous Part or Face" + name="Include Previous Part or Face" shortcut="control|shift|,"> <menu_item_call.on_click function="Tools.SelectNextPart" diff --git a/indra/newview/skins/default/xui/en/notifications.xml b/indra/newview/skins/default/xui/en/notifications.xml index 11e019e153..58869ec602 100644 --- a/indra/newview/skins/default/xui/en/notifications.xml +++ b/indra/newview/skins/default/xui/en/notifications.xml @@ -1498,7 +1498,20 @@ Delete Notecard? notext="Cancel" yestext="OK"/> </notification> - + + <notification + icon="alertmodal.tga" + name="LoadPreviousReportScreenshot" + type="alertmodal"> + <unique/> +Do you want to use previous screenshot for your report? + <tag>confirm</tag> + <usetemplate + name="okcancelbuttons" + notext="Cancel" + yestext="OK"/> + </notification> + <notification icon="alertmodal.tga" name="GestureSaveFailedTooManySteps" @@ -1880,7 +1893,16 @@ Go to [_URL] for information on purchasing L$? notext="Cancel" yestext="OK"/> </notification> - + + <notification + icon="alertmodal.tga" + name="MuteLimitReached" + persist="false" + type="notify"> +Unable to add new entry to block list because you reached the limit of [MUTE_LIMIT] entries. + <tag>fail</tag> + </notification> + <notification icon="alertmodal.tga" name="UnableToLinkObjects" @@ -4009,7 +4031,7 @@ An update was downloaded. It will be installed during restart. icon="alertmodal.tga" name="UpdateCheckError" type="alertmodal"> -An error occured while checking for update. +An error occurred while checking for update. Please try again later. <tag>confirm</tag> <usetemplate @@ -6149,6 +6171,7 @@ Link to this from a web page to give others easy access to this location, or try icon="alertmodal.tga" name="WLSavePresetAlert" type="alertmodal"> + <unique/> Do you wish to overwrite the saved preset? <tag>confirm</tag> <usetemplate diff --git a/indra/newview/skins/default/xui/en/panel_login.xml b/indra/newview/skins/default/xui/en/panel_login.xml index ded814bbeb..3a34bcbe21 100644 --- a/indra/newview/skins/default/xui/en/panel_login.xml +++ b/indra/newview/skins/default/xui/en/panel_login.xml @@ -15,7 +15,6 @@ <layout_stack follows="left|right|top" height="172" - min_height="172" left="0" name="ui_stack" orientation="horizontal" @@ -50,7 +49,7 @@ label="Username" combo_editor.font="SansSerifLarge" max_chars="128" - commit_on_focus_lost="false" + combo_editor.commit_on_focus_lost="false" combo_editor.prevalidate_callback="ascii" tool_tip="The username you chose when you registered, like bobsmith12 or Steller Sunshine" name="username_combo" @@ -107,7 +106,7 @@ follows="left|top" image_unselected="PushButton_Login" image_pressed="PushButton_Login_Pressed" - image_hover="PushButton_Login_Over" + image_hover_unselected="PushButton_Login_Over" label="Log In" label_color="White" font="SansSerifMedium" diff --git a/indra/newview/skins/default/xui/en/panel_notification.xml b/indra/newview/skins/default/xui/en/panel_notification.xml index 756b8f8102..4d9316768b 100644 --- a/indra/newview/skins/default/xui/en/panel_notification.xml +++ b/indra/newview/skins/default/xui/en/panel_notification.xml @@ -1,7 +1,7 @@ <?xml version="1.0" encoding="utf-8" standalone="yes" ?> <panel background_opaque="false" - border_visible="false" + border_visible="false" background_visible="true" bg_alpha_color="PanelNotificationBackground" bg_opaque_color="PanelNotificationBackground" @@ -11,16 +11,16 @@ name="notification_panel" chrome="true" top="0" - height="140" + height="140" translate="false" width="305"> <!-- THIS PANEL CONTROLS TOAST HEIGHT? --> <panel - border_visible="false" - bevel_style="none" + border_visible="false" + bevel_style="none" background_visible="true" - bg_alpha_color="ToastBackground" - bg_opaque_color="ToastBackground" + bg_alpha_color="ToastBackground" + bg_opaque_color="ToastBackground" follows="left|right|top" height="100" label="info_panel" diff --git a/indra/newview/skins/default/xui/en/panel_outfit_gallery.xml b/indra/newview/skins/default/xui/en/panel_outfit_gallery.xml index c1272c6bf8..e3790ae09b 100644 --- a/indra/newview/skins/default/xui/en/panel_outfit_gallery.xml +++ b/indra/newview/skins/default/xui/en/panel_outfit_gallery.xml @@ -34,12 +34,9 @@ Searching... </text> <scroll_container - border="true" - bevel_style="none" follows="all" height="400" width="312" - min_width="312" layout="topleft" left="4" top="0" diff --git a/indra/newview/skins/default/xui/en/panel_outfits_inventory.xml b/indra/newview/skins/default/xui/en/panel_outfits_inventory.xml index ff0714adbb..eeb930485e 100644 --- a/indra/newview/skins/default/xui/en/panel_outfits_inventory.xml +++ b/indra/newview/skins/default/xui/en/panel_outfits_inventory.xml @@ -26,10 +26,11 @@ layout="topleft" left="5" name="appearance_tabs" - tab_min_width="150" + tab_min_width="100" tab_height="30" tab_position="top" halign="center" + hide_scroll_arrows="true" top="8" width="315"> <panel diff --git a/indra/newview/skins/default/xui/en/panel_preferences_advanced.xml b/indra/newview/skins/default/xui/en/panel_preferences_advanced.xml index 0deb1d03cf..0cd56af6d7 100644 --- a/indra/newview/skins/default/xui/en/panel_preferences_advanced.xml +++ b/indra/newview/skins/default/xui/en/panel_preferences_advanced.xml @@ -157,7 +157,6 @@ enabled_control="ShowScriptErrors" control_name="ShowScriptErrorsLocation" follows="top|left" - draw_border="false" height="16" layout="topleft" left_delta="50" diff --git a/indra/newview/skins/default/xui/en/panel_preferences_setup.xml b/indra/newview/skins/default/xui/en/panel_preferences_setup.xml index c20f9b2c51..71e4009571 100644 --- a/indra/newview/skins/default/xui/en/panel_preferences_setup.xml +++ b/indra/newview/skins/default/xui/en/panel_preferences_setup.xml @@ -140,7 +140,6 @@ <radio_group control_name="PreferredBrowserBehavior" - draw_border="false" follows="left|top" height="60" layout="topleft" diff --git a/indra/newview/skins/default/xui/en/panel_preferences_sound.xml b/indra/newview/skins/default/xui/en/panel_preferences_sound.xml index 53b74fa645..8f2e81b9f7 100644 --- a/indra/newview/skins/default/xui/en/panel_preferences_sound.xml +++ b/indra/newview/skins/default/xui/en/panel_preferences_sound.xml @@ -394,7 +394,6 @@ <radio_group enabled_control="EnableVoiceChat" control_name="VoiceEarLocation" - draw_border="false" follows="left|top" layout="topleft" left_delta="-168" diff --git a/indra/newview/skins/default/xui/en/panel_preferences_uploads.xml b/indra/newview/skins/default/xui/en/panel_preferences_uploads.xml new file mode 100644 index 0000000000..487da54fdf --- /dev/null +++ b/indra/newview/skins/default/xui/en/panel_preferences_uploads.xml @@ -0,0 +1,135 @@ +<?xml version="1.0" encoding="UTF-8"?> +<panel + border="true" + follows="all" + height="408" + label="Uploads" + layout="topleft" + left="102" + name="uploads" + top="1" + width="517"> + <text + type="string" + length="1" + follows="left|top" + height="12" + layout="topleft" + left="33" + name="title" + top_pad="10" + width="250"> + Current destination folders for uploads + </text> + + <text + type="string" + length="1" + follows="left|top" + height="12" + layout="topleft" + left="37" + name="title_models" + top_pad="17" + width="100"> + Images + </text> + <text + type="string" + use_ellipses="true" + follows="left|top" + height="23" + layout="topleft" + font.style="BOLD" + left="37" + name="upload_textures" + top_pad="5" + width="350" /> + + <text + type="string" + length="1" + follows="left|top" + height="12" + layout="topleft" + left="37" + name="title_sounds" + top_pad="7" + width="100"> + Sounds + </text> + <text + type="string" + use_ellipses="true" + follows="left|top" + height="23" + layout="topleft" + font.style="BOLD" + left="37" + name="upload_sounds" + top_pad="5" + width="350" /> + + <text + type="string" + length="1" + follows="left|top" + height="12" + layout="topleft" + left="37" + name="title_animation" + top_pad="7" + width="100"> + Animations + </text> + <text + type="string" + use_ellipses="true" + follows="left|top" + height="23" + layout="topleft" + font.style="BOLD" + left="37" + name="upload_animation" + top_pad="5" + width="350" /> + + <text + type="string" + length="1" + follows="left|top" + height="12" + layout="topleft" + left="37" + name="title_animation" + top_pad="7" + width="100"> + Models + </text> + <text + type="string" + use_ellipses="true" + follows="left|top" + height="23" + layout="topleft" + font.style="BOLD" + left="37" + name="upload_models" + top_pad="5" + width="350" /> + + <text + type="string" + length="1" + follows="left|top" + height="30" + layout="topleft" + font.style="ITALIC" + left="33" + name="upload_help" + top_pad="6" + width="387"> + To change a destination folder, right click on it in inventory and choose + "Use as default for" + </text> +</panel> diff --git a/indra/newview/skins/default/xui/en/panel_region_general.xml b/indra/newview/skins/default/xui/en/panel_region_general.xml index 489d286e67..898e92e030 100644 --- a/indra/newview/skins/default/xui/en/panel_region_general.xml +++ b/indra/newview/skins/default/xui/en/panel_region_general.xml @@ -51,7 +51,7 @@ left_delta="50" name="version_channel_text" top_delta="0" - width="200"> + width="225"> unknown </text> <text @@ -73,7 +73,7 @@ left_delta="50" name="region_type" top_delta="0" - width="200"> + width="225"> unknown </text> <check_box diff --git a/indra/newview/skins/default/xui/en/panel_script_limits_my_avatar.xml b/indra/newview/skins/default/xui/en/panel_script_limits_my_avatar.xml index 629d8567d1..2c2803a503 100644 --- a/indra/newview/skins/default/xui/en/panel_script_limits_my_avatar.xml +++ b/indra/newview/skins/default/xui/en/panel_script_limits_my_avatar.xml @@ -8,7 +8,7 @@ left="0" name="script_limits_my_avatar_panel" top="0" - width="480"> + width="620"> <text type="string" length="1" @@ -19,7 +19,7 @@ name="script_memory" top_pad="24" text_color="White" - width="480"> + width="620"> Avatar Script Usage </text> <text @@ -31,7 +31,7 @@ left="30" name="memory_used" top_delta="18" - width="480"> + width="620"> </text> <text @@ -43,7 +43,7 @@ left="30" name="urls_used" top_delta="18" - width="480"> + width="620"> </text> <text @@ -56,7 +56,7 @@ name="loading_text" top="80" text_color="EmphasisColor" - width="480"> + width="620"> Loading... </text> <scroll_list @@ -68,7 +68,7 @@ multi_select="true" name="scripts_list" top="100" - width="460"> + width="600"> <scroll_list.columns label="Size (kb)" name="size" diff --git a/indra/newview/skins/default/xui/en/panel_script_limits_region_memory.xml b/indra/newview/skins/default/xui/en/panel_script_limits_region_memory.xml index c5e8bf5803..79bb781bc6 100644 --- a/indra/newview/skins/default/xui/en/panel_script_limits_region_memory.xml +++ b/indra/newview/skins/default/xui/en/panel_script_limits_region_memory.xml @@ -8,7 +8,7 @@ name="script_limits_region_memory_panel" top="0" left="0" - width="480"> + width="620"> <text type="string" length="1" @@ -19,7 +19,7 @@ name="script_memory" top_pad="24" text_color="White" - width="480"> + width="620"> Parcel Script Memory </text> <text @@ -32,7 +32,7 @@ name="parcels_listed" top_delta="18" visible="true" - width="480"> + width="620"> </text> <text @@ -44,7 +44,7 @@ left="30" name="memory_used" top_delta="18" - width="480"> + width="620"> </text> <text @@ -56,7 +56,7 @@ left="30" name="urls_used" top_delta="18" - width="480"> + width="620"> </text> <text @@ -69,7 +69,7 @@ name="loading_text" top_delta="12" text_color="EmphasisColor" - width="480"> + width="620"> Loading... </text> <scroll_list @@ -83,7 +83,7 @@ sort_ascending="true" name="scripts_list" top_delta="16" - width="460"> + width="600"> <scroll_list.columns label="Size (kb)" name="size" @@ -120,23 +120,23 @@ left="10" width="100" /> <button - follows="bottom|right" + follows="bottom|left" height="19" - label="Highlight" + label="Return" visible="false" - layout="bottomright" - left="370" - name="highlight_btn" + layout="bottomleft" + name="return_btn" top="34" + left_delta="390" width="100" /> <button - follows="bottom|right" + follows="bottom|left" height="19" - label="Return" + label="Highlight" visible="false" - layout="bottomright" - name="return_btn" + layout="bottomleft" + left_delta="105" + name="highlight_btn" top="34" - left_delta="-105" width="100" /> </panel> diff --git a/indra/newview/skins/default/xui/en/panel_snapshot_postcard.xml b/indra/newview/skins/default/xui/en/panel_snapshot_postcard.xml index 975b08be05..8e92552921 100644 --- a/indra/newview/skins/default/xui/en/panel_snapshot_postcard.xml +++ b/indra/newview/skins/default/xui/en/panel_snapshot_postcard.xml @@ -61,8 +61,7 @@ right="-2" height="319" follows="all" - halign="center" - use_highlighting_on_hover="true"> + halign="center"> <panel follows="all" layout="topleft" diff --git a/indra/newview/skins/default/xui/en/sidepanel_inventory.xml b/indra/newview/skins/default/xui/en/sidepanel_inventory.xml index d3e24a19ef..9995523e61 100644 --- a/indra/newview/skins/default/xui/en/sidepanel_inventory.xml +++ b/indra/newview/skins/default/xui/en/sidepanel_inventory.xml @@ -59,7 +59,6 @@ name="inbox_layout_panel" visible="false" min_dim="35" - max_dim="235" expanded_min_dim="90" height="235"> <panel diff --git a/indra/newview/skins/default/xui/en/strings.xml b/indra/newview/skins/default/xui/en/strings.xml index dcb259f2bb..b75f631799 100644 --- a/indra/newview/skins/default/xui/en/strings.xml +++ b/indra/newview/skins/default/xui/en/strings.xml @@ -45,9 +45,20 @@ Graphics Card Vendor: [GRAPHICS_CARD_VENDOR] Graphics Card: [GRAPHICS_CARD] </string> <string name="AboutDriver">Windows Graphics Driver Version: [GRAPHICS_DRIVER_VERSION]</string> + <string name="AboutOGL">OpenGL Version: [OPENGL_VERSION]</string> + <string name="AboutSettings"> +Window size: [WINDOW_WIDTH]x[WINDOW_HEIGHT] +Font Size Adjustment: [FONT_SIZE_ADJUSTMENT]pt +UI Scaling: [UI_SCALE] +Draw distance: [DRAW_DISTANCE]m +Bandwidth: [NET_BANDWITH]kbit/s +LOD factor: [LOD_FACTOR] +Render quality: [RENDER_QUALITY] / 7 +Advanced Lighting Model: [GPU_SHADERS] +Texture memory: [TEXTURE_MEMORY]MB +VFS (cache) creation time: [VFS_TIME] + </string> <string name="AboutLibs"> -OpenGL Version: [OPENGL_VERSION] - J2C Decoder Version: [J2C_VERSION] Audio Driver Version: [AUDIO_DRIVER_VERSION] LLCEFLib/CEF Version: [LLCEFLIB_VERSION] @@ -3729,12 +3740,15 @@ If you continue to receive this message, contact the [SUPPORT_SITE]. <!-- Financial operations strings --> <string name="paid_you_ldollars">[NAME] paid you L$[AMOUNT] [REASON].</string> + <string name="paid_you_ldollars_gift">[NAME] paid you L$[AMOUNT]: [REASON]</string> <string name="paid_you_ldollars_no_reason">[NAME] paid you L$[AMOUNT].</string> <string name="you_paid_ldollars">You paid [NAME] L$[AMOUNT] [REASON].</string> + <string name="you_paid_ldollars_gift">You paid [NAME] L$[AMOUNT]: [REASON]</string> <string name="you_paid_ldollars_no_info">You paid L$[AMOUNT].</string> <string name="you_paid_ldollars_no_reason">You paid [NAME] L$[AMOUNT].</string> <string name="you_paid_ldollars_no_name">You paid L$[AMOUNT] [REASON].</string> <string name="you_paid_failure_ldollars">You failed to pay [NAME] L$[AMOUNT] [REASON].</string> + <string name="you_paid_failure_ldollars_gift">You failed to pay [NAME] L$[AMOUNT]: [REASON]</string> <string name="you_paid_failure_ldollars_no_info">You failed to pay L$[AMOUNT].</string> <string name="you_paid_failure_ldollars_no_reason">You failed to pay [NAME] L$[AMOUNT].</string> <string name="you_paid_failure_ldollars_no_name">You failed to pay L$[AMOUNT] [REASON].</string> @@ -3801,7 +3815,7 @@ Abuse Report</string> <string name="Male - Laugh">Male - Laugh</string> <string name="Male - Repulsed">Male - Repulsed</string> <string name="Male - Shrug">Male - Shrug</string> - <string name="Male - Stick tougue out">Male - Stick tougue out</string> + <string name="Male - Stick tougue out">Male - Stick tongue out</string> <string name="Male - Wow">Male - Wow</string> <string name="Female - Chuckle">Female - Chuckle</string> @@ -3820,7 +3834,7 @@ Abuse Report</string> <string name="Female - Please">Female - Please</string> <string name="Female - Repulsed">Female - Repulsed</string> <string name="Female - Shrug">Female - Shrug</string> - <string name="Female - Stick tougue out">Female - Stick tougue out</string> + <string name="Female - Stick tougue out">Female - Stick tongue out</string> <string name="Female - Wow">Female - Wow</string> <string name="/bow">/bow</string> @@ -4069,6 +4083,7 @@ Try enclosing path to the editor with double quotes. <string name="Command_Places_Label">Places</string> <string name="Command_Preferences_Label">Preferences</string> <string name="Command_Profile_Label">Profile</string> + <string name="Command_Report_Abuse_Label">Report Abuse</string> <string name="Command_Search_Label">Search</string> <string name="Command_Snapshot_Label">Snapshot</string> <string name="Command_Speak_Label">Speak</string> @@ -4100,6 +4115,7 @@ Try enclosing path to the editor with double quotes. <string name="Command_Places_Tooltip">Places you've saved</string> <string name="Command_Preferences_Tooltip">Preferences</string> <string name="Command_Profile_Tooltip">Edit or view your profile</string> + <string name="Command_Report_Abuse_Tooltip">Report Abuse</string> <string name="Command_Search_Tooltip">Find places, events, people</string> <string name="Command_Snapshot_Tooltip">Take a picture</string> <string name="Command_Speak_Tooltip">Speak with people nearby using your microphone</string> @@ -4184,6 +4200,9 @@ Try enclosing path to the editor with double quotes. Loading... </string> + <!-- Statistics --> + <string name="na">n/a</string> + <!-- Presets graphic/camera --> <string name="preset_combo_label">-Empty list-</string> <string name="Default">Default</string> diff --git a/indra/newview/skins/default/xui/en/widgets/location_input.xml b/indra/newview/skins/default/xui/en/widgets/location_input.xml index 61ec046649..674be59753 100644 --- a/indra/newview/skins/default/xui/en/widgets/location_input.xml +++ b/indra/newview/skins/default/xui/en/widgets/location_input.xml @@ -133,7 +133,7 @@ name="damage_text" width="35" height="18" - top="17" + top="18" follows="right|top" halign="right" font="SansSerifSmall" diff --git a/indra/newview/skins/default/xui/en/widgets/slider.xml b/indra/newview/skins/default/xui/en/widgets/slider.xml index f735d09476..6cceafc9ae 100644 --- a/indra/newview/skins/default/xui/en/widgets/slider.xml +++ b/indra/newview/skins/default/xui/en/widgets/slider.xml @@ -8,7 +8,6 @@ text_color="LabelTextColor" text_disabled_color="LabelDisabledColor"> <slider.value_editor name="slider editor" - max_length="10" follows="left|bottom"/> <slider.value_text name="slider text" follows="left|bottom"/> diff --git a/indra/newview/skins/default/xui/en/widgets/texture_picker.xml b/indra/newview/skins/default/xui/en/widgets/texture_picker.xml index ba2fdf4f1f..1511116ba6 100644 --- a/indra/newview/skins/default/xui/en/widgets/texture_picker.xml +++ b/indra/newview/skins/default/xui/en/widgets/texture_picker.xml @@ -5,8 +5,7 @@ follows="left|top" > <multiselect_text font="SansSerifSmall"/> - <caption_text text="Multiple" - halign="center" + <caption_text halign="center" font="SansSerifSmall" v_pad="2"/> <border bevel_style="in"/> diff --git a/indra/newview/skins/default/xui/es/floater_model_preview.xml b/indra/newview/skins/default/xui/es/floater_model_preview.xml index a5229cd48c..a269add08a 100644 --- a/indra/newview/skins/default/xui/es/floater_model_preview.xml +++ b/indra/newview/skins/default/xui/es/floater_model_preview.xml @@ -245,6 +245,7 @@ </text> <check_box label="Incluir el peso de la piel" name="upload_skin"/> <check_box label="Incluir posturas de las articulaciones" name="upload_joints"/> + <check_box label="Bloquear la escala si está definida la posición de la articulación" name="lock_scale_if_joint_position"/> <text name="pelvis_offset_label"> Desplazamiento Z (subir o bajar el avatar): </text> diff --git a/indra/newview/skins/default/xui/es/floater_pay.xml b/indra/newview/skins/default/xui/es/floater_pay.xml index 567f980446..61a898adad 100644 --- a/indra/newview/skins/default/xui/es/floater_pay.xml +++ b/indra/newview/skins/default/xui/es/floater_pay.xml @@ -1,9 +1,20 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <floater name="Give Money" title=""> - <string name="payee_group">Pagar al grupo</string> - <string name="payee_resident">Pagar al residente</string> - <text name="paying_text">Vas a pagar:</text> - <text left="115" name="payee_name">Nombre de prueba demasiado largo para comprobar la función de recorte</text> + <string name="payee_group"> + Pagar al grupo + </string> + <string name="payee_resident"> + Pagar al residente + </string> + <text name="paying_text"> + Vas a pagar: + </text> + <text left="115" name="payee_name"> + Nombre de prueba demasiado largo para comprobar la función de recorte + </text> + <text name="payment_message_label"> + Descripción (opcional): + </text> <panel label="Buscar" name="PatternsPanel"> <button label="Pagar 1 L$" label_selected="Pagar 1 L$" name="fastpay 1"/> <button label="Pagar 5 L$" label_selected="Pagar 5 L$" name="fastpay 5"/> @@ -11,7 +22,9 @@ <button label="Pagar 20 L$" label_selected="Pagar 20 L$" name="fastpay 20"/> </panel> <panel label="Buscar" name="InputPanel"> - <text name="amount text">Otra cantidad:</text> + <text name="amount text"> + Otra cantidad: + </text> <button label="Pagar" label_selected="Pagar" name="pay btn"/> <button label="Cancelar" label_selected="Cancelar" name="cancel btn"/> </panel> diff --git a/indra/newview/skins/default/xui/es/floater_script_queue.xml b/indra/newview/skins/default/xui/es/floater_script_queue.xml index 39c84103c4..2dbc59e903 100644 --- a/indra/newview/skins/default/xui/es/floater_script_queue.xml +++ b/indra/newview/skins/default/xui/es/floater_script_queue.xml @@ -15,5 +15,11 @@ <floater.string name="NotRunning"> Sin ejecutarse </floater.string> + <floater.string name="Timeout"> + Tiempo de espera: [OBJECT_NAME] + </floater.string> + <floater.string name="LoadingObjInv"> + Cargando inventario de: [OBJECT_NAME] + </floater.string> <button label="Cerrar" label_selected="Cerrar" name="close"/> </floater> diff --git a/indra/newview/skins/default/xui/es/floater_web_content.xml b/indra/newview/skins/default/xui/es/floater_web_content.xml index 5e02fad2dd..3f3e2bb01e 100644 --- a/indra/newview/skins/default/xui/es/floater_web_content.xml +++ b/indra/newview/skins/default/xui/es/floater_web_content.xml @@ -10,5 +10,9 @@ <icon name="media_secure_lock_flag" tool_tip="Navegación segura"/> <button name="popexternal" tool_tip="Abrir URL actual en tu navegador de escritorio"/> </layout_panel> + <layout_panel name="debug_controls"> + <button name="web_test_home_page" tool_tip="Página principal de pruebas web"/> + <button name="VLC Plugin Test" tool_tip="Prueba de vídeo MPEG4"/> + </layout_panel> </layout_stack> </floater> diff --git a/indra/newview/skins/default/xui/es/menu_attachment_other.xml b/indra/newview/skins/default/xui/es/menu_attachment_other.xml index c92583cfc3..f1394dad05 100644 --- a/indra/newview/skins/default/xui/es/menu_attachment_other.xml +++ b/indra/newview/skins/default/xui/es/menu_attachment_other.xml @@ -7,6 +7,7 @@ <menu_item_call label="Llamada" name="Call"/> <menu_item_call label="Invitar al grupo" name="Invite..."/> <menu_item_call label="Restablecer esqueleto" name="Reset Skeleton"/> + <menu_item_call label="Restablecer esqueleto y animaciones" name="Reset Skeleton And Animations"/> <menu_item_call label="Ignorar" name="Avatar Mute"/> <menu_item_call label="Denunciar" name="abuse"/> <menu_item_call label="Congelar" name="Freeze..."/> diff --git a/indra/newview/skins/default/xui/es/menu_attachment_self.xml b/indra/newview/skins/default/xui/es/menu_attachment_self.xml index a4d09a44ab..7805db3ab4 100644 --- a/indra/newview/skins/default/xui/es/menu_attachment_self.xml +++ b/indra/newview/skins/default/xui/es/menu_attachment_self.xml @@ -10,6 +10,7 @@ <menu_item_call label="Editar mi anatomía" name="Edit My Shape"/> <menu_item_call label="Altura del avatar" name="Hover Height"/> <menu_item_call label="Restablecer esqueleto" name="Reset Skeleton"/> + <menu_item_call label="Restablecer esqueleto y animaciones" name="Reset Skeleton And Animations"/> <menu_item_call label="Mis amigos" name="Friends..."/> <menu_item_call label="Mis grupos" name="Groups..."/> <menu_item_call label="Mi perfil" name="Profile..."/> diff --git a/indra/newview/skins/default/xui/es/menu_avatar_other.xml b/indra/newview/skins/default/xui/es/menu_avatar_other.xml index e5aef03911..80f16d3e82 100644 --- a/indra/newview/skins/default/xui/es/menu_avatar_other.xml +++ b/indra/newview/skins/default/xui/es/menu_avatar_other.xml @@ -7,6 +7,7 @@ <menu_item_call label="Llamada" name="Call"/> <menu_item_call label="Invitar al grupo" name="Invite..."/> <menu_item_call label="Restablecer esqueleto" name="Reset Skeleton"/> + <menu_item_call label="Restablecer esqueleto y animaciones" name="Reset Skeleton And Animations"/> <menu_item_call label="Ignorar" name="Avatar Mute"/> <menu_item_call label="Denunciar" name="abuse"/> <menu_item_call label="Congelar" name="Freeze..."/> diff --git a/indra/newview/skins/default/xui/es/menu_avatar_self.xml b/indra/newview/skins/default/xui/es/menu_avatar_self.xml index ab14966217..bdb4771d17 100644 --- a/indra/newview/skins/default/xui/es/menu_avatar_self.xml +++ b/indra/newview/skins/default/xui/es/menu_avatar_self.xml @@ -27,6 +27,7 @@ <menu_item_call label="Editar mi anatomía" name="Edit My Shape"/> <menu_item_call label="Altura del avatar" name="Hover Height"/> <menu_item_call label="Restablecer esqueleto" name="Reset Skeleton"/> + <menu_item_call label="Restablecer esqueleto y animaciones" name="Reset Skeleton And Animations"/> <menu_item_call label="Mis amigos" name="Friends..."/> <menu_item_call label="Mis grupos" name="Groups..."/> <menu_item_call label="Mi perfil" name="Profile..."/> diff --git a/indra/newview/skins/default/xui/es/menu_login.xml b/indra/newview/skins/default/xui/es/menu_login.xml index 44e8f3ffeb..d9f8f23576 100644 --- a/indra/newview/skins/default/xui/es/menu_login.xml +++ b/indra/newview/skins/default/xui/es/menu_login.xml @@ -20,12 +20,11 @@ <menu_item_check label="Mostrar el menú 'Debug'" name="Show Debug Menu"/> <menu label="Depurar" name="Debug"> <menu_item_call label="Mostrar las configuraciones del depurador" name="Debug Settings"/> - <menu_item_call label="Configuraciones del Visor/Color" name="UI/Color Settings"/> <menu label="Pruebas de la interfaz" name="UI Tests"/> <menu_item_call label="Definir el tamaño de la ventana..." name="Set Window Size..."/> <menu_item_call label="Mostrar los 'TOS'" name="TOS"/> <menu_item_call label="Mostrar mensaje crítico" name="Critical"/> - <menu_item_call label="Prueba de depuración de ventanas de contenido web" name="Web Content Floater Debug Test"/> + <menu_item_call label="Navegador de medios" name="Media Browser"/> <menu label="Configurar el nivel de registro" name="Set Logging Level"> <menu_item_check label="Depurar" name="Debug"/> <menu_item_check label="Información" name="Info"/> diff --git a/indra/newview/skins/default/xui/es/menu_object_icon.xml b/indra/newview/skins/default/xui/es/menu_object_icon.xml index a99c889bb0..f80eb4db74 100644 --- a/indra/newview/skins/default/xui/es/menu_object_icon.xml +++ b/indra/newview/skins/default/xui/es/menu_object_icon.xml @@ -2,6 +2,7 @@ <menu name="Object Icon Menu"> <menu_item_call label="Perfil del objeto..." name="Object Profile"/> <menu_item_call label="Ignorar..." name="Block"/> + <menu_item_call label="No ignorar" name="Unblock"/> <menu_item_call label="Mostrar en el mapa" name="show_on_map"/> <menu_item_call label="Teleportarse a la posición del objeto" name="teleport_to_object"/> </menu> diff --git a/indra/newview/skins/default/xui/es/menu_outfit_gear.xml b/indra/newview/skins/default/xui/es/menu_outfit_gear.xml index 56e64c729f..b3f2b789d7 100644 --- a/indra/newview/skins/default/xui/es/menu_outfit_gear.xml +++ b/indra/newview/skins/default/xui/es/menu_outfit_gear.xml @@ -3,6 +3,10 @@ <menu_item_call label="Ponerme - Reemplazar el vestuario actual" name="wear"/> <menu_item_call label="Ponerme - Añadir al vestuario actual" name="wear_add"/> <menu_item_call label="Quitarme - Quitar del vestuario actual" name="take_off"/> + <menu_item_call label="Subir una foto (10 L$)" name="upload_photo"/> + <menu_item_call label="Seleccionar foto" name="select_photo"/> + <menu_item_call label="Hacer una foto" name="take_snapshot"/> + <menu_item_call label="Quitar foto" name="remove_photo"/> <menu label="Ropas nuevas" name="New Clothes"> <menu_item_call label="Camisa nueva" name="New Shirt"/> <menu_item_call label="Pantalón nuevo" name="New Pants"/> @@ -27,4 +31,5 @@ <menu_item_call label="Cerrar todas las carpetas" name="collapse"/> <menu_item_call label="Renombrar el vestuario" name="rename"/> <menu_item_call label="Borrar el vestuario" name="delete_outfit"/> + <menu_item_check label="Ordenar las carpetas siempre alfabéticamente" name="sort_folders_by_name"/> </toggleable_menu> diff --git a/indra/newview/skins/default/xui/es/menu_people_friends_view.xml b/indra/newview/skins/default/xui/es/menu_people_friends_view.xml index ad896c1b74..75a5aa3cad 100644 --- a/indra/newview/skins/default/xui/es/menu_people_friends_view.xml +++ b/indra/newview/skins/default/xui/es/menu_people_friends_view.xml @@ -4,5 +4,6 @@ <menu_item_check label="Ordenar por estatus" name="sort_status"/> <menu_item_check label="Ver los iconos de la gente" name="view_icons"/> <menu_item_check label="Ver permisos concedidos" name="view_permissions"/> + <menu_item_check label="Ocultar nombres de usuario" name="view_usernames"/> <menu_item_check label="Ver el registro de conversaciones..." name="view_conversation"/> </toggleable_menu> diff --git a/indra/newview/skins/default/xui/es/menu_people_nearby.xml b/indra/newview/skins/default/xui/es/menu_people_nearby.xml index 09bb119d5a..9e9f2b8191 100644 --- a/indra/newview/skins/default/xui/es/menu_people_nearby.xml +++ b/indra/newview/skins/default/xui/es/menu_people_nearby.xml @@ -13,4 +13,6 @@ <menu_item_call label="Compartir" name="share"/> <menu_item_call label="Pagar" name="pay"/> <menu_item_check label="Ignorar / No ignorar" name="block_unblock"/> + <menu_item_call label="Congelar" name="freeze"/> + <menu_item_call label="Expulsar" name="eject"/> </context_menu> diff --git a/indra/newview/skins/default/xui/es/menu_people_nearby_view.xml b/indra/newview/skins/default/xui/es/menu_people_nearby_view.xml index c2fb360dd1..c51047f04a 100644 --- a/indra/newview/skins/default/xui/es/menu_people_nearby_view.xml +++ b/indra/newview/skins/default/xui/es/menu_people_nearby_view.xml @@ -5,4 +5,5 @@ <menu_item_check label="Ordenar según distancia" name="sort_distance"/> <menu_item_check label="Ver los iconos de la gente" name="view_icons"/> <menu_item_check label="Ver mapa" name="view_map"/> + <menu_item_check label="Ocultar nombres de usuario" name="view_usernames"/> </toggleable_menu> diff --git a/indra/newview/skins/default/xui/es/menu_url_objectim.xml b/indra/newview/skins/default/xui/es/menu_url_objectim.xml index c3c8439ea2..51803e93c5 100644 --- a/indra/newview/skins/default/xui/es/menu_url_objectim.xml +++ b/indra/newview/skins/default/xui/es/menu_url_objectim.xml @@ -2,6 +2,7 @@ <context_menu name="Url Popup"> <menu_item_call label="Perfil del objeto..." name="show_object"/> <menu_item_call label="Ignorar..." name="block_object"/> + <menu_item_call label="Desbloquear" name="unblock_object"/> <menu_item_call label="Mostrar en el mapa" name="show_on_map"/> <menu_item_call label="Teleportarse a la posición del objeto" name="teleport_to_object"/> <menu_item_call label="Copiar el nombre del objeto al portapapeles" name="url_copy_label"/> diff --git a/indra/newview/skins/default/xui/es/menu_viewer.xml b/indra/newview/skins/default/xui/es/menu_viewer.xml index 07c358615c..c4986821f1 100644 --- a/indra/newview/skins/default/xui/es/menu_viewer.xml +++ b/indra/newview/skins/default/xui/es/menu_viewer.xml @@ -113,11 +113,11 @@ <menu_item_call label="Enlazar" name="Link"/> <menu_item_call label="Desenlazar" name="Unlink"/> <menu_item_check label="Editar las partes enlazadas" name="Edit Linked Parts"/> - <menu label="Seleccionar las partes enlazadas" name="Select Linked Parts"> - <menu_item_call label="Seleccionar la parte siguiente" name="Select Next Part"/> - <menu_item_call label="Seleccionar la parte previa" name="Select Previous Part"/> - <menu_item_call label="Incluir la parte siguiente" name="Include Next Part"/> - <menu_item_call label="Incluir la parte previa" name="Include Previous Part"/> + <menu label="Seleccionar elementos" name="Select Elements"> + <menu_item_call label="Seleccionar la parte o cara siguiente" name="Select Next Part or Face"/> + <menu_item_call label="Seleccionar la parte o cara anterior" name="Select Previous Part or Face"/> + <menu_item_call label="Incluir la parte o cara siguiente" name="Include Next Part or Face"/> + <menu_item_call label="Incluir la parte o cara anterior" name="Include Previous Part or Face"/> </menu> <menu_item_call label="Linksets..." name="pathfinding_linkset_menu_item"/> <menu_item_call label="Visión en lo seleccionado" name="Focus on Selection"/> @@ -332,8 +332,7 @@ <menu_item_call label="Volcar la caché de objetos de la región" name="Dump Region Object Cache"/> </menu> <menu label="UI" name="UI"> - <menu_item_call label="Prueba de navegadores de medios" name="Web Browser Test"/> - <menu_item_call label="Navegador de contenido web" name="Web Content Browser"/> + <menu_item_call label="Navegador de medios" name="Media Browser"/> <menu_item_call label="Print Selected Object Info" name="Print Selected Object Info"/> <menu_item_check label="Debug Clicks" name="Debug Clicks"/> <menu_item_check label="Debug Mouse Events" name="Debug Mouse Events"/> diff --git a/indra/newview/skins/default/xui/es/menu_wearing_tab.xml b/indra/newview/skins/default/xui/es/menu_wearing_tab.xml index 64fd7ce4cf..637a14cf5b 100644 --- a/indra/newview/skins/default/xui/es/menu_wearing_tab.xml +++ b/indra/newview/skins/default/xui/es/menu_wearing_tab.xml @@ -3,4 +3,6 @@ <menu_item_call label="Quitarme" name="take_off"/> <menu_item_call label="Quitar" name="detach"/> <menu_item_call label="Editar el vestuario" name="edit"/> + <menu_item_call label="Editar" name="edit_item"/> + <menu_item_call label="Mostrar original" name="show_original"/> </context_menu> diff --git a/indra/newview/skins/default/xui/es/mime_types.xml b/indra/newview/skins/default/xui/es/mime_types.xml index eb212344ce..74e447c707 100644 --- a/indra/newview/skins/default/xui/es/mime_types.xml +++ b/indra/newview/skins/default/xui/es/mime_types.xml @@ -22,14 +22,6 @@ Ver la película </playtip> </widgetset> - <widgetset name="none"> - <label name="none_label"> - No hay contenido - </label> - <tooltip name="none_tooltip"> - Aquí no hay contenido multimedia - </tooltip> - </widgetset> <widgetset name="image"> <label name="image_label"> Imagen @@ -52,11 +44,24 @@ Escuchar el audio de esta localización </playtip> </widgetset> + <widgetset name="none"> + <label name="none_label"> + No hay contenido + </label> + <tooltip name="none_tooltip"> + Aquí no hay contenido multimedia + </tooltip> + </widgetset> <scheme name="rtsp"> <label name="rtsp_label"> Real Time Streaming </label> </scheme> + <scheme name="libvlc"> + <label name="libvlc_label"> + Medios compatibles con LibVLC + </label> + </scheme> <mimetype name="blank"> <label name="blank_label"> - Ninguno - @@ -127,11 +132,6 @@ Macromedia Director </label> </mimetype> - <mimetype name="application/x-shockwave-flash"> - <label name="application/x-shockwave-flash_label"> - Flash - </label> - </mimetype> <mimetype name="audio/mid"> <label name="audio/mid_label"> Audio (MIDI) @@ -207,6 +207,11 @@ Película (MP4) </label> </mimetype> + <mimetype name="application/octet-stream"> + <label name="video/octet-stream"> + Película + </label> + </mimetype> <mimetype name="video/quicktime"> <label name="video/quicktime_label"> Película (QuickTime) diff --git a/indra/newview/skins/default/xui/es/notifications.xml b/indra/newview/skins/default/xui/es/notifications.xml index a67e410814..d6e686df42 100644 --- a/indra/newview/skins/default/xui/es/notifications.xml +++ b/indra/newview/skins/default/xui/es/notifications.xml @@ -326,6 +326,9 @@ Si no quieres que este rol siga teniendo dichas capacidades, deshabilítalas inm Te dispones a expulsar a [COUNT] miembros del grupo. <usetemplate ignoretext="Confirma la expulsión de varios miembros del grupo" name="okcancelignore" notext="Cancelar" yestext="Prohibir el acceso"/> </notification> + <notification name="GroupBanUserOnBanlist"> + No se ha enviado una invitación a algunos residentes porque están expulsados del grupo. + </notification> <notification name="AttachmentDrop"> Vas a soltar tu anexado. ¿Estás seguro de que quieres continuar? @@ -454,6 +457,12 @@ debes estar dentro de ella. <notification name="ErrorEncodingSnapshot"> Error al codificar la foto. </notification> + <notification name="ErrorPhotoCannotAfford"> + Necesitas [COST] L$ para guardar una foto en el inventario. Puedes comprar L$ o bien guardar la foto en tu equipo. + </notification> + <notification name="ErrorTextureCannotAfford"> + Necesitas [COST] L$ para guardar una textura en el inventario. Puedes comprar L$ o bien guardar la foto en tu equipo. + </notification> <notification name="ErrorUploadingPostcard"> Hubo un problema al enviar la foto por la siguiente razón: [REASON] </notification> @@ -570,6 +579,10 @@ o hacer una puja? ¿Deseas borrar la nota? <usetemplate name="okcancelbuttons" notext="Cancelar" yestext="OK"/> </notification> + <notification name="LoadPreviousReportScreenshot"> + ¿Deseas incluir la foto anterior en la denuncia? + <usetemplate name="okcancelbuttons" notext="Cancelar" yestext="Aceptar"/> + </notification> <notification name="GestureSaveFailedTooManySteps"> Fallo al guardar el gesto. Este gesto tiene demasiados pasos. @@ -630,30 +643,12 @@ El objeto debe de haber sido borrado o estar fuera de rango ('out of range& </url> <usetemplate ignoretext="El hardware de mi ordenador no está admitido" name="okcancelignore" notext="No" yestext="Sí"/> </notification> - <notification name="IntelOldDriver"> - Probablemente ya existe un controlador más reciente para tu procesador de gráficos. La actualización del controlador de gráficos puede mejorar sustancialmente el rendimiento. - - ¿Deseas visitar [_URL] para comprobar si hay controladores actualizados? - <url name="url"> - http://www.intel.com/p/es_XL/support/detect/graphics - </url> - <usetemplate ignoretext="Mi controlador de gráficos no está actualizado" name="okcancelignore" notext="No" yestext="Sí"/> - </notification> - <notification name="AMDOldDriver"> - Probablemente ya existe un controlador más reciente para tu procesador de gráficos. La actualización del controlador de gráficos puede mejorar sustancialmente el rendimiento. - - ¿Deseas visitar [_URL] para comprobar si hay controladores actualizados? - <url name="url"> - http://support.amd.com/us/Pages/AMDSupportHub.aspx - </url> - <usetemplate ignoretext="Mi controlador de gráficos no está actualizado" name="okcancelignore" notext="No" yestext="Sí"/> - </notification> - <notification name="NVIDIAOldDriver"> + <notification name="OldGPUDriver"> Probablemente ya existe un controlador más reciente para tu procesador de gráficos. La actualización del controlador de gráficos puede mejorar sustancialmente el rendimiento. - ¿Deseas visitar [_URL] para comprobar si hay controladores actualizados? + ¿Deseas visitar [URL] para buscar controladores actualizados? <url name="url"> - http://www.nvidia.com/Download/index.aspx?lang=es + [URL] </url> <usetemplate ignoretext="Mi controlador de gráficos no está actualizado" name="okcancelignore" notext="No" yestext="Sí"/> </notification> @@ -746,6 +741,9 @@ misma región. </url> <usetemplate name="okcancelbuttons" notext="Cancelar" yestext="OK"/> </notification> + <notification name="MuteLimitReached"> + No se puede añadir una entrada nueva a la lista de bloqueados porque has alcanzado el límite de [MUTE_LIMIT] entradas. + </notification> <notification name="UnableToLinkObjects"> No se pudo enlazar estos [COUNT] objetos. Puedes enlazar [MAX] objetos como máximo. @@ -1383,6 +1381,11 @@ Puedes usar [SECOND_LIFE] de forma normal; los demás residentes te verán corre </notification> <notification name="AgentComplexity"> La [https://community.secondlife.com/t5/English-Knowledge-Base/Avatar-Rendering-Complexity/ta-p/2967838 complejidad de tu avatar] es [AGENT_COMPLEXITY]. + <usetemplate ignoretext="Advertirme cuando cambie la complejidad de mi avatar" name="notifyignore"/> + </notification> + <notification name="HUDComplexityWarning"> + [HUD_REASON], es probable que afecte negativamente al rendimiento. + <usetemplate ignoretext="Avisarme si la complejidad de mi HUD es excesiva" name="notifyignore"/> </notification> <notification name="FirstRun"> Se ha completado la instalación de [SECOND_LIFE]. @@ -1475,6 +1478,10 @@ Por favor, selecciona sólo uno y vuelve a intentarlo. ¿Teleportar a tu base a todos los residentes en esta región? <usetemplate name="okcancelbuttons" notext="Cancelar" yestext="OK"/> </notification> + <notification name="ChangeObjectBonusFactor"> + Si disminuyes el plus de objetos cuando ya se han establecido construcciones en una región, algunos objetos se podrían eliminar o devolver. ¿Estás seguro de que quieres cambiar el plus de objetos? + <usetemplate ignoretext="Confirmar el cambio del factor de plus del objeto" name="okcancelignore" notext="Cancelar" yestext="Aceptar"/> + </notification> <notification name="EstateObjectReturn"> ¿Estás seguro de que quieres devolver los objetos propiedad de [USER_NAME] ? @@ -1523,6 +1530,9 @@ Se superan en [NUM_EXCESS] los [MAX_AGENTS] permitidos en [LIST_TYPE]. <notification name="OwnerCanNotBeDenied"> No se puede añadir a la lista de residentes no admitidos al propietario del estado. </notification> + <notification name="ProblemAddingEstateManagerBanned"> + No se puede añadir un residente expulsado a la lista de administradores de estado. + </notification> <notification name="CanNotChangeAppearanceUntilLoaded"> No puedes cambiar la apariencia hasta que no se carguen la ropa y la forma. </notification> @@ -1697,6 +1707,10 @@ Si estás impaciente por probar las nuevas funciones y correcciones, lee la pág ¿Quieres abrir tu navegador para ver este contenido? <usetemplate ignoretext="Abrir mi navegador para ver una página web" name="okcancelignore" notext="Cancelar" yestext="OK"/> </notification> + <notification name="SystemUIScaleFactorChanged"> + El factor de tamaño de IU del sistema ha cambiado desde la última ejecución. ¿Deseas abrir la página de ajustes de tamaño de la IU? + <usetemplate name="okcancelbuttons" notext="Cancelar" yestext="Aceptar"/> + </notification> <notification name="WebLaunchJoinNow"> ¿Ir al [http://secondlife.com/account/ Panel de Control] para administrar tu cuenta? <usetemplate ignoretext="Abrir mi navegador para administrar mi cuenta" name="okcancelignore" notext="Cancelar" yestext="OK"/> @@ -1736,10 +1750,17 @@ Si estás impaciente por probar las nuevas funciones y correcciones, lee la pág ¿Deseas abandonar el grupo? <usetemplate name="okcancelbuttons" notext="Cancelar" yestext="OK"/> </notification> + <notification name="GroupDepart"> + Has abandonado el grupo '[group_name]'. + </notification> <notification name="OwnerCannotLeaveGroup"> No es posible abandonar el grupo. No puedes abandonarlo porque eres su último propietario. Antes tienes que asignar el papel de propietario a otro miembro. <usetemplate name="okbutton" yestext="OK"/> </notification> + <notification name="GroupDepartError"> + No se puede abandonar el grupo. + <usetemplate name="okbutton" yestext="Aceptar"/> + </notification> <notification name="ConfirmKick"> ¿Quieres realmente expulsar a todos los residentes de la cuadrícula? <usetemplate name="okcancelbuttons" notext="Cancelar" yestext="Expulsar a todos los Residentes"/> @@ -2140,6 +2161,10 @@ Se cambiarán miles de regiones, y se provocará un colapso en el espacio del se Hay demasiados prims seleccionados. Por favor, selecciona [MAX_PRIM_COUNT] o menos y vuelve a intentarlo <usetemplate name="okbutton" yestext="OK"/> </notification> + <notification name="TooManyScriptsSelected"> + Los objetos seleccionados tienen demasiados scripts. Selecciona menos objetos y repite la operación + <usetemplate name="okbutton" yestext="Aceptar"/> + </notification> <notification name="ProblemImportingEstateCovenant"> Hay problemas al importar el contrato del estado. <usetemplate name="okbutton" yestext="OK"/> @@ -2308,6 +2333,10 @@ Dado que estos objetos tienen scripts, moverlos a tu inventario puede provocar u Error en el pago: no se encuentra el objeto. <usetemplate name="okbutton" yestext="OK"/> </notification> + <notification name="PaymentBlockedButtonMismatch"> + Pago suspendido: el precio pagado no coincide con ninguno de los botones de pago asociados a este objeto. + <usetemplate name="okbutton" yestext="Aceptar"/> + </notification> <notification name="OpenObjectCannotCopy"> En este objeto, no hay ítems que estés autorizado a copiar. </notification> @@ -2343,6 +2372,12 @@ Esta acción no se puede deshacer. La selección es grande y contiene linksets. Si la desenlazas, quizás no puedas volver establecer los vínculos. Puede ser conveniente guardar copias de los linksets como medida de precaución. <usetemplate ignoretext="Confirmar que desenlazas un linkset" name="okcancelignore" notext="Cancelar" yestext="Desenlazar"/> </notification> + <notification name="HelpReportAbuseConfirm"> + Gracias por informarnos de este asunto. +Comprobaremos si tu denuncia contiene posibles transgresiones +y tomaremos las medidas oportunas. + <usetemplate name="okbutton" yestext="Aceptar"/> + </notification> <notification name="HelpReportAbuseSelectCategory"> Por favor, elige una categoría para esta denuncia de infracción. Seleccionar una categoría nos ayuda a clasificar y procesar las denuncias de infracciones. @@ -2770,6 +2805,10 @@ Aquí no puedes volar. <notification name="PathfindingDirty"> La región contiene cambios de pathfinding pendientes. Si tienes derechos de construcción, puedes recargarla pulsando el botón “Recargar región”. </notification> + <notification name="PathfindingDirtyRebake"> + La región contiene cambios de pathfinding pendientes. Si tienes derechos de construcción, puedes recargarla pulsando el botón “Recargar región”. + <usetemplate name="okbutton" yestext="Recargar la región"/> + </notification> <notification name="DynamicPathfindingDisabled"> Esta región no tiene activado el pathfinding dinámico. Los objetos programados que utilicen llamadas LSL de pathfinding pueden tener un comportamiento inesperado en ella. </notification> @@ -3269,11 +3308,13 @@ Por tu seguridad, serán bloqueadas durante unos segundos. El aspecto se ha guardado como XML en [PATH] </notification> <notification name="AppearanceToXMLFailed"> - Error al guardar el aspecto como XML. - icon="notifytip.tga" - name="PresetNotDeleted" - type="notifytip"> -Error al eliminar el valor predefinido [NAME]. + Error al guardar el aspecto en XML. + </notification> + <notification name="PresetNotSaved"> + Error al guardar el valor predefinido [NAME]. + </notification> + <notification name="PresetNotDeleted"> + Error al eliminar el valor predefinido [NAME]. </notification> <notification name="UnableToFindHelpTopic"> No se ha podido encontrar un tema de ayuda para este elemento. @@ -3480,13 +3521,6 @@ Al ocultar el botón Hablar se desactiva la función de voz. <notification name="ForceQuitDueToLowMemory"> SL saldrá en 30 segundos porque no hay memoria suficiente. </notification> - <notification name="PopupAttempt"> - Se ha impedido que se abriera una ventana emergente. - <form name="form"> - <ignore name="ignore" text="Permitir todas las ventanas emergentes"/> - <button name="open" text="Abrir ventana emergente"/> - </form> - </notification> <notification name="SOCKS_NOT_PERMITTED"> El proxy SOCKS 5 "[HOST]:[PORT]" ha rechazado la conexión, no está permitida por el juego de reglas. <usetemplate name="okbutton" yestext="OK"/> @@ -3861,6 +3895,9 @@ Prueba otra vez dentro de un minuto. No se puede mover el objeto '[OBJECT_NAME]' a [OBJ_POSITION] de la región [REGION_NAME] porque no hay suficientes recursos para este objeto en esta parcela. </notification> + <notification name="NoParcelPermsNoObject"> + Error al copiar: no tienes acceso a esa parcela. + </notification> <notification name="CantMoveObjectRegionVersion"> No se puede mover el objeto '[OBJECT_NAME]' a [OBJ_POSITION] de la región [REGION_NAME] porque la otra región ejecuta una versión más antigua que no admite la recepción de este objeto atravesando regiones. @@ -3876,6 +3913,10 @@ Prueba otra vez dentro de un minuto. <notification name="NoPermModifyObject"> No tienes permiso para modificar ese objeto </notification> + <notification name="TooMuchObjectInventorySelected"> + Están seleccionados demasiados objetos con un inventario grande. Selecciona menos objetos y repite la operación. + <usetemplate name="okbutton" yestext="Aceptar"/> + </notification> <notification name="CantEnablePhysObjContributesToNav"> No se puede habilitar la física para un objeto que contribuye al navmesh. </notification> @@ -3912,6 +3953,12 @@ Prueba otra vez dentro de un minuto. <notification name="CantSaveModifyAttachment"> No se puede guardar en el contenido del objeto: se modificarían los permisos de anexo. </notification> + <notification name="AttachmentHasTooMuchInventory"> + El inventario de tus anexos ya es excesivo, por lo que no se puede añadir más. + </notification> + <notification name="IllegalAttachment"> + El anexo ha solicitado un punto que no existe en el avatar. Por tanto, se ha anexado al pecho. + </notification> <notification name="TooManyScripts"> Demasiados scripts. </notification> @@ -4004,6 +4051,12 @@ Prueba otra vez dentro de un minuto. <notification name="TeleportedByObjectUnknownUser"> Has sido teleportado por el objeto '[OBJECT_NAME]' cuyo propietario es un usuario desconocido. </notification> + <notification name="StandDeniedByObject"> + '[OBJECT_NAME]' no te permite ponerte de pie en este momento. + </notification> + <notification name="ResitDeniedByObject"> + '[OBJECT_NAME]' no te permite cambiar de asiento en este momento. + </notification> <notification name="CantCreateObjectRegionFull"> No se puede crear el objeto solicitado. La región está llena. </notification> @@ -4085,9 +4138,6 @@ Prueba otra vez dentro de un minuto. <notification name="CantAttachNotEnoughScriptResources"> No hay suficientes recursos de script disponibles para anexar el objeto </notification> - <notification name="IllegalAttachment"> - El anexo ha solicitado un punto que no existe en el avatar. Por tanto, se ha anexado al pecho. - </notification> <notification name="CantDropItemTrialUser"> No se pueden soltar objetos aquí; inténtalo en la zona de prueba gratuita. </notification> @@ -4303,6 +4353,9 @@ Prueba a seleccionar un terreno más pequeño. <notification name="CantTransfterMoneyRegionDisabled"> En esta región actualmente no están activadas las transferencias de dinero a los objetos. </notification> + <notification name="DroppedMoneyTransferRequest"> + No se puede efectuar el pago por sobrecarga del sistema. + </notification> <notification name="CantPayNoAgent"> No se ha averiguado a quién se debe pagar. </notification> @@ -4338,4 +4391,8 @@ Prueba a seleccionar un terreno más pequeño. El archivo de historial de chat todavía está realizando la operación anterior. Repite la operación dentro de unos minutos o inicia un chat con otra persona. <usetemplate name="okbutton" yestext="OK"/> </notification> + <notification name="OutfitPhotoLoadError"> + [REASON] + <usetemplate name="okbutton" yestext="Aceptar"/> + </notification> </notifications> diff --git a/indra/newview/skins/default/xui/es/panel_outfits_inventory.xml b/indra/newview/skins/default/xui/es/panel_outfits_inventory.xml index 1107e72b54..5fff5b07c6 100644 --- a/indra/newview/skins/default/xui/es/panel_outfits_inventory.xml +++ b/indra/newview/skins/default/xui/es/panel_outfits_inventory.xml @@ -7,6 +7,7 @@ Ponerme ítems seleccionados </panel.string> <tab_container name="appearance_tabs"> + <panel label="GALERÍA DE VESTUARIO" name="outfit_gallery_tab"/> <panel label="MIS VESTUARIOS" name="outfitslist_tab"/> <panel label="PUESTO" name="cof_tab"/> </tab_container> diff --git a/indra/newview/skins/default/xui/es/panel_outfits_wearing.xml b/indra/newview/skins/default/xui/es/panel_outfits_wearing.xml index 8cea619bd5..508267a327 100644 --- a/indra/newview/skins/default/xui/es/panel_outfits_wearing.xml +++ b/indra/newview/skins/default/xui/es/panel_outfits_wearing.xml @@ -1,6 +1,13 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <panel name="Wearing"> + <panel.string name="no_attachments"> + No tienes puestos anexos. + </panel.string> + <accordion name="wearables_accordion"> + <accordion_tab name="tab_wearables" title="Artículos de vestir"/> + <accordion_tab name="tab_temp_attachments" title="Anexos temporales"/> + </accordion> <panel name="bottom_panel"> - <button name="options_gear_btn" tool_tip="Ver más opciones"/> + <menu_button name="options_gear_btn" tool_tip="Ver más opciones"/> </panel> </panel> diff --git a/indra/newview/skins/default/xui/es/panel_preferences_setup.xml b/indra/newview/skins/default/xui/es/panel_preferences_setup.xml index 4fc973614b..0b3ca03bcc 100644 --- a/indra/newview/skins/default/xui/es/panel_preferences_setup.xml +++ b/indra/newview/skins/default/xui/es/panel_preferences_setup.xml @@ -30,6 +30,7 @@ <combo_box.item label="Descargaré e instalaré manualmente las actualizaciones" name="Install_manual"/> </combo_box> <check_box label="Admitir candidatos a la versión comercial a la hora de realizar actualizaciones" name="update_willing_to_test"/> + <check_box label="Mostrar las notas de la versión después de la actualización" name="update_show_release_notes"/> <text name="Proxy Settings:"> Configuración de proxy: </text> diff --git a/indra/newview/skins/default/xui/es/strings.xml b/indra/newview/skins/default/xui/es/strings.xml index 4e20793d86..192d32c267 100644 --- a/indra/newview/skins/default/xui/es/strings.xml +++ b/indra/newview/skins/default/xui/es/strings.xml @@ -52,17 +52,34 @@ Tarjeta gráfica: [GRAPHICS_CARD] <string name="AboutDriver"> Versión de Windows Graphics Driver: [GRAPHICS_DRIVER_VERSION] </string> - <string name="AboutLibs"> + <string name="AboutOGL"> Versión de OpenGL: [OPENGL_VERSION] - -Versión de J2C Decoder: [J2C_VERSION] + </string> + <string name="AboutSettings"> + Tamaño de la ventana: [WINDOW_WIDTH]x[WINDOW_HEIGHT] +Ajuste de tamaño de fuente: [FONT_SIZE_ADJUSTMENT]pt +Ajuste de escala de IU: [UI_SCALE] +Distancia de dibujo: [DRAW_DISTANCE]m +Ancho de banda: [NET_BANDWITH]kbit/s +Factor de LOD: [LOD_FACTOR] +Calidad de renderizado: [RENDER_QUALITY] / 7 +Modelo de iluminación avanzado: [GPU_SHADERS] +Memoria de textura: [TEXTURE_MEMORY]MB +Tiempo de creación de VFS (caché): [VFS_TIME] + </string> + <string name="AboutLibs"> + Versión de J2C Decoder: [J2C_VERSION] Versión de Audio Driver: [AUDIO_DRIVER_VERSION] Versión de LLCEFLib/CEF: [LLCEFLIB_VERSION] +Versión de LibVLC: [LLCEFLIB_VERSION] Versión de Voice Server: [VOICE_VERSION] </string> <string name="AboutTraffic"> Paquetes perdidos: [PACKETS_LOST,number,0]/[PACKETS_IN,number,0] ([PACKETS_PCT,number,1]%) </string> + <string name="AboutTime"> + [mes, fecha_hora, slt] [día, fecha_hora, slt] [año, fecha_hora, slt] [hora, fecha_hora, slt]:[min, fecha_hora, slt]:[segundo,fecha_hora,slt] + </string> <string name="ErrorFetchingServerReleaseNotesURL"> Error al obtener la URL de las notas de la versión del servidor. </string> @@ -1074,6 +1091,9 @@ Intenta iniciar sesión de nuevo en unos instantes. <string name="TeleportYourAgent"> Teleportarte </string> + <string name="ForceSitAvatar"> + Forzar que el avatar se siente + </string> <string name="AgentNameSubst"> (Tú) </string> @@ -1913,6 +1933,27 @@ Intenta iniciar sesión de nuevo en unos instantes. <string name="av_render_anyone"> Es posible que ninguno de los que están próximos pueda renderizarte. </string> + <string name="hud_description_total"> + Tu HUD + </string> + <string name="hud_name_with_joint"> + [OBJ_NAME] (lo llevas en [JNT_NAME]) + </string> + <string name="hud_render_memory_warning"> + [HUD_DETAILS] usa mucha memoria de textura + </string> + <string name="hud_render_cost_warning"> + [HUD_DETAILS] contiene muchas texturas y objetos complicados + </string> + <string name="hud_render_heavy_textures_warning"> + [HUD_DETAILS] contiene muchas texturas grandes + </string> + <string name="hud_render_cramped_warning"> + [HUD_DETAILS] contiene demasiados objetos + </string> + <string name="hud_render_textures_warning"> + [HUD_DETAILS] contiene demasiadas texturas + </string> <string name="AgeYearsA"> [COUNT] año </string> @@ -2072,6 +2113,9 @@ Intenta iniciar sesión de nuevo en unos instantes. <string name="ObjectOutOfRange"> Script (objeto fuera de rango) </string> + <string name="ScriptWasDeleted"> + Script (eliminado del inventario) + </string> <string name="GodToolsObjectOwnedBy"> El objeto [OBJECT] es propiedad de [OWNER] </string> @@ -2642,6 +2686,15 @@ Se esperaba .wav, .tga, .bmp, .jpg, .jpeg, o .bvh <string name="Play Media"> Play/Pausa los media </string> + <string name="IntelDriverPage"> + http://www.intel.com/p/en_US/support/detect/graphics + </string> + <string name="NvidiaDriverPage"> + http://www.nvidia.com/Download/index.aspx?lang=es + </string> + <string name="AMDDriverPage"> + http://support.amd.com/us/Pages/AMDSupportHub.aspx + </string> <string name="MBCmdLineError"> Ha habido un error analizando la línea de comando. Por favor, consulta: http://wiki.secondlife.com/wiki/Client_parameters @@ -4393,12 +4446,18 @@ Si sigues recibiendo este mensaje, contacta con [SUPPORT_SITE]. <string name="paid_you_ldollars"> [NAME] te ha pagado [AMOUNT] L$ [REASON]. </string> + <string name="paid_you_ldollars_gift"> + [NAME] te ha pagado [AMOUNT] L$: [REASON] + </string> <string name="paid_you_ldollars_no_reason"> [NAME] te ha pagado [AMOUNT] L$. </string> <string name="you_paid_ldollars"> Has pagado [AMOUNT] L$ a [NAME] por [REASON]. </string> + <string name="you_paid_ldollars_gift"> + Has pagado [AMOUNT] L$ a [NAME]: [REASON] + </string> <string name="you_paid_ldollars_no_info"> Has pagado[AMOUNT] L$ </string> @@ -4411,6 +4470,9 @@ Si sigues recibiendo este mensaje, contacta con [SUPPORT_SITE]. <string name="you_paid_failure_ldollars"> No has pagado a [NAME] [AMOUNT] L$ [REASON]. </string> + <string name="you_paid_failure_ldollars_gift"> + No has pagado a [NAME] [AMOUNT] L$: [REASON] + </string> <string name="you_paid_failure_ldollars_no_info"> No has pagado [AMOUNT] L$. </string> @@ -4737,6 +4799,15 @@ Denuncia de infracción <string name="texture_load_dimensions_error"> No se puede subir imágenes mayores de [WIDTH]*[HEIGHT] </string> + <string name="outfit_photo_load_dimensions_error"> + La foto del vestuario puede tener como máx. un tamaño de [WIDTH]*[HEIGHT]. Cambia el tamaño o utiliza otra imagen + </string> + <string name="outfit_photo_select_dimensions_error"> + La foto del vestuario puede tener como máx. un tamaño de [WIDTH]*[HEIGHT]. Selecciona otra textura + </string> + <string name="outfit_photo_verify_dimensions_error"> + No se pueden verificar las dimensiones de la foto. Espera hasta que aparezca el tamaño de la foto en el selector + </string> <string name="words_separator" value=","/> <string name="server_is_down"> Parece que hay algún problema que ha escapado a nuestros controles. @@ -5241,6 +5312,9 @@ Inténtalo incluyendo la ruta de acceso al editor entre comillas <string name="Command_Profile_Label"> Perfil </string> + <string name="Command_Report_Abuse_Label"> + Denunciar una infracción + </string> <string name="Command_Search_Label"> Buscar </string> @@ -5331,6 +5405,9 @@ Inténtalo incluyendo la ruta de acceso al editor entre comillas <string name="Command_Profile_Tooltip"> Consulta o edita tu perfil </string> + <string name="Command_Report_Abuse_Tooltip"> + Denunciar una infracción + </string> <string name="Command_Search_Tooltip"> Buscar lugares, eventos y personas </string> diff --git a/indra/newview/skins/default/xui/fr/floater_model_preview.xml b/indra/newview/skins/default/xui/fr/floater_model_preview.xml index d3d941ff5c..4ebc196fd1 100644 --- a/indra/newview/skins/default/xui/fr/floater_model_preview.xml +++ b/indra/newview/skins/default/xui/fr/floater_model_preview.xml @@ -245,6 +245,7 @@ </text> <check_box label="Inclure pondération de la peau :" name="upload_skin"/> <check_box label="Inclure position des articulations :" name="upload_joints"/> + <check_box label="Verrouiller l’échelle si la position des articulations est définie" name="lock_scale_if_joint_position"/> <text name="pelvis_offset_label"> Décalage Z (élever/abaisser l'avatar) : </text> diff --git a/indra/newview/skins/default/xui/fr/floater_pay.xml b/indra/newview/skins/default/xui/fr/floater_pay.xml index bbd20e868c..190a1f5369 100644 --- a/indra/newview/skins/default/xui/fr/floater_pay.xml +++ b/indra/newview/skins/default/xui/fr/floater_pay.xml @@ -1,9 +1,20 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <floater name="Give Money" title=""> - <string name="payee_group">Payer le groupe</string> - <string name="payee_resident">Payer le résident</string> - <text name="paying_text">Vous payez :</text> - <text name="payee_name">Test Name That Is Extremely Long To Check Clipping</text> + <string name="payee_group"> + Payer le groupe + </string> + <string name="payee_resident"> + Payer le résident + </string> + <text name="paying_text"> + Vous payez : + </text> + <text name="payee_name"> + Test Name That Is Extremely Long To Check Clipping + </text> + <text name="payment_message_label"> + Description (facultative) : + </text> <panel label="Rechercher" name="PatternsPanel"> <button label="Payer 1 L$" label_selected="Payer 1 L$" name="fastpay 1"/> <button label="Payer 5 L$" label_selected="Payer 5 L$" name="fastpay 5"/> @@ -11,7 +22,9 @@ <button label="Payer 20 L$" label_selected="Payer 20 L$" name="fastpay 20"/> </panel> <panel label="Rechercher" name="InputPanel"> - <text name="amount text">Autre montant :</text> + <text name="amount text"> + Autre montant : + </text> <button label="Payer" label_selected="Payer" name="pay btn"/> <button label="Annuler" label_selected="Annuler" name="cancel btn"/> </panel> diff --git a/indra/newview/skins/default/xui/fr/floater_preferences_graphics_advanced.xml b/indra/newview/skins/default/xui/fr/floater_preferences_graphics_advanced.xml index d3c4dcfa27..42cc2e6dac 100644 --- a/indra/newview/skins/default/xui/fr/floater_preferences_graphics_advanced.xml +++ b/indra/newview/skins/default/xui/fr/floater_preferences_graphics_advanced.xml @@ -15,7 +15,7 @@ <text name="AvatarText"> Avatar </text> - <slider label="Complexité max. :" name="IndirectMaxComplexity" tool_tip="Contrôle à quel moment un avatar complexe est représenté comme un « jelly baby »"/> + <slider label="Complexité max. :" name="IndirectMaxComplexity" tool_tip="Contrôle à quel moment un avatar complexe est représenté comme un « JellyDoll »"/> <text name="IndirectMaxComplexityText"> 0 </text> diff --git a/indra/newview/skins/default/xui/fr/floater_script_queue.xml b/indra/newview/skins/default/xui/fr/floater_script_queue.xml index b9a8165457..15cc182ff9 100644 --- a/indra/newview/skins/default/xui/fr/floater_script_queue.xml +++ b/indra/newview/skins/default/xui/fr/floater_script_queue.xml @@ -15,5 +15,11 @@ <floater.string name="NotRunning"> Arrêt </floater.string> + <floater.string name="Timeout"> + Délai : [OBJECT_NAME] + </floater.string> + <floater.string name="LoadingObjInv"> + Chargement de l’inventaire pour : [OBJECT_NAME] + </floater.string> <button label="Fermer" label_selected="Fermer" name="close"/> </floater> diff --git a/indra/newview/skins/default/xui/fr/floater_web_content.xml b/indra/newview/skins/default/xui/fr/floater_web_content.xml index 65dfafe760..015396b2dd 100644 --- a/indra/newview/skins/default/xui/fr/floater_web_content.xml +++ b/indra/newview/skins/default/xui/fr/floater_web_content.xml @@ -10,5 +10,9 @@ <icon name="media_secure_lock_flag" tool_tip="Navigation sécurisée"/> <button name="popexternal" tool_tip="Ouvrir l'URL actuelle dans votre navigateur de bureau"/> </layout_panel> + <layout_panel name="debug_controls"> + <button name="web_test_home_page" tool_tip="Tests Web de la page d’accueil"/> + <button name="VLC Plugin Test" tool_tip="Test vidéo MPEG4"/> + </layout_panel> </layout_stack> </floater> diff --git a/indra/newview/skins/default/xui/fr/menu_attachment_other.xml b/indra/newview/skins/default/xui/fr/menu_attachment_other.xml index fd8112429e..ae19e78d54 100644 --- a/indra/newview/skins/default/xui/fr/menu_attachment_other.xml +++ b/indra/newview/skins/default/xui/fr/menu_attachment_other.xml @@ -7,6 +7,7 @@ <menu_item_call label="Appeler" name="Call"/> <menu_item_call label="Inviter dans le groupe" name="Invite..."/> <menu_item_call label="Réinitialiser le squelette" name="Reset Skeleton"/> + <menu_item_call label="Réinitialiser le squelette et les animations" name="Reset Skeleton And Animations"/> <menu_item_call label="Ignorer" name="Avatar Mute"/> <menu_item_call label="Signaler" name="abuse"/> <menu_item_call label="Figer" name="Freeze..."/> diff --git a/indra/newview/skins/default/xui/fr/menu_attachment_self.xml b/indra/newview/skins/default/xui/fr/menu_attachment_self.xml index f3089ad3bb..f354cf3896 100644 --- a/indra/newview/skins/default/xui/fr/menu_attachment_self.xml +++ b/indra/newview/skins/default/xui/fr/menu_attachment_self.xml @@ -10,6 +10,7 @@ <menu_item_call label="Modifier ma silhouette" name="Edit My Shape"/> <menu_item_call label="Hauteur de sustentation" name="Hover Height"/> <menu_item_call label="Réinitialiser le squelette" name="Reset Skeleton"/> + <menu_item_call label="Réinitialiser le squelette et les animations" name="Reset Skeleton And Animations"/> <menu_item_call label="Mes amis" name="Friends..."/> <menu_item_call label="Mes groupes" name="Groups..."/> <menu_item_call label="Mon profil" name="Profile..."/> diff --git a/indra/newview/skins/default/xui/fr/menu_avatar_other.xml b/indra/newview/skins/default/xui/fr/menu_avatar_other.xml index b97c4b0f48..2a0ae38605 100644 --- a/indra/newview/skins/default/xui/fr/menu_avatar_other.xml +++ b/indra/newview/skins/default/xui/fr/menu_avatar_other.xml @@ -7,6 +7,7 @@ <menu_item_call label="Appeler" name="Call"/> <menu_item_call label="Inviter dans le groupe" name="Invite..."/> <menu_item_call label="Réinitialiser le squelette" name="Reset Skeleton"/> + <menu_item_call label="Réinitialiser le squelette et les animations" name="Reset Skeleton And Animations"/> <menu_item_call label="Ignorer" name="Avatar Mute"/> <menu_item_call label="Signaler" name="abuse"/> <menu_item_call label="Figer" name="Freeze..."/> diff --git a/indra/newview/skins/default/xui/fr/menu_avatar_self.xml b/indra/newview/skins/default/xui/fr/menu_avatar_self.xml index a4c1df8cee..2d0a17832f 100644 --- a/indra/newview/skins/default/xui/fr/menu_avatar_self.xml +++ b/indra/newview/skins/default/xui/fr/menu_avatar_self.xml @@ -27,6 +27,7 @@ <menu_item_call label="Modifier ma silhouette" name="Edit My Shape"/> <menu_item_call label="Hauteur de sustentation" name="Hover Height"/> <menu_item_call label="Réinitialiser le squelette" name="Reset Skeleton"/> + <menu_item_call label="Réinitialiser le squelette et les animations" name="Reset Skeleton And Animations"/> <menu_item_call label="Mes amis" name="Friends..."/> <menu_item_call label="Mes groupes" name="Groups..."/> <menu_item_call label="Mon profil" name="Profile..."/> diff --git a/indra/newview/skins/default/xui/fr/menu_login.xml b/indra/newview/skins/default/xui/fr/menu_login.xml index c425e6cee7..7fd68baf67 100644 --- a/indra/newview/skins/default/xui/fr/menu_login.xml +++ b/indra/newview/skins/default/xui/fr/menu_login.xml @@ -20,13 +20,12 @@ <menu_item_check label="Afficher le menu de débogage" name="Show Debug Menu"/> <menu label="Débogage" name="Debug"> <menu_item_call label="Afficher les paramètres de débogage" name="Debug Settings"/> - <menu_item_call label="Paramètres de couleurs/interface" name="UI/Color Settings"/> <menu_item_call label="Outil d'aperçu XUI" name="UI Preview Tool"/> <menu label="Tests de l'interface" name="UI Tests"/> <menu_item_call label="Définir la taille de la fenêtre..." name="Set Window Size..."/> <menu_item_call label="Afficher les conditions d'utilisation" name="TOS"/> <menu_item_call label="Afficher le message critique" name="Critical"/> - <menu_item_call label="Test de débogage de la fenêtre flottante du contenu Web" name="Web Content Floater Debug Test"/> + <menu_item_call label="Navigateur de médias" name="Media Browser"/> <menu label="Définir le niveau de connexion" name="Set Logging Level"> <menu_item_check label="Débogage" name="Debug"/> <menu_item_check label="Infos" name="Info"/> diff --git a/indra/newview/skins/default/xui/fr/menu_object_icon.xml b/indra/newview/skins/default/xui/fr/menu_object_icon.xml index 7c94930160..5d41ff5103 100644 --- a/indra/newview/skins/default/xui/fr/menu_object_icon.xml +++ b/indra/newview/skins/default/xui/fr/menu_object_icon.xml @@ -2,6 +2,7 @@ <menu name="Object Icon Menu"> <menu_item_call label="Profil de l'objet..." name="Object Profile"/> <menu_item_call label="Ignorer..." name="Block"/> + <menu_item_call label="Ne plus ignorer" name="Unblock"/> <menu_item_call label="Voir sur la carte" name="show_on_map"/> <menu_item_call label="Me téléporter à l’emplacement de l'objet" name="teleport_to_object"/> </menu> diff --git a/indra/newview/skins/default/xui/fr/menu_outfit_gear.xml b/indra/newview/skins/default/xui/fr/menu_outfit_gear.xml index 21b19eded6..28ae2f74ad 100644 --- a/indra/newview/skins/default/xui/fr/menu_outfit_gear.xml +++ b/indra/newview/skins/default/xui/fr/menu_outfit_gear.xml @@ -3,6 +3,10 @@ <menu_item_call label="Porter - Remplacer la tenue actuelle" name="wear"/> <menu_item_call label="Porter - Ajouter à la tenue actuelle" name="wear_add"/> <menu_item_call label="Enlever - Supprimer de la tenue actuelle" name="take_off"/> + <menu_item_call label="Charger la photo (10 L$)" name="upload_photo"/> + <menu_item_call label="Sélectionner une photo" name="select_photo"/> + <menu_item_call label="Prendre une photo" name="take_snapshot"/> + <menu_item_call label="Supprimer la photo" name="remove_photo"/> <menu label="Nouveaux habits" name="New Clothes"> <menu_item_call label="Nouvelle chemise" name="New Shirt"/> <menu_item_call label="Nouveau pantalon" name="New Pants"/> @@ -27,4 +31,5 @@ <menu_item_call label="Réduire tous les dossiers" name="collapse"/> <menu_item_call label="Renommer la tenue" name="rename"/> <menu_item_call label="Supprimer la tenue" name="delete_outfit"/> + <menu_item_check label="Toujours trier les dossiers par nom" name="sort_folders_by_name"/> </toggleable_menu> diff --git a/indra/newview/skins/default/xui/fr/menu_people_friends_view.xml b/indra/newview/skins/default/xui/fr/menu_people_friends_view.xml index cc81172462..45cb646b9a 100644 --- a/indra/newview/skins/default/xui/fr/menu_people_friends_view.xml +++ b/indra/newview/skins/default/xui/fr/menu_people_friends_view.xml @@ -4,5 +4,6 @@ <menu_item_check label="Trier par statut" name="sort_status"/> <menu_item_check label="Afficher les icônes des résidents" name="view_icons"/> <menu_item_check label="Afficher les droits octroyés" name="view_permissions"/> + <menu_item_check label="Masquer les noms d’utilisateur" name="view_usernames"/> <menu_item_check label="Afficher le journal des conversations..." name="view_conversation"/> </toggleable_menu> diff --git a/indra/newview/skins/default/xui/fr/menu_people_nearby.xml b/indra/newview/skins/default/xui/fr/menu_people_nearby.xml index 6f7d02ef74..cbc3156a8f 100644 --- a/indra/newview/skins/default/xui/fr/menu_people_nearby.xml +++ b/indra/newview/skins/default/xui/fr/menu_people_nearby.xml @@ -13,4 +13,6 @@ <menu_item_call label="Partager" name="share"/> <menu_item_call label="Payer" name="pay"/> <menu_item_check label="Ignorer/Ne plus ignorer" name="block_unblock"/> + <menu_item_call label="Figer" name="freeze"/> + <menu_item_call label="Expulser" name="eject"/> </context_menu> diff --git a/indra/newview/skins/default/xui/fr/menu_people_nearby_view.xml b/indra/newview/skins/default/xui/fr/menu_people_nearby_view.xml index 086002dce5..9da915fcc5 100644 --- a/indra/newview/skins/default/xui/fr/menu_people_nearby_view.xml +++ b/indra/newview/skins/default/xui/fr/menu_people_nearby_view.xml @@ -5,4 +5,5 @@ <menu_item_check label="Trier par distance" name="sort_distance"/> <menu_item_check label="Afficher les icônes des résidents" name="view_icons"/> <menu_item_check label="Afficher la carte" name="view_map"/> + <menu_item_check label="Masquer les noms d’utilisateur" name="view_usernames"/> </toggleable_menu> diff --git a/indra/newview/skins/default/xui/fr/menu_url_objectim.xml b/indra/newview/skins/default/xui/fr/menu_url_objectim.xml index 5d745ef5f8..95310dd1f1 100644 --- a/indra/newview/skins/default/xui/fr/menu_url_objectim.xml +++ b/indra/newview/skins/default/xui/fr/menu_url_objectim.xml @@ -2,6 +2,7 @@ <context_menu name="Url Popup"> <menu_item_call label="Profil de l'objet…" name="show_object"/> <menu_item_call label="Ignorer…" name="block_object"/> + <menu_item_call label="Ne plus ignorer" name="unblock_object"/> <menu_item_call label="Voir sur la carte" name="show_on_map"/> <menu_item_call label="Me téléporter à l'emplacement de l'objet" name="teleport_to_object"/> <menu_item_call label="Copier le nom de l'objet dans le presse-papiers" name="url_copy_label"/> diff --git a/indra/newview/skins/default/xui/fr/menu_viewer.xml b/indra/newview/skins/default/xui/fr/menu_viewer.xml index 3c9f5c2aa9..d40e979d08 100644 --- a/indra/newview/skins/default/xui/fr/menu_viewer.xml +++ b/indra/newview/skins/default/xui/fr/menu_viewer.xml @@ -113,11 +113,11 @@ <menu_item_call label="Lien" name="Link"/> <menu_item_call label="Annuler le lien" name="Unlink"/> <menu_item_check label="Modifier les parties liées" name="Edit Linked Parts"/> - <menu label="Sélectionner les parties liées" name="Select Linked Parts"> - <menu_item_call label="Sélectionner la partie suivante" name="Select Next Part"/> - <menu_item_call label="Sélectionner la partie précédente" name="Select Previous Part"/> - <menu_item_call label="Inclure la partie suivante" name="Include Next Part"/> - <menu_item_call label="Inclure la partie précédente" name="Include Previous Part"/> + <menu label="Sélectionner des éléments" name="Select Elements"> + <menu_item_call label="Sélectionner la partie suivante ou le visage" name="Select Next Part or Face"/> + <menu_item_call label="Sélectionner la partie précédente ou le visage" name="Select Previous Part or Face"/> + <menu_item_call label="Inclure la partie suivante ou le visage" name="Include Next Part or Face"/> + <menu_item_call label="Inclure la partie précédente ou le visage" name="Include Previous Part or Face"/> </menu> <menu_item_call label="Groupes de liens..." name="pathfinding_linkset_menu_item"/> <menu_item_call label="Point central sur la sélection" name="Focus on Selection"/> @@ -368,8 +368,7 @@ <menu_item_call label="Vidage de cache d'objet de la région" name="Dump Region Object Cache"/> </menu> <menu label="Interface" name="UI"> - <menu_item_call label="Test du navigateur de médias" name="Web Browser Test"/> - <menu_item_call label="Navigateur du contenu Web" name="Web Content Browser"/> + <menu_item_call label="Navigateur de médias" name="Media Browser"/> <menu_item_call label="Dump SelectMgr" name="Dump SelectMgr"/> <menu_item_call label="Dump inventaire" name="Dump Inventory"/> <menu_item_call label="Dump Timers" name="Dump Timers"/> diff --git a/indra/newview/skins/default/xui/fr/menu_wearing_tab.xml b/indra/newview/skins/default/xui/fr/menu_wearing_tab.xml index 4d88445506..5a7193a7cc 100644 --- a/indra/newview/skins/default/xui/fr/menu_wearing_tab.xml +++ b/indra/newview/skins/default/xui/fr/menu_wearing_tab.xml @@ -3,4 +3,6 @@ <menu_item_call label="Enlever" name="take_off"/> <menu_item_call label="Détacher" name="detach"/> <menu_item_call label="Modifier la tenue" name="edit"/> + <menu_item_call label="Modifier" name="edit_item"/> + <menu_item_call label="Afficher l’original" name="show_original"/> </context_menu> diff --git a/indra/newview/skins/default/xui/fr/mime_types.xml b/indra/newview/skins/default/xui/fr/mime_types.xml index 322887fb76..15b1dc5a23 100644 --- a/indra/newview/skins/default/xui/fr/mime_types.xml +++ b/indra/newview/skins/default/xui/fr/mime_types.xml @@ -22,14 +22,6 @@ Jouer le film </playtip> </widgetset> - <widgetset name="none"> - <label name="none_label"> - Aucun contenu - </label> - <tooltip name="none_tooltip"> - Aucun média ici - </tooltip> - </widgetset> <widgetset name="image"> <label name="image_label"> Image @@ -52,11 +44,24 @@ Jouer le contenu audio qui se trouve ici </playtip> </widgetset> + <widgetset name="none"> + <label name="none_label"> + Aucun contenu + </label> + <tooltip name="none_tooltip"> + Aucun média ici + </tooltip> + </widgetset> <scheme name="rtsp"> <label name="rtsp_label"> Flux en temps réel </label> </scheme> + <scheme name="libvlc"> + <label name="libvlc_label"> + Médias pris en charge par LibVLC + </label> + </scheme> <mimetype name="blank"> <label name="blank_label"> - Aucun - @@ -127,11 +132,6 @@ Macromedia Director </label> </mimetype> - <mimetype name="application/x-shockwave-flash"> - <label name="application/x-shockwave-flash_label"> - Flash - </label> - </mimetype> <mimetype name="audio/mid"> <label name="audio/mid_label"> Audio (MIDI) @@ -207,6 +207,11 @@ Film (MP4) </label> </mimetype> + <mimetype name="application/octet-stream"> + <label name="video/octet-stream"> + Film + </label> + </mimetype> <mimetype name="video/quicktime"> <label name="video/quicktime_label"> Film (Quicktime) diff --git a/indra/newview/skins/default/xui/fr/notifications.xml b/indra/newview/skins/default/xui/fr/notifications.xml index 2310fc5611..b7efaad376 100644 --- a/indra/newview/skins/default/xui/fr/notifications.xml +++ b/indra/newview/skins/default/xui/fr/notifications.xml @@ -329,6 +329,9 @@ Si vous ne voulez plus que ce rôle dispose de ces pouvoirs, désactivez-les imm Vous allez bannir [COUNT] membres du groupe. <usetemplate ignoretext="Confirmer le bannissement de plusieurs membres du groupe" name="okcancelignore" notext="Annuler" yestext="Bannir"/> </notification> + <notification name="GroupBanUserOnBanlist"> + Il est possible qu’une invitation n’ait pas été envoyée à certains résidents, car ils sont bannis du groupe. + </notification> <notification name="AttachmentDrop"> Vous êtes sur le point d'abandonner l'élément joint. Voulez-vous vraiment continuer ? @@ -456,6 +459,12 @@ Pour ne placer le média que sur une seule face, choisissez Sélectionner une fa <notification name="ErrorEncodingSnapshot"> Erreur d'encodage de la photo. </notification> + <notification name="ErrorPhotoCannotAfford"> + Il vous faut [COST] L$ pour enregistrer une photo dans votre inventaire. Vous pouvez acheter des L$ ou enregistrer la photo sur votre ordinateur. + </notification> + <notification name="ErrorTextureCannotAfford"> + Il vous faut [COST] L$ pour enregistrer une texture dans votre inventaire. Vous pouvez acheter des L$ ou enregistrer la photo sur votre ordinateur. + </notification> <notification name="ErrorUploadingPostcard"> Une erreur est survenue lors du chargement du script compilé, suite au problème suivant : [REASON] </notification> @@ -574,6 +583,10 @@ Remarque : cela videra le cache. Supprimer la note ? <usetemplate name="okcancelbuttons" notext="Annuler" yestext="OK"/> </notification> + <notification name="LoadPreviousReportScreenshot"> + Voulez-vous utiliser la capture d’écran précédente pour votre rapport ? + <usetemplate name="okcancelbuttons" notext="Annuler" yestext="OK"/> + </notification> <notification name="GestureSaveFailedTooManySteps"> L'enregistrement du geste a échoué. Il y a trop d'étapes dans ce geste. @@ -634,30 +647,12 @@ Consulter [_URL] pour en savoir plus ? </url> <usetemplate ignoretext="Mon matériel n'est pas pris en charge" name="okcancelignore" notext="Non" yestext="Oui"/> </notification> - <notification name="IntelOldDriver"> - Il existe probablement un pilote plus récent pour votre puce graphique. La mise à jour des pilotes graphiques est susceptible d'améliorer considérablement les performances. - - Visiter la page [_URL] pour rechercher d'éventuelles mises à jour de pilotes ? - <url name="url"> - http://www.intel.com/p/fr_FR/support/detect/graphics - </url> - <usetemplate ignoretext="Mon pilote graphique est obsolète." name="okcancelignore" notext="Non" yestext="Oui"/> - </notification> - <notification name="AMDOldDriver"> - Il existe probablement un pilote plus récent pour votre puce graphique. La mise à jour des pilotes graphiques est susceptible d'améliorer considérablement les performances. - - Visiter la page [_URL] pour rechercher d'éventuelles mises à jour de pilotes ? - <url name="url"> - http://support.amd.com/us/Pages/AMDSupportHub.aspx - </url> - <usetemplate ignoretext="Mon pilote graphique est obsolète." name="okcancelignore" notext="Non" yestext="Oui"/> - </notification> - <notification name="NVIDIAOldDriver"> - Il existe probablement un pilote plus récent pour votre puce graphique. La mise à jour des pilotes graphiques est susceptible d'améliorer considérablement les performances. + <notification name="OldGPUDriver"> + Il existe probablement un pilote plus récent pour votre puce graphique. La mise à jour des pilotes graphiques est susceptible d’améliorer considérablement les performances. - Visiter la page [_URL] pour rechercher d'éventuelles mises à jour de pilotes ? + Visiter la page [URL] pour rechercher d’éventuelles mises à jour de pilotes ? <url name="url"> - http://www.nvidia.com/Download/index.aspx?lang=fr + [URL] </url> <usetemplate ignoretext="Mon pilote graphique est obsolète." name="okcancelignore" notext="Non" yestext="Oui"/> </notification> @@ -748,6 +743,9 @@ Aller sur [_URL] pour obtenir des informations sur l'achat de L$ ? </url> <usetemplate name="okcancelbuttons" notext="Annuler" yestext="OK"/> </notification> + <notification name="MuteLimitReached"> + Impossible d’ajouter une nouvelle entrée à la liste des ignorés car vous avez atteint la limite de [MUTE_LIMIT] entrées. + </notification> <notification name="UnableToLinkObjects"> Impossible de lier ces [COUNT] objets. Vous pouvez lier un maximum de [MAX] objets. @@ -1374,6 +1372,11 @@ Vous pouvez utiliser [SECOND_LIFE] normalement, les autres résidents vous voien </notification> <notification name="AgentComplexity"> Votre [https://community.secondlife.com/t5/English-Knowledge-Base/Avatar-Rendering-Complexity/ta-p/2967838 complexité de l'avatar] est [AGENT_COMPLEXITY]. + <usetemplate ignoretext="M’avertir quand la complexité de mon avatar change" name="notifyignore"/> + </notification> + <notification name="HUDComplexityWarning"> + [HUD_REASON], cela risque d’avoir un impact négatif sur votre performance. + <usetemplate ignoretext="M’avertir quand la complexité de mon HUD est trop élevée" name="notifyignore"/> </notification> <notification name="FirstRun"> L'installation de [APP_NAME] est terminée. @@ -1466,6 +1469,10 @@ Veuillez ne sélectionner qu'un seul objet. Téléporter tous les résidents de cette région chez eux ? <usetemplate name="okcancelbuttons" notext="Annuler" yestext="OK"/> </notification> + <notification name="ChangeObjectBonusFactor"> + Si vous réduisez le bonus objets après que des constructions ont été établies dans une région, certains objets risquent d’être renvoyés ou supprimés. Voulez-vous vraiment modifier le bonus objets ? + <usetemplate ignoretext="Confirmer la modification du facteur Bonus objets" name="okcancelignore" notext="Annuler" yestext="OK"/> + </notification> <notification name="EstateObjectReturn"> Etes-vous certain de vouloir renvoyer les objets appartenant à [USER_NAME] ? <usetemplate name="okcancelbuttons" notext="Annuler" yestext="OK"/> @@ -1514,6 +1521,9 @@ Dépasse la limite fixée à [MAX_AGENTS] [LIST_TYPE] de [NUM_EXCESS]. <notification name="OwnerCanNotBeDenied"> Impossible d'ajouter le propriétaire du domaine à la liste des résidents bannis. </notification> + <notification name="ProblemAddingEstateManagerBanned"> + Impossible d’ajouter un résident banni à la liste des gérants de domaine. + </notification> <notification name="CanNotChangeAppearanceUntilLoaded"> Impossible de changer d'apparence jusqu'à ce que les habits et la silhouette soient chargés. </notification> @@ -1688,6 +1698,10 @@ Si vous êtes impatients de découvrir les dernières fonctionnalités et correc Voulez-vous ouvrir votre navigateur web système pour afficher ce contenu ? <usetemplate ignoretext="Ouvrir mon navigateur pour consulter une page web" name="okcancelignore" notext="Annuler" yestext="OK"/> </notification> + <notification name="SystemUIScaleFactorChanged"> + Le facteur de taille de l’interface système a changé depuis la dernière exécution. Voulez-vous ouvrir la page des paramètres d’ajustement de la taille de l’interface ? + <usetemplate name="okcancelbuttons" notext="Annuler" yestext="OK"/> + </notification> <notification name="WebLaunchJoinNow"> Accéder à votre [http://secondlife.com/account/ Page d'accueil] pour gérer votre compte ? <usetemplate ignoretext="Lancer mon navigateur pour gérer mon compte" name="okcancelignore" notext="Annuler" yestext="OK"/> @@ -1727,10 +1741,17 @@ Si vous êtes impatients de découvrir les dernières fonctionnalités et correc Quitter le groupe ? <usetemplate name="okcancelbuttons" notext="Annuler" yestext="OK"/> </notification> + <notification name="GroupDepart"> + Vous avez quitté le groupe « [group_name] ». + </notification> <notification name="OwnerCannotLeaveGroup"> Impossible de quitter le groupe. Vous ne pouvez pas quitter le groupe car vous en êtes le dernier propriétaire. Vous devez d'abord affecter le rôle de propriétaire à un autre membre. <usetemplate name="okbutton" yestext="OK"/> </notification> + <notification name="GroupDepartError"> + Impossible de quitter le groupe. + <usetemplate name="okbutton" yestext="OK"/> + </notification> <notification name="ConfirmKick"> Souhaitez-vous vraiment éjecter tous les résidents de la grille ? <usetemplate name="okcancelbuttons" notext="Annuler" yestext="Éjecter tous les résidents"/> @@ -2130,6 +2151,10 @@ Cette action modifiera des milliers de régions et sera difficile à digérer po Vous avez sélectionné trop de prims. Veuillez sélectionner au maximum [MAX_PRIM_COUNT] prims et réessayer. <usetemplate name="okbutton" yestext="OK"/> </notification> + <notification name="TooManyScriptsSelected"> + Trop de scripts dans les objets sélectionnés. Sélectionnez moins d’objets et réessayez. + <usetemplate name="okbutton" yestext="OK"/> + </notification> <notification name="ProblemImportingEstateCovenant"> Problème lors de l'importation du règlement du domaine. <usetemplate name="okbutton" yestext="OK"/> @@ -2298,6 +2323,10 @@ Déplacer les objets de l'inventaire ? Échec de paiement : objet introuvable. <usetemplate name="okbutton" yestext="OK"/> </notification> + <notification name="PaymentBlockedButtonMismatch"> + Paiement interrompu : le prix payé ne correspond à aucun des boutons de paiement pour cet objet. + <usetemplate name="okbutton" yestext="OK"/> + </notification> <notification name="OpenObjectCannotCopy"> Vous n'êtes autorisé à copier aucun élément dans cet objet. </notification> @@ -2333,6 +2362,12 @@ Vous ne pouvez pas l'annuler. C’est une vaste sélection avec des groupes de liens. Si vous annulez les liens, vous risquez de ne pas pouvoir les rétablir. Vous devriez peut-être faire des copies des groupes de liens dans votre inventaire par mesure de précaution. <usetemplate ignoretext="Confirmer l’annulation des liens d’un groupe de liens" name="okcancelignore" notext="Annuler" yestext="Annuler le lien"/> </notification> + <notification name="HelpReportAbuseConfirm"> + Nous vous remercions d’avoir pris le temps de nous signaler ce problème. +Nous lirons votre rapport pour identifier toute violation potentielle et prendrons +les mesures nécessaires. + <usetemplate name="okbutton" yestext="OK"/> + </notification> <notification name="HelpReportAbuseSelectCategory"> Veuillez choisir une catégorie pour ce rapport d'infraction. Le choix d'une catégorie nous permet de traiter les rapports d'infraction plus rapidement. @@ -2762,6 +2797,10 @@ Vous ne pouvez pas voler ici. <notification name="PathfindingDirty"> Des modifications de recherche de chemin sont en attente concernant cette région. Si vous disposez de droits de construction, vous pouvez la figer de nouveau en cliquant sur le bouton Refiger la région. </notification> + <notification name="PathfindingDirtyRebake"> + Des modifications de recherche de chemin sont en attente concernant cette région. Si vous disposez de droits de construction, vous pouvez la figer de nouveau en cliquant sur le bouton Refiger la région. + <usetemplate name="okbutton" yestext="Refiger la région"/> + </notification> <notification name="DynamicPathfindingDisabled"> La recherche de chemin dynamique n'est pas activée dans cette région. Il se peut que les objets scriptés utilisant des appels LSL de recherche de chemin ne fonctionnent pas comme prévu pour cette région. </notification> @@ -3268,11 +3307,13 @@ Elles vont être bloquées pendant quelques secondes pour votre sécurité. L'apparence a été enregistrée en XML vers [PATH] </notification> <notification name="AppearanceToXMLFailed"> - Échec d'enregistrement de l'apparence en XML. - icon="notifytip.tga" - name="PresetNotDeleted" - type="notifytip"> -Erreur de suppression du préréglage [NAME]. + Échec de l’enregistrement de l’apparence au format XML. + </notification> + <notification name="PresetNotSaved"> + Erreur d’enregistrement du préréglage [NAME]. + </notification> + <notification name="PresetNotDeleted"> + Erreur de suppression du préréglage [NAME]. </notification> <notification name="UnableToFindHelpTopic"> Impossible de trouver l'aide. @@ -3482,13 +3523,6 @@ Cliquez sur un point dans le monde et faites glisser votre souris pour faire tou <notification name="ForceQuitDueToLowMemory"> Mémoire insuffisante : fermeture de SL dans 30 secondes. </notification> - <notification name="PopupAttempt"> - Impossible d'ouvrir une fenêtre popup. - <form name="form"> - <ignore name="ignore" text="Activer toutes les fenêtres popup"/> - <button name="open" text="Ouvrir la fenêtre popup"/> - </form> - </notification> <notification name="SOCKS_NOT_PERMITTED"> Le proxy SOCKS 5 "[HOST]:[PORT]" a refusé la connexion, non autorisée par le jeu de règles défini. <usetemplate name="okbutton" yestext="OK"/> @@ -3862,6 +3896,9 @@ Veuillez réessayer dans une minute. Impossible de déplacer [OBJECT_NAME] jusqu'à [OBJ_POSITION] dans la région [REGION_NAME] car il n'y a pas suffisamment de ressources pour cet objet sur cette parcelle. </notification> + <notification name="NoParcelPermsNoObject"> + La copie a échoué car vous n’avez pas accès à cette parcelle. + </notification> <notification name="CantMoveObjectRegionVersion"> Impossible de déplacer [OBJECT_NAME] jusqu'à [OBJ_POSITION] dans la région [REGION_NAME] car l'autre région exécute une version plus ancienne qui ne prend pas en charge la réception de cet objet via le passage à une autre région. @@ -3877,6 +3914,10 @@ Veuillez réessayer dans une minute. <notification name="NoPermModifyObject"> Vous n'êtes pas autorisé à modifier cet objet. </notification> + <notification name="TooMuchObjectInventorySelected"> + Trop d’objets avec un inventaire volumineux sont sélectionnés. Sélectionnez moins d’objets et réessayez. + <usetemplate name="okbutton" yestext="OK"/> + </notification> <notification name="CantEnablePhysObjContributesToNav"> Impossible d'activer les propriétés physiques pour un objet qui contribue au maillage de navigation. </notification> @@ -3913,6 +3954,12 @@ Veuillez réessayer dans une minute. <notification name="CantSaveModifyAttachment"> Impossible d'enregistrer dans le contenu des objets : cela modifierait les droits d'attache. </notification> + <notification name="AttachmentHasTooMuchInventory"> + Vos éléments attachés contiennent trop d’articles d’inventaire, impossible d’en ajouter plus. + </notification> + <notification name="IllegalAttachment"> + La pièce jointe a demandé un point non existant sur l'avatar. Il a été fixé sur la poitrine. + </notification> <notification name="TooManyScripts"> Trop de scripts. </notification> @@ -4005,6 +4052,12 @@ Veuillez réessayer dans une minute. <notification name="TeleportedByObjectUnknownUser"> Vous avez été téléporté par l'objet [OBJECT_NAME] appartenant à un utilisateur inconnu. </notification> + <notification name="StandDeniedByObject"> + [OBJECT_NAME] ne vous permet pas de vous tenir debout actuellement. + </notification> + <notification name="ResitDeniedByObject"> + « [OBJECT_NAME] » ne vous permet pas de changer de place actuellement. + </notification> <notification name="CantCreateObjectRegionFull"> Création de l'objet demandé impossible. La région est pleine. </notification> @@ -4086,9 +4139,6 @@ Veuillez réessayer dans une minute. <notification name="CantAttachNotEnoughScriptResources"> Ressources de script insuffisantes pour attacher cet objet. </notification> - <notification name="IllegalAttachment"> - La pièce jointe a demandé un point non existant sur l'avatar. Il a été fixé sur la poitrine. - </notification> <notification name="CantDropItemTrialUser"> Vous ne pouvez pas déposer d'objets ici. Essayez la zone de période d'essai gratuite. </notification> @@ -4304,6 +4354,9 @@ Veuillez sélectionner un terrain plus petit. <notification name="CantTransfterMoneyRegionDisabled"> Les transferts d'argent aux objets sont actuellement désactivés dans cette région. </notification> + <notification name="DroppedMoneyTransferRequest"> + Impossible d’effectuer le paiement à cause de la charge système. + </notification> <notification name="CantPayNoAgent"> Impossible de savoir qui payer. </notification> @@ -4339,4 +4392,8 @@ Veuillez sélectionner un terrain plus petit. Le fichier d'historique des chats est occupé à traiter l'opération précédente. Réessayez dans quelques minutes ou choisissez une autre personne pour le chat. <usetemplate name="okbutton" yestext="OK"/> </notification> + <notification name="OutfitPhotoLoadError"> + [REASON] + <usetemplate name="okbutton" yestext="OK"/> + </notification> </notifications> diff --git a/indra/newview/skins/default/xui/fr/panel_outfits_inventory.xml b/indra/newview/skins/default/xui/fr/panel_outfits_inventory.xml index 1bc553c8c0..05c689dd34 100644 --- a/indra/newview/skins/default/xui/fr/panel_outfits_inventory.xml +++ b/indra/newview/skins/default/xui/fr/panel_outfits_inventory.xml @@ -7,6 +7,7 @@ Porter les articles sélectionnés </panel.string> <tab_container name="appearance_tabs"> + <panel label="GALERIE DES TENUES" name="outfit_gallery_tab"/> <panel label="MES TENUES" name="outfitslist_tab"/> <panel label="PORTÉ" name="cof_tab"/> </tab_container> diff --git a/indra/newview/skins/default/xui/fr/panel_outfits_wearing.xml b/indra/newview/skins/default/xui/fr/panel_outfits_wearing.xml index 874bab2daa..1752f9dfdf 100644 --- a/indra/newview/skins/default/xui/fr/panel_outfits_wearing.xml +++ b/indra/newview/skins/default/xui/fr/panel_outfits_wearing.xml @@ -1,6 +1,13 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <panel name="Wearing"> + <panel.string name="no_attachments"> + Aucun élément attaché porté. + </panel.string> + <accordion name="wearables_accordion"> + <accordion_tab name="tab_wearables" title="Articles à porter"/> + <accordion_tab name="tab_temp_attachments" title="Éléments attachés temporaires"/> + </accordion> <panel name="bottom_panel"> - <button name="options_gear_btn" tool_tip="Afficher d'autres options"/> + <menu_button name="options_gear_btn" tool_tip="Afficher d'autres options"/> </panel> </panel> diff --git a/indra/newview/skins/default/xui/fr/panel_preferences_graphics1.xml b/indra/newview/skins/default/xui/fr/panel_preferences_graphics1.xml index 2b1e613fe4..60cdd5df41 100644 --- a/indra/newview/skins/default/xui/fr/panel_preferences_graphics1.xml +++ b/indra/newview/skins/default/xui/fr/panel_preferences_graphics1.xml @@ -24,7 +24,7 @@ <text name="BetterText"> Meilleure </text> - <slider label="Complexité max. de l'avatar :" name="IndirectMaxComplexity" tool_tip="Contrôle à quel moment un avatar complexe est représenté comme un « jelly baby »"/> + <slider label="Complexité max. de l'avatar :" name="IndirectMaxComplexity" tool_tip="Contrôle à quel moment un avatar complexe est représenté comme un « JellyDoll »"/> <text name="IndirectMaxComplexityText"> 0 </text> diff --git a/indra/newview/skins/default/xui/fr/panel_preferences_setup.xml b/indra/newview/skins/default/xui/fr/panel_preferences_setup.xml index bd21f9782d..3b819b40c8 100644 --- a/indra/newview/skins/default/xui/fr/panel_preferences_setup.xml +++ b/indra/newview/skins/default/xui/fr/panel_preferences_setup.xml @@ -30,6 +30,7 @@ <combo_box.item label="Je téléchargerai et installerai les mises à jour manuellement" name="Install_manual"/> </combo_box> <check_box label="Accepte de passer aux versions avant sortie officielle" name="update_willing_to_test"/> + <check_box label="Afficher les notes de version après la mise à jour" name="update_show_release_notes"/> <text name="Proxy Settings:"> Paramètres de proxy : </text> diff --git a/indra/newview/skins/default/xui/fr/strings.xml b/indra/newview/skins/default/xui/fr/strings.xml index 843467df96..40a41b93ab 100644 --- a/indra/newview/skins/default/xui/fr/strings.xml +++ b/indra/newview/skins/default/xui/fr/strings.xml @@ -61,17 +61,34 @@ Carte graphique : [GRAPHICS_CARD] <string name="AboutDriver"> Version Windows Graphics Driver : [GRAPHICS_DRIVER_VERSION] </string> - <string name="AboutLibs"> + <string name="AboutOGL"> Version OpenGL : [OPENGL_VERSION] - -Version J2C Decoder : [J2C_VERSION] + </string> + <string name="AboutSettings"> + Taille de la fenêtre : [WINDOW_WIDTH]x[WINDOW_HEIGHT] +Ajustement de la taille de la police : [FONT_SIZE_ADJUSTMENT] pts +Échelle de l’interface : [UI_SCALE] +Limite d’affichage : [DRAW_DISTANCE] m +Bande passante : [NET_BANDWITH] kbit/s +Facteur LOD (niveau de détail) : [LOD_FACTOR] +Qualité de rendu : [RENDER_QUALITY] / 7 +Modèle d’éclairage avancé : [GPU_SHADERS] +Mémoire textures : [TEXTURE_MEMORY] Mo +Durée de création VFS (cache) : [VFS_TIME] + </string> + <string name="AboutLibs"> + Version J2C Decoder : [J2C_VERSION] Version Audio Driver : [AUDIO_DRIVER_VERSION] Version LLCEFLib/CEF : [LLCEFLIB_VERSION] +Version LibVLC : [LIBVLC_VERSION] Version serveur vocal : [VOICE_VERSION] </string> <string name="AboutTraffic"> Paquets perdus : [PACKETS_LOST,number,0]/[PACKETS_IN,number,0] ([PACKETS_PCT,number,1]%) </string> + <string name="AboutTime"> + [month, datetime, slt] [day, datetime, slt] [year, datetime, slt] [hour, datetime, slt]:[min, datetime, slt]:[second,datetime,slt] + </string> <string name="ErrorFetchingServerReleaseNotesURL"> Erreur lors de la récupération de l'URL des notes de version du serveur. </string> @@ -1089,6 +1106,9 @@ Veuillez réessayer de vous connecter dans une minute. <string name="TeleportYourAgent"> Vous téléporter </string> + <string name="ForceSitAvatar"> + Forcez votre avatar à s’asseoir + </string> <string name="NotConnected"> Pas connecté(e) </string> @@ -1937,6 +1957,27 @@ Veuillez réessayer de vous connecter dans une minute. <string name="av_render_anyone"> Vous risquez de n’être rendu par aucune des personnes qui vous entourent. </string> + <string name="hud_description_total"> + Votre HUD + </string> + <string name="hud_name_with_joint"> + [OBJ_NAME] (porté sur [JNT_NAME]) + </string> + <string name="hud_render_memory_warning"> + [HUD_DETAILS] utilise beaucoup de mémoire textures + </string> + <string name="hud_render_cost_warning"> + [HUD_DETAILS] contient beaucoup de textures et d’objets volumineux + </string> + <string name="hud_render_heavy_textures_warning"> + [HUD_DETAILS] contient beaucoup de textures volumineuses + </string> + <string name="hud_render_cramped_warning"> + [HUD_DETAILS] contient trop d’objets + </string> + <string name="hud_render_textures_warning"> + [HUD_DETAILS] contient trop de textures + </string> <string name="AgeYearsA"> [COUNT] an </string> @@ -2096,6 +2137,9 @@ Veuillez réessayer de vous connecter dans une minute. <string name="ObjectOutOfRange"> Script (objet hors de portée) </string> + <string name="ScriptWasDeleted"> + Script (supprimé de l’inventaire) + </string> <string name="GodToolsObjectOwnedBy"> Objet [OBJECT] appartenant à [OWNER] </string> @@ -2708,6 +2752,15 @@ Veuillez réessayer de vous connecter dans une minute. <string name="Play Media"> Lire/pauser le média </string> + <string name="IntelDriverPage"> + http://www.intel.com/p/fr_FR/support/detect/graphics + </string> + <string name="NvidiaDriverPage"> + http://www.nvidia.com/Download/index.aspx?lang=fr + </string> + <string name="AMDDriverPage"> + http://support.amd.com/us/Pages/AMDSupportHub.aspx + </string> <string name="MBCmdLineError"> Une erreur est survenue lors de la lecture de la ligne de commande. Merci de consulter : http://wiki.secondlife.com/wiki/Client_parameters @@ -4483,12 +4536,18 @@ Si ce message persiste, veuillez aller sur la page [SUPPORT_SITE]. <string name="paid_you_ldollars"> [NAME] vous a payé [AMOUNT] L$ [REASON]. </string> + <string name="paid_you_ldollars_gift"> + [NAME] vous a payé [AMOUNT] L$ : [REASON] + </string> <string name="paid_you_ldollars_no_reason"> [NAME] vous a payé [AMOUNT] L$. </string> <string name="you_paid_ldollars"> Vous avez payé à [AMOUNT] L$ [REASON]. </string> + <string name="you_paid_ldollars_gift"> + Vous avez payé à [NAME] [AMOUNT] L$ : [REASON] + </string> <string name="you_paid_ldollars_no_info"> Vous avez payé [AMOUNT] L$. </string> @@ -4501,6 +4560,9 @@ Si ce message persiste, veuillez aller sur la page [SUPPORT_SITE]. <string name="you_paid_failure_ldollars"> Votre paiement de [AMOUNT] L$ à [NAME] [REASON] a échoué. </string> + <string name="you_paid_failure_ldollars_gift"> + Votre paiement de [AMOUNT] L$ à [NAME] a échoué : [REASON] + </string> <string name="you_paid_failure_ldollars_no_info"> Votre paiement de [AMOUNT] L$ a échoué. </string> @@ -4827,6 +4889,15 @@ du rapport d'infraction <string name="texture_load_dimensions_error"> Impossible de charger des images de taille supérieure à [WIDTH]*[HEIGHT] </string> + <string name="outfit_photo_load_dimensions_error"> + Taille max. de la photo de la tenue : [WIDTH]*[HEIGHT]. Redimensionnez l’image ou utilisez-en une autre. + </string> + <string name="outfit_photo_select_dimensions_error"> + Taille max. de la photo de la tenue : [WIDTH]*[HEIGHT]. Sélectionnez une autre texture. + </string> + <string name="outfit_photo_verify_dimensions_error"> + Impossible de vérifier les dimensions de la photo. Attendez que la taille de la photo s’affiche dans le sélecteur. + </string> <string name="words_separator" value=","/> <string name="server_is_down"> Malgré nos efforts, une erreur inattendue s'est produite. @@ -5331,6 +5402,9 @@ Essayez avec le chemin d'accès à l'éditeur entre guillemets doubles <string name="Command_Profile_Label"> Profil </string> + <string name="Command_Report_Abuse_Label"> + Signaler une infraction + </string> <string name="Command_Search_Label"> Recherche </string> @@ -5421,6 +5495,9 @@ Essayez avec le chemin d'accès à l'éditeur entre guillemets doubles <string name="Command_Profile_Tooltip"> Modifier ou afficher votre profil </string> + <string name="Command_Report_Abuse_Tooltip"> + Signaler une infraction + </string> <string name="Command_Search_Tooltip"> Trouver des lieux, personnes, événements </string> diff --git a/indra/newview/skins/default/xui/it/floater_model_preview.xml b/indra/newview/skins/default/xui/it/floater_model_preview.xml index 1fe2659e4b..95fe4aaf4c 100644 --- a/indra/newview/skins/default/xui/it/floater_model_preview.xml +++ b/indra/newview/skins/default/xui/it/floater_model_preview.xml @@ -245,6 +245,7 @@ </text> <check_box label="Includi peso pelle" name="upload_skin"/> <check_box label="Includi posizioni giunti" name="upload_joints"/> + <check_box label="Blocca scala se è definita la posizione dei giunti" name="lock_scale_if_joint_position"/> <text name="pelvis_offset_label"> Spostamento Z (sposta l'avatar in alto o in basso): </text> diff --git a/indra/newview/skins/default/xui/it/floater_pay.xml b/indra/newview/skins/default/xui/it/floater_pay.xml index ef24fc850d..fc2e7c676c 100644 --- a/indra/newview/skins/default/xui/it/floater_pay.xml +++ b/indra/newview/skins/default/xui/it/floater_pay.xml @@ -1,9 +1,20 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <floater name="Give Money" title=""> - <string name="payee_group">Paga gruppo</string> - <string name="payee_resident">Paga residente</string> - <text name="paying_text">Stai pagando:</text> - <text left="115" name="payee_name">Nome di test che è troppo lungo per controllare il taglio</text> + <string name="payee_group"> + Paga gruppo + </string> + <string name="payee_resident"> + Paga residente + </string> + <text name="paying_text"> + Stai pagando: + </text> + <text left="115" name="payee_name"> + Nome di test che è troppo lungo per controllare il taglio + </text> + <text name="payment_message_label"> + Descrizione (facoltativa): + </text> <panel label="Cerca" name="PatternsPanel"> <button label="Paga 1 L$" label_selected="Paga 1 L$" name="fastpay 1"/> <button label="Paga 5 L$" label_selected="Paga 5 L$" name="fastpay 5"/> @@ -11,7 +22,9 @@ <button label="Paga 20 L$" label_selected="Paga 20 L$" name="fastpay 20"/> </panel> <panel label="Cerca" name="InputPanel"> - <text name="amount text">Altro importo:</text> + <text name="amount text"> + Altro importo: + </text> <button label="Paga" label_selected="Paga" name="pay btn"/> <button label="Annulla" label_selected="Annulla" name="cancel btn"/> </panel> diff --git a/indra/newview/skins/default/xui/it/floater_script_queue.xml b/indra/newview/skins/default/xui/it/floater_script_queue.xml index f4117d30a2..d0d0123283 100644 --- a/indra/newview/skins/default/xui/it/floater_script_queue.xml +++ b/indra/newview/skins/default/xui/it/floater_script_queue.xml @@ -15,5 +15,11 @@ <floater.string name="NotRunning"> Non in esecuzione </floater.string> + <floater.string name="Timeout"> + Timeout: [OBJECT_NAME] + </floater.string> + <floater.string name="LoadingObjInv"> + Caricamento inventario per: [OBJECT_NAME] + </floater.string> <button label="Chiudi" label_selected="Chiudi" name="close"/> </floater> diff --git a/indra/newview/skins/default/xui/it/floater_web_content.xml b/indra/newview/skins/default/xui/it/floater_web_content.xml index 5603e85417..87bbf07937 100644 --- a/indra/newview/skins/default/xui/it/floater_web_content.xml +++ b/indra/newview/skins/default/xui/it/floater_web_content.xml @@ -10,5 +10,9 @@ <icon name="media_secure_lock_flag" tool_tip="Navigazione sicura"/> <button name="popexternal" tool_tip="Apri URL corrente nel browser del computer"/> </layout_panel> + <layout_panel name="debug_controls"> + <button name="web_test_home_page" tool_tip="Home page test web"/> + <button name="VLC Plugin Test" tool_tip="Test video MPEG4"/> + </layout_panel> </layout_stack> </floater> diff --git a/indra/newview/skins/default/xui/it/menu_attachment_other.xml b/indra/newview/skins/default/xui/it/menu_attachment_other.xml index 5c017a92b5..1832400298 100644 --- a/indra/newview/skins/default/xui/it/menu_attachment_other.xml +++ b/indra/newview/skins/default/xui/it/menu_attachment_other.xml @@ -7,6 +7,7 @@ <menu_item_call label="Chiama" name="Call"/> <menu_item_call label="Invita al gruppo" name="Invite..."/> <menu_item_call label="Ripristina scheletro" name="Reset Skeleton"/> + <menu_item_call label="Ripristina scheletro e animazioni" name="Reset Skeleton And Animations"/> <menu_item_call label="Blocca" name="Avatar Mute"/> <menu_item_call label="Segnala" name="abuse"/> <menu_item_call label="Congela" name="Freeze..."/> diff --git a/indra/newview/skins/default/xui/it/menu_attachment_self.xml b/indra/newview/skins/default/xui/it/menu_attachment_self.xml index b1ca55b093..f25a289a62 100644 --- a/indra/newview/skins/default/xui/it/menu_attachment_self.xml +++ b/indra/newview/skins/default/xui/it/menu_attachment_self.xml @@ -10,6 +10,7 @@ <menu_item_call label="Modifica la figura corporea" name="Edit My Shape"/> <menu_item_call label="Altezza di volo" name="Hover Height"/> <menu_item_call label="Ripristina scheletro" name="Reset Skeleton"/> + <menu_item_call label="Ripristina scheletro e animazioni" name="Reset Skeleton And Animations"/> <menu_item_call label="I miei amici..." name="Friends..."/> <menu_item_call label="I miei gruppi" name="Groups..."/> <menu_item_call label="Il mio profilo" name="Profile..."/> diff --git a/indra/newview/skins/default/xui/it/menu_avatar_other.xml b/indra/newview/skins/default/xui/it/menu_avatar_other.xml index 12e808195e..f3b4075a29 100644 --- a/indra/newview/skins/default/xui/it/menu_avatar_other.xml +++ b/indra/newview/skins/default/xui/it/menu_avatar_other.xml @@ -7,6 +7,7 @@ <menu_item_call label="Chiama" name="Call"/> <menu_item_call label="Invita al gruppo" name="Invite..."/> <menu_item_call label="Ripristina scheletro" name="Reset Skeleton"/> + <menu_item_call label="Ripristina scheletro e animazioni" name="Reset Skeleton And Animations"/> <menu_item_call label="Blocca" name="Avatar Mute"/> <menu_item_call label="Segnala" name="abuse"/> <menu_item_call label="Congela" name="Freeze..."/> diff --git a/indra/newview/skins/default/xui/it/menu_avatar_self.xml b/indra/newview/skins/default/xui/it/menu_avatar_self.xml index e48449a04c..85de7f4e30 100644 --- a/indra/newview/skins/default/xui/it/menu_avatar_self.xml +++ b/indra/newview/skins/default/xui/it/menu_avatar_self.xml @@ -27,6 +27,7 @@ <menu_item_call label="Modifica la figura corporea" name="Edit My Shape"/> <menu_item_call label="Altezza di volo" name="Hover Height"/> <menu_item_call label="Ripristina scheletro" name="Reset Skeleton"/> + <menu_item_call label="Ripristina scheletro e animazioni" name="Reset Skeleton And Animations"/> <menu_item_call label="I miei amici..." name="Friends..."/> <menu_item_call label="I miei gruppi" name="Groups..."/> <menu_item_call label="Il mio profilo" name="Profile..."/> diff --git a/indra/newview/skins/default/xui/it/menu_login.xml b/indra/newview/skins/default/xui/it/menu_login.xml index 33fa25cd38..3d2a556fe2 100644 --- a/indra/newview/skins/default/xui/it/menu_login.xml +++ b/indra/newview/skins/default/xui/it/menu_login.xml @@ -20,12 +20,11 @@ <menu_item_check label="Mostra menu Debug" name="Show Debug Menu"/> <menu label="Debug" name="Debug"> <menu_item_call label="Mostra impostazioni di debug" name="Debug Settings"/> - <menu_item_call label="Impostazioni colori interfaccia" name="UI/Color Settings"/> <menu label="Test interfaccia utente" name="UI Tests"/> <menu_item_call label="Imposta dimensioni della finestra..." name="Set Window Size..."/> <menu_item_call label="Mostra i Termini del servizio (TOS)" name="TOS"/> <menu_item_call label="Mostra messaggio critico" name="Critical"/> - <menu_item_call label="Test debug finestra contenuti Web" name="Web Content Floater Debug Test"/> + <menu_item_call label="Browser multimedia" name="Media Browser"/> <menu label="Imposta livello di registrazione" name="Set Logging Level"> <menu_item_check label="Debug" name="Debug"/> <menu_item_check label="Info" name="Info"/> diff --git a/indra/newview/skins/default/xui/it/menu_object_icon.xml b/indra/newview/skins/default/xui/it/menu_object_icon.xml index 9623775af4..a574757fd0 100644 --- a/indra/newview/skins/default/xui/it/menu_object_icon.xml +++ b/indra/newview/skins/default/xui/it/menu_object_icon.xml @@ -2,6 +2,7 @@ <menu name="Object Icon Menu"> <menu_item_call label="Profilo oggetto..." name="Object Profile"/> <menu_item_call label="Blocca..." name="Block"/> + <menu_item_call label="Sblocca" name="Unblock"/> <menu_item_call label="Mostra sulla mappa" name="show_on_map"/> <menu_item_call label="Teleport sul luogo dell'oggetto" name="teleport_to_object"/> </menu> diff --git a/indra/newview/skins/default/xui/it/menu_outfit_gear.xml b/indra/newview/skins/default/xui/it/menu_outfit_gear.xml index 3ac0c5ce69..62c6d53e1c 100644 --- a/indra/newview/skins/default/xui/it/menu_outfit_gear.xml +++ b/indra/newview/skins/default/xui/it/menu_outfit_gear.xml @@ -3,6 +3,10 @@ <menu_item_call label="Indossa - Sostituisci vestiario attuale" name="wear"/> <menu_item_call label="Indossa - Aggiungi al vestiario attuale" name="wear_add"/> <menu_item_call label="Togli - Rimuovi dal vestiario attuale" name="take_off"/> + <menu_item_call label="Carica foto (L$ 10)" name="upload_photo"/> + <menu_item_call label="Seleziona foto" name="select_photo"/> + <menu_item_call label="Scatta un'istantanea" name="take_snapshot"/> + <menu_item_call label="Rimuovi foto" name="remove_photo"/> <menu label="Nuovi abiti" name="New Clothes"> <menu_item_call label="Nuova camicia" name="New Shirt"/> <menu_item_call label="Nuovi pantaloni" name="New Pants"/> @@ -27,4 +31,5 @@ <menu_item_call label="Chiudi tutte le cartelle" name="collapse"/> <menu_item_call label="Cambia nome del vestiario" name="rename"/> <menu_item_call label="Elimina vestito" name="delete_outfit"/> + <menu_item_check label="Ordina le cartelle sempre in base al nome" name="sort_folders_by_name"/> </toggleable_menu> diff --git a/indra/newview/skins/default/xui/it/menu_people_friends_view.xml b/indra/newview/skins/default/xui/it/menu_people_friends_view.xml index 972e359cfe..1cfe14b86b 100644 --- a/indra/newview/skins/default/xui/it/menu_people_friends_view.xml +++ b/indra/newview/skins/default/xui/it/menu_people_friends_view.xml @@ -4,5 +4,6 @@ <menu_item_check label="Ordina in base allo stato" name="sort_status"/> <menu_item_check label="Mostra le icone delle persone" name="view_icons"/> <menu_item_check label="Mostra le autorizzazioni concesse" name="view_permissions"/> + <menu_item_check label="Nascondi nomi utenti" name="view_usernames"/> <menu_item_check label="Mostra il registro conversazioni..." name="view_conversation"/> </toggleable_menu> diff --git a/indra/newview/skins/default/xui/it/menu_people_nearby.xml b/indra/newview/skins/default/xui/it/menu_people_nearby.xml index 1c09b1cfe2..3b9f9c89f8 100644 --- a/indra/newview/skins/default/xui/it/menu_people_nearby.xml +++ b/indra/newview/skins/default/xui/it/menu_people_nearby.xml @@ -13,4 +13,6 @@ <menu_item_call label="Condividi" name="share"/> <menu_item_call label="Paga" name="pay"/> <menu_item_check label="Blocca/Sblocca" name="block_unblock"/> + <menu_item_call label="Congela" name="freeze"/> + <menu_item_call label="Espelli" name="eject"/> </context_menu> diff --git a/indra/newview/skins/default/xui/it/menu_people_nearby_view.xml b/indra/newview/skins/default/xui/it/menu_people_nearby_view.xml index 223d88fee1..d0891903f5 100644 --- a/indra/newview/skins/default/xui/it/menu_people_nearby_view.xml +++ b/indra/newview/skins/default/xui/it/menu_people_nearby_view.xml @@ -5,4 +5,5 @@ <menu_item_check label="Ordina in base alla distanza" name="sort_distance"/> <menu_item_check label="Mostra le icone delle persone" name="view_icons"/> <menu_item_check label="Mostra mappa" name="view_map"/> + <menu_item_check label="Nascondi nomi utenti" name="view_usernames"/> </toggleable_menu> diff --git a/indra/newview/skins/default/xui/it/menu_url_objectim.xml b/indra/newview/skins/default/xui/it/menu_url_objectim.xml index 116b652172..67bc34a5d7 100644 --- a/indra/newview/skins/default/xui/it/menu_url_objectim.xml +++ b/indra/newview/skins/default/xui/it/menu_url_objectim.xml @@ -2,6 +2,7 @@ <context_menu name="Url Popup"> <menu_item_call label="Profilo oggetto..." name="show_object"/> <menu_item_call label="Blocca..." name="block_object"/> + <menu_item_call label="Sblocca" name="unblock_object"/> <menu_item_call label="Mostra sulla mappa" name="show_on_map"/> <menu_item_call label="Teleport sul luogo dell'oggetto" name="teleport_to_object"/> <menu_item_call label="Copia nome oggetto negli Appunti" name="url_copy_label"/> diff --git a/indra/newview/skins/default/xui/it/menu_viewer.xml b/indra/newview/skins/default/xui/it/menu_viewer.xml index 90ea601259..96f06d5f98 100644 --- a/indra/newview/skins/default/xui/it/menu_viewer.xml +++ b/indra/newview/skins/default/xui/it/menu_viewer.xml @@ -113,11 +113,11 @@ <menu_item_call label="Collegamento" name="Link"/> <menu_item_call label="Scollega" name="Unlink"/> <menu_item_check label="Modifica le parti collegate" name="Edit Linked Parts"/> - <menu label="Seleziona parti collegate" name="Select Linked Parts"> - <menu_item_call label="Seleziona parte successiva" name="Select Next Part"/> - <menu_item_call label="Seleziona parte precedente" name="Select Previous Part"/> - <menu_item_call label="Includi parte successiva" name="Include Next Part"/> - <menu_item_call label="Includi parte precedente" name="Include Previous Part"/> + <menu label="Seleziona elementi" name="Select Elements"> + <menu_item_call label="Seleziona parte o faccia successiva" name="Select Next Part or Face"/> + <menu_item_call label="Seleziona parte o faccia precedente" name="Select Previous Part or Face"/> + <menu_item_call label="Includi parte o faccia successiva" name="Include Next Part or Face"/> + <menu_item_call label="Includi parte o faccia precedente" name="Include Previous Part or Face"/> </menu> <menu_item_call label="Set collegati..." name="pathfinding_linkset_menu_item"/> <menu_item_call label="Ingrandisci selezione" name="Focus on Selection"/> @@ -332,8 +332,7 @@ <menu_item_call label="Dump della cache oggetti regione" name="Dump Region Object Cache"/> </menu> <menu label="Interfaccia utente" name="UI"> - <menu_item_call label="Test browser multimedia" name="Web Browser Test"/> - <menu_item_call label="Browser contenuto Web" name="Web Content Browser"/> + <menu_item_call label="Browser multimedia" name="Media Browser"/> <menu_item_call label="Stampa informazioni oggetto selezionato" name="Print Selected Object Info"/> <menu_item_check label="Debug clic" name="Debug Clicks"/> <menu_item_check label="Debug eventi mouse" name="Debug Mouse Events"/> diff --git a/indra/newview/skins/default/xui/it/menu_wearing_tab.xml b/indra/newview/skins/default/xui/it/menu_wearing_tab.xml index 4a5366091f..ec375e5240 100644 --- a/indra/newview/skins/default/xui/it/menu_wearing_tab.xml +++ b/indra/newview/skins/default/xui/it/menu_wearing_tab.xml @@ -3,4 +3,6 @@ <menu_item_call label="Togli" name="take_off"/> <menu_item_call label="Stacca" name="detach"/> <menu_item_call label="Modifica vestiario" name="edit"/> + <menu_item_call label="Modifica" name="edit_item"/> + <menu_item_call label="Mostra originale" name="show_original"/> </context_menu> diff --git a/indra/newview/skins/default/xui/it/mime_types.xml b/indra/newview/skins/default/xui/it/mime_types.xml index df119263b7..7e528b0688 100644 --- a/indra/newview/skins/default/xui/it/mime_types.xml +++ b/indra/newview/skins/default/xui/it/mime_types.xml @@ -22,14 +22,6 @@ Riproduci video </playtip> </widgetset> - <widgetset name="none"> - <label name="none_label"> - Nessun contenuto - </label> - <tooltip name="none_tooltip"> - Nessun contenuto multimediale qui - </tooltip> - </widgetset> <widgetset name="image"> <label name="image_label"> Immagine @@ -52,11 +44,24 @@ Riproduci l'audio di questo posto </playtip> </widgetset> + <widgetset name="none"> + <label name="none_label"> + Nessun contenuto + </label> + <tooltip name="none_tooltip"> + Nessun contenuto multimediale qui + </tooltip> + </widgetset> <scheme name="rtsp"> <label name="rtsp_label"> Streaming in tempo reale </label> </scheme> + <scheme name="libvlc"> + <label name="libvlc_label"> + Media supportati da LibVLC + </label> + </scheme> <mimetype name="blank"> <label name="blank_label"> - Nessuno - @@ -127,11 +132,6 @@ Macromedia Director </label> </mimetype> - <mimetype name="application/x-shockwave-flash"> - <label name="application/x-shockwave-flash_label"> - Flash - </label> - </mimetype> <mimetype name="audio/mid"> <label name="audio/mid_label"> Audio (MIDI) @@ -207,6 +207,11 @@ Video (MP4) </label> </mimetype> + <mimetype name="application/octet-stream"> + <label name="video/octet-stream"> + Filmato + </label> + </mimetype> <mimetype name="video/quicktime"> <label name="video/quicktime_label"> Video (QuickTime) diff --git a/indra/newview/skins/default/xui/it/notifications.xml b/indra/newview/skins/default/xui/it/notifications.xml index 3a29e4d32f..3621b3bc62 100644 --- a/indra/newview/skins/default/xui/it/notifications.xml +++ b/indra/newview/skins/default/xui/it/notifications.xml @@ -330,6 +330,9 @@ Se non desideri che queste abilità siano assegnate a questo ruolo, disattivale Stai per espellere [COUNT] membri dal gruppo. <usetemplate ignoretext="Conferma l'espulsione di vari partecipanti dal gruppo" name="okcancelignore" notext="Annulla" yestext="Espelli"/> </notification> + <notification name="GroupBanUserOnBanlist"> + Ad alcuni residenti non è stato inviato l'invito perché espulsi dal gruppo. + </notification> <notification name="AttachmentDrop"> Stai per abbandonare il tuo accessorio. Vuoi continuare? @@ -457,6 +460,12 @@ Per collocare il media su una sola faccia, scegli Seleziona faccia, clicca su un <notification name="ErrorEncodingSnapshot"> Errore nella codifica della fotografia. </notification> + <notification name="ErrorPhotoCannotAfford"> + Hai bisogno di L$ [COST] per salvare una foto nel tuo inventario. Puoi acquistare L$ o salvare la foto sul tuo computer. + </notification> + <notification name="ErrorTextureCannotAfford"> + Hai bisogno di L$ [COST] per salvare una texture nel tuo inventario. Puoi acquistare L$ o salvare la foto sul tuo computer. + </notification> <notification name="ErrorUploadingPostcard"> C'è stato un problema inviando la fotografia per il seguente motivo: [REASON] </notification> @@ -572,6 +581,10 @@ Nota: questa operazione cancellerà la cache. Vuoi eliminare il biglietto? <usetemplate name="okcancelbuttons" notext="Annulla" yestext="OK"/> </notification> + <notification name="LoadPreviousReportScreenshot"> + Vuoi usare la precedente schermata per il tuo rapporto? + <usetemplate name="okcancelbuttons" notext="Annulla" yestext="OK"/> + </notification> <notification name="GestureSaveFailedTooManySteps"> Il salvataggio della Gesture è fallito. La gesture ha troppi passi. @@ -632,30 +645,12 @@ Visitare [_URL] per ulteriori informazioni? </url> <usetemplate ignoretext="L'hardware di questo computer non è compatibile" name="okcancelignore" notext="No" yestext="Si"/> </notification> - <notification name="IntelOldDriver"> - È probabile che ci sia un driver aggiornato per il processore grafico. L'aggiornamento dei driver della grafica può migliorare le prestazioni in maniera significativa. - - Visitare [_URL] per cercare un aggiornamento del driver? - <url name="url"> - http://www.intel.com/p/it_IT/support/detect/graphics - </url> - <usetemplate ignoretext="Driver grafica obsoleto" name="okcancelignore" notext="No" yestext="Sì"/> - </notification> - <notification name="AMDOldDriver"> - È probabile che ci sia un driver aggiornato per il processore grafico. L'aggiornamento dei driver della grafica può migliorare le prestazioni in maniera significativa. - - Visitare [_URL] per cercare un aggiornamento del driver? - <url name="url"> - http://support.amd.com/it/Pages/AMDSupportHub.aspx - </url> - <usetemplate ignoretext="Driver grafica obsoleto" name="okcancelignore" notext="No" yestext="Sì"/> - </notification> - <notification name="NVIDIAOldDriver"> - È probabile che ci sia un driver aggiornato per il processore grafico. L'aggiornamento dei driver della grafica può migliorare le prestazioni in maniera significativa. + <notification name="OldGPUDriver"> + È probabile che ci sia un driver aggiornato per il processore grafico. L'aggiornamento dei driver della grafica può migliorare le prestazioni in maniera significativa. - Visitare [_URL] per cercare un aggiornamento del driver? + Visitare [URL] per cercare un aggiornamento del driver? <url name="url"> - http://www.nvidia.it/Download/index.aspx?lang=it + [URL] </url> <usetemplate ignoretext="Driver grafica obsoleto" name="okcancelignore" notext="No" yestext="Sì"/> </notification> @@ -747,6 +742,9 @@ Vai su [_URL] per informazioni sull'acquisto di L$? </url> <usetemplate name="okcancelbuttons" notext="Annulla" yestext="OK"/> </notification> + <notification name="MuteLimitReached"> + Impossibile aggiungere il nuovo elemento alla lista dei bloccati perché hai raggiunto il limite di [MUTE_LIMIT] immissioni. + </notification> <notification name="UnableToLinkObjects"> Impossibile unire questi [COUNT] oggetti. Puoi unire al massimo [MAX] oggetti. @@ -1379,6 +1377,11 @@ Puoi comunque usare [SECOND_LIFE] normalmente e gli altri residenti ti vedranno </notification> <notification name="AgentComplexity"> La [https://community.secondlife.com/t5/English-Knowledge-Base/Avatar-Rendering-Complexity/ta-p/2967838 complessità del tuo avatar] è [AGENT_COMPLEXITY]. + <usetemplate ignoretext="Avvisami in caso di cambiamenti della complessità del mio avatar" name="notifyignore"/> + </notification> + <notification name="HUDComplexityWarning"> + [HUD_REASON], è probabile che influisca negativamente sulle tue prestazioni. + <usetemplate ignoretext="Avvisami quando la complessità del mio HUD è eccessiva" name="notifyignore"/> </notification> <notification name="FirstRun"> L'installazione di [APP_NAME] è terminata. @@ -1470,6 +1473,10 @@ Scegli solo un oggetto e riprova. Teleporta a casa tutti i residenti in questa regione? <usetemplate name="okcancelbuttons" notext="Annulla" yestext="OK"/> </notification> + <notification name="ChangeObjectBonusFactor"> + La riduzione del bonus oggetti dopo aver costruito in una regione può causare la restituzione o l'eliminazione di oggetti. Vuoi comunque cambiare il bonus oggetti? + <usetemplate ignoretext="Conferma cambiamento fattore bonus oggetti" name="okcancelignore" notext="Annulla" yestext="OK"/> + </notification> <notification name="EstateObjectReturn"> Confermi di voler restituire gli oggetti di proprietà di [USER_NAME] ? <usetemplate name="okcancelbuttons" notext="Annulla" yestext="OK"/> @@ -1517,6 +1524,9 @@ Eccede il [MAX_AGENTS] [LIST_TYPE] limite di [NUM_EXCESS]. <notification name="OwnerCanNotBeDenied"> Impossibile aggiungere i proprietari della proprietà immobiliare alla lista dei residenti bloccati. </notification> + <notification name="ProblemAddingEstateManagerBanned"> + Impossibile aggiungere il residente espulso alla lista dei gestori delle proprietà. + </notification> <notification name="CanNotChangeAppearanceUntilLoaded"> Impossibile cambiare l'aspetto fisico finchè gli abiti e i vestiti non sono caricati. </notification> @@ -1692,6 +1702,10 @@ Per provare le funzioni e modifiche più recenti, visita la pagina Alternate Vie Vuoi aprire il browser per vedere questi contenuti? <usetemplate ignoretext="Lancia il browser per consultare una pagina web" name="okcancelignore" notext="Annulla" yestext="OK"/> </notification> + <notification name="SystemUIScaleFactorChanged"> + Il fattore dimensioni UI del sistema è cambiato rispetto all'ultima sessione. Vuoi aprire la pagina delle impostazioni di regolazione delle dimensioni UI? + <usetemplate name="okcancelbuttons" notext="Annulla" yestext="OK"/> + </notification> <notification name="WebLaunchJoinNow"> Vuoi andare su [http://secondlife.com/account/ Dashboard] per gestire il tuo account? <usetemplate ignoretext="Lancia il browser per gestire il mio account" name="okcancelignore" notext="Annulla" yestext="OK"/> @@ -1731,10 +1745,17 @@ Per provare le funzioni e modifiche più recenti, visita la pagina Alternate Vie Lasciare il gruppo? <usetemplate name="okcancelbuttons" notext="Annulla" yestext="OK"/> </notification> + <notification name="GroupDepart"> + Hai abbandonato il gruppo "[group_name]". + </notification> <notification name="OwnerCannotLeaveGroup"> Impossibile abbandonare il gruppo. Non puoi abbandonare il gruppo perché sei l'ultimo proprietario del gruppo. Devi prima assegnare a un altro membro il ruolo di proprietario. <usetemplate name="okbutton" yestext="OK"/> </notification> + <notification name="GroupDepartError"> + Impossibile abbandonare il gruppo. + <usetemplate name="okbutton" yestext="OK"/> + </notification> <notification name="ConfirmKick"> Vuoi veramente espellere tutti i residenti dalla griglia? <usetemplate name="okcancelbuttons" notext="Annulla" yestext="Espelli tutti i residenti"/> @@ -2135,6 +2156,10 @@ Cambierà migliaia di regioni e produrrà seri problemi ai vari server. Hai selezionato troppi prim. Seleziona non più di [MAX_PRIM_COUNT] prim e riprova <usetemplate name="okbutton" yestext="OK"/> </notification> + <notification name="TooManyScriptsSelected"> + Troppi script negli oggetti selezionati. Seleziona meno oggetti e riprova. + <usetemplate name="okbutton" yestext="OK"/> + </notification> <notification name="ProblemImportingEstateCovenant"> Problemi nell'importazione del regolamento della proprietà. <usetemplate name="okbutton" yestext="OK"/> @@ -2304,6 +2329,10 @@ Trasferisci gli elementi nell'inventario? Pagamento non riuscito: oggetto non trovato. <usetemplate name="okbutton" yestext="OK"/> </notification> + <notification name="PaymentBlockedButtonMismatch"> + Pagamento interrotto: il prezzo pagato non corrisponde a nessuno dei pulsanti di pagamento impostati per questo oggetto. + <usetemplate name="okbutton" yestext="OK"/> + </notification> <notification name="OpenObjectCannotCopy"> Non ci sono elementi in questo oggetto che tu possa copiare. </notification> @@ -2339,6 +2368,11 @@ Questa azione non può essere ripristinata Questa è una selezione di grandi dimensioni con set collegati. Se viene scollegata, potrebbe non essere possibile ricollegarla. Come precauzione ti consigliamo di salvare copie dei set collegati nel tuo inventario. <usetemplate ignoretext="Conferma per scollegare un set collegato" name="okcancelignore" notext="Annulla" yestext="Scollega"/> </notification> + <notification name="HelpReportAbuseConfirm"> + Ti ringraziamo della segnalazione. +Esamineremo il tuo rapporto e, in caso di violazioni, prenderemo le misure appropriate. + <usetemplate name="okbutton" yestext="OK"/> + </notification> <notification name="HelpReportAbuseSelectCategory"> Scegli una categoria per questa segnalazione di abuso. Scegliere una categoria, ci aiuta a gestire ed elaborare le segnalazioni di abuso. @@ -2767,6 +2801,10 @@ Qui non puoi volare. <notification name="PathfindingDirty"> La regione ha modifiche di pathfinding in sospeso. Se hai le autorizzazioni necessarie per la costruzione puoi eseguire il rebake facendo clic sul pulsante “Rebake regione”. </notification> + <notification name="PathfindingDirtyRebake"> + La regione ha modifiche di pathfinding in sospeso. Se hai le autorizzazioni necessarie per la costruzione, puoi eseguire il rebake facendo clic sul pulsante “Rebake regione”. + <usetemplate name="okbutton" yestext="Rebake regione"/> + </notification> <notification name="DynamicPathfindingDisabled"> Il pathfinding dinamico non è attivato in questa regione. Gli oggetti scriptati che usano chiamate LSL di pathfinding potrebbero non funzionare come previsto in questa regione. </notification> @@ -3273,11 +3311,13 @@ Per sicurezza, verranno bloccati per alcuni secondi. L'aspetto è stato salvato in XML su [PATH] </notification> <notification name="AppearanceToXMLFailed"> - L'aspetto non è stato salvato in XML. - icon="notifytip.tga" - name="PresetNotDeleted" - type="notifytip"> -Errore nella cancellazione del valore predefinito [NAME]. + Salvataggio aspetto in formato XML non riuscito. + </notification> + <notification name="PresetNotSaved"> + Errore durante il salvataggio del valore predefinito [NAME]. + </notification> + <notification name="PresetNotDeleted"> + Errore durante l'eliminazione del valore predefinito [NAME]. </notification> <notification name="UnableToFindHelpTopic"> Impossibile trovare l'argomento nell'aiuto per questo elemento. @@ -3487,13 +3527,6 @@ Clicca e trascina dovunque nel mondo per ruotare la visuale <notification name="ForceQuitDueToLowMemory"> SL verrà interrotto tra 30 secondi a causa di spazio di memoria insufficiente. </notification> - <notification name="PopupAttempt"> - Non è stato possibile aprire una finestra pop-up. - <form name="form"> - <ignore name="ignore" text="Attiva tutti i pop-up"/> - <button name="open" text="Apri finestra pop-up"/> - </form> - </notification> <notification name="SOCKS_NOT_PERMITTED"> Il proxy SOCKS 5 "[HOST]:[PORT]" ha rifiutato il collegamento, che non è consentito dalle regole. <usetemplate name="okbutton" yestext="OK"/> @@ -3868,6 +3901,9 @@ Riprova tra un minuto. Impossibile muovere l'oggetto '[OBJECT_NAME]' a [OBJ_POSITION] nella regione [REGION_NAME] perché non ci sono risorse sufficienti per l'oggetto su questo lotto. </notification> + <notification name="NoParcelPermsNoObject"> + Copia non riuscita perché non hai accesso a quel lotto. + </notification> <notification name="CantMoveObjectRegionVersion"> Impossibile muovere l'oggetto '[OBJECT_NAME]' a [OBJ_POSITION] nella regione [REGION_NAME] perché nell'altra regione è in esecuzione una versione precedente che non consente la ricezione di questo oggetto attraverso i confini tra regioni. @@ -3883,6 +3919,10 @@ Riprova tra un minuto. <notification name="NoPermModifyObject"> Non hai l'autorizzazione necessaria per modificare questa immagine </notification> + <notification name="TooMuchObjectInventorySelected"> + Selezionati troppi oggetti con tanti elementi di inventario. Seleziona meno oggetti e riprova. + <usetemplate name="okbutton" yestext="OK"/> + </notification> <notification name="CantEnablePhysObjContributesToNav"> Non è possibile attivare la fisica per un oggetto che contribuisce al navmesh. </notification> @@ -3919,6 +3959,12 @@ Riprova tra un minuto. <notification name="CantSaveModifyAttachment"> Impossibile salvare i contenuti dell'oggetto: Verrebbero modificate le autorizzazioni per il collegamento. </notification> + <notification name="AttachmentHasTooMuchInventory"> + Gli allegati contengono troppi elementi di inventario e non puoi aggiungerne altri. + </notification> + <notification name="IllegalAttachment"> + Il collegamento ha richiesto un punto sull'avatar che non esiste. È stato collegato al petto. + </notification> <notification name="TooManyScripts"> Troppi script. </notification> @@ -4011,6 +4057,12 @@ Riprova tra un minuto. <notification name="TeleportedByObjectUnknownUser"> Sei stato teleportato dall'oggetto '[OBJECT_NAME]' di proprietà di un utente sconosciuto. </notification> + <notification name="StandDeniedByObject"> + Al momento, "[OBJECT_NAME]" non ti permette di stare in piedi. + </notification> + <notification name="ResitDeniedByObject"> + Al momento, "[OBJECT_NAME]" non ti permette di cambiare il posto a sedere. + </notification> <notification name="CantCreateObjectRegionFull"> Impossibile creare l'oggetto richiesto. La regione è piena. </notification> @@ -4092,9 +4144,6 @@ Riprova tra un minuto. <notification name="CantAttachNotEnoughScriptResources"> Risorse di script non sufficienti per collegare l'oggetto. </notification> - <notification name="IllegalAttachment"> - Il collegamento ha richiesto un punto sull'avatar che non esiste. È stato collegato al petto. - </notification> <notification name="CantDropItemTrialUser"> Non puoi lasciare oggetti qui, prova la zona Prova gratuita. </notification> @@ -4310,6 +4359,9 @@ Prova a selezionare un pezzo di terreno più piccolo. <notification name="CantTransfterMoneyRegionDisabled"> Il trasferimento di denaro agli oggetti è attualmente disattivato in questa regione. </notification> + <notification name="DroppedMoneyTransferRequest"> + Impossibile effettuare il pagamento a causa del carico del sistema. + </notification> <notification name="CantPayNoAgent"> Non si capisce chi deve essere pagato. </notification> @@ -4345,4 +4397,8 @@ Prova a selezionare un pezzo di terreno più piccolo. Il file della cronologia del file sta ancora eseguendo l'operazione precedente. Riprova nuovamente tra qualche minuto oppure chatta con un'altra persona. <usetemplate name="okbutton" yestext="OK"/> </notification> + <notification name="OutfitPhotoLoadError"> + [REASON] + <usetemplate name="okbutton" yestext="OK"/> + </notification> </notifications> diff --git a/indra/newview/skins/default/xui/it/panel_outfits_inventory.xml b/indra/newview/skins/default/xui/it/panel_outfits_inventory.xml index c7821bc363..a19fa4eb18 100644 --- a/indra/newview/skins/default/xui/it/panel_outfits_inventory.xml +++ b/indra/newview/skins/default/xui/it/panel_outfits_inventory.xml @@ -7,6 +7,7 @@ Indossa capi selezionati </panel.string> <tab_container name="appearance_tabs"> + <panel label="GALLERIA VESTIARIO" name="outfit_gallery_tab"/> <panel label="I MIEI ABITI" name="outfitslist_tab"/> <panel label="INDOSSA" name="cof_tab"/> </tab_container> diff --git a/indra/newview/skins/default/xui/it/panel_outfits_wearing.xml b/indra/newview/skins/default/xui/it/panel_outfits_wearing.xml index 3bbf2446f5..0efed03e65 100644 --- a/indra/newview/skins/default/xui/it/panel_outfits_wearing.xml +++ b/indra/newview/skins/default/xui/it/panel_outfits_wearing.xml @@ -1,6 +1,13 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <panel name="Wearing"> + <panel.string name="no_attachments"> + Nessun allegato indossato. + </panel.string> + <accordion name="wearables_accordion"> + <accordion_tab name="tab_wearables" title="Indossabili"/> + <accordion_tab name="tab_temp_attachments" title="Allegati temporanei"/> + </accordion> <panel name="bottom_panel"> - <button name="options_gear_btn" tool_tip="Mostra ulteriori opzioni"/> + <menu_button name="options_gear_btn" tool_tip="Mostra ulteriori opzioni"/> </panel> </panel> diff --git a/indra/newview/skins/default/xui/it/panel_preferences_setup.xml b/indra/newview/skins/default/xui/it/panel_preferences_setup.xml index 093f7fc411..d34bb7c3a4 100644 --- a/indra/newview/skins/default/xui/it/panel_preferences_setup.xml +++ b/indra/newview/skins/default/xui/it/panel_preferences_setup.xml @@ -30,6 +30,7 @@ <combo_box.item label="Scarica e installa manualmente gli aggiornamenti" name="Install_manual"/> </combo_box> <check_box label="Disponibile agli aggiornamenti con versioni non rilasciate" name="update_willing_to_test"/> + <check_box label="Mostra note di release dopo l'aggiornamento" name="update_show_release_notes"/> <text name="Proxy Settings:"> Impostazioni proxy: </text> diff --git a/indra/newview/skins/default/xui/it/strings.xml b/indra/newview/skins/default/xui/it/strings.xml index bb2f221db9..8246f91d17 100644 --- a/indra/newview/skins/default/xui/it/strings.xml +++ b/indra/newview/skins/default/xui/it/strings.xml @@ -58,17 +58,34 @@ Scheda grafica: [GRAPHICS_CARD] <string name="AboutDriver"> Versione driver Windows per grafica: [GRAPHICS_DRIVER_VERSION] </string> - <string name="AboutLibs"> + <string name="AboutOGL"> Versione OpenGL: [OPENGL_VERSION] - -Versione J2C Decoder: [J2C_VERSION] + </string> + <string name="AboutSettings"> + Dimensione finestra: [WINDOW_WIDTH] x [WINDOW_HEIGHT] +Regolazione dimensioni carattere: [FONT_SIZE_ADJUSTMENT] punti +Scala UI: [UI_SCALE] +Distanza visualizzazione: [DRAW_DISTANCE] m +Larghezza banda: [NET_BANDWITH] kbit/s +Fattore livello di dettaglio: [LOD_FACTOR] +Qualità di rendering: [RENDER_QUALITY] / 7 +Modello illuminazione avanzato: [GPU_SHADERS] +Memoria texture: [TEXTURE_MEMORY] MB +Data/ora creazione VFS (cache): [VFS_TIME] + </string> + <string name="AboutLibs"> + Versione J2C Decoder: [J2C_VERSION] Versione Driver audio: [AUDIO_DRIVER_VERSION] Versione LLCEFLib/CEF: [LLCEFLIB_VERSION] -Versione server voce: [VOICE_VERSION] +Versione LibVLC: [LIBVLC_VERSION] +Versione Server voice: [VOICE_VERSION] </string> <string name="AboutTraffic"> Pacchetti perduti: [PACKETS_LOST,number,0]/[PACKETS_IN,number,0] ([PACKETS_PCT,number,1]%) </string> + <string name="AboutTime"> + [day, datetime, slt] [month, datetime, slt] [year, datetime, slt] [hour, datetime, slt]:[min, datetime, slt]:[second,datetime,slt] + </string> <string name="ErrorFetchingServerReleaseNotesURL"> Errore nel recupero URL note rilascio versione </string> @@ -1083,6 +1100,9 @@ Prova ad accedere nuovamente tra un minuto. <string name="TeleportYourAgent"> Teleportarti </string> + <string name="ForceSitAvatar"> + Forza l'avatar a sedersi + </string> <string name="AgentNameSubst"> (Tu) </string> @@ -1922,6 +1942,27 @@ Prova ad accedere nuovamente tra un minuto. <string name="av_render_anyone"> Tutte le persone vicine a te potrebbero non eseguire il tuo rendering. </string> + <string name="hud_description_total"> + Il tuo HUD + </string> + <string name="hud_name_with_joint"> + [OBJ_NAME] (indossato su [JNT_NAME]) + </string> + <string name="hud_render_memory_warning"> + [HUD_DETAILS] fa uso di molta memoria texture + </string> + <string name="hud_render_cost_warning"> + [HUD_DETAILS] contiene molti oggetti e texture che occupano una grande quantità di risorse + </string> + <string name="hud_render_heavy_textures_warning"> + [HUD_DETAILS] contiene molte texture di grandi dimensioni + </string> + <string name="hud_render_cramped_warning"> + [HUD_DETAILS] contiene troppi oggetti + </string> + <string name="hud_render_textures_warning"> + [HUD_DETAILS] contiene troppe texture + </string> <string name="AgeYearsA"> [COUNT] anno </string> @@ -2081,6 +2122,9 @@ Prova ad accedere nuovamente tra un minuto. <string name="ObjectOutOfRange"> Script (oggetto fuori portata) </string> + <string name="ScriptWasDeleted"> + Script (eliminato da inventario) + </string> <string name="GodToolsObjectOwnedBy"> Oggetto [OBJECT] di proprietà di [OWNER] </string> @@ -2651,6 +2695,15 @@ Tipi conosciuti .wav, .tga, .bmp, .jpg, .jpeg, or .bvh <string name="Play Media"> Riproduci/Pausa supporto </string> + <string name="IntelDriverPage"> + http://www.intel.com/p/en_US/support/detect/graphics + </string> + <string name="NvidiaDriverPage"> + http://www.nvidia.com/Download/index.aspx?lang=en-us + </string> + <string name="AMDDriverPage"> + http://support.amd.com/us/Pages/AMDSupportHub.aspx + </string> <string name="MBCmdLineError"> Un errore è stato riscontrato analizzando la linea di comando. Per informazioni: http://wiki.secondlife.com/wiki/Client_parameters @@ -4396,12 +4449,18 @@ Se il messaggio persiste, contatta [SUPPORT_SITE]. <string name="paid_you_ldollars"> [NAME] ti ha inviato un pagamento di L$[AMOUNT] [REASON]. </string> + <string name="paid_you_ldollars_gift"> + [NAME] ti ha inviato un pagamento di L$ [AMOUNT]: [REASON] + </string> <string name="paid_you_ldollars_no_reason"> [NAME] ti ha inviato un pagamento di L$[AMOUNT]. </string> <string name="you_paid_ldollars"> Hai inviato un pagamento di L$[AMOUNT] a [NAME] [REASON]. </string> + <string name="you_paid_ldollars_gift"> + Hai inviato un pagamento di L$ [AMOUNT] a [NAME]: [REASON] + </string> <string name="you_paid_ldollars_no_info"> Hai pagato L$ [AMOUNT]. </string> @@ -4414,6 +4473,9 @@ Se il messaggio persiste, contatta [SUPPORT_SITE]. <string name="you_paid_failure_ldollars"> Non hai pagato [NAME] L$[AMOUNT] [REASON]. </string> + <string name="you_paid_failure_ldollars_gift"> + Non hai inviato un pagamento di L$ [AMOUNT] a [NAME]: [REASON] + </string> <string name="you_paid_failure_ldollars_no_info"> Non hai pagato L$ [AMOUNT]. </string> @@ -4740,6 +4802,15 @@ Segnala abuso <string name="texture_load_dimensions_error"> Impossibile caricare immagini di dimensioni superiori a [WIDTH]*[HEIGHT] </string> + <string name="outfit_photo_load_dimensions_error"> + Le dimensioni massime delle foto di vestiario sono [WIDTH]*[HEIGHT]. Ridimensiona l'immagine o usane un'altra + </string> + <string name="outfit_photo_select_dimensions_error"> + Le dimensioni massime delle foto di vestiario sono [WIDTH]*[HEIGHT]. Seleziona un'altra texture + </string> + <string name="outfit_photo_verify_dimensions_error"> + Impossibile verificare le dimensioni della foto. Attendi che le dimensioni siano visualizzate nel selettore. + </string> <string name="words_separator" value=","/> <string name="server_is_down"> Nonostante i nostri tentativi, si è verificato un errore imprevisto. @@ -5244,6 +5315,9 @@ Prova a racchiudere il percorso dell'editor in doppie virgolette. <string name="Command_Profile_Label"> Profilo </string> + <string name="Command_Report_Abuse_Label"> + Segnala abuso + </string> <string name="Command_Search_Label"> Ricerca </string> @@ -5334,6 +5408,9 @@ Prova a racchiudere il percorso dell'editor in doppie virgolette. <string name="Command_Profile_Tooltip"> Modifica o visualizza il tuo profilo </string> + <string name="Command_Report_Abuse_Tooltip"> + Segnala abuso + </string> <string name="Command_Search_Tooltip"> Trova luoghi, eventi, persone </string> diff --git a/indra/newview/skins/default/xui/ja/floater_model_preview.xml b/indra/newview/skins/default/xui/ja/floater_model_preview.xml index 108892dd6d..c22aaaf4c4 100644 --- a/indra/newview/skins/default/xui/ja/floater_model_preview.xml +++ b/indra/newview/skins/default/xui/ja/floater_model_preview.xml @@ -245,6 +245,7 @@ </text> <check_box label="スキンの重さを含む" name="upload_skin"/> <check_box label="ジョイントポジションを含む" name="upload_joints"/> + <check_box label="ジョイント位置が定義されている場合、スケールをロック" name="lock_scale_if_joint_position"/> <text name="pelvis_offset_label"> Z オフセット(アバターを上下調整): </text> diff --git a/indra/newview/skins/default/xui/ja/floater_pay.xml b/indra/newview/skins/default/xui/ja/floater_pay.xml index 0ca0990bd4..7807fdf7b4 100644 --- a/indra/newview/skins/default/xui/ja/floater_pay.xml +++ b/indra/newview/skins/default/xui/ja/floater_pay.xml @@ -1,9 +1,20 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <floater name="Give Money" title=""> - <string name="payee_group">グループに支払う</string> - <string name="payee_resident">住人に支払う</string> - <text name="paying_text">支払中:</text> - <text name="payee_name">非常に長い名前が途中で切れていないかをテストして確認</text> + <string name="payee_group"> + グループに支払う + </string> + <string name="payee_resident"> + 住人に支払う + </string> + <text name="paying_text"> + 支払中: + </text> + <text name="payee_name"> + 非常に長い名前が途中で切れていないかをテストして確認 + </text> + <text name="payment_message_label"> + 説明(任意項目): + </text> <panel label="検索" name="PatternsPanel"> <button label="L$ 1 支払う" label_selected="L$ 1 支払う" name="fastpay 1"/> <button label="L$ 5 支払う" label_selected="L$ 5 支払う" name="fastpay 5"/> @@ -11,7 +22,9 @@ <button label="L$ 20 支払う" label_selected="L$ 20 支払う" name="fastpay 20"/> </panel> <panel label="検索" name="InputPanel"> - <text name="amount text">その他の金額:</text> + <text name="amount text"> + その他の金額: + </text> <button label="支払い" label_selected="支払い" name="pay btn"/> <button label="取り消し" label_selected="取り消し" name="cancel btn"/> </panel> diff --git a/indra/newview/skins/default/xui/ja/floater_script_queue.xml b/indra/newview/skins/default/xui/ja/floater_script_queue.xml index 97e79fb483..de0c4469c1 100644 --- a/indra/newview/skins/default/xui/ja/floater_script_queue.xml +++ b/indra/newview/skins/default/xui/ja/floater_script_queue.xml @@ -15,5 +15,11 @@ <floater.string name="NotRunning"> 実行されていません </floater.string> + <floater.string name="Timeout"> + タイムアウト: [OBJECT_NAME] + </floater.string> + <floater.string name="LoadingObjInv"> + 次のインベントリをロード中: [OBJECT_NAME] + </floater.string> <button label="閉じる" label_selected="閉じる" name="close"/> </floater> diff --git a/indra/newview/skins/default/xui/ja/floater_web_content.xml b/indra/newview/skins/default/xui/ja/floater_web_content.xml index 48fe8aee78..d57cd4e297 100644 --- a/indra/newview/skins/default/xui/ja/floater_web_content.xml +++ b/indra/newview/skins/default/xui/ja/floater_web_content.xml @@ -10,5 +10,9 @@ <icon name="media_secure_lock_flag" tool_tip="安全な閲覧"/> <button name="popexternal" tool_tip="この URL をブラウザで開く"/> </layout_panel> + <layout_panel name="debug_controls"> + <button name="web_test_home_page" tool_tip="Web テストのホームページ"/> + <button name="VLC Plugin Test" tool_tip="MPEG4 ビデオテスト"/> + </layout_panel> </layout_stack> </floater> diff --git a/indra/newview/skins/default/xui/ja/menu_attachment_other.xml b/indra/newview/skins/default/xui/ja/menu_attachment_other.xml index 78c36a4392..23357ebbc2 100644 --- a/indra/newview/skins/default/xui/ja/menu_attachment_other.xml +++ b/indra/newview/skins/default/xui/ja/menu_attachment_other.xml @@ -7,6 +7,7 @@ <menu_item_call label="コール" name="Call"/> <menu_item_call label="グループに招待" name="Invite..."/> <menu_item_call label="スケルトンをリセット" name="Reset Skeleton"/> + <menu_item_call label="スケルトンとアニメーションをリセット" name="Reset Skeleton And Animations"/> <menu_item_call label="ブロック" name="Avatar Mute"/> <menu_item_call label="報告" name="abuse"/> <menu_item_call label="フリーズ" name="Freeze..."/> diff --git a/indra/newview/skins/default/xui/ja/menu_attachment_self.xml b/indra/newview/skins/default/xui/ja/menu_attachment_self.xml index ba46f91504..fa1137c7c5 100644 --- a/indra/newview/skins/default/xui/ja/menu_attachment_self.xml +++ b/indra/newview/skins/default/xui/ja/menu_attachment_self.xml @@ -10,6 +10,7 @@ <menu_item_call label="シェイプの編集" name="Edit My Shape"/> <menu_item_call label="ホバー高さ" name="Hover Height"/> <menu_item_call label="スケルトンをリセット" name="Reset Skeleton"/> + <menu_item_call label="スケルトンとアニメーションをリセット" name="Reset Skeleton And Animations"/> <menu_item_call label="フレンド" name="Friends..."/> <menu_item_call label="グループ" name="Groups..."/> <menu_item_call label="プロフィール" name="Profile..."/> diff --git a/indra/newview/skins/default/xui/ja/menu_avatar_other.xml b/indra/newview/skins/default/xui/ja/menu_avatar_other.xml index b7e0537866..1902c9b359 100644 --- a/indra/newview/skins/default/xui/ja/menu_avatar_other.xml +++ b/indra/newview/skins/default/xui/ja/menu_avatar_other.xml @@ -7,6 +7,7 @@ <menu_item_call label="コール" name="Call"/> <menu_item_call label="グループに招待" name="Invite..."/> <menu_item_call label="スケルトンをリセット" name="Reset Skeleton"/> + <menu_item_call label="スケルトンとアニメーションをリセット" name="Reset Skeleton And Animations"/> <menu_item_call label="ブロック" name="Avatar Mute"/> <menu_item_call label="報告" name="abuse"/> <menu_item_call label="フリーズ" name="Freeze..."/> diff --git a/indra/newview/skins/default/xui/ja/menu_avatar_self.xml b/indra/newview/skins/default/xui/ja/menu_avatar_self.xml index a3847ed555..b0a619bcb0 100644 --- a/indra/newview/skins/default/xui/ja/menu_avatar_self.xml +++ b/indra/newview/skins/default/xui/ja/menu_avatar_self.xml @@ -27,6 +27,7 @@ <menu_item_call label="シェイプを編集" name="Edit My Shape"/> <menu_item_call label="ホバー高さ" name="Hover Height"/> <menu_item_call label="スケルトンをリセット" name="Reset Skeleton"/> + <menu_item_call label="スケルトンとアニメーションをリセット" name="Reset Skeleton And Animations"/> <menu_item_call label="フレンド" name="Friends..."/> <menu_item_call label="グループ" name="Groups..."/> <menu_item_call label="プロフィール" name="Profile..."/> diff --git a/indra/newview/skins/default/xui/ja/menu_login.xml b/indra/newview/skins/default/xui/ja/menu_login.xml index abf7bce067..71f36b17be 100644 --- a/indra/newview/skins/default/xui/ja/menu_login.xml +++ b/indra/newview/skins/default/xui/ja/menu_login.xml @@ -20,13 +20,12 @@ <menu_item_check label="デバッグメニューを表示する" name="Show Debug Menu"/> <menu label="デバッグ" name="Debug"> <menu_item_call label="デバッグ設定を表示" name="Debug Settings"/> - <menu_item_call label="UI/色の設定" name="UI/Color Settings"/> <menu_item_call label="XUI プレビューツール" name="UI Preview Tool"/> <menu label="UI テスト" name="UI Tests"/> <menu_item_call label="ウィンドウのサイズを設定..." name="Set Window Size..."/> <menu_item_call label="利用規約を表示" name="TOS"/> <menu_item_call label="クリティカルメッセージを表示" name="Critical"/> - <menu_item_call label="Web コンテンツフローターのデバッグテスト" name="Web Content Floater Debug Test"/> + <menu_item_call label="メディアブラウザ" name="Media Browser"/> <menu label="ログレベルを設定" name="Set Logging Level"> <menu_item_check label="デバッグ" name="Debug"/> <menu_item_check label="情報" name="Info"/> diff --git a/indra/newview/skins/default/xui/ja/menu_object_icon.xml b/indra/newview/skins/default/xui/ja/menu_object_icon.xml index 6448e9244e..7b55a64eef 100644 --- a/indra/newview/skins/default/xui/ja/menu_object_icon.xml +++ b/indra/newview/skins/default/xui/ja/menu_object_icon.xml @@ -2,6 +2,7 @@ <menu name="Object Icon Menu"> <menu_item_call label="オブジェクトのプロフィール..." name="Object Profile"/> <menu_item_call label="ブロック..." name="Block"/> + <menu_item_call label="ブロック解除" name="Unblock"/> <menu_item_call label="地図に表示" name="show_on_map"/> <menu_item_call label="オブジェクトの場所にテレポート" name="teleport_to_object"/> </menu> diff --git a/indra/newview/skins/default/xui/ja/menu_outfit_gear.xml b/indra/newview/skins/default/xui/ja/menu_outfit_gear.xml index 1969ae2a10..5e02fd3b8f 100644 --- a/indra/newview/skins/default/xui/ja/menu_outfit_gear.xml +++ b/indra/newview/skins/default/xui/ja/menu_outfit_gear.xml @@ -3,6 +3,10 @@ <menu_item_call label="着る - 着用中のアウトフィットを入れ替える" name="wear"/> <menu_item_call label="着る - 着用中のアウトフィットに追加する" name="wear_add"/> <menu_item_call label="取り外す - 着用中のアウトフィットから取り除く" name="take_off"/> + <menu_item_call label="写真をアップロード(L$10)" name="upload_photo"/> + <menu_item_call label="写真を選択" name="select_photo"/> + <menu_item_call label="スナップショットを撮る" name="take_snapshot"/> + <menu_item_call label="写真を削除" name="remove_photo"/> <menu label="衣類" name="New Clothes"> <menu_item_call label="シャツ" name="New Shirt"/> <menu_item_call label="パンツ" name="New Pants"/> @@ -27,4 +31,5 @@ <menu_item_call label="フォルダをすべて閉じる" name="collapse"/> <menu_item_call label="アウトフィットの名前を変更する" name="rename"/> <menu_item_call label="アウトフィットを削除する" name="delete_outfit"/> + <menu_item_check label="フォルダを常に名前順に並べる" name="sort_folders_by_name"/> </toggleable_menu> diff --git a/indra/newview/skins/default/xui/ja/menu_people_friends_view.xml b/indra/newview/skins/default/xui/ja/menu_people_friends_view.xml index b95d11fdbd..f290bec652 100644 --- a/indra/newview/skins/default/xui/ja/menu_people_friends_view.xml +++ b/indra/newview/skins/default/xui/ja/menu_people_friends_view.xml @@ -4,5 +4,6 @@ <menu_item_check label="オンライン状況で並べ替え" name="sort_status"/> <menu_item_check label="人のアイコン表示" name="view_icons"/> <menu_item_check label="与えられた権限を表示" name="view_permissions"/> + <menu_item_check label="ユーザー名を非表示" name="view_usernames"/> <menu_item_check label="会話ログを表示..." name="view_conversation"/> </toggleable_menu> diff --git a/indra/newview/skins/default/xui/ja/menu_people_nearby.xml b/indra/newview/skins/default/xui/ja/menu_people_nearby.xml index 972ab767bf..87f1d26ca4 100644 --- a/indra/newview/skins/default/xui/ja/menu_people_nearby.xml +++ b/indra/newview/skins/default/xui/ja/menu_people_nearby.xml @@ -13,4 +13,6 @@ <menu_item_call label="共有" name="share"/> <menu_item_call label="支払い" name="pay"/> <menu_item_check label="ブロック・ブロック解除" name="block_unblock"/> + <menu_item_call label="フリーズ" name="freeze"/> + <menu_item_call label="追放" name="eject"/> </context_menu> diff --git a/indra/newview/skins/default/xui/ja/menu_people_nearby_view.xml b/indra/newview/skins/default/xui/ja/menu_people_nearby_view.xml index b7cccc4396..9330a8e484 100644 --- a/indra/newview/skins/default/xui/ja/menu_people_nearby_view.xml +++ b/indra/newview/skins/default/xui/ja/menu_people_nearby_view.xml @@ -5,4 +5,5 @@ <menu_item_check label="距離で並べ替え" name="sort_distance"/> <menu_item_check label="人のアイコン表示" name="view_icons"/> <menu_item_check label="地図を表示" name="view_map"/> + <menu_item_check label="ユーザー名を非表示" name="view_usernames"/> </toggleable_menu> diff --git a/indra/newview/skins/default/xui/ja/menu_url_objectim.xml b/indra/newview/skins/default/xui/ja/menu_url_objectim.xml index a02ca8415d..96f8b3f7b1 100644 --- a/indra/newview/skins/default/xui/ja/menu_url_objectim.xml +++ b/indra/newview/skins/default/xui/ja/menu_url_objectim.xml @@ -2,6 +2,7 @@ <context_menu name="Url Popup"> <menu_item_call label="オブジェクトのプロフィール..." name="show_object"/> <menu_item_call label="ブロック..." name="block_object"/> + <menu_item_call label="ブロック解除" name="unblock_object"/> <menu_item_call label="地図に表示" name="show_on_map"/> <menu_item_call label="オブジェクトの場所にテレポート" name="teleport_to_object"/> <menu_item_call label="オブジェクト名をクリップボードにコピー" name="url_copy_label"/> diff --git a/indra/newview/skins/default/xui/ja/menu_viewer.xml b/indra/newview/skins/default/xui/ja/menu_viewer.xml index c2ae77bef2..e0834eb12d 100644 --- a/indra/newview/skins/default/xui/ja/menu_viewer.xml +++ b/indra/newview/skins/default/xui/ja/menu_viewer.xml @@ -113,11 +113,11 @@ <menu_item_call label="リンク" name="Link"/> <menu_item_call label="リンクを外す" name="Unlink"/> <menu_item_check label="リンクした部分を編集" name="Edit Linked Parts"/> - <menu label="リンクした部分を選択する" name="Select Linked Parts"> - <menu_item_call label="次の部分を選択する" name="Select Next Part"/> - <menu_item_call label="前回の部分を選択する" name="Select Previous Part"/> - <menu_item_call label="次の部分を含める" name="Include Next Part"/> - <menu_item_call label="前回の部分を含める" name="Include Previous Part"/> + <menu label="要素を選択" name="Select Elements"> + <menu_item_call label="次のパーツまたは面を選択" name="Select Next Part or Face"/> + <menu_item_call label="前のパーツまたは面を選択" name="Select Previous Part or Face"/> + <menu_item_call label="次のパーツまたは面を含める" name="Include Next Part or Face"/> + <menu_item_call label="前のパーツまたは面を含める" name="Include Previous Part or Face"/> </menu> <menu_item_call label="リンクセット..." name="pathfinding_linkset_menu_item"/> <menu_item_call label="選択したものに焦点を合わせる" name="Focus on Selection"/> @@ -368,8 +368,7 @@ <menu_item_call label="リージョンオブジェクトのキャッシュをダンプ" name="Dump Region Object Cache"/> </menu> <menu label="UI" name="UI"> - <menu_item_call label="メディアブラウザのテスト" name="Web Browser Test"/> - <menu_item_call label="Web コンテンツブラウザ" name="Web Content Browser"/> + <menu_item_call label="メディアブラウザ" name="Media Browser"/> <menu_item_call label="SelectMgr をダンプ" name="Dump SelectMgr"/> <menu_item_call label="インベントリの出力" name="Dump Inventory"/> <menu_item_call label="タイマーをダンプ" name="Dump Timers"/> diff --git a/indra/newview/skins/default/xui/ja/menu_wearing_tab.xml b/indra/newview/skins/default/xui/ja/menu_wearing_tab.xml index 9effed1f42..bf8e72e457 100644 --- a/indra/newview/skins/default/xui/ja/menu_wearing_tab.xml +++ b/indra/newview/skins/default/xui/ja/menu_wearing_tab.xml @@ -3,4 +3,6 @@ <menu_item_call label="取り外す" name="take_off"/> <menu_item_call label="取り外す" name="detach"/> <menu_item_call label="アウトフットの編集" name="edit"/> + <menu_item_call label="編集" name="edit_item"/> + <menu_item_call label="オリジナルを表示" name="show_original"/> </context_menu> diff --git a/indra/newview/skins/default/xui/ja/mime_types.xml b/indra/newview/skins/default/xui/ja/mime_types.xml index bfc8d0b724..6de9244b40 100644 --- a/indra/newview/skins/default/xui/ja/mime_types.xml +++ b/indra/newview/skins/default/xui/ja/mime_types.xml @@ -22,14 +22,6 @@ ムービー再生 </playtip> </widgetset> - <widgetset name="none"> - <label name="none_label"> - コンテンツなし - </label> - <tooltip name="none_tooltip"> - ここにメディアなし - </tooltip> - </widgetset> <widgetset name="image"> <label name="image_label"> 画像 @@ -52,11 +44,24 @@ ここのオーディオを再生する </playtip> </widgetset> + <widgetset name="none"> + <label name="none_label"> + コンテンツなし + </label> + <tooltip name="none_tooltip"> + ここにメディアなし + </tooltip> + </widgetset> <scheme name="rtsp"> <label name="rtsp_label"> リアルタイム・ストリーミング </label> </scheme> + <scheme name="libvlc"> + <label name="libvlc_label"> + LibVLC 対応メディア + </label> + </scheme> <mimetype name="blank"> <label name="blank_label"> -- なし -- @@ -127,11 +132,6 @@ Macromedia Director </label> </mimetype> - <mimetype name="application/x-shockwave-flash"> - <label name="application/x-shockwave-flash_label"> - Flash - </label> - </mimetype> <mimetype name="audio/mid"> <label name="audio/mid_label"> オーディオ (MIDI) @@ -207,6 +207,11 @@ ムービー (MP4) </label> </mimetype> + <mimetype name="application/octet-stream"> + <label name="video/octet-stream"> + ムービー + </label> + </mimetype> <mimetype menu="1" name="video/quicktime"> <label name="video/quicktime_label"> ムービー (QuickTime) diff --git a/indra/newview/skins/default/xui/ja/notifications.xml b/indra/newview/skins/default/xui/ja/notifications.xml index 54e5f29621..00d9b3ca5c 100644 --- a/indra/newview/skins/default/xui/ja/notifications.xml +++ b/indra/newview/skins/default/xui/ja/notifications.xml @@ -337,6 +337,9 @@ [COUNT] 名のメンバーをグループから追放しようとしています。 <usetemplate ignoretext="グループからの複数のメンバーの追放を確認します" name="okcancelignore" notext="取り消し" yestext="禁止"/> </notification> + <notification name="GroupBanUserOnBanlist"> + 一部の住人がグループから追放されたため、招待状が送られませんでした。 + </notification> <notification name="AttachmentDrop"> アタッチメントを下に置こうとしています。 続けますか? @@ -475,6 +478,12 @@ L$ が不足しているのでこのグループに参加することができ <notification name="ErrorEncodingSnapshot"> スナップショットのエンコード化でエラーが出ました! </notification> + <notification name="ErrorPhotoCannotAfford"> + インベントリに写真を保存するには L$[COST] が必要です。L$ を購入するか、代わりに写真をっコンピュータに保存できます。 + </notification> + <notification name="ErrorTextureCannotAfford"> + インベントリにテクスチャを保存するには L$[COST] が必要です。L$ を購入するか、代わりに写真をコンピュータに保存できます。 + </notification> <notification name="ErrorUploadingPostcard"> 次の理由で、スナップショットの送信時に問題が起こりました: [REASON] </notification> @@ -593,6 +602,10 @@ L$ が不足しているのでこのグループに参加することができ ノートカードを削除しますか? <usetemplate name="okcancelbuttons" notext="取り消し" yestext="OK"/> </notification> + <notification name="LoadPreviousReportScreenshot"> + 以前のスクリーンショットをレポートに使用しますか? + <usetemplate name="okcancelbuttons" notext="取り消し" yestext="OK"/> + </notification> <notification name="GestureSaveFailedTooManySteps"> ジェスチャーの保存に失敗しました。 ステップが多すぎます。 @@ -653,32 +666,14 @@ L$ が不足しているのでこのグループに参加することができ </url> <usetemplate ignoretext="使用中のコンピューターのハードウェアがサポートされていないとき" name="okcancelignore" notext="いいえ" yestext="はい"/> </notification> - <notification name="IntelOldDriver"> - おそらくお使いのグラフィックチップ用の新しいドライバが入手可能です。グラフィックドライバを更新することにより、パフォーマンスが大幅に向上する場合があります。 - -[_URL] にアクセスして更新版のドライバがあるかどうかを確認しますか? - <url name="url"> - http://www.intel.com/p/ja_JP/support/detect/graphics - </url> - <usetemplate ignoretext="使用しているグラフィックドライバが古い場合" name="okcancelignore" notext="いいえ" yestext="はい"/> - </notification> - <notification name="AMDOldDriver"> - お使いのグラフィックチップには最新のドライバが存在するようです。グラフィックドライバを更新すると、パフォーマンスが大幅に改善されます。 - -[_URL] へアクセスして、ドライバーを更新しますか。 - <url name="url"> - http://support.amd.com/us/Pages/AMDSupportHub.aspx - </url> - <usetemplate ignoretext="自分のグラフィックドライバが旧くなりました。" name="okcancelignore" notext="いいえ" yestext="はい"/> - </notification> - <notification name="NVIDIAOldDriver"> - お使いのグラフィックチップには最新のドライバが存在するようです。グラフィックドライバを更新すると、パフォーマンスが大幅に改善されます。 + <notification name="OldGPUDriver"> + グラフィックスチップに最新のドライバがある可能性があります。グラフィックドライバを更新することにより、大幅にパフォーマンスが向上します。 -[_URL] へアクセスして、ドライバーを更新しますか。 + ドライバの更新を確認するために [URL] にアクセスしますか? <url name="url"> - http://www.nvidia.com/Download/index.aspx?lang=en-us + [URL] </url> - <usetemplate ignoretext="自分のグラフィックドライバが旧くなりました。" name="okcancelignore" notext="いいえ" yestext="はい"/> + <usetemplate ignoretext="使用中のグラフィックドライバが古くなっています" name="okcancelignore" notext="いいえ" yestext="はい"/> </notification> <notification name="UnknownGPU"> お使いのシステムには、[APP_NAME] が認識できないグラフィックカードが搭載されています。 @@ -767,6 +762,9 @@ L$ が不足しているのでこのグループに参加することができ </url> <usetemplate name="okcancelbuttons" notext="取り消し" yestext="OK"/> </notification> + <notification name="MuteLimitReached"> + [MUTE_LIMIT] エントリの制限に達したため、ブロックリストに新しいエントリを追加できません。 + </notification> <notification name="UnableToLinkObjects"> [COUNT] 個のオブジェクトをリンクできません。 リンクできるのは最大 [MAX] 個です。 @@ -1408,6 +1406,11 @@ https://wiki.secondlife.com/wiki/Adding_Spelling_Dictionaries を参照してく </notification> <notification name="AgentComplexity"> あなたの [https://community.secondlife.com/t5/English-Knowledge-Base/Avatar-Rendering-Complexity/ta-p/2967838 avatar complexity] は [AGENT_COMPLEXITY] です。 + <usetemplate ignoretext="アバターの複雑さの変更について警告する" name="notifyignore"/> + </notification> + <notification name="HUDComplexityWarning"> + [HUD_REASON]、パフォーマンスに悪影響を与える恐れがあります。 + <usetemplate ignoretext="HUD が複雑すぎる場合はお知らせください" name="notifyignore"/> </notification> <notification name="FirstRun"> [APP_NAME] のインストールが完了しました。 @@ -1501,6 +1504,10 @@ SHA1 フィンガープリント: [MD5_DIGEST] このリージョンにいる全ての住人をホームにテレポートしますか? <usetemplate name="okcancelbuttons" notext="取り消し" yestext="OK"/> </notification> + <notification name="ChangeObjectBonusFactor"> + 地域(リージョン)内でビルドが確立された後にオブジェクトボーナスを下げると、オブジェクトが返されたり、削除されたりします。本当にオブジェクトボーナスを変更しますか? + <usetemplate ignoretext="オブジェクトボーナス係数の変更を確認" name="okcancelignore" notext="取り消し" yestext="OK"/> + </notification> <notification name="EstateObjectReturn"> [USER_NAME] が所有しているオブジェクトを返却しますか? <usetemplate name="okcancelbuttons" notext="キャンセル" yestext="OK"/> @@ -1549,6 +1556,9 @@ SHA1 フィンガープリント: [MD5_DIGEST] <notification name="OwnerCanNotBeDenied"> 不動産オーナーを不動産の「禁止住人」リストに追加できません。 </notification> + <notification name="ProblemAddingEstateManagerBanned"> + 追放された住人を不動産管理者リストに追加できません。 + </notification> <notification name="CanNotChangeAppearanceUntilLoaded"> 衣類およびシェイプが読み込まれるまでは、容姿の変更はできません。 </notification> @@ -1720,6 +1730,10 @@ http://secondlife.com/download から最新バージョンをダウンロード Web ブラウザを開いてこのコンテンツを表示しますか? <usetemplate ignoretext="ブラウザを起動して Web ページを見るとき" name="okcancelignore" notext="キャンセル" yestext="OK"/> </notification> + <notification name="SystemUIScaleFactorChanged"> + 前回実行時からシステム UI サイズ係数が変更されています。UI サイズ調整設定ページを開きますか? + <usetemplate name="okcancelbuttons" notext="取り消し" yestext="OK"/> + </notification> <notification name="WebLaunchJoinNow"> [http://jp.secondlife.com/account/ マイアカウント] ページに移動してアカウントを管理しますか? <usetemplate ignoretext="ブラウザを起動してアカウントを管理するとき" name="okcancelignore" notext="取り消し" yestext="OK"/> @@ -1761,10 +1775,17 @@ http://secondlife.com/download から最新バージョンをダウンロード グループから脱退しますか? <usetemplate name="okcancelbuttons" notext="取り消し" yestext="OK"/> </notification> + <notification name="GroupDepart"> + グループ '[group_name]' を抜けました。 + </notification> <notification name="OwnerCannotLeaveGroup"> グループを抜けることができません。グループの最後のオーナーであるため、グループを抜けることができません。最初に、別のメンバーをオーナーの役割に割り当ててください。 <usetemplate name="okbutton" yestext="OK"/> </notification> + <notification name="GroupDepartError"> + グループを抜けることができません。 + <usetemplate name="okbutton" yestext="OK"/> + </notification> <notification name="ConfirmKick"> 本当に住人全員をグリッドから追い出しますか? <usetemplate name="okcancelbuttons" notext="キャンセル" yestext="住人全員を追い出す"/> @@ -2165,6 +2186,10 @@ http://wiki.secondlife.com/wiki/Setting_your_display_name を参照してくだ 選択したプリムが多すぎます。 [MAX_PRIM_COUNT] 個選択するか、プリム数を減らしてもう一度お試しください。 <usetemplate name="okbutton" yestext="OK"/> </notification> + <notification name="TooManyScriptsSelected"> + スクリプト内で選択されたオブジェクトが多すぎます。選択するオブジェクトを減らして、もう一度やり直してください。 + <usetemplate name="okbutton" yestext="OK"/> + </notification> <notification name="ProblemImportingEstateCovenant"> 不動産約款のインポート時に問題が発生しました。 <usetemplate name="okbutton" yestext="OK"/> @@ -2337,6 +2362,10 @@ L$ [AMOUNT] で、このクラシファイド広告を今すぐ公開します 支払いが失敗しました: オブジェクトが見つかりませんでした。 <usetemplate name="okbutton" yestext="OK"/> </notification> + <notification name="PaymentBlockedButtonMismatch"> + 支払いが停止されました: 支払われた価格がこのオブジェクトに設定された支払いボタンのどれとも一致しません。 + <usetemplate name="okbutton" yestext="OK"/> + </notification> <notification name="OpenObjectCannotCopy"> このオブジェクトには、あなたがコピーできるアイテムはありません。 </notification> @@ -2372,6 +2401,12 @@ L$ [AMOUNT] で、このクラシファイド広告を今すぐ公開します これは、リンクセットによる広範囲の選択です。リンクを解除すると、もう一度リンクできなくなる可能性があります。そのような場合に備えて、リンクセットを自分の持ち物にコピーできます。 <usetemplate ignoretext="リンクセットのリンクを解除するときに確認する" name="okcancelignore" notext="取り消し" yestext="リンクを外す"/> </notification> + <notification name="HelpReportAbuseConfirm"> + この問題のご報告にお時間を割いていただきありがとうございます。 +お知らせいただいた内容について違反がないか確認し、適切に +対処いたします。 + <usetemplate name="okbutton" yestext="OK"/> + </notification> <notification name="HelpReportAbuseSelectCategory"> 嫌がらせ報告のカテゴリを選択してください。 カテゴリを選択することにより、嫌がらせ報告の処理や保管に大変役立ちます。 @@ -2806,6 +2841,10 @@ Web ページにリンクすると、他人がこの場所に簡単にアクセ <notification name="PathfindingDirty"> この値域(リージョン)には、保留中のパスファインディングの変更があります。制作権がある場合は、「地域の再構築」ボタンをクリックして、地域(リージョン)を再構築できます。 </notification> + <notification name="PathfindingDirtyRebake"> + この値域(リージョン)には、保留中のパスファインディングの変更があります。制作権がある場合は、「地域の再構築」ボタンをクリックして、地域(リージョン)を再構築できます。 + <usetemplate name="okbutton" yestext="地域の再構築"/> + </notification> <notification name="DynamicPathfindingDisabled"> この地域(リージョン)でダイナミックパスファインディングが有効になっていません。パスファインディング LSL 呼び出しを使用するスクリプト化されたオブジェクトがこの地域(リージョン)では動作できません。 </notification> @@ -3310,10 +3349,12 @@ M キーを押して変更します。 </notification> <notification name="AppearanceToXMLFailed"> 外観を XML に保存できませんでした。 - icon="notifytip.tga" - name="PresetNotDeleted" - type="notifytip"> -プリセット [NAME] の削除エラー。 + </notification> + <notification name="PresetNotSaved"> + プリセット [NAME] の保存エラー。 + </notification> + <notification name="PresetNotDeleted"> + プリセット [NAME] の削除エラー。 </notification> <notification name="UnableToFindHelpTopic"> ヘルプトピックが見つかりませんでした。 @@ -3523,13 +3564,6 @@ M キーを押して変更します。 <notification name="ForceQuitDueToLowMemory"> メモリ不足のため 30 秒以内に SL は終了します。 </notification> - <notification name="PopupAttempt"> - ポップアップがブロックされました。 - <form name="form"> - <ignore name="ignore" text="全てのポップアップを有効にする"/> - <button name="open" text="ポップアップウィンドウを開く"/> - </form> - </notification> <notification name="SOCKS_NOT_PERMITTED"> ルールセットによって許可されていないため、SOCKS 5 プロキシ "[HOST]:[PORT]" が接続を拒絶しました。 <usetemplate name="okbutton" yestext="OK"/> @@ -3900,6 +3934,9 @@ M キーを押して変更します。 <notification name="CantMoveObjectParcelResources"> この区画でこのオブジェクトのリソースが不足しているため、オブジェクト '[OBJECT_NAME]' をリージョン [REGION_NAME] 内の [OBJ_POSITION] に移動できません。 </notification> + <notification name="NoParcelPermsNoObject"> + その区画へのアクセス権がないため、コピーが失敗しました。 + </notification> <notification name="CantMoveObjectRegionVersion"> オブジェクト '[OBJECT_NAME]' をリージョン [REGION_NAME] 内の [OBJ_POSITION] に移動することはできません。他のリージョンでは、リージョンの境界をまたいだこのオブジェクトを受信することができない古いバージョンを実行しているためです。 </notification> @@ -3913,6 +3950,10 @@ M キーを押して変更します。 <notification name="NoPermModifyObject"> そのオブジェクトを変更する権限がありません </notification> + <notification name="TooMuchObjectInventorySelected"> + 大きなインベントリを持つオブジェクトの選択が多すぎます。選択するオブジェクトを減らして、もう一度やり直してください。 + <usetemplate name="okbutton" yestext="OK"/> + </notification> <notification name="CantEnablePhysObjContributesToNav"> ナビメッシュに貢献するオブジェクトに対して物理を有効にできません。 </notification> @@ -3949,6 +3990,12 @@ M キーを押して変更します。 <notification name="CantSaveModifyAttachment"> オブジェクトのコンテンツに保存できません。このため、アタッチメントの権限が変更されます。 </notification> + <notification name="AttachmentHasTooMuchInventory"> + ご使用のアタッチメントに含まれるインベントリが多すぎるため、インベントリを追加できません。 + </notification> + <notification name="IllegalAttachment"> + 添付ファイルはアバターの存在しない点を要求しました。代わりに胸に添付されていました。 + </notification> <notification name="TooManyScripts"> スクリプトが多すぎます。 </notification> @@ -4041,6 +4088,12 @@ M キーを押して変更します。 <notification name="TeleportedByObjectUnknownUser"> 不明なユーザーが所有しているオブジェクト '[OBJECT_NAME]' によって、あなたはテレポートされています。 </notification> + <notification name="StandDeniedByObject"> + '[OBJECT_NAME]' はこの時点であなたが立つことを許可しません。 + </notification> + <notification name="ResitDeniedByObject"> + '[OBJECT_NAME]' はこの時点であなたが席を変更することを許可しません。 + </notification> <notification name="CantCreateObjectRegionFull"> リクエストされたオブジェクトを作成できません。リージョンが埋まっています。 </notification> @@ -4122,9 +4175,6 @@ M キーを押して変更します。 <notification name="CantAttachNotEnoughScriptResources"> オブジェクトの着用に使用できるスクリプトリソースが足りません。 </notification> - <notification name="IllegalAttachment"> - 添付ファイルはアバターの存在しない点を要求しました。代わりに胸に添付されていました。 - </notification> <notification name="CantDropItemTrialUser"> オブジェクトをここにドロップできません。フリートライアル領域をお試しください。 </notification> @@ -4340,6 +4390,9 @@ M キーを押して変更します。 <notification name="CantTransfterMoneyRegionDisabled"> オブジェクトへの送金は、このリージョンでは現在無効にされています。 </notification> + <notification name="DroppedMoneyTransferRequest"> + システムロードにより、支払いを実行できません。 + </notification> <notification name="CantPayNoAgent"> 支払いの相手を把握できませんでした。 </notification> @@ -4375,4 +4428,8 @@ M キーを押して変更します。 チャット履歴ファイルが前の操作でビジーです。2、3 分経ってからもう一度試すか、別の人とのチャットを選択してください。 <usetemplate name="okbutton" yestext="OK"/> </notification> + <notification name="OutfitPhotoLoadError"> + [REASON] + <usetemplate name="okbutton" yestext="OK"/> + </notification> </notifications> diff --git a/indra/newview/skins/default/xui/ja/panel_outfits_inventory.xml b/indra/newview/skins/default/xui/ja/panel_outfits_inventory.xml index 93df0ba2bd..8633bfb2ad 100644 --- a/indra/newview/skins/default/xui/ja/panel_outfits_inventory.xml +++ b/indra/newview/skins/default/xui/ja/panel_outfits_inventory.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?> <panel label="もの" name="Outfits"> <panel.string name="wear_outfit_tooltip"> 選択したアウトフィットを着用する @@ -7,6 +7,7 @@ 選択したアイテムを着用 </panel.string> <tab_container name="appearance_tabs"> + <panel label="アウトフィットギャラリー" name="outfit_gallery_tab"/> <panel label="マイ アウトフィット" name="outfitslist_tab"/> <panel label="着用中" name="cof_tab"/> </tab_container> diff --git a/indra/newview/skins/default/xui/ja/panel_outfits_wearing.xml b/indra/newview/skins/default/xui/ja/panel_outfits_wearing.xml index fd03e6b89e..a6fbaae58d 100644 --- a/indra/newview/skins/default/xui/ja/panel_outfits_wearing.xml +++ b/indra/newview/skins/default/xui/ja/panel_outfits_wearing.xml @@ -1,6 +1,13 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <panel name="Wearing"> + <panel.string name="no_attachments"> + 着用しているアタッチメントはありません。 + </panel.string> + <accordion name="wearables_accordion"> + <accordion_tab name="tab_wearables" title="着用物"/> + <accordion_tab name="tab_temp_attachments" title="一時的なアタッチメント"/> + </accordion> <panel name="bottom_panel"> - <button name="options_gear_btn" tool_tip="オプションを表示します"/> + <menu_button name="options_gear_btn" tool_tip="オプションを表示します"/> </panel> </panel> diff --git a/indra/newview/skins/default/xui/ja/panel_preferences_setup.xml b/indra/newview/skins/default/xui/ja/panel_preferences_setup.xml index be823938a2..4c40ba7f7b 100644 --- a/indra/newview/skins/default/xui/ja/panel_preferences_setup.xml +++ b/indra/newview/skins/default/xui/ja/panel_preferences_setup.xml @@ -30,6 +30,7 @@ <combo_box.item label="更新を手動でダウンロードしてインストールします" name="Install_manual"/> </combo_box> <check_box label="release candidate にアップグレードします" name="update_willing_to_test"/> + <check_box label="更新後にリリースノートを表示する" name="update_show_release_notes"/> <text name="Proxy Settings:"> プロキシ設定: </text> diff --git a/indra/newview/skins/default/xui/ja/strings.xml b/indra/newview/skins/default/xui/ja/strings.xml index 904ce3880a..586b8ab2d3 100644 --- a/indra/newview/skins/default/xui/ja/strings.xml +++ b/indra/newview/skins/default/xui/ja/strings.xml @@ -61,17 +61,34 @@ OS バージョン:[OS_VERSION] <string name="AboutDriver"> Windows グラフィックドライババージョン:[GRAPHICS_DRIVER_VERSION] </string> - <string name="AboutLibs"> + <string name="AboutOGL"> OpenGL バージョン:[OPENGL_VERSION] - -J2C デコーダバージョン:[J2C_VERSION] + </string> + <string name="AboutSettings"> + ウィンドウサイズ: [WINDOW_WIDTH]x[WINDOW_HEIGHT] +フォントサイズの調整: [FONT_SIZE_ADJUSTMENT]pt +UI スケーリング: [UI_SCALE] +描画距離:[DRAW_DISTANCE]m +帯域幅:[NET_BANDWITH]kbit/s +LOD 係数: [LOD_FACTOR] +表示品質: [RENDER_QUALITY] / 7 +高度なライティングモデル: [GPU_SHADERS] +テクスチャメモリ: [TEXTURE_MEMORY]MB +VFS(キャッシュ)作成時間: [VFS_TIME] + </string> + <string name="AboutLibs"> + J2C デコーダバージョン:[J2C_VERSION] オーディオドライババージョン:[AUDIO_DRIVER_VERSION] -LLCEFLib/CEF バージョン: [LLCEFLIB_VERSION] -ボイスサーバーバージョン:[VOICE_VERSION] +LLCEFLib/CEF バージョン: [LLCEFLIB_VERSION] +LibVLC バージョン: [LIBVLC_VERSION] +ボイスサーバーバージョン:[VOICE_VERSION] </string> <string name="AboutTraffic"> パケットロス:[PACKETS_LOST,number,0]/[PACKETS_IN,number,0] ([PACKETS_PCT,number,1]%) </string> + <string name="AboutTime"> + [month, datetime, slt] [day, datetime, slt] [year, datetime, slt] [hour, datetime, slt]:[min, datetime, slt]:[second,datetime,slt] + </string> <string name="ErrorFetchingServerReleaseNotesURL"> サーバーのリリースノートの URL を取得中にエラーが発生しました。 </string> @@ -1089,6 +1106,9 @@ support@secondlife.com にお問い合わせください。 <string name="TeleportYourAgent"> あなたをテレポート </string> + <string name="ForceSitAvatar"> + アバターを強制的に座らせる + </string> <string name="NotConnected"> 接続されていません </string> @@ -1937,6 +1957,27 @@ support@secondlife.com にお問い合わせください。 <string name="av_render_anyone"> あなたのまわりの誰にもあなたが見えない可能性があります。 </string> + <string name="hud_description_total"> + ご利用の HUD + </string> + <string name="hud_name_with_joint"> + [OBJ_NAME]([JNT_NAME] に装着中) + </string> + <string name="hud_render_memory_warning"> + [HUD_DETAILS] はたくさんのテクスチャメモリを使用します + </string> + <string name="hud_render_cost_warning"> + [HUD_DETAILS] には高価なオブジェクトやテクスチャがたくさん含まれています + </string> + <string name="hud_render_heavy_textures_warning"> + [HUD_DETAILS] は大きなテクスチャがたくさん含まれています + </string> + <string name="hud_render_cramped_warning"> + [HUD_DETAILS] に含まれるオブジェクトが多すぎます + </string> + <string name="hud_render_textures_warning"> + [HUD_DETAILS] に含まれるテクスチャが多すぎます + </string> <string name="AgeYearsA"> [COUNT] 年 </string> @@ -2096,6 +2137,9 @@ support@secondlife.com にお問い合わせください。 <string name="ObjectOutOfRange"> スクリプト(オブジェクトが範囲外にあります) </string> + <string name="ScriptWasDeleted"> + スクリプト(インベントリから削除済み) + </string> <string name="GodToolsObjectOwnedBy"> [OWNER] 所有のオブジェクト「[OBJECT]」 </string> @@ -2708,6 +2752,15 @@ support@secondlife.com にお問い合わせください。 <string name="Play Media"> メディアを再生/一時停止 </string> + <string name="IntelDriverPage"> + http://www.intel.com/p/en_US/support/detect/graphics + </string> + <string name="NvidiaDriverPage"> + http://www.nvidia.com/Download/index.aspx?lang=en-us + </string> + <string name="AMDDriverPage"> + http://support.amd.com/us/Pages/AMDSupportHub.aspx + </string> <string name="MBCmdLineError"> コマンドラインにエラーが見つかりました。 リンク先を参照してください: http://wiki.secondlife.com/wiki/Client_parameters @@ -4483,12 +4536,18 @@ www.secondlife.com から最新バージョンをダウンロードしてくだ <string name="paid_you_ldollars"> [NAME] は [REASON] のために L$[AMOUNT] を支払いました。 </string> + <string name="paid_you_ldollars_gift"> + [NAME] は L$[AMOUNT] 支払いました:[REASON] + </string> <string name="paid_you_ldollars_no_reason"> [NAME] は L$[AMOUNT] を支払いました。 </string> <string name="you_paid_ldollars"> [NAME] に L$ [AMOUNT] を支払いました:[REASON] </string> + <string name="you_paid_ldollars_gift"> + [NAME] に L$ [AMOUNT] を支払いました:[REASON] + </string> <string name="you_paid_ldollars_no_info"> L$ [AMOUNT] を支払いました。 </string> @@ -4501,6 +4560,9 @@ www.secondlife.com から最新バージョンをダウンロードしてくだ <string name="you_paid_failure_ldollars"> [NAME] に [REASON] の代金 L$ [AMOUNT] を支払えませんでした。 </string> + <string name="you_paid_failure_ldollars_gift"> + [NAME] に L$ [AMOUNT] を支払えませんでした:[REASON] + </string> <string name="you_paid_failure_ldollars_no_info"> L$ [AMOUNT] を支払えませんでした。 </string> @@ -4827,6 +4889,15 @@ www.secondlife.com から最新バージョンをダウンロードしてくだ <string name="texture_load_dimensions_error"> [WIDTH]*[HEIGHT] 以上の画像は読み込めません </string> + <string name="outfit_photo_load_dimensions_error"> + 最大アウトフィット写真サイズは [WIDTH]*[HEIGHT] です。画像のサイズを調整するか、別の画像を使用してください + </string> + <string name="outfit_photo_select_dimensions_error"> + 最大アウトフィット写真サイズは [WIDTH]*[HEIGHT] です。別のテクスチャを選択してください + </string> + <string name="outfit_photo_verify_dimensions_error"> + 写真の寸法を確認できません。写真サイズがピッカーに表示されるまでお待ちください + </string> <string name="words_separator" value=","/> <string name="server_is_down"> 大変申し訳ございませんが、予期しない問題が発生しました。 @@ -5331,6 +5402,9 @@ www.secondlife.com から最新バージョンをダウンロードしてくだ <string name="Command_Profile_Label"> プロフィール </string> + <string name="Command_Report_Abuse_Label"> + 嫌がらせの報告 + </string> <string name="Command_Search_Label"> 検索 </string> @@ -5421,6 +5495,9 @@ www.secondlife.com から最新バージョンをダウンロードしてくだ <string name="Command_Profile_Tooltip"> プロフィールを編集・表示 </string> + <string name="Command_Report_Abuse_Tooltip"> + 嫌がらせの報告 + </string> <string name="Command_Search_Tooltip"> 場所、イベント、人を検索 </string> diff --git a/indra/newview/skins/default/xui/pl/strings.xml b/indra/newview/skins/default/xui/pl/strings.xml index dd85f1eb9b..e9dd18043d 100644 --- a/indra/newview/skins/default/xui/pl/strings.xml +++ b/indra/newview/skins/default/xui/pl/strings.xml @@ -44,6 +44,7 @@ Wersja OpenGL: [OPENGL_VERSION] Wersja dekodera J2C: [J2C_VERSION] Wersja sterownika dźwięku (Audio Driver): [AUDIO_DRIVER_VERSION] Wersja LLCEFLib/CEF: [LLCEFLIB_VERSION] +Wersja LibVLC: [LIBVLC_VERSION] Wersja serwera głosu (Voice Server): [VOICE_VERSION] </string> <string name="AboutTraffic"> diff --git a/indra/newview/skins/default/xui/pt/floater_model_preview.xml b/indra/newview/skins/default/xui/pt/floater_model_preview.xml index 35cee93ad1..70ba647d30 100644 --- a/indra/newview/skins/default/xui/pt/floater_model_preview.xml +++ b/indra/newview/skins/default/xui/pt/floater_model_preview.xml @@ -245,6 +245,7 @@ </text> <check_box label="Incluir peso da pele" name="upload_skin"/> <check_box label="Incluir posições de junções" name="upload_joints"/> + <check_box label="Travar escala se posição de articulação estiver definida" name="lock_scale_if_joint_position"/> <text name="pelvis_offset_label"> Desvio Z (subir ou baixar avatar): </text> diff --git a/indra/newview/skins/default/xui/pt/floater_pay.xml b/indra/newview/skins/default/xui/pt/floater_pay.xml index 77e814b575..21cb91dc96 100644 --- a/indra/newview/skins/default/xui/pt/floater_pay.xml +++ b/indra/newview/skins/default/xui/pt/floater_pay.xml @@ -1,9 +1,20 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <floater name="Give Money" title=""> - <string name="payee_group">Pagar grupo</string> - <string name="payee_resident">Pagar residente</string> - <text name="paying_text">Você está pagando:</text> - <text name="payee_name">Test Name That Is Extremely Long To Check Clipping</text> + <string name="payee_group"> + Pagar grupo + </string> + <string name="payee_resident"> + Pagar residente + </string> + <text name="paying_text"> + Você está pagando: + </text> + <text name="payee_name"> + Test Name That Is Extremely Long To Check Clipping + </text> + <text name="payment_message_label"> + Descrição (opcional): + </text> <panel label="Buscar" name="PatternsPanel"> <button label="Pagar L$ 1" label_selected="Pagar L$ 1" name="fastpay 1"/> <button label="Pagar L$ 5" label_selected="Pagar L$ 5" name="fastpay 5"/> @@ -11,7 +22,9 @@ <button label="Pagar L$ 20" label_selected="Pagar L$ 20" name="fastpay 20"/> </panel> <panel label="Buscar" name="InputPanel"> - <text name="amount text">Outro valor:</text> + <text name="amount text"> + Outro valor: + </text> <button label="Pagar" label_selected="Pagar" name="pay btn"/> <button label="Cancelar" label_selected="Cancelar" name="cancel btn"/> </panel> diff --git a/indra/newview/skins/default/xui/pt/floater_script_queue.xml b/indra/newview/skins/default/xui/pt/floater_script_queue.xml index 5fb6dd1c35..b9fc9d4713 100644 --- a/indra/newview/skins/default/xui/pt/floater_script_queue.xml +++ b/indra/newview/skins/default/xui/pt/floater_script_queue.xml @@ -15,5 +15,11 @@ <floater.string name="NotRunning"> Inerte </floater.string> + <floater.string name="Timeout"> + Limite de tempo: [OBJECT_NAME] + </floater.string> + <floater.string name="LoadingObjInv"> + Carregando inventário de: [OBJECT_NAME] + </floater.string> <button label="Fechar" label_selected="Fechar" name="close"/> </floater> diff --git a/indra/newview/skins/default/xui/pt/floater_web_content.xml b/indra/newview/skins/default/xui/pt/floater_web_content.xml index 5101579c6f..2b22d3ec3c 100644 --- a/indra/newview/skins/default/xui/pt/floater_web_content.xml +++ b/indra/newview/skins/default/xui/pt/floater_web_content.xml @@ -10,5 +10,9 @@ <icon name="media_secure_lock_flag" tool_tip="Navegação segura"/> <button name="popexternal" tool_tip="Abrir a URL atual no navegador do seu computador"/> </layout_panel> + <layout_panel name="debug_controls"> + <button name="web_test_home_page" tool_tip="Página inicial de testes de Web"/> + <button name="VLC Plugin Test" tool_tip="Teste de vídeo MPEG4"/> + </layout_panel> </layout_stack> </floater> diff --git a/indra/newview/skins/default/xui/pt/menu_attachment_other.xml b/indra/newview/skins/default/xui/pt/menu_attachment_other.xml index 760197cfb9..d991c89f61 100644 --- a/indra/newview/skins/default/xui/pt/menu_attachment_other.xml +++ b/indra/newview/skins/default/xui/pt/menu_attachment_other.xml @@ -7,6 +7,7 @@ <menu_item_call label="Ligar" name="Call"/> <menu_item_call label="Convidar para entrar no grupo" name="Invite..."/> <menu_item_call label="Redefinir esqueleto" name="Reset Skeleton"/> + <menu_item_call label="Redefinir esqueleto e animações" name="Reset Skeleton And Animations"/> <menu_item_call label="Bloquear" name="Avatar Mute"/> <menu_item_call label="Denunciar" name="abuse"/> <menu_item_call label="Congelar" name="Freeze..."/> diff --git a/indra/newview/skins/default/xui/pt/menu_attachment_self.xml b/indra/newview/skins/default/xui/pt/menu_attachment_self.xml index 766c8b9754..e2403fa86f 100644 --- a/indra/newview/skins/default/xui/pt/menu_attachment_self.xml +++ b/indra/newview/skins/default/xui/pt/menu_attachment_self.xml @@ -10,6 +10,7 @@ <menu_item_call label="Editar meu corpo" name="Edit My Shape"/> <menu_item_call label="Altura de foco" name="Hover Height"/> <menu_item_call label="Redefinir esqueleto" name="Reset Skeleton"/> + <menu_item_call label="Redefinir esqueleto e animações" name="Reset Skeleton And Animations"/> <menu_item_call label="Meus amigos" name="Friends..."/> <menu_item_call label="Meus grupos" name="Groups..."/> <menu_item_call label="Meu perfil" name="Profile..."/> diff --git a/indra/newview/skins/default/xui/pt/menu_avatar_other.xml b/indra/newview/skins/default/xui/pt/menu_avatar_other.xml index 170525cbe6..cba849cd05 100644 --- a/indra/newview/skins/default/xui/pt/menu_avatar_other.xml +++ b/indra/newview/skins/default/xui/pt/menu_avatar_other.xml @@ -7,6 +7,7 @@ <menu_item_call label="Ligar" name="Call"/> <menu_item_call label="Convidar para entrar no grupo" name="Invite..."/> <menu_item_call label="Redefinir esqueleto" name="Reset Skeleton"/> + <menu_item_call label="Redefinir esqueleto e animações" name="Reset Skeleton And Animations"/> <menu_item_call label="Bloquear" name="Avatar Mute"/> <menu_item_call label="Denunciar" name="abuse"/> <menu_item_call label="Congelar" name="Freeze..."/> diff --git a/indra/newview/skins/default/xui/pt/menu_avatar_self.xml b/indra/newview/skins/default/xui/pt/menu_avatar_self.xml index e826a57b46..50a1996d62 100644 --- a/indra/newview/skins/default/xui/pt/menu_avatar_self.xml +++ b/indra/newview/skins/default/xui/pt/menu_avatar_self.xml @@ -27,6 +27,7 @@ <menu_item_call label="Editar meu corpo" name="Edit My Shape"/> <menu_item_call label="Altura de foco" name="Hover Height"/> <menu_item_call label="Redefinir esqueleto" name="Reset Skeleton"/> + <menu_item_call label="Redefinir esqueleto e animações" name="Reset Skeleton And Animations"/> <menu_item_call label="Meus amigos" name="Friends..."/> <menu_item_call label="Meus grupos" name="Groups..."/> <menu_item_call label="Meu perfil" name="Profile..."/> diff --git a/indra/newview/skins/default/xui/pt/menu_login.xml b/indra/newview/skins/default/xui/pt/menu_login.xml index a65dfddb05..44cfae236b 100644 --- a/indra/newview/skins/default/xui/pt/menu_login.xml +++ b/indra/newview/skins/default/xui/pt/menu_login.xml @@ -20,12 +20,11 @@ <menu_item_check label="Exibir menu de depuração" name="Show Debug Menu"/> <menu label="Depurar" name="Debug"> <menu_item_call label="Mostrar configurações" name="Debug Settings"/> - <menu_item_call label="Configurações da interface e cor" name="UI/Color Settings"/> <menu label="Testes de UI" name="UI Tests"/> <menu_item_call label="Definir tamanho da janela:" name="Set Window Size..."/> <menu_item_call label="Mostrar TOS" name="TOS"/> <menu_item_call label="Mostrar mensagem crítica" name="Critical"/> - <menu_item_call label="Test de Bugs de Conteúdo Web" name="Web Content Floater Debug Test"/> + <menu_item_call label="Navegador de Mídia" name="Media Browser"/> <menu label="Configurar nível de registro em log" name="Set Logging Level"> <menu_item_check label="Depurar" name="Debug"/> <menu_item_check label="Info" name="Info"/> diff --git a/indra/newview/skins/default/xui/pt/menu_object_icon.xml b/indra/newview/skins/default/xui/pt/menu_object_icon.xml index df224a88fa..c6a1ca72f2 100644 --- a/indra/newview/skins/default/xui/pt/menu_object_icon.xml +++ b/indra/newview/skins/default/xui/pt/menu_object_icon.xml @@ -2,6 +2,7 @@ <menu name="Object Icon Menu"> <menu_item_call label="Perfil do objeto..." name="Object Profile"/> <menu_item_call label="Bloquear..." name="Block"/> + <menu_item_call label="Desbloquear" name="Unblock"/> <menu_item_call label="Mostrar no mapa" name="show_on_map"/> <menu_item_call label="Teletransportar para lugar do objeto" name="teleport_to_object"/> </menu> diff --git a/indra/newview/skins/default/xui/pt/menu_outfit_gear.xml b/indra/newview/skins/default/xui/pt/menu_outfit_gear.xml index 3602bdaac4..ccf65ae566 100644 --- a/indra/newview/skins/default/xui/pt/menu_outfit_gear.xml +++ b/indra/newview/skins/default/xui/pt/menu_outfit_gear.xml @@ -3,6 +3,10 @@ <menu_item_call label="Vestir - Substituir look atual" name="wear"/> <menu_item_call label="Vestir - Adicionar ao look atual" name="wear_add"/> <menu_item_call label="Tirar - Tirar do look atual" name="take_off"/> + <menu_item_call label="Carregar foto (L$ 10)" name="upload_photo"/> + <menu_item_call label="Selecionar foto" name="select_photo"/> + <menu_item_call label="Tirar uma foto" name="take_snapshot"/> + <menu_item_call label="Remover foto" name="remove_photo"/> <menu label="Roupas novas" name="New Clothes"> <menu_item_call label="Nova camisa" name="New Shirt"/> <menu_item_call label="Novas calças" name="New Pants"/> @@ -27,4 +31,5 @@ <menu_item_call label="Recolher todas as pastas" name="collapse"/> <menu_item_call label="Renomear look" name="rename"/> <menu_item_call label="Excluir visual" name="delete_outfit"/> + <menu_item_check label="Sempre ordenar pastas por nome" name="sort_folders_by_name"/> </toggleable_menu> diff --git a/indra/newview/skins/default/xui/pt/menu_people_friends_view.xml b/indra/newview/skins/default/xui/pt/menu_people_friends_view.xml index 46caeae310..35315abfe6 100644 --- a/indra/newview/skins/default/xui/pt/menu_people_friends_view.xml +++ b/indra/newview/skins/default/xui/pt/menu_people_friends_view.xml @@ -4,5 +4,6 @@ <menu_item_check label="Ordenar por status" name="sort_status"/> <menu_item_check label="Exibir ícones de pessoas" name="view_icons"/> <menu_item_check label="Exibir permissões concedidas" name="view_permissions"/> + <menu_item_check label="Ocultar nomes de usuários" name="view_usernames"/> <menu_item_check label="Exibir registro de conversas..." name="view_conversation"/> </toggleable_menu> diff --git a/indra/newview/skins/default/xui/pt/menu_people_nearby.xml b/indra/newview/skins/default/xui/pt/menu_people_nearby.xml index 51464fed68..bd8afae1b5 100644 --- a/indra/newview/skins/default/xui/pt/menu_people_nearby.xml +++ b/indra/newview/skins/default/xui/pt/menu_people_nearby.xml @@ -13,4 +13,6 @@ <menu_item_call label="Compartilhar" name="share"/> <menu_item_call label="Pagar" name="pay"/> <menu_item_check label="Bloquear/desbloquear" name="block_unblock"/> + <menu_item_call label="Congelar" name="freeze"/> + <menu_item_call label="Expulsar" name="eject"/> </context_menu> diff --git a/indra/newview/skins/default/xui/pt/menu_people_nearby_view.xml b/indra/newview/skins/default/xui/pt/menu_people_nearby_view.xml index bce015e732..2c49f5e2fd 100644 --- a/indra/newview/skins/default/xui/pt/menu_people_nearby_view.xml +++ b/indra/newview/skins/default/xui/pt/menu_people_nearby_view.xml @@ -5,4 +5,5 @@ <menu_item_check label="Ordenar por distância" name="sort_distance"/> <menu_item_check label="Exibir ícones de pessoas" name="view_icons"/> <menu_item_check label="Exibir mapa" name="view_map"/> + <menu_item_check label="Ocultar nomes de usuários" name="view_usernames"/> </toggleable_menu> diff --git a/indra/newview/skins/default/xui/pt/menu_url_objectim.xml b/indra/newview/skins/default/xui/pt/menu_url_objectim.xml index 2cd0f52ef3..0ebb358b12 100644 --- a/indra/newview/skins/default/xui/pt/menu_url_objectim.xml +++ b/indra/newview/skins/default/xui/pt/menu_url_objectim.xml @@ -2,6 +2,7 @@ <context_menu name="Url Popup"> <menu_item_call label="Perfil do objeto..." name="show_object"/> <menu_item_call label="Bloquear..." name="block_object"/> + <menu_item_call label="Desbloquear" name="unblock_object"/> <menu_item_call label="Mostrar no mapa" name="show_on_map"/> <menu_item_call label="Teletransportar para lugar do objeto" name="teleport_to_object"/> <menu_item_call label="Copiar nome do objeto para área de transferência" name="url_copy_label"/> diff --git a/indra/newview/skins/default/xui/pt/menu_viewer.xml b/indra/newview/skins/default/xui/pt/menu_viewer.xml index 7bdcb74a54..6964941f0a 100644 --- a/indra/newview/skins/default/xui/pt/menu_viewer.xml +++ b/indra/newview/skins/default/xui/pt/menu_viewer.xml @@ -113,11 +113,11 @@ <menu_item_call label="Link" name="Link"/> <menu_item_call label="Desconectar links" name="Unlink"/> <menu_item_check label="Editar partes linkadas" name="Edit Linked Parts"/> - <menu label="Selecionar partes conectadas" name="Select Linked Parts"> - <menu_item_call label="Selecionar próxima parte" name="Select Next Part"/> - <menu_item_call label="Selecionar parte anterior" name="Select Previous Part"/> - <menu_item_call label="Incluir próxima parte" name="Include Next Part"/> - <menu_item_call label="Incluir parte anterior" name="Include Previous Part"/> + <menu label="Selecionar elementos" name="Select Elements"> + <menu_item_call label="Selecionar próxima parte ou face" name="Select Next Part or Face"/> + <menu_item_call label="Selecionar parte anterior ou face" name="Select Previous Part or Face"/> + <menu_item_call label="Incluir próxima parte ou face" name="Include Next Part or Face"/> + <menu_item_call label="Incluir parte anterior ou face" name="Include Previous Part or Face"/> </menu> <menu_item_call label="Linksets..." name="pathfinding_linkset_menu_item"/> <menu_item_call label="Enfocar seleção" name="Focus on Selection"/> @@ -332,8 +332,7 @@ <menu_item_call label="Descartar cache do objeto de região" name="Dump Region Object Cache"/> </menu> <menu label="Interface" name="UI"> - <menu_item_call label="Teste de mídia do navegador" name="Web Browser Test"/> - <menu_item_call label="Navegador de conteúdo web" name="Web Content Browser"/> + <menu_item_call label="Navegador de Mídia" name="Media Browser"/> <menu_item_call label="Print Selected Object Info" name="Print Selected Object Info"/> <menu_item_check label="Debug Clicks" name="Debug Clicks"/> <menu_item_check label="Debug Mouse Events" name="Debug Mouse Events"/> diff --git a/indra/newview/skins/default/xui/pt/menu_wearing_tab.xml b/indra/newview/skins/default/xui/pt/menu_wearing_tab.xml index 4e6e52ebc7..42aa386215 100644 --- a/indra/newview/skins/default/xui/pt/menu_wearing_tab.xml +++ b/indra/newview/skins/default/xui/pt/menu_wearing_tab.xml @@ -3,4 +3,6 @@ <menu_item_call label="Tirar" name="take_off"/> <menu_item_call label="Tirar" name="detach"/> <menu_item_call label="Editar look" name="edit"/> + <menu_item_call label="Editar" name="edit_item"/> + <menu_item_call label="Mostrar original" name="show_original"/> </context_menu> diff --git a/indra/newview/skins/default/xui/pt/mime_types.xml b/indra/newview/skins/default/xui/pt/mime_types.xml index be387088bd..54902f165b 100644 --- a/indra/newview/skins/default/xui/pt/mime_types.xml +++ b/indra/newview/skins/default/xui/pt/mime_types.xml @@ -22,14 +22,6 @@ Iniciar filme </playtip> </widgetset> - <widgetset name="none"> - <label name="none_label"> - Sem conteúdo - </label> - <tooltip name="none_tooltip"> - Sem mídia aqui - </tooltip> - </widgetset> <widgetset name="image"> <label name="image_label"> Imagem @@ -52,11 +44,24 @@ Iniciar áudio disponível neste local </playtip> </widgetset> + <widgetset name="none"> + <label name="none_label"> + Sem conteúdo + </label> + <tooltip name="none_tooltip"> + Sem mídia aqui + </tooltip> + </widgetset> <scheme name="rtsp"> <label name="rtsp_label"> Transmissão em tempo real </label> </scheme> + <scheme name="libvlc"> + <label name="libvlc_label"> + Mídia com suporte a LibVLC + </label> + </scheme> <mimetype name="blank"> <label name="blank_label"> - Nenhum - @@ -127,11 +132,6 @@ Macromedia Director </label> </mimetype> - <mimetype name="application/x-shockwave-flash"> - <label name="application/x-shockwave-flash_label"> - Flash - </label> - </mimetype> <mimetype name="audio/mid"> <label name="audio/mid_label"> Áudio (MIDI) @@ -207,6 +207,11 @@ Filme (MP4) </label> </mimetype> + <mimetype name="application/octet-stream"> + <label name="video/octet-stream"> + Filme + </label> + </mimetype> <mimetype name="video/quicktime"> <label name="video/quicktime_label"> Filme (QuickTime) diff --git a/indra/newview/skins/default/xui/pt/notifications.xml b/indra/newview/skins/default/xui/pt/notifications.xml index bb428ad5a5..53a418a1d8 100644 --- a/indra/newview/skins/default/xui/pt/notifications.xml +++ b/indra/newview/skins/default/xui/pt/notifications.xml @@ -329,6 +329,9 @@ Se você não quiser que essas funções sejam concedidas a esse cargo, desative Você está prestes a banir [COUNT] membros do grupo. <usetemplate ignoretext="Confirmar banimento de diversos membros do grupo" name="okcancelignore" notext="Cancelar" yestext="Banir"/> </notification> + <notification name="GroupBanUserOnBanlist"> + Alguns residentes não receberam convite porque foram banidos do grupo. + </notification> <notification name="AttachmentDrop"> Você está prestes a largar seu anexo. Tem certeza de que quer prosseguir? @@ -455,6 +458,12 @@ Para colocar a mídia em só uma face, selecione Selecionar face e clique na fac <notification name="ErrorEncodingSnapshot"> Erro ao codificar a foto. </notification> + <notification name="ErrorPhotoCannotAfford"> + Você precisa de L$ [COST] para salvar uma foto em seu inventário. Você pode comprar L$ ou salvar a foto em seu computador. + </notification> + <notification name="ErrorTextureCannotAfford"> + Você precisa de L$ [COST] para salvar uma textura em seu inventário. Você pode comprar L$ ou salvar a foto em seu computador. + </notification> <notification name="ErrorUploadingPostcard"> Houve um problema ao enviar a foto devido à seguinte razão: [REASON] </notification> @@ -569,6 +578,10 @@ Nota: Este procedimento limpa o cache. Excluir nota? <usetemplate name="okcancelbuttons" notext="Cancelar" yestext="OK"/> </notification> + <notification name="LoadPreviousReportScreenshot"> + Você deseja usar a captura de tela anterior em seu relatório? + <usetemplate name="okcancelbuttons" notext="Cancelar" yestext="OK"/> + </notification> <notification name="GestureSaveFailedTooManySteps"> Falha ao salvar Gesto. Este gesto possui muitos passos. @@ -629,30 +642,12 @@ Consultar [_URL] para mais informações? </url> <usetemplate ignoretext="O hardware do meu computador não é suportado" name="okcancelignore" notext="Não" yestext="Sim"/> </notification> - <notification name="IntelOldDriver"> - Provavelmente, há um driver mais recente para o seu chip gráfico. A atualização dos drivers gráficos pode melhorar significativamente o desempenho. - - Visitar [_URL] para verificar se há atualizações do driver? - <url name="url"> - http://www.intel.com/p/pt_BR/support/detect/graphics - </url> - <usetemplate ignoretext="Meu driver gráfico está desatualizado" name="okcancelignore" notext="Não" yestext="Sim"/> - </notification> - <notification name="AMDOldDriver"> + <notification name="OldGPUDriver"> Provavelmente, há um driver mais recente para o seu chip gráfico. A atualização dos drivers gráficos pode melhorar significativamente o desempenho. - Visitar [_URL] para verificar se há atualizações do driver? + Visitar [URL] para verificar se há atualizações do driver? <url name="url"> - http://support.amd.com/us/Pages/AMDSupportHub.aspx - </url> - <usetemplate ignoretext="Meu driver gráfico está desatualizado" name="okcancelignore" notext="Não" yestext="Sim"/> - </notification> - <notification name="NVIDIAOldDriver"> - Provavelmente, há um driver mais recente para o seu chip gráfico. A atualização dos drivers gráficos pode melhorar significativamente o desempenho. - - Visitar [_URL] para verificar se há atualizações do driver? - <url name="url"> - http://www.nvidia.com.br/Download/index.aspx?lang=br + [URL] </url> <usetemplate ignoretext="Meu driver gráfico está desatualizado" name="okcancelignore" notext="Não" yestext="Sim"/> </notification> @@ -743,6 +738,9 @@ Para mais informações sobre como comprar L$, consulte [_URL]. </url> <usetemplate name="okcancelbuttons" notext="Cancelar" yestext="Ir até a página"/> </notification> + <notification name="MuteLimitReached"> + Não foi possível adicionar uma nova entrada à lista de bloqueados porque você atingiu o limite de [MUTE_LIMIT] entradas. + </notification> <notification name="UnableToLinkObjects"> Não é possível unir estes [COUNT] objetos. Você pode unir um máximo de [MAX] objetos. @@ -1372,6 +1370,11 @@ Enquando isso, use o [SECOND_LIFE] normalmente. Seu visual será exibido correta </notification> <notification name="AgentComplexity"> Sua [https://community.secondlife.com/t5/English-Knowledge-Base/Avatar-Rendering-Complexity/ta-p/2967838 avatar complexity] é [AGENT_COMPLEXITY]. + <usetemplate ignoretext="Avise-me se a complexidade do meu avatar for alterada" name="notifyignore"/> + </notification> + <notification name="HUDComplexityWarning"> + [HUD_REASON], provavelmente afetará negativamente seu desempenho. + <usetemplate ignoretext="Avise-me quando a complexidade do meu HUD estiver muito alta" name="notifyignore"/> </notification> <notification name="FirstRun"> A instalação do [APP_NAME] está pronta. @@ -1462,6 +1465,10 @@ Isso é realmente útil apenas para depuração. Teletransportar para o início todos os residentes nesta região? <usetemplate name="okcancelbuttons" notext="Cancelar" yestext="OK"/> </notification> + <notification name="ChangeObjectBonusFactor"> + Reduzir o bônus do objeto depois que as construções tiverem sido estabelecidas em uma região pode fazer com que os objetos sejam devolvidos ou excluídos. Tem certeza de que deseja alterar o bônus do objeto? + <usetemplate ignoretext="Confirmar alteração do fator de bônus de objeto" name="okcancelignore" notext="Cancelar" yestext="OK"/> + </notification> <notification name="EstateObjectReturn"> Você tem certeza que deseja retornar os objetos pertencentes a [USER_NAME] ? <usetemplate name="okcancelbuttons" notext="Cancelar" yestext="OK"/> @@ -1509,6 +1516,9 @@ Ultrapassa o limite de [MAX_AGENTS] [LIST_TYPE] de [NUM_EXCESS]. <notification name="OwnerCanNotBeDenied"> Não é possível adicionar o dono da propriedade na lista de residentes banidos. </notification> + <notification name="ProblemAddingEstateManagerBanned"> + Não foi possível adicionar residentes banidos à lista de gerentes de propriedades. + </notification> <notification name="CanNotChangeAppearanceUntilLoaded"> Não é possível alterar a aparência até que as roupas e formas estejam carregadas. </notification> @@ -1683,6 +1693,10 @@ Se você estiver muito ansioso para experimentar os novos recursos e correções Abrir uma janela do navegador para ver essas informações? <usetemplate ignoretext="Abrir o navegador para acessar uma página na web" name="okcancelignore" notext="Cancelar" yestext="OK"/> </notification> + <notification name="SystemUIScaleFactorChanged"> + O fator de tamanho da interface do sistema foi alterado desde a última execução. Deseja abrir a página de configurações de ajuste de tamanho da interface? + <usetemplate name="okcancelbuttons" notext="Cancelar" yestext="OK"/> + </notification> <notification name="WebLaunchJoinNow"> Deseja abrir o [http://secondlife.com/account/ Painel] para gerenciar sua conta? <usetemplate ignoretext="Abrir o navegador para acessar minha conta" name="okcancelignore" notext="Cancelar" yestext="OK"/> @@ -1721,10 +1735,17 @@ Se você estiver muito ansioso para experimentar os novos recursos e correções Você é atualmente um membro do grupo <usetemplate name="okcancelbuttons" notext="Cancelar" yestext="Sair"/> </notification> + <notification name="GroupDepart"> + Você deixou o grupo '[group_name]'. + </notification> <notification name="OwnerCannotLeaveGroup"> Não foi possível deixar o grupo. Você não pode deixar o grupo pois é o último proprietário dele. Primeiramente, atribua outro membro à função de proprietário. <usetemplate name="okbutton" yestext="OK"/> </notification> + <notification name="GroupDepartError"> + Não foi possível deixar o grupo. + <usetemplate name="okbutton" yestext="OK"/> + </notification> <notification name="ConfirmKick"> Tem CERTEZA de que deseja expulsar todos os residentes do grid? <usetemplate name="okcancelbuttons" notext="Cancelar" yestext="Chutar todos"/> @@ -2123,6 +2144,10 @@ Isto mudará milhares de regiões e fará o spaceserver soluçar. Muitos prims foram selecionados. Selecione [MAX_PRIM_COUNT] ou menos prims, e tente de novo <usetemplate name="okbutton" yestext="OK"/> </notification> + <notification name="TooManyScriptsSelected"> + Muitos scripts nos objetos selecionados. Selecione menos objetos e tente novamente. + <usetemplate name="okbutton" yestext="OK"/> + </notification> <notification name="ProblemImportingEstateCovenant"> Problemas encontrados ao importar o Corretor da propriedade. <usetemplate name="okbutton" yestext="OK"/> @@ -2291,6 +2316,10 @@ Mover para o inventário o(s) item(s)? Falha no pagamento: objeto não encontrado. <usetemplate name="okbutton" yestext="OK"/> </notification> + <notification name="PaymentBlockedButtonMismatch"> + Pagamento interrompido: o valor pago não corresponde aos botões de pagamento definidos para esse objeto. + <usetemplate name="okbutton" yestext="OK"/> + </notification> <notification name="OpenObjectCannotCopy"> Não há itens neste objeto que você está autorizado a copiar. </notification> @@ -2326,6 +2355,12 @@ Não é possível desfazer essa ação. Essa é uma seleção ampla com linksets. Se você desvinculá-la, pode não ser possível vinculá-la novamente. Como precaução, pode ser interessante fazer cópias dos linksets no seu inventário. <usetemplate ignoretext="Confirmar quando desvincular um linkset" name="okcancelignore" notext="Cancelar" yestext="Desvincular"/> </notification> + <notification name="HelpReportAbuseConfirm"> + Obrigado por nos informar sobre esse problema. +Nós analisaremos seu relatório em busca de possíveis violações e +tomaremos as medidas cabíveis. + <usetemplate name="okbutton" yestext="OK"/> + </notification> <notification name="HelpReportAbuseSelectCategory"> Por favor, selecione uma categoria para a reportagem deste abuso. A seleção de uma categoria nos ajuda a arquivar e processar as reportagens de abuso. @@ -2751,6 +2786,10 @@ Logo, não é possível voar aqui. <notification name="PathfindingDirty"> A região possui alterações de pathfinding pendentes. Se você possui direitos de construção, poderá recarregar a região clicando no botão “Recarregar região”. </notification> + <notification name="PathfindingDirtyRebake"> + A região possui alterações de pathfinding pendentes. Se você possui direitos de construção, poderá recarregar a região clicando no botão “Recarregar região”. + <usetemplate name="okbutton" yestext="Recarregar região"/> + </notification> <notification name="DynamicPathfindingDisabled"> O pathfinding dinâmico não está habilitado nesta região. Os objetos com script usando chamadas LSL de pathfinding podem não operar como o esperado na região. </notification> @@ -3258,10 +3297,12 @@ Para sua segurança, os SLurls serão bloqueados por alguns instantes. </notification> <notification name="AppearanceToXMLFailed"> Falha ao salvar a aparência como XML. - icon="notifytip.tga" - name="PresetNotDeleted" - type="notifytip"> -Erro ao excluir a predefinição [NAME]. + </notification> + <notification name="PresetNotSaved"> + Erro ao salvar predefinição [NAME]. + </notification> + <notification name="PresetNotDeleted"> + Erro ao excluir a predefinição [NAME]. </notification> <notification name="UnableToFindHelpTopic"> Nenhum tópico de ajuda foi encontrado com relação a este elemento. @@ -3469,13 +3510,6 @@ Se o botão Falar for ocultado, o recurso de voz será desabilitado. <notification name="ForceQuitDueToLowMemory"> O SL será encerrado em 30 segundos devido falta de memória. </notification> - <notification name="PopupAttempt"> - Um pop-up foi bloqueado. - <form name="form"> - <ignore name="ignore" text="Ativar todos os pop-ups"/> - <button name="open" text="Abrir pop-up"/> - </form> - </notification> <notification name="SOCKS_NOT_PERMITTED"> O proxy SOCKS 5 "[HOST]:[PORT]" recusou a conexão, não permitida pelo conjunto de regras. <usetemplate name="okbutton" yestext="OK"/> @@ -3850,6 +3884,9 @@ Tente novamente em instantes. Não é possível mover '[OBJECT_NAME]' para [OBJ_POSITION] na região [REGION_NAME] porque não há recursos suficientes para este objeto neste lote. </notification> + <notification name="NoParcelPermsNoObject"> + A cópia falhou porque você não tem acesso a esse lote. + </notification> <notification name="CantMoveObjectRegionVersion"> Não é possível mover '[OBJECT_NAME]' para [OBJ_POSITION] na região [REGION_NAME] porque outra região está executando uma versão mais antiga, que não dá suporte o recebimento deste objeto por meio de passagem de regiões. @@ -3865,6 +3902,10 @@ Tente novamente em instantes. <notification name="NoPermModifyObject"> Você não está autorizado a modificar este objeto </notification> + <notification name="TooMuchObjectInventorySelected"> + Há muitos objetos com inventário grande selecionados. Selecione menos objetos e tente novamente. + <usetemplate name="okbutton" yestext="OK"/> + </notification> <notification name="CantEnablePhysObjContributesToNav"> Não é possível ativar propriedades físicas para um objeto que contribui para o navmesh. </notification> @@ -3901,6 +3942,12 @@ Tente novamente em instantes. <notification name="CantSaveModifyAttachment"> Não é possível salvar no conteúdo do objeto: isso modificaria as permissões de anexo. </notification> + <notification name="AttachmentHasTooMuchInventory"> + Seus anexos têm muitos itens de inventário. Não é possível adicionar mais itens. + </notification> + <notification name="IllegalAttachment"> + O anexo solicitou um ponto não existente no avatar. Ele foi anexado ao peito. + </notification> <notification name="TooManyScripts"> Muitos scripts. </notification> @@ -3993,6 +4040,12 @@ Tente novamente em instantes. <notification name="TeleportedByObjectUnknownUser"> Você foi teletransportado pelo objeto '[OBJECT_NAME]' de propriedade de um usuário desconhecido. </notification> + <notification name="StandDeniedByObject"> + '[OBJECT_NAME]' não permite que você fique de pé no momento. + </notification> + <notification name="ResitDeniedByObject"> + '[OBJECT_NAME]' não permite que você altere seu assento no momento. + </notification> <notification name="CantCreateObjectRegionFull"> Não foi possível criar o objeto solicitado. A região está cheia. </notification> @@ -4074,9 +4127,6 @@ Tente novamente em instantes. <notification name="CantAttachNotEnoughScriptResources"> Não há recursos de script disponíveis suficientes para anexar objeto! </notification> - <notification name="IllegalAttachment"> - O anexo solicitou um ponto não existente no avatar. Ele foi anexado ao peito. - </notification> <notification name="CantDropItemTrialUser"> Não é possível largar objetos aqui. Tente a área de Avaliação grátis. </notification> @@ -4292,6 +4342,9 @@ Tente selecionar uma quantidade menor de terreno. <notification name="CantTransfterMoneyRegionDisabled"> Transferências de dinheiro para objetos estão desativadas para esta região no momento. </notification> + <notification name="DroppedMoneyTransferRequest"> + Não foi possível fazer o pagamento devido a uma sobrecarga do sistema. + </notification> <notification name="CantPayNoAgent"> Não foi possível descobrir a quem pagar. </notification> @@ -4327,4 +4380,8 @@ Tente selecionar uma quantidade menor de terreno. O arquivo de histórico de bate-papo está ocupado com uma operação anterior. Tente novamente em alguns minutos ou selecione outra pessoa para bater papo. <usetemplate name="okbutton" yestext="OK"/> </notification> + <notification name="OutfitPhotoLoadError"> + [REASON] + <usetemplate name="okbutton" yestext="OK"/> + </notification> </notifications> diff --git a/indra/newview/skins/default/xui/pt/panel_outfits_inventory.xml b/indra/newview/skins/default/xui/pt/panel_outfits_inventory.xml index 816a9bc46e..8d055f476e 100644 --- a/indra/newview/skins/default/xui/pt/panel_outfits_inventory.xml +++ b/indra/newview/skins/default/xui/pt/panel_outfits_inventory.xml @@ -7,6 +7,7 @@ Vestir itens selecionados </panel.string> <tab_container name="appearance_tabs"> + <panel label="GALERIA DE LOOKS" name="outfit_gallery_tab"/> <panel label="MEUS LOOKS" name="outfitslist_tab"/> <panel label="EM USO" name="cof_tab"/> </tab_container> diff --git a/indra/newview/skins/default/xui/pt/panel_outfits_wearing.xml b/indra/newview/skins/default/xui/pt/panel_outfits_wearing.xml index 9224ec4742..87bb04ff59 100644 --- a/indra/newview/skins/default/xui/pt/panel_outfits_wearing.xml +++ b/indra/newview/skins/default/xui/pt/panel_outfits_wearing.xml @@ -1,6 +1,13 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <panel name="Wearing"> + <panel.string name="no_attachments"> + Nenhum anexo vestido. + </panel.string> + <accordion name="wearables_accordion"> + <accordion_tab name="tab_wearables" title="Itens de vestuário"/> + <accordion_tab name="tab_temp_attachments" title="Anexos temporários"/> + </accordion> <panel name="bottom_panel"> - <button name="options_gear_btn" tool_tip="Mostrar opções adicionais"/> + <menu_button name="options_gear_btn" tool_tip="Mostrar opções adicionais"/> </panel> </panel> diff --git a/indra/newview/skins/default/xui/pt/panel_preferences_setup.xml b/indra/newview/skins/default/xui/pt/panel_preferences_setup.xml index 6308d133bb..c6f6bba320 100644 --- a/indra/newview/skins/default/xui/pt/panel_preferences_setup.xml +++ b/indra/newview/skins/default/xui/pt/panel_preferences_setup.xml @@ -30,6 +30,7 @@ <combo_box.item label="Baixarei e instalarei as atualizações manualmente" name="Install_manual"/> </combo_box> <check_box label="Disposto a atualizar para candidatos da versão" name="update_willing_to_test"/> + <check_box label="Mostrar notas de versão após atualização" name="update_show_release_notes"/> <text name="Proxy Settings:"> Configurações de proxy: </text> diff --git a/indra/newview/skins/default/xui/pt/strings.xml b/indra/newview/skins/default/xui/pt/strings.xml index b3cb50a01e..207b4e7097 100644 --- a/indra/newview/skins/default/xui/pt/strings.xml +++ b/indra/newview/skins/default/xui/pt/strings.xml @@ -52,17 +52,34 @@ Placa gráfica: [GRAPHICS_CARD] <string name="AboutDriver"> Versão do driver de vídeo Windows: [GRAPHICS_CARD_VENDOR] </string> - <string name="AboutLibs"> + <string name="AboutOGL"> Versão do OpenGL: [OPENGL_VERSION] - -Versão do J2C Decoder: [J2C_VERSION] + </string> + <string name="AboutSettings"> + Tamanho da janela: [WINDOW_WIDTH]x[WINDOW_HEIGHT] +Ajuste do tamanho de fonte: [FONT_SIZE_ADJUSTMENT]pt +Escala de interface: [UI_SCALE] +Dist. máxima: [DRAW_DISTANCE]m +Largura de banda: [NET_BANDWITH]kbit/s +Fator LOD: [LOD_FACTOR] +Qualidade de renderização: [RENDER_QUALITY] / 7 +Modelo de iluminação avançado: [GPU_SHADERS] +Memória de textura: [TEXTURE_MEMORY]MB +Tempo de criação de VFS (cache): [VFS_TIME] + </string> + <string name="AboutLibs"> + Versão do J2C Decoder: [J2C_VERSION] Versão do driver de áudio: [AUDIO_DRIVER_VERSION] Versão de LLCEFLib/CEF: [LLCEFLIB_VERSION] +Versão da LibVLC: [LIBVLC_VERSION] Versão do servidor de voz: [VOICE_VERSION] </string> <string name="AboutTraffic"> Packets Lost: [PACKETS_LOST,number,0]/[PACKETS_IN,number,0] ([PACKETS_PCT,number,1]%) </string> + <string name="AboutTime"> + [month, datetime, slt] [day, datetime, slt] [year, datetime, slt] [hour, datetime, slt]:[min, datetime, slt]:[second,datetime,slt] + </string> <string name="ErrorFetchingServerReleaseNotesURL"> Erro ao obter URL de notas de versão do servidor. </string> @@ -1038,6 +1055,9 @@ Pessoas com contas gratuitas não poderão acessar o Second Life no momento para <string name="TeleportYourAgent"> Teletransportá-lo </string> + <string name="ForceSitAvatar"> + Forçar o avatar a sentar + </string> <string name="AgentNameSubst"> (Você) </string> @@ -1877,6 +1897,27 @@ Pessoas com contas gratuitas não poderão acessar o Second Life no momento para <string name="av_render_anyone"> Sua renderização pode não acontecer para ninguém ao seu redor. </string> + <string name="hud_description_total"> + Seu HUD + </string> + <string name="hud_name_with_joint"> + [OBJ_NAME] (vestido em [JNT_NAME]) + </string> + <string name="hud_render_memory_warning"> + [HUD_DETAILS] usa muita memória de textura + </string> + <string name="hud_render_cost_warning"> + [HUD_DETAILS] contém muitos objetos e texturas que utilizam o máximo de recursos + </string> + <string name="hud_render_heavy_textures_warning"> + [HUD_DETAILS] contém muitas texturas grandes + </string> + <string name="hud_render_cramped_warning"> + [HUD_DETAILS] contém muitos objetos + </string> + <string name="hud_render_textures_warning"> + [HUD_DETAILS] contém muitas texturas + </string> <string name="AgeYearsA"> [COUNT] ano </string> @@ -2036,6 +2077,9 @@ Pessoas com contas gratuitas não poderão acessar o Second Life no momento para <string name="ObjectOutOfRange"> Script (objeto fora de alcance) </string> + <string name="ScriptWasDeleted"> + Script (excluído do inventário) + </string> <string name="GodToolsObjectOwnedBy"> Objeto [OBJECT] de propriedade de [OWNER] </string> @@ -2606,6 +2650,15 @@ Expected .wav, .tga, .bmp, .jpg, .jpeg, or .bvh <string name="Play Media"> Tocar/Pausar mídia </string> + <string name="IntelDriverPage"> + http://www.intel.com/p/en_US/support/detect/graphics + </string> + <string name="NvidiaDriverPage"> + http://www.nvidia.com.br/Download/index.aspx?lang=br + </string> + <string name="AMDDriverPage"> + http://support.amd.com/us/Pages/AMDSupportHub.aspx + </string> <string name="MBCmdLineError"> Um erro foi encontrado analisando a linha de comando. Consulte: http://wiki.secondlife.com/wiki/Client_parameters @@ -4353,12 +4406,18 @@ If you continue to receive this message, contact the [SUPPORT_SITE]. <string name="paid_you_ldollars"> [NAME] lhe pagou L$ [AMOUNT] [REASON]. </string> + <string name="paid_you_ldollars_gift"> + [NAME] lhe pagou L$ [AMOUNT]: [REASON] + </string> <string name="paid_you_ldollars_no_reason"> [NAME] lhe pagou L$ [AMOUNT] </string> <string name="you_paid_ldollars"> Você pagou L$[AMOUNT] por [REASON] a [NAME]. </string> + <string name="you_paid_ldollars_gift"> + Você pagou L$[AMOUNT] a [NAME]: [REASON] + </string> <string name="you_paid_ldollars_no_info"> Você acaba de pagar L$[AMOUNT]. </string> @@ -4371,6 +4430,9 @@ If you continue to receive this message, contact the [SUPPORT_SITE]. <string name="you_paid_failure_ldollars"> Você não pagou L$[AMOUNT] a [NAME] referentes a [REASON]. </string> + <string name="you_paid_failure_ldollars_gift"> + Você não pagou L$[AMOUNT] a [NAME]: [REASON] + </string> <string name="you_paid_failure_ldollars_no_info"> Você não pagou L$[AMOUNT]. </string> @@ -4697,6 +4759,15 @@ Denunciar abuso <string name="texture_load_dimensions_error"> A imagem excede o limite [WIDTH]*[HEIGHT] </string> + <string name="outfit_photo_load_dimensions_error"> + O tamanho máx. do look é [WIDTH]*[HEIGHT]. Redimensione ou use outra imagem + </string> + <string name="outfit_photo_select_dimensions_error"> + O tamanho máx. do look é [WIDTH]*[HEIGHT]. Selecione outra textura + </string> + <string name="outfit_photo_verify_dimensions_error"> + Não foi possível confirmar as dimensões da foto. Aguarde até que o tamanho da foto seja exibido no seletor + </string> <string name="words_separator" value=","/> <string name="server_is_down"> Aconteceu algo inesperado, apesar de termos tentado impedir isso. @@ -5201,6 +5272,9 @@ Tente colocar o caminho do editor entre aspas. <string name="Command_Profile_Label"> Perfil </string> + <string name="Command_Report_Abuse_Label"> + Relatar abuso + </string> <string name="Command_Search_Label"> Buscar </string> @@ -5291,6 +5365,9 @@ Tente colocar o caminho do editor entre aspas. <string name="Command_Profile_Tooltip"> Edite ou visualize seu perfil </string> + <string name="Command_Report_Abuse_Tooltip"> + Relatar abuso + </string> <string name="Command_Search_Tooltip"> Encontre lugares, eventos, pessoas </string> diff --git a/indra/newview/skins/default/xui/ru/floater_model_preview.xml b/indra/newview/skins/default/xui/ru/floater_model_preview.xml index d660dd97b5..94aa721856 100644 --- a/indra/newview/skins/default/xui/ru/floater_model_preview.xml +++ b/indra/newview/skins/default/xui/ru/floater_model_preview.xml @@ -245,6 +245,7 @@ </text> <check_box label="Включить вес кожи" name="upload_skin"/> <check_box label="Включить положения суставов" name="upload_joints"/> + <check_box label="Фиксировать масштаб, если определено положение сустава" name="lock_scale_if_joint_position"/> <text name="pelvis_offset_label"> Смещение по Z (поднять или опустить аватар): </text> diff --git a/indra/newview/skins/default/xui/ru/floater_pay.xml b/indra/newview/skins/default/xui/ru/floater_pay.xml index 0a269b9e00..990ebb873f 100644 --- a/indra/newview/skins/default/xui/ru/floater_pay.xml +++ b/indra/newview/skins/default/xui/ru/floater_pay.xml @@ -1,9 +1,20 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <floater name="Give Money"> - <string name="payee_group">Заплатить группе</string> - <string name="payee_resident">Заплатить жителю</string> - <text name="paying_text">Вы платите:</text> - <text name="payee_name">Слишком длинное тестовое имя для проверки обрезания</text> + <string name="payee_group"> + Заплатить группе + </string> + <string name="payee_resident"> + Заплатить жителю + </string> + <text name="paying_text"> + Вы платите: + </text> + <text name="payee_name"> + Слишком длинное тестовое имя для проверки обрезания + </text> + <text name="payment_message_label"> + Описание (не обязательно): + </text> <panel label="Поиск" name="PatternsPanel"> <button label="Оплатить L$ 1" label_selected="Оплатить L$ 1" name="fastpay 1"/> <button label="Оплатить L$ 5" label_selected="Оплатить L$ 5" name="fastpay 5"/> @@ -11,7 +22,9 @@ <button label="Оплатить L$ 20" label_selected="Оплатить L$ 20" name="fastpay 20"/> </panel> <panel label="Поиск" name="InputPanel"> - <text name="amount text">Другая сумма:</text> + <text name="amount text"> + Другая сумма: + </text> <button label="Оплатить" label_selected="Оплатить" name="pay btn"/> <button label="Отмена" label_selected="Отмена" name="cancel btn"/> </panel> diff --git a/indra/newview/skins/default/xui/ru/floater_script_queue.xml b/indra/newview/skins/default/xui/ru/floater_script_queue.xml index 4f2e389b19..90c1f2f49c 100644 --- a/indra/newview/skins/default/xui/ru/floater_script_queue.xml +++ b/indra/newview/skins/default/xui/ru/floater_script_queue.xml @@ -15,5 +15,11 @@ <floater.string name="NotRunning"> Не запущен </floater.string> + <floater.string name="Timeout"> + Задержка: [OBJECT_NAME] + </floater.string> + <floater.string name="LoadingObjInv"> + Загрузка инвентаря для: [OBJECT_NAME] + </floater.string> <button label="Закрыть" label_selected="Закрыть" name="close"/> </floater> diff --git a/indra/newview/skins/default/xui/ru/floater_web_content.xml b/indra/newview/skins/default/xui/ru/floater_web_content.xml index 403ab0ef5d..d572a54b5b 100644 --- a/indra/newview/skins/default/xui/ru/floater_web_content.xml +++ b/indra/newview/skins/default/xui/ru/floater_web_content.xml @@ -10,5 +10,9 @@ <icon name="media_secure_lock_flag" tool_tip="Безопасный просмотр"/> <button name="popexternal" tool_tip="Открыть текущий URL-адрес в вашем браузере"/> </layout_panel> + <layout_panel name="debug_controls"> + <button name="web_test_home_page" tool_tip="Главная страница веб-тестирования"/> + <button name="VLC Plugin Test" tool_tip="Тест видео MPEG4"/> + </layout_panel> </layout_stack> </floater> diff --git a/indra/newview/skins/default/xui/ru/menu_attachment_other.xml b/indra/newview/skins/default/xui/ru/menu_attachment_other.xml index b7ffb0e9fc..63b0698c6b 100644 --- a/indra/newview/skins/default/xui/ru/menu_attachment_other.xml +++ b/indra/newview/skins/default/xui/ru/menu_attachment_other.xml @@ -7,6 +7,7 @@ <menu_item_call label="Звонок" name="Call"/> <menu_item_call label="Пригласить в группу" name="Invite..."/> <menu_item_call label="Сброс скелета" name="Reset Skeleton"/> + <menu_item_call label="Восстановить скелет и анимации" name="Reset Skeleton And Animations"/> <menu_item_call label="Заблокировать" name="Avatar Mute"/> <menu_item_call label="Пожаловаться" name="abuse"/> <menu_item_call label="Заморозить" name="Freeze..."/> diff --git a/indra/newview/skins/default/xui/ru/menu_attachment_self.xml b/indra/newview/skins/default/xui/ru/menu_attachment_self.xml index eb38371e28..f33ef1d4ee 100644 --- a/indra/newview/skins/default/xui/ru/menu_attachment_self.xml +++ b/indra/newview/skins/default/xui/ru/menu_attachment_self.xml @@ -10,6 +10,7 @@ <menu_item_call label="Изменить фигуру" name="Edit My Shape"/> <menu_item_call label="Высота парения" name="Hover Height"/> <menu_item_call label="Сброс скелета" name="Reset Skeleton"/> + <menu_item_call label="Восстановить скелет и анимации" name="Reset Skeleton And Animations"/> <menu_item_call label="Мои друзья" name="Friends..."/> <menu_item_call label="Мои группы" name="Groups..."/> <menu_item_call label="Мой профиль" name="Profile..."/> diff --git a/indra/newview/skins/default/xui/ru/menu_avatar_other.xml b/indra/newview/skins/default/xui/ru/menu_avatar_other.xml index cffb4bbe7b..de35264055 100644 --- a/indra/newview/skins/default/xui/ru/menu_avatar_other.xml +++ b/indra/newview/skins/default/xui/ru/menu_avatar_other.xml @@ -7,6 +7,7 @@ <menu_item_call label="Звонок" name="Call"/> <menu_item_call label="Пригласить в группу" name="Invite..."/> <menu_item_call label="Сброс скелета" name="Reset Skeleton"/> + <menu_item_call label="Восстановить скелет и анимации" name="Reset Skeleton And Animations"/> <menu_item_call label="Заблокировать" name="Avatar Mute"/> <menu_item_call label="Пожаловаться" name="abuse"/> <menu_item_call label="Заморозить" name="Freeze..."/> diff --git a/indra/newview/skins/default/xui/ru/menu_avatar_self.xml b/indra/newview/skins/default/xui/ru/menu_avatar_self.xml index 97e2a8b295..cd75551b5d 100644 --- a/indra/newview/skins/default/xui/ru/menu_avatar_self.xml +++ b/indra/newview/skins/default/xui/ru/menu_avatar_self.xml @@ -27,6 +27,7 @@ <menu_item_call label="Изменить фигуру" name="Edit My Shape"/> <menu_item_call label="Высота парения" name="Hover Height"/> <menu_item_call label="Сброс скелета" name="Reset Skeleton"/> + <menu_item_call label="Восстановить скелет и анимации" name="Reset Skeleton And Animations"/> <menu_item_call label="Мои друзья" name="Friends..."/> <menu_item_call label="Мои группы" name="Groups..."/> <menu_item_call label="Мой профиль" name="Profile..."/> diff --git a/indra/newview/skins/default/xui/ru/menu_login.xml b/indra/newview/skins/default/xui/ru/menu_login.xml index 2deab04d81..2d1fe28242 100644 --- a/indra/newview/skins/default/xui/ru/menu_login.xml +++ b/indra/newview/skins/default/xui/ru/menu_login.xml @@ -20,13 +20,12 @@ <menu_item_check label="Показать меню отладки" name="Show Debug Menu"/> <menu label="Отладка" name="Debug"> <menu_item_call label="Настройки отладки" name="Debug Settings"/> - <menu_item_call label="Настройки интерфейса/цвета" name="UI/Color Settings"/> <menu_item_call label="Просмотр XUI" name="UI Preview Tool"/> <menu label="Тест UI" name="UI Tests"/> <menu_item_call label="Задать размер окна..." name="Set Window Size..."/> <menu_item_call label="Показать лицензионное соглашение" name="TOS"/> <menu_item_call label="Показать сообщение об ошибке" name="Critical"/> - <menu_item_call label="Тест отладки плавающего окна с веб-контентом" name="Web Content Floater Debug Test"/> + <menu_item_call label="Медиа-браузер" name="Media Browser"/> <menu label="Уровень журнала" name="Set Logging Level"> <menu_item_check label="Отладка" name="Debug"/> <menu_item_check label="Информация" name="Info"/> diff --git a/indra/newview/skins/default/xui/ru/menu_object_icon.xml b/indra/newview/skins/default/xui/ru/menu_object_icon.xml index 0c50abcfbd..bb97fb2ef7 100644 --- a/indra/newview/skins/default/xui/ru/menu_object_icon.xml +++ b/indra/newview/skins/default/xui/ru/menu_object_icon.xml @@ -2,6 +2,7 @@ <menu name="Object Icon Menu"> <menu_item_call label="Профиль объекта..." name="Object Profile"/> <menu_item_call label="Блокировать..." name="Block"/> + <menu_item_call label="Разблокировать" name="Unblock"/> <menu_item_call label="Показать на карте" name="show_on_map"/> <menu_item_call label="Телепорт в местоположение объекта" name="teleport_to_object"/> </menu> diff --git a/indra/newview/skins/default/xui/ru/menu_outfit_gear.xml b/indra/newview/skins/default/xui/ru/menu_outfit_gear.xml index d379a17216..24d780ba1c 100644 --- a/indra/newview/skins/default/xui/ru/menu_outfit_gear.xml +++ b/indra/newview/skins/default/xui/ru/menu_outfit_gear.xml @@ -3,6 +3,10 @@ <menu_item_call label="Надеть – Заменить текущий костюм" name="wear"/> <menu_item_call label="Надеть – Добавить к текущему костюму" name="wear_add"/> <menu_item_call label="Снять – Убрать из текущего костюма" name="take_off"/> + <menu_item_call label="Загрузить фото (L$10)" name="upload_photo"/> + <menu_item_call label="Выбрать фото" name="select_photo"/> + <menu_item_call label="Сделать снимок" name="take_snapshot"/> + <menu_item_call label="Удалить фото" name="remove_photo"/> <menu label="Новая одежда" name="New Clothes"> <menu_item_call label="Новая рубашка" name="New Shirt"/> <menu_item_call label="Новые брюки" name="New Pants"/> @@ -27,4 +31,5 @@ <menu_item_call label="Закрыть все папки" name="collapse"/> <menu_item_call label="Переименовать костюм" name="rename"/> <menu_item_call label="Удалить костюм" name="delete_outfit"/> + <menu_item_check label="Всегда сортировать папки по имени" name="sort_folders_by_name"/> </toggleable_menu> diff --git a/indra/newview/skins/default/xui/ru/menu_people_friends_view.xml b/indra/newview/skins/default/xui/ru/menu_people_friends_view.xml index 7b2dba0539..fd04810dff 100644 --- a/indra/newview/skins/default/xui/ru/menu_people_friends_view.xml +++ b/indra/newview/skins/default/xui/ru/menu_people_friends_view.xml @@ -4,5 +4,6 @@ <menu_item_check label="Сортировать по статусу" name="sort_status"/> <menu_item_check label="Показывать значки людей" name="view_icons"/> <menu_item_check label="Показывать разрешенные действия" name="view_permissions"/> + <menu_item_check label="Скрывать имена пользователей" name="view_usernames"/> <menu_item_check label="Посмотреть журнал разговора..." name="view_conversation"/> </toggleable_menu> diff --git a/indra/newview/skins/default/xui/ru/menu_people_nearby.xml b/indra/newview/skins/default/xui/ru/menu_people_nearby.xml index d05b7e7d01..952e9b1687 100644 --- a/indra/newview/skins/default/xui/ru/menu_people_nearby.xml +++ b/indra/newview/skins/default/xui/ru/menu_people_nearby.xml @@ -13,4 +13,6 @@ <menu_item_call label="Поделиться" name="share"/> <menu_item_call label="Заплатить" name="pay"/> <menu_item_check label="Черный список" name="block_unblock"/> + <menu_item_call label="Заморозить" name="freeze"/> + <menu_item_call label="Выкинуть" name="eject"/> </context_menu> diff --git a/indra/newview/skins/default/xui/ru/menu_people_nearby_view.xml b/indra/newview/skins/default/xui/ru/menu_people_nearby_view.xml index 2bc353ad58..0e949cedff 100644 --- a/indra/newview/skins/default/xui/ru/menu_people_nearby_view.xml +++ b/indra/newview/skins/default/xui/ru/menu_people_nearby_view.xml @@ -5,4 +5,5 @@ <menu_item_check label="Сортировать по расстоянию" name="sort_distance"/> <menu_item_check label="Показывать значки людей" name="view_icons"/> <menu_item_check label="Смотреть карту" name="view_map"/> + <menu_item_check label="Скрывать имена пользователей" name="view_usernames"/> </toggleable_menu> diff --git a/indra/newview/skins/default/xui/ru/menu_url_objectim.xml b/indra/newview/skins/default/xui/ru/menu_url_objectim.xml index 4f5361b2e3..1b77770e1c 100644 --- a/indra/newview/skins/default/xui/ru/menu_url_objectim.xml +++ b/indra/newview/skins/default/xui/ru/menu_url_objectim.xml @@ -2,6 +2,7 @@ <context_menu name="Url Popup"> <menu_item_call label="Профиль объекта..." name="show_object"/> <menu_item_call label="Блокировать..." name="block_object"/> + <menu_item_call label="Разблокировать" name="unblock_object"/> <menu_item_call label="Показать на карте" name="show_on_map"/> <menu_item_call label="Телепорт в местоположение объекта" name="teleport_to_object"/> <menu_item_call label="Копировать название объекта в буфер обмена" name="url_copy_label"/> diff --git a/indra/newview/skins/default/xui/ru/menu_viewer.xml b/indra/newview/skins/default/xui/ru/menu_viewer.xml index 6158363e5d..e5e484173d 100644 --- a/indra/newview/skins/default/xui/ru/menu_viewer.xml +++ b/indra/newview/skins/default/xui/ru/menu_viewer.xml @@ -111,11 +111,11 @@ <menu_item_call label="Объединить" name="Link"/> <menu_item_call label="Разъединить" name="Unlink"/> <menu_item_check label="Редактировать объединенные части" name="Edit Linked Parts"/> - <menu label="Выбрать объединенные части" name="Select Linked Parts"> - <menu_item_call label="Выбрать следующую" name="Select Next Part"/> - <menu_item_call label="Выбрать предыдущую" name="Select Previous Part"/> - <menu_item_call label="Включить следующую" name="Include Next Part"/> - <menu_item_call label="Включить предыдущую" name="Include Previous Part"/> + <menu label="Выберите элементы" name="Select Elements"> + <menu_item_call label="Выбрать следующую часть или лицо" name="Select Next Part or Face"/> + <menu_item_call label="Выбрать предыдущую часть или лицо" name="Select Previous Part or Face"/> + <menu_item_call label="Включить следующую часть или лицо" name="Include Next Part or Face"/> + <menu_item_call label="Включить предыдущую часть или лицо" name="Include Previous Part or Face"/> </menu> <menu_item_call label="Наборы связей..." name="pathfinding_linkset_menu_item"/> <menu_item_call label="Фокус на выбранном" name="Focus on Selection"/> @@ -365,8 +365,7 @@ <menu_item_call label="Вывод кэша региональных объектов" name="Dump Region Object Cache"/> </menu> <menu label="Интерфейс пользователя" name="UI"> - <menu_item_call label="Проверка медиабраузера" name="Web Browser Test"/> - <menu_item_call label="Браузер для просмотра веб-контента" name="Web Content Browser"/> + <menu_item_call label="Браузер для просмотра медиа" name="Media Browser"/> <menu_item_call label="Вывод SelectMgr" name="Dump SelectMgr"/> <menu_item_call label="Вывод инвентаря" name="Dump Inventory"/> <menu_item_call label="Вывод таймеров" name="Dump Timers"/> diff --git a/indra/newview/skins/default/xui/ru/menu_wearing_tab.xml b/indra/newview/skins/default/xui/ru/menu_wearing_tab.xml index f178b39c77..1e32090c2a 100644 --- a/indra/newview/skins/default/xui/ru/menu_wearing_tab.xml +++ b/indra/newview/skins/default/xui/ru/menu_wearing_tab.xml @@ -3,4 +3,6 @@ <menu_item_call label="Снять" name="take_off"/> <menu_item_call label="Отсоединить" name="detach"/> <menu_item_call label="Изменить костюм" name="edit"/> + <menu_item_call label="Изменить" name="edit_item"/> + <menu_item_call label="Показать оригинал" name="show_original"/> </context_menu> diff --git a/indra/newview/skins/default/xui/ru/mime_types.xml b/indra/newview/skins/default/xui/ru/mime_types.xml index 9b120f2f40..9c3ce00c5e 100644 --- a/indra/newview/skins/default/xui/ru/mime_types.xml +++ b/indra/newview/skins/default/xui/ru/mime_types.xml @@ -57,6 +57,11 @@ Поток RealTime </label> </scheme> + <scheme name="libvlc"> + <label name="libvlc_label"> + Медиа с поддержкой LibVLC + </label> + </scheme> <mimetype name="blank"> <label name="blank_label"> - Ничего - @@ -202,6 +207,11 @@ Видео (MP4) </label> </mimetype> + <mimetype name="application/octet-stream"> + <label name="video/octet-stream"> + Видео + </label> + </mimetype> <mimetype name="video/quicktime"> <label name="video/quicktime_label"> Видео (QuickTime) diff --git a/indra/newview/skins/default/xui/ru/notifications.xml b/indra/newview/skins/default/xui/ru/notifications.xml index 5e7c2ed7d0..50931fc9b8 100644 --- a/indra/newview/skins/default/xui/ru/notifications.xml +++ b/indra/newview/skins/default/xui/ru/notifications.xml @@ -330,6 +330,9 @@ Вы собираетесь запретить [COUNT] участникам доступ в группу. <usetemplate ignoretext="Подтвердите запрет доступа участникам в группу" name="okcancelignore" notext="Отмена" yestext="Бан"/> </notification> + <notification name="GroupBanUserOnBanlist"> + Некоторым резидентам не отправлено приглашение, так как они исключены из группы. + </notification> <notification name="AttachmentDrop"> Вы собираетесь сбросить свое присоединение. Продолжить? @@ -457,6 +460,12 @@ <notification name="ErrorEncodingSnapshot"> Ошибка при кодировке снимка. </notification> + <notification name="ErrorPhotoCannotAfford"> + Требуется L$[COST] для сохранения фото в вашем инвентаре. Купите L$ или сохраните фото на компьютере. + </notification> + <notification name="ErrorTextureCannotAfford"> + Требуется L$[COST] для сохранения текстуры в вашем инвентаре. Купите L$ или сохраните фото на компьютере. + </notification> <notification name="ErrorUploadingPostcard"> Ошибка при отправке снимка по следующей причине: [REASON] </notification> @@ -575,6 +584,10 @@ Удалить заметку? <usetemplate name="okcancelbuttons" notext="Отмена" yestext="OK"/> </notification> + <notification name="LoadPreviousReportScreenshot"> + Использовать для вашего отчета предыдущий снимок экрана? + <usetemplate name="okcancelbuttons" notext="Отмена" yestext="OK"/> + </notification> <notification name="GestureSaveFailedTooManySteps"> Не удалось сохранить жест. Жест содержит слишком много этапов. @@ -635,30 +648,12 @@ </url> <usetemplate ignoretext="Оборудование моего компьютера не поддерживается" name="okcancelignore" notext="Нет" yestext="Да"/> </notification> - <notification name="IntelOldDriver"> - Возможно, для вашей видеокарты имеется более новый драйвер. Обновление драйвера может существенно повысить быстродействие. - - Проверить наличие обновления для драйвера по адресу [_URL]? - <url name="url"> - http://www.intel.com/p/ru_RU/support/detect/graphics - </url> - <usetemplate ignoretext="Мой графический драйвер устарел" name="okcancelignore" notext="Нет" yestext="Да"/> - </notification> - <notification name="AMDOldDriver"> + <notification name="OldGPUDriver"> Возможно, для вашей видеокарты имеется более новый драйвер. Обновление драйвера может существенно повысить быстродействие. - Проверить наличие обновления для драйвера по адресу [_URL]? + Проверить наличие обновления для драйвера по адресу [URL]? <url name="url"> - http://support.amd.com/us/Pages/AMDSupportHub.aspx - </url> - <usetemplate ignoretext="Мой графический драйвер устарел" name="okcancelignore" notext="Нет" yestext="Да"/> - </notification> - <notification name="NVIDIAOldDriver"> - Возможно, для вашей видеокарты имеется более новый драйвер. Обновление драйвера может существенно повысить быстродействие. - - Проверить наличие обновления для драйвера по адресу [_URL]? - <url name="url"> - http://www.nvidia.com/Download/index.aspx?lang=ru-ru + [URL] </url> <usetemplate ignoretext="Мой графический драйвер устарел" name="okcancelignore" notext="Нет" yestext="Да"/> </notification> @@ -749,6 +744,9 @@ </url> <usetemplate name="okcancelbuttons" notext="Отмена" yestext="OK"/> </notification> + <notification name="MuteLimitReached"> + Невозможно добавить новый пункт в список заблокированных: достигнуто предельное число пунктов [MUTE_LIMIT]. + </notification> <notification name="UnableToLinkObjects"> Невозможно объединить эти [COUNT] объектов. Можно объединять не более [MAX] объектов. @@ -1379,6 +1377,11 @@ </notification> <notification name="AgentComplexity"> Ваша [https://community.secondlife.com/t5/English-Knowledge-Base/Avatar-Rendering-Complexity/ta-p/2967838 сложность аватара]: [AGENT_COMPLEXITY]. + <usetemplate ignoretext="Предупреждать меня об изменении сложности аватара" name="notifyignore"/> + </notification> + <notification name="HUDComplexityWarning"> + [HUD_REASON], возможно, отрицательно влияет на быстродействие. + <usetemplate ignoretext="Предупреждать о чрезмерной сложности данных в игре" name="notifyignore"/> </notification> <notification name="FirstRun"> Установка [APP_NAME] завершена. @@ -1470,6 +1473,10 @@ Телепортировать всех жителей в этом регионе домой? <usetemplate name="okcancelbuttons" notext="Отмена" yestext="OK"/> </notification> + <notification name="ChangeObjectBonusFactor"> + Снижение бонуса за объекты после сооружения построек в регионе может вызвать возврат или удаление объектов. Действительно изменить бонус за объекты? + <usetemplate ignoretext="Подтвердите изменение бонусного множителя для объектов" name="okcancelignore" notext="Отмена" yestext="OK"/> + </notification> <notification name="EstateObjectReturn"> Вы действительно хотите вернуть объекты, принадлежащие [USER_NAME]? <usetemplate name="okcancelbuttons" notext="Отмена" yestext="OK"/> @@ -1517,6 +1524,9 @@ <notification name="OwnerCanNotBeDenied"> Нельзя добавить землевладельца в список забаненных жителей его же земли. </notification> + <notification name="ProblemAddingEstateManagerBanned"> + Невозможно добавить заблокированного жителя в список менеджеров землевладения. + </notification> <notification name="CanNotChangeAppearanceUntilLoaded"> Нельзя изменять внешность, пока загружаются одежда и фигура. </notification> @@ -1691,6 +1701,10 @@ http://secondlife.com/download. Открыть браузер для просмотра этого контента? <usetemplate ignoretext="Запустить браузер для просмотра веб-страницы" name="okcancelignore" notext="Отмена" yestext="OK"/> </notification> + <notification name="SystemUIScaleFactorChanged"> + Со времени последнего запуска изменился системный коэффициент размера интерфейса. Открыть страницу настроек размера интерфейса? + <usetemplate name="okcancelbuttons" notext="Отмена" yestext="OK"/> + </notification> <notification name="WebLaunchJoinNow"> Перейти на [http://secondlife.com/account/ информационную панель] для управления вашим аккаунтом? <usetemplate ignoretext="Запустить браузер для управления аккаунтом" name="okcancelignore" notext="Отмена" yestext="OK"/> @@ -1730,10 +1744,17 @@ http://secondlife.com/download. Хотите покинуть группу? <usetemplate name="okcancelbuttons" notext="Отмена" yestext="OK"/> </notification> + <notification name="GroupDepart"> + Вы покинули группу «[group_name]». + </notification> <notification name="OwnerCannotLeaveGroup"> Невозможно покинуть группу. Вы не можете покинуть группу, так как вы ее последний владелец. Сначала назначьте владельцем другого участника. <usetemplate name="okbutton" yestext="OK"/> </notification> + <notification name="GroupDepartError"> + Невозможно покинуть группу. + <usetemplate name="okbutton" yestext="OK"/> + </notification> <notification name="ConfirmKick"> Вы ДЕЙСТВИТЕЛЬНО хотите выбросить всех жителей с сетки? <usetemplate name="okcancelbuttons" notext="Отмена" yestext="Выбросить всех жителей"/> @@ -2131,6 +2152,10 @@ http://secondlife.com/download. Выбрано слишком много примитивов. Выберите [MAX_PRIM_COUNT] или меньше примитивов и повторите попытку. <usetemplate name="okbutton" yestext="OK"/> </notification> + <notification name="TooManyScriptsSelected"> + В выбранных объектах слишком много скриптов. Выберите меньше объектов и повторите попытку. + <usetemplate name="okbutton" yestext="OK"/> + </notification> <notification name="ProblemImportingEstateCovenant"> Проблема при импорте соглашения о землевладении. <usetemplate name="okbutton" yestext="OK"/> @@ -2298,6 +2323,10 @@ http://secondlife.com/download. Не удалось выполнить оплату: объект не найден. <usetemplate name="okbutton" yestext="OK"/> </notification> + <notification name="PaymentBlockedButtonMismatch"> + Платеж остановлен: уплаченная сумма не соответствует ни одной из кнопок оплаты, заданных для этого объекта. + <usetemplate name="okbutton" yestext="OK"/> + </notification> <notification name="OpenObjectCannotCopy"> В этом объекте нет вещей, которые вам разрешено копировать. </notification> @@ -2333,6 +2362,12 @@ http://secondlife.com/download. Это большое выделение с наборами связей. Если разъединить его, повторное соединение может отказаться невозможным. В качестве меры предосторожности попробуйте скопировать наборы связей в инвентарь. <usetemplate ignoretext="Подтверждать при разъединении набора связей" name="okcancelignore" notext="Отмена" yestext="Разъединить"/> </notification> + <notification name="HelpReportAbuseConfirm"> + Спасибо за информирование об этой проблеме. +Мы проверим возможные нарушения согласно вашему отчету и примем +соответствующие меры. + <usetemplate name="okbutton" yestext="OK"/> + </notification> <notification name="HelpReportAbuseSelectCategory"> Выберите категорию для этого уведомления о нарушении. Категории облегчают регистрацию и обработку уведомлений. @@ -2762,6 +2797,10 @@ http://secondlife.com/download. <notification name="PathfindingDirty"> В регионе есть незавершенные изменения поиска пути. Если у вас есть права на строительство, восстановите регион, нажав кнопку «Восстановить регион». </notification> + <notification name="PathfindingDirtyRebake"> + В регионе есть незавершенные изменения поиска пути. Если у вас есть права на строительство, восстановите регион, нажав кнопку «Восстановить регион». + <usetemplate name="okbutton" yestext="Восстановить регион"/> + </notification> <notification name="DynamicPathfindingDisabled"> В этом регионе не разрешен динамический поиск пути. Возможны нарушения работы скриптовых объектов с использованием вызовов LSL поиска пути. </notification> @@ -3269,10 +3308,12 @@ http://secondlife.com/download. </notification> <notification name="AppearanceToXMLFailed"> Не удалось сохранить внешность в XML. - icon="notifytip.tga" - name="PresetNotDeleted" - type="notifytip"> -Ошибка при удалении пресета [NAME]. + </notification> + <notification name="PresetNotSaved"> + Ошибка при сохранении пресета [NAME]. + </notification> + <notification name="PresetNotDeleted"> + Ошибка при удалении пресета [NAME]. </notification> <notification name="UnableToFindHelpTopic"> Невозможно найти раздел справки для этого элемента. @@ -3482,13 +3523,6 @@ http://secondlife.com/download. <notification name="ForceQuitDueToLowMemory"> Через 30 секунд Second Life завершит работу: нехватка памяти. </notification> - <notification name="PopupAttempt"> - Всплывающее окно нельзя открыть. - <form name="form"> - <ignore name="ignore" text="Разрешить все всплывающие окна"/> - <button name="open" text="Открыть всплывающее окно"/> - </form> - </notification> <notification name="SOCKS_NOT_PERMITTED"> Прокси SOCKS 5 "[HOST]:[PORT]" отклонил попытку подключения; не разрешено набором правил. <usetemplate name="okbutton" yestext="OK"/> @@ -3862,6 +3896,9 @@ http://secondlife.com/download. Нельзя переместить объект «[OBJECT_NAME]» в позицию «[OBJ_POSITION]» региона [REGION_NAME]: на этом участке недостаточно ресурсов для данного объекта. </notification> + <notification name="NoParcelPermsNoObject"> + Не удалось скопировать: у вас нет доступа к этому участку. + </notification> <notification name="CantMoveObjectRegionVersion"> Нельзя переместить объект «[OBJECT_NAME]» в позицию [OBJ_POSITION] региона [REGION_NAME]: в другом регионе работает старая версия симулятора, которая не поддерживает прием этого объекта через границу регионов. @@ -3877,6 +3914,10 @@ http://secondlife.com/download. <notification name="NoPermModifyObject"> У вас нет прав на изменение этого объекта </notification> + <notification name="TooMuchObjectInventorySelected"> + Выбрано слишком много объектов с большим инвентарем. Выберите меньше объектов и повторите попытку. + <usetemplate name="okbutton" yestext="OK"/> + </notification> <notification name="CantEnablePhysObjContributesToNav"> Нельзя включить физику для объекта, который относится к навигационной сетке. </notification> @@ -3913,6 +3954,12 @@ http://secondlife.com/download. <notification name="CantSaveModifyAttachment"> Нельзя сохранить в содержимом объекта: это приведет к изменению разрешений прикрепленного объекта. </notification> + <notification name="AttachmentHasTooMuchInventory"> + Прикрепленные объекты содержат слишком много инвентаря. Добавление невозможно. + </notification> + <notification name="IllegalAttachment"> + Прикрепляемый объект потребовал несуществующей точки на аватаре. Он был прикреплен к груди. + </notification> <notification name="TooManyScripts"> Слишком много скриптов. </notification> @@ -4005,6 +4052,12 @@ http://secondlife.com/download. <notification name="TeleportedByObjectUnknownUser"> Вы были телепортированы объектом «[OBJECT_NAME]», владелец неизвестен. </notification> + <notification name="StandDeniedByObject"> + «[OBJECT_NAME]» не позволит вам стоять в это время. + </notification> + <notification name="ResitDeniedByObject"> + «[OBJECT_NAME]» не позволит вам сейчас сменить место. + </notification> <notification name="CantCreateObjectRegionFull"> Невозможно создать запрошенный объект. Регион уже заполнен. </notification> @@ -4086,9 +4139,6 @@ http://secondlife.com/download. <notification name="CantAttachNotEnoughScriptResources"> Недостаточно свободных ресурсов скриптинга для присоединения объекта! </notification> - <notification name="IllegalAttachment"> - Прикрепляемый объект потребовал несуществующей точки на аватаре. Он был прикреплен к груди. - </notification> <notification name="CantDropItemTrialUser"> Здесь нельзя сбрасывать объекты; перейдите в бесплатную область для гостей. </notification> @@ -4304,6 +4354,9 @@ http://secondlife.com/download. <notification name="CantTransfterMoneyRegionDisabled"> Сейчас в этом регионе запрещен перевод денег на объекты. </notification> + <notification name="DroppedMoneyTransferRequest"> + Невозможно произвести платеж из-за нагрузки на систему. + </notification> <notification name="CantPayNoAgent"> Непонятно, кому платить. </notification> @@ -4339,4 +4392,8 @@ http://secondlife.com/download. Файл журнала чата занят предыдущей операцией. Повторите попытку через несколько минут или выберите чат с другим лицом. <usetemplate name="okbutton" yestext="OK"/> </notification> + <notification name="OutfitPhotoLoadError"> + [REASON] + <usetemplate name="okbutton" yestext="OK"/> + </notification> </notifications> diff --git a/indra/newview/skins/default/xui/ru/panel_outfits_inventory.xml b/indra/newview/skins/default/xui/ru/panel_outfits_inventory.xml index 4d0e13fca2..2c02df23c0 100644 --- a/indra/newview/skins/default/xui/ru/panel_outfits_inventory.xml +++ b/indra/newview/skins/default/xui/ru/panel_outfits_inventory.xml @@ -7,6 +7,7 @@ Надеть выбранные вещи </panel.string> <tab_container name="appearance_tabs"> + <panel label="ГАЛЕРЕЯ КОСТЮМОВ" name="outfit_gallery_tab"/> <panel label="МОИ КОСТЮМЫ" name="outfitslist_tab"/> <panel label="НАДЕТО" name="cof_tab"/> </tab_container> diff --git a/indra/newview/skins/default/xui/ru/panel_outfits_wearing.xml b/indra/newview/skins/default/xui/ru/panel_outfits_wearing.xml index 7ed6bf35c0..748903b3df 100644 --- a/indra/newview/skins/default/xui/ru/panel_outfits_wearing.xml +++ b/indra/newview/skins/default/xui/ru/panel_outfits_wearing.xml @@ -1,5 +1,12 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <panel name="Wearing"> + <panel.string name="no_attachments"> + Нет прикрепленных объектов. + </panel.string> + <accordion name="wearables_accordion"> + <accordion_tab name="tab_wearables" title="Носимые вещи"/> + <accordion_tab name="tab_temp_attachments" title="Временные прикрепленные объекты"/> + </accordion> <panel name="bottom_panel"> <menu_button name="options_gear_btn" tool_tip="Показать дополнительные параметры"/> </panel> diff --git a/indra/newview/skins/default/xui/ru/panel_preferences_setup.xml b/indra/newview/skins/default/xui/ru/panel_preferences_setup.xml index fd13abbe27..e1b185e8ef 100644 --- a/indra/newview/skins/default/xui/ru/panel_preferences_setup.xml +++ b/indra/newview/skins/default/xui/ru/panel_preferences_setup.xml @@ -30,6 +30,7 @@ <combo_box.item label="Я буду загружать и устанавливать обновления вручную" name="Install_manual"/> </combo_box> <check_box label="Устанавливать бета-версии" name="update_willing_to_test"/> + <check_box label="Показать заметки о выпуске после обновления" name="update_show_release_notes"/> <text name="Proxy Settings:"> Настройки прокси-сервера: </text> diff --git a/indra/newview/skins/default/xui/ru/strings.xml b/indra/newview/skins/default/xui/ru/strings.xml index da03af055c..e44d63b3b9 100644 --- a/indra/newview/skins/default/xui/ru/strings.xml +++ b/indra/newview/skins/default/xui/ru/strings.xml @@ -61,17 +61,34 @@ SLURL: <nolink>[SLURL]</nolink> <string name="AboutDriver"> Версия графического драйвера Windows: [GRAPHICS_DRIVER_VERSION] </string> - <string name="AboutLibs"> + <string name="AboutOGL"> Версия OpenGL: [OPENGL_VERSION] - -Версия декодера J2C: [J2C_VERSION] + </string> + <string name="AboutSettings"> + Размер окна: [WINDOW_WIDTH]x[WINDOW_HEIGHT] +Коррекция размера шрифта: [FONT_SIZE_ADJUSTMENT]pt +Масштаб интерфейса: [UI_SCALE] +Дальность отрисовки: [DRAW_DISTANCE] м +Ширина канала: [NET_BANDWITH] кбит/с +Коэффициент детализации: [LOD_FACTOR] +Качество визуализации: [RENDER_QUALITY] / 7 +Расширенная модель освещения: [GPU_SHADERS] +Память текстур: [TEXTURE_MEMORY] МБ +Время создания VFS (кэш): [VFS_TIME] + </string> + <string name="AboutLibs"> + Версия декодера J2C: [J2C_VERSION] Версия драйвера звука: [AUDIO_DRIVER_VERSION] Версия LLCEFLib/CEF: [LLCEFLIB_VERSION] +Версия LibVLC: [LIBVLC_VERSION] Версия голосового сервера: [VOICE_VERSION] </string> <string name="AboutTraffic"> Потеряно пакетов: [PACKETS_LOST,number,0]/[PACKETS_IN,number,0] ([PACKETS_PCT,number,1]%) </string> + <string name="AboutTime"> + [month, datetime, slt] [day, datetime, slt] [year, datetime, slt] [hour, datetime, slt]:[min, datetime, slt]:[second,datetime,slt] + </string> <string name="ErrorFetchingServerReleaseNotesURL"> Ошибка при получении URL-адреса заметок о выпуске сервера. </string> @@ -1086,6 +1103,9 @@ support@secondlife.com. <string name="TeleportYourAgent"> Телепортировать вас </string> + <string name="ForceSitAvatar"> + Заставьте аватар сесть + </string> <string name="NotConnected"> Нет подключения </string> @@ -1934,6 +1954,27 @@ support@secondlife.com. <string name="av_render_anyone"> Никто из окружающих участников не может отрисовать вас. </string> + <string name="hud_description_total"> + Ваши данные в игре + </string> + <string name="hud_name_with_joint"> + [OBJ_NAME] (носится на [JNT_NAME]) + </string> + <string name="hud_render_memory_warning"> + [HUD_DETAILS] использует большой объем памяти текстур + </string> + <string name="hud_render_cost_warning"> + [HUD_DETAILS] содержит много объемистых объектов и текстур + </string> + <string name="hud_render_heavy_textures_warning"> + [HUD_DETAILS] содержит много больших текстур + </string> + <string name="hud_render_cramped_warning"> + [HUD_DETAILS] содержит слишком много объектов + </string> + <string name="hud_render_textures_warning"> + [HUD_DETAILS] содержит слишком много текстур + </string> <string name="AgeYearsA"> [COUNT] год </string> @@ -2093,6 +2134,9 @@ support@secondlife.com. <string name="ObjectOutOfRange"> Скрипт (объект вне области) </string> + <string name="ScriptWasDeleted"> + Скрипт (удален из инвентаря) + </string> <string name="GodToolsObjectOwnedBy"> Объект [OBJECT] пользователя [OWNER] </string> @@ -2705,6 +2749,15 @@ support@secondlife.com. <string name="Play Media"> Мультимедиа – воспроизведение/пауза </string> + <string name="IntelDriverPage"> + http://www.intel.com/p/en_US/support/detect/graphics + </string> + <string name="NvidiaDriverPage"> + http://www.nvidia.com/Download/index.aspx?lang=ru-ru + </string> + <string name="AMDDriverPage"> + http://support.amd.com/us/Pages/AMDSupportHub.aspx + </string> <string name="MBCmdLineError"> Ошибка при анализе командной строки. См.: http://wiki.secondlife.com/wiki/Client_parameters @@ -4477,12 +4530,18 @@ support@secondlife.com. <string name="paid_you_ldollars"> Житель [NAME] заплатил вам L$[AMOUNT] за [REASON]. </string> + <string name="paid_you_ldollars_gift"> + Пользователь [NAME] заплатил вам L$[AMOUNT]: [REASON] + </string> <string name="paid_you_ldollars_no_reason"> Житель [NAME] заплатил вам L$[AMOUNT]. </string> <string name="you_paid_ldollars"> Вы заплатили жителю [NAME] L$[AMOUNT] за [REASON]. </string> + <string name="you_paid_ldollars_gift"> + Вы заплатили пользователю [NAME] L$[AMOUNT]: [REASON] + </string> <string name="you_paid_ldollars_no_info"> Вы заплатили L$[AMOUNT]. </string> @@ -4495,6 +4554,9 @@ support@secondlife.com. <string name="you_paid_failure_ldollars"> Вы не смогли заплатить пользователю [NAME] L$[AMOUNT]: [REASON]. </string> + <string name="you_paid_failure_ldollars_gift"> + Вы не смогли заплатить пользователю [NAME] L$[AMOUNT]: [REASON] + </string> <string name="you_paid_failure_ldollars_no_info"> Вы не смогли заплатить L$[AMOUNT] </string> @@ -4821,6 +4883,15 @@ support@secondlife.com. <string name="texture_load_dimensions_error"> Нельзя загружать изображения, размер которых превышает [WIDTH]*[HEIGHT] </string> + <string name="outfit_photo_load_dimensions_error"> + Максимальный размер фото костюма [WIDTH]*[HEIGHT]. Измените размер или используйте другое изображение + </string> + <string name="outfit_photo_select_dimensions_error"> + Максимальный размер фото костюма [WIDTH]*[HEIGHT]. Выберите другую текстуру. + </string> + <string name="outfit_photo_verify_dimensions_error"> + Невозможно проверить размеры фото. Подождите, пока размеры фото не будут показаны в окне выбора + </string> <string name="words_separator" value=","/> <string name="server_is_down"> Несмотря на наши усилия, что-то неожиданно пошло не так. @@ -5337,6 +5408,9 @@ support@secondlife.com. <string name="Command_Profile_Label"> Профиль </string> + <string name="Command_Report_Abuse_Label"> + Жалоба + </string> <string name="Command_Search_Label"> Поиск </string> @@ -5427,6 +5501,9 @@ support@secondlife.com. <string name="Command_Profile_Tooltip"> Редактирование или просмотр вашего профиля </string> + <string name="Command_Report_Abuse_Tooltip"> + Жалоба + </string> <string name="Command_Search_Tooltip"> Поиск мест, событий, людей </string> diff --git a/indra/newview/skins/default/xui/tr/floater_model_preview.xml b/indra/newview/skins/default/xui/tr/floater_model_preview.xml index 29a56bae7e..3c00b67c50 100644 --- a/indra/newview/skins/default/xui/tr/floater_model_preview.xml +++ b/indra/newview/skins/default/xui/tr/floater_model_preview.xml @@ -245,6 +245,7 @@ </text> <check_box label="Dış katman ağırlığını dahil et" name="upload_skin"/> <check_box label="Eklem konumlarını dahil et" name="upload_joints"/> + <check_box label="Eklem konumu tanımlandıysa ölçeği kilitle" name="lock_scale_if_joint_position"/> <text name="pelvis_offset_label"> Z kayması (avatarı kaldırmak veya indirmek için): </text> diff --git a/indra/newview/skins/default/xui/tr/floater_pay.xml b/indra/newview/skins/default/xui/tr/floater_pay.xml index 63334db910..8ed8c895ef 100644 --- a/indra/newview/skins/default/xui/tr/floater_pay.xml +++ b/indra/newview/skins/default/xui/tr/floater_pay.xml @@ -1,9 +1,20 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <floater name="Give Money"> - <string name="payee_group">Gruba Öde</string> - <string name="payee_resident">Sakine Öde</string> - <text name="paying_text">Ödeyeceğiniz miktar:</text> - <text name="payee_name">Kırpmayı Kontrol İçin Test Adı Çok Uzun</text> + <string name="payee_group"> + Gruba Öde + </string> + <string name="payee_resident"> + Sakine Öde + </string> + <text name="paying_text"> + Ödeyeceğiniz miktar: + </text> + <text name="payee_name"> + Kırpmayı Kontrol İçin Test Adı Çok Uzun + </text> + <text name="payment_message_label"> + Açıklama (isteğe bağlı): + </text> <panel label="Ara" name="PatternsPanel"> <button label="1 L$ Öde" label_selected="1 L$ Öde" name="fastpay 1"/> <button label="5 L$ Öde" label_selected="5 L$ Öde" name="fastpay 5"/> @@ -11,7 +22,9 @@ <button label="20 L$ Öde" label_selected="20 L$ Öde" name="fastpay 20"/> </panel> <panel label="Ara" name="InputPanel"> - <text name="amount text">Diğer bir tutar:</text> + <text name="amount text"> + Diğer bir tutar: + </text> <button label="Öde" label_selected="Öde" name="pay btn"/> <button label="İptal" label_selected="İptal" name="cancel btn"/> </panel> diff --git a/indra/newview/skins/default/xui/tr/floater_preferences_graphics_advanced.xml b/indra/newview/skins/default/xui/tr/floater_preferences_graphics_advanced.xml index 867e15a3ca..72c897ad47 100644 --- a/indra/newview/skins/default/xui/tr/floater_preferences_graphics_advanced.xml +++ b/indra/newview/skins/default/xui/tr/floater_preferences_graphics_advanced.xml @@ -15,7 +15,7 @@ <text name="AvatarText"> Avatar </text> - <slider label="Maksimum karmaşıklık:" name="IndirectMaxComplexity" tool_tip="Görsel olarak karmaşık bir avatarın hangi noktadan itibaren JellyDolll olarak çizileceğini kontrol eder"/> + <slider label="Maksimum karmaşıklık:" name="IndirectMaxComplexity" tool_tip="Görsel olarak karmaşık bir avatarın ne zaman JellyDoll olarak çizileceğini belirler"/> <text name="IndirectMaxComplexityText"> 0 </text> diff --git a/indra/newview/skins/default/xui/tr/floater_script_queue.xml b/indra/newview/skins/default/xui/tr/floater_script_queue.xml index c1d98b717a..9004ad2e73 100644 --- a/indra/newview/skins/default/xui/tr/floater_script_queue.xml +++ b/indra/newview/skins/default/xui/tr/floater_script_queue.xml @@ -15,5 +15,11 @@ <floater.string name="NotRunning"> Çalışmıyor </floater.string> + <floater.string name="Timeout"> + Zaman aşımı: [OBJECT_NAME] + </floater.string> + <floater.string name="LoadingObjInv"> + Şu öğe için envanter yükleniyor: [OBJECT_NAME] + </floater.string> <button label="Kapat" label_selected="Kapat" name="close"/> </floater> diff --git a/indra/newview/skins/default/xui/tr/floater_web_content.xml b/indra/newview/skins/default/xui/tr/floater_web_content.xml index 93491b80fb..dd5f18e2ad 100644 --- a/indra/newview/skins/default/xui/tr/floater_web_content.xml +++ b/indra/newview/skins/default/xui/tr/floater_web_content.xml @@ -10,5 +10,9 @@ <icon name="media_secure_lock_flag" tool_tip="Güvenli Tarama"/> <button name="popexternal" tool_tip="Mevcut URL'yi masaüstü tarayıcıda aç"/> </layout_panel> + <layout_panel name="debug_controls"> + <button name="web_test_home_page" tool_tip="Web testleri ana sayfası"/> + <button name="VLC Plugin Test" tool_tip="MPEG4 Video Testi"/> + </layout_panel> </layout_stack> </floater> diff --git a/indra/newview/skins/default/xui/tr/menu_attachment_other.xml b/indra/newview/skins/default/xui/tr/menu_attachment_other.xml index d09174dcc0..cef661dbf4 100644 --- a/indra/newview/skins/default/xui/tr/menu_attachment_other.xml +++ b/indra/newview/skins/default/xui/tr/menu_attachment_other.xml @@ -7,6 +7,7 @@ <menu_item_call label="Ara" name="Call"/> <menu_item_call label="Gruba Davet Et" name="Invite..."/> <menu_item_call label="İskeleti Sıfırla" name="Reset Skeleton"/> + <menu_item_call label="İskeleti ve Animasyonları Sıfırla" name="Reset Skeleton And Animations"/> <menu_item_call label="Engelle" name="Avatar Mute"/> <menu_item_call label="Raporla" name="abuse"/> <menu_item_call label="Dondur" name="Freeze..."/> diff --git a/indra/newview/skins/default/xui/tr/menu_attachment_self.xml b/indra/newview/skins/default/xui/tr/menu_attachment_self.xml index 9027f09d8e..fd166ddd68 100644 --- a/indra/newview/skins/default/xui/tr/menu_attachment_self.xml +++ b/indra/newview/skins/default/xui/tr/menu_attachment_self.xml @@ -10,6 +10,7 @@ <menu_item_call label="Şeklimi Düzenle" name="Edit My Shape"/> <menu_item_call label="Konum Yüksekliği" name="Hover Height"/> <menu_item_call label="İskeleti Sıfırla" name="Reset Skeleton"/> + <menu_item_call label="İskeleti ve Animasyonları Sıfırla" name="Reset Skeleton And Animations"/> <menu_item_call label="Arkadaşlarım" name="Friends..."/> <menu_item_call label="Gruplarım" name="Groups..."/> <menu_item_call label="Profilim" name="Profile..."/> diff --git a/indra/newview/skins/default/xui/tr/menu_avatar_other.xml b/indra/newview/skins/default/xui/tr/menu_avatar_other.xml index 9e95b3033a..87b0d3b7eb 100644 --- a/indra/newview/skins/default/xui/tr/menu_avatar_other.xml +++ b/indra/newview/skins/default/xui/tr/menu_avatar_other.xml @@ -7,6 +7,7 @@ <menu_item_call label="Ara" name="Call"/> <menu_item_call label="Gruba Davet Et" name="Invite..."/> <menu_item_call label="İskeleti Sıfırla" name="Reset Skeleton"/> + <menu_item_call label="İskeleti ve Animasyonları Sıfırla" name="Reset Skeleton And Animations"/> <menu_item_call label="Engelle" name="Avatar Mute"/> <menu_item_call label="Raporla" name="abuse"/> <menu_item_call label="Dondur" name="Freeze..."/> diff --git a/indra/newview/skins/default/xui/tr/menu_avatar_self.xml b/indra/newview/skins/default/xui/tr/menu_avatar_self.xml index 3078733478..d60d894ed8 100644 --- a/indra/newview/skins/default/xui/tr/menu_avatar_self.xml +++ b/indra/newview/skins/default/xui/tr/menu_avatar_self.xml @@ -27,6 +27,7 @@ <menu_item_call label="Şeklimi Düzenle" name="Edit My Shape"/> <menu_item_call label="Konum Yüksekliği" name="Hover Height"/> <menu_item_call label="İskeleti Sıfırla" name="Reset Skeleton"/> + <menu_item_call label="İskeleti ve Animasyonları Sıfırla" name="Reset Skeleton And Animations"/> <menu_item_call label="Arkadaşlarım" name="Friends..."/> <menu_item_call label="Gruplarım" name="Groups..."/> <menu_item_call label="Profilim" name="Profile..."/> diff --git a/indra/newview/skins/default/xui/tr/menu_login.xml b/indra/newview/skins/default/xui/tr/menu_login.xml index a940635778..60f81c3237 100644 --- a/indra/newview/skins/default/xui/tr/menu_login.xml +++ b/indra/newview/skins/default/xui/tr/menu_login.xml @@ -20,13 +20,12 @@ <menu_item_check label="Hata Ayıklama Menüsünü Göster" name="Show Debug Menu"/> <menu label="Hata ayıkla" name="Debug"> <menu_item_call label="Hata Ayıklama Ayarlarını Göster" name="Debug Settings"/> - <menu_item_call label="KA/Renk Ayarları" name="UI/Color Settings"/> <menu_item_call label="XKA Önizleme Aracı" name="UI Preview Tool"/> <menu label="KA Testleri" name="UI Tests"/> <menu_item_call label="Pencere Büyüklüğünü Ayarla..." name="Set Window Size..."/> <menu_item_call label="Hizmet Şartlarını Göster" name="TOS"/> <menu_item_call label="Kritik İletiyi Göster" name="Critical"/> - <menu_item_call label="Web İçeriği Gezdiricisi Hata Ayıklama Testi" name="Web Content Floater Debug Test"/> + <menu_item_call label="Ortam Tarayıcı" name="Media Browser"/> <menu label="Günlük Tutma Seviyesini Seç" name="Set Logging Level"> <menu_item_check label="Hata ayıkla" name="Debug"/> <menu_item_check label="Bilgi" name="Info"/> diff --git a/indra/newview/skins/default/xui/tr/menu_object_icon.xml b/indra/newview/skins/default/xui/tr/menu_object_icon.xml index 3d5c68d9d3..57a44f02ea 100644 --- a/indra/newview/skins/default/xui/tr/menu_object_icon.xml +++ b/indra/newview/skins/default/xui/tr/menu_object_icon.xml @@ -2,6 +2,7 @@ <menu name="Object Icon Menu"> <menu_item_call label="Nesne Profili..." name="Object Profile"/> <menu_item_call label="Engelle..." name="Block"/> + <menu_item_call label="Engellemeyi Kaldır" name="Unblock"/> <menu_item_call label="Haritada Göster" name="show_on_map"/> <menu_item_call label="Nesne Konumuna Işınla" name="teleport_to_object"/> </menu> diff --git a/indra/newview/skins/default/xui/tr/menu_outfit_gear.xml b/indra/newview/skins/default/xui/tr/menu_outfit_gear.xml index 674041e9c9..1b73032a5d 100644 --- a/indra/newview/skins/default/xui/tr/menu_outfit_gear.xml +++ b/indra/newview/skins/default/xui/tr/menu_outfit_gear.xml @@ -3,6 +3,10 @@ <menu_item_call label="Giysi - Mevcut Dış Görünümü Değiştir" name="wear"/> <menu_item_call label="Giysi - Mevcut Dış Görünüme Ekle" name="wear_add"/> <menu_item_call label="Çıkar - Mevcut Dış Görünümden Kaldır" name="take_off"/> + <menu_item_call label="Karşıya Fotoğraf Yükleyin (10 L$)" name="upload_photo"/> + <menu_item_call label="Fotoğraf Seçin" name="select_photo"/> + <menu_item_call label="Anlık Görüntü Al" name="take_snapshot"/> + <menu_item_call label="Fotoğrafı Kaldır" name="remove_photo"/> <menu label="Yeni Giysiler" name="New Clothes"> <menu_item_call label="Yeni Gömlek" name="New Shirt"/> <menu_item_call label="Yeni Pantolon" name="New Pants"/> @@ -27,4 +31,5 @@ <menu_item_call label="Tüm klasörleri daralt" name="collapse"/> <menu_item_call label="Dış Görünümü Yeniden Adlandır" name="rename"/> <menu_item_call label="Dış Görünümü Sil" name="delete_outfit"/> + <menu_item_check label="Klasörleri Her Zaman Ada Göre Sırala" name="sort_folders_by_name"/> </toggleable_menu> diff --git a/indra/newview/skins/default/xui/tr/menu_people_friends_view.xml b/indra/newview/skins/default/xui/tr/menu_people_friends_view.xml index 609584d6a6..65e5cd2ba6 100644 --- a/indra/newview/skins/default/xui/tr/menu_people_friends_view.xml +++ b/indra/newview/skins/default/xui/tr/menu_people_friends_view.xml @@ -4,5 +4,6 @@ <menu_item_check label="Duruma Göre Sırala" name="sort_status"/> <menu_item_check label="Kişi Simgelerini Göster" name="view_icons"/> <menu_item_check label="Verilen İzinleri Göster" name="view_permissions"/> + <menu_item_check label="Kullanıcı adlarını gizle" name="view_usernames"/> <menu_item_check label="Sohbet Günlüğünü Göster..." name="view_conversation"/> </toggleable_menu> diff --git a/indra/newview/skins/default/xui/tr/menu_people_nearby.xml b/indra/newview/skins/default/xui/tr/menu_people_nearby.xml index 2d61461c91..d7f61dd2cd 100644 --- a/indra/newview/skins/default/xui/tr/menu_people_nearby.xml +++ b/indra/newview/skins/default/xui/tr/menu_people_nearby.xml @@ -13,4 +13,6 @@ <menu_item_call label="Paylaş" name="share"/> <menu_item_call label="Öde" name="pay"/> <menu_item_check label="Engelle/Engeli Kaldır" name="block_unblock"/> + <menu_item_call label="Dondur" name="freeze"/> + <menu_item_call label="Çıkar" name="eject"/> </context_menu> diff --git a/indra/newview/skins/default/xui/tr/menu_people_nearby_view.xml b/indra/newview/skins/default/xui/tr/menu_people_nearby_view.xml index 59ea7c145f..5c1fe09524 100644 --- a/indra/newview/skins/default/xui/tr/menu_people_nearby_view.xml +++ b/indra/newview/skins/default/xui/tr/menu_people_nearby_view.xml @@ -5,4 +5,5 @@ <menu_item_check label="Mesafeye Göre Sırala" name="sort_distance"/> <menu_item_check label="Kişi Simgelerini Göster" name="view_icons"/> <menu_item_check label="Haritayı Göster" name="view_map"/> + <menu_item_check label="Kullanıcı adlarını gizle" name="view_usernames"/> </toggleable_menu> diff --git a/indra/newview/skins/default/xui/tr/menu_url_objectim.xml b/indra/newview/skins/default/xui/tr/menu_url_objectim.xml index ae68669605..211ff6dcbf 100644 --- a/indra/newview/skins/default/xui/tr/menu_url_objectim.xml +++ b/indra/newview/skins/default/xui/tr/menu_url_objectim.xml @@ -2,6 +2,7 @@ <context_menu name="Url Popup"> <menu_item_call label="Nesne Profili..." name="show_object"/> <menu_item_call label="Engelle..." name="block_object"/> + <menu_item_call label="Engellemeyi Kaldır" name="unblock_object"/> <menu_item_call label="Haritada Göster" name="show_on_map"/> <menu_item_call label="Nesne Konumuna Işınla" name="teleport_to_object"/> <menu_item_call label="Nesne Adını panoya kopyala" name="url_copy_label"/> diff --git a/indra/newview/skins/default/xui/tr/menu_viewer.xml b/indra/newview/skins/default/xui/tr/menu_viewer.xml index 39636f2ebf..f55bb3fbad 100644 --- a/indra/newview/skins/default/xui/tr/menu_viewer.xml +++ b/indra/newview/skins/default/xui/tr/menu_viewer.xml @@ -111,11 +111,11 @@ <menu_item_call label="Bağla" name="Link"/> <menu_item_call label="Bağlnty. Kopar" name="Unlink"/> <menu_item_check label="Bağlantılı Parçaları Düzenle" name="Edit Linked Parts"/> - <menu label="Bağlantılı Parçaları Seç" name="Select Linked Parts"> - <menu_item_call label="Sonraki Parçayı Seç" name="Select Next Part"/> - <menu_item_call label="Önceki Parçayı Seç" name="Select Previous Part"/> - <menu_item_call label="Sonraki Parçayı Dahil Et" name="Include Next Part"/> - <menu_item_call label="Önceki Parçayı Dahil Et" name="Include Previous Part"/> + <menu label="Öğeleri Seçin" name="Select Elements"> + <menu_item_call label="Sonraki Parçayı veya Yüzü Seçin" name="Select Next Part or Face"/> + <menu_item_call label="Önceki Parçayı veya Yüzü Seçin" name="Select Previous Part or Face"/> + <menu_item_call label="Sonraki Parçayı veya Yüzü Dahil Et" name="Include Next Part or Face"/> + <menu_item_call label="Önceki Parçayı veya Yüzü Dahil Et" name="Include Previous Part or Face"/> </menu> <menu_item_call label="Bağlantı kümeleri..." name="pathfinding_linkset_menu_item"/> <menu_item_call label="Seçime Odaklan" name="Focus on Selection"/> @@ -366,8 +366,7 @@ <menu_item_call label="Bölge Nesne Önbelleğinin Dökümünü Al" name="Dump Region Object Cache"/> </menu> <menu label="KA" name="UI"> - <menu_item_call label="Ortam Tarayıcı Testi" name="Web Browser Test"/> - <menu_item_call label="Web İçerik Tarayıcısı" name="Web Content Browser"/> + <menu_item_call label="Ortam Tarayıcı" name="Media Browser"/> <menu_item_call label="SelectMgr'i Dökümünü Al" name="Dump SelectMgr"/> <menu_item_call label="Envanterin Dökümünü Al" name="Dump Inventory"/> <menu_item_call label="Zamanlayıcıların Dökümünü Al" name="Dump Timers"/> diff --git a/indra/newview/skins/default/xui/tr/menu_wearing_tab.xml b/indra/newview/skins/default/xui/tr/menu_wearing_tab.xml index 9796546559..1db95c17e1 100644 --- a/indra/newview/skins/default/xui/tr/menu_wearing_tab.xml +++ b/indra/newview/skins/default/xui/tr/menu_wearing_tab.xml @@ -3,4 +3,6 @@ <menu_item_call label="Çıkar" name="take_off"/> <menu_item_call label="Ayır" name="detach"/> <menu_item_call label="Dış Görünümü Düzenle" name="edit"/> + <menu_item_call label="Düzenle" name="edit_item"/> + <menu_item_call label="Orijinali Göster" name="show_original"/> </context_menu> diff --git a/indra/newview/skins/default/xui/tr/mime_types.xml b/indra/newview/skins/default/xui/tr/mime_types.xml index fa554d34fc..5b13b0059a 100644 --- a/indra/newview/skins/default/xui/tr/mime_types.xml +++ b/indra/newview/skins/default/xui/tr/mime_types.xml @@ -57,6 +57,11 @@ Gerçek Zamanlı Akış </label> </scheme> + <scheme name="libvlc"> + <label name="libvlc_label"> + LibVLC destekli ortam + </label> + </scheme> <mimetype name="blank"> <label name="blank_label"> - Hiçbiri - @@ -202,6 +207,11 @@ Film (MP4) </label> </mimetype> + <mimetype name="application/octet-stream"> + <label name="video/octet-stream"> + Film + </label> + </mimetype> <mimetype name="video/quicktime"> <label name="video/quicktime_label"> Film (QuickTime) diff --git a/indra/newview/skins/default/xui/tr/notifications.xml b/indra/newview/skins/default/xui/tr/notifications.xml index fb38486a9e..0f222d49cc 100644 --- a/indra/newview/skins/default/xui/tr/notifications.xml +++ b/indra/newview/skins/default/xui/tr/notifications.xml @@ -330,6 +330,9 @@ Bu yeteneklerin artık bu rolde bulunmasını istemiyorsanız, onları hemen dev [COUNT] üyeyi grubun yasaklı listesine eklemek üzeresiniz. <usetemplate ignoretext="Gruptan birden çok üyenin yasaklanmasını doğrulayın" name="okcancelignore" notext="İptal" yestext="Yasakla"/> </notification> + <notification name="GroupBanUserOnBanlist"> + Bazı sakinlere, gruptan çıkartıldıkları için davetiye gönderilmedi. + </notification> <notification name="AttachmentDrop"> Aksesuarınızı çıkarmak üzeresiniz. Devam etmek istediğinize emin misiniz? @@ -457,6 +460,12 @@ Ortamı sadece bir yüze yerleştirmek için, Yüz Seç'i seçin ve ardınd <notification name="ErrorEncodingSnapshot"> Anlık görüntü kodlanırken hata oluştu. </notification> + <notification name="ErrorPhotoCannotAfford"> + Envanterinize bir fotoğraf kaydedebilmek için [COST] L$ paraya ihtiyacınız var. L$ satın alabilir veya bunun yerine fotoğrafı bilgisayarınıza kaydedebilirsiniz. + </notification> + <notification name="ErrorTextureCannotAfford"> + Envanterinize bir doku kaydedebilmek için [COST] L$ paraya ihtiyacınız var. L$ satın alabilir veya bunun yerine fotoğrafı bilgisayarınıza kaydedebilirsiniz. + </notification> <notification name="ErrorUploadingPostcard"> Aşağıdaki nedenden dolayı, anlık görüntü gönderilirken bir sorun oluştu: [REASON] </notification> @@ -575,6 +584,10 @@ Not: Bu işlem önbelleği temizleyecek. Not kartı silinsin mi? <usetemplate name="okcancelbuttons" notext="İptal" yestext="Tamam"/> </notification> + <notification name="LoadPreviousReportScreenshot"> + Raporunuz için önceki anlık görüntüyü kullanmak ister misiniz? + <usetemplate name="okcancelbuttons" notext="İptal" yestext="Tamam"/> + </notification> <notification name="GestureSaveFailedTooManySteps"> Mimik kaydedilemedi. Bu mimikte çok fazla adım var. @@ -635,30 +648,12 @@ Daha fazla bilgi için [_URL] adresini ziyaret etmek ister misiniz? </url> <usetemplate ignoretext="Bilgisayar donanımım desteklenmiyor" name="okcancelignore" notext="Hayır" yestext="Evet"/> </notification> - <notification name="IntelOldDriver"> - Grafik yonganız için muhtemelen daha yeni bir sürücü mevcut. Grafik sürücüleri güncellemek performansınızı kayda değer şekilde artırabilir. - - Sürücü güncellemeleri için [_URL] adresini ziyaret etmek ister misiniz? - <url name="url"> - http://www.intel.com/p/en_US/support/detect/graphics - </url> - <usetemplate ignoretext="Grafik sürücüm güncel değil" name="okcancelignore" notext="Hayır" yestext="Evet"/> - </notification> - <notification name="AMDOldDriver"> + <notification name="OldGPUDriver"> Grafik yonganız için muhtemelen daha yeni bir sürücü mevcut. Grafik sürücüleri güncellemek performansınızı kayda değer şekilde artırabilir. - Sürücü güncellemeleri için [_URL] adresini ziyaret etmek ister misiniz? + Sürücü güncellemesi olup olmadığına bakmak için [URL] adresini ziyaret etmek ister misiniz? <url name="url"> - http://support.amd.com/us/Pages/AMDSupportHub.aspx - </url> - <usetemplate ignoretext="Grafik sürücüm güncel değil" name="okcancelignore" notext="Hayır" yestext="Evet"/> - </notification> - <notification name="NVIDIAOldDriver"> - Grafik yonganız için muhtemelen daha yeni bir sürücü mevcut. Grafik sürücüleri güncellemek performansınızı kayda değer şekilde artırabilir. - - Sürücü güncellemeleri için [_URL] adresini ziyaret etmek ister misiniz? - <url name="url"> - http://www.nvidia.com/Download/index.aspx?lang=en-us + [URL] </url> <usetemplate ignoretext="Grafik sürücüm güncel değil" name="okcancelignore" notext="Hayır" yestext="Evet"/> </notification> @@ -749,6 +744,9 @@ L$ satın alma ile ilgili bilgi edinmek için [_URL] adresine gidilsin mi? </url> <usetemplate name="okcancelbuttons" notext="İptal" yestext="Tamam"/> </notification> + <notification name="MuteLimitReached"> + [MUTE_LIMIT] giriş limitine ulaştığınız için, engelleme listesine yeni giriş eklenemiyor. + </notification> <notification name="UnableToLinkObjects"> Bu [COUNT] nesne birbirine bağlanamıyor. En fazla [MAX] nesneyi birbirine bağlayabilirsiniz. @@ -1379,6 +1377,11 @@ Yeni bir ana konum ayarlamak isteyebilirsiniz. </notification> <notification name="AgentComplexity"> [https://community.secondlife.com/t5/English-Knowledge-Base/Avatar-Rendering-Complexity/ta-p/2967838 avatar complexity] düzeyiniz [AGENT_COMPLEXITY]. + <usetemplate ignoretext="Avatar karmaşıklık seviyem değişince beni uyar" name="notifyignore"/> + </notification> + <notification name="HUDComplexityWarning"> + [HUD_REASON], büyük olasılıkla performansınızı olumsuz etkiliyor. + <usetemplate ignoretext="BÜG karmaşıklık seviyem çok yükselince beni uyar" name="notifyignore"/> </notification> <notification name="FirstRun"> [APP_NAME] yüklemesi tamamlandı. @@ -1470,6 +1473,10 @@ Lütfen sadece bir nesne seçin ve tekrar deneyin. Bu bölgedeki tüm Sakinler ana konumlarına ışınlansın mı? <usetemplate name="okcancelbuttons" notext="İptal" yestext="Tamam"/> </notification> + <notification name="ChangeObjectBonusFactor"> + Bir bölgede binalar inşa edildikten sonra nesne bonusunun azaltılması nesnelerin iade edilmesine veya silinmesine neden olabilir. Nesne bonusunu değiştirmek istediğinize emin misiniz? + <usetemplate ignoretext="Nesne bonusu faktörünü değiştirmeyi doğrulayın" name="okcancelignore" notext="İptal" yestext="Tamam"/> + </notification> <notification name="EstateObjectReturn"> [USER_NAME] kullanıcısının sahip olduğu tüm nesneleri iade etmek istediğinize emin misiniz? <usetemplate name="okcancelbuttons" notext="İptal" yestext="Tamam"/> @@ -1517,6 +1524,9 @@ Lütfen sadece bir nesne seçin ve tekrar deneyin. <notification name="OwnerCanNotBeDenied"> Gayrimenkul sahibi, gayrimenkulün 'Yasaklı Sakin' listesine eklenemez. </notification> + <notification name="ProblemAddingEstateManagerBanned"> + Engellenmiş sakin, gayrimenkul yöneticisi listesine eklenemez. + </notification> <notification name="CanNotChangeAppearanceUntilLoaded"> Giysi ve şekil yüklenene kadar görünüm değiştirilemez. </notification> @@ -1691,6 +1701,10 @@ En yeni özellikleri ve düzeltmeleri görmek için sabırsızlanıyorsanız Alt Bu içeriği görüntülemek için Web tarayıcınızı açmak istiyor musunuz? <usetemplate ignoretext="Bir web sayfasını görüntülemek için tarayıcımı başlat" name="okcancelignore" notext="İptal" yestext="Tamam"/> </notification> + <notification name="SystemUIScaleFactorChanged"> + Sistem kullanıcı arayüzü faktörü son çalıştırmadan bu yana değişti. Kullanıcı arayüzü büyüklük değiştirme ayarları sayfasını açmak istiyor musunuz? + <usetemplate name="okcancelbuttons" notext="İptal" yestext="Tamam"/> + </notification> <notification name="WebLaunchJoinNow"> Hesabınızı yönetmek için [http://secondlife.com/account/ Kontrol Paneli] adresine gidilsin mi? <usetemplate ignoretext="Hesabımı yönetmek için tarayıcımı başlat" name="okcancelignore" notext="İptal" yestext="Tamam"/> @@ -1730,10 +1744,17 @@ En yeni özellikleri ve düzeltmeleri görmek için sabırsızlanıyorsanız Alt Gruptan ayrılmak istiyor musunuz? <usetemplate name="okcancelbuttons" notext="İptal" yestext="Tamam"/> </notification> + <notification name="GroupDepart"> + "[group_name]" grubundan ayrıldınız. + </notification> <notification name="OwnerCannotLeaveGroup"> Gruptan ayrılınamıyor. Gruptan ayrılamazsınız çünkü grubun son sahibisiniz. Lütfen önce sahip rolüne başka bir üye atayın. <usetemplate name="okbutton" yestext="Tamam"/> </notification> + <notification name="GroupDepartError"> + Gruptan ayrılınamıyor. + <usetemplate name="okbutton" yestext="Tamam"/> + </notification> <notification name="ConfirmKick"> Tüm Sakinleri GERÇEKTEN ağ dışına çıkarmak istiyor musunuz? <usetemplate name="okcancelbuttons" notext="İptal Et" yestext="Tüm Sakinleri Çıkar"/> @@ -2131,6 +2152,10 @@ Binlerce bölgeyi değiştirecek ve alan sunucusunu kesintiye uğratacaktır. Çok fazla prim seçilmiş. Lütfen [MAX_PRIM_COUNT] ya da daha az prim seçin ve tekrar deneyin <usetemplate name="okbutton" yestext="Tamam"/> </notification> + <notification name="TooManyScriptsSelected"> + Seçili nesnelerde çok fazla komut dosyası var. Lütfen daha az nesne seçip tekrar deneyin + <usetemplate name="okbutton" yestext="Tamam"/> + </notification> <notification name="ProblemImportingEstateCovenant"> Gayrimenkul sözleşmesi içeriye aktarılırken problem oluştu. <usetemplate name="okbutton" yestext="Tamam"/> @@ -2298,6 +2323,10 @@ Envanter öğesi/öğeleri taşınsın mı? Ödeme başarısız: nesne bulunamadı. <usetemplate name="okbutton" yestext="Tamam"/> </notification> + <notification name="PaymentBlockedButtonMismatch"> + Ödeme durduruldu: Ödenen fiyat, bu nesne için belirtilen ödeme düğmelerinden hiçbiriyle eşleşmiyor + <usetemplate name="okbutton" yestext="Tamam"/> + </notification> <notification name="OpenObjectCannotCopy"> Bu nesne içinde kopyalama izniniz olan bir öğe yok. </notification> @@ -2333,6 +2362,11 @@ Bu eylemi geri alamazsınız. Bu, geniş bir bağlantı kümeleri seçimi. Bağlantıyı kaldırırsanız tekrar bağlayamayabilirsiniz. Tedbiren, envanterinizdeki bağlantı kümelerinin bir kopyasını almayı isteyebilirsiniz. <usetemplate ignoretext="Bir bağlantı kümesinin bağının kaldırılmasını onayla" name="okcancelignore" notext="İptal" yestext="Bağlantıyı Kopar"/> </notification> + <notification name="HelpReportAbuseConfirm"> + Bu konuyu bize bildirmek için zaman ayırdığınız için teşekkür ederiz. +Raporunuzda olası ihlalleri inceleyip gerekli önlemleri alacağız. + <usetemplate name="okbutton" yestext="Tamam"/> + </notification> <notification name="HelpReportAbuseSelectCategory"> Lütfen bu kötüye kullanım bildirimi için bir kategori seçin. Kategori seçimi, kötüye kullanım bildirimlerini dosyalamamıza ve işleme almamıza yardımcı olmaktadır. @@ -2762,6 +2796,10 @@ Burada uçamazsınız. <notification name="PathfindingDirty"> Bu bölgede bekleyen yol bulma değişiklikleri var. Eğer oluşturma haklarına sahipseniz, “Bölgeyi yeniden kaydet” düğmesine tıklayarak bölgeyi yeniden kaydedebilirsiniz. </notification> + <notification name="PathfindingDirtyRebake"> + Bu bölgede bekleyen yol bulma değişiklikleri var. Eğer oluşturma haklarına sahipseniz, “Bölgeyi yeniden kaydet” düğmesine tıklayarak bölgeyi yeniden kaydedebilirsiniz. + <usetemplate name="okbutton" yestext="Bölgeyi yeniden kaydet"/> + </notification> <notification name="DynamicPathfindingDisabled"> Bu bölgede dinamik yol bulma etkin değil. Yol bulma LSL çağrılarını kullanan komut dosyalı nesneler, bu bölgede beklendiiği gibi çalışmayabilir. </notification> @@ -3268,11 +3306,13 @@ Güvenliğiniz için birkaç saniye engellenecek. Görünüm XML olarak [PATH] konumuna kaydedildi </notification> <notification name="AppearanceToXMLFailed"> - Görünüm XML olarak kaydedilemedi. - icon="notifytip.tga" - name="PresetNotDeleted" - type="notifytip"> -[NAME] ön ayarı silinirken hata oluştu. + Görünüm XML'e kaydedilemedi. + </notification> + <notification name="PresetNotSaved"> + Ön ayar ([NAME]) kaydedilirken hata oluştu. + </notification> + <notification name="PresetNotDeleted"> + Ön ayar ([NAME]) silinirken hata oluştu. </notification> <notification name="UnableToFindHelpTopic"> Bu öğe için yardım başlığı bulunamıyor. @@ -3482,13 +3522,6 @@ Görünümünüzü döndürmek için dünya üzerindeki herhangi bir yeri tıkla <notification name="ForceQuitDueToLowMemory"> Yetersiz bellek nedeniyle SL 30 saniye içerisinde kapanacak. </notification> - <notification name="PopupAttempt"> - Açılır bir pencerenin açılması engellendi. - <form name="form"> - <ignore name="ignore" text="Tüm açılır pencerelere izin ver"/> - <button name="open" text="Açılır pencereyi aç"/> - </form> - </notification> <notification name="SOCKS_NOT_PERMITTED"> SOCKS 5 proxy'si "[HOST]:[PORT]" bağlantıyı reddetti; kural kümesi izin vermiyor. <usetemplate name="okbutton" yestext="Tamam"/> @@ -3859,6 +3892,9 @@ Lütfen bir dakika sonra tekrar deneyin. <notification name="CantMoveObjectParcelResources"> [REGION_NAME] bölgesinde '[OBJECT_NAME]' nesnesi [OBJ_POSITION] konumuna hareket ettirilemiyor, çünkü bu parselde bu nesne için yeterli kaynak yok. </notification> + <notification name="NoParcelPermsNoObject"> + Bu parsele erişiminiz olmadığı için kopyalama işlemi yapılamadı. + </notification> <notification name="CantMoveObjectRegionVersion"> [REGION_NAME] bölgesinde '[OBJECT_NAME]' nesnesi [OBJ_POSITION] konumuna hareket ettirilemiyor çünkü bölgede çalıştırılan eski versiyon, bölge değiştirme üzerinden bu nesnenin alınmasını desteklemiyor. </notification> @@ -3871,6 +3907,10 @@ Lütfen bir dakika sonra tekrar deneyin. <notification name="NoPermModifyObject"> Bu nesneyi değiştirme izniniz yok </notification> + <notification name="TooMuchObjectInventorySelected"> + Büyük envanterli çok fazla nesne seçildi. Lütfen daha az nesne seçip tekrar deneyin. + <usetemplate name="okbutton" yestext="Tamam"/> + </notification> <notification name="CantEnablePhysObjContributesToNav"> Navmesh'e katkıda bulunan bir nesne için fizik etkinleştirilemez. </notification> @@ -3907,6 +3947,12 @@ Lütfen bir dakika sonra tekrar deneyin. <notification name="CantSaveModifyAttachment"> Nesne içeriklerine kaydedilemedi: Bu, aksesuar izinlerini değiştirmeyi gerektirirdi. </notification> + <notification name="AttachmentHasTooMuchInventory"> + Aksesuarlarınızda çok fazla envanter olduğu için daha fazlası eklenemiyor. + </notification> + <notification name="IllegalAttachment"> + Aksesuar avatarda var olmayan bir noktaya karşılık geliyor. Bunun yerine göğüs kısmına eklendi. + </notification> <notification name="TooManyScripts"> Çok fazla komut dosyası. </notification> @@ -3999,6 +4045,12 @@ Lütfen bir dakika sonra tekrar deneyin. <notification name="TeleportedByObjectUnknownUser"> Bilinmeyen bir sahibi olan '[OBJECT_NAME]' nesnesi tarafından ışınlandınız. </notification> + <notification name="StandDeniedByObject"> + "[OBJECT_NAME]" şu anda durmanıza izin vermeyecek. + </notification> + <notification name="ResitDeniedByObject"> + "[OBJECT_NAME]" şu anda koltuğunuzu değiştirmenize izin vermeyecek. + </notification> <notification name="CantCreateObjectRegionFull"> Talep edilen nesne oluşturulamıyor. Bölge dolu. </notification> @@ -4080,9 +4132,6 @@ Lütfen bir dakika sonra tekrar deneyin. <notification name="CantAttachNotEnoughScriptResources"> Nesneyi iliştirmek için yeterli komut dosyası kaynağı mevcut değil! </notification> - <notification name="IllegalAttachment"> - Aksesuar avatarda var olmayan bir noktaya karşılık geliyor. Bunun yerine göğüs kısmına eklendi. - </notification> <notification name="CantDropItemTrialUser"> Buraya nesne düşüremezsiniz; Ücretsiz Deneme alanını deneyin. </notification> @@ -4298,6 +4347,9 @@ Daha küçük bir arazi parçası seçmeyi deneyin. <notification name="CantTransfterMoneyRegionDisabled"> Nesnelere para transferleri bölgede şu anda devre dışı bırakılmış durumda. </notification> + <notification name="DroppedMoneyTransferRequest"> + Sistem yüklemesi nedeniyle, ödeme yapılamıyor. + </notification> <notification name="CantPayNoAgent"> Kime ödeme yapılacağı belirlenemedi. </notification> @@ -4333,4 +4385,8 @@ Daha küçük bir arazi parçası seçmeyi deneyin. Sohbet geçmişi dosyası önceki işlemi gerçekleştirmekle meşgul. Lütfen bir kaç dakika sonra tekrar deneyin veya başka bir kişiyle sohbet etmeyi deneyin. <usetemplate name="okbutton" yestext="Tamam"/> </notification> + <notification name="OutfitPhotoLoadError"> + [REASON] + <usetemplate name="okbutton" yestext="Tamam"/> + </notification> </notifications> diff --git a/indra/newview/skins/default/xui/tr/panel_outfits_inventory.xml b/indra/newview/skins/default/xui/tr/panel_outfits_inventory.xml index 550f7ebf10..c7d3d0dfed 100644 --- a/indra/newview/skins/default/xui/tr/panel_outfits_inventory.xml +++ b/indra/newview/skins/default/xui/tr/panel_outfits_inventory.xml @@ -7,6 +7,7 @@ Seçilen öğeleri giy </panel.string> <tab_container name="appearance_tabs"> + <panel label="DIŞ GÖRÜNÜM GALERİSİ" name="outfit_gallery_tab"/> <panel label="DIŞ GÖRÜNÜMLERİM" name="outfitslist_tab"/> <panel label="GİYİLEN" name="cof_tab"/> </tab_container> diff --git a/indra/newview/skins/default/xui/tr/panel_outfits_wearing.xml b/indra/newview/skins/default/xui/tr/panel_outfits_wearing.xml index 462926738f..e5a6d83166 100644 --- a/indra/newview/skins/default/xui/tr/panel_outfits_wearing.xml +++ b/indra/newview/skins/default/xui/tr/panel_outfits_wearing.xml @@ -1,5 +1,12 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <panel name="Wearing"> + <panel.string name="no_attachments"> + Giyilen aksesuar yok. + </panel.string> + <accordion name="wearables_accordion"> + <accordion_tab name="tab_wearables" title="Giyilebilir Öğeler"/> + <accordion_tab name="tab_temp_attachments" title="Geçici aksesuarlar"/> + </accordion> <panel name="bottom_panel"> <menu_button name="options_gear_btn" tool_tip="İlave seçenekleri göster"/> </panel> diff --git a/indra/newview/skins/default/xui/tr/panel_preferences_graphics1.xml b/indra/newview/skins/default/xui/tr/panel_preferences_graphics1.xml index 9cfa7d61f4..235a90a245 100644 --- a/indra/newview/skins/default/xui/tr/panel_preferences_graphics1.xml +++ b/indra/newview/skins/default/xui/tr/panel_preferences_graphics1.xml @@ -24,7 +24,7 @@ <text name="BetterText"> Daha iyi </text> - <slider label="Avatarın Maksimum Karmaşıklığı:" name="IndirectMaxComplexity" tool_tip="Görsel olarak karmaşık bir avatarın hangi noktadan itibaren JellyDolll olarak çizileceğini kontrol eder"/> + <slider label="Avatarın Maksimum Karmaşıklığı:" name="IndirectMaxComplexity" tool_tip="Görsel olarak karmaşık bir avatarın ne zaman JellyDoll olarak çizileceğini belirler"/> <text name="IndirectMaxComplexityText"> 0 </text> diff --git a/indra/newview/skins/default/xui/tr/panel_preferences_setup.xml b/indra/newview/skins/default/xui/tr/panel_preferences_setup.xml index 8f74c8ef7e..39a7ce9973 100644 --- a/indra/newview/skins/default/xui/tr/panel_preferences_setup.xml +++ b/indra/newview/skins/default/xui/tr/panel_preferences_setup.xml @@ -30,6 +30,7 @@ <combo_box.item label="Güncellemeleri manuel olarak indirip yükleyeceğim" name="Install_manual"/> </combo_box> <check_box label="Sürüm adaylarına güncelleme yapmaya gönüllü" name="update_willing_to_test"/> + <check_box label="Güncellemeden sonra Sürüm Notlarını göster" name="update_show_release_notes"/> <text name="Proxy Settings:"> Proxy Ayarları: </text> diff --git a/indra/newview/skins/default/xui/tr/strings.xml b/indra/newview/skins/default/xui/tr/strings.xml index 6aad65da22..7b4bf1fca6 100644 --- a/indra/newview/skins/default/xui/tr/strings.xml +++ b/indra/newview/skins/default/xui/tr/strings.xml @@ -61,17 +61,34 @@ Grafik Kartı: [GRAPHICS_CARD] <string name="AboutDriver"> Windows Grafik Sürücüsü Sürümü: [GRAPHICS_DRIVER_VERSION] </string> + <string name="AboutOGL"> + OpenGL Sürümü: [OPENGL_VERSION] + </string> + <string name="AboutSettings"> + Pencere büyüklüğü: [WINDOW_WIDTH]x[WINDOW_HEIGHT] +Font Büyüklüğü Ayarı: [FONT_SIZE_ADJUSTMENT] pt +Kullanıcı Arayüzü Ölçekleme: [UI_SCALE] +Çizme mesafesi: [DRAW_DISTANCE] m +Bant genişliği: [NET_BANDWITH] kbit/sn +Ayrıntı seviyesi faktörü: [LOD_FACTOR] +İşleme kalitesi: [RENDER_QUALITY] / 7 +Gelişmiş Aydınlatma Modeli: [GPU_SHADERS] +Doku belleği: [TEXTURE_MEMORY]MB +VFS (önbellek) oluşturma zamanı: [VFS_TIME] + </string> <string name="AboutLibs"> - OpenGL Sürümü [OPENGL_VERSION] - -J2C Kod Çözücü Sürümü: [J2C_VERSION] + J2C Kod Çözücü Sürümü: [J2C_VERSION] Ses Sürücüsü Sürümü: [AUDIO_DRIVER_VERSION] LLCEFLib/CEF Sürümü: [LLCEFLIB_VERSION] -Ses Sunucu Sürümü: [VOICE_VERSION] +LibVLC Sürümü: [LIBVLC_VERSION] +Ses Sunucusu Sürümü: [VOICE_VERSION] </string> <string name="AboutTraffic"> Kaybolan Paketler: [PACKETS_LOST,number,0]/[PACKETS_IN,number,0] ([PACKETS_PCT,number,1]%) </string> + <string name="AboutTime"> + [month, datetime, slt] [day, datetime, slt] [year, datetime, slt] [hour, datetime, slt]:[min, datetime, slt]:[second,datetime,slt] + </string> <string name="ErrorFetchingServerReleaseNotesURL"> Sunucu sürümü notları URL'si alınırken hata oluştu. </string> @@ -1086,6 +1103,9 @@ Lütfen bir dakika içerisinde tekrar oturum açmayı deneyin. <string name="TeleportYourAgent"> Sizi ışınlama </string> + <string name="ForceSitAvatar"> + Avatarınızı oturmaya zorlayın + </string> <string name="NotConnected"> Bağlı Değil </string> @@ -1934,6 +1954,27 @@ Lütfen bir dakika içerisinde tekrar oturum açmayı deneyin. <string name="av_render_anyone"> Çevrenizdeki kimse sizi işleyemeyebilir. </string> + <string name="hud_description_total"> + BÜG'niz + </string> + <string name="hud_name_with_joint"> + [OBJ_NAME] ([JNT_NAME] üzerinde) + </string> + <string name="hud_render_memory_warning"> + [HUD_DETAILS] yüksek miktarda doku belleği kullanıyor + </string> + <string name="hud_render_cost_warning"> + [HUD_DETAILS] çok sayıda pahalı nesne ve doku içeriyor + </string> + <string name="hud_render_heavy_textures_warning"> + [HUD_DETAILS] çok sayıda büyük doku içeriyor + </string> + <string name="hud_render_cramped_warning"> + [HUD_DETAILS] çok fazla nesne içeriyor + </string> + <string name="hud_render_textures_warning"> + [HUD_DETAILS] çok fazla doku içeriyor + </string> <string name="AgeYearsA"> [COUNT] yıl </string> @@ -2093,6 +2134,9 @@ Lütfen bir dakika içerisinde tekrar oturum açmayı deneyin. <string name="ObjectOutOfRange"> Komut dosyası (nesne kapsam dışı) </string> + <string name="ScriptWasDeleted"> + Komut Dosyası (envanterden silindi) + </string> <string name="GodToolsObjectOwnedBy"> [OWNER] mülkiyetindeki [OBJECT] nesnesi </string> @@ -2705,6 +2749,15 @@ Lütfen bir dakika içerisinde tekrar oturum açmayı deneyin. <string name="Play Media"> Ortamı Oynat/Durdur </string> + <string name="IntelDriverPage"> + http://www.intel.com/p/en_US/support/detect/graphics + </string> + <string name="NvidiaDriverPage"> + http://www.nvidia.com/Download/index.aspx?lang=en-us + </string> + <string name="AMDDriverPage"> + http://support.amd.com/us/Pages/AMDSupportHub.aspx + </string> <string name="MBCmdLineError"> Komut satırı ayrıştırılırken bir hata oluştu. Lütfen bakınız: http://wiki.secondlife.com/wiki/Client_parameters @@ -4480,12 +4533,18 @@ Bu iletiyi almaya devam ederseniz, lütfen [SUPPORT_SITE] bölümüne başvurun. <string name="paid_you_ldollars"> [NAME] size [REASON] L$[AMOUNT] ödedi. </string> + <string name="paid_you_ldollars_gift"> + [NAME] size [AMOUNT] L$ ödedi: [REASON] + </string> <string name="paid_you_ldollars_no_reason"> [NAME] size L$[AMOUNT] ödedi. </string> <string name="you_paid_ldollars"> [NAME]'e [REASON] L$[AMOUNT] ödediniz. </string> + <string name="you_paid_ldollars_gift"> + [NAME] adlı kullanıcıya [AMOUNT] L$ ödediniz. [REASON] + </string> <string name="you_paid_ldollars_no_info"> L$[AMOUNT] ödediniz. </string> @@ -4498,6 +4557,9 @@ Bu iletiyi almaya devam ederseniz, lütfen [SUPPORT_SITE] bölümüne başvurun. <string name="you_paid_failure_ldollars"> [REASON] [NAME]'e L$[AMOUNT] ödeyemediniz. </string> + <string name="you_paid_failure_ldollars_gift"> + [NAME] adlı kullanıcıya [AMOUNT] L$ ödeyemediniz. [REASON] + </string> <string name="you_paid_failure_ldollars_no_info"> L$[AMOUNT] ödeyemediniz. </string> @@ -4822,6 +4884,15 @@ Bu iletiyi almaya devam ederseniz, lütfen [SUPPORT_SITE] bölümüne başvurun. <string name="texture_load_dimensions_error"> [WIDTH]*[HEIGHT] çözünürlüğünden büyük görüntüler yüklenemez </string> + <string name="outfit_photo_load_dimensions_error"> + Maksimum dış görünüm fotoğrafı büyüklüğü: [WIDTH]*[HEIGHT]. Lütfen büyüklüğü değiştirin veya başka bir görüntü kullanın + </string> + <string name="outfit_photo_select_dimensions_error"> + Maksimum dış görünüm fotoğrafı büyüklüğü: [WIDTH]*[HEIGHT]. Lütfen başka bir doku seçin + </string> + <string name="outfit_photo_verify_dimensions_error"> + Fotoğraf boyutları doğrulanamıyor. Fotoğraf boyutu seçicide görüntülenene kadar lütfen bekleyin + </string> <string name="words_separator" value=","/> <string name="server_is_down"> Tüm çabalarımıza rağmen beklenmeyen bir hata meydana geldi. @@ -5338,6 +5409,9 @@ Düzenleyici yolunu çift tırnakla çevrelemeyi deneyin. <string name="Command_Profile_Label"> Profil </string> + <string name="Command_Report_Abuse_Label"> + Kötüye Kullanımı Bildir + </string> <string name="Command_Search_Label"> Ara </string> @@ -5428,6 +5502,9 @@ Düzenleyici yolunu çift tırnakla çevrelemeyi deneyin. <string name="Command_Profile_Tooltip"> Profilinizi düzenleyin veya görüntüleyin </string> + <string name="Command_Report_Abuse_Tooltip"> + Kötüye Kullanımı Bildir + </string> <string name="Command_Search_Tooltip"> Yerler, etkinlikler ve kişiler bulmak </string> diff --git a/indra/newview/skins/default/xui/zh/floater_model_preview.xml b/indra/newview/skins/default/xui/zh/floater_model_preview.xml index 817b1af88d..4223b76d90 100644 --- a/indra/newview/skins/default/xui/zh/floater_model_preview.xml +++ b/indra/newview/skins/default/xui/zh/floater_model_preview.xml @@ -245,6 +245,7 @@ </text> <check_box label="包含表皮重量" name="upload_skin"/> <check_box label="包含接點位置" name="upload_joints"/> + <check_box label="若接點位置已定義,就鎖住比例" name="lock_scale_if_joint_position"/> <text name="pelvis_offset_label"> Z 偏距(升高或降低化身): </text> diff --git a/indra/newview/skins/default/xui/zh/floater_pay.xml b/indra/newview/skins/default/xui/zh/floater_pay.xml index 026ead9574..5eb0fe5362 100644 --- a/indra/newview/skins/default/xui/zh/floater_pay.xml +++ b/indra/newview/skins/default/xui/zh/floater_pay.xml @@ -1,9 +1,20 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <floater name="Give Money"> - <string name="payee_group">支付群組</string> - <string name="payee_resident">支付居民</string> - <text name="paying_text">你正在支付:</text> - <text name="payee_name">測試一個長度非常非常非常長的名稱,檢查是否被切斷</text> + <string name="payee_group"> + 支付群組 + </string> + <string name="payee_resident"> + 支付居民 + </string> + <text name="paying_text"> + 你正在支付: + </text> + <text name="payee_name"> + 測試一個長度非常非常非常長的名稱,檢查是否被切斷 + </text> + <text name="payment_message_label"> + 說明(可留空): + </text> <panel label="搜尋" name="PatternsPanel"> <button label="支付 L$ 1" label_selected="支付 L$ 1" name="fastpay 1"/> <button label="支付 L$ 5" label_selected="支付 L$ 5" name="fastpay 5"/> @@ -11,7 +22,9 @@ <button label="支付 L$ 20" label_selected="支付 L$ 20" name="fastpay 20"/> </panel> <panel label="搜尋" name="InputPanel"> - <text name="amount text">其他金額:</text> + <text name="amount text"> + 其他金額: + </text> <button label="支付" label_selected="支付" name="pay btn"/> <button label="取消" label_selected="取消" name="cancel btn"/> </panel> diff --git a/indra/newview/skins/default/xui/zh/floater_preferences_graphics_advanced.xml b/indra/newview/skins/default/xui/zh/floater_preferences_graphics_advanced.xml index 2a00bb6172..bbc16dd7e5 100644 --- a/indra/newview/skins/default/xui/zh/floater_preferences_graphics_advanced.xml +++ b/indra/newview/skins/default/xui/zh/floater_preferences_graphics_advanced.xml @@ -15,7 +15,7 @@ <text name="AvatarText"> 化身 </text> - <slider label="最大複雜度:" name="IndirectMaxComplexity" tool_tip="控制在何時機下讓複雜化身呈像為 JellyDoll"/> + <slider label="最大複雜度:" name="IndirectMaxComplexity" tool_tip="控制在何時機下讓複雜化身呈像為「JellyDoll」"/> <text name="IndirectMaxComplexityText"> 0 </text> diff --git a/indra/newview/skins/default/xui/zh/floater_script_queue.xml b/indra/newview/skins/default/xui/zh/floater_script_queue.xml index 7c253aa74c..22af0dc585 100644 --- a/indra/newview/skins/default/xui/zh/floater_script_queue.xml +++ b/indra/newview/skins/default/xui/zh/floater_script_queue.xml @@ -15,5 +15,11 @@ <floater.string name="NotRunning"> 非執行中 </floater.string> + <floater.string name="Timeout"> + 逾時:[OBJECT_NAME] + </floater.string> + <floater.string name="LoadingObjInv"> + 正載入以下物項的收納區:[OBJECT_NAME] + </floater.string> <button label="關閉" label_selected="關閉" name="close"/> </floater> diff --git a/indra/newview/skins/default/xui/zh/floater_web_content.xml b/indra/newview/skins/default/xui/zh/floater_web_content.xml index be6bf8bb27..5b7bcd9916 100644 --- a/indra/newview/skins/default/xui/zh/floater_web_content.xml +++ b/indra/newview/skins/default/xui/zh/floater_web_content.xml @@ -10,5 +10,9 @@ <icon name="media_secure_lock_flag" tool_tip="加密的瀏覽"/> <button name="popexternal" tool_tip="在你的桌面瀏覽器中開啟目前的 URL 位址"/> </layout_panel> + <layout_panel name="debug_controls"> + <button name="web_test_home_page" tool_tip="網路測試主頁"/> + <button name="VLC Plugin Test" tool_tip="MPEG4影片測試"/> + </layout_panel> </layout_stack> </floater> diff --git a/indra/newview/skins/default/xui/zh/menu_attachment_other.xml b/indra/newview/skins/default/xui/zh/menu_attachment_other.xml index 69bc4e7632..f104caeeaf 100644 --- a/indra/newview/skins/default/xui/zh/menu_attachment_other.xml +++ b/indra/newview/skins/default/xui/zh/menu_attachment_other.xml @@ -7,6 +7,7 @@ <menu_item_call label="通話" name="Call"/> <menu_item_call label="邀請加入群組" name="Invite..."/> <menu_item_call label="重設骨架" name="Reset Skeleton"/> + <menu_item_call label="重設骨架和動作" name="Reset Skeleton And Animations"/> <menu_item_call label="封鎖" name="Avatar Mute"/> <menu_item_call label="回報" name="abuse"/> <menu_item_call label="凍結" name="Freeze..."/> diff --git a/indra/newview/skins/default/xui/zh/menu_attachment_self.xml b/indra/newview/skins/default/xui/zh/menu_attachment_self.xml index cf56d7c86b..040ec94aad 100644 --- a/indra/newview/skins/default/xui/zh/menu_attachment_self.xml +++ b/indra/newview/skins/default/xui/zh/menu_attachment_self.xml @@ -10,6 +10,7 @@ <menu_item_call label="編輯我的體形" name="Edit My Shape"/> <menu_item_call label="懸浮高度" name="Hover Height"/> <menu_item_call label="重設骨架" name="Reset Skeleton"/> + <menu_item_call label="重設骨架和動作" name="Reset Skeleton And Animations"/> <menu_item_call label="我的朋友" name="Friends..."/> <menu_item_call label="我的群組" name="Groups..."/> <menu_item_call label="我的個人檔案" name="Profile..."/> diff --git a/indra/newview/skins/default/xui/zh/menu_avatar_other.xml b/indra/newview/skins/default/xui/zh/menu_avatar_other.xml index b58ec1d8cb..2e9ef8bcf1 100644 --- a/indra/newview/skins/default/xui/zh/menu_avatar_other.xml +++ b/indra/newview/skins/default/xui/zh/menu_avatar_other.xml @@ -7,6 +7,7 @@ <menu_item_call label="通話" name="Call"/> <menu_item_call label="邀請加入群組" name="Invite..."/> <menu_item_call label="重設骨架" name="Reset Skeleton"/> + <menu_item_call label="重設骨架和動作" name="Reset Skeleton And Animations"/> <menu_item_call label="封鎖" name="Avatar Mute"/> <menu_item_call label="回報" name="abuse"/> <menu_item_call label="凍結" name="Freeze..."/> diff --git a/indra/newview/skins/default/xui/zh/menu_avatar_self.xml b/indra/newview/skins/default/xui/zh/menu_avatar_self.xml index e2ddb57307..bad17a11b8 100644 --- a/indra/newview/skins/default/xui/zh/menu_avatar_self.xml +++ b/indra/newview/skins/default/xui/zh/menu_avatar_self.xml @@ -27,6 +27,7 @@ <menu_item_call label="編輯我的體形" name="Edit My Shape"/> <menu_item_call label="懸浮高度" name="Hover Height"/> <menu_item_call label="重設骨架" name="Reset Skeleton"/> + <menu_item_call label="重設骨架和動作" name="Reset Skeleton And Animations"/> <menu_item_call label="我的朋友" name="Friends..."/> <menu_item_call label="我的群組" name="Groups..."/> <menu_item_call label="我的個人檔案" name="Profile..."/> diff --git a/indra/newview/skins/default/xui/zh/menu_login.xml b/indra/newview/skins/default/xui/zh/menu_login.xml index 7ef9240e83..8dd89db7ba 100644 --- a/indra/newview/skins/default/xui/zh/menu_login.xml +++ b/indra/newview/skins/default/xui/zh/menu_login.xml @@ -20,13 +20,12 @@ <menu_item_check label="顯示除錯選單" name="Show Debug Menu"/> <menu label="除錯" name="Debug"> <menu_item_call label="顯示除錯設定" name="Debug Settings"/> - <menu_item_call label="UI / 顏色 設定" name="UI/Color Settings"/> <menu_item_call label="XUI 預覽工具" name="UI Preview Tool"/> <menu label="UI 測試" name="UI Tests"/> <menu_item_call label="設定視窗大小..." name="Set Window Size..."/> <menu_item_call label="顯示 TOS" name="TOS"/> <menu_item_call label="顯示嚴重訊息" name="Critical"/> - <menu_item_call label="網頁內容浮動視窗除錯測試" name="Web Content Floater Debug Test"/> + <menu_item_call label="媒體瀏覽器" name="Media Browser"/> <menu label="設定記錄細節" name="Set Logging Level"> <menu_item_check label="除錯" name="Debug"/> <menu_item_check label="資訊" name="Info"/> diff --git a/indra/newview/skins/default/xui/zh/menu_object_icon.xml b/indra/newview/skins/default/xui/zh/menu_object_icon.xml index 9655732f2e..d0a3457ae8 100644 --- a/indra/newview/skins/default/xui/zh/menu_object_icon.xml +++ b/indra/newview/skins/default/xui/zh/menu_object_icon.xml @@ -2,6 +2,7 @@ <menu name="Object Icon Menu"> <menu_item_call label="物件檔案..." name="Object Profile"/> <menu_item_call label="封鎖…" name="Block"/> + <menu_item_call label="解除封鎖" name="Unblock"/> <menu_item_call label="顯示在地圖上" name="show_on_map"/> <menu_item_call label="瞬間傳送到物件位置" name="teleport_to_object"/> </menu> diff --git a/indra/newview/skins/default/xui/zh/menu_outfit_gear.xml b/indra/newview/skins/default/xui/zh/menu_outfit_gear.xml index 258d0d6b20..124598a098 100644 --- a/indra/newview/skins/default/xui/zh/menu_outfit_gear.xml +++ b/indra/newview/skins/default/xui/zh/menu_outfit_gear.xml @@ -3,6 +3,10 @@ <menu_item_call label="穿上 - 取代目前裝扮" name="wear"/> <menu_item_call label="穿上 - 添加到目前裝扮" name="wear_add"/> <menu_item_call label="脫下 - 由目前裝扮移除" name="take_off"/> + <menu_item_call label="上傳相片(L$10)" name="upload_photo"/> + <menu_item_call label="選擇相片" name="select_photo"/> + <menu_item_call label="拍攝快照" name="take_snapshot"/> + <menu_item_call label="移除相片" name="remove_photo"/> <menu label="新衣服" name="New Clothes"> <menu_item_call label="新襯衫" name="New Shirt"/> <menu_item_call label="新褲子" name="New Pants"/> @@ -27,4 +31,5 @@ <menu_item_call label="摺疊全部資料夾" name="collapse"/> <menu_item_call label="裝扮更名" name="rename"/> <menu_item_call label="刪除裝扮" name="delete_outfit"/> + <menu_item_check label="總是由名稱排序資料夾" name="sort_folders_by_name"/> </toggleable_menu> diff --git a/indra/newview/skins/default/xui/zh/menu_people_friends_view.xml b/indra/newview/skins/default/xui/zh/menu_people_friends_view.xml index 4251238fd9..9e27520d36 100644 --- a/indra/newview/skins/default/xui/zh/menu_people_friends_view.xml +++ b/indra/newview/skins/default/xui/zh/menu_people_friends_view.xml @@ -4,5 +4,6 @@ <menu_item_check label="依狀態排序" name="sort_status"/> <menu_item_check label="察看人群圖示" name="view_icons"/> <menu_item_check label="察看許可權限" name="view_permissions"/> + <menu_item_check label="隱藏使用者名稱" name="view_usernames"/> <menu_item_check label="檢視交談記錄……" name="view_conversation"/> </toggleable_menu> diff --git a/indra/newview/skins/default/xui/zh/menu_people_nearby.xml b/indra/newview/skins/default/xui/zh/menu_people_nearby.xml index d25adaf8fb..4ad755c028 100644 --- a/indra/newview/skins/default/xui/zh/menu_people_nearby.xml +++ b/indra/newview/skins/default/xui/zh/menu_people_nearby.xml @@ -13,4 +13,6 @@ <menu_item_call label="分享" name="share"/> <menu_item_call label="支付" name="pay"/> <menu_item_check label="封鎖/不再封鎖" name="block_unblock"/> + <menu_item_call label="凍結" name="freeze"/> + <menu_item_call label="踢出" name="eject"/> </context_menu> diff --git a/indra/newview/skins/default/xui/zh/menu_people_nearby_view.xml b/indra/newview/skins/default/xui/zh/menu_people_nearby_view.xml index 9bc5638472..9c82e20497 100644 --- a/indra/newview/skins/default/xui/zh/menu_people_nearby_view.xml +++ b/indra/newview/skins/default/xui/zh/menu_people_nearby_view.xml @@ -5,4 +5,5 @@ <menu_item_check label="依距離排序" name="sort_distance"/> <menu_item_check label="察看人群圖示" name="view_icons"/> <menu_item_check label="察看地圖" name="view_map"/> + <menu_item_check label="隱藏使用者名稱" name="view_usernames"/> </toggleable_menu> diff --git a/indra/newview/skins/default/xui/zh/menu_url_objectim.xml b/indra/newview/skins/default/xui/zh/menu_url_objectim.xml index ac366f92ef..c830e5554b 100644 --- a/indra/newview/skins/default/xui/zh/menu_url_objectim.xml +++ b/indra/newview/skins/default/xui/zh/menu_url_objectim.xml @@ -2,6 +2,7 @@ <context_menu name="Url Popup"> <menu_item_call label="物件檔案..." name="show_object"/> <menu_item_call label="封鎖…" name="block_object"/> + <menu_item_call label="解除封鎖" name="unblock_object"/> <menu_item_call label="顯示在地圖上" name="show_on_map"/> <menu_item_call label="瞬間傳送到物件位置" name="teleport_to_object"/> <menu_item_call label="覆製物件名稱到剪貼簿" name="url_copy_label"/> diff --git a/indra/newview/skins/default/xui/zh/menu_viewer.xml b/indra/newview/skins/default/xui/zh/menu_viewer.xml index f2971491ac..3868646050 100644 --- a/indra/newview/skins/default/xui/zh/menu_viewer.xml +++ b/indra/newview/skins/default/xui/zh/menu_viewer.xml @@ -111,11 +111,11 @@ <menu_item_call label="聯結" name="Link"/> <menu_item_call label="取消聯結" name="Unlink"/> <menu_item_check label="編輯聯結部位" name="Edit Linked Parts"/> - <menu label="選擇聯結部位" name="Select Linked Parts"> - <menu_item_call label="選擇下一部位" name="Select Next Part"/> - <menu_item_call label="選擇上一部位" name="Select Previous Part"/> - <menu_item_call label="包括下一部位" name="Include Next Part"/> - <menu_item_call label="包括上一部位" name="Include Previous Part"/> + <menu label="選擇元素" name="Select Elements"> + <menu_item_call label="選擇下一部位或臉" name="Select Next Part or Face"/> + <menu_item_call label="選擇上一部位或臉" name="Select Previous Part or Face"/> + <menu_item_call label="包括下一部位或臉" name="Include Next Part or Face"/> + <menu_item_call label="包括上一部位或臉" name="Include Previous Part or Face"/> </menu> <menu_item_call label="聯結集…" name="pathfinding_linkset_menu_item"/> <menu_item_call label="聚焦於所選部位" name="Focus on Selection"/> @@ -366,8 +366,7 @@ <menu_item_call label="傾印地區物件快取" name="Dump Region Object Cache"/> </menu> <menu label="使用者界面" name="UI"> - <menu_item_call label="媒體瀏覽器測試" name="Web Browser Test"/> - <menu_item_call label="網頁內容瀏覽器" name="Web Content Browser"/> + <menu_item_call label="媒體瀏覽器" name="Media Browser"/> <menu_item_call label="傾印 SelectMgr" name="Dump SelectMgr"/> <menu_item_call label="傾印收納區" name="Dump Inventory"/> <menu_item_call label="傾印碼錶" name="Dump Timers"/> diff --git a/indra/newview/skins/default/xui/zh/menu_wearing_tab.xml b/indra/newview/skins/default/xui/zh/menu_wearing_tab.xml index c7d2853995..dc9adcbd25 100644 --- a/indra/newview/skins/default/xui/zh/menu_wearing_tab.xml +++ b/indra/newview/skins/default/xui/zh/menu_wearing_tab.xml @@ -3,4 +3,6 @@ <menu_item_call label="脫下" name="take_off"/> <menu_item_call label="卸下" name="detach"/> <menu_item_call label="編輯裝扮" name="edit"/> + <menu_item_call label="編輯" name="edit_item"/> + <menu_item_call label="顯示原件" name="show_original"/> </context_menu> diff --git a/indra/newview/skins/default/xui/zh/mime_types.xml b/indra/newview/skins/default/xui/zh/mime_types.xml index 8967475abb..f4b6822778 100644 --- a/indra/newview/skins/default/xui/zh/mime_types.xml +++ b/indra/newview/skins/default/xui/zh/mime_types.xml @@ -57,6 +57,11 @@ 即時串流 </label> </scheme> + <scheme name="libvlc"> + <label name="libvlc_label"> + LibVLC支持的媒體 + </label> + </scheme> <mimetype name="blank"> <label name="blank_label"> - 無 - @@ -202,6 +207,11 @@ 視頻(MP4) </label> </mimetype> + <mimetype name="application/octet-stream"> + <label name="video/octet-stream"> + 影片 + </label> + </mimetype> <mimetype name="video/quicktime"> <label name="video/quicktime_label"> 視頻(QuickTime) diff --git a/indra/newview/skins/default/xui/zh/notifications.xml b/indra/newview/skins/default/xui/zh/notifications.xml index 463afab1c0..5c794afd65 100644 --- a/indra/newview/skins/default/xui/zh/notifications.xml +++ b/indra/newview/skins/default/xui/zh/notifications.xml @@ -330,6 +330,9 @@ 你即將禁止[COUNT]個人留在群組。 <usetemplate ignoretext="確定要禁止多名成員續留此群組" name="okcancelignore" notext="取消" yestext="禁止"/> </notification> + <notification name="GroupBanUserOnBanlist"> + 有些居民因為被封鎖所以沒有收到邀請。 + </notification> <notification name="AttachmentDrop"> 你即將卸除你的附件。 你確定你要繼續? @@ -457,6 +460,12 @@ <notification name="ErrorEncodingSnapshot"> 為快照編碼時出錯。 </notification> + <notification name="ErrorPhotoCannotAfford"> + 你需要L$[COST]才能把照片存入你的收納區。 你可以購買L$,或者不存入收納區,而把相片存到你的電腦。 + </notification> + <notification name="ErrorTextureCannotAfford"> + 你需要L$[COST]才能把材質存入你的收納區。 你可以購買L$,或者不存入收納區,而把相片存到你的電腦。 + </notification> <notification name="ErrorUploadingPostcard"> 發送快照時出問題,原因:[REASON] </notification> @@ -575,6 +584,10 @@ 刪除記事卡? <usetemplate name="okcancelbuttons" notext="取消" yestext="確定"/> </notification> + <notification name="LoadPreviousReportScreenshot"> + 你要使用之前的螢幕截圖來舉報嗎? + <usetemplate name="okcancelbuttons" notext="取消" yestext="確定"/> + </notification> <notification name="GestureSaveFailedTooManySteps"> 姿勢儲存失敗。 這個姿勢步驟太多。 @@ -635,32 +648,14 @@ </url> <usetemplate ignoretext="我的電腦硬體並不支援" name="okcancelignore" notext="否" yestext="是"/> </notification> - <notification name="IntelOldDriver"> - 你的顯示卡很可能有新版的驅動程式。 更新顯示驅動程式會大幅改善性能。 - - 前往 [_URL] 察看是否有新版驅動程式? - <url name="url"> - http://www.intel.com/p/en_US/support/detect/graphics - </url> - <usetemplate ignoretext="我的顯示驅動程式太老舊" name="okcancelignore" notext="否" yestext="是"/> - </notification> - <notification name="AMDOldDriver"> - 你的顯示卡很可能有新版的驅動程式。 更新顯示驅動程式會大幅改善性能。 - - 前往 [_URL] 察看是否有新版驅動程式? - <url name="url"> - http://support.amd.com/us/Pages/AMDSupportHub.aspx - </url> - <usetemplate ignoretext="我的顯示驅動程式太老舊" name="okcancelignore" notext="否" yestext="是"/> - </notification> - <notification name="NVIDIAOldDriver"> + <notification name="OldGPUDriver"> 你的顯示卡很可能有新版的驅動程式。 更新顯示驅動程式會大幅改善性能。 - 前往 [_URL] 察看是否有新版驅動程式? + 前往[URL]察看是否有新版驅動程式? <url name="url"> - http://www.nvidia.com/Download/index.aspx?lang=tw + [URL] </url> - <usetemplate ignoretext="我的顯示驅動程式太老舊" name="okcancelignore" notext="否" yestext="是"/> + <usetemplate ignoretext="我的顯示驅動程式太老舊" name="okcancelignore" notext="取消" yestext="是"/> </notification> <notification name="UnknownGPU"> 你的系統含有一個 [APP_NAME] 無法辨認的顯像卡。 @@ -749,6 +744,9 @@ </url> <usetemplate name="okcancelbuttons" notext="取消" yestext="確定"/> </notification> + <notification name="MuteLimitReached"> + 封鎖清單名額無法增加,因為你已達[MUTE_LIMIT]名的上限。 + </notification> <notification name="UnableToLinkObjects"> 無法聯結這 [COUNT] 個物件。 你最多可以聯結 [MAX] 個物件。 @@ -1372,6 +1370,11 @@ </notification> <notification name="AgentComplexity"> 你的[https://community.secondlife.com/t5/English-Knowledge-Base/Avatar-Rendering-Complexity/ta-p/2967838 化身複雜度]是[AGENT_COMPLEXITY]。 + <usetemplate ignoretext="發出警告,告知我化身複雜度有了改變" name="notifyignore"/> + </notification> + <notification name="HUDComplexityWarning"> + [HUD_REASON],可能負面影響你的性能。 + <usetemplate ignoretext="警告我HUD的複雜度是否可能過高" name="notifyignore"/> </notification> <notification name="FirstRun"> [APP_NAME] 安裝完成。 @@ -1463,6 +1466,10 @@ SHA1 指紋:[MD5_DIGEST] 確定要強制瞬間傳送這地區所有居民回家? <usetemplate name="okcancelbuttons" notext="取消" yestext="確定"/> </notification> + <notification name="ChangeObjectBonusFactor"> + 在地區內完成建製後再降低物件負荷倍數,可能導致物件被送返或刪除。 繼續要變更物件負荷倍數? + <usetemplate ignoretext="確定變更物件負荷倍數" name="okcancelignore" notext="取消" yestext="確定"/> + </notification> <notification name="EstateObjectReturn"> 你確定要送返 [USER_NAME] 所擁有的物件? <usetemplate name="okcancelbuttons" notext="取消" yestext="確定"/> @@ -1510,6 +1517,9 @@ SHA1 指紋:[MD5_DIGEST] <notification name="OwnerCanNotBeDenied"> 無法添加領地所有人到領地的 '被封鎖的居民' 名單中。 </notification> + <notification name="ProblemAddingEstateManagerBanned"> + 無法把被封鎖的居民加入領地的管理人名單。 + </notification> <notification name="CanNotChangeAppearanceUntilLoaded"> 無法變更外觀,直到服裝與體形下載完畢。 </notification> @@ -1681,6 +1691,10 @@ SHA1 指紋:[MD5_DIGEST] 你確定要開啟網頁瀏覽器去察看這個內容? <usetemplate ignoretext="啟動我的網頁瀏覽器去察看網頁" name="okcancelignore" notext="取消" yestext="確定"/> </notification> + <notification name="SystemUIScaleFactorChanged"> + 系統使用者介面的尺寸倍數自從上次執行後已經改變。 你想要開啟使用者介面尺寸調整的設定頁嗎? + <usetemplate name="okcancelbuttons" notext="取消" yestext="確定"/> + </notification> <notification name="WebLaunchJoinNow"> 前往你的[http://secondlife.com/account/ 塗鴉牆]以進行管理你的帳戶? <usetemplate ignoretext="啟動我的瀏覽器以管理我的帳戶" name="okcancelignore" notext="取消" yestext="確定"/> @@ -1720,10 +1734,17 @@ SHA1 指紋:[MD5_DIGEST] 是否要離開群組? <usetemplate name="okcancelbuttons" notext="取消" yestext="確定"/> </notification> + <notification name="GroupDepart"> + 你已經離開「[group_name]」群組。 + </notification> <notification name="OwnerCannotLeaveGroup"> 無法離開群組。 你是此群組僅存的所有人,不得離開群組。 請先把所有人職銜指派給另一人。 <usetemplate name="okbutton" yestext="確定"/> </notification> + <notification name="GroupDepartError"> + 無法離開群組。 + <usetemplate name="okbutton" yestext="確定"/> + </notification> <notification name="ConfirmKick"> 你確定要踢出這網格內的全部居民? <usetemplate name="okcancelbuttons" notext="取消" yestext="踢出全部居民"/> @@ -2121,6 +2142,10 @@ SHA1 指紋:[MD5_DIGEST] 選擇了太多項的幾何元件。 請至多選擇 [MAX_PRIM_COUNT] 項幾何元件,再試一次。 <usetemplate name="okbutton" yestext="確定"/> </notification> + <notification name="TooManyScriptsSelected"> + 選取的物件腳本太多。 請減少選取的物件數,再試一次。 + <usetemplate name="okbutton" yestext="確定"/> + </notification> <notification name="ProblemImportingEstateCovenant"> 匯入領地契約時出問題。 <usetemplate name="okbutton" yestext="確定"/> @@ -2288,6 +2313,10 @@ SHA1 指紋:[MD5_DIGEST] 付款失敗:找不到物件。 <usetemplate name="okbutton" yestext="確定"/> </notification> + <notification name="PaymentBlockedButtonMismatch"> + 付款中止:所付價格與此物件設定的任何付款按鈕皆不相符。 + <usetemplate name="okbutton" yestext="確定"/> + </notification> <notification name="OpenObjectCannotCopy"> 這物件中沒有任何准許你複製的物項。 </notification> @@ -2323,6 +2352,12 @@ SHA1 指紋:[MD5_DIGEST] 這是一組包含聯結集的巨大選取項。 一旦你取消它的聯結,很可能不能再重新聯結。 為防萬一,建議你把聯結集複製到收納區。 <usetemplate ignoretext="取消聯結集聯結時,跟我確認" name="okcancelignore" notext="取消" yestext="取消聯結"/> </notification> + <notification name="HelpReportAbuseConfirm"> + 謝謝你撥冗提報問題。 +我們會查核你的舉報內容決定有無違規情事,並 +採取適當行動。 + <usetemplate name="okbutton" yestext="確定"/> + </notification> <notification name="HelpReportAbuseSelectCategory"> 請選擇適合這次違規舉報的類別。 選對類別可以幫助我們歸類並處理違規舉報。 @@ -2751,6 +2786,10 @@ SHA1 指紋:[MD5_DIGEST] <notification name="PathfindingDirty"> 這地區的尋徑功能有所變更,待儲存。 如果你有建製權,你可以點按「重新產出地區」按鈕重新產出地區。 </notification> + <notification name="PathfindingDirtyRebake"> + 這地區的尋徑功能有所變更,待儲存。 如果你有建製權,你可以點按「重新產出地區」按鈕重新產出地區。 + <usetemplate name="okbutton" yestext="重新產出地區"/> + </notification> <notification name="DynamicPathfindingDisabled"> 這地區並未啟用動態尋徑。 使用尋徑 LSL 呼叫的帶腳本物件,在此地區可能無法正常運作。 </notification> @@ -3258,10 +3297,12 @@ SHA1 指紋:[MD5_DIGEST] </notification> <notification name="AppearanceToXMLFailed"> 將外觀存為XML失敗。 - icon="notifytip.tga" - name="PresetNotDeleted" - type="notifytip"> -刪除預設名稱[NAME]時出錯。 + </notification> + <notification name="PresetNotSaved"> + 儲存預設名稱[NAME]時出錯。 + </notification> + <notification name="PresetNotDeleted"> + 刪除預設名稱[NAME]時出錯。 </notification> <notification name="UnableToFindHelpTopic"> 找不到這個元件的幫助主題。 @@ -3471,13 +3512,6 @@ SHA1 指紋:[MD5_DIGEST] <notification name="ForceQuitDueToLowMemory"> 記憶體不足,第二人生將於 30 秒後關閉離開。 </notification> - <notification name="PopupAttempt"> - 一個突顯式視窗開啟時被阻擋。 - <form name="form"> - <ignore name="ignore" text="啟用全部的突顯式視窗"/> - <button name="open" text="開啟突顯式視窗"/> - </form> - </notification> <notification name="SOCKS_NOT_PERMITTED"> SOCKS 5 代理伺服器 "[HOST]:[PORT]" 拒絕連通,規則集不允許。 <usetemplate name="okbutton" yestext="確定"/> @@ -3852,6 +3886,9 @@ SHA1 指紋:[MD5_DIGEST] 無法移動 '[OBJECT_NAME]' 物件到 [REGION_NAME] 地區的 [OBJ_POSITION],因為此地段資源不足容納此物件。 </notification> + <notification name="NoParcelPermsNoObject"> + 複製失敗,因爲你無權出入該地段。 + </notification> <notification name="CantMoveObjectRegionVersion"> 無法移動 '[OBJECT_NAME]' 物件到 [REGION_NAME] 地區的 [OBJ_POSITION],因為該地區所執行的軟體版本過舊,不支援跨地區接受這個物件。 @@ -3867,6 +3904,10 @@ SHA1 指紋:[MD5_DIGEST] <notification name="NoPermModifyObject"> 你無權變更該物件 </notification> + <notification name="TooMuchObjectInventorySelected"> + 選取的物件包含太多大的收納區。 請減少選取的物件數,再試一次。 + <usetemplate name="okbutton" yestext="確定"/> + </notification> <notification name="CantEnablePhysObjContributesToNav"> 對導航網面有貢獻的物件,無法啟用物理。 </notification> @@ -3903,6 +3944,12 @@ SHA1 指紋:[MD5_DIGEST] <notification name="CantSaveModifyAttachment"> 無法儲存到物件內容:這麼做將修改附件的權限。 </notification> + <notification name="AttachmentHasTooMuchInventory"> + 你的附件已經包含太多收納區內容,不能再增加。 + </notification> + <notification name="IllegalAttachment"> + 這個附件要求了化身上不存在的點。 因此已將該附件附著到胸部。 + </notification> <notification name="TooManyScripts"> 腳本太多。 </notification> @@ -3995,6 +4042,12 @@ SHA1 指紋:[MD5_DIGEST] <notification name="TeleportedByObjectUnknownUser"> 你已成功被某未知用戶擁有的物件 '[OBJECT_NAME]' 瞬間傳送。 </notification> + <notification name="StandDeniedByObject"> + 「[OBJECT_NAME]」將使你無法在此時站立。 + </notification> + <notification name="ResitDeniedByObject"> + 「[OBJECT_NAME]」此時無法允許你改變座位。 + </notification> <notification name="CantCreateObjectRegionFull"> 無法建立要求的物件。 地區已滿載。 </notification> @@ -4076,9 +4129,6 @@ SHA1 指紋:[MD5_DIGEST] <notification name="CantAttachNotEnoughScriptResources"> 腳本資源不足,無法附著物件! </notification> - <notification name="IllegalAttachment"> - 這個附件要求了化身上不存在的點。 因此已將該附件附著到胸部。 - </notification> <notification name="CantDropItemTrialUser"> 你無法在此卸除物件,請到「自由嘗試」區域再試。 </notification> @@ -4294,6 +4344,9 @@ SHA1 指紋:[MD5_DIGEST] <notification name="CantTransfterMoneyRegionDisabled"> 此地區目前未啟用轉移金錢給物件的功能。 </notification> + <notification name="DroppedMoneyTransferRequest"> + 系統負荷太重,無法進行付款。 + </notification> <notification name="CantPayNoAgent"> 無法決定付款給誰。 </notification> @@ -4329,4 +4382,8 @@ SHA1 指紋:[MD5_DIGEST] 聊天紀錄檔案還在處理前一個動作。 請稍候再試,或請換一個聊天對象。 <usetemplate name="okbutton" yestext="確定"/> </notification> + <notification name="OutfitPhotoLoadError"> + [REASON] + <usetemplate name="okbutton" yestext="確定"/> + </notification> </notifications> diff --git a/indra/newview/skins/default/xui/zh/panel_outfits_inventory.xml b/indra/newview/skins/default/xui/zh/panel_outfits_inventory.xml index 8dd93543c0..9b9a79a509 100644 --- a/indra/newview/skins/default/xui/zh/panel_outfits_inventory.xml +++ b/indra/newview/skins/default/xui/zh/panel_outfits_inventory.xml @@ -7,6 +7,7 @@ 穿上所選擇的物件 </panel.string> <tab_container name="appearance_tabs"> + <panel label="裝扮陳列" name="outfit_gallery_tab"/> <panel label="我的裝扮" name="outfitslist_tab"/> <panel label="目前穿著" name="cof_tab"/> </tab_container> diff --git a/indra/newview/skins/default/xui/zh/panel_outfits_wearing.xml b/indra/newview/skins/default/xui/zh/panel_outfits_wearing.xml index 693cdcdeca..e3c62cfccf 100644 --- a/indra/newview/skins/default/xui/zh/panel_outfits_wearing.xml +++ b/indra/newview/skins/default/xui/zh/panel_outfits_wearing.xml @@ -1,5 +1,12 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <panel name="Wearing"> + <panel.string name="no_attachments"> + 未穿著任何附件。 + </panel.string> + <accordion name="wearables_accordion"> + <accordion_tab name="tab_wearables" title="可穿裝扮"/> + <accordion_tab name="tab_temp_attachments" title="暫時附件"/> + </accordion> <panel name="bottom_panel"> <menu_button name="options_gear_btn" tool_tip="顯示額外選項"/> </panel> diff --git a/indra/newview/skins/default/xui/zh/panel_preferences_graphics1.xml b/indra/newview/skins/default/xui/zh/panel_preferences_graphics1.xml index b5c36668f6..4eef624910 100644 --- a/indra/newview/skins/default/xui/zh/panel_preferences_graphics1.xml +++ b/indra/newview/skins/default/xui/zh/panel_preferences_graphics1.xml @@ -24,7 +24,7 @@ <text name="BetterText"> 最佳 </text> - <slider label="化身最大複雜度:" name="IndirectMaxComplexity" tool_tip="控制在何時機下讓複雜化身呈像為 JellyDoll"/> + <slider label="化身最大複雜度:" name="IndirectMaxComplexity" tool_tip="控制在何時機下讓複雜化身呈像為「JellyDoll」"/> <text name="IndirectMaxComplexityText"> 0 </text> diff --git a/indra/newview/skins/default/xui/zh/panel_preferences_setup.xml b/indra/newview/skins/default/xui/zh/panel_preferences_setup.xml index 942bd27140..bdf980218c 100644 --- a/indra/newview/skins/default/xui/zh/panel_preferences_setup.xml +++ b/indra/newview/skins/default/xui/zh/panel_preferences_setup.xml @@ -30,6 +30,7 @@ <combo_box.item label="讓我自己手動下載並安裝" name="Install_manual"/> </combo_box> <check_box label="願意在更新時搶先試用釋出候選版" name="update_willing_to_test"/> + <check_box label="更新後顯示發行記事" name="update_show_release_notes"/> <text name="Proxy Settings:"> 代理伺服器設定: </text> diff --git a/indra/newview/skins/default/xui/zh/strings.xml b/indra/newview/skins/default/xui/zh/strings.xml index 5ce5adf3f0..ec08c9f91e 100644 --- a/indra/newview/skins/default/xui/zh/strings.xml +++ b/indra/newview/skins/default/xui/zh/strings.xml @@ -61,17 +61,34 @@ <string name="AboutDriver"> Windows 顯示驅動程式版本:[GRAPHICS_DRIVER_VERSION] </string> + <string name="AboutOGL"> + OpenGL版本:[OPENGL_VERSION] + </string> + <string name="AboutSettings"> + 視窗大小:[WINDOW_WIDTH]x[WINDOW_HEIGHT] +字體大小調整:[FONT_SIZE_ADJUSTMENT]點 +使用者介面比例:[UI_SCALE] +描繪距離:[DRAW_DISTANCE]公尺 +頻寬:[NET_BANDWITH]千位元/秒 +細節層次率:[LOD_FACTOR] +呈像品質:[RENDER_QUALITY] / 7 +進階照明模型:[GPU_SHADERS] +材質記憶體:[TEXTURE_MEMORY]MB +VFS(快取)建立時間:[VFS_TIME] + </string> <string name="AboutLibs"> - OpenGL 版本:[OPENGL_VERSION] - -J2C 解碼器版本: [J2C_VERSION] + J2C 解碼器版本: [J2C_VERSION] 音效驅動程式版本: [AUDIO_DRIVER_VERSION] LLCEFLib/CEF版本:[LLCEFLIB_VERSION] +LibVLC版本:[LIBVLC_VERSION]N] 語音伺服器版本: [VOICE_VERSION] </string> <string name="AboutTraffic"> 封包丟失:[PACKETS_LOST,number,0]/[PACKETS_IN,number,0] ([PACKETS_PCT,number,1]%) </string> + <string name="AboutTime"> + [month, datetime, slt] [day, datetime, slt] [year, datetime, slt] [hour, datetime, slt]:[min, datetime, slt]:[second,datetime,slt] + </string> <string name="ErrorFetchingServerReleaseNotesURL"> 擷取伺服器版本說明 URL 時出錯。 </string> @@ -1081,6 +1098,9 @@ http://secondlife.com/viewer-access-faq <string name="TeleportYourAgent"> 瞬間傳送你本人 </string> + <string name="ForceSitAvatar"> + 強迫你的化身坐下 + </string> <string name="NotConnected"> 未聯接 </string> @@ -1929,6 +1949,27 @@ http://secondlife.com/viewer-access-faq <string name="av_render_anyone"> 你恐怕不能呈像給你周遭的任何人。 </string> + <string name="hud_description_total"> + 你的擡頭顯示 + </string> + <string name="hud_name_with_joint"> + [OBJ_NAME](穿戴於[JNT_NAME]) + </string> + <string name="hud_render_memory_warning"> + [HUD_DETAILS]使用了很多材質記憶體 + </string> + <string name="hud_render_cost_warning"> + [HUD_DETAILS]包含很多耗用性能的物件和材質 + </string> + <string name="hud_render_heavy_textures_warning"> + [HUD_DETAILS] 包含很多大的材質 + </string> + <string name="hud_render_cramped_warning"> + [HUD_DETAILS]包含過多物件 + </string> + <string name="hud_render_textures_warning"> + [HUD_DETAILS]包含太多材質 + </string> <string name="AgeYearsA"> [COUNT] 年 </string> @@ -2088,6 +2129,9 @@ http://secondlife.com/viewer-access-faq <string name="ObjectOutOfRange"> 腳本(物件超出範圍) </string> + <string name="ScriptWasDeleted"> + 腳本(已從收納區刪除) + </string> <string name="GodToolsObjectOwnedBy"> 物件 [OBJECT] 為 [OWNER] 所擁有 </string> @@ -2700,6 +2744,15 @@ http://secondlife.com/viewer-access-faq <string name="Play Media"> 播放/暫停媒體 </string> + <string name="IntelDriverPage"> + http://www.intel.com/p/en_US/support/detect/graphics + </string> + <string name="NvidiaDriverPage"> + http://www.nvidia.com/Download/index.aspx?lang=tw + </string> + <string name="AMDDriverPage"> + http://support.amd.com/us/Pages/AMDSupportHub.aspx + </string> <string name="MBCmdLineError"> 解析命令列時發現錯誤。 請參閱: http://wiki.secondlife.com/wiki/Client_parameters @@ -4475,12 +4528,18 @@ http://secondlife.com/viewer-access-faq <string name="paid_you_ldollars"> [NAME] 支付你 L$[AMOUNT]([REASON])。 </string> + <string name="paid_you_ldollars_gift"> + [NAME]支付你L$[AMOUNT]:([REASON]) + </string> <string name="paid_you_ldollars_no_reason"> [NAME] 支付你 L$[AMOUNT]。 </string> <string name="you_paid_ldollars"> 你支付 L$[AMOUNT] 給 [NAME]([REASON])。 </string> + <string name="you_paid_ldollars_gift"> + 你支付L$[AMOUNT]給[NAME]:[REASON] + </string> <string name="you_paid_ldollars_no_info"> 你支付了 L$[AMOUNT]。 </string> @@ -4493,6 +4552,9 @@ http://secondlife.com/viewer-access-faq <string name="you_paid_failure_ldollars"> 你支付 L$[AMOUNT] 給 [NAME] 時出錯:[REASON]。 </string> + <string name="you_paid_failure_ldollars_gift"> + 你支付L$[AMOUNT]給[NAME]時出錯:[REASON] + </string> <string name="you_paid_failure_ldollars_no_info"> 你支付 L$[AMOUNT] 時出錯。 </string> @@ -4819,6 +4881,15 @@ http://secondlife.com/viewer-access-faq <string name="texture_load_dimensions_error"> 無法載入圖像大於 [WIDTH]*[HEIGHT] </string> + <string name="outfit_photo_load_dimensions_error"> + 裝扮的最大照片大小是[WIDTH]*[HEIGHT]。 請變更尺寸或使用另一個圖像 + </string> + <string name="outfit_photo_select_dimensions_error"> + 裝扮的最大照片大小是[WIDTH]*[HEIGHT]。 請選擇另一個材質 + </string> + <string name="outfit_photo_verify_dimensions_error"> + 無法驗證相片尺寸。 請等挑選器顯示相片尺寸再試 + </string> <string name="words_separator" value=","/> <string name="server_is_down"> 儘管我們努力避免,還是發生意料外的錯誤。 @@ -5335,6 +5406,9 @@ http://secondlife.com/viewer-access-faq <string name="Command_Profile_Label"> 檔案 </string> + <string name="Command_Report_Abuse_Label"> + 違規舉報 + </string> <string name="Command_Search_Label"> 搜尋 </string> @@ -5425,6 +5499,9 @@ http://secondlife.com/viewer-access-faq <string name="Command_Profile_Tooltip"> 編輯或察看你的小檔案 </string> + <string name="Command_Report_Abuse_Tooltip"> + 違規舉報 + </string> <string name="Command_Search_Tooltip"> 尋找地點、活動、其他人 </string> diff --git a/indra/newview/tests/llremoteparcelrequest_test.cpp b/indra/newview/tests/llremoteparcelrequest_test.cpp index ea5014a59c..4f7f87b6b0 100644 --- a/indra/newview/tests/llremoteparcelrequest_test.cpp +++ b/indra/newview/tests/llremoteparcelrequest_test.cpp @@ -34,6 +34,7 @@ #include "../llagent.h" #include "message.h" #include "llurlentry.h" +#include "llpounceable.h" namespace { const LLUUID TEST_PARCEL_ID("11111111-1111-1111-1111-111111111111"); @@ -62,7 +63,7 @@ void LLMessageSystem::addUUID(char const *,LLUUID const &) { } void LLMessageSystem::addUUIDFast(char const *,LLUUID const &) { } void LLMessageSystem::nextBlockFast(char const *) { } void LLMessageSystem::newMessage(char const *) { } -LLMessageSystem * gMessageSystem; +LLPounceable<LLMessageSystem*, LLPounceableStatic> gMessageSystem; char const* const _PREHASH_AgentID = 0; // never dereferenced during this test char const* const _PREHASH_AgentData = 0; // never dereferenced during this test LLAgent gAgent; diff --git a/indra/newview/tests/test_llxmlrpc_peer.py b/indra/newview/tests/test_llxmlrpc_peer.py index 281b72a058..cff40aa4c2 100755 --- a/indra/newview/tests/test_llxmlrpc_peer.py +++ b/indra/newview/tests/test_llxmlrpc_peer.py @@ -31,15 +31,23 @@ $/LicenseInfo$ import os import sys -from threading import Thread from SimpleXMLRPCServer import SimpleXMLRPCServer mydir = os.path.dirname(__file__) # expected to be .../indra/newview/tests/ -sys.path.insert(0, os.path.join(mydir, os.pardir, os.pardir, "lib", "python")) -sys.path.insert(1, os.path.join(mydir, os.pardir, os.pardir, "llmessage", "tests")) +sys.path.insert(0, os.path.join(mydir, os.pardir, os.pardir, "llmessage", "tests")) from testrunner import freeport, run, debug class TestServer(SimpleXMLRPCServer): + # This server_bind() override is borrowed and simplified from + # BaseHTTPServer.HTTPServer.server_bind(): we want to capture the actual + # server port. BaseHTTPServer.HTTPServer.server_bind() stores the actual + # port in a server_port attribute, but SimpleXMLRPCServer isn't derived + # from HTTPServer. So do it ourselves. + def server_bind(self): + """Override server_bind to store the server port.""" + SimpleXMLRPCServer.server_bind(self) + self.server_port = self.socket.getsockname()[1] + def _dispatch(self, method, params): try: func = getattr(self, method) @@ -67,15 +75,21 @@ class TestServer(SimpleXMLRPCServer): pass if __name__ == "__main__": - # Instantiate a TestServer on the first free port in the specified port - # range. Doing this inline is better than in a daemon thread: if it blows - # up here, we'll get a traceback. If it blew up in some other thread, the - # traceback would get eaten and we'd run the subject test program anyway. - xmlrpcd, port = freeport(xrange(8000, 8020), - lambda port: TestServer(('127.0.0.1', port))) + # function to make a server with specified port + make_server = lambda port: TestServer(('127.0.0.1', port)) + + if not sys.platform.startswith("win"): + # Instantiate a TestServer on a port chosen by the runtime. + xmlrpcd = make_server(0) + else: + # "Then there's Windows" + # Instantiate a TestServer on the first free port in the specified + # port range. + xmlrpcd, port = freeport(xrange(8000, 8020), make_server) + # Pass the selected port number to the subject test program via the # environment. We don't want to impose requirements on the test program's # command-line parsing -- and anyway, for C++ integration tests, that's # performed in TUT code rather than our own. - os.environ["PORT"] = str(port) - sys.exit(run(server=Thread(name="xmlrpc", target=xmlrpcd.serve_forever), *sys.argv[1:])) + os.environ["PORT"] = str(xmlrpcd.server_port) + sys.exit(run(server_inst=xmlrpcd, *sys.argv[1:])) |