diff --git a/.hgtags b/.hgtags index b9cf8d6db2921e32f478bbfd2992a6810657b406..d7351006578a338106c310f2fb88d63d4e7f3132 100644 --- a/.hgtags +++ b/.hgtags @@ -211,3 +211,6 @@ e440cd1dfbd128d7d5467019e497f7f803640ad6 DRTVWR-95_3.2.0-beta1 e440cd1dfbd128d7d5467019e497f7f803640ad6 3.2.0-beta1 9bcc2b7176634254e501e3fb4c5b56c1f637852e DRTVWR-97_3.2.0-beta2 9bcc2b7176634254e501e3fb4c5b56c1f637852e 3.2.0-beta2 +2a13d30ee50ccfed50268238e36bb90d738ccc9e DRTVWR-98_3.2.0-beta3 +2a13d30ee50ccfed50268238e36bb90d738ccc9e 3.2.0-beta3 +c4911ec8cd81e676dfd2af438b3e065407a94a7a 3.2.1-start diff --git a/BuildParams b/BuildParams old mode 100644 new mode 100755 index 1c76b6f9351f8e7c28217077ee77531491da2e28..5068edb21f176a07125912d4e9a1f737d98cdac3 --- a/BuildParams +++ b/BuildParams @@ -190,4 +190,10 @@ simon_viewer-dev-private.public_build = false simon_viewer-dev-private.email_status_this_is_os = false +# ======================================== +# Vir +# ======================================== +vir-project-1.viewer_channel = "Second Life Release" +vir-project-1.login_channel = "Second Life Release" + # eof diff --git a/indra/llcommon/llversionviewer.h b/indra/llcommon/llversionviewer.h index aa37a03ef85e65feb940ef13af3023bffcc38e4c..fc1c1449da5ba2aba35db58d11cb54b0af40769f 100644 --- a/indra/llcommon/llversionviewer.h +++ b/indra/llcommon/llversionviewer.h @@ -29,7 +29,7 @@ const S32 LL_VERSION_MAJOR = 3; const S32 LL_VERSION_MINOR = 2; -const S32 LL_VERSION_PATCH = 1; +const S32 LL_VERSION_PATCH = 2; const S32 LL_VERSION_BUILD = 0; const char * const LL_CHANNEL = "Second Life Developer"; diff --git a/indra/llmath/lloctree.h b/indra/llmath/lloctree.h index e5ca47da698efca948d96cc28998790c0b6e9185..3c1ae45d6862680e64101f2683756791675ce034 100644 --- a/indra/llmath/lloctree.h +++ b/indra/llmath/lloctree.h @@ -681,7 +681,7 @@ class LLOctreeRoot : public LLOctreeNode<T> if (lt != 0x7) { - OCT_ERRS << "!!! ELEMENT EXCEEDS RANGE OF SPATIAL PARTITION !!!" << llendl; + //OCT_ERRS << "!!! ELEMENT EXCEEDS RANGE OF SPATIAL PARTITION !!!" << llendl; return false; } diff --git a/indra/llui/lldockablefloater.cpp b/indra/llui/lldockablefloater.cpp index aea58be12afaa3d6addcf5092ecbeca3fbce36bc..0fcd9373618968ccb72acd8e9870f7e123573b2c 100644 --- a/indra/llui/lldockablefloater.cpp +++ b/indra/llui/lldockablefloater.cpp @@ -239,8 +239,21 @@ void LLDockableFloater::setDockControl(LLDockControl* dockControl) setDocked(isDocked()); } -const LLUIImagePtr& LLDockableFloater::getDockTongue() +const LLUIImagePtr& LLDockableFloater::getDockTongue(LLDockControl::DocAt dock_side) { + switch(dock_side) + { + case LLDockControl::LEFT: + mDockTongue = LLUI::getUIImage("windows/Flyout_Left.png"); + break; + case LLDockControl::RIGHT: + mDockTongue = LLUI::getUIImage("windows/Flyout_Right.png"); + break; + default: + mDockTongue = LLUI::getUIImage("windows/Flyout_Pointer.png"); + break; + } + return mDockTongue; } diff --git a/indra/llui/lldockablefloater.h b/indra/llui/lldockablefloater.h index 8deb6c1159fa111ec0698b97c274b5cb6bf1aa9a..89c9852f4af3349fe8e3f4bd53ea889205954c15 100644 --- a/indra/llui/lldockablefloater.h +++ b/indra/llui/lldockablefloater.h @@ -113,6 +113,8 @@ class LLDockableFloater : public LLFloater bool getUniqueDocking() { return mUniqueDocking; } bool getUseTongue() { return mUseTongue; } + + void setUseTongue(bool use_tongue) { mUseTongue = use_tongue;} private: /** * Provides unique of dockable floater. @@ -122,7 +124,7 @@ class LLDockableFloater : public LLFloater protected: void setDockControl(LLDockControl* dockControl); - const LLUIImagePtr& getDockTongue(); + const LLUIImagePtr& getDockTongue(LLDockControl::DocAt dock_side = LLDockControl::TOP); // Checks if docking should be forced. // It may be useful e.g. if floater created in mouselook mode (see EXT-5609) diff --git a/indra/llui/lldockcontrol.cpp b/indra/llui/lldockcontrol.cpp index 6397bbd0dec8dc0a95fea7a3585c8597bd6311d8..af39e41fa6bd4898e652accdd2a409b48cd7970a 100644 --- a/indra/llui/lldockcontrol.cpp +++ b/indra/llui/lldockcontrol.cpp @@ -100,12 +100,16 @@ void LLDockControl::repositionDockable() if (!mDockWidget) return; LLRect dockRect = mDockWidget->calcScreenRect(); LLRect rootRect; + LLRect floater_rect = mDockableFloater->calcScreenRect(); mGetAllowedRectCallback(rootRect); - // recalculate dockable position if dock position changed, dock visibility changed, - // root view rect changed or recalculation is forced - if (mPrevDockRect != dockRect || mDockWidgetVisible != isDockVisible() - || mRootRect != rootRect || mRecalculateDocablePosition) + // recalculate dockable position if: + if (mPrevDockRect != dockRect //dock position changed + || mDockWidgetVisible != isDockVisible() //dock visibility changed + || mRootRect != rootRect //root view rect changed + || mFloaterRect != floater_rect //floater rect changed + || mRecalculateDockablePosition //recalculation is forced + ) { // undock dockable and off() if dock not visible if (!isDockVisible()) @@ -136,7 +140,8 @@ void LLDockControl::repositionDockable() mPrevDockRect = dockRect; mRootRect = rootRect; - mRecalculateDocablePosition = false; + mFloaterRect = floater_rect; + mRecalculateDockablePosition = false; mDockWidgetVisible = isDockVisible(); } } @@ -203,21 +208,33 @@ void LLDockControl::moveDockable() switch (mDockAt) { case LEFT: - x = dockRect.mLeft; - y = dockRect.mTop + mDockTongue->getHeight() + dockableRect.getHeight(); - // check is dockable inside root view rect - if (x < rootRect.mLeft) + + x = dockRect.mLeft - dockableRect.getWidth(); + y = dockRect.getCenterY() + dockableRect.getHeight() / 2; + + if (use_tongue) { - x = rootRect.mLeft; + x -= mDockTongue->getWidth(); } - if (x + dockableRect.getWidth() > rootRect.mRight) + + mDockTongueX = dockableRect.mRight; + mDockTongueY = dockableRect.getCenterY() - mDockTongue->getHeight() / 2; + + break; + + case RIGHT: + + x = dockRect.mRight; + y = dockRect.getCenterY() + dockableRect.getHeight() / 2; + + if (use_tongue) { - x = rootRect.mRight - dockableRect.getWidth(); + x += mDockTongue->getWidth(); } - - mDockTongueX = x + dockableRect.getWidth()/2 - mDockTongue->getWidth() / 2; - - mDockTongueY = dockRect.mTop; + + mDockTongueX = dockRect.mRight; + mDockTongueY = dockableRect.getCenterY() - mDockTongue->getHeight() / 2; + break; case TOP: @@ -315,13 +332,12 @@ void LLDockControl::moveDockable() dockableRect.setLeftTopAndSize(x, y, dockableRect.getWidth(), dockableRect.getHeight()); } + LLRect localDocableParentRect; - mDockableFloater->getParent()->screenRectToLocal(dockableRect, - &localDocableParentRect); - mDockableFloater->setRect(localDocableParentRect); - mDockableFloater->screenPointToLocal(mDockTongueX, mDockTongueY, - &mDockTongueX, &mDockTongueY); + mDockableFloater->getParent()->screenRectToLocal(dockableRect, &localDocableParentRect); + mDockableFloater->setRect(localDocableParentRect); + mDockableFloater->screenPointToLocal(mDockTongueX, mDockTongueY, &mDockTongueX, &mDockTongueY); } @@ -330,7 +346,7 @@ void LLDockControl::on() if (isDockVisible()) { mEnabled = true; - mRecalculateDocablePosition = true; + mRecalculateDockablePosition = true; } } @@ -341,7 +357,7 @@ void LLDockControl::off() void LLDockControl::forceRecalculatePosition() { - mRecalculateDocablePosition = true; + mRecalculateDockablePosition = true; } void LLDockControl::drawToungue() diff --git a/indra/llui/lldockcontrol.h b/indra/llui/lldockcontrol.h index 2e7359245f35f7ed5d20dae6dac4d7db4fbcdc6d..c9602011f654d3c5a92fb8ead6ad71bb5695fe5a 100644 --- a/indra/llui/lldockcontrol.h +++ b/indra/llui/lldockcontrol.h @@ -43,6 +43,7 @@ class LLDockControl { TOP, LEFT, + RIGHT, BOTTOM }; @@ -79,12 +80,13 @@ class LLDockControl private: get_allowed_rect_callback_t mGetAllowedRectCallback; bool mEnabled; - bool mRecalculateDocablePosition; + bool mRecalculateDockablePosition; bool mDockWidgetVisible; DocAt mDockAt; LLView* mDockWidget; LLRect mPrevDockRect; LLRect mRootRect; + LLRect mFloaterRect; LLFloater* mDockableFloater; LLUIImagePtr mDockTongue; S32 mDockTongueX; diff --git a/indra/llui/llfloater.cpp b/indra/llui/llfloater.cpp index 7100ea13a7ec4035d7e102e298e84faa92d7631e..432397d3e9fb0fa902ffded0768d305e3d195976 100644 --- a/indra/llui/llfloater.cpp +++ b/indra/llui/llfloater.cpp @@ -935,7 +935,7 @@ void LLFloater::applyPositioning(LLFloater* other) case LLFloaterEnums::OPEN_POSITIONING_CASCADE_GROUP: case LLFloaterEnums::OPEN_POSITIONING_CASCADING: - if (other != NULL) + if (other != NULL && other != this) { stackWith(*other); } @@ -1070,7 +1070,7 @@ void LLFloater::handleReshape(const LLRect& new_rect, bool by_user) const LLRect old_rect = getRect(); LLView::handleReshape(new_rect, by_user); - if (by_user) + if (by_user && !isMinimized()) { storeRectControl(); mOpenPositioning = LLFloaterEnums::OPEN_POSITIONING_NONE; diff --git a/indra/llui/lltoolbar.cpp b/indra/llui/lltoolbar.cpp index 515605200ed4fef1a3316601fa5a3797410fe136..287e3e2b41b4ec3d98e884fb05f19a9d46c0b2db 100644 --- a/indra/llui/lltoolbar.cpp +++ b/indra/llui/lltoolbar.cpp @@ -112,6 +112,10 @@ LLToolBar::LLToolBar(const LLToolBar::Params& p) mStartDragItemCallback(NULL), mHandleDragItemCallback(NULL), mHandleDropCallback(NULL), + mButtonAddSignal(NULL), + mButtonEnterSignal(NULL), + mButtonLeaveSignal(NULL), + mButtonRemoveSignal(NULL), mDragAndDropTarget(false) { mButtonParams[LLToolBarEnums::BTNTYPE_ICONS_WITH_TEXT] = p.button_icon_and_text; @@ -121,6 +125,10 @@ LLToolBar::LLToolBar(const LLToolBar::Params& p) LLToolBar::~LLToolBar() { delete mPopupMenuHandle.get(); + delete mButtonAddSignal; + delete mButtonEnterSignal; + delete mButtonLeaveSignal; + delete mButtonRemoveSignal; } void LLToolBar::createContextMenu() @@ -212,7 +220,6 @@ bool LLToolBar::addCommand(const LLCommandId& commandId, int rank) mButtonPanel->addChild(button); mButtonMap.insert(std::make_pair(commandId.uuid(), button)); - // Insert the command and button in the right place in their respective lists if ((rank >= mButtonCommands.size()) || (rank == RANK_NONE)) { @@ -238,6 +245,14 @@ bool LLToolBar::addCommand(const LLCommandId& commandId, int rank) mNeedsLayout = true; + updateLayoutAsNeeded(); + + + if (mButtonAddSignal) + { + (*mButtonAddSignal)(button); + } + return true; } @@ -264,6 +279,11 @@ int LLToolBar::removeCommand(const LLCommandId& commandId) ++rank; } + if (mButtonRemoveSignal) + { + (*mButtonRemoveSignal)(*it_button); + } + // Delete the button and erase the command and button records delete (*it_button); mButtonCommands.erase(it_command); @@ -352,6 +372,23 @@ bool LLToolBar::stopCommandInProgress(const LLCommandId& commandId) return (command_button != NULL); } +bool LLToolBar::flashCommand(const LLCommandId& commandId, bool flash) +{ + LLButton * command_button = NULL; + + if (commandId != LLCommandId::null) + { + command_id_map::iterator it = mButtonMap.find(commandId.uuid()); + if (it != mButtonMap.end()) + { + command_button = it->second; + command_button->setFlashing(flash ? TRUE : FALSE); + } + } + + return (command_button != NULL); +} + BOOL LLToolBar::handleRightMouseDown(S32 x, S32 y, MASK mask) { LLRect button_panel_rect; @@ -790,6 +827,11 @@ void LLToolBar::createButtons() { BOOST_FOREACH(LLToolBarButton* button, mButtons) { + if (mButtonRemoveSignal) + { + (*mButtonRemoveSignal)(button); + } + delete button; } mButtons.clear(); @@ -801,6 +843,11 @@ void LLToolBar::createButtons() mButtons.push_back(button); mButtonPanel->addChild(button); mButtonMap.insert(std::make_pair(command_id.uuid(), button)); + + if (mButtonAddSignal) + { + (*mButtonAddSignal)(button); + } } mNeedsLayout = true; } @@ -870,8 +917,7 @@ LLToolBarButton* LLToolBar::createButton(const LLCommandId& id) button->setCommitCallback(executeParam); } - - + // Set up "is running" query callback const std::string& isRunningFunction = commandp->isRunningFunctionName(); if (isRunningFunction.length() > 0) { @@ -898,6 +944,36 @@ LLToolBarButton* LLToolBar::createButton(const LLCommandId& id) return button; } +boost::signals2::connection connectSignal(LLToolBar::button_signal_t*& signal, const LLToolBar::button_signal_t::slot_type& cb) +{ + if (!signal) + { + signal = new LLToolBar::button_signal_t(); + } + + return signal->connect(cb); +} + +boost::signals2::connection LLToolBar::setButtonAddCallback(const button_signal_t::slot_type& cb) +{ + return connectSignal(mButtonAddSignal, cb); +} + +boost::signals2::connection LLToolBar::setButtonEnterCallback(const button_signal_t::slot_type& cb) +{ + return connectSignal(mButtonEnterSignal, cb); +} + +boost::signals2::connection LLToolBar::setButtonLeaveCallback(const button_signal_t::slot_type& cb) +{ + return connectSignal(mButtonLeaveSignal, cb); +} + +boost::signals2::connection LLToolBar::setButtonRemoveCallback(const button_signal_t::slot_type& cb) +{ + return connectSignal(mButtonRemoveSignal, cb); +} + BOOL LLToolBar::handleDragAndDrop(S32 x, S32 y, MASK mask, BOOL drop, EDragAndDropType cargo_type, void* cargo_data, @@ -969,8 +1045,6 @@ LLToolBarButton::LLToolBarButton(const Params& p) mOriginalImageOverlayColor(p.image_overlay_color), mOriginalImageOverlaySelectedColor(p.image_overlay_selected_color) { - mButtonFlashRate = 0.0; - mButtonFlashCount = 0; } LLToolBarButton::~LLToolBarButton() @@ -1012,6 +1086,7 @@ BOOL LLToolBarButton::handleHover(S32 x, S32 y, MASK mask) { handled = LLButton::handleHover(x, y, mask); } + return handled; } @@ -1024,6 +1099,23 @@ void LLToolBarButton::onMouseEnter(S32 x, S32 y, MASK mask) { mNeedsHighlight = TRUE; } + + LLToolBar* parent_toolbar = getParentByType<LLToolBar>(); + if (parent_toolbar && parent_toolbar->mButtonEnterSignal) + { + (*(parent_toolbar->mButtonEnterSignal))(this); + } +} + +void LLToolBarButton::onMouseLeave(S32 x, S32 y, MASK mask) +{ + LLButton::onMouseLeave(x, y, mask); + + LLToolBar* parent_toolbar = getParentByType<LLToolBar>(); + if (parent_toolbar && parent_toolbar->mButtonLeaveSignal) + { + (*(parent_toolbar->mButtonLeaveSignal))(this); + } } void LLToolBarButton::onMouseCaptureLost() @@ -1072,25 +1164,25 @@ void LLToolBarButton::setEnabled(BOOL enabled) } } - const std::string LLToolBarButton::getToolTip() const { std::string tooltip; + if (labelIsTruncated() || getCurrentLabel().empty()) { - return LLTrans::getString(LLCommandManager::instance().getCommand(mId)->labelRef()) + " -- " + LLView::getToolTip(); + tooltip = LLTrans::getString(LLCommandManager::instance().getCommand(mId)->labelRef()) + " -- " + LLView::getToolTip(); } else { - return LLView::getToolTip(); + tooltip = LLView::getToolTip(); } -} - - - - - - + LLToolBar* parent_toolbar = getParentByType<LLToolBar>(); + if (parent_toolbar && parent_toolbar->mButtonTooltipSuffix.length() > 0) + { + tooltip = tooltip + "\n(" + parent_toolbar->mButtonTooltipSuffix + ")"; + } + return tooltip; +} diff --git a/indra/llui/lltoolbar.h b/indra/llui/lltoolbar.h index e634e57f93802d90456f8e519bb0417ed7cbb6c9..f10f39adc3f6f2d645ef8c91715497f19f0825f6 100644 --- a/indra/llui/lltoolbar.h +++ b/indra/llui/lltoolbar.h @@ -71,6 +71,7 @@ class LLToolBarButton : public LLButton void setHandleDragCallback(tool_handledrag_callback_t cb) { mHandleDragItemCallback = cb; } void onMouseEnter(S32 x, S32 y, MASK mask); + void onMouseLeave(S32 x, S32 y, MASK mask); void onMouseCaptureLost(); void onCommit(); @@ -120,6 +121,8 @@ namespace LLToolBarEnums SIDE_RIGHT, SIDE_TOP, }; + + LLLayoutStack::ELayoutOrientation getOrientation(SideType sideType); } // NOTE: This needs to occur before Param block declaration for proper compilation. @@ -142,6 +145,7 @@ namespace LLInitParam class LLToolBar : public LLUICtrl { + friend class LLToolBarButton; public: struct Params : public LLInitParam::Block<Params, LLUICtrl::Params> { @@ -187,6 +191,7 @@ class LLToolBar bool hasCommand(const LLCommandId& commandId) const; bool enableCommand(const LLCommandId& commandId, bool enabled); bool stopCommandInProgress(const LLCommandId& commandId); + bool flashCommand(const LLCommandId& commandId, bool flash); void setStartDragCallback(tool_startdrag_callback_t cb) { mStartDragItemCallback = cb; } void setHandleDragCallback(tool_handledrag_callback_t cb) { mHandleDragItemCallback = cb; } @@ -195,6 +200,15 @@ class LLToolBar LLToolBarButton* createButton(const LLCommandId& id); + typedef boost::signals2::signal<void (LLView* button)> button_signal_t; + boost::signals2::connection setButtonAddCallback(const button_signal_t::slot_type& cb); + boost::signals2::connection setButtonEnterCallback(const button_signal_t::slot_type& cb); + boost::signals2::connection setButtonLeaveCallback(const button_signal_t::slot_type& cb); + boost::signals2::connection setButtonRemoveCallback(const button_signal_t::slot_type& cb); + + void setTooltipButtonSuffix(const std::string& suffix) { mButtonTooltipSuffix = suffix; } + + LLToolBarEnums::SideType getSideType() const { return mSideType; } bool hasButtons() const { return !mButtons.empty(); } bool isModified() const { return mModified; } @@ -254,7 +268,14 @@ class LLToolBar LLToolBarButton::Params mButtonParams[LLToolBarEnums::BTNTYPE_COUNT]; - LLHandle<class LLContextMenu> mPopupMenuHandle; + LLHandle<class LLContextMenu> mPopupMenuHandle; + + button_signal_t* mButtonAddSignal; + button_signal_t* mButtonEnterSignal; + button_signal_t* mButtonLeaveSignal; + button_signal_t* mButtonRemoveSignal; + + std::string mButtonTooltipSuffix; }; diff --git a/indra/newview/app_settings/settings.xml b/indra/newview/app_settings/settings.xml old mode 100644 new mode 100755 index 7cfbba3160b9e98cb0fea11ec0e4e522f8049939..5c0ea2f7744ea28eb2c3e4c2b2ad6710ec52a3c9 --- a/indra/newview/app_settings/settings.xml +++ b/indra/newview/app_settings/settings.xml @@ -13383,7 +13383,7 @@ <key>Comment</key> <string>Settings that are a applied per session (not saved).</string> <key>Persist</key> - <integer>1</integer> + <integer>0</integer> <key>Type</key> <string>String</string> <key>Value</key> @@ -13394,7 +13394,7 @@ <key>Comment</key> <string>User settings that are a applied per session (not saved).</string> <key>Persist</key> - <integer>1</integer> + <integer>0</integer> <key>Type</key> <string>String</string> <key>Value</key> diff --git a/indra/newview/app_settings/settings_per_account.xml b/indra/newview/app_settings/settings_per_account.xml index d8295ddb876a3d60eb6771f16f4a70fa1da17e29..6ed4480cb193050ed1db4bd24904f3763e66b92c 100644 --- a/indra/newview/app_settings/settings_per_account.xml +++ b/indra/newview/app_settings/settings_per_account.xml @@ -33,6 +33,17 @@ <key>Value</key> <string /> </map> + <key>DisplayDestinationsOnInitialRun</key> + <map> + <key>Comment</key> + <string>Display the destinations guide when a user first launches FUI.</string> + <key>Persist</key> + <integer>1</integer> + <key>Type</key> + <string>Boolean</string> + <key>Value</key> + <integer>1</integer> + </map> <key>LastInventoryInboxActivity</key> <map> <key>Comment</key> diff --git a/indra/newview/installers/darwin/dmg-cleanup.applescript b/indra/newview/installers/darwin/dmg-cleanup.applescript index f3d39aec218f7901417c58916305af3529c217d0..8a71b392f927bf86af9665c631bc434b4e6565f5 100644 --- a/indra/newview/installers/darwin/dmg-cleanup.applescript +++ b/indra/newview/installers/darwin/dmg-cleanup.applescript @@ -19,7 +19,7 @@ tell application "Finder" set current view of foo to icon view set toolbar visible of foo to false set statusbar visible of foo to false - set the bounds of foo to {100, 100, 600, 399} + set the bounds of foo to {100, 100, 600, 449} -- set the position of front window to {100, 100} -- get {name, position} of every item of front window diff --git a/indra/newview/installers/darwin/fix_application_icon_position.sh b/indra/newview/installers/darwin/fix_application_icon_position.sh old mode 100644 new mode 100755 index c6b92589db5bda7ea60056c9926535e27debc9bd..618e34820ceb6c7f90787ab04c6225b11c657e04 --- a/indra/newview/installers/darwin/fix_application_icon_position.sh +++ b/indra/newview/installers/darwin/fix_application_icon_position.sh @@ -1,6 +1,6 @@ # just run this script each time after you change the installer's name to fix the icon misalignment #!/bin/bash -cp -r ./../../../build-darwin-i386/newview/*.dmg ~/Desktop/TempBuild.dmg +cp -r ../../../../build-darwin-i386/newview/*.dmg ~/Desktop/TempBuild.dmg hdid ~/Desktop/TempBuild.dmg open -a finder /Volumes/Second\ Life\ Installer osascript dmg-cleanup.applescript diff --git a/indra/newview/installers/darwin/release-dmg/_DS_Store b/indra/newview/installers/darwin/release-dmg/_DS_Store index 8f6c25c2f4406537ae70bce453c4d742649f8c33..747ca961d82d5bce75b6f75b3ba620042e975277 100644 Binary files a/indra/newview/installers/darwin/release-dmg/_DS_Store and b/indra/newview/installers/darwin/release-dmg/_DS_Store differ diff --git a/indra/newview/installers/windows/installer_template.nsi b/indra/newview/installers/windows/installer_template.nsi old mode 100644 new mode 100755 index 4811f1fcd55bd4172f9cf56b56e6ce411a0b6cb7..02ca7cbb3a54f29b728d159fe55b08aa2bcee9d6 --- a/indra/newview/installers/windows/installer_template.nsi +++ b/indra/newview/installers/windows/installer_template.nsi @@ -1,6 +1,22 @@ ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; secondlife setup.nsi -;; Copyright 2004-2010, Linden Research, Inc. +;; Copyright 2004-2011, 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 ;; ;; NSIS Unicode 2.38.1 or higher required ;; http://www.scratchpaper.com/ @@ -293,19 +309,106 @@ Function CheckNetworkConnection Return FunctionEnd + ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -; Delete files in Documents and Settings\<user>\SecondLife\cache -; Delete files in Documents and Settings\All Users\SecondLife\cache +; Save user files to temp location ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -;Function RemoveCacheFiles -; -;; Delete files in Documents and Settings\<user>\SecondLife +Function PreserveUserFiles + +Push $0 +Push $1 +Push $2 + + RMDir /r "$TEMP\SecondLifeSettingsBackup" + CreateDirectory "$TEMP\SecondLifeSettingsBackup" + StrCpy $0 0 ; Index number used to iterate via EnumRegKey + + LOOP: + EnumRegKey $1 HKEY_LOCAL_MACHINE "SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList" $0 + StrCmp $1 "" DONE ; no more users + + ReadRegStr $2 HKEY_LOCAL_MACHINE "SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList\$1" "ProfileImagePath" + StrCmp $2 "" CONTINUE 0 ; "ProfileImagePath" value is missing + + ; Required since ProfileImagePath is of type REG_EXPAND_SZ + ExpandEnvStrings $2 $2 + + CreateDirectory "$TEMP\SecondLifeSettingsBackup\$0" + CopyFiles "$2\Application Data\SecondLife\*" "$TEMP\SecondLifeSettingsBackup\$0" + + CONTINUE: + IntOp $0 $0 + 1 + Goto LOOP + DONE: + +Pop $2 +Pop $1 +Pop $0 + +; Copy files in Documents and Settings\All Users\SecondLife +Push $0 + ReadRegStr $0 HKEY_LOCAL_MACHINE "SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders" "Common AppData" + StrCmp $0 "" +2 + CreateDirectory "$TEMP\SecondLifeSettingsBackup\AllUsers\" + CopyFiles "$2\Application Data\SecondLife\*" "$TEMP\SecondLifeSettingsBackup\AllUsers\" +Pop $0 + +FunctionEnd + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +; Restore user files from temp location +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +Function RestoreUserFiles + +Push $0 +Push $1 +Push $2 + + StrCpy $0 0 ; Index number used to iterate via EnumRegKey + + LOOP: + EnumRegKey $1 HKEY_LOCAL_MACHINE "SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList" $0 + StrCmp $1 "" DONE ; no more users + + ReadRegStr $2 HKEY_LOCAL_MACHINE "SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList\$1" "ProfileImagePath" + StrCmp $2 "" CONTINUE 0 ; "ProfileImagePath" value is missing + + ; Required since ProfileImagePath is of type REG_EXPAND_SZ + ExpandEnvStrings $2 $2 + + CreateDirectory "$2\Application Data\SecondLife\" + CopyFiles "$TEMP\SecondLifeSettingsBackup\$0\*" "$2\Application Data\SecondLife\" + + CONTINUE: + IntOp $0 $0 + 1 + Goto LOOP + DONE: + +Pop $2 +Pop $1 +Pop $0 + +; Copy files in Documents and Settings\All Users\SecondLife +Push $0 + ReadRegStr $0 HKEY_LOCAL_MACHINE "SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders" "Common AppData" + StrCmp $0 "" +2 + CreateDirectory "$2\Application Data\SecondLife\" + CopyFiles "$TEMP\SecondLifeSettingsBackup\AllUsers\*" "$2\Application Data\SecondLife\" +Pop $0 + +FunctionEnd + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +; Clobber user files - TEST ONLY +; This is here for testing, generally not desirable to call it. +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;Function ClobberUserFilesTESTONLY + ;Push $0 ;Push $1 ;Push $2 -; DetailPrint $(RemoveCacheFilesDP) ; -; StrCpy $0 0 ; Index number used to iterate via EnumRegKey +; StrCpy $0 0 ; Index number used to iterate via EnumRegKey ; ; LOOP: ; EnumRegKey $1 HKEY_LOCAL_MACHINE "SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList" $0 @@ -317,29 +420,24 @@ FunctionEnd ; ; Required since ProfileImagePath is of type REG_EXPAND_SZ ; ExpandEnvStrings $2 $2 ; -; ; When explicitly uninstalling, everything goes away -; RMDir /r "$2\Application Data\SecondLife\cache" +; RMDir /r "$2\Application Data\SecondLife\" ; ; CONTINUE: ; IntOp $0 $0 + 1 ; Goto LOOP ; DONE: +; ;Pop $2 ;Pop $1 ;Pop $0 ; -;; Delete files in Documents and Settings\All Users\SecondLife +;; Copy files in Documents and Settings\All Users\SecondLife ;Push $0 -; ReadRegStr $0 HKEY_LOCAL_MACHINE "SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders" "Common AppData" -; StrCmp $0 "" +2 -; RMDir /r "$0\SecondLife\cache" +; ReadRegStr $0 HKEY_LOCAL_MACHINE "SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders" "Common AppData" +; StrCmp $0 "" +2 +; RMDir /r "$2\Application Data\SecondLife\" ;Pop $0 ; -;; Delete filse in C:\Windows\Application Data\SecondLife -;; If the user is running on a pre-NT system, Application Data lives here instead of -;; in Documents and Settings. -;RMDir /r "$WINDIR\Application Data\SecondLife\cache" -; ;FunctionEnd ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; @@ -412,17 +510,15 @@ Push $2 ; Required since ProfileImagePath is of type REG_EXPAND_SZ ExpandEnvStrings $2 $2 - ; If uninstalling a normal install remove everything - ; Otherwise (preview/dmz etc) just remove cache - StrCmp $INSTFLAGS "" RM_ALL RM_CACHE - RM_ALL: - RMDir /r "$2\Application Data\SecondLife" - RM_CACHE: - # Local Settings directory is the cache, there is no "cache" subdir - RMDir /r "$2\Local Settings\Application Data\SecondLife" - # Vista version of the same - RMDir /r "$2\AppData\Local\SecondLife" - Delete "$2\Application Data\SecondLife\user_settings\settings_windlight.xml" + ; Remove all cache and settings files but leave any other .txt files to preserve the chat logs +; RMDir /r "$2\Application Data\SecondLife\logs" + RMDir /r "$2\Application Data\SecondLife\browser_profile" + RMDir /r "$2\Application Data\SecondLife\user_settings" + Delete "$2\Application Data\SecondLife\*.xml" + Delete "$2\Application Data\SecondLife\*.bmp" + Delete "$2\Application Data\SecondLife\search_history.txt" + Delete "$2\Application Data\SecondLife\plugin_cookies.txt" + Delete "$2\Application Data\SecondLife\typed_locations.txt" CONTINUE: IntOp $0 $0 + 1 @@ -440,7 +536,7 @@ Push $0 RMDir /r "$0\SecondLife" Pop $0 -; Delete filse in C:\Windows\Application Data\SecondLife +; Delete files in C:\Windows\Application Data\SecondLife ; If the user is running on a pre-NT system, Application Data lives here instead of ; in Documents and Settings. RMDir /r "$WINDIR\Application Data\SecondLife" @@ -770,10 +866,11 @@ Call CloseSecondLife ; Make sure we're not running Call CheckNetworkConnection ; ping secondlife.com ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +Call PreserveUserFiles + ;;; Don't remove cache files during a regular install, removing the inventory cache on upgrades results in lots of damage to the servers. ;Call RemoveCacheFiles ; Installing over removes potentially corrupted ; VFS and cache files. - ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;; Need to clean out shader files from previous installs to fix DEV-5663 Call RemoveOldShaders @@ -854,6 +951,18 @@ WriteRegExpandStr HKEY_CLASSES_ROOT "x-grid-location-info\shell\open\command" "" ; write out uninstaller WriteUninstaller "$INSTDIR\uninst.exe" +; Remove existing "Second Life Viewer 2" install if any. +StrCmp $INSTDIR "$PROGRAMFILES\SecondLifeViewer2" SLV2_DONE ; unless that's the install directory +IfFileExists "$PROGRAMFILES\SecondLifeViewer2\uninst.exe" SLV2_FOUND SLV2_DONE + +SLV2_FOUND: +ExecWait '"$PROGRAMFILES\SecondLifeViewer2\uninst.exe" /S _?=$PROGRAMFILES\SecondLifeViewer2' +Delete "$PROGRAMFILES\SecondLifeViewer2\uninst.exe" ; with _? option above, uninst.exe will be left behind. +RMDir "$PROGRAMFILES\SecondLifeViewer2" ; will remove only if empty. + +SLV2_DONE: +Call RestoreUserFiles + ; end of default section SectionEnd diff --git a/indra/newview/llfavoritesbar.cpp b/indra/newview/llfavoritesbar.cpp index 98de41887852ee6178b2f42256d68b922daab3e1..6c9058caf14425451f8421ad5de0b5bd480fca0f 100644 --- a/indra/newview/llfavoritesbar.cpp +++ b/indra/newview/llfavoritesbar.cpp @@ -443,17 +443,17 @@ BOOL LLFavoritesBarCtrl::handleDragAndDrop(S32 x, S32 y, MASK mask, BOOL drop, { setLandingTab(dest); } - /* - * the condition dest == NULL can be satisfied not only in the case - * of dragging to the right from the last tab of the favbar. there is a - * small gap between each tab. if the user drags something exactly there - * then mLandingTab will be set to NULL and the dragged item will be pushed - * to the end of the favorites bar. this is incorrect behavior. that's why - * we need an additional check which excludes the case described previously - * making sure that the mouse pointer is beyond the last tab. - */ - else if (mLastTab && x >= mLastTab->getRect().mRight) + else if (mLastTab && (x >= mLastTab->getRect().mRight)) { + /* + * the condition dest == NULL can be satisfied not only in the case + * of dragging to the right from the last tab of the favbar. there is a + * small gap between each tab. if the user drags something exactly there + * then mLandingTab will be set to NULL and the dragged item will be pushed + * to the end of the favorites bar. this is incorrect behavior. that's why + * we need an additional check which excludes the case described previously + * making sure that the mouse pointer is beyond the last tab. + */ setLandingTab(NULL); } @@ -467,7 +467,6 @@ BOOL LLFavoritesBarCtrl::handleDragAndDrop(S32 x, S32 y, MASK mask, BOOL drop, if (drop) { handleExistingFavoriteDragAndDrop(x, y); - showDragMarker(FALSE); } } else @@ -490,7 +489,6 @@ BOOL LLFavoritesBarCtrl::handleDragAndDrop(S32 x, S32 y, MASK mask, BOOL drop, setLandingTab(NULL); } handleNewFavoriteDragAndDrop(item, favorites_id, x, y); - showDragMarker(FALSE); } } } @@ -504,20 +502,29 @@ BOOL LLFavoritesBarCtrl::handleDragAndDrop(S32 x, S32 y, MASK mask, BOOL drop, void LLFavoritesBarCtrl::handleExistingFavoriteDragAndDrop(S32 x, S32 y) { + // Identify the button hovered and the side to drop LLFavoriteLandmarkButton* dest = dynamic_cast<LLFavoriteLandmarkButton*>(mLandingTab); + bool insert_before = true; + if (!dest) + { + insert_before = false; + dest = dynamic_cast<LLFavoriteLandmarkButton*>(mLastTab); + } - // there is no need to handle if an item was dragged onto itself + // There is no need to handle if an item was dragged onto itself if (dest && dest->getLandmarkId() == mDragItemId) { return; } + // Insert the dragged item in the right place if (dest) { - LLInventoryModel::updateItemsOrder(mItems, mDragItemId, dest->getLandmarkId()); + LLInventoryModel::updateItemsOrder(mItems, mDragItemId, dest->getLandmarkId(), insert_before); } else { + // This can happen when the item list is empty mItems.push_back(gInventory.getItem(mDragItemId)); } @@ -534,22 +541,35 @@ void LLFavoritesBarCtrl::handleExistingFavoriteDragAndDrop(S32 x, S32 y) void LLFavoritesBarCtrl::handleNewFavoriteDragAndDrop(LLInventoryItem *item, const LLUUID& favorites_id, S32 x, S32 y) { - LLFavoriteLandmarkButton* dest = dynamic_cast<LLFavoriteLandmarkButton*>(mLandingTab); - - // there is no need to handle if an item was dragged onto itself + // Identify the button hovered and the side to drop + LLFavoriteLandmarkButton* dest = NULL; + bool insert_before = true; + if (!mItems.empty()) + { + dest = dynamic_cast<LLFavoriteLandmarkButton*>(mLandingTab); + if (!dest) + { + insert_before = false; + dest = dynamic_cast<LLFavoriteLandmarkButton*>(mLastTab); + } + } + + // There is no need to handle if an item was dragged onto itself if (dest && dest->getLandmarkId() == mDragItemId) { return; } - + LLPointer<LLViewerInventoryItem> viewer_item = new LLViewerInventoryItem(item); + // Insert the dragged item in the right place if (dest) { - insertBeforeItem(mItems, dest->getLandmarkId(), viewer_item); + insertItem(mItems, dest->getLandmarkId(), viewer_item, insert_before); } else { + // This can happen when the item list is empty mItems.push_back(viewer_item); } @@ -642,7 +662,7 @@ void LLFavoritesBarCtrl::draw() { // mouse pointer hovers over an existing tab LLRect rect = mLandingTab->getRect(); - mImageDragIndication->draw(rect.mLeft - w/2, rect.getHeight(), w, h); + mImageDragIndication->draw(rect.mLeft, rect.getHeight(), w, h); } else if (mLastTab) { @@ -650,6 +670,8 @@ void LLFavoritesBarCtrl::draw() LLRect rect = mLastTab->getRect(); mImageDragIndication->draw(rect.mRight, rect.getHeight(), w, h); } + // Once drawn, mark this false so we won't draw it again (unless we hit the favorite bar again) + mShowDragMarker = FALSE; } } @@ -721,7 +743,7 @@ void LLFavoritesBarCtrl::updateButtons() if (first_changed_item_index <= mItems.count()) { // Rebuild the buttons only - // child_list_t is a linked list, so safe to erase from the middle if we pre-incrament the iterator + // child_list_t is a linked list, so safe to erase from the middle if we pre-increment the iterator while (child_it != childs->end()) { @@ -810,9 +832,9 @@ LLButton* LLFavoritesBarCtrl::createButton(const LLPointer<LLViewerInventoryItem /** * WORKAROUND: - * there are some problem with displaying of fonts in buttons. - * Empty space (or ...) is displaying instead of last symbols, even though the width of the button is enough. - * Problem will gone, if we stretch out the button. For that reason I have to put additional 20 pixels. + * There are some problem with displaying of fonts in buttons. + * Empty space or ellipsis might be displayed instead of last symbols, even though the width of the button is enough. + * The problem disappears if we pad the button with 20 pixels. */ int required_width = mFont->getWidth(item->getName()) + 20; int width = required_width > def_button_width? def_button_width : required_width; @@ -840,7 +862,6 @@ LLButton* LLFavoritesBarCtrl::createButton(const LLPointer<LLViewerInventoryItem fav_btn->setRect(butt_rect); // change only left and save bottom fav_btn->setFont(mFont); - fav_btn->setName(item->getName()); fav_btn->setLabel(item->getName()); fav_btn->setToolTip(item->getName()); fav_btn->setCommitCallback(boost::bind(&LLFavoritesBarCtrl::onButtonClick, this, item->getUUID())); @@ -1298,25 +1319,24 @@ BOOL LLFavoritesBarCtrl::handleHover(S32 x, S32 y, MASK mask) LLUICtrl* LLFavoritesBarCtrl::findChildByLocalCoords(S32 x, S32 y) { - LLUICtrl* ctrl = 0; - S32 screenX, screenY; + LLUICtrl* ctrl = NULL; const child_list_t* list = getChildList(); - localPointToScreen(x, y, &screenX, &screenY); - - // look for a child which contains the point (screenX, screenY) in it's rectangle for (child_list_const_iter_t i = list->begin(); i != list->end(); ++i) { - LLRect rect; - localRectToScreen((*i)->getRect(), &rect); - - if (rect.pointInRect(screenX, screenY)) + // Look only for children that are favorite buttons + if ((*i)->getName() == "favorites_bar_btn") { - ctrl = dynamic_cast<LLUICtrl*>(*i); - break; + LLRect rect = (*i)->getRect(); + // We consider a button hit if the cursor is left of the right side + // This makes the hit a bit less finicky than hitting directly on the button itself + if (x <= rect.mRight) + { + ctrl = dynamic_cast<LLUICtrl*>(*i); + break; + } } } - return ctrl; } @@ -1337,29 +1357,28 @@ BOOL LLFavoritesBarCtrl::needToSaveItemsOrder(const LLInventoryModel::item_array return result; } -LLInventoryModel::item_array_t::iterator LLFavoritesBarCtrl::findItemByUUID(LLInventoryModel::item_array_t& items, const LLUUID& id) +void LLFavoritesBarCtrl::insertItem(LLInventoryModel::item_array_t& items, const LLUUID& dest_item_id, LLViewerInventoryItem* insertedItem, bool insert_before) { - LLInventoryModel::item_array_t::iterator result = items.end(); + // Get the iterator to the destination item + LLInventoryModel::item_array_t::iterator it_dest = LLInventoryModel::findItemIterByUUID(items, dest_item_id); + if (it_dest == items.end()) + return; - for (LLInventoryModel::item_array_t::iterator i = items.begin(); i != items.end(); ++i) + // Go to the next element if one wishes to insert after the dest element + if (!insert_before) { - if ((*i)->getUUID() == id) - { - result = i; - break; - } + ++it_dest; } - - return result; -} - -void LLFavoritesBarCtrl::insertBeforeItem(LLInventoryModel::item_array_t& items, const LLUUID& beforeItemId, LLViewerInventoryItem* insertedItem) -{ - LLViewerInventoryItem* beforeItem = gInventory.getItem(beforeItemId); - llassert(beforeItem); - if (beforeItem) + + // Insert the source item in the right place + if (it_dest != items.end()) + { + items.insert(it_dest, insertedItem); + } + else { - items.insert(findItemByUUID(items, beforeItem->getUUID()), insertedItem); + // Append to the list if it_dest reached the end + items.push_back(insertedItem); } } diff --git a/indra/newview/llfavoritesbar.h b/indra/newview/llfavoritesbar.h index 1b11d6196e8c787d85f4190f235442f2490993ac..2f75b3bb0eec119a4b66a660c6dd4a2abd5ea656 100644 --- a/indra/newview/llfavoritesbar.h +++ b/indra/newview/llfavoritesbar.h @@ -130,7 +130,7 @@ class LLFavoritesBarCtrl : public LLUICtrl, public LLInventoryObserver * inserts an item identified by insertedItemId BEFORE an item identified by beforeItemId. * this function assumes that an item identified by insertedItemId doesn't exist in items array. */ - void insertBeforeItem(LLInventoryModel::item_array_t& items, const LLUUID& beforeItemId, LLViewerInventoryItem* insertedItem); + void insertItem(LLInventoryModel::item_array_t& items, const LLUUID& dest_item_id, LLViewerInventoryItem* insertedItem, bool insert_before); // finds an item by it's UUID in the items array LLInventoryModel::item_array_t::iterator findItemByUUID(LLInventoryModel::item_array_t& items, const LLUUID& id); diff --git a/indra/newview/llfloatertoybox.cpp b/indra/newview/llfloatertoybox.cpp index 66f644748eaef62735a83c1549a24f53d930bd15..f527937e8f5e20598618f3e40e15616e486d1a21 100644 --- a/indra/newview/llfloatertoybox.cpp +++ b/indra/newview/llfloatertoybox.cpp @@ -63,6 +63,7 @@ BOOL LLFloaterToybox::postBuild() mToolBar->setStartDragCallback(boost::bind(LLToolBarView::startDragTool,_1,_2,_3)); mToolBar->setHandleDragCallback(boost::bind(LLToolBarView::handleDragTool,_1,_2,_3,_4)); mToolBar->setHandleDropCallback(boost::bind(LLToolBarView::handleDropTool,_1,_2,_3,_4)); + mToolBar->setButtonEnterCallback(boost::bind(&LLFloaterToybox::onToolBarButtonEnter,this,_1)); // // Sort commands by localized labels so they will appear alphabetized in all languages @@ -105,8 +106,8 @@ void LLFloaterToybox::draw() { const LLCommandId& id = *it; - const bool commandOnToolbar = gToolBarView->hasCommand(id); - mToolBar->enableCommand(id, !commandOnToolbar); + const bool command_not_present = (gToolBarView->hasCommand(id) == LLToolBarView::TOOLBAR_NONE); + mToolBar->enableCommand(id, command_not_present); } LLFloater::draw(); @@ -140,5 +141,30 @@ BOOL LLFloaterToybox::handleDragAndDrop(S32 x, S32 y, MASK mask, BOOL drop, return mToolBar->handleDragAndDrop(local_x, local_y, mask, drop, cargo_type, cargo_data, accept, tooltip_msg); } +void LLFloaterToybox::onToolBarButtonEnter(LLView* button) +{ + std::string suffix = ""; + + LLCommandId commandId(button->getName()); + LLCommand* command = LLCommandManager::instance().getCommand(commandId); + + if (command) + { + S32 command_loc = gToolBarView->hasCommand(commandId); + + switch(command_loc) + { + case LLToolBarView::TOOLBAR_BOTTOM: suffix = LLTrans::getString("Toolbar_Bottom_Tooltip"); break; + case LLToolBarView::TOOLBAR_LEFT: suffix = LLTrans::getString("Toolbar_Left_Tooltip"); break; + case LLToolBarView::TOOLBAR_RIGHT: suffix = LLTrans::getString("Toolbar_Right_Tooltip"); break; + + default: + break; + } + } + + mToolBar->setTooltipButtonSuffix(suffix); +} + // eof diff --git a/indra/newview/llfloatertoybox.h b/indra/newview/llfloatertoybox.h index 62bf68680dafd73afb32d6e4e2df17ea07531a1e..6f0275b8fe20876d9f46574f8e710a923d7d4459 100644 --- a/indra/newview/llfloatertoybox.h +++ b/indra/newview/llfloatertoybox.h @@ -52,6 +52,8 @@ class LLFloaterToybox : public LLFloater protected: void onBtnRestoreDefaults(); + void onToolBarButtonEnter(LLView* button); + public: LLToolBar * mToolBar; }; diff --git a/indra/newview/llimfloatercontainer.cpp b/indra/newview/llimfloatercontainer.cpp index 33cb3a54a7cf69b772e7b4b7e6a0d43f8424a30a..c8e48b0d428f0980c44c181129c9f63268b4b3c1 100644 --- a/indra/newview/llimfloatercontainer.cpp +++ b/indra/newview/llimfloatercontainer.cpp @@ -47,12 +47,13 @@ LLIMFloaterContainer::LLIMFloaterContainer(const LLSD& seed) LLIMFloaterContainer::~LLIMFloaterContainer() { + mNewMessageConnection.disconnect(); LLTransientFloaterMgr::getInstance()->removeControlView(LLTransientFloaterMgr::IM, this); } BOOL LLIMFloaterContainer::postBuild() { - LLIMModel::instance().mNewMsgSignal.connect(boost::bind(&LLIMFloaterContainer::onNewMessageReceived, this, _1)); + mNewMessageConnection = LLIMModel::instance().mNewMsgSignal.connect(boost::bind(&LLIMFloaterContainer::onNewMessageReceived, this, _1)); // Do not call base postBuild to not connect to mCloseSignal to not close all floaters via Close button // mTabContainer will be initialized in LLMultiFloater::addChild() return TRUE; diff --git a/indra/newview/llimfloatercontainer.h b/indra/newview/llimfloatercontainer.h index 53dfcd78ff1c7868a217f4b3ec4607828cc3b2c6..892ecef48d13ad5c07e64789b02a459612ebc7f5 100644 --- a/indra/newview/llimfloatercontainer.h +++ b/indra/newview/llimfloatercontainer.h @@ -62,7 +62,7 @@ class LLIMFloaterContainer : public LLMultiFloater private: typedef std::map<LLUUID,LLFloater*> avatarID_panel_map_t; avatarID_panel_map_t mSessions; - + boost::signals2::connection mNewMessageConnection; void onNewMessageReceived(const LLSD& data); }; diff --git a/indra/newview/llimview.cpp b/indra/newview/llimview.cpp index 6e9baed5f2d12cea5dfde0c39614320723cff0d3..ed4bb727cd77043c0baebad5c881c37614df6420 100644 --- a/indra/newview/llimview.cpp +++ b/indra/newview/llimview.cpp @@ -1679,13 +1679,44 @@ BOOL LLCallDialog::postBuild() { if (!LLDockableFloater::postBuild() || !gToolBarView) return FALSE; + + dockToToolbarButton("speak"); + + return TRUE; +} + +void LLCallDialog::dockToToolbarButton(const std::string& toolbarButtonName) +{ + LLDockControl::DocAt dock_pos = getDockControlPos(toolbarButtonName); + LLView *anchor_panel = gToolBarView->findChildView(toolbarButtonName); - LLView *anchor_panel = gToolBarView->findChildView("speak"); - setDockControl(new LLDockControl(anchor_panel, this, getDockTongue(), LLDockControl::TOP)); + setUseTongue(anchor_panel); - return TRUE; + setDockControl(new LLDockControl(anchor_panel, this, getDockTongue(dock_pos), dock_pos)); } +LLDockControl::DocAt LLCallDialog::getDockControlPos(const std::string& toolbarButtonName) +{ + LLCommandId command_id(toolbarButtonName); + S32 toolbar_loc = gToolBarView->hasCommand(command_id); + + LLDockControl::DocAt doc_at = LLDockControl::TOP; + + switch (toolbar_loc) + { + case LLToolBarView::TOOLBAR_LEFT: + doc_at = LLDockControl::RIGHT; + break; + + case LLToolBarView::TOOLBAR_RIGHT: + doc_at = LLDockControl::LEFT; + break; + } + + return doc_at; +} + + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // Class LLOutgoingCallDialog //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ diff --git a/indra/newview/llimview.h b/indra/newview/llimview.h index 93b604d36aa2fe82216e7175f837c932899d9a99..b1be26a169ee962e80701cfed82cec74e1dd1e8e 100644 --- a/indra/newview/llimview.h +++ b/indra/newview/llimview.h @@ -491,14 +491,16 @@ class LLCallDialog : public LLDockableFloater { public: LLCallDialog(const LLSD& payload); - ~LLCallDialog(); + virtual ~LLCallDialog(); virtual BOOL postBuild(); + void dockToToolbarButton(const std::string& toolbarButtonName); + // check timer state /*virtual*/ void draw(); /*virtual*/ void onOpen(const LLSD& key); - + protected: // lifetime timer for a notification LLTimer mLifetimeTimer; @@ -519,6 +521,9 @@ class LLCallDialog : public LLDockableFloater void setIcon(const LLSD& session_id, const LLSD& participant_id); LLSD mPayload; + +private: + LLDockControl::DocAt getDockControlPos(const std::string& toolbarButtonName); }; class LLIncomingCallDialog : public LLCallDialog diff --git a/indra/newview/llinventorymodel.cpp b/indra/newview/llinventorymodel.cpp index e86c427ae28630b7bf4768566f3cf144350146d4..fb02fe0ff7cc310a6a7b990739eaa1185f8dba4a 100644 --- a/indra/newview/llinventorymodel.cpp +++ b/indra/newview/llinventorymodel.cpp @@ -2879,40 +2879,62 @@ BOOL LLInventoryModel::getIsFirstTimeInViewer2() return sFirstTimeInViewer2; } -static LLInventoryModel::item_array_t::iterator find_item_iter_by_uuid(LLInventoryModel::item_array_t& items, const LLUUID& id) +LLInventoryModel::item_array_t::iterator LLInventoryModel::findItemIterByUUID(LLInventoryModel::item_array_t& items, const LLUUID& id) { - LLInventoryModel::item_array_t::iterator result = items.end(); + LLInventoryModel::item_array_t::iterator curr_item = items.begin(); - for (LLInventoryModel::item_array_t::iterator i = items.begin(); i != items.end(); ++i) + while (curr_item != items.end()) { - if ((*i)->getUUID() == id) + if ((*curr_item)->getUUID() == id) { - result = i; break; } + ++curr_item; } - return result; + return curr_item; } // static // * @param[in, out] items - vector with items to be updated. It should be sorted in a right way // * before calling this method. // * @param src_item_id - LLUUID of inventory item to be moved in new position -// * @param dest_item_id - LLUUID of inventory item before which source item should be placed. -void LLInventoryModel::updateItemsOrder(LLInventoryModel::item_array_t& items, const LLUUID& src_item_id, const LLUUID& dest_item_id) +// * @param dest_item_id - LLUUID of inventory item before (or after) which source item should +// * be placed. +// * @param insert_before - bool indicating if src_item_id should be placed before or after +// * dest_item_id. Default is true. +void LLInventoryModel::updateItemsOrder(LLInventoryModel::item_array_t& items, const LLUUID& src_item_id, const LLUUID& dest_item_id, bool insert_before) { - LLInventoryModel::item_array_t::iterator it_src = find_item_iter_by_uuid(items, src_item_id); - LLInventoryModel::item_array_t::iterator it_dest = find_item_iter_by_uuid(items, dest_item_id); + LLInventoryModel::item_array_t::iterator it_src = findItemIterByUUID(items, src_item_id); + LLInventoryModel::item_array_t::iterator it_dest = findItemIterByUUID(items, dest_item_id); - if (it_src == items.end() || it_dest == items.end()) return; + // If one of the passed UUID is not in the item list, bail out + if ((it_src == items.end()) || (it_dest == items.end())) + return; + // Erase the source element from the list, keep a copy before erasing. LLViewerInventoryItem* src_item = *it_src; items.erase(it_src); - // target iterator can not be valid because the container was changed, so update it. - it_dest = find_item_iter_by_uuid(items, dest_item_id); - items.insert(it_dest, src_item); + // Note: Target iterator is not valid anymore because the container was changed, so update it. + it_dest = findItemIterByUUID(items, dest_item_id); + + // Go to the next element if one wishes to insert after the dest element + if (!insert_before) + { + ++it_dest; + } + + // Reinsert the source item in the right place + if (it_dest != items.end()) + { + items.insert(it_dest, src_item); + } + else + { + // Append to the list if it_dest reached the end + items.push_back(src_item); + } } //* @param[in] items vector of items in order to be saved. diff --git a/indra/newview/llinventorymodel.h b/indra/newview/llinventorymodel.h index e0e81f10064adc4101230daf709abe659a5aa1c4..a0fd455cf3b75d8131734ff5fabd2542eeff367b 100644 --- a/indra/newview/llinventorymodel.h +++ b/indra/newview/llinventorymodel.h @@ -332,11 +332,16 @@ class LLInventoryModel //-------------------------------------------------------------------- public: // Changes items order by insertion of the item identified by src_item_id - // before the item identified by dest_item_id. Both items must exist in items array. - // Sorting is stored after method is finished. Only src_item_id is moved before dest_item_id. + // before (or after) the item identified by dest_item_id. Both items must exist in items array. + // Sorting is stored after method is finished. Only src_item_id is moved before (or after) dest_item_id. + // The parameter "insert_before" controls on which side of dest_item_id src_item_id gets rensinserted. static void updateItemsOrder(LLInventoryModel::item_array_t& items, const LLUUID& src_item_id, - const LLUUID& dest_item_id); + const LLUUID& dest_item_id, + bool insert_before = true); + // Gets an iterator on an item vector knowing only the item UUID. + // Returns end() of the vector if not found. + static LLInventoryModel::item_array_t::iterator findItemIterByUUID(LLInventoryModel::item_array_t& items, const LLUUID& id); // Saves current order of the passed items using inventory item sort field. // Resets 'items' sort fields and saves them on server. diff --git a/indra/newview/llnearbychatbar.cpp b/indra/newview/llnearbychatbar.cpp index a8113322618d4058a1317e1acfeeab3bc223a037..4674c8532409e4498e7a6baad234fe341d2b0d46 100644 --- a/indra/newview/llnearbychatbar.cpp +++ b/indra/newview/llnearbychatbar.cpp @@ -147,12 +147,12 @@ LLNearbyChatBar* LLNearbyChatBar::getInstance() void LLNearbyChatBar::showHistory() { + openFloater(); + if (!getChildView("nearby_chat")->getVisible()) { onToggleNearbyChatPanel(); } - - openFloater(); } void LLNearbyChatBar::draw() @@ -379,7 +379,10 @@ void LLNearbyChatBar::onToggleNearbyChatPanel() if (nearby_chat->getVisible()) { - mExpandedHeight = getRect().getHeight(); + if (!isMinimized()) + { + mExpandedHeight = getRect().getHeight(); + } setResizeLimits(getMinWidth(), COLLAPSED_HEIGHT); nearby_chat->setVisible(FALSE); reshape(getRect().getWidth(), COLLAPSED_HEIGHT); @@ -396,6 +399,15 @@ void LLNearbyChatBar::onToggleNearbyChatPanel() } } +void LLNearbyChatBar::setMinimized(BOOL b) +{ + if (b != LLFloater::isMinimized()) + { + LLFloater::setMinimized(b); + getChildView("nearby_chat")->setVisible(!b); + } +} + void LLNearbyChatBar::onChatBoxCommit() { if (mChatBox->getText().length() > 0) diff --git a/indra/newview/llnearbychatbar.h b/indra/newview/llnearbychatbar.h index bc00c1b9fce9c209e27b4db3c9ee6ae42a4ff39e..e9734899b3118166265e88efcd004f34e8373c53 100644 --- a/indra/newview/llnearbychatbar.h +++ b/indra/newview/llnearbychatbar.h @@ -60,6 +60,7 @@ class LLNearbyChatBar : public LLFloater static void sendChatFromViewer(const LLWString &wtext, EChatType type, BOOL animate); void showHistory(); + /*virtual*/void setMinimized(BOOL b); protected: static BOOL matchChatTypeTrigger(const std::string& in_str, std::string* out_str); diff --git a/indra/newview/llnearbychathandler.cpp b/indra/newview/llnearbychathandler.cpp index 330a21ef653a0fe4bca67c623402d4a7cc16e9e3..c43c95a366d4598a42261a3cffdfe44c04e8d9b0 100644 --- a/indra/newview/llnearbychathandler.cpp +++ b/indra/newview/llnearbychathandler.cpp @@ -568,7 +568,8 @@ void LLNearbyChatHandler::processChat(const LLChat& chat_msg, // WARNING - not sChatWatcher->post(notification); - if( chat_bar->getVisible() && nearby_chat->getVisible() + if( !chat_bar->isMinimized() + && nearby_chat->isInVisibleChain() || ( chat_msg.mSourceType == CHAT_SOURCE_AGENT && gSavedSettings.getBOOL("UseChatBubbles") ) || !mChannel->getShowToasts() ) // to prevent toasts in Busy mode diff --git a/indra/newview/llpanelmaininventory.cpp b/indra/newview/llpanelmaininventory.cpp index d6c407d5489eff9b1058c8670a2f80d89b905190..9944b51902dd52b9b7450b429ca7a7585e9b14f0 100644 --- a/indra/newview/llpanelmaininventory.cpp +++ b/indra/newview/llpanelmaininventory.cpp @@ -111,7 +111,7 @@ 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.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)); diff --git a/indra/newview/llsyswellwindow.cpp b/indra/newview/llsyswellwindow.cpp index ffe864e2207785e3436c9581bb0c300e2d850fd8..3aa6a3b7e5b7b428ffbd6e77ae6b55d91f2fab1f 100644 --- a/indra/newview/llsyswellwindow.cpp +++ b/indra/newview/llsyswellwindow.cpp @@ -203,10 +203,9 @@ void LLSysWellWindow::reshapeWindow() { new_window_height = MAX_WINDOW_HEIGHT; } - S32 newY = curRect.mTop + new_window_height - curRect.getHeight(); - S32 newWidth = curRect.getWidth() < MIN_WINDOW_WIDTH ? MIN_WINDOW_WIDTH - : curRect.getWidth(); - curRect.setLeftTopAndSize(curRect.mLeft, newY, newWidth, new_window_height); + S32 newWidth = curRect.getWidth() < MIN_WINDOW_WIDTH ? MIN_WINDOW_WIDTH : curRect.getWidth(); + + curRect.setLeftTopAndSize(curRect.mLeft, curRect.mTop, newWidth, new_window_height); reshape(curRect.getWidth(), curRect.getHeight(), TRUE); setRect(curRect); } diff --git a/indra/newview/lltoolbarview.cpp b/indra/newview/lltoolbarview.cpp index 5d2cebe031aa1e48e552c34602a9d0e5951276e5..ed1dfbb8cd5cb3f3508fb6d556b697ac4bdd76a4 100644 --- a/indra/newview/lltoolbarview.cpp +++ b/indra/newview/lltoolbarview.cpp @@ -30,12 +30,16 @@ #include "lltoolbarview.h" #include "llappviewer.h" +#include "llbutton.h" +#include "llclipboard.h" #include "lldir.h" -#include "llxmlnode.h" +#include "lldockablefloater.h" +#include "lldockcontrol.h" +#include "llimview.h" +#include "lltransientfloatermgr.h" #include "lltoolbar.h" -#include "llbutton.h" #include "lltooldraganddrop.h" -#include "llclipboard.h" +#include "llxmlnode.h" #include "llagent.h" // HACK for destinations guide on startup #include "llfloaterreg.h" // HACK for destinations guide on startup @@ -68,13 +72,14 @@ LLToolBarView::ToolbarSet::ToolbarSet() LLToolBarView::LLToolBarView(const LLToolBarView::Params& p) : LLUICtrl(p), - mToolbarLeft(NULL), - mToolbarRight(NULL), - mToolbarBottom(NULL), mDragStarted(false), mDragToolbarButton(NULL), mToolbarsLoaded(false) { + for (S32 i = 0; i < TOOLBAR_COUNT; i++) + { + mToolbars[i] = NULL; + } } void LLToolBarView::initFromParams(const LLToolBarView::Params& p) @@ -90,46 +95,100 @@ LLToolBarView::~LLToolBarView() BOOL LLToolBarView::postBuild() { - mToolbarLeft = getChild<LLToolBar>("toolbar_left"); - mToolbarRight = getChild<LLToolBar>("toolbar_right"); - mToolbarBottom = getChild<LLToolBar>("toolbar_bottom"); + mToolbars[TOOLBAR_LEFT] = getChild<LLToolBar>("toolbar_left"); + mToolbars[TOOLBAR_RIGHT] = getChild<LLToolBar>("toolbar_right"); + mToolbars[TOOLBAR_BOTTOM] = getChild<LLToolBar>("toolbar_bottom"); - mToolbarLeft->setStartDragCallback(boost::bind(LLToolBarView::startDragTool,_1,_2,_3)); - mToolbarLeft->setHandleDragCallback(boost::bind(LLToolBarView::handleDragTool,_1,_2,_3,_4)); - mToolbarLeft->setHandleDropCallback(boost::bind(LLToolBarView::handleDropTool,_1,_2,_3,_4)); - - mToolbarRight->setStartDragCallback(boost::bind(LLToolBarView::startDragTool,_1,_2,_3)); - mToolbarRight->setHandleDragCallback(boost::bind(LLToolBarView::handleDragTool,_1,_2,_3,_4)); - mToolbarRight->setHandleDropCallback(boost::bind(LLToolBarView::handleDropTool,_1,_2,_3,_4)); - - mToolbarBottom->setStartDragCallback(boost::bind(LLToolBarView::startDragTool,_1,_2,_3)); - mToolbarBottom->setHandleDragCallback(boost::bind(LLToolBarView::handleDragTool,_1,_2,_3,_4)); - mToolbarBottom->setHandleDropCallback(boost::bind(LLToolBarView::handleDropTool,_1,_2,_3,_4)); + for (int i = TOOLBAR_FIRST; i <= TOOLBAR_LAST; i++) + { + mToolbars[i]->setStartDragCallback(boost::bind(LLToolBarView::startDragTool,_1,_2,_3)); + mToolbars[i]->setHandleDragCallback(boost::bind(LLToolBarView::handleDragTool,_1,_2,_3,_4)); + mToolbars[i]->setHandleDropCallback(boost::bind(LLToolBarView::handleDropTool,_1,_2,_3,_4)); + mToolbars[i]->setButtonAddCallback(boost::bind(LLToolBarView::onToolBarButtonAdded,_1)); + mToolbars[i]->setButtonRemoveCallback(boost::bind(LLToolBarView::onToolBarButtonRemoved,_1)); + } LLAppViewer::instance()->setOnLoginCompletedCallback(boost::bind(&handleLoginToolbarSetup)); return TRUE; } -bool LLToolBarView::hasCommand(const LLCommandId& commandId) const +S32 LLToolBarView::hasCommand(const LLCommandId& commandId) const +{ + S32 command_location = TOOLBAR_NONE; + + for (S32 loc = TOOLBAR_FIRST; loc <= TOOLBAR_LAST; loc++) + { + if (mToolbars[loc]->hasCommand(commandId)) + { + command_location = loc; + break; + } + } + + return command_location; +} + +S32 LLToolBarView::addCommand(const LLCommandId& commandId, EToolBarLocation toolbar, int rank) +{ + int old_rank; + removeCommand(commandId, old_rank); + + S32 command_location = mToolbars[toolbar]->addCommand(commandId, rank); + + return command_location; +} + +S32 LLToolBarView::removeCommand(const LLCommandId& commandId, int& rank) { - bool has_command = false; - if (mToolbarLeft && !has_command) + S32 command_location = hasCommand(commandId); + rank = LLToolBar::RANK_NONE; + + if (command_location != TOOLBAR_NONE) { - has_command = mToolbarLeft->hasCommand(commandId); + rank = mToolbars[command_location]->removeCommand(commandId); } - if (mToolbarRight && !has_command) + + return command_location; +} + +S32 LLToolBarView::enableCommand(const LLCommandId& commandId, bool enabled) +{ + S32 command_location = hasCommand(commandId); + + if (command_location != TOOLBAR_NONE) + { + mToolbars[command_location]->enableCommand(commandId, enabled); + } + + return command_location; +} + +S32 LLToolBarView::stopCommandInProgress(const LLCommandId& commandId) +{ + S32 command_location = hasCommand(commandId); + + if (command_location != TOOLBAR_NONE) { - has_command = mToolbarRight->hasCommand(commandId); + mToolbars[command_location]->stopCommandInProgress(commandId); } - if (mToolbarBottom && !has_command) + + return command_location; +} + +S32 LLToolBarView::flashCommand(const LLCommandId& commandId, bool flash) +{ + S32 command_location = hasCommand(commandId); + + if (command_location != TOOLBAR_NONE) { - has_command = mToolbarBottom->hasCommand(commandId); + mToolbars[command_location]->flashCommand(commandId, flash); } - return has_command; + + return command_location; } -bool LLToolBarView::addCommand(const LLCommandId& command, LLToolBar* toolbar) +bool LLToolBarView::addCommandInternal(const LLCommandId& command, LLToolBar* toolbar) { LLCommandManager& mgr = LLCommandManager::instance(); if (mgr.getCommand(command)) @@ -147,6 +206,7 @@ bool LLToolBarView::addCommand(const LLCommandId& command, LLToolBar* toolbar) bool LLToolBarView::loadToolbars(bool force_default) { LLToolBarView::ToolbarSet toolbar_set; + bool err = false; // Load the toolbars.xml file std::string toolbar_file = gDirUtilp->getExpandedFilename(LL_PATH_PER_SL_ACCOUNT, "toolbars.xml"); @@ -164,80 +224,90 @@ bool LLToolBarView::loadToolbars(bool force_default) if(!LLXMLNode::parseFile(toolbar_file, root, NULL)) { llwarns << "Unable to load toolbars from file: " << toolbar_file << llendl; - return false; + err = true; } - if(!root->hasName("toolbars")) + + if (!err && !root->hasName("toolbars")) { llwarns << toolbar_file << " is not a valid toolbars definition file" << llendl; - return false; + err = true; } // Parse the toolbar settings LLXUIParser parser; + if (!err) + { parser.readXUI(root, toolbar_set, toolbar_file); - if (!toolbar_set.validateBlock()) + } + if (!err && !toolbar_set.validateBlock()) { - llerrs << "Unable to validate toolbars from file: " << toolbar_file << llendl; - return false; + llwarns << "Unable to validate toolbars from file: " << toolbar_file << llendl; + err = true; } - // Clear the toolbars now before adding the loaded commands and settings - if (mToolbarLeft) + if (err) { - mToolbarLeft->clearCommandsList(); + if (force_default) + { + llerrs << "Unable to load toolbars from default file : " << toolbar_file << llendl; + return false; } - if (mToolbarRight) - { - mToolbarRight->clearCommandsList(); + // Try to load the default toolbars + return loadToolbars(true); } - if (mToolbarBottom) + + // Clear the toolbars now before adding the loaded commands and settings + for (S32 i = TOOLBAR_FIRST; i <= TOOLBAR_LAST; i++) { - mToolbarBottom->clearCommandsList(); + if (mToolbars[i]) + { + mToolbars[i]->clearCommandsList(); + } } // Add commands to each toolbar - if (toolbar_set.left_toolbar.isProvided() && mToolbarLeft) + if (toolbar_set.left_toolbar.isProvided() && mToolbars[TOOLBAR_LEFT]) { if (toolbar_set.left_toolbar.button_display_mode.isProvided()) { LLToolBarEnums::ButtonType button_type = toolbar_set.left_toolbar.button_display_mode; - mToolbarLeft->setButtonType(button_type); + mToolbars[TOOLBAR_LEFT]->setButtonType(button_type); } - BOOST_FOREACH(const LLCommandId::Params& command_name_param, toolbar_set.left_toolbar.commands) + BOOST_FOREACH(const LLCommandId::Params& command_params, toolbar_set.left_toolbar.commands) { - if (addCommand(LLCommandId(command_name_param), mToolbarLeft) == false) + if (addCommandInternal(LLCommandId(command_params), mToolbars[TOOLBAR_LEFT])) { - llwarns << "Error adding command '" << command_name_param.name() << "' to left toolbar." << llendl; + llwarns << "Error adding command '" << command_params.name() << "' to left toolbar." << llendl; } } } - if (toolbar_set.right_toolbar.isProvided() && mToolbarRight) + if (toolbar_set.right_toolbar.isProvided() && mToolbars[TOOLBAR_RIGHT]) { if (toolbar_set.right_toolbar.button_display_mode.isProvided()) { LLToolBarEnums::ButtonType button_type = toolbar_set.right_toolbar.button_display_mode; - mToolbarRight->setButtonType(button_type); + mToolbars[TOOLBAR_RIGHT]->setButtonType(button_type); } - BOOST_FOREACH(const LLCommandId::Params& command_name_param, toolbar_set.right_toolbar.commands) + BOOST_FOREACH(const LLCommandId::Params& command_params, toolbar_set.right_toolbar.commands) { - if (addCommand(LLCommandId(command_name_param), mToolbarRight) == false) + if (addCommandInternal(LLCommandId(command_params), mToolbars[TOOLBAR_RIGHT])) { - llwarns << "Error adding command '" << command_name_param.name() << "' to right toolbar." << llendl; + llwarns << "Error adding command '" << command_params.name() << "' to right toolbar." << llendl; } } } - if (toolbar_set.bottom_toolbar.isProvided() && mToolbarBottom) + if (toolbar_set.bottom_toolbar.isProvided() && mToolbars[TOOLBAR_BOTTOM]) { if (toolbar_set.bottom_toolbar.button_display_mode.isProvided()) { LLToolBarEnums::ButtonType button_type = toolbar_set.bottom_toolbar.button_display_mode; - mToolbarBottom->setButtonType(button_type); + mToolbars[TOOLBAR_BOTTOM]->setButtonType(button_type); } - BOOST_FOREACH(const LLCommandId::Params& command_name_param, toolbar_set.bottom_toolbar.commands) + BOOST_FOREACH(const LLCommandId::Params& command_params, toolbar_set.bottom_toolbar.commands) { - if (addCommand(LLCommandId(command_name_param), mToolbarBottom) == false) + if (addCommandInternal(LLCommandId(command_params), mToolbars[TOOLBAR_BOTTOM])) { - llwarns << "Error adding command '" << command_name_param.name() << "' to bottom toolbar." << llendl; + llwarns << "Error adding command '" << command_params.name() << "' to bottom toolbar." << llendl; } } } @@ -269,20 +339,20 @@ void LLToolBarView::saveToolbars() const // Build the parameter tree from the toolbar data LLToolBarView::ToolbarSet toolbar_set; - if (mToolbarLeft) + if (mToolbars[TOOLBAR_LEFT]) { - toolbar_set.left_toolbar.button_display_mode = mToolbarLeft->getButtonType(); - addToToolset(mToolbarLeft->getCommandsList(),toolbar_set.left_toolbar); + toolbar_set.left_toolbar.button_display_mode = mToolbars[TOOLBAR_LEFT]->getButtonType(); + addToToolset(mToolbars[TOOLBAR_LEFT]->getCommandsList(), toolbar_set.left_toolbar); } - if (mToolbarRight) + if (mToolbars[TOOLBAR_RIGHT]) { - toolbar_set.right_toolbar.button_display_mode = mToolbarRight->getButtonType(); - addToToolset(mToolbarRight->getCommandsList(),toolbar_set.right_toolbar); + toolbar_set.right_toolbar.button_display_mode = mToolbars[TOOLBAR_RIGHT]->getButtonType(); + addToToolset(mToolbars[TOOLBAR_RIGHT]->getCommandsList(), toolbar_set.right_toolbar); } - if (mToolbarBottom) + if (mToolbars[TOOLBAR_BOTTOM]) { - toolbar_set.bottom_toolbar.button_display_mode = mToolbarBottom->getButtonType(); - addToToolset(mToolbarBottom->getCommandsList(),toolbar_set.bottom_toolbar); + toolbar_set.bottom_toolbar.button_display_mode = mToolbars[TOOLBAR_BOTTOM]->getButtonType(); + addToToolset(mToolbars[TOOLBAR_BOTTOM]->getCommandsList(), toolbar_set.bottom_toolbar); } // Serialize the parameter tree @@ -323,35 +393,122 @@ void LLToolBarView::addToToolset(command_id_list_t& command_list, Toolbar& toolb } } -void LLToolBarView::draw() +void LLToolBarView::onToolBarButtonAdded(LLView* button) { - //LLPanel* sizer_left = getChild<LLPanel>("sizer_left"); + llassert(button); - LLRect bottom_rect, left_rect, right_rect; + if (button->getName() == "speak") + { + // Add the "Speak" button as a control view in LLTransientFloaterMgr + // to prevent hiding the transient IM floater upon pressing "Speak". + LLTransientFloaterMgr::getInstance()->addControlView(button); + + // Redock incoming and/or outgoing call windows, if applicable + + LLFloater* incoming_floater = LLFloaterReg::getLastFloaterInGroup("incoming_call"); + LLFloater* outgoing_floater = LLFloaterReg::getLastFloaterInGroup("outgoing_call"); + + if (incoming_floater && incoming_floater->isShown()) + { + LLCallDialog* incoming = dynamic_cast<LLCallDialog *>(incoming_floater); + llassert(incoming); + + LLDockControl* dock_control = incoming->getDockControl(); + if (dock_control->getDock() == NULL) + { + incoming->dockToToolbarButton("speak"); + } + } + + if (outgoing_floater && outgoing_floater->isShown()) + { + LLCallDialog* outgoing = dynamic_cast<LLCallDialog *>(outgoing_floater); + llassert(outgoing); + + LLDockControl* dock_control = outgoing->getDockControl(); + if (dock_control->getDock() == NULL) + { + outgoing->dockToToolbarButton("speak"); + } + } + } + else if (button->getName() == "voice") + { + // Add the "Voice controls" button as a control view in LLTransientFloaterMgr + // to prevent hiding the transient IM floater upon pressing "Voice controls". + LLTransientFloaterMgr::getInstance()->addControlView(button); + } +} - if (mToolbarBottom) +void LLToolBarView::onToolBarButtonRemoved(LLView* button) +{ + llassert(button); + + if (button->getName() == "speak") { - mToolbarBottom->getParent()->reshape(mToolbarBottom->getParent()->getRect().getWidth(), mToolbarBottom->getRect().getHeight()); - mToolbarBottom->localRectToOtherView(mToolbarBottom->getLocalRect(), &bottom_rect, this); + LLTransientFloaterMgr::getInstance()->removeControlView(button); + + // Undock incoming and/or outgoing call windows + + LLFloater* incoming_floater = LLFloaterReg::getLastFloaterInGroup("incoming_call"); + LLFloater* outgoing_floater = LLFloaterReg::getLastFloaterInGroup("outgoing_call"); + + if (incoming_floater && incoming_floater->isShown()) + { + LLDockableFloater* incoming = dynamic_cast<LLDockableFloater *>(incoming_floater); + llassert(incoming); + + LLDockControl* dock_control = incoming->getDockControl(); + dock_control->setDock(NULL); + } + + if (outgoing_floater && outgoing_floater->isShown()) + { + LLDockableFloater* outgoing = dynamic_cast<LLDockableFloater *>(outgoing_floater); + llassert(outgoing); + + LLDockControl* dock_control = outgoing->getDockControl(); + dock_control->setDock(NULL); + } } - if (mToolbarLeft) + else if (button->getName() == "voice") { - mToolbarLeft->getParent()->reshape(mToolbarLeft->getRect().getWidth(), mToolbarLeft->getParent()->getRect().getHeight()); - mToolbarLeft->localRectToOtherView(mToolbarLeft->getLocalRect(), &left_rect, this); + LLTransientFloaterMgr::getInstance()->removeControlView(button); } - if (mToolbarRight) +} + +void LLToolBarView::draw() +{ + LLRect toolbar_rects[TOOLBAR_COUNT]; + + for (S32 i = TOOLBAR_FIRST; i <= TOOLBAR_LAST; i++) { - mToolbarRight->getParent()->reshape(mToolbarRight->getRect().getWidth(), mToolbarRight->getParent()->getRect().getHeight()); - mToolbarRight->localRectToOtherView(mToolbarRight->getLocalRect(), &right_rect, this); + if (mToolbars[i]) + { + LLLayoutStack::ELayoutOrientation orientation = LLToolBarEnums::getOrientation(mToolbars[i]->getSideType()); + + if (orientation == LLLayoutStack::HORIZONTAL) + { + mToolbars[i]->getParent()->reshape(mToolbars[i]->getParent()->getRect().getWidth(), mToolbars[i]->getRect().getHeight()); + } + else + { + mToolbars[i]->getParent()->reshape(mToolbars[i]->getRect().getWidth(), mToolbars[i]->getParent()->getRect().getHeight()); + } + + mToolbars[i]->localRectToOtherView(mToolbars[i]->getLocalRect(), &toolbar_rects[i], this); + } } // Draw drop zones if drop of a tool is active if (isToolDragged()) { LLColor4 drop_color = LLUIColorTable::instance().getColor( "ToolbarDropZoneColor" ); - gl_rect_2d(bottom_rect, drop_color, TRUE); - gl_rect_2d(left_rect, drop_color, TRUE); - gl_rect_2d(right_rect, drop_color, TRUE); + + for (S32 i = TOOLBAR_FIRST; i <= TOOLBAR_LAST; i++) + { + gl_rect_2d(toolbar_rects[i], drop_color, TRUE); + } } LLUICtrl::draw(); @@ -363,9 +520,9 @@ void LLToolBarView::draw() // ---------------------------------------- -void LLToolBarView::startDragTool(S32 x, S32 y, LLToolBarButton* button) +void LLToolBarView::startDragTool(S32 x, S32 y, LLToolBarButton* toolbarButton) { - resetDragTool(button); + resetDragTool(toolbarButton); // Flag the tool dragging but don't start it yet LLToolDragAndDrop::getInstance()->setDragStart( x, y ); @@ -391,9 +548,7 @@ BOOL LLToolBarView::handleDragTool( S32 x, S32 y, const LLUUID& uuid, LLAssetTyp // Second, stop the command if it is in progress and requires stopping! LLCommandId command_id = LLCommandId(uuid); - gToolBarView->mToolbarLeft->stopCommandInProgress(command_id); - gToolBarView->mToolbarRight->stopCommandInProgress(command_id); - gToolBarView->mToolbarBottom->stopCommandInProgress(command_id); + gToolBarView->stopCommandInProgress(command_id); gToolBarView->mDragStarted = true; return TRUE; @@ -424,10 +579,10 @@ BOOL LLToolBarView::handleDropTool( void* cargo_data, S32 x, S32 y, LLToolBar* t { // Suppress the command from the toolbars (including the one it's dropped in, // this will handle move position). - bool command_present = gToolBarView->hasCommand(command_id); + S32 old_toolbar_loc = gToolBarView->hasCommand(command_id); LLToolBar* old_toolbar = NULL; - if (command_present) + if (old_toolbar_loc != TOOLBAR_NONE) { llassert(gToolBarView->mDragToolbarButton); old_toolbar = gToolBarView->mDragToolbarButton->getParentByType<LLToolBar>(); @@ -437,9 +592,8 @@ BOOL LLToolBarView::handleDropTool( void* cargo_data, S32 x, S32 y, LLToolBar* t } else { - gToolBarView->mToolbarBottom->removeCommand(command_id); - gToolBarView->mToolbarLeft->removeCommand(command_id); - gToolBarView->mToolbarRight->removeCommand(command_id); + int old_rank = LLToolBar::RANK_NONE; + gToolBarView->removeCommand(command_id, old_rank); } } @@ -463,27 +617,29 @@ BOOL LLToolBarView::handleDropTool( void* cargo_data, S32 x, S32 y, LLToolBar* t return handled; } -void LLToolBarView::resetDragTool(LLToolBarButton* button) +void LLToolBarView::resetDragTool(LLToolBarButton* toolbarButton) { // Clear the saved command, toolbar and rank gToolBarView->mDragStarted = false; - gToolBarView->mDragToolbarButton = button; + gToolBarView->mDragToolbarButton = toolbarButton; } void LLToolBarView::setToolBarsVisible(bool visible) { - mToolbarBottom->getParent()->setVisible(visible); - mToolbarLeft->getParent()->setVisible(visible); - mToolbarRight->getParent()->setVisible(visible); + for (S32 i = TOOLBAR_FIRST; i <= TOOLBAR_LAST; i++) + { + mToolbars[i]->getParent()->setVisible(visible); + } } bool LLToolBarView::isModified() const { bool modified = false; - modified |= mToolbarBottom->isModified(); - modified |= mToolbarLeft->isModified(); - modified |= mToolbarRight->isModified(); + for (S32 i = TOOLBAR_FIRST; i <= TOOLBAR_LAST; i++) + { + modified |= mToolbars[i]->isModified(); + } return modified; } @@ -496,9 +652,11 @@ bool LLToolBarView::isModified() const void handleLoginToolbarSetup() { // Open the destinations guide by default on first login, per Rhett - if (gSavedSettings.getBOOL("FirstLoginThisInstall") || gAgent.isFirstLogin()) + if (gSavedPerAccountSettings.getBOOL("DisplayDestinationsOnInitialRun") || gAgent.isFirstLogin()) { LLFloaterReg::showInstance("destinations"); + + gSavedPerAccountSettings.setBOOL("DisplayDestinationsOnInitialRun", FALSE); } } diff --git a/indra/newview/lltoolbarview.h b/indra/newview/lltoolbarview.h index 2b26db3802332461ae8fba9c02ce43a3daa9102b..4307d1025804c082a5e3e8983fb2ba1b5129ff13 100644 --- a/indra/newview/lltoolbarview.h +++ b/indra/newview/lltoolbarview.h @@ -39,6 +39,19 @@ class LLUICtrlFactory; class LLToolBarView : public LLUICtrl { public: + typedef enum + { + TOOLBAR_NONE = 0, + TOOLBAR_LEFT, + TOOLBAR_RIGHT, + TOOLBAR_BOTTOM, + + TOOLBAR_COUNT, + + TOOLBAR_FIRST = TOOLBAR_LEFT, + TOOLBAR_LAST = TOOLBAR_BOTTOM, + } EToolBarLocation; + // Xui structure of the toolbar panel struct Params : public LLInitParam::Block<Params, LLUICtrl::Params> {}; @@ -52,6 +65,7 @@ class LLToolBarView : public LLUICtrl { Mandatory<LLToolBarEnums::ButtonType> button_display_mode; Multiple<LLCommandId::Params> commands; + Toolbar(); }; struct ToolbarSet : public LLInitParam::Block<ToolbarSet> @@ -59,6 +73,7 @@ class LLToolBarView : public LLUICtrl Optional<Toolbar> left_toolbar, right_toolbar, bottom_toolbar; + ToolbarSet(); }; @@ -66,9 +81,16 @@ class LLToolBarView : public LLUICtrl virtual ~LLToolBarView(); virtual BOOL postBuild(); virtual void draw(); + // Toolbar view interface with the rest of the world - // Checks if the commandId is being used somewhere in one of the toolbars - bool hasCommand(const LLCommandId& commandId) const; + // Checks if the commandId is being used somewhere in one of the toolbars, returns EToolBarLocation + S32 hasCommand(const LLCommandId& commandId) const; + S32 addCommand(const LLCommandId& commandId, EToolBarLocation toolbar, int rank = LLToolBar::RANK_NONE); + S32 removeCommand(const LLCommandId& commandId, int& rank); // Sets the rank the removed command was at, RANK_NONE if not found + S32 enableCommand(const LLCommandId& commandId, bool enabled); + S32 stopCommandInProgress(const LLCommandId& commandId); + S32 flashCommand(const LLCommandId& commandId, bool flash); + // Loads the toolbars from the existing user or default settings bool loadToolbars(bool force_default = false); // return false if load fails @@ -76,10 +98,10 @@ class LLToolBarView : public LLUICtrl static bool loadDefaultToolbars(); - static void startDragTool(S32 x, S32 y, LLToolBarButton* button); + static void startDragTool(S32 x, S32 y, LLToolBarButton* toolbarButton); static BOOL handleDragTool(S32 x, S32 y, const LLUUID& uuid, LLAssetType::EType type); static BOOL handleDropTool(void* cargo_data, S32 x, S32 y, LLToolBar* toolbar); - static void resetDragTool(LLToolBarButton* button); + static void resetDragTool(LLToolBarButton* toolbarButton); bool isModified() const; @@ -91,13 +113,14 @@ class LLToolBarView : public LLUICtrl private: void saveToolbars() const; - bool addCommand(const LLCommandId& commandId, LLToolBar* toolbar); + bool addCommandInternal(const LLCommandId& commandId, LLToolBar* toolbar); void addToToolset(command_id_list_t& command_list, Toolbar& toolbar) const; + static void onToolBarButtonAdded(LLView* button); + static void onToolBarButtonRemoved(LLView* button); + // Pointers to the toolbars handled by the toolbar view - LLToolBar* mToolbarLeft; - LLToolBar* mToolbarRight; - LLToolBar* mToolbarBottom; + LLToolBar* mToolbars[TOOLBAR_COUNT]; bool mToolbarsLoaded; bool mDragStarted; diff --git a/indra/newview/lltransientfloatermgr.cpp b/indra/newview/lltransientfloatermgr.cpp index c648a6a28adc892ced97913667ebcf0cb61c36b3..3d68c104894f5f59815221ed7655116948beb52d 100644 --- a/indra/newview/lltransientfloatermgr.cpp +++ b/indra/newview/lltransientfloatermgr.cpp @@ -42,9 +42,9 @@ LLTransientFloaterMgr::LLTransientFloaterMgr() &LLTransientFloaterMgr::leftMouseClickCallback, this, _2, _3, _4)); } - mGroupControls.insert(std::pair<ETransientGroup, std::set<LLView*> >(GLOBAL, std::set<LLView*>())); - mGroupControls.insert(std::pair<ETransientGroup, std::set<LLView*> >(DOCKED, std::set<LLView*>())); - mGroupControls.insert(std::pair<ETransientGroup, std::set<LLView*> >(IM, std::set<LLView*>())); + mGroupControls.insert(std::pair<ETransientGroup, controls_set_t >(GLOBAL, controls_set_t())); + mGroupControls.insert(std::pair<ETransientGroup, controls_set_t >(DOCKED, controls_set_t())); + mGroupControls.insert(std::pair<ETransientGroup, controls_set_t >(IM, controls_set_t())); } void LLTransientFloaterMgr::registerTransientFloater(LLTransientFloater* floater) @@ -59,12 +59,16 @@ void LLTransientFloaterMgr::unregisterTransientFloater(LLTransientFloater* float void LLTransientFloaterMgr::addControlView(ETransientGroup group, LLView* view) { - mGroupControls.find(group)->second.insert(view); + if (!view) return; + + mGroupControls.find(group)->second.insert(view->getHandle()); } void LLTransientFloaterMgr::removeControlView(ETransientGroup group, LLView* view) { - mGroupControls.find(group)->second.erase(view); + if (!view) return; + + mGroupControls.find(group)->second.erase(view->getHandle()); } void LLTransientFloaterMgr::addControlView(LLView* view) @@ -89,7 +93,7 @@ void LLTransientFloaterMgr::hideTransientFloaters(S32 x, S32 y) { ETransientGroup group = floater->getGroup(); - bool hide = isControlClicked(mGroupControls.find(group)->second, x, y); + bool hide = isControlClicked(group, mGroupControls.find(group)->second, x, y); if (hide) { floater->setTransientVisible(FALSE); @@ -98,13 +102,25 @@ void LLTransientFloaterMgr::hideTransientFloaters(S32 x, S32 y) } } -bool LLTransientFloaterMgr::isControlClicked(std::set<LLView*>& set, S32 x, S32 y) +bool LLTransientFloaterMgr::isControlClicked(ETransientGroup group, controls_set_t& set, S32 x, S32 y) { + std::list< LLHandle<LLView> > dead_handles; + bool res = true; for (controls_set_t::iterator it = set.begin(); it != set.end(); it++) { - LLView* control_view = *it; + LLView* control_view = NULL; + + LLHandle<LLView> handle = *it; + if (handle.isDead()) + { + dead_handles.push_back(handle); + continue; + } + + control_view = handle.get(); + if (!control_view->getVisible()) { continue; @@ -118,6 +134,13 @@ bool LLTransientFloaterMgr::isControlClicked(std::set<LLView*>& set, S32 x, S32 break; } } + + for (std::list< LLHandle<LLView> >::iterator it = dead_handles.begin(); it != dead_handles.end(); ++it) + { + LLHandle<LLView> handle = *it; + mGroupControls.find(group)->second.erase(handle); + } + return res; } @@ -130,8 +153,8 @@ void LLTransientFloaterMgr::leftMouseClickCallback(S32 x, S32 y, return; } - bool hide = isControlClicked(mGroupControls.find(DOCKED)->second, x, y) - && isControlClicked(mGroupControls.find(GLOBAL)->second, x, y); + bool hide = isControlClicked(DOCKED, mGroupControls.find(DOCKED)->second, x, y) + && isControlClicked(GLOBAL, mGroupControls.find(GLOBAL)->second, x, y); if (hide) { hideTransientFloaters(x, y); diff --git a/indra/newview/lltransientfloatermgr.h b/indra/newview/lltransientfloatermgr.h index 2919244121bdbe80dd0979a8f18d76344f42ecae..b4611c8c87bb4d2954938fba16110e08d9c72a06 100644 --- a/indra/newview/lltransientfloatermgr.h +++ b/indra/newview/lltransientfloatermgr.h @@ -56,14 +56,15 @@ class LLTransientFloaterMgr: public LLSingleton<LLTransientFloaterMgr> void removeControlView(LLView* view); private: + typedef std::set<LLHandle<LLView> > controls_set_t; + typedef std::map<ETransientGroup, controls_set_t > group_controls_t; + void hideTransientFloaters(S32 x, S32 y); void leftMouseClickCallback(S32 x, S32 y, MASK mask); - bool isControlClicked(std::set<LLView*>& set, S32 x, S32 y); -private: + bool isControlClicked(ETransientGroup group, controls_set_t& set, S32 x, S32 y); + std::set<LLTransientFloater*> mTransSet; - typedef std::set<LLView*> controls_set_t; - typedef std::map<ETransientGroup, std::set<LLView*> > group_controls_t; group_controls_t mGroupControls; }; diff --git a/indra/newview/llviewermenu.cpp b/indra/newview/llviewermenu.cpp index 0909714951f18dc791ea74a2321eaf5b396c461f..22d95563d86d78f206ccdfe1c988ff46aa367e5c 100644 --- a/indra/newview/llviewermenu.cpp +++ b/indra/newview/llviewermenu.cpp @@ -7970,6 +7970,9 @@ void initialize_menus() view_listener_t::addEnable(new LLUploadCostCalculator(), "Upload.CalculateCosts"); + + commit.add("Inventory.NewWindow", boost::bind(&LLFloaterInventory::showAgentInventory)); + // Agent commit.add("Agent.toggleFlying", boost::bind(&LLAgent::toggleFlying)); enable.add("Agent.enableFlying", boost::bind(&LLAgent::enableFlying)); @@ -8345,6 +8348,8 @@ 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)); + enable.add("EnablePayObject", boost::bind(&enable_pay_object)); enable.add("EnablePayAvatar", boost::bind(&enable_pay_avatar)); enable.add("EnableEdit", boost::bind(&enable_object_edit)); diff --git a/indra/newview/skins/default/textures/windows/Flyout_Left.png b/indra/newview/skins/default/textures/windows/Flyout_Left.png new file mode 100644 index 0000000000000000000000000000000000000000..6ac9fe2efd4bad4f71070826fd23b1a64eb5080a Binary files /dev/null and b/indra/newview/skins/default/textures/windows/Flyout_Left.png differ diff --git a/indra/newview/skins/default/textures/windows/Flyout_Right.png b/indra/newview/skins/default/textures/windows/Flyout_Right.png new file mode 100644 index 0000000000000000000000000000000000000000..aa1f0625aadf1c81e5034f21eb66ecfa88a451ae Binary files /dev/null and b/indra/newview/skins/default/textures/windows/Flyout_Right.png differ diff --git a/indra/newview/skins/default/xui/de/inspect_group.xml b/indra/newview/skins/default/xui/de/inspect_group.xml index d85ca7ce4dde0b22a63db7e5b855dfd0938d5f6b..60fa8ff0d83b8bc47a08203732b2b0bf8ca8882f 100644 --- a/indra/newview/skins/default/xui/de/inspect_group.xml +++ b/indra/newview/skins/default/xui/de/inspect_group.xml @@ -26,7 +26,7 @@ Hoch solln sie leben! Elche forever! Und auch Mungos! <text name="group_cost"> Mitgliedschaft: 123 L$ </text> - <button label="Zusammen" name="join_btn"/> + <button label="Beitreten" name="join_btn"/> <button label="Verlassen" name="leave_btn"/> <button label="Profil anzeigen" name="view_profile_btn"/> </floater> diff --git a/indra/newview/skins/default/xui/de/panel_preferences_general.xml b/indra/newview/skins/default/xui/de/panel_preferences_general.xml index 5c8b8302c8ead0cd48a74abb41669d815d08a1bd..979ccba48d1fc4dbe72908f446a1f089953765b5 100644 --- a/indra/newview/skins/default/xui/de/panel_preferences_general.xml +++ b/indra/newview/skins/default/xui/de/panel_preferences_general.xml @@ -16,7 +16,7 @@ <combo_box.item label="РуÑÑкий (Russisch) – Beta" name="Russian"/> <combo_box.item label="Türkçe (Türkisch) – Beta" name="Turkish"/> <combo_box.item label="日本語 (Japanisch) - Beta" name="(Japanese)"/> - <combo_box.item label="æ£é«” (Traditionelles Chinesisch) – Beta" name="Traditional Chinese"/> + <combo_box.item label="æ£é«”䏿–‡ (Traditionelles Chinesisch) – Beta" name="Traditional Chinese"/> </combo_box> <text name="language_textbox2"> (Erfordert Neustart) diff --git a/indra/newview/skins/default/xui/en/floater_chat_bar.xml b/indra/newview/skins/default/xui/en/floater_chat_bar.xml index 989b4a0580291b268ce78582cd65674b76793bbe..87606c1a2aaeb61e0ca8ebd30f8c02498fb776d6 100644 --- a/indra/newview/skins/default/xui/en/floater_chat_bar.xml +++ b/indra/newview/skins/default/xui/en/floater_chat_bar.xml @@ -15,6 +15,7 @@ min_height="60" min_width="150" can_resize="true" + default_tab_group="1" name="chat_bar" width="380"> <panel @@ -26,50 +27,56 @@ visible="false" filename="panel_nearby_chat.xml" name="nearby_chat" /> - <panel width="380" height="31" left="0" bottom="-1" follows="left|right|bottom"> - <line_editor - border_style="line" - border_thickness="1" - follows="left|right" - height="23" - label="Click here to chat." - layout="topleft" - left_delta="7" - left="0" - max_length_bytes="1023" - name="chat_box" - text_pad_left="5" - text_pad_right="25" - tool_tip="Press Enter to say, Ctrl+Enter to shout" - top="2" - width="335" /> - <output_monitor - auto_update="true" - follows="right" - draw_border="false" - height="16" - layout="topleft" - left_pad="-24" - mouse_opaque="true" - name="chat_zone_indicator" - top="6" - visible="true" - width="20" /> - <button - follows="right" - is_toggle="true" - width="20" - top="2" - layout="topleft" - left_pad="12" - image_disabled="ComboButton_UpOff" - image_unselected="ComboButton_UpOff" - image_selected="ComboButton_On" - image_pressed="ComboButton_UpSelected" - image_pressed_selected="ComboButton_Selected" - height="23" - name="show_nearby_chat" - tool_tip="Shows/hides nearby chat log"> - </button> + <panel width="380" + height="31" + left="0" + bottom="-1" + follows="left|right|bottom" + tab_group="1"> + <line_editor + border_style="line" + border_thickness="1" + follows="left|right" + height="23" + label="Click here to chat." + layout="topleft" + left_delta="7" + left="0" + max_length_bytes="1023" + name="chat_box" + text_pad_left="5" + text_pad_right="25" + tool_tip="Press Enter to say, Ctrl+Enter to shout" + top="2" + width="335" /> + <output_monitor + auto_update="true" + follows="right" + draw_border="false" + height="16" + layout="topleft" + left_pad="-24" + mouse_opaque="true" + name="chat_zone_indicator" + top="6" + visible="true" + width="20" /> + <button + follows="right" + is_toggle="true" + width="20" + top="2" + layout="topleft" + left_pad="12" + image_disabled="ComboButton_UpOff" + image_unselected="ComboButton_UpOff" + image_selected="ComboButton_On" + image_pressed="ComboButton_UpSelected" + image_pressed_selected="ComboButton_Selected" + height="23" + chrome="true" + name="show_nearby_chat" + tool_tip="Shows/hides nearby chat log"> + </button> </panel> </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 9db6568ee3965a766cdb9a9d5f45f2ae1c0dc407..ffbb6aa28b4af568d0d616d66b6bfaa7be4bb866 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" + save_dock_state="true" title="CALLING" width="410"> <floater.string diff --git a/indra/newview/skins/default/xui/en/floater_toybox.xml b/indra/newview/skins/default/xui/en/floater_toybox.xml index c7e09bf45e2ed4f33b4b628f9c7b2d2fe2cfb3dc..ef3951a1cda3895e9e68a9d1c569bb8a63b26fe1 100644 --- a/indra/newview/skins/default/xui/en/floater_toybox.xml +++ b/indra/newview/skins/default/xui/en/floater_toybox.xml @@ -13,7 +13,7 @@ open_positioning="centered" save_rect="true" single_instance="true" - title="CUSTOMIZE TOOLBARS" + title="TOOLBAR BUTTONS" width="650"> <text follows="left|top" diff --git a/indra/newview/skins/default/xui/en/floater_voice_controls.xml b/indra/newview/skins/default/xui/en/floater_voice_controls.xml index 93a04050b64025f869f924f0552ae9bb9df58b96..6807b01fa3ebe2eae75334b0a01aaa0dfc182efa 100644 --- a/indra/newview/skins/default/xui/en/floater_voice_controls.xml +++ b/indra/newview/skins/default/xui/en/floater_voice_controls.xml @@ -89,7 +89,7 @@ visible="true" width="20" /> </layout_panel> - <layout_panel name="leave_call_panel" height="26" auto_resize="false"> + <layout_panel name="leave_call_panel" height="26" min_height="26" user_resize="false" auto_resize="false"> <layout_stack clip="true" follows="left|top|right" diff --git a/indra/newview/skins/default/xui/en/inspect_remote_object.xml b/indra/newview/skins/default/xui/en/inspect_remote_object.xml index ef3dd844cd04fe8f2278bb9f08c4ba40e6993d14..e83257d2a0da096229b6c9eeee6295b3b8238e63 100644 --- a/indra/newview/skins/default/xui/en/inspect_remote_object.xml +++ b/indra/newview/skins/default/xui/en/inspect_remote_object.xml @@ -36,7 +36,7 @@ height="16" left="8" name="object_owner_label" - width="55" + width="65" top_pad="12"> Owner: </text> diff --git a/indra/newview/skins/default/xui/en/menu_toolbars.xml b/indra/newview/skins/default/xui/en/menu_toolbars.xml index 59912b5503639e7a1087d1496396e61740973c31..7384114d7d9036816b4105de14bf7c657f41e0f1 100644 --- a/indra/newview/skins/default/xui/en/menu_toolbars.xml +++ b/indra/newview/skins/default/xui/en/menu_toolbars.xml @@ -3,7 +3,7 @@ layout="topleft" name="Toolbars Popup" visible="false"> - <menu_item_call label="Choose buttons..." + <menu_item_call label="Toolbar buttons..." layout="topleft" name="Chose Buttons"> <menu_item_call.on_click function="Floater.Show" diff --git a/indra/newview/skins/default/xui/en/menu_viewer.xml b/indra/newview/skins/default/xui/en/menu_viewer.xml index 01f9c23afdd28a875b7c93df55e73aab3fe93b64..9c44d90a6ec7959d47b81955e1bca86b7849663d 100644 --- a/indra/newview/skins/default/xui/en/menu_viewer.xml +++ b/indra/newview/skins/default/xui/en/menu_viewer.xml @@ -43,6 +43,15 @@ function="Floater.Toggle" parameter="inventory" /> </menu_item_check> + <menu_item_call + label="New Inventory Window" + name="NewInventoryWindow" + shortcut="control|shift|I" + visible="false"> + <menu_item_call.on_click + function="Inventory.NewWindow" + parameter="" /> + </menu_item_call> <menu_item_check label="Gestures..." name="Gestures" @@ -166,7 +175,7 @@ parameter="preferences" /> </menu_item_call> <menu_item_call - label="Toolbars..." + label="Toolbar buttons..." name="Toolbars" shortcut="control|T"> <menu_item_call.on_click diff --git a/indra/newview/skins/default/xui/en/panel_preferences_general.xml b/indra/newview/skins/default/xui/en/panel_preferences_general.xml index 0a1c0872e92a00a1b7ef0edb101090e007382a15..4079a80924972fc55a5b92724d524faac1701323 100644 --- a/indra/newview/skins/default/xui/en/panel_preferences_general.xml +++ b/indra/newview/skins/default/xui/en/panel_preferences_general.xml @@ -92,7 +92,7 @@ value="ja" /> <combo_box.item enabled="true" - label="æ£é«” (Traditional Chinese) - Beta" + label="æ£é«”䏿–‡ (Traditional Chinese) - Beta" name="Traditional Chinese" value="zh" /> </combo_box> diff --git a/indra/newview/skins/default/xui/en/panel_status_bar.xml b/indra/newview/skins/default/xui/en/panel_status_bar.xml index 422bbada7ff49071c79a6b9ebe129b69dc8963bf..3239c4e531f56f3ad379b60e8a5f7157e119ea25 100644 --- a/indra/newview/skins/default/xui/en/panel_status_bar.xml +++ b/indra/newview/skins/default/xui/en/panel_status_bar.xml @@ -2,7 +2,7 @@ <panel background_opaque="true" background_visible="true" - bg_opaque_color="MouseGray" + bg_opaque_color="DkGray" chrome="true" follows="top|right" height="19" @@ -39,10 +39,7 @@ width="160" top="1" follows="right|top" - name="balance_bg" - bg_visible="true" - background_opaque="true" - bg_opaque_image="bevel_background"> + name="balance_bg"> <text halign="center" font="SansSerifSmall" diff --git a/indra/newview/skins/default/xui/en/panel_topinfo_bar.xml b/indra/newview/skins/default/xui/en/panel_topinfo_bar.xml index 79f29777ce62d9e737d614c394cebcc4fb422401..fc527f5f9d2182fb20b04d31e68445c8e6acf7f2 100644 --- a/indra/newview/skins/default/xui/en/panel_topinfo_bar.xml +++ b/indra/newview/skins/default/xui/en/panel_topinfo_bar.xml @@ -4,7 +4,7 @@ background_opaque="false" bg_opaque_color="Black_50" bg_alpha_color="Black_50" - follows="left|top|right" + follows="left|top" height="19" layout="topleft" name="topinfo_bar" diff --git a/indra/newview/skins/default/xui/en/strings.xml b/indra/newview/skins/default/xui/en/strings.xml index 24cec13c4c1bca19b295b896202630153a0b5161..ec230773cc5a37074553c504dc32bccbd0892321 100644 --- a/indra/newview/skins/default/xui/en/strings.xml +++ b/indra/newview/skins/default/xui/en/strings.xml @@ -2271,7 +2271,7 @@ Returns a string with the requested data about the region <string name="NextStipendDay" value="The next stipend day is " /> <string name="GroupPlanningDate">[mthnum,datetime,utc]/[day,datetime,utc]/[year,datetime,utc]</string> <string name="GroupIndividualShare" value=" Group Individual Share" /> - <string name="GroupColumn" value=" Group" /> + <string name="GroupColumn" value=" Group" /> <string name="Balance">Balance</string> <string name="Credits">Credits</string> <string name="Debits">Debits</string> @@ -3711,6 +3711,10 @@ Try enclosing path to the editor with double quotes. <string name="Command_View_Tooltip">Changing camera angle</string> <string name="Command_Voice_Tooltip">Volume controls for calls and people near you in world</string> + <string name="Toolbar_Bottom_Tooltip">currently in your bottom toolbar</string> + <string name="Toolbar_Left_Tooltip" >currently in your left toolbar</string> + <string name="Toolbar_Right_Tooltip" >currently in your right toolbar</string> + <!-- Mesh UI terms --> <string name="Retain%">Retain%</string> <string name="Detail">Detail</string> diff --git a/indra/newview/skins/default/xui/en/widgets/toolbar.xml b/indra/newview/skins/default/xui/en/widgets/toolbar.xml index 7e7a9c61cfc6399ada520398700fd74620e5e13b..0aa478ace9fc66945f817d827bad357f255d1f0b 100644 --- a/indra/newview/skins/default/xui/en/widgets/toolbar.xml +++ b/indra/newview/skins/default/xui/en/widgets/toolbar.xml @@ -30,6 +30,8 @@ image_overlay_alignment="left" use_ellipses="true" auto_resize="true" + button_flash_count="99999" + button_flash_rate="1.0" flash_color="EmphasisColor"/> <button_icon pad_left="10" pad_right="10" @@ -49,5 +51,7 @@ chrome="true" use_ellipses="true" auto_resize="true" + button_flash_count="99999" + button_flash_rate="1.0" flash_color="EmphasisColor"/> </toolbar> diff --git a/indra/newview/skins/default/xui/es/panel_preferences_general.xml b/indra/newview/skins/default/xui/es/panel_preferences_general.xml index 920729bb07393a72a1527726eda3f8bc563d9110..4fc163f5b67e02c5bed29c213356842c7e0844e9 100644 --- a/indra/newview/skins/default/xui/es/panel_preferences_general.xml +++ b/indra/newview/skins/default/xui/es/panel_preferences_general.xml @@ -16,7 +16,7 @@ <combo_box.item label="РуÑÑкий (Ruso) - Beta" name="Russian"/> <combo_box.item label="Türkçe (Turco) - Beta" name="Turkish"/> <combo_box.item label="日本語 (Japonés) - Beta" name="(Japanese)"/> - <combo_box.item label="æ£é«” (Chino tradicional) - Beta" name="Traditional Chinese"/> + <combo_box.item label="æ£é«”䏿–‡ (Chino tradicional) - Beta" name="Traditional Chinese"/> </combo_box> <text name="language_textbox2"> (requiere reiniciar) diff --git a/indra/newview/skins/default/xui/fr/panel_preferences_general.xml b/indra/newview/skins/default/xui/fr/panel_preferences_general.xml index dd4c1c9f63fbcc285be46c097231230c40a1c22d..66b84af3aa57168c81a6468b94cbde0052c2423e 100644 --- a/indra/newview/skins/default/xui/fr/panel_preferences_general.xml +++ b/indra/newview/skins/default/xui/fr/panel_preferences_general.xml @@ -16,7 +16,7 @@ <combo_box.item label="РуÑÑкий (Russe) - Bêta" name="Russian"/> <combo_box.item label="Türkçe (Turc) - Bêta" name="Turkish"/> <combo_box.item label="日本語 (Japonais) - Bêta" name="(Japanese)"/> - <combo_box.item label="æ£é«” (Chinois traditionnel) - Bêta" name="Traditional Chinese"/> + <combo_box.item label="æ£é«”䏿–‡ (Chinois traditionnel) - Bêta" name="Traditional Chinese"/> </combo_box> <text name="language_textbox2"> (redémarrage requis) diff --git a/indra/newview/skins/default/xui/it/panel_preferences_general.xml b/indra/newview/skins/default/xui/it/panel_preferences_general.xml index 4f521054049338e961eb191e861d5e7cad896148..90a833471ceb4a019974a91346eae64ffce6f8ff 100644 --- a/indra/newview/skins/default/xui/it/panel_preferences_general.xml +++ b/indra/newview/skins/default/xui/it/panel_preferences_general.xml @@ -16,7 +16,7 @@ <combo_box.item label="РуÑÑкий (Russo) - Beta" name="Russian"/> <combo_box.item label="Türkçe (Turco) - Beta" name="Turkish"/> <combo_box.item label="日本語 (Giapponese) - Beta" name="(Japanese)"/> - <combo_box.item label="æ£é«” (Cinese tradizionale) - Beta" name="Traditional Chinese"/> + <combo_box.item label="æ£é«”䏿–‡ (Cinese tradizionale) - Beta" name="Traditional Chinese"/> </combo_box> <text name="language_textbox2"> (Richiede il riavvio) diff --git a/indra/newview/skins/default/xui/ja/panel_preferences_general.xml b/indra/newview/skins/default/xui/ja/panel_preferences_general.xml index 51db95735b2386acc3967b253ac34d9f6a7bab17..1bafa52fbe1fbcc9ce2f77039e14a6028b7b6a1b 100644 --- a/indra/newview/skins/default/xui/ja/panel_preferences_general.xml +++ b/indra/newview/skins/default/xui/ja/panel_preferences_general.xml @@ -13,10 +13,10 @@ <combo_box.item label="Italiano (イタリア語) - ベータ" name="Italian"/> <combo_box.item label="Polski (ãƒãƒ¼ãƒ©ãƒ³ãƒ‰èªžï¼‰ - ベータ" name="Polish"/> <combo_box.item label="Português(ãƒãƒ«ãƒˆã‚¬ãƒ«èªžï¼‰ - ベータ" name="Portugese"/> - <combo_box.item label="РуÑÑкий (Russian) - Beta" name="Russian"/> - <combo_box.item label="Türkçe (Turkish) - Beta" name="Turkish"/> + <combo_box.item label="РуÑÑкий (ãƒã‚·ã‚¢èªžï¼‰ - ベータ" name="Russian"/> + <combo_box.item label="Türkçe (トルコ語) - ベータ" name="Turkish"/> <combo_box.item label="日本語 – ベータ" name="(Japanese)"/> - <combo_box.item label="æ£é«” (Traditional Chinese) - Beta" name="Traditional Chinese"/> + <combo_box.item label="æ£é«”䏿–‡ (ä¸å›½èªž - ç¹ä½“å—) - ベータ" name="Traditional Chinese"/> </combo_box> <text name="language_textbox2"> (å†èµ·å‹•後ã«åæ˜ ï¼‰ diff --git a/indra/newview/skins/default/xui/pt/panel_preferences_general.xml b/indra/newview/skins/default/xui/pt/panel_preferences_general.xml index 1c19a55de65bb5470b63ffeca3f9239e5b866c4d..c53aa7d5f70e72ecc45c06b5ac72ee0e69743960 100644 --- a/indra/newview/skins/default/xui/pt/panel_preferences_general.xml +++ b/indra/newview/skins/default/xui/pt/panel_preferences_general.xml @@ -16,7 +16,7 @@ <combo_box.item label="РуÑÑкий (Russo) - Beta" name="Russian"/> <combo_box.item label="Türkçe (Turco) - Beta" name="Turkish"/> <combo_box.item label="日本語 (Japonês) - Beta" name="(Japanese)"/> - <combo_box.item label="æ£é«” (Chinês tradicional) - Beta" name="Traditional Chinese"/> + <combo_box.item label="æ£é«”䏿–‡ (Chinês tradicional) - Beta" name="Traditional Chinese"/> </combo_box> <text name="language_textbox2"> (Reinicie para trocar de idioma) diff --git a/indra/newview/skins/default/xui/ru/floater_day_cycle_options.xml b/indra/newview/skins/default/xui/ru/floater_day_cycle_options.xml deleted file mode 100644 index 7c702f246dc4f6f33c54c0a51bd05ae5c6048035..0000000000000000000000000000000000000000 --- a/indra/newview/skins/default/xui/ru/floater_day_cycle_options.xml +++ /dev/null @@ -1,95 +0,0 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes"?> -<floater name="Day Cycle Floater" title="РЕДÐКТОРСУТОЧÐОГО ЦИКЛÐ"> - <tab_container name="Day Cycle Tabs"> - <panel label="Суточный цикл" name="Day Cycle"> - <multi_slider initial_value="0" name="WLTimeSlider"/> - <multi_slider initial_value="0" name="WLDayCycleKeys"/> - <text name="WL12am"> - 00:00 - </text> - <text name="WL3am"> - 03:00 - </text> - <text name="WL6am"> - 06:00 - </text> - <text name="WL9amHash"> - 09:00 - </text> - <text name="WL12pmHash"> - 12:00 - </text> - <text name="WL3pm"> - 15:00 - </text> - <text name="WL6pm"> - 18:00 - </text> - <text name="WL9pm"> - 21:00 - </text> - <text name="WL12am2"> - 00:00 - </text> - <text name="WL12amHash"> - | - </text> - <text name="WL3amHash"> - I - </text> - <text name="WL6amHash"> - | - </text> - <text name="WL9amHash2"> - I - </text> - <text name="WL12pmHash2"> - | - </text> - <text name="WL3pmHash"> - I - </text> - <text name="WL6pmHash"> - | - </text> - <text name="WL9pmHash"> - I - </text> - <text name="WL12amHash2"> - | - </text> - <button label="Добавить ключ" label_selected="Добавить ключ" name="WLAddKey"/> - <button label="Удалить ключ" label_selected="Удалить ключ" name="WLDeleteKey"/> - <text name="WLCurKeyFrameText"> - ÐаÑтройки ключевого кадра: - </text> - <text name="WLCurKeyTimeText"> - Ключевое времÑ: - </text> - <spinner label="ч" name="WLCurKeyHour"/> - <spinner label="мин" name="WLCurKeyMin"/> - <text name="WLCurKeyTimeText2"> - ÐšÐ»ÑŽÑ‡ÐµÐ²Ð°Ñ Ð½Ð°Ñтройка: - </text> - <combo_box label="ÐаÑтройка" name="WLKeyPresets"/> - <text name="DayCycleText"> - ПривÑзка: - </text> - <combo_box label="5 мин" name="WLSnapOptions"/> - <text name="DayCycleText2"> - ДлительноÑть цикла: - </text> - <spinner label="ч" name="WLLengthOfDayHour"/> - <spinner label="мин" name="WLLengthOfDayMin"/> - <spinner label="Ñ" name="WLLengthOfDaySec"/> - <text name="DayCycleText3"> - ПроÑмотр: - </text> - <button label="Проиграть" label_selected="Проиграть" name="WLAnimSky"/> - <button label="Стоп!" label_selected="Стоп" name="WLStopAnimSky"/> - <button label="ИÑпользовать Ð²Ñ€ÐµÐ¼Ñ Ð² землевладении" label_selected="Перейти на Ð²Ñ€ÐµÐ¼Ñ Ð·ÐµÐ¼Ð»ÐµÐ²Ð»Ð°Ð´ÐµÐ½Ð¸Ñ" name="WLUseLindenTime"/> - <button label="Сохранить теÑтовый день" label_selected="Сохранить теÑтовый день" name="WLSaveDayCycle"/> - <button label="Загрузить теÑтовый день" label_selected="Загрузить теÑтовый день" name="WLLoadDayCycle"/> - </panel> - </tab_container> -</floater> diff --git a/indra/newview/skins/default/xui/ru/floater_joystick.xml b/indra/newview/skins/default/xui/ru/floater_joystick.xml index 239078974684f28278ebed7caaea0abfa6382d05..cc931522257ef853f1fa72fde5bdd51488c8a578 100644 --- a/indra/newview/skins/default/xui/ru/floater_joystick.xml +++ b/indra/newview/skins/default/xui/ru/floater_joystick.xml @@ -4,13 +4,13 @@ уÑтройÑтво не выбрано </floater.string> <check_box label="Включить джойÑтик:" name="enable_joystick"/> - <spinner label="Ðаложение по оÑи X" name="JoystickAxis1"/> - <spinner label="Ðаложение по оÑи Y" name="JoystickAxis2"/> - <spinner label="Ðаложение по оÑи Z" name="JoystickAxis0"/> - <spinner label="Ðаложение уклонов" name="JoystickAxis4"/> - <spinner label="Ðаложение Ñгибов" name="JoystickAxis5"/> - <spinner label="Ðаложение вращениÑ" name="JoystickAxis3"/> - <spinner label="Ðаложение маÑштабированиÑ" name="JoystickAxis6"/> + <spinner label="Ðаложение по X" name="JoystickAxis1"/> + <spinner label="Ðаложение по Y" name="JoystickAxis2"/> + <spinner label="Ðаложение по Z" name="JoystickAxis0"/> + <spinner label="Ð. уклонов" name="JoystickAxis4"/> + <spinner label="Ð. Ñгибов" name="JoystickAxis5"/> + <spinner label="Ð. вращениÑ" name="JoystickAxis3"/> + <spinner label="Ð. маÑштабир." name="JoystickAxis6"/> <check_box label="МаÑштабирование" name="ZoomDirect"/> <check_box label="3D курÑор" name="Cursor3D"/> <check_box label="Ðвтоуровень" name="AutoLeveling"/> @@ -18,7 +18,7 @@ Режимы управлениÑ: </text> <check_box label="Ðватар" name="JoystickAvatarEnabled"/> - <check_box label="СтроительÑтво" name="JoystickBuildEnabled"/> + <check_box label="Стройка" name="JoystickBuildEnabled"/> <check_box label="Камера" name="JoystickFlycamEnabled"/> <stat_view label="Монитор джойÑтика" name="axis_view"> <stat_bar label="ОÑÑŒ 0" name="axis0"/> @@ -56,13 +56,13 @@ ÐÐµÐ²Ð¸Ð´Ð¸Ð¼Ð°Ñ Ð·Ð¾Ð½Ð° по Z </text> <text name="PitchDeadZone"> - ÐÐµÐ²Ð¸Ð´Ð¸Ð¼Ð°Ñ Ð·Ð¾Ð½Ð° уклона + Ðевид. зона уклона </text> <text name="YawDeadZone"> - ÐÐµÐ²Ð¸Ð´Ð¸Ð¼Ð°Ñ Ð·Ð¾Ð½Ð° Ñгиба + Ðевид. зона Ñгиба </text> <text name="RollDeadZone"> - ÐÐµÐ²Ð¸Ð´Ð¸Ð¼Ð°Ñ Ð·Ð¾Ð½Ð° Ð²Ñ€Ð°Ñ‰ÐµÐ½Ð¸Ñ + Ðевид. зона Ð²Ñ€Ð°Ñ‰ÐµÐ½Ð¸Ñ </text> <text name="Feathering"> Размывка краев @@ -71,7 +71,7 @@ МаÑштаб </text> <text name="ZoomDeadZone"> - ÐÐµÐ²Ð¸Ð´Ð¸Ð¼Ð°Ñ Ð·Ð¾Ð½Ð° при маÑштабировании + Ðевид. зона маÑшт. </text> <button label="Стандартные Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¸Ñ SpaceNavigator" name="SpaceNavigatorDefaults"/> <button label="OK" label_selected="OK" name="ok_btn"/> diff --git a/indra/newview/skins/default/xui/ru/floater_preferences.xml b/indra/newview/skins/default/xui/ru/floater_preferences.xml index 31c751250eb0d4e248a93929d3762ba73d6176ea..fc244b9d8b483c00c316f9f1093c257f3b96fc9e 100644 --- a/indra/newview/skins/default/xui/ru/floater_preferences.xml +++ b/indra/newview/skins/default/xui/ru/floater_preferences.xml @@ -11,7 +11,7 @@ <panel label="УведомлениÑ" name="msgs"/> <panel label="Цвета" name="colors"/> <panel label="ПриватноÑть" name="im"/> - <panel label="ÐаÑтройка" name="input"/> - <panel label="РаÑширенный" name="advanced1"/> + <panel label="КонфигурациÑ" name="input"/> + <panel label="Дополнительно" name="advanced1"/> </tab_container> </floater> diff --git a/indra/newview/skins/default/xui/ru/panel_preferences_advanced.xml b/indra/newview/skins/default/xui/ru/panel_preferences_advanced.xml index ae6d8bf94dfd1a49af73108b1cc3954ad7ac460a..7d8ee96924feb5739458e2c8d5b611848c63f929 100644 --- a/indra/newview/skins/default/xui/ru/panel_preferences_advanced.xml +++ b/indra/newview/skins/default/xui/ru/panel_preferences_advanced.xml @@ -17,7 +17,7 @@ <button label="Обзор" label_selected="Обзор" name="set_cache"/> <button label="РаÑположение по умолчанию" label_selected="РаÑположение по умолчанию" name="default_cache_location"/> <text name="UI Size:"> - Размер интерфейÑа: + ИнтерфейÑ: </text> <check_box label="Показывать ошибки Ñкрипта в:" name="show_script_errors"/> <radio_group name="show_location"> diff --git a/indra/newview/skins/default/xui/ru/panel_preferences_alerts.xml b/indra/newview/skins/default/xui/ru/panel_preferences_alerts.xml index e1135b5ee193235a4a199c2a616186ac1b1d9764..9d7ae546fd4e78fc36206478d5ce117bd3288233 100644 --- a/indra/newview/skins/default/xui/ru/panel_preferences_alerts.xml +++ b/indra/newview/skins/default/xui/ru/panel_preferences_alerts.xml @@ -3,7 +3,7 @@ <text name="tell_me_label"> Сообщать мне: </text> - <check_box label="о тратах и доходах" name="notify_money_change_checkbox"/> + <check_box label="о раÑходах и доходах" name="notify_money_change_checkbox"/> <check_box label="о входе и выходе моих друзей" name="friends_online_notify_checkbox"/> <text name="show_label"> Ð’Ñегда показывать: diff --git a/indra/newview/skins/default/xui/ru/panel_preferences_chat.xml b/indra/newview/skins/default/xui/ru/panel_preferences_chat.xml index 5e4130667ffe7442714c128f6bf0d709bcf781eb..fa08c134adb1a4c7498692e5563e0d8add709439 100644 --- a/indra/newview/skins/default/xui/ru/panel_preferences_chat.xml +++ b/indra/newview/skins/default/xui/ru/panel_preferences_chat.xml @@ -4,39 +4,39 @@ Размер шрифта: </text> <radio_group name="chat_font_size"> - <radio_item label="Маленький" name="radio" value="0"/> + <radio_item label="Мелкий" name="radio" value="0"/> <radio_item label="Средний" name="radio2" value="1"/> - <radio_item label="Большой" name="radio3" value="2"/> + <radio_item label="Крупный" name="radio3" value="2"/> </radio_group> <check_box initial_value="иÑтина" label="ВоÑпроизводить анимацию ввода текÑта при общении" name="play_typing_animation"/> - <check_box label="ОтправлÑть мне ÑÐ¾Ð¾Ð±Ñ‰ÐµÐ½Ð¸Ñ Ð¿Ð¾ Email, когда Ñ Ð² оффлайне" name="send_im_to_email"/> - <check_box label="Включить текÑтовые ÑÐ¾Ð¾Ð±Ñ‰ÐµÐ½Ð¸Ñ Ð¸ журнал Ð¾Ð±Ñ‰ÐµÐ½Ð¸Ñ Ð² чате" name="plain_text_chat_history"/> + <check_box label="ОтправлÑть мне ÑÐ¾Ð¾Ð±Ñ‰ÐµÐ½Ð¸Ñ Ð¿Ð¾ почте, когда Ð¼ÐµÐ½Ñ Ð½ÐµÑ‚ в Ñети" name="send_im_to_email"/> + <check_box label="ВеÑти журнал текÑтового IM и чата" name="plain_text_chat_history"/> <check_box label="Чат в пузырьках" name="bubble_text_chat"/> <text name="show_ims_in_label"> - Показать ÑÐ¾Ð¾Ð±Ñ‰ÐµÐ½Ð¸Ñ Ð²: + Показывать ÑообщениÑ: </text> <text name="requires_restart_label"> (требуетÑÑ Ð¿ÐµÑ€ÐµÐ·Ð°Ð¿ÑƒÑк) </text> <radio_group name="chat_window" tool_tip="Показывать IM-ÑÐ¾Ð¾Ð±Ñ‰ÐµÐ½Ð¸Ñ Ð² отдельных окнах или же в одном окне Ñ Ð½ÐµÑколькими вкладками (требуетÑÑ Ð¿ÐµÑ€ÐµÐ·Ð°Ð¿ÑƒÑк)"> - <radio_item label="Отдельные окна" name="radio" value="0"/> - <radio_item label="Вкладки" name="radio2" value="1"/> + <radio_item label="Ð’ отдельных окнах" name="radio" value="0"/> + <radio_item label="Ðа вкладках" name="radio2" value="1"/> </radio_group> <text name="disable_toast_label"> Включить вÑплывающие ÑÐ¾Ð¾Ð±Ñ‰ÐµÐ½Ð¸Ñ Ñ Ð½Ð¾Ð²Ñ‹Ð¼Ð¸ репликами в чате: </text> <check_box label="Групповой чат" name="EnableGroupChatPopups" tool_tip="Отображать вÑплывающие ÑƒÐ²ÐµÐ´Ð¾Ð¼Ð»ÐµÐ½Ð¸Ñ Ð¿Ñ€Ð¸ поÑвлении Ñообщений в групповом чате"/> <check_box label="ТекÑтовые чаты" name="EnableIMChatPopups" tool_tip="Отображать вÑплывающие ÑƒÐ²ÐµÐ´Ð¾Ð¼Ð»ÐµÐ½Ð¸Ñ Ð¿Ñ€Ð¸ получении IM-Ñообщений"/> - <spinner label="Ð’Ñ€ÐµÐ¼Ñ Ð¾Ñ‚Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð¸Ñ Ð²Ñплывающих Ñообщений чата:" name="nearby_toasts_lifetime"/> - <spinner label="Ð’Ñ€ÐµÐ¼Ñ Ð·Ð°Ñ‚ÑƒÑ…Ð°Ð½Ð¸Ñ Ð²Ñплывающих Ñообщений чата:" name="nearby_toasts_fadingtime"/> + <spinner label="Ð’Ñ€ÐµÐ¼Ñ Ð¾Ñ‚Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð¸Ñ Ð²Ñплывающих реплик:" name="nearby_toasts_lifetime"/> + <spinner label="Ð’Ñ€ÐµÐ¼Ñ Ð·Ð°Ñ‚ÑƒÑ…Ð°Ð½Ð¸Ñ Ð²Ñплывающих реплик:" name="nearby_toasts_fadingtime"/> <text name="translate_chb_label"> - ИÑпользовать машинный перевод во Ð²Ñ€ÐµÐ¼Ñ Ð¾Ð±Ñ‰ÐµÐ½Ð¸Ñ (иÑпользуетÑÑ Google) + ИÑпользовать машинный перевод при общении (Ñ‚ÐµÑ…Ð½Ð¾Ð»Ð¾Ð³Ð¸Ñ Google) </text> <text name="translate_language_text"> Переводить чат на: </text> <combo_box name="translate_language_combobox"> - <combo_box.item label="Ð¡Ñ‚Ð°Ð½Ð´Ð°Ñ€Ñ‚Ð½Ð°Ñ ÑиÑтема" name="System Default Language"/> + <combo_box.item label="Язык ÑиÑтемы" name="System Default Language"/> <combo_box.item label="English" name="English"/> <combo_box.item label="Dansk" name="Danish"/> <combo_box.item label="Deutsch" name="German"/> diff --git a/indra/newview/skins/default/xui/ru/panel_preferences_colors.xml b/indra/newview/skins/default/xui/ru/panel_preferences_colors.xml index 17d84e2a39aaee188faff80634c89afa0f2c05a0..48c34fcbb283ef1138ed5a534d434a9c9f7d1cc7 100644 --- a/indra/newview/skins/default/xui/ru/panel_preferences_colors.xml +++ b/indra/newview/skins/default/xui/ru/panel_preferences_colors.xml @@ -35,9 +35,9 @@ Цвет фона тегов имен (также Ð´Ð»Ñ Ñ‡Ð°Ñ‚Ð° в пузырьках): </text> <color_swatch name="background" tool_tip="Выберите цвет Ð´Ð»Ñ Ñ‚ÐµÐ³Ð¾Ð² имен"/> - <slider label="ПрозрачноÑть:" name="bubble_chat_opacity" tool_tip="Задайте прозрачноÑть тегов имен"/> + <slider label="ВидимоÑть:" name="bubble_chat_opacity" tool_tip="Задайте непрозрачноÑть тегов имен"/> <text name="floater_opacity"> - ПрозрачноÑть окон: + ÐепрозрачноÑть окон: </text> <slider label="Ðктивные:" name="active"/> <slider label="Ðеактивные:" name="inactive"/> diff --git a/indra/newview/skins/default/xui/ru/panel_preferences_general.xml b/indra/newview/skins/default/xui/ru/panel_preferences_general.xml index 3e21697616eab4c03fcf2b25dde67e7fac3fa0b2..49f743a6bafb6e0a9b6d1fd6b4a701c927049dd5 100644 --- a/indra/newview/skins/default/xui/ru/panel_preferences_general.xml +++ b/indra/newview/skins/default/xui/ru/panel_preferences_general.xml @@ -4,8 +4,8 @@ Язык: </text> <combo_box name="language_combobox"> - <combo_box.item label="Ð¡Ñ‚Ð°Ð½Ð´Ð°Ñ€Ñ‚Ð½Ð°Ñ Ð½Ð°Ñтройка ÑиÑтемы" name="System Default Language"/> - <combo_box.item label="ÐнглийÑкий" name="English"/> + <combo_box.item label="Язык ÑиÑтемы" name="System Default Language"/> + <combo_box.item label="English - ÐнглийÑкий" name="English"/> <combo_box.item label="Dansk – датÑкий (бета-верÑиÑ)" name="Danish"/> <combo_box.item label="Deutsch – немецкий (бета-верÑиÑ)" name="Deutsch(German)"/> <combo_box.item label="Español – иÑпанÑкий (бета-верÑиÑ)" name="Spanish"/> @@ -13,24 +13,24 @@ <combo_box.item label="Italiano – итальÑнÑкий (бета-верÑиÑ)" name="Italian"/> <combo_box.item label="Polski – польÑкий (бета-верÑиÑ)" name="Polish"/> <combo_box.item label="Português – португальÑкий (бета-верÑиÑ)" name="Portugese"/> - <combo_box.item label="РуÑÑкий - бета-верÑиÑ" name="Russian"/> - <combo_box.item label="Türkçe (турецкий) - бета-верÑиÑ" name="Turkish"/> + <combo_box.item label="РуÑÑкий (бета-верÑиÑ)" name="Russian"/> + <combo_box.item label="Türkçe - турецкий (бета-верÑиÑ)" name="Turkish"/> <combo_box.item label="日本語 – ÑпонÑкий (бета-верÑиÑ)" name="(Japanese)"/> - <combo_box.item label="æ£é«” (китайÑкий, традиционное пиÑьмо) - бета-верÑиÑ" name="Traditional Chinese"/> + <combo_box.item label="æ£é«”䏿–‡ - китайÑкий, традиционное пиÑьмо (бета-верÑиÑ)" name="Traditional Chinese"/> </combo_box> <text name="language_textbox2"> (ТребуетÑÑ Ð¿ÐµÑ€ÐµÐ·Ð°Ð¿ÑƒÑк) </text> <text name="maturity_desired_prompt"> - Я хочу видеть Ñодержимое: + Показывать контент: </text> <combo_box name="maturity_desired_combobox"> - <combo_box.item label="General, Moderate, Adult" name="Desired_Adult"/> - <combo_box.item label="General и Moderate" name="Desired_Mature"/> - <combo_box.item label="Общие" name="Desired_PG"/> + <combo_box.item label="Общий, умеренный, Ð´Ð»Ñ Ð²Ð·Ñ€Ð¾Ñлых" name="Desired_Adult"/> + <combo_box.item label="Общий и умеренный" name="Desired_Mature"/> + <combo_box.item label="Общий" name="Desired_PG"/> </combo_box> <text name="start_location_textbox"> - Ðачальное меÑто: + МеÑто Ñтарта: </text> <combo_box name="start_location_combo"> <combo_box.item label="Мое поÑледнее меÑто" name="MyLastLocation"/> @@ -38,7 +38,7 @@ </combo_box> <check_box initial_value="иÑтина" label="Показывать на Ñкране входа" name="show_location_checkbox"/> <text name="name_tags_textbox"> - Теги имени: + Теги имен: </text> <radio_group name="Name_Tag_Preference"> <radio_item label="Выкл." name="radio" value="0"/> @@ -46,10 +46,10 @@ <radio_item label="Временный показ" name="radio3" value="2"/> </radio_group> <check_box label="Мое имÑ" name="show_my_name_checkbox1"/> - <check_box label="Имена пользователей" name="show_slids" tool_tip="Показывать Ð¸Ð¼Ñ Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ, такое, как bobsmith123"/> - <check_box label="Титулы группы" name="show_all_title_checkbox1" tool_tip="Показывать титулы групп, такие, как Officer или Member"/> + <check_box label="Имена пользователей" name="show_slids" tool_tip="Показывать Ð¸Ð¼Ñ Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ, например, bobsmith123"/> + <check_box label="Титулы групп" name="show_all_title_checkbox1" tool_tip="Показывать титулы групп, например, Officer или Member"/> <check_box label="ПодÑветка друзей" name="show_friends" tool_tip="ПодÑвечивать теги имен ваших друзей"/> - <check_box label="ПроÑмотреть Ñкранные имена" name="display_names_check" tool_tip="Показывать Ñкранные имена в чате, IM, тегах имен и пр."/> + <check_box label="Ðкранные имена" name="display_names_check" tool_tip="Показывать Ñкранные имена в чате, IM, тегах имен и пр."/> <text name="inworld_typing_rg_label"> Ðажатие клавиш Ñ Ð±ÑƒÐºÐ²Ð°Ð¼Ð¸: </text> @@ -58,9 +58,9 @@ <radio_item label="Приводит к перемещению (Ñ‚. е. WASD)" name="radio_move" value="0"/> </radio_group> <text name="title_afk_text"> - Включение режима «Отошел» через: + Задержка режима «Отошел»: </text> - <combo_box label="Включение режима «Отошел» через:" name="afk"> + <combo_box label="Задержка режима «Отошел»:" name="afk"> <combo_box.item label="2 мин" name="item0"/> <combo_box.item label="5 мин" name="item1"/> <combo_box.item label="10 мин" name="item2"/> diff --git a/indra/newview/skins/default/xui/ru/panel_preferences_graphics1.xml b/indra/newview/skins/default/xui/ru/panel_preferences_graphics1.xml index 867307cc43793a13693fc83b2eb962cdfee3cb30..a7e826f5fcb625d7d83e9f4973200e9e092cf83f 100644 --- a/indra/newview/skins/default/xui/ru/panel_preferences_graphics1.xml +++ b/indra/newview/skins/default/xui/ru/panel_preferences_graphics1.xml @@ -42,10 +42,10 @@ <combo_box.item label="Солнце/луна + оÑветители" name="2"/> </combo_box> <text name="reflection_label"> - ÐžÑ‚Ñ€Ð°Ð¶ÐµÐ½Ð¸Ñ Ð¾Ñ‚ воды: + Вода отражает: </text> <combo_box name="Reflections"> - <combo_box.item label="Минимальные" name="0"/> + <combo_box.item label="Минимум" name="0"/> <combo_box.item label="Ландшафт и деревьÑ" name="1"/> <combo_box.item label="Ð’Ñе Ñтатичные объекты" name="2"/> <combo_box.item label="Ð’Ñе аватары и объекты" name="3"/> @@ -99,16 +99,16 @@ <check_box initial_value="иÑтина" label="ÐÐ¿Ð¿Ð°Ñ€Ð°Ñ‚Ð½Ð°Ñ Ð¾Ñ‚Ñ€Ð¸Ñовка" name="AvatarVertexProgram"/> <check_box initial_value="иÑтина" label="Одежда аватара" name="AvatarCloth"/> <text name="TerrainDetailText"> - Ð”ÐµÑ‚Ð°Ð»Ð¸Ð·Ð°Ñ†Ð¸Ñ Ð»Ð°Ð½Ð´ÑˆÐ°Ñ„Ñ‚Ð°: + Ландшафт: </text> <radio_group name="TerrainDetailRadio"> - <radio_item label="Ðизко" name="0"/> - <radio_item label="Ð’Ñ‹Ñоко" name="2"/> + <radio_item label="Грубо" name="0"/> + <radio_item label="Детально" name="2"/> </radio_group> --> </panel> <button label="Применить" label_selected="Применить" name="Apply"/> <button label="СброÑ" name="Defaults"/> <button label="Дополнительно" name="Advanced"/> - <button label="Ðппаратные" label_selected="Ðппаратные" name="GraphicsHardwareButton"/> + <button label="Ðппаратура" label_selected="Ðппаратура" name="GraphicsHardwareButton"/> </panel> diff --git a/indra/newview/skins/default/xui/ru/panel_preferences_move.xml b/indra/newview/skins/default/xui/ru/panel_preferences_move.xml index 8b3542a6d26a38278781b8c4043d7887ec973f03..878a7291134e6cab7e2dec6e390c46529a2d88d9 100644 --- a/indra/newview/skins/default/xui/ru/panel_preferences_move.xml +++ b/indra/newview/skins/default/xui/ru/panel_preferences_move.xml @@ -5,8 +5,8 @@ <text name="heading2"> ÐвтоматичеÑÐºÐ°Ñ ÑƒÑтановка позиции длÑ: </text> - <check_box label="СозданиÑ/редактирование" name="edit_camera_movement" tool_tip="Производить автоматичеÑкое позиционирование камеры при входе в режим Ñ€ÐµÐ´Ð°ÐºÑ‚Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð¸Ñ Ð¸ выходе из него"/> - <check_box label="ВнешноÑть" name="appearance_camera_movement" tool_tip="Производить автоматичеÑкое позиционирование камеры в режиме Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ Ð²Ð½ÐµÑˆÐ½Ð¾Ñти"/> + <check_box label="ÑозданиÑ/редактированиÑ" name="edit_camera_movement" tool_tip="Производить автоматичеÑкое позиционирование камеры при входе в режим Ñ€ÐµÐ´Ð°ÐºÑ‚Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð¸Ñ Ð¸ выходе из него"/> + <check_box label="внешноÑти" name="appearance_camera_movement" tool_tip="Производить автоматичеÑкое позиционирование камеры в режиме Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ Ð²Ð½ÐµÑˆÐ½Ð¾Ñти"/> <text name="keyboard_lbl"> Клавиатура: </text> diff --git a/indra/newview/skins/default/xui/ru/panel_preferences_privacy.xml b/indra/newview/skins/default/xui/ru/panel_preferences_privacy.xml index f3c7e430227a15d42acce1e0b169f343a996c556..20bb839eedeff1832ee7e89b3eca4d9dd16963fc 100644 --- a/indra/newview/skins/default/xui/ru/panel_preferences_privacy.xml +++ b/indra/newview/skins/default/xui/ru/panel_preferences_privacy.xml @@ -20,7 +20,7 @@ <check_box label="Метка времени в каждой Ñтроке журнала чата" name="show_timestamps_check_im"/> <check_box label="Метка времени в имени файла журнала." name="logfile_name_datestamp"/> <text name="log_path_desc"> - Размещение журналов: + Папка журналов: </text> <button label="Обзор" label_selected="Обзор" name="log_path_button"/> <button label="Черный ÑпиÑок" name="block_list"/> 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 9f23e2f5f79f1aa777c865f598a1363c4f38db1b..db881891692cd7e3bd727ba6ebed018fda9debe9 100644 --- a/indra/newview/skins/default/xui/ru/panel_preferences_setup.xml +++ b/indra/newview/skins/default/xui/ru/panel_preferences_setup.xml @@ -1,10 +1,10 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> -<panel label="ÐаÑтройка" name="Input panel"> +<panel label="КонфигурациÑ" name="Input panel"> <text name="Network:"> Сеть: </text> <text name="Maximum bandwidth"> - МакÑÐ¸Ð¼Ð°Ð»ÑŒÐ½Ð°Ñ ÑˆÐ¸Ñ€Ð¸Ð½Ð° канала + МакÑ. ширина канала </text> <text name="text_box2"> Кбит/Ñ @@ -32,5 +32,5 @@ <text name="Proxy Settings:"> ÐаÑтройки прокÑи-Ñервера: </text> - <button label="Задать наÑтройки прокÑи" label_selected="Обзор" name="set_proxy"/> + <button label="Задать наÑтройки" label_selected="Обзор" name="set_proxy"/> </panel> diff --git a/indra/newview/skins/default/xui/ru/panel_preferences_sound.xml b/indra/newview/skins/default/xui/ru/panel_preferences_sound.xml index 123989966c93e7d4d60a9ed2447308e075c07629..bf673750d22b3ec811cfdf91a1e687d0ad865bc6 100644 --- a/indra/newview/skins/default/xui/ru/panel_preferences_sound.xml +++ b/indra/newview/skins/default/xui/ru/panel_preferences_sound.xml @@ -1,9 +1,9 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <panel label="Звуки" name="Preference Media panel"> <panel.string name="middle_mouse"> - СреднÑÑ ÐºÐ½Ð¾Ð¿ÐºÐ° мыши + Ñреднюю кнопку мыши </panel.string> - <slider label="Главный регулÑтор" name="System Volume"/> + <slider label="ÐžÐ±Ñ‰Ð°Ñ Ð³Ñ€Ð¾Ð¼ÐºÐ¾Ñть" name="System Volume"/> <check_box initial_value="иÑтина" name="mute_when_minimized"/> <text name="mute_chb_label"> Заглушать, когда Ñвернуто @@ -24,11 +24,11 @@ ÐаÑтройки голоÑового чата </text> <text name="Listen from"> - ПроÑлушивание Ñ Ð¿Ð¾Ð·Ð¸Ñ†Ð¸Ð¸: + Слушать Ñ: </text> <radio_group name="ear_location"> - <radio_item label="Камера" name="0"/> - <radio_item label="Ðватар" name="1"/> + <radio_item label="Камеры" name="0"/> + <radio_item label="Ðватара" name="1"/> </radio_group> <check_box label="Губы аватара двигаютÑÑ Ð¿Ñ€Ð¸ разговоре" name="enable_lip_sync"/> <check_box label="Включать/выключать микрофон, когда Ñ Ð½Ð°Ð¶Ð¸Ð¼Ð°ÑŽ:" name="push_to_talk_toggle_check" tool_tip="Ð’ режиме Ð¿ÐµÑ€ÐµÐºÐ»ÑŽÑ‡ÐµÐ½Ð¸Ñ ÐžÐ”ÐОКРÐТÐОЕ нажатие и отпуÑкание данной клавиши включает/выключает микрофон. ЕÑли режим Ð¿ÐµÑ€ÐµÐºÐ»ÑŽÑ‡ÐµÐ½Ð¸Ñ Ð¾Ñ‚ÐºÐ»ÑŽÑ‡ÐµÐ½, то микрофон передает голоÑ, только когда клавиша нажата."/> diff --git a/indra/newview/skins/default/xui/ru/panel_sound_devices.xml b/indra/newview/skins/default/xui/ru/panel_sound_devices.xml index 4a57ed4f4f9c64ee6775aae3bed5637546714c4c..98dab288a36c7e623faff66a90980893d5193de5 100644 --- a/indra/newview/skins/default/xui/ru/panel_sound_devices.xml +++ b/indra/newview/skins/default/xui/ru/panel_sound_devices.xml @@ -20,6 +20,6 @@ </text> <slider_bar initial_value="1.0" name="mic_volume_slider" tool_tip="Измените значение, иÑÐ¿Ð¾Ð»ÑŒÐ·ÑƒÑ Ð¿Ð¾Ð»Ð·ÑƒÐ½Ð¾Ðº"/> <text name="wait_text"> - Ожидайте + Подождите </text> </panel> diff --git a/indra/newview/skins/default/xui/ru/strings.xml b/indra/newview/skins/default/xui/ru/strings.xml index 0134298166802fb8456a94e24f57efdfc03fed70..df657b39c60c5066221aeef82a8c3078a4796eab 100644 --- a/indra/newview/skins/default/xui/ru/strings.xml +++ b/indra/newview/skins/default/xui/ru/strings.xml @@ -1940,7 +1940,7 @@ support@secondlife.com. Ðовый Ñкрипт </string> <string name="BusyModeResponseDefault"> - У жителÑ, которому вы адреÑовали Ñообщение, задан ÑÑ‚Ð°Ñ‚ÑƒÑ Â«Ðе беÑпокоить». Ваше Ñообщение вÑе равно будет отображено на панели IM Ð´Ð»Ñ Ð¿Ñ€Ð¾Ñмотра позже. + У адреÑата вашего ÑÐ¾Ð¾Ð±Ñ‰ÐµÐ½Ð¸Ñ Ð·Ð°Ð´Ð°Ð½ ÑÑ‚Ð°Ñ‚ÑƒÑ Â«Ðе беÑпокоить». Ваше Ñообщение вÑе равно будет отображено на панели IM Ð´Ð»Ñ Ð¿Ñ€Ð¾Ñмотра позже. </string> <string name="MuteByName"> (по имени) diff --git a/indra/newview/skins/default/xui/tr/floater_camera.xml b/indra/newview/skins/default/xui/tr/floater_camera.xml index 33b4338e2191d5fc529b7370525c4fd39698b6d3..4161e6ea52a6feba219f00d034b023dc98bf251f 100644 --- a/indra/newview/skins/default/xui/tr/floater_camera.xml +++ b/indra/newview/skins/default/xui/tr/floater_camera.xml @@ -13,7 +13,7 @@ Kamera modları </floater.string> <floater.string name="pan_mode_title"> - Yörünge DeÄŸiÅŸimi - YakınlaÅŸtırma - Kamerayı Çevirme + Yörünge - YakınlÅŸ. - Kamerayı Çvr. </floater.string> <floater.string name="presets_mode_title"> Ön Ayarlı Görünümler diff --git a/indra/newview/skins/default/xui/tr/floater_day_cycle_options.xml b/indra/newview/skins/default/xui/tr/floater_day_cycle_options.xml deleted file mode 100644 index 9e706d98928e69f2ec848f4f0c053a7e2c77c4a6..0000000000000000000000000000000000000000 --- a/indra/newview/skins/default/xui/tr/floater_day_cycle_options.xml +++ /dev/null @@ -1,95 +0,0 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes"?> -<floater name="Day Cycle Floater" title="GÜN DÖNGÜSÜ DÜZENLEYİCİ"> - <tab_container name="Day Cycle Tabs"> - <panel label="Gün Döngüsü" name="Day Cycle"> - <multi_slider initial_value="0" name="WLTimeSlider"/> - <multi_slider initial_value="0" name="WLDayCycleKeys"/> - <text name="WL12am"> - 12öö - </text> - <text name="WL3am"> - 3öö - </text> - <text name="WL6am"> - 6öö - </text> - <text name="WL9amHash"> - 9öö - </text> - <text name="WL12pmHash"> - 12ös - </text> - <text name="WL3pm"> - 3ös - </text> - <text name="WL6pm"> - 6ös - </text> - <text name="WL9pm"> - 9ös - </text> - <text name="WL12am2"> - 12öö - </text> - <text name="WL12amHash"> - | - </text> - <text name="WL3amHash"> - I - </text> - <text name="WL6amHash"> - | - </text> - <text name="WL9amHash2"> - I - </text> - <text name="WL12pmHash2"> - | - </text> - <text name="WL3pmHash"> - I - </text> - <text name="WL6pmHash"> - | - </text> - <text name="WL9pmHash"> - I - </text> - <text name="WL12amHash2"> - | - </text> - <button label="Anahtar Ekle" label_selected="Anahtar Ekle" name="WLAddKey"/> - <button label="Anahtarı Sil" label_selected="Anahtarı Sil" name="WLDeleteKey"/> - <text name="WLCurKeyFrameText"> - Anahtar Kare Ayarları: - </text> - <text name="WLCurKeyTimeText"> - Anahtar Zamanı: - </text> - <spinner label="Saat" name="WLCurKeyHour"/> - <spinner label="Dak" name="WLCurKeyMin"/> - <text name="WLCurKeyTimeText2"> - Anahtar Ön Ayarı: - </text> - <combo_box label="Ön Ayar" name="WLKeyPresets"/> - <text name="DayCycleText"> - Yasla: - </text> - <combo_box label="5 dak" name="WLSnapOptions"/> - <text name="DayCycleText2"> - Döngü UzunluÄŸu: - </text> - <spinner label="Saat" name="WLLengthOfDayHour"/> - <spinner label="Dak" name="WLLengthOfDayMin"/> - <spinner label="San" name="WLLengthOfDaySec"/> - <text name="DayCycleText3"> - Önizleme: - </text> - <button label="Oyna" label_selected="Oyna" name="WLAnimSky"/> - <button label="Durdur!" label_selected="Durdur" name="WLStopAnimSky"/> - <button label="Gayrimenkul Saati Kullan" label_selected="Gayrimenkul Saatine Git" name="WLUseLindenTime"/> - <button label="Test Gününü Kaydet" label_selected="Test Gününü Kaydet" name="WLSaveDayCycle"/> - <button label="Test Gününü Yükle" label_selected="Test Gününü Yükle" name="WLLoadDayCycle"/> - </panel> - </tab_container> -</floater> diff --git a/indra/newview/skins/default/xui/tr/floater_edit_day_cycle.xml b/indra/newview/skins/default/xui/tr/floater_edit_day_cycle.xml index a5cbe3a4169912b11fa5d42772db00457fd6011a..e2e87ddf1e7efa93883b305693dbbea723395db0 100644 --- a/indra/newview/skins/default/xui/tr/floater_edit_day_cycle.xml +++ b/indra/newview/skins/default/xui/tr/floater_edit_day_cycle.xml @@ -36,31 +36,31 @@ <button label="Anahtar Ekle" label_selected="Anahtar Ekle" name="WLAddKey"/> <button label="Anahtarı Sil" label_selected="Anahtarı Sil" name="WLDeleteKey"/> <text name="WL12am"> - 12öö + 12 </text> <text name="WL3am"> - 3öö + 3 </text> <text name="WL6am"> - 6öö + 6 </text> <text name="WL9amHash"> - 9öö + 9 </text> <text name="WL12pmHash"> - 12ös + 24 </text> <text name="WL3pm"> - 3ös + 15 </text> <text name="WL6pm"> - 6ös + 18 </text> <text name="WL9pm"> - 9ös + 21 </text> <text name="WL12am2"> - 12öö + 12 </text> <text name="WL12amHash"> | @@ -97,7 +97,7 @@ <text name="WLCurKeyTimeText"> Zaman: </text> - <time name="time" value="6:00 ÖÖ"/> + <time name="time" value="6:00"/> <check_box label="Bunu yeni gün döngüm yap" name="make_default_cb"/> <button label="Kaydet" name="save"/> <button label="İptal" name="cancel"/> diff --git a/indra/newview/skins/default/xui/tr/floater_edit_sky_preset.xml b/indra/newview/skins/default/xui/tr/floater_edit_sky_preset.xml index 16564963e517bd5ed292b80fe2ca84ba65eaf869..0e9f86148de3c0b9ad7c37826b0bd8b3ca121f79 100644 --- a/indra/newview/skins/default/xui/tr/floater_edit_sky_preset.xml +++ b/indra/newview/skins/default/xui/tr/floater_edit_sky_preset.xml @@ -86,21 +86,21 @@ | </text> <text name="WL12am"> - 12öö + 12 </text> <text name="WL6am"> - 6öö + 6 </text> <text name="WL12pmHash"> - 12ös + 24 </text> <text name="WL6pm"> - 6ös + 18 </text> <text name="WL12am2"> - 12öö + 12 </text> - <time name="WLDayTime" value="6:00 ÖÖ"/> + <time name="WLDayTime" value="6:00"/> <text name="WLEastAngleText"> DoÄŸu Açısı </text> diff --git a/indra/newview/skins/default/xui/tr/floater_picks.xml b/indra/newview/skins/default/xui/tr/floater_picks.xml index 06a404447ec99f8cdfd3cb90ca8a95311e7ffca0..513a2e319ad3bb89d6e7ecc11f31aa91afb56873 100644 --- a/indra/newview/skins/default/xui/tr/floater_picks.xml +++ b/indra/newview/skins/default/xui/tr/floater_picks.xml @@ -1,2 +1,2 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> -<floater name="floater_picks" title="Favoriler"/> +<floater name="floater_picks" title="Seçmeler"/> diff --git a/indra/newview/skins/default/xui/tr/floater_preview_texture.xml b/indra/newview/skins/default/xui/tr/floater_preview_texture.xml index 4548fbae64b8d81a09f22353221089b5d4afc4b9..79e184130a2734f6ed4a1a0738ca2bafe3309318 100644 --- a/indra/newview/skins/default/xui/tr/floater_preview_texture.xml +++ b/indra/newview/skins/default/xui/tr/floater_preview_texture.xml @@ -34,7 +34,7 @@ <combo_item name="16:10"> 16:10 </combo_item> - <combo_item name="16:9" tool_tip="Profil favorileri"> + <combo_item name="16:9" tool_tip="Profil seçmeleri"> 16:9 </combo_item> <combo_item name="2:1"> diff --git a/indra/newview/skins/default/xui/tr/floater_texture_ctrl.xml b/indra/newview/skins/default/xui/tr/floater_texture_ctrl.xml index 1ba9f8c2aa7d7622aa02c26f68a41186229e0cd8..4ef789f58594c8f700c3da42b9038c4724e2aa91 100644 --- a/indra/newview/skins/default/xui/tr/floater_texture_ctrl.xml +++ b/indra/newview/skins/default/xui/tr/floater_texture_ctrl.xml @@ -1,10 +1,10 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> -<floater name="texture picker" title="FAVORİ: DOKU"> +<floater name="texture picker" title="SEÇME: DOKU"> <floater.string name="choose_picture"> Bir resim seçmek için tıklayın </floater.string> <floater.string name="pick title"> - Favori: + Seçme: </floater.string> <text name="Multiple"> Birden çok doku diff --git a/indra/newview/skins/default/xui/tr/floater_tools.xml b/indra/newview/skins/default/xui/tr/floater_tools.xml index 47299059af79ea819828c826cc33a6455fb03b65..cd5e6b7fac4912a79810f62a223922136d246377 100644 --- a/indra/newview/skins/default/xui/tr/floater_tools.xml +++ b/indra/newview/skins/default/xui/tr/floater_tools.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> -<floater name="toolbox floater" short_title="İNÅžA ARAÇLARI"> +<floater name="toolbox floater" short_title="İNÅžA ET ARAÇLARI"> <floater.string name="status_rotate"> Nesneyi döndürmek için renkli bantları sürükleyin </floater.string> diff --git a/indra/newview/skins/default/xui/tr/floater_windlight_options.xml b/indra/newview/skins/default/xui/tr/floater_windlight_options.xml index 02910e253976218fde8abb83305d6bdddb4c27b0..6c5fba374ce5842afe02a8b1ce72b7bd57cb41aa 100644 --- a/indra/newview/skins/default/xui/tr/floater_windlight_options.xml +++ b/indra/newview/skins/default/xui/tr/floater_windlight_options.xml @@ -1,7 +1,7 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <floater name="WindLight floater" title="GELİŞMİŞ GÖKYÜZÜ DÜZENLEYİCİ"> <floater.string name="WLDefaultSkyNames"> - A-12ÖÖ:A-12ÖS:A-3ÖÖ:A-3ÖS:A-4.30ÖS:A-6ÖÖ:A-6ÖS:A-9ÖÖ:A-9ÖS:Barselona:Tipi:Mavi Gün Ortası:Sahilde Öğleden Sonra:Sahilde Gün Batımı:Varsayılan:Çölde Gün Batımı:Güzel Bir Gün:Kabarık Büyük Bulutlar:Sisli:Şık Şık:Şık Şık Şık:Dondurma:Hayalet:Uygunsuz Gerçekler:Gün Ortası1:Gün Ortası 2:Gün Ortası 3:Gün Ortası 4:Gece:Korsan:Mor:Denizcinin Keyfi:Saf Tensel + A-12:A-24:A-3:A-15:A-16.30:A-6:A-18:A-9:A-21:Barselona:Tipi:Mavi Gün Ortası:Sahilde Öğleden Sonra:Sahilde Gün Batımı:Varsayılan:Çölde Gün Batımı:Güzel Bir Gün:Kabarık Büyük Bulutlar:Sisli:Şık Şık:Şık Şık Şık:Dondurma:Hayalet:Uygunsuz Gerçekler:Gün Ortası1:Gün Ortası 2:Gün Ortası 3:Gün Ortası 4:Gece:Korsan:Mor:Denizcinin Keyfi:Saf Tensel </floater.string> <text name="KeyFramePresetsText"> Gökyüzü Ön Ayarları: diff --git a/indra/newview/skins/default/xui/tr/menu_gesture_gear.xml b/indra/newview/skins/default/xui/tr/menu_gesture_gear.xml index 9ae433d8bb849f3e2a68b98100aa7a3258c5c810..cb9b678fddce6128a069b15fd46c1ba064c7af89 100644 --- a/indra/newview/skins/default/xui/tr/menu_gesture_gear.xml +++ b/indra/newview/skins/default/xui/tr/menu_gesture_gear.xml @@ -1,6 +1,6 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <toggleable_menu name="menu_gesture_gear"> - <menu_item_call label="Sık Kullanılanlara Ekle/Çıkar" name="activate"/> + <menu_item_call label="Favorilere Ekle/Çıkar" name="activate"/> <menu_item_call label="Kopyala" name="copy_gesture"/> <menu_item_call label="Yapıştır" name="paste"/> <menu_item_call label="UUID'yi Kopyala" name="copy_uuid"/> diff --git a/indra/newview/skins/default/xui/tr/menu_hide_navbar.xml b/indra/newview/skins/default/xui/tr/menu_hide_navbar.xml index 130c72e04ddf7052d54d7884659678c5f6a5bfa3..d1f213516bc2d8f10557cae101f445dc264c608d 100644 --- a/indra/newview/skins/default/xui/tr/menu_hide_navbar.xml +++ b/indra/newview/skins/default/xui/tr/menu_hide_navbar.xml @@ -1,6 +1,6 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <menu name="hide_navbar_menu"> - <menu_item_check label="Gezinme ve Sık Kullanılanlar ÇubuÄŸunu Göster" name="ShowNavbarNavigationPanel"/> - <menu_item_check label="Sık Kullanılanlar ÇubuÄŸunu Göster" name="ShowNavbarFavoritesPanel"/> + <menu_item_check label="Gezinme ve Favoriler ÇubuÄŸunu Göster" name="ShowNavbarNavigationPanel"/> + <menu_item_check label="Favoriler ÇubuÄŸunu Göster" name="ShowNavbarFavoritesPanel"/> <menu_item_check label="Mini Konum ÇubuÄŸunu Göster" name="ShowMiniLocationPanel"/> </menu> diff --git a/indra/newview/skins/default/xui/tr/menu_landmark.xml b/indra/newview/skins/default/xui/tr/menu_landmark.xml index 17068d445d2c537e610f8c015bebd9e53f5aef85..c68a2f6a905eabcbfe564b64b1030aa57affce1e 100644 --- a/indra/newview/skins/default/xui/tr/menu_landmark.xml +++ b/indra/newview/skins/default/xui/tr/menu_landmark.xml @@ -2,6 +2,6 @@ <toggleable_menu name="landmark_overflow_menu"> <menu_item_call label="SLurl'i Kopyala" name="copy"/> <menu_item_call label="Sil" name="delete"/> - <menu_item_call label="Favori OluÅŸtur" name="pick"/> - <menu_item_call label="Sık Kullanılanlar ÇubuÄŸuna Ekle" name="add_to_favbar"/> + <menu_item_call label="Seçme OluÅŸtur" name="pick"/> + <menu_item_call label="Favoriler ÇubuÄŸuna Ekle" name="add_to_favbar"/> </toggleable_menu> diff --git a/indra/newview/skins/default/xui/tr/menu_picks_plus.xml b/indra/newview/skins/default/xui/tr/menu_picks_plus.xml index 0bd84fa88ef8cfa75896963a97898ec1d858a48f..d9c4fefc97a2d09e3623a23d7cac3f7606db80f9 100644 --- a/indra/newview/skins/default/xui/tr/menu_picks_plus.xml +++ b/indra/newview/skins/default/xui/tr/menu_picks_plus.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <toggleable_menu name="picks_plus_menu"> - <menu_item_call label="Yeni Favori" name="create_pick"/> + <menu_item_call label="Yeni Seçme" name="create_pick"/> <menu_item_call label="Yeni İlan" name="create_classified"/> </toggleable_menu> diff --git a/indra/newview/skins/default/xui/tr/menu_place.xml b/indra/newview/skins/default/xui/tr/menu_place.xml index 4ef7c01f097362fde7e2f954a007a6a62e69ca7e..ad167a328ab9d1af99a8dabc156da87a5c6da66a 100644 --- a/indra/newview/skins/default/xui/tr/menu_place.xml +++ b/indra/newview/skins/default/xui/tr/menu_place.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <toggleable_menu name="place_overflow_menu"> <menu_item_call label="Yer İmi Yap" name="landmark"/> - <menu_item_call label="Favori OluÅŸtur" name="pick"/> + <menu_item_call label="Seçme OluÅŸtur" name="pick"/> </toggleable_menu> diff --git a/indra/newview/skins/default/xui/tr/menu_places_gear_landmark.xml b/indra/newview/skins/default/xui/tr/menu_places_gear_landmark.xml index 5282d9fec7d47d0240a778e56013f445cc8d284d..939ee2c7cb0ad9cb0050379190f2b4bb947ecfcf 100644 --- a/indra/newview/skins/default/xui/tr/menu_places_gear_landmark.xml +++ b/indra/newview/skins/default/xui/tr/menu_places_gear_landmark.xml @@ -15,5 +15,5 @@ <menu_item_call label="Tüm klasörleri geniÅŸlet" name="expand_all"/> <menu_item_call label="Tüm klasörleri daralt" name="collapse_all"/> <menu_item_check label="Tarihe Göre Sırala" name="sort_by_date"/> - <menu_item_call label="Favori OluÅŸtur" name="create_pick"/> + <menu_item_call label="Seçme OluÅŸtur" name="create_pick"/> </toggleable_menu> diff --git a/indra/newview/skins/default/xui/tr/menu_slurl.xml b/indra/newview/skins/default/xui/tr/menu_slurl.xml index 03e3837ea0d1cd7920d29ed89b327d9635e1dccd..73ac068b2676735209807e624dbe0228f1de25ce 100644 --- a/indra/newview/skins/default/xui/tr/menu_slurl.xml +++ b/indra/newview/skins/default/xui/tr/menu_slurl.xml @@ -1,6 +1,6 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <menu name="Popup"> <menu_item_call label="URL Hakkında" name="about_url"/> - <menu_item_call label="URL'ye Işınlan" name="teleport_to_url"/> + <menu_item_call label="URL'ye Işınla" name="teleport_to_url"/> <menu_item_call label="Harita" name="show_on_map"/> </menu> diff --git a/indra/newview/skins/default/xui/tr/menu_viewer.xml b/indra/newview/skins/default/xui/tr/menu_viewer.xml index 0877d8881b604406b490054345a530e5c0dc6901..efeed833a56264c641544b0402b4cfa8dd3fab44 100644 --- a/indra/newview/skins/default/xui/tr/menu_viewer.xml +++ b/indra/newview/skins/default/xui/tr/menu_viewer.xml @@ -56,7 +56,7 @@ <menu_item_check label="Parsel Özellikleri" name="Parcel Properties"/> <menu_item_check label="GeliÅŸmiÅŸ Menü" name="Show Advanced Menu"/> </menu> - <menu_item_call label="Ana Konuma Işınlan" name="Teleport Home"/> + <menu_item_call label="Ana Konuma Işınla" name="Teleport Home"/> <menu_item_call label="Ana Konumu Burası Olarak Seç" name="Set Home to Here"/> <menu label="GüneÅŸ" name="Environment Settings"> <menu_item_call label="Gün DoÄŸumu" name="Sunrise"/> diff --git a/indra/newview/skins/default/xui/tr/notifications.xml b/indra/newview/skins/default/xui/tr/notifications.xml index b75307b67b03d063781d81d67715ad7e7c59b991..a268c103a6e366a9f018037f9648aeb16efbafe3 100644 --- a/indra/newview/skins/default/xui/tr/notifications.xml +++ b/indra/newview/skins/default/xui/tr/notifications.xml @@ -189,7 +189,7 @@ Bu Yetenek '[ROLE_NAME]' rolüne eklensin mi? <usetemplate ignoretext="Aksesuarları çıkarmadan önce doÄŸrulama iste" name="okcancelignore" notext="Hayır" yestext="Evet"/> </notification> <notification name="JoinGroupCanAfford"> - Bu gruba katılmanın maliyeti: [COST] L$. + Bu gruba katılmanın maliyeti: L$ [COST]. Devam etmek istiyor musunuz? <usetemplate name="okcancelbuttons" notext="İptal Et" yestext="Katıl"/> </notification> @@ -199,33 +199,33 @@ Devam etmek istiyor musunuz? <usetemplate name="okcancelbuttons" notext="İptal Et" yestext="Katıl"/> </notification> <notification name="JoinGroupCannotAfford"> - Bu gruba katılmanın maliyeti: [COST] L$. + Bu gruba katılmanın maliyeti: L$ [COST]. Bu gruba katılmak için yeterli L$'na sahip deÄŸilsiniz. </notification> <notification name="CreateGroupCost"> - Bu grubu oluÅŸturmanın maliyeti: 100 L$. + Bu grubu oluÅŸturmanın maliyeti: L$ 100. Grupların birden fazla üyeye sahip olması gereklidir, aksi takdirde grup kalıcı olarak silinir. Lütfen 48 saat içinde diÄŸer üyeleri davet edin. - <usetemplate canceltext="İptal" name="okcancelbuttons" notext="İptal" yestext="100 L$ ödeyerek grubu oluÅŸtur"/> + <usetemplate canceltext="İptal" name="okcancelbuttons" notext="İptal" yestext="L$ 100 ödeyerek grubu oluÅŸtur"/> </notification> <notification name="LandBuyPass"> - [COST] L$ ödeyerek ('[PARCEL_NAME]') arazisine [TIME] saat süreyle girebilirsiniz. GiriÅŸ hakkı satın almak istiyor musunuz? + L$ [COST] ödeyerek ('[PARCEL_NAME]') arazisine [TIME] saat süreyle girebilirsiniz. GiriÅŸ hakkı satın almak istiyor musunuz? <usetemplate name="okcancelbuttons" notext="İptal" yestext="Tamam"/> </notification> <notification name="SalePriceRestriction"> - Herhangi birine satış yaparken satış fiyatı 0 L$'ndan daha yüksek bir deÄŸere ayarlanmalıdır. -0 L$ fiyatla satış yapıyorsanız lütfen satışın yapılacağı kiÅŸiyi seçin. + Herhangi birine satış yaparken satış fiyatı L$ 0'dan daha yüksek bir deÄŸere ayarlanmalıdır. +L$ 0 fiyatla satış yapıyorsanız lütfen satışın yapılacağı kiÅŸiyi seçin. </notification> <notification name="ConfirmLandSaleChange"> Seçili [LAND_SIZE] m² arazi satışa çıkarılmak üzere ayarlanıyor. -Satış fiyatınız [SALE_PRICE] L$ olacak ve [NAME] için satışa açık olacaktır. +Satış fiyatınız L$ [SALE_PRICE] olacak ve [NAME] için satışa açık olacaktır. <usetemplate name="okcancelbuttons" notext="İptal" yestext="Tamam"/> </notification> <notification name="ConfirmLandSaleToAnyoneChange"> DİKKAT: 'Herkes için satışa açık' seçeneÄŸinin tıklanması, arazinizi tüm [SECOND_LIFE] topluluÄŸuna açık hale getirir, bu bölgede bulunmayanlar da buna dahildir. Seçili [LAND_SIZE] m² arazi satışa çıkarılmak üzere ayarlanıyor. -Satış fiyatınız [SALE_PRICE] L$ olacak ve [NAME] için satışa açık olacaktır. +Satış fiyatınız L$ [SALE_PRICE] olacak ve [NAME] için satışa açık olacaktır. <usetemplate name="okcancelbuttons" notext="İptal" yestext="Tamam"/> </notification> <notification name="ReturnObjectsDeededToGroup"> @@ -365,7 +365,7 @@ Devam etmek istediÄŸinize emin misiniz? <usetemplate name="okbutton" yestext="Tamam"/> </notification> <notification name="DeleteAvatarPick"> - Favori <nolink>[PICK]</nolink> silinsin mi? + Seçme <nolink>[PICK]</nolink> silinsin mi? <usetemplate name="okcancelbuttons" notext="İptal" yestext="Tamam"/> </notification> <notification name="DeleteOutfits"> @@ -1008,7 +1008,7 @@ bu simdeki TÜM ARAZİLERDEN SİLMEK istediÄŸinize emin misiniz? İlanınız için bir ad belirtmelisiniz. </notification> <notification name="MinClassifiedPrice"> - Listeleme için ödenmesi gereken tutar en az [MIN_PRICE] L$ olmalıdır. + Listeleme için ödenmesi gereken tutar en az L$ [MIN_PRICE] olmalıdır. Lütfen daha yüksek bir tutar girin. </notification> @@ -1586,7 +1586,7 @@ Lütfen daha sonra tekrar deneyin. </notification> <notification name="TeleportToPick"> [PICK] konumuna ışınlanılsın mı? - <usetemplate ignoretext="Favori sekmesindeki bir konuma ışınlanma istediÄŸimde doÄŸrulama iste" name="okcancelignore" notext="İptal Et" yestext="Işınla"/> + <usetemplate ignoretext="Seçme sekmesindeki bir konuma ışınlanma istediÄŸimde doÄŸrulama iste" name="okcancelignore" notext="İptal Et" yestext="Işınla"/> </notification> <notification name="TeleportToClassified"> [CLASSIFIED] konumuna ışınlanılsın mı? @@ -1766,7 +1766,7 @@ EriÅŸkinlik Seviyesi tercihinizi ÅŸimdi yükseltmek ve araziye girebilmek için <notification name="PublishClassified"> Hatırla: İlan ücretleri iade edilmez. -Åžimdi [AMOUNT] L$ ödeyerek bu ilanı yayınlamak istiyor musunuz? +Åžimdi L$ [AMOUNT] ödeyerek bu ilanı yayınlamak istiyor musunuz? <usetemplate name="okcancelbuttons" notext="İptal" yestext="Tamam"/> </notification> <notification name="SetClassifiedMature"> @@ -1810,7 +1810,7 @@ Lütfen sadece bir nesne seçin ve tekrar deneyin. Lütfen sadece bir nesne seçin ve tekrar deneyin. </notification> <notification name="BuyOriginal"> - Özgün nesne [OWNER] kullanıcısından [PRICE] L$ karşılığında satın alınsın mı? + Özgün nesne [OWNER] kullanıcısından L$ [PRICE] karşılığında satın alınsın mı? Nesnenin sahibi siz olacaksınız. Åžu iÅŸlemleri yapabileceksiniz: DeÄŸiÅŸtirme: [MODIFYPERM] @@ -1819,7 +1819,7 @@ Nesnenin sahibi siz olacaksınız. <usetemplate name="okcancelbuttons" notext="İptal" yestext="Tamam"/> </notification> <notification name="BuyOriginalNoOwner"> - Özgün nesne PRICE] L$ karşılığında satın alınsın mı? + Özgün nesne L$ [PRICE] karşılığında satın alınsın mı? Nesnenin sahibi siz olacaksınız. Åžu iÅŸlemleri yapabileceksiniz: DeÄŸiÅŸtirme: [MODIFYPERM] @@ -1828,7 +1828,7 @@ Nesnenin sahibi siz olacaksınız. <usetemplate name="okcancelbuttons" notext="İptal" yestext="Tamam"/> </notification> <notification name="BuyCopy"> - Bir kopyası [OWNER] kullanıcısından [PRICE] L$ karşılığında satın alınsın mı? + Bir kopyası [OWNER] kullanıcısından L$ [PRICE] karşılığında satın alınsın mı? Nesne envanterinize kopyalanacak. Åžu iÅŸlemleri yapabileceksiniz: DeÄŸiÅŸtirme: [MODIFYPERM] @@ -1837,7 +1837,7 @@ Nesne envanterinize kopyalanacak. <usetemplate name="okcancelbuttons" notext="İptal" yestext="Tamam"/> </notification> <notification name="BuyCopyNoOwner"> - Bir kopyası [PRICE] L$ karşılığında satın alınsın mı? + Bir kopyası L$ [PRICE] karşılığında satın alınsın mı? Nesne envanterinize kopyalanacak. Åžu iÅŸlemleri yapabileceksiniz: DeÄŸiÅŸtirme: [MODIFYPERM] @@ -1846,12 +1846,12 @@ Nesne envanterinize kopyalanacak. <usetemplate name="okcancelbuttons" notext="İptal" yestext="Tamam"/> </notification> <notification name="BuyContents"> - İçerik [OWNER] kullanıcısından [PRICE] L$ karşılığında satın alınsın mı? + İçerik [OWNER] kullanıcısından L$ [PRICE] karşılığında satın alınsın mı? İçerik envanterinize kopyalanacak. <usetemplate name="okcancelbuttons" notext="İptal" yestext="Tamam"/> </notification> <notification name="BuyContentsNoOwner"> - İçerik [PRICE] L$ karşılığında satın alınsın mı? + İçerik L$ [PRICE] karşılığında satın alınsın mı? İçerik envanterinize kopyalanacak. <usetemplate name="okcancelbuttons" notext="İptal" yestext="Tamam"/> </notification> @@ -1875,7 +1875,7 @@ Lütfen parolanızı yeniden girin ve Tamam'ı tıklatın. </notification> <notification name="SetPickLocation"> Not: -Bu favorinin konumunu güncellediniz fakat diÄŸer detaylar özgün deÄŸerlerini koruyacak. +Bu seçmenin konumunu güncellediniz fakat diÄŸer detaylar özgün deÄŸerlerini koruyacak. <usetemplate name="okbutton" yestext="Tamam"/> </notification> <notification name="MoveInventoryFromObject"> @@ -2132,7 +2132,7 @@ Bu adımda web tarayıcınızın baÅŸlatılacağına dikkat edin. (Yaklaşık 5 dakika sürecektir.) </notification> <notification name="UploadPayment"> - Karşıya yüklemek için [AMOUNT] L$ ödediniz. + Karşıya yüklemek için L$ [AMOUNT] ödediniz. </notification> <notification name="UploadWebSnapshotDone"> Web sitesinde yer alan anlık görüntülerin karşıya yüklenmesi tamamlandı. @@ -2479,7 +2479,7 @@ Lütfen biraz sonra tekrar deneyin. [MESSAGE] - [MATURITY_STR] <icon>[MATURITY_ICON]</icon> <form name="form"> - <button name="Teleport" text="Işınlan"/> + <button name="Teleport" text="Işınla"/> <button name="Cancel" text="İptal"/> </form> </notification> @@ -3014,7 +3014,7 @@ Görünümünüzü döndürmek için dünya üzerindeki herhangi bir yeri tıkla <usetemplate name="okcancelbuttons" notext="Çıkma" yestext="Çık"/> </notification> <notification label="" name="NoPicks"> - Favorileri oluÅŸturma ve düzenleme sadece GeliÅŸmiÅŸ modda kullanılabilir. Uygulamadan çıkıp, mod deÄŸiÅŸtirmek ister misiniz? Mod seçici oturum açma ekranında bulunabilir. + Seçmeleri oluÅŸturma ve düzenleme sadece GeliÅŸmiÅŸ modda kullanılabilir. Uygulamadan çıkıp, mod deÄŸiÅŸtirmek ister misiniz? Mod seçici oturum açma ekranında bulunabilir. <usetemplate name="okcancelbuttons" notext="Çıkma" yestext="Çık"/> </notification> <notification label="" name="NoWorldMap"> diff --git a/indra/newview/skins/default/xui/tr/panel_edit_pick.xml b/indra/newview/skins/default/xui/tr/panel_edit_pick.xml index 446beb6eb8729149fa590a80c912ff0a129978cf..98b02d27df28e5813eb4710b0a8ae8d26736f7d3 100644 --- a/indra/newview/skins/default/xui/tr/panel_edit_pick.xml +++ b/indra/newview/skins/default/xui/tr/panel_edit_pick.xml @@ -4,7 +4,7 @@ (kaydedildikten sonra güncelleÅŸtirilir) </panel.string> <text name="title"> - Favori Düzenle + Seçme Düzenle </text> <scroll_container name="profile_scroll"> <panel name="scroll_content_panel"> @@ -27,7 +27,7 @@ <panel label="bottom_panel" name="bottom_panel"> <layout_stack name="layout_stack1"> <layout_panel name="layout_panel1"> - <button label="Favori Kaydet" name="save_changes_btn"/> + <button label="Seçme Kaydet" name="save_changes_btn"/> </layout_panel> <layout_panel name="layout_panel2"> <button label="İptal" name="cancel_btn"/> diff --git a/indra/newview/skins/default/xui/tr/panel_landmarks.xml b/indra/newview/skins/default/xui/tr/panel_landmarks.xml index 7543decb36f2c824b53ebd5a3493048878d24bea..d40d0c15434491b826684269514dc3422a3dcb71 100644 --- a/indra/newview/skins/default/xui/tr/panel_landmarks.xml +++ b/indra/newview/skins/default/xui/tr/panel_landmarks.xml @@ -1,7 +1,7 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <panel name="Landmarks"> <accordion name="landmarks_accordion"> - <accordion_tab name="tab_favorites" title="Sık Kullanılanlar çubuÄŸu"/> + <accordion_tab name="tab_favorites" title="Favoriler çubuÄŸu"/> <accordion_tab name="tab_landmarks" title="Yer İmlerim"/> <accordion_tab name="tab_inventory" title="Envanterim"/> <accordion_tab name="tab_library" title="Kütüphane"/> diff --git a/indra/newview/skins/default/xui/tr/panel_me.xml b/indra/newview/skins/default/xui/tr/panel_me.xml index 0441660f3cd77c36093d5d3c634ebc816cf2a946..4b911c9ce6acf469a473c6a3c1062c72cf35be10 100644 --- a/indra/newview/skins/default/xui/tr/panel_me.xml +++ b/indra/newview/skins/default/xui/tr/panel_me.xml @@ -1,4 +1,4 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <panel label="Profilim" name="panel_me"> - <panel label="FAVORİLERİM" name="panel_picks"/> + <panel label="SEÇMELERİM" name="panel_picks"/> </panel> diff --git a/indra/newview/skins/default/xui/tr/panel_navigation_bar.xml b/indra/newview/skins/default/xui/tr/panel_navigation_bar.xml index b61ba0a12f40e91404aa2b95ec6f5662e38d89eb..8d43e3fb5a26afd0f5e1d78accce0fbb08f06ec5 100644 --- a/indra/newview/skins/default/xui/tr/panel_navigation_bar.xml +++ b/indra/newview/skins/default/xui/tr/panel_navigation_bar.xml @@ -12,9 +12,9 @@ <layout_panel name="favorites_layout_panel"> <favorites_bar name="favorite" tool_tip="Second Life içerisinde sık kullandığınız yerlere hızla eriÅŸmek için Yer İmlerini buraya sürükleyin!"> <label name="favorites_bar_label" tool_tip="Second Life içerisinde sık kullandığınız yerlere hızla eriÅŸmek için Yer İmlerini buraya sürükleyin!"> - Sık Kullanılanlar ÇubuÄŸu + Favoriler ÇubuÄŸu </label> - <more_button name=">>" tool_tip="Sık Kullanılanlarımdan daha çok göster"> + <more_button name=">>" tool_tip="Favorilerimden daha çok göster"> Daha Fazla â–¼ </more_button> </favorites_bar> diff --git a/indra/newview/skins/default/xui/tr/panel_outfit_edit.xml b/indra/newview/skins/default/xui/tr/panel_outfit_edit.xml index cc9f531831b25599f8606182a351fa98bfb6a520..00cd49abcdef2a196150d4fea7381a154bbc277c 100644 --- a/indra/newview/skins/default/xui/tr/panel_outfit_edit.xml +++ b/indra/newview/skins/default/xui/tr/panel_outfit_edit.xml @@ -1,7 +1,7 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <!-- Side tray Outfit Edit panel --> <panel name="outfit_edit"> - <string name="No Outfit" value="Kıyafet Yok"/> + <string name="No Outfit" value="Dış Görünüm Yok"/> <string name="unsaved_changes" value="KaydedilmemiÅŸ DeÄŸiÅŸiklikler"/> <string name="now_editing" value="Åžimdi Düzenleniyor"/> <panel.string name="not_available"> @@ -20,7 +20,7 @@ <panel name="header_panel"> <panel name="outfit_name_and_status"> <text name="status" value="Åžimdi düzenleniyor..."/> - <text name="curr_outfit_name" value="[Mevcut Kıyafet]"/> + <text name="curr_outfit_name" value="[Mevcut Dış Görünüm]"/> </panel> </panel> <layout_stack name="im_panels"> diff --git a/indra/newview/skins/default/xui/tr/panel_outfits_list.xml b/indra/newview/skins/default/xui/tr/panel_outfits_list.xml index 12892e16424635e94427ba0d3b512118362a30f0..60a3576d845dfc3e241588556882b716c75f38e7 100644 --- a/indra/newview/skins/default/xui/tr/panel_outfits_list.xml +++ b/indra/newview/skins/default/xui/tr/panel_outfits_list.xml @@ -6,6 +6,6 @@ </accordion> <panel name="bottom_panel"> <menu_button name="options_gear_btn" tool_tip="İlave seçenekleri göster"/> - <button name="trash_btn" tool_tip="Seçili kıyafeti sil"/> + <button name="trash_btn" tool_tip="Seçili dış görünümü sil"/> </panel> </panel> diff --git a/indra/newview/skins/default/xui/tr/panel_people.xml b/indra/newview/skins/default/xui/tr/panel_people.xml index 96701fbd841caf1977f96206102a6e6ab37c5923..7d42e3ab7989ee9ca59ee41ab31d17ca9094df51 100644 --- a/indra/newview/skins/default/xui/tr/panel_people.xml +++ b/indra/newview/skins/default/xui/tr/panel_people.xml @@ -3,7 +3,7 @@ <panel label="KiÅŸiler" name="people_panel"> <string name="no_recent_people" value="Yakın zamanlı kiÅŸi yok. Birlikte takılacak kiÅŸiler mi arıyorsunuz? [secondlife:///app/search/people Arayı] veya [secondlife:///app/worldmap Dünya Haritasını] deneyin."/> <string name="no_filtered_recent_people" value="Aradığınızı bulamadınız mı? [secondlife:///app/search/people/[SEARCH_TERM] Ara] deneyin."/> - <string name="no_one_near" value="Yakında kimse yok. Birlikte takılacak kiÅŸiler mi arıyorsunuz? [secondlife:///app/search/people Arayı] veya [secondlife:///app/worldmap Dünya Haritasını] deneyin."/> + <string name="no_one_near" value="Yakında kimse yok. Birlikte takılacak kiÅŸiler mi arıyorsunuz? [secondlife:///app/search/people Arayın] veya [secondlife:///app/worldmap Dünya Haritasını] deneyin."/> <string name="no_one_filtered_near" value="Aradığınızı bulamadınız mı? [secondlife:///app/search/people/[SEARCH_TERM] Ara] deneyin."/> <string name="no_friends_online" value="Çevrimiçi arkadaÅŸ yok"/> <string name="no_friends" value="ArkadaÅŸ yok"/> diff --git a/indra/newview/skins/default/xui/tr/panel_picks.xml b/indra/newview/skins/default/xui/tr/panel_picks.xml index a36f3faf03352230a92868959a7cc2dc923ecff6..26beac7854891238371a4a4b4325398fa2c4e201 100644 --- a/indra/newview/skins/default/xui/tr/panel_picks.xml +++ b/indra/newview/skins/default/xui/tr/panel_picks.xml @@ -1,22 +1,22 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <panel label="Favorilerim" name="panel_picks"> - <string name="no_picks" value="Favori Yok"/> + <string name="no_picks" value="Seçme Yok"/> <string name="no_classifieds" value="İlan Yok"/> <accordion name="accordion"> - <accordion_tab name="tab_picks" title="Favorilerim"/> + <accordion_tab name="tab_picks" title="Seçmelerim"/> <accordion_tab name="tab_classifieds" title="İlanlar"/> </accordion> <panel label="bottom_panel" name="edit_panel"> <layout_stack name="edit_panel_ls"> <layout_panel name="gear_menu_btn"> - <button name="new_btn" tool_tip="Mevcut konumda yeni bir favori veya ilan oluÅŸturun"/> + <button name="new_btn" tool_tip="Mevcut konumda yeni bir seçme veya ilan oluÅŸturun"/> </layout_panel> </layout_stack> </panel> <panel name="buttons_cucks"> <layout_stack name="buttons_cucks_ls"> <layout_panel name="info_btn_lp"> - <button label="Bilgi" name="info_btn" tool_tip="Favori bilgilerini göster"/> + <button label="Bilgi" name="info_btn" tool_tip="Seçme bilgilerini göster"/> </layout_panel> <layout_panel name="teleport_btn_lp"> <button label="Işınla" name="teleport_btn" tool_tip="İliÅŸkili alana ışınlanın"/> diff --git a/indra/newview/skins/default/xui/tr/panel_preferences_general.xml b/indra/newview/skins/default/xui/tr/panel_preferences_general.xml index da01bd98a008b0248bb5a9cb8dcc07893e061c13..fbfc07c4b8740bd9cb67378bde22ca6e721f195b 100644 --- a/indra/newview/skins/default/xui/tr/panel_preferences_general.xml +++ b/indra/newview/skins/default/xui/tr/panel_preferences_general.xml @@ -5,7 +5,7 @@ </text> <combo_box name="language_combobox"> <combo_box.item label="Sistem varsayılanı" name="System Default Language"/> - <combo_box.item label="İngilizce" name="English"/> + <combo_box.item label="English (İngilizce)" name="English"/> <combo_box.item label="Dansk (Danca) - Beta" name="Danish"/> <combo_box.item label="Deutsch (Almanca) - Beta" name="Deutsch(German)"/> <combo_box.item label="Español (İspanyolca) - Beta" name="Spanish"/> @@ -14,9 +14,9 @@ <combo_box.item label="Polski (Lehçe) - Beta" name="Polish"/> <combo_box.item label="Português (Portekizce) - Beta" name="Portugese"/> <combo_box.item label="РуÑÑкий (Rusça) - Beta" name="Russian"/> - <combo_box.item label="Türkçe (Türkçe) - Beta" name="Turkish"/> + <combo_box.item label="Türkçe - Beta" name="Turkish"/> <combo_box.item label="日本語 (Japonca) - Beta" name="(Japanese)"/> - <combo_box.item label="æ£é«” (Geleneksel Çince) - Beta" name="Traditional Chinese"/> + <combo_box.item label="æ£é«”䏿–‡ (Geleneksel Çince) - Beta" name="Traditional Chinese"/> </combo_box> <text name="language_textbox2"> (Yeniden baÅŸlatma gerekir) diff --git a/indra/newview/skins/default/xui/tr/panel_preferences_privacy.xml b/indra/newview/skins/default/xui/tr/panel_preferences_privacy.xml index 38fa8ab7f9579761dbb788657bf9f9217b6cc8f0..e76616f667a1db06e45b8d00fa54066379d4a255 100644 --- a/indra/newview/skins/default/xui/tr/panel_preferences_privacy.xml +++ b/indra/newview/skins/default/xui/tr/panel_preferences_privacy.xml @@ -11,7 +11,7 @@ <check_box label="Çevrimiçi olduÄŸumu sadece arkadaÅŸlar ve gruplar bilsin" name="online_visibility"/> <check_box label="Sadece arkadaÅŸlar ve gruplar beni arasın veya Aİ göndersin" name="voice_call_friends_only_check"/> <check_box label="Aramaları sonlandırırken mikrofonu kapat" name="auto_disengage_mic_check"/> - <check_box label="Oturum Açarken Sık Kullanılan Yer İmlerimi Göster ('Buradan baÅŸla' açılır menüsünden)" name="favorites_on_login_check"/> + <check_box label="Oturum Açarken Favori Yer İmlerimi Göster ('Buradan baÅŸla' açılır menüsünden)" name="favorites_on_login_check"/> <text name="Logs:"> Sohbet Günlükleri: </text> diff --git a/indra/newview/skins/default/xui/tr/panel_profile_view.xml b/indra/newview/skins/default/xui/tr/panel_profile_view.xml index c5cee39b70c494d02e70ce329c73d5b339f466a3..17c5002bd75472e55a6d29adb91ebfb198ba26f9 100644 --- a/indra/newview/skins/default/xui/tr/panel_profile_view.xml +++ b/indra/newview/skins/default/xui/tr/panel_profile_view.xml @@ -14,7 +14,7 @@ <text name="user_label" value="Kullanıcı Adı:"/> <tab_container name="tabs"> <panel label="PROFİL" name="panel_profile"/> - <panel label="FAVORİLER" name="panel_picks"/> + <panel label="SEÇMELER" name="panel_picks"/> <panel label="NOTLAR & GİZLİLİK" name="panel_notes"/> </tab_container> </panel> diff --git a/indra/newview/skins/default/xui/tr/role_actions.xml b/indra/newview/skins/default/xui/tr/role_actions.xml index 002589b2761171587bc3fc13fa3a0143752f9b00..18f7d6dca2656a561185dac683665f7d7b3cc787 100644 --- a/indra/newview/skins/default/xui/tr/role_actions.xml +++ b/indra/newview/skins/default/xui/tr/role_actions.xml @@ -53,10 +53,10 @@ <action description="Gruba ait olmayan nesneleri iade et" longdescription="Grubun sahip olduÄŸu parseller üzerinde gruba ait olmayan nesneleri Arazi Hakkında > Nesneler sekmesinden iade edin." name="land return non group" value="34"/> <action description="Linden bitkilerini kullanarak bahçe düzenleme" longdescription="Linden aÄŸaçlarını, bitkilerini ve çimleri yerleÅŸtirerek veya yerlerini deÄŸiÅŸtirerek bahçe düzenleme yeteneÄŸi. Bu öğeler envanterinizin Kütüphane > Nesneler klasörü içinde bulunabilir veya İnÅŸa Et menüsünden oluÅŸturulabilir." name="land gardening" value="35"/> </action_set> - <action_set description="Bu Yeteneklere grubun sahip olduÄŸu nesneleri devretme, deÄŸiÅŸtirme ve satma güçleri de dahildir. Bu deÄŸiÅŸiklikler İnÅŸa Araçları > Genel sekmesinden yapılabilir. Bir nesneyi saÄŸ tıklatıp Düzenle'yi seçerek ayarlarını görebilirsiniz." name="Object Management"> - <action description="Nesneleri gruba devret" longdescription="Nesneleri İnÅŸa Araçları > Genel sekmesinden gruba devredin." name="object deed" value="36"/> - <action description="Grubun sahip olduÄŸu nesneleri kullan (taşı, kopyala, deÄŸiÅŸtir)" longdescription="Grubun sahip olduÄŸu nesneleri, İnÅŸa Araçları > Genel sekmesi üzerinden kullanın (taşıyın, kopyalayın, deÄŸiÅŸtirin)." name="object manipulate" value="38"/> - <action description="Grubun sahip olduÄŸu nesneleri satışa çıkar" longdescription="Grubun sahip olduÄŸu nesneleri İnÅŸa Araçları > Genel sekmesinden satışa çıkarın." name="object set sale" value="39"/> + <action_set description="Bu Yeteneklere grubun sahip olduÄŸu nesneleri devretme, deÄŸiÅŸtirme ve satma güçleri de dahildir. Bu deÄŸiÅŸiklikler İnÅŸa Et Araçları > Genel sekmesinden yapılabilir. Bir nesneyi saÄŸ tıklatıp Düzenle'yi seçerek ayarlarını görebilirsiniz." name="Object Management"> + <action description="Nesneleri gruba devret" longdescription="Nesneleri İnÅŸa Et Araçları > Genel sekmesinden gruba devredin." name="object deed" value="36"/> + <action description="Grubun sahip olduÄŸu nesneleri kullan (taşı, kopyala, deÄŸiÅŸtir)" longdescription="Grubun sahip olduÄŸu nesneleri, İnÅŸa Et Araçları > Genel sekmesi üzerinden kullanın (taşıyın, kopyalayın, deÄŸiÅŸtirin)." name="object manipulate" value="38"/> + <action description="Grubun sahip olduÄŸu nesneleri satışa çıkar" longdescription="Grubun sahip olduÄŸu nesneleri İnÅŸa Et Araçları > Genel sekmesinden satışa çıkarın." name="object set sale" value="39"/> </action_set> <action_set description="Bu Yeteneklere Üyelerin grup borçlarını ödemesini ve grup kâr paylarını almasını saÄŸlayan ve grup hesabının geçmiÅŸ bilgilerine eriÅŸimi sınırlandıran güçler de dahildir." name="Accounting"> <action description="Grup borçlarını öde ve grup kâr paylarını al" longdescription="Bu YeteneÄŸe sahip bir Roldeki Üyeler otomatik olarak grup borçlarını ödeyecek ve grup kâr paylarını alacaktır. Bu da grubun sahip olduÄŸu arazi satışlarından kendilerine düşen ve günlük olarak dağıtılan ksımı alacakları gibi parsel için ilan verme ücreti gibi masraflara da katkıda bulunacakları anlamına gelir." name="accounting accountable" value="40"/> diff --git a/indra/newview/skins/default/xui/tr/sidepanel_appearance.xml b/indra/newview/skins/default/xui/tr/sidepanel_appearance.xml index 75528974ece288bf00ea27cf18a68d400618135a..b632f21cf583641cc045b6af5782a7970dc64be4 100644 --- a/indra/newview/skins/default/xui/tr/sidepanel_appearance.xml +++ b/indra/newview/skins/default/xui/tr/sidepanel_appearance.xml @@ -1,9 +1,9 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> -<panel label="Kıyafetler" name="appearance panel"> - <string name="No Outfit" value="Kıyafet Yok"/> +<panel label="Dış Görünümler" name="appearance panel"> + <string name="No Outfit" value="Dış Görünüm Yok"/> <string name="Unsaved Changes" value="KaydedilmemiÅŸ deÄŸiÅŸiklikler"/> <string name="Now Wearing" value="Åžimdi giyiyor..."/> - <string name="Changing outfits" value="Kıyafetleri deÄŸiÅŸtiriyor"/> + <string name="Changing outfits" value="Dış görünümler deÄŸiÅŸtiriliyor"/> <panel name="panel_currentlook"> <button label="E" name="editappearance_btn"/> <button label="O" name="openoutfit_btn"/> @@ -11,9 +11,9 @@ (Durum) </text> <text name="currentlook_name"> - MOOSE gibi gerçekten Uzun bir Adla Kıyafetim + MOOSE gibi gerçekten Uzun bir Adla Dış Görünümüm </text> - <button label="" name="edit_outfit_btn" tool_tip="Bu kıyafeti düzenle"/> + <button label="" name="edit_outfit_btn" tool_tip="Bu dış görünümü düzenle"/> </panel> - <filter_editor label="Kıyafetleri Filtrele" name="Filter"/> + <filter_editor label="Dış Görünümleri Filtrele" name="Filter"/> </panel> diff --git a/indra/newview/skins/default/xui/tr/strings.xml b/indra/newview/skins/default/xui/tr/strings.xml index e1885413bbd1a7c92101015c279d1da78cf0294f..a17d78486d43ce64b8c5f68e17969b912afd9980 100644 --- a/indra/newview/skins/default/xui/tr/strings.xml +++ b/indra/newview/skins/default/xui/tr/strings.xml @@ -584,7 +584,7 @@ Lütfen bir dakika içerisinde tekrar oturum açmayı deneyin. sim durumu </string> <string name="favorite"> - sık kullanılan + favori </string> <string name="symbolic link"> baÄŸlantı @@ -1205,7 +1205,7 @@ Lütfen bir dakika içerisinde tekrar oturum açmayı deneyin. Aradığınızı bulamadınız mı? [secondlife:///app/search/places/[SEARCH_TERM] Arama] ile bulmayı deneyin. </string> <string name="FavoritesNoMatchingItems"> - Bir yer imini sık kullanılanlarınıza eklemek için buraya sürükleyin. + Bir yer imini favorilerinize eklemek için buraya sürükleyin. </string> <string name="InventoryNoTexture"> Envanterinizde bu dokunun kopyası yok @@ -1380,10 +1380,10 @@ Lütfen bir dakika içerisinde tekrar oturum açmayı deneyin. Mimikler </string> <string name="InvFolder Favorite"> - Sık Kullanılanlarım + Favorilerim </string> <string name="InvFolder favorite"> - Sık Kullanılanlarım + Favorilerim </string> <string name="InvFolder Current Outfit"> Mevcut Dış Görünüm @@ -1985,10 +1985,10 @@ Lütfen bir dakika içerisinde tekrar oturum açmayı deneyin. (yayınlandıktan sonra güncelleÅŸtirilir) </string> <string name="NoPicksClassifiedsText"> - Herhangi bir Favori veya İlan oluÅŸturmadınız. Bir Favori veya İlan oluÅŸturmak için aÅŸağıdaki Artı düğmesine tıklayın. + Herhangi bir Seçme veya İlan oluÅŸturmadınız. Bir Seçme veya İlan oluÅŸturmak için aÅŸağıdaki Artı düğmesine tıklayın. </string> <string name="NoAvatarPicksClassifiedsText"> - Kullanıcının herhangi bir favorisi veya ilanı yok + Kullanıcının herhangi bir seçmesi veya ilanı yok </string> <string name="PicksClassifiedsLoadingText"> Yükleniyor... @@ -4165,7 +4165,7 @@ Kötüye Kullanımı Bildirme KonuÅŸma Mimikleri </string> <string name="Common Gestures"> - Sık Kullanılan Mimikler + Favori Mimikler </string> <string name="Male - Excuse me"> Erkek - Afedersiniz @@ -4798,7 +4798,7 @@ Düzenleyici yolunu çift tırnakla çevrelemeyi deneyin. Pusula </string> <string name="Command_Destinations_Label"> - Hedef Konumlar + Hedef Konum </string> <string name="Command_Gestures_Label"> Mimikler @@ -4825,7 +4825,7 @@ Düzenleyici yolunu çift tırnakla çevrelemeyi deneyin. KiÅŸiler </string> <string name="Command_Picks_Label"> - Favoriler + Seçmeler </string> <string name="Command_Places_Label"> Yerler @@ -4897,7 +4897,7 @@ Düzenleyici yolunu çift tırnakla çevrelemeyi deneyin. ArkadaÅŸlar, gruplar ve yakındaki kiÅŸiler </string> <string name="Command_Picks_Tooltip"> - Profilinizde sık kullanılan olarak gösterilecek yerler + Profilinizde favori olarak gösterilecek yerler </string> <string name="Command_Places_Tooltip"> KaydettiÄŸiniz yerler diff --git a/indra/newview/skins/default/xui/zh/floater_day_cycle_options.xml b/indra/newview/skins/default/xui/zh/floater_day_cycle_options.xml deleted file mode 100644 index 84186c583667750b42205c516e7e26bba4f44e11..0000000000000000000000000000000000000000 --- a/indra/newview/skins/default/xui/zh/floater_day_cycle_options.xml +++ /dev/null @@ -1,95 +0,0 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes"?> -<floater name="Day Cycle Floater" title="日循環編輯器"> - <tab_container name="Day Cycle Tabs"> - <panel label="日循環" name="Day Cycle"> - <multi_slider initial_value="0" name="WLTimeSlider"/> - <multi_slider initial_value="0" name="WLDayCycleKeys"/> - <text name="WL12am"> - 12am - </text> - <text name="WL3am"> - 3am - </text> - <text name="WL6am"> - 6am - </text> - <text name="WL9amHash"> - 9am - </text> - <text name="WL12pmHash"> - 12pm - </text> - <text name="WL3pm"> - 3pm - </text> - <text name="WL6pm"> - 6pm - </text> - <text name="WL9pm"> - 9pm - </text> - <text name="WL12am2"> - 12am - </text> - <text name="WL12amHash"> - | - </text> - <text name="WL3amHash"> - I - </text> - <text name="WL6amHash"> - | - </text> - <text name="WL9amHash2"> - I - </text> - <text name="WL12pmHash2"> - | - </text> - <text name="WL3pmHash"> - I - </text> - <text name="WL6pmHash"> - | - </text> - <text name="WL9pmHash"> - I - </text> - <text name="WL12amHash2"> - | - </text> - <button label="Add Key" label_selected="Add Key" name="WLAddKey"/> - <button label="Delete Key" label_selected="Delete Key" name="WLDeleteKey"/> - <text name="WLCurKeyFrameText"> - Key Frame Settings: - </text> - <text name="WLCurKeyTimeText"> - Key Time: - </text> - <spinner label="Hour" name="WLCurKeyHour"/> - <spinner label="Min" name="WLCurKeyMin"/> - <text name="WLCurKeyTimeText2"> - Key Preset: - </text> - <combo_box label="Preset" name="WLKeyPresets"/> - <text name="DayCycleText"> - Snap: - </text> - <combo_box label="五分é˜" name="WLSnapOptions"/> - <text name="DayCycleText2"> - Length of Cycle: - </text> - <spinner label="å°æ™‚" name="WLLengthOfDayHour"/> - <spinner label="分" name="WLLengthOfDayMin"/> - <spinner label="ç§’" name="WLLengthOfDaySec"/> - <text name="DayCycleText3"> - é 覽: - </text> - <button label="æ’æ”¾" label_selected="æ’æ”¾" name="WLAnimSky"/> - <button label="åœæ¢!" label_selected="åœæ¢" name="WLStopAnimSky"/> - <button label="Use Estate Time" label_selected="Go to Estate Time" name="WLUseLindenTime"/> - <button label="Save Test Day" label_selected="Save Test Day" name="WLSaveDayCycle"/> - <button label="Load Test Day" label_selected="Load Test Day" name="WLLoadDayCycle"/> - </panel> - </tab_container> -</floater> diff --git a/indra/newview/skins/default/xui/zh/panel_preferences_general.xml b/indra/newview/skins/default/xui/zh/panel_preferences_general.xml index 29f9599c97481c979dbff065a9a051a9943f14ec..6827fab6e68db9213c3fae8cce5e0851b4a811ed 100644 --- a/indra/newview/skins/default/xui/zh/panel_preferences_general.xml +++ b/indra/newview/skins/default/xui/zh/panel_preferences_general.xml @@ -5,15 +5,15 @@ </text> <combo_box name="language_combobox"> <combo_box.item label="系統é è¨" name="System Default Language"/> - <combo_box.item label="英語" name="English"/> - <combo_box.item label="Dansk (Danish) - Beta" name="Danish"/> - <combo_box.item label="Deutsch (German) - Beta" name="Deutsch(German)"/> - <combo_box.item label="Español (Spanish) - Beta" name="Spanish"/> - <combo_box.item label="Français (French) - Beta" name="French"/> - <combo_box.item label="Italiano (Italian) - Beta" name="Italian"/> - <combo_box.item label="Polski (Polish) - Beta" name="Polish"/> - <combo_box.item label="Português (Portuguese) - Beta" name="Portugese"/> - <combo_box.item label="日本語 (Japanese) - Beta" name="(Japanese)"/> + <combo_box.item label="English (英語)" name="English"/> + <combo_box.item label="Dansk (丹麥語) - Beta" name="Danish"/> + <combo_box.item label="Deutsch (德語) - Beta" name="Deutsch(German)"/> + <combo_box.item label="Español (西ç牙語) - Beta" name="Spanish"/> + <combo_box.item label="Français (法語) - Beta" name="French"/> + <combo_box.item label="Italiano (義大利語) - Beta" name="Italian"/> + <combo_box.item label="Polski (波è˜èªžï¼‰ - Beta" name="Polish"/> + <combo_box.item label="Português (葡è„牙語) - Beta" name="Portugese"/> + <combo_box.item label="日本語 (日語) - Beta" name="(Japanese)"/> </combo_box> <text name="language_textbox2"> ï¼ˆé ˆé‡æ–°å•Ÿå‹•) diff --git a/indra/newview/viewer_manifest.py b/indra/newview/viewer_manifest.py old mode 100644 new mode 100755 index f0bee2bfee3730dfc2eb1e87dfe4fa95715b470c..0931c4ec9b81b10557b1a3ecbd3d424a43180e0c --- a/indra/newview/viewer_manifest.py +++ b/indra/newview/viewer_manifest.py @@ -495,8 +495,9 @@ def construct(self): # tag:"crash-logger" here as a cue to the exporter self.path(src='../win_crash_logger/%s/windows-crash-logger.exe' % self.args['configuration'], dst="win_crash_logger.exe") - self.path(src='../win_updater/%s/windows-updater.exe' % self.args['configuration'], - dst="updater.exe") +# For CHOP-397, windows updater no longer used. +# self.path(src='../win_updater/%s/windows-updater.exe' % self.args['configuration'], +# dst="updater.exe") if not self.is_packaging_viewer(): self.package_file = "copied_deps" @@ -573,10 +574,10 @@ def package_finish(self): grid_vars_template = """ OutFile "%(installer_file)s" !define INSTFLAGS "%(flags)s" - !define INSTNAME "SecondLifeViewer2" - !define SHORTCUT "Second Life Viewer 2" + !define INSTNAME "SecondLifeViewer" + !define SHORTCUT "Second Life Viewer" !define URLNAME "secondlife" - Caption "Second Life ${VERSION}" + Caption "Second Life" """ else: # beta grid viewer @@ -804,7 +805,7 @@ def copy_finish(self): self.run_command("chmod +x %r" % os.path.join(self.get_dst_prefix(), script)) def package_finish(self): - channel_standin = 'Second Life Viewer 2' # hah, our default channel is not usable on its own + channel_standin = 'Second Life Viewer' # hah, our default channel is not usable on its own if not self.default_channel(): channel_standin = self.channel() diff --git a/indra/viewer_components/updater/scripts/darwin/update_install b/indra/viewer_components/updater/scripts/darwin/update_install old mode 100644 new mode 100755 index 6a95f96d86f520e5543ac3925544d55b7204716a..e7f36dc5a360faee7dbc2a4d4c5e6f9b80130f33 --- a/indra/viewer_components/updater/scripts/darwin/update_install +++ b/indra/viewer_components/updater/scripts/darwin/update_install @@ -6,5 +6,5 @@ # cd "$(dirname "$0")" -(../Resources/mac-updater.app/Contents/MacOS/mac-updater -dmg "$1" -name "Second Life Viewer 2"; if [ $? -ne 0 ]; then echo $3 >> "$2"; fi;) & +(../Resources/mac-updater.app/Contents/MacOS/mac-updater -dmg "$1" -name "Second Life Viewer"; if [ $? -ne 0 ]; then echo $3 >> "$2"; fi;) & exit 0 diff --git a/indra/viewer_components/updater/scripts/linux/update_install b/indra/viewer_components/updater/scripts/linux/update_install old mode 100644 new mode 100755 index 88451340eca36ace15d01f845bba765b9933a7aa..e0505a9f72feb5df297347b65be55fb37fc02e76 --- a/indra/viewer_components/updater/scripts/linux/update_install +++ b/indra/viewer_components/updater/scripts/linux/update_install @@ -1,7 +1,7 @@ #! /bin/bash INSTALL_DIR=$(cd "$(dirname "$0")/.." ; pwd) export LD_LIBRARY_PATH="$INSTALL_DIR/lib" -bin/linux-updater.bin --file "$1" --dest "$INSTALL_DIR" --name "Second Life Viewer 2" --stringsdir "$INSTALL_DIR/skins/default/xui/en" --stringsfile "strings.xml" +bin/linux-updater.bin --file "$1" --dest "$INSTALL_DIR" --name "Second Life Viewer" --stringsdir "$INSTALL_DIR/skins/default/xui/en" --stringsfile "strings.xml" if [ $? -ne 0 ] then echo $3 >> "$2"