diff --git a/.hgignore b/.hgignore index 454be00dbffc27a0c6969fb3561556f08d5c1d96..cff2a14b940289e10e1a350030b595a9230f29ac 100644 --- a/.hgignore +++ b/.hgignore @@ -7,6 +7,8 @@ syntax: glob # Emacs temp files *~ .*.swp +#OSX image cache file +*.DS_Store LICENSES indra/.distcc indra/build-darwin-* diff --git a/indra/cmake/DeploySharedLibs.cmake b/indra/cmake/DeploySharedLibs.cmake new file mode 100644 index 0000000000000000000000000000000000000000..a7e772bd7501e3d67c9fb58b779bfc57be88f137 --- /dev/null +++ b/indra/cmake/DeploySharedLibs.cmake @@ -0,0 +1,67 @@ +# DeploySharedLibs.cmake +# This is a script to be run at build time! Its not part of the cmake configuration! +# See indra/cmake/LLSharedLibs.cmake for a macro that simplifies adding a command to a target to run this script. + +# This script requires a few cmake variable to be set on the command line: +# BIN_NAME= The full path the the binary to search for dependecies. +# SEARCH_DIRS= The full paths to dirs to search for dependencies. +# DST_PATH= The full path where the dependecies will be copied. +include(GetPrerequisites) +message("Getting recursive dependencies for file: ${BIN_NAME}") +set(EXCLUDE_SYSTEM 1) +set(RECURSE 1) +get_filename_component(EXE_PATH ${BIN_NAME} PATH) + +get_prerequisites( ${BIN_NAME} RESULTS ${EXCLUDE_SYSTEM} ${RECURSE} "${EXE_PATH}" "${SEARCH_DIRS}" ) + +foreach(DEP ${RESULTS}) + Message("Processing dependency: ${DEP}") + get_filename_component(DEP_FILE ${DEP} NAME) + set(DEP_FILES ${DEP_FILES} ${DEP_FILE}) +endforeach(DEP) + +if(DEP_FILES) + list(REMOVE_DUPLICATES DEP_FILES) +endif(DEP_FILES) + +foreach(DEP_FILE ${DEP_FILES}) + if(FOUND_FILES) + list(FIND FOUND_FILES ${DEP_FILE} FOUND) + else(FOUND_FILES) + set(FOUND -1) + endif(FOUND_FILES) + + if(FOUND EQUAL -1) + find_path(DEP_PATH ${DEP_FILE} PATHS ${SEARCH_DIRS} NO_DEFAULT_PATH) + if(DEP_PATH) + set(FOUND_FILES ${FOUND_FILES} "${DEP_PATH}/${DEP_FILE}") + set(DEP_PATH NOTFOUND) #reset DEP_PATH for the next find_path call. + else(DEP_PATH) + set(MISSING_FILES ${MISSING_FILES} ${DEP_FILE}) + endif(DEP_PATH) + endif(FOUND EQUAL -1) +endforeach(DEP_FILE) + +if(MISSING_FILES) + message("Missing:") + foreach(FILE ${MISSING_FILES}) + message(" ${FILE}") + endforeach(FILE) + message("Searched in:") + foreach(SEARCH_DIR ${SEARCH_DIRS}) + message(" ${SEARCH_DIR}") + endforeach(SEARCH_DIR) + message(FATAL_ERROR "Failed") +endif(MISSING_FILES) + +if(FOUND_FILES) + foreach(FILE ${FOUND_FILES}) + get_filename_component(DST_FILE ${FILE} NAME) + set(DST_FILE "${DST_PATH}/${DST_FILE}") + message("Copying ${FILE} to ${DST_FILE}") + execute_process( + COMMAND ${CMAKE_COMMAND} -E copy_if_different ${FILE} ${DST_FILE} + ) + endforeach(FILE ${FOUND_FILES}) +endif(FOUND_FILES) +message("Success!") diff --git a/indra/cmake/LLSharedLibs.cmake b/indra/cmake/LLSharedLibs.cmake new file mode 100644 index 0000000000000000000000000000000000000000..a8c81609bb90cc3d1946ce80e7dcce563800322e --- /dev/null +++ b/indra/cmake/LLSharedLibs.cmake @@ -0,0 +1,31 @@ +# ll_deploy_sharedlibs_command +# target_exe: the cmake target of the executable for which the shared libs will be deployed. +# search_dirs: a list of dirs to search for the dependencies +# dst_path: path to copy deps to, relative to the output location of the target_exe +macro(ll_deploy_sharedlibs_command target_exe search_dirs dst_path) + get_target_property(OUTPUT_LOCATION ${target_exe} LOCATION) + + if(DARWIN) + get_target_property(IS_BUNDLE ${target_exe} MACOSX_BUNDLE) + if(IS_BUNDLE) + get_filename_component(TARGET_FILE ${OUTPUT_LOCATION} NAME) + set(OUTPUT_PATH ${OUTPUT_LOCATION}.app/Contents/MacOS) + set(OUTPUT_LOCATION ${OUTPUT_PATH}/${TARGET_FILE}) + endif(IS_BUNDLE) + else(DARWIN) + message(FATAL_ERROR "Only darwin currently supported!") + endif(DARWIN) + + add_custom_command( + TARGET ${target_exe} POST_BUILD + COMMAND ${CMAKE_COMMAND} + ARGS + "-DBIN_NAME=\"${OUTPUT_LOCATION}\"" + "-DSEARCH_DIRS=\"${search_dirs}\"" + "-DDST_PATH=\"${OUTPUT_PATH}/${dst_path}\"" + "-P" + "${CMAKE_SOURCE_DIR}/cmake/DeploySharedLibs.cmake" + ) + +endmacro(ll_deploy_sharedlibs_command) + diff --git a/indra/llui/llfloaterreg.cpp b/indra/llui/llfloaterreg.cpp index 8bb9e0d9ffb026d5e704bb7862c3474c5733b9d7..aca4dc56eed59bc9f53da99dd3b6e1a5ac23ec89 100644 --- a/indra/llui/llfloaterreg.cpp +++ b/indra/llui/llfloaterreg.cpp @@ -135,6 +135,7 @@ LLFloater* LLFloaterReg::getInstance(const std::string& name, const LLSD& key) res->mKey = key; res->setInstanceName(name); res->applyRectControl(); // Can't apply rect control until setting instance name + res->applyDockState();//same... if (res->mAutoTile && !res->getHost() && index > 0) { const LLRect& cur_rect = res->getRect(); diff --git a/indra/mac_crash_logger/CMakeLists.txt b/indra/mac_crash_logger/CMakeLists.txt index daf3e10857af5e9361ff9c47e5e785675d705077..1d6494fecff6f1d201f2813f066c83fe393261f4 100644 --- a/indra/mac_crash_logger/CMakeLists.txt +++ b/indra/mac_crash_logger/CMakeLists.txt @@ -10,6 +10,7 @@ include(LLMessage) include(LLVFS) include(LLXML) include(Linking) +include(LLSharedLibs) include_directories( ${LLCOMMON_INCLUDE_DIRS} @@ -74,3 +75,7 @@ add_custom_command( ${CMAKE_CURRENT_BINARY_DIR}/${CMAKE_CFG_INTDIR}/mac-crash-logger.app/Contents/Resources/CrashReporter.nib ) +ll_deploy_sharedlibs_command( + mac-crash-logger + "${SHARED_LIB_STAGING_DIR}/${CMAKE_CFG_INTDIR};${ARCH_PREBUILT_DIRS}" + "../Resources") diff --git a/indra/mac_updater/CMakeLists.txt b/indra/mac_updater/CMakeLists.txt index 0eac76fa697ca6e3fcd9e0ab84553cb2dc9a177d..d7bd6f993ce0e3a0c46bf1496267165c178786f9 100644 --- a/indra/mac_updater/CMakeLists.txt +++ b/indra/mac_updater/CMakeLists.txt @@ -77,3 +77,7 @@ add_custom_command( ${CMAKE_CURRENT_BINARY_DIR}/${CMAKE_CFG_INTDIR}/mac-updater.app/Contents/Resources/AutoUpdater.nib ) +ll_deploy_sharedlibs_command( + mac-updater + "${SHARED_LIB_STAGING_DIR}/${CMAKE_CFG_INTDIR};${ARCH_PREBUILT_DIRS}" + "../Resources") diff --git a/indra/media_plugins/example/media_plugin_example.cpp b/indra/media_plugins/example/media_plugin_example.cpp index e873a0d034275c7555cc8dea8a35015e3953ca33..99e0199a293ed4a43200aa1b885f462330079f7b 100644 --- a/indra/media_plugins/example/media_plugin_example.cpp +++ b/indra/media_plugins/example/media_plugin_example.cpp @@ -52,7 +52,7 @@ class MediaPluginExample : private: bool init(); - void update( int milliseconds ); + void update( F64 milliseconds ); void write_pixel( int x, int y, unsigned char r, unsigned char g, unsigned char b ); bool mFirstTime; @@ -276,7 +276,7 @@ void MediaPluginExample::receiveMessage( const char* message_string ) if ( key == ' ') { mLastUpdateTime = 0; - update( 0 ); + update( 0.0f ); }; }; } @@ -293,7 +293,7 @@ void MediaPluginExample::receiveMessage( const char* message_string ) mLastUpdateTime = 0; mFirstTime = true; mStopAction = false; - update( 0 ); + update( 0.0f ); } else if ( message_name == "browse_stop" ) @@ -302,7 +302,7 @@ void MediaPluginExample::receiveMessage( const char* message_string ) mXInc[ n ] = mYInc[ n ] = 0; mStopAction = true; - update( 0 ); + update( 0.0f ); } else { @@ -339,7 +339,7 @@ void MediaPluginExample::write_pixel( int x, int y, unsigned char r, unsigned ch //////////////////////////////////////////////////////////////////////////////// // -void MediaPluginExample::update( int milliseconds ) +void MediaPluginExample::update( F64 milliseconds ) { if ( mWidth < 1 || mWidth > 2048 || mHeight < 1 || mHeight > 2048 ) return; diff --git a/indra/newview/app_settings/settings.xml b/indra/newview/app_settings/settings.xml index 28c59ae93e26fca1444810c24c97b6b9a4b6cb50..a286d321ee49899c073c95ed1aa83c0654011ae0 100644 --- a/indra/newview/app_settings/settings.xml +++ b/indra/newview/app_settings/settings.xml @@ -5294,7 +5294,6 @@ <key>Value</key> <integer>1</integer> </map> - <key>PluginInstancesCPULimit</key> <map> <key>Comment</key> @@ -5360,6 +5359,17 @@ <string>U32</string> <key>Value</key> <integer>13</integer> + </map> + <key>PrimMediaControlsUseHoverControlSet</key> + <map> + <key>Comment</key> + <string>Whether or not hovering over prim media uses minimal "hover" controls or the authored control set.</string> + <key>Persist</key> + <integer>1</integer> + <key>Type</key> + <string>Boolean</string> + <key>Value</key> + <integer>0</integer> </map> <key>PrimMediaDragNDrop</key> <map> diff --git a/indra/newview/llavatarlist.cpp b/indra/newview/llavatarlist.cpp index 65a2b8b5e69c8a21141ed58d71e14ac5bc011d7d..7b2dc02864f5a4a2e33b77fd1da9133d0cb6ddf1 100644 --- a/indra/newview/llavatarlist.cpp +++ b/indra/newview/llavatarlist.cpp @@ -79,6 +79,8 @@ static const LLFlatListView::ItemReverseComparator REVERSE_NAME_COMPARATOR(NAME_ LLAvatarList::Params::Params() : ignore_online_status("ignore_online_status", false) , show_last_interaction_time("show_last_interaction_time", false) +, show_info_btn("show_info_btn", true) +, show_profile_btn("show_profile_btn", true) { } @@ -89,6 +91,9 @@ LLAvatarList::LLAvatarList(const Params& p) , mContextMenu(NULL) , mDirty(true) // to force initial update , mLITUpdateTimer(NULL) +, mShowIcons(true) +, mShowInfoBtn(p.show_info_btn) +, mShowProfileBtn(p.show_profile_btn) { setCommitOnSelectionChange(true); @@ -253,6 +258,8 @@ void LLAvatarList::addNewItem(const LLUUID& id, const std::string& name, BOOL is item->childSetVisible("info_btn", false); item->setAvatarIconVisible(mShowIcons); + item->setShowInfoBtn(mShowInfoBtn); + item->setShowProfileBtn(mShowProfileBtn); addItem(item, id, pos); } diff --git a/indra/newview/llavatarlist.h b/indra/newview/llavatarlist.h index 8f2f0249a61d56a5cc3c500f318a52fb7c6e26f1..51d3760d3937169ca6ed50e1c74644f65919a110 100644 --- a/indra/newview/llavatarlist.h +++ b/indra/newview/llavatarlist.h @@ -59,6 +59,8 @@ class LLAvatarList : public LLFlatListView { Optional<bool> ignore_online_status; // show all items as online Optional<bool> show_last_interaction_time; // show most recent interaction time. *HACK: move this to a derived class + Optional<bool> show_info_btn; + Optional<bool> show_profile_btn; Params(); }; @@ -96,6 +98,8 @@ class LLAvatarList : public LLFlatListView bool mShowLastInteractionTime; bool mDirty; bool mShowIcons; + bool mShowInfoBtn; + bool mShowProfileBtn; LLTimer* mLITUpdateTimer; // last interaction time update timer std::string mIconParamName; diff --git a/indra/newview/llavatarlistitem.cpp b/indra/newview/llavatarlistitem.cpp index 84644305017418b32a9eef248e4bb0f6a306ebb0..a7ac14c94862be1ce621247c6bbfd07fed892a7c 100644 --- a/indra/newview/llavatarlistitem.cpp +++ b/indra/newview/llavatarlistitem.cpp @@ -42,8 +42,6 @@ #include "llavatariconctrl.h" #include "llbutton.h" -S32 LLAvatarListItem::sIconWidth = 0; - LLAvatarListItem::LLAvatarListItem() : LLPanel(), mAvatarIcon(NULL), @@ -53,15 +51,17 @@ LLAvatarListItem::LLAvatarListItem() mInfoBtn(NULL), mProfileBtn(NULL), mContextMenu(NULL), - mOnlineStatus(E_UNKNOWN) + mOnlineStatus(E_UNKNOWN), + mShowInfoBtn(true), + mShowProfileBtn(true) { LLUICtrlFactory::getInstance()->buildPanel(this, "panel_avatar_list_item.xml"); // Remember avatar icon width including its padding from the name text box, // so that we can hide and show the icon again later. - if (!sIconWidth) - { - sIconWidth = mAvatarName->getRect().mLeft - mAvatarIcon->getRect().mLeft; - } + + mIconWidth = mAvatarName->getRect().mLeft - mAvatarIcon->getRect().mLeft; + mInfoBtnWidth = mInfoBtn->getRect().mRight - mSpeakingIndicator->getRect().mRight; + mProfileBtnWidth = mProfileBtn->getRect().mRight - mInfoBtn->getRect().mRight; } LLAvatarListItem::~LLAvatarListItem() @@ -116,8 +116,8 @@ BOOL LLAvatarListItem::postBuild() void LLAvatarListItem::onMouseEnter(S32 x, S32 y, MASK mask) { childSetVisible("hovered_icon", true); - mInfoBtn->setVisible(true); - mProfileBtn->setVisible(true); + mInfoBtn->setVisible(mShowInfoBtn); + mProfileBtn->setVisible(mShowProfileBtn); LLPanel::onMouseEnter(x, y, mask); } @@ -202,6 +202,34 @@ void LLAvatarListItem::setLastInteractionTime(const std::string& val) mLastInteractionTime->setValue(val); } +void LLAvatarListItem::setShowInfoBtn(bool show) +{ + // Already done? Then do nothing. + if(mShowInfoBtn == show) + return; + mShowInfoBtn = show; + S32 width_delta = show ? - mInfoBtnWidth : mInfoBtnWidth; + + //Translating speaking indicator + mSpeakingIndicator->translate(width_delta, 0); + //Reshaping avatar name + mAvatarName->reshape(mAvatarName->getRect().getWidth() + width_delta, mAvatarName->getRect().getHeight()); +} + +void LLAvatarListItem::setShowProfileBtn(bool show) +{ + // Already done? Then do nothing. + if(mShowProfileBtn == show) + return; + mShowProfileBtn = show; + S32 width_delta = show ? - mProfileBtnWidth : mProfileBtnWidth; + + //Translating speaking indicator + mSpeakingIndicator->translate(width_delta, 0); + //Reshaping avatar name + mAvatarName->reshape(mAvatarName->getRect().getWidth() + width_delta, mAvatarName->getRect().getHeight()); +} + void LLAvatarListItem::setAvatarIconVisible(bool visible) { // Already done? Then do nothing. @@ -213,7 +241,7 @@ void LLAvatarListItem::setAvatarIconVisible(bool visible) // Move the avatar name horizontally by icon size + its distance from the avatar name. LLRect name_rect = mAvatarName->getRect(); - name_rect.mLeft += visible ? sIconWidth : -sIconWidth; + name_rect.mLeft += visible ? mIconWidth : -mIconWidth; mAvatarName->setRect(name_rect); } diff --git a/indra/newview/llavatarlistitem.h b/indra/newview/llavatarlistitem.h index 10c0b17005fdd1debc6d8fb6e4498296918d7f4b..cd7a85c3dc5b4ca746df79c05067e027863b902d 100644 --- a/indra/newview/llavatarlistitem.h +++ b/indra/newview/llavatarlistitem.h @@ -64,6 +64,9 @@ class LLAvatarListItem : public LLPanel, public LLFriendObserver void setName(const std::string& name); void setAvatarId(const LLUUID& id, bool ignore_status_changes = false); void setLastInteractionTime(const std::string& val); + //Show/hide profile/info btn, translating speaker indicator and avatar name coordinates accordingly + void setShowProfileBtn(bool hide); + void setShowInfoBtn(bool hide); void setAvatarIconVisible(bool visible); const LLUUID& getAvatarId() const; @@ -99,7 +102,13 @@ class LLAvatarListItem : public LLPanel, public LLFriendObserver LLUUID mAvatarId; EOnlineStatus mOnlineStatus; - static S32 sIconWidth; // icon width + padding + //Flag indicating that info/profile button shouldn't be shown at all. + //Speaker indicator and avatar name coords are translated accordingly + bool mShowInfoBtn; + bool mShowProfileBtn; + S32 mIconWidth; // icon width + padding + S32 mInfoBtnWidth; //info btn width + padding + S32 mProfileBtnWidth; //profile btn width + padding }; #endif //LL_LLAVATARLISTITEM_H diff --git a/indra/newview/llcallingcard.cpp b/indra/newview/llcallingcard.cpp index 7a81d0c4a1d8e8d4213fb63a0fb23ad492da1675..e8812d87ee0501fe0be05c9fb99a68cbd65ef36a 100644 --- a/indra/newview/llcallingcard.cpp +++ b/indra/newview/llcallingcard.cpp @@ -62,7 +62,6 @@ #include "llviewerwindow.h" #include "llvoavatar.h" #include "llimview.h" -#include "llimpanel.h" ///---------------------------------------------------------------------------- /// Local function declarations, constants, enums, and typedefs @@ -719,18 +718,8 @@ void LLAvatarTracker::processNotify(LLMessageSystem* msg, bool online) // If there's an open IM session with this agent, send a notification there too. LLUUID session_id = LLIMMgr::computeSessionID(IM_NOTHING_SPECIAL, agent_id); - LLFloaterIMPanel *floater = gIMMgr->findFloaterBySession(session_id); - if (floater) - { - std::string notifyMsg = notification->getMessage(); - if (!notifyMsg.empty()) - { - floater->addHistoryLine(notifyMsg,LLUIColorTable::instance().getColor("SystemChatColor")); - } - } - - //*TODO instead of adding IM message about online/offline status - //do something like graying avatar icon on messages from a user that went offline, and make it colored when online. + std::string notify_msg = notification->getMessage(); + LLIMModel::instance().proccessOnlineOfflineNotification(session_id, notify_msg); } mModifyMask |= LLFriendObserver::ONLINE; diff --git a/indra/newview/llfloaterbulkpermission.cpp b/indra/newview/llfloaterbulkpermission.cpp index a73ebf4e06f9dc7a82c9773902e41ac024e70625..7cb8987879a76bfd8d90b3673d0920072262567e 100644 --- a/indra/newview/llfloaterbulkpermission.cpp +++ b/indra/newview/llfloaterbulkpermission.cpp @@ -72,8 +72,6 @@ LLFloaterBulkPermission::LLFloaterBulkPermission(const LLSD& seed) BOOL LLFloaterBulkPermission::postBuild() { -// childSetAction("help", onHelpBtn, this); // this is not in use - return TRUE; } @@ -157,12 +155,6 @@ void LLFloaterBulkPermission::onApplyBtn() doApply(); } -// angela -- this is not in use -//void LLFloaterBulkPermission::onHelpBtn(void* user_data) -//{ -// LLNotifications::instance().add("HelpBulkPermission"); -//} - void LLFloaterBulkPermission::onCloseBtn() { closeFloater(); diff --git a/indra/newview/llfloaterbulkpermission.h b/indra/newview/llfloaterbulkpermission.h index c34e4413ccc94ed412f871be3de21f58b615af0c..31f4f5c3e169abf88556776b73872c523db13b82 100644 --- a/indra/newview/llfloaterbulkpermission.h +++ b/indra/newview/llfloaterbulkpermission.h @@ -79,7 +79,6 @@ class LLFloaterBulkPermission : public LLFloater, public LLVOInventoryListener U8 key, bool is_new); -// static void onHelpBtn(void* user_data); void onCloseBtn(); void onApplyBtn(); void onCommitCopy(); diff --git a/indra/newview/llfloaterdaycycle.cpp b/indra/newview/llfloaterdaycycle.cpp index 7f3b988dfe2cc0a540e02bf92cd1d752ef38bff7..48d552022f981e33f07e3e298163183a8e321cc7 100644 --- a/indra/newview/llfloaterdaycycle.cpp +++ b/indra/newview/llfloaterdaycycle.cpp @@ -105,20 +105,8 @@ LLFloaterDayCycle::~LLFloaterDayCycle() { } -void LLFloaterDayCycle::onClickHelp(std::string xml_alert) -{ - LLNotifications::instance().add(contextualNotification(xml_alert)); -} - -void LLFloaterDayCycle::initHelpBtn(const std::string& name, const std::string& xml_alert) -{ - getChild<LLButton>(name)->setClickedCallback(boost::bind(&LLFloaterDayCycle::onClickHelp, this, xml_alert)); -} - void LLFloaterDayCycle::initCallbacks(void) { - initHelpBtn("WLDayCycleHelp", "HelpDayCycle"); - // WL Day Cycle getChild<LLUICtrl>("WLTimeSlider")->setCommitCallback(boost::bind(&LLFloaterDayCycle::onTimeSliderMoved, this, _1)); getChild<LLUICtrl>("WLDayCycleKeys")->setCommitCallback(boost::bind(&LLFloaterDayCycle::onKeyTimeMoved, this, _1)); diff --git a/indra/newview/llfloaterdaycycle.h b/indra/newview/llfloaterdaycycle.h index 43c347d4f21d14bae9f8c4f2a4e2cb5093c8610a..c250902b6566487ad68048674013fa12f807b1c4 100644 --- a/indra/newview/llfloaterdaycycle.h +++ b/indra/newview/llfloaterdaycycle.h @@ -59,9 +59,6 @@ class LLFloaterDayCycle : public LLFloater LLFloaterDayCycle(const LLSD& key); virtual ~LLFloaterDayCycle(); /*virtual*/ BOOL postBuild(); - /// help button stuff - void onClickHelp(std::string xml_alert); - void initHelpBtn(const std::string& name, const std::string& xml_alert); /// initialize all void initCallbacks(void); diff --git a/indra/newview/llfloaterenvsettings.cpp b/indra/newview/llfloaterenvsettings.cpp index a520df36dec3e461e5f039f994fef903c0ec19b0..2fffa6eece2bd366576f432d28efcd5cc823a805 100644 --- a/indra/newview/llfloaterenvsettings.cpp +++ b/indra/newview/llfloaterenvsettings.cpp @@ -70,10 +70,6 @@ BOOL LLFloaterEnvSettings::postBuild() syncMenu(); return TRUE; } -void LLFloaterEnvSettings::onClickHelp() -{ - LLNotifications::instance().add(contextualNotification("EnvSettingsHelpButton")); -} void LLFloaterEnvSettings::initCallbacks(void) { @@ -89,10 +85,8 @@ void LLFloaterEnvSettings::initCallbacks(void) getChild<LLUICtrl>("EnvAdvancedSkyButton")->setCommitCallback(boost::bind(&LLFloaterEnvSettings::onOpenAdvancedSky, this)); getChild<LLUICtrl>("EnvAdvancedWaterButton")->setCommitCallback(boost::bind(&LLFloaterEnvSettings::onOpenAdvancedWater, this)); getChild<LLUICtrl>("EnvUseEstateTimeButton")->setCommitCallback(boost::bind(&LLFloaterEnvSettings::onUseEstateTime, this)); - getChild<LLUICtrl>("EnvSettingsHelpButton")->setCommitCallback(boost::bind(&LLFloaterEnvSettings::onClickHelp, this)); } - // menu maintenance functions void LLFloaterEnvSettings::syncMenu() diff --git a/indra/newview/llfloaterenvsettings.h b/indra/newview/llfloaterenvsettings.h index 083e3636d1b6e3d8c6268cf5e4c7e246d820b12a..02bc5021207f0773380e4d475e1b527c4dcac830 100644 --- a/indra/newview/llfloaterenvsettings.h +++ b/indra/newview/llfloaterenvsettings.h @@ -53,9 +53,6 @@ class LLFloaterEnvSettings : public LLFloater /// initialize all the callbacks for the menu void initCallbacks(void); - /// callback for the menus help button - void onClickHelp(); - /// handle if time of day is changed void onChangeDayTime(LLUICtrl* ctrl); diff --git a/indra/newview/llfloaterhardwaresettings.cpp b/indra/newview/llfloaterhardwaresettings.cpp index 9947cdc2173c02f882d8f3ff00ce524a23c7940d..31b494b590d0c1581a4c4cbf233b694d64f9677a 100644 --- a/indra/newview/llfloaterhardwaresettings.cpp +++ b/indra/newview/llfloaterhardwaresettings.cpp @@ -59,12 +59,6 @@ LLFloaterHardwareSettings::~LLFloaterHardwareSettings() { } -void LLFloaterHardwareSettings::onClickHelp(void* data) -{ - const char* xml_alert = "HardwareSettingsHelpButton"; - LLNotifications::instance().add(xml_alert); -} - void LLFloaterHardwareSettings::initCallbacks(void) { } diff --git a/indra/newview/llfloaterhardwaresettings.h b/indra/newview/llfloaterhardwaresettings.h index 3f19d89cbbbc7ed78965bf1410a5ec02642742db..ef0b0c905e027ed324d5c5e3b2a453a1aaf81b7e 100644 --- a/indra/newview/llfloaterhardwaresettings.h +++ b/indra/newview/llfloaterhardwaresettings.h @@ -50,9 +50,6 @@ class LLFloaterHardwareSettings : public LLFloater /// initialize all the callbacks for the menu void initCallbacks(void); - /// callback for the menus help button - static void onClickHelp(void* data); - /// OK button static void onBtnOK( void* userdata ); diff --git a/indra/newview/llfloaterland.cpp b/indra/newview/llfloaterland.cpp index bdf9842b015ec8288cf50389062d7476d5626533..015a947d9179a730f4b993a650c256e9907bbd14 100644 --- a/indra/newview/llfloaterland.cpp +++ b/indra/newview/llfloaterland.cpp @@ -1519,7 +1519,9 @@ void LLPanelLandObjects::processParcelObjectOwnersReply(LLMessageSystem *msg, vo } // Placeholder for name. - item_params.columns.add().font(FONT).column("name"); + std::string name; + gCacheName->getFullName(owner_id, name); + item_params.columns.add().value(name).font(FONT).column("name"); object_count_str = llformat("%d", object_count); item_params.columns.add().value(object_count_str).font(FONT).column("count"); @@ -1743,7 +1745,6 @@ LLPanelLandOptions::LLPanelLandOptions(LLParcelSelectionHandle& parcel) mClearBtn(NULL), mMatureCtrl(NULL), mPushRestrictionCtrl(NULL), - mPublishHelpButton(NULL), mParcel(parcel) { } @@ -1812,14 +1813,9 @@ BOOL LLPanelLandOptions::postBuild() mMatureCtrl = getChild<LLCheckBoxCtrl>( "MatureCheck"); childSetCommitCallback("MatureCheck", onCommitAny, this); - mPublishHelpButton = getChild<LLButton>("?"); - mPublishHelpButton->setClickedCallback(onClickPublishHelp, this); - if (gAgent.wantsPGOnly()) { // Disable these buttons if they are PG (Teen) users - mPublishHelpButton->setVisible(FALSE); - mPublishHelpButton->setEnabled(FALSE); mMatureCtrl->setVisible(FALSE); mMatureCtrl->setEnabled(FALSE); } @@ -1912,7 +1908,6 @@ void LLPanelLandOptions::refresh() mClearBtn->setEnabled(FALSE); mMatureCtrl->setEnabled(FALSE); - mPublishHelpButton->setEnabled(FALSE); } else { @@ -1988,13 +1983,9 @@ void LLPanelLandOptions::refresh() mSetBtn->setEnabled( can_change_landing_point ); mClearBtn->setEnabled( can_change_landing_point ); - mPublishHelpButton->setEnabled( can_change_identity ); - if (gAgent.wantsPGOnly()) { // Disable these buttons if they are PG (Teen) users - mPublishHelpButton->setVisible(FALSE); - mPublishHelpButton->setEnabled(FALSE); mMatureCtrl->setVisible(FALSE); mMatureCtrl->setEnabled(FALSE); } @@ -2247,28 +2238,6 @@ void LLPanelLandOptions::onClickClear(void* userdata) self->refresh(); } -// static -void LLPanelLandOptions::onClickPublishHelp(void*) -{ - LLViewerRegion* region = LLViewerParcelMgr::getInstance()->getSelectionRegion(); - LLParcel *parcel = LLViewerParcelMgr::getInstance()->getFloatingParcelSelection()->getParcel(); - llassert(region); // Region should never be null. - - bool can_change_identity = region && parcel ? - LLViewerParcelMgr::isParcelModifiableByAgent(parcel, GP_LAND_CHANGE_IDENTITY) && - ! (region->getRegionFlags() & REGION_FLAGS_BLOCK_PARCEL_SEARCH) : false; - - if(! can_change_identity) - { - LLNotifications::instance().add("ClickPublishHelpLandDisabled"); - } - else - { - LLNotifications::instance().add("ClickPublishHelpLand"); - } -} - - //--------------------------------------------------------------------------- // LLPanelLandAccess diff --git a/indra/newview/llfloaterland.h b/indra/newview/llfloaterland.h index 749c3951477b7df1004884bf775f2f0e4df26e21..f7fb978c2a1d318c106e96e70092a121c635ec18 100644 --- a/indra/newview/llfloaterland.h +++ b/indra/newview/llfloaterland.h @@ -320,7 +320,6 @@ class LLPanelLandOptions static void onCommitAny(LLUICtrl* ctrl, void *userdata); static void onClickSet(void* userdata); static void onClickClear(void* userdata); - static void onClickPublishHelp(void*); private: LLCheckBoxCtrl* mCheckEditObjects; @@ -345,7 +344,6 @@ class LLPanelLandOptions LLCheckBoxCtrl *mMatureCtrl; LLCheckBoxCtrl *mPushRestrictionCtrl; - LLButton *mPublishHelpButton; LLSafeHandle<LLParcelSelection>& mParcel; }; diff --git a/indra/newview/llfloaterpreference.cpp b/indra/newview/llfloaterpreference.cpp index 8b3391726a7fab80e84b21a74ed38d2f7f666027..2af1313db45d15a3296ef715cdfb73a597deaf46 100644 --- a/indra/newview/llfloaterpreference.cpp +++ b/indra/newview/llfloaterpreference.cpp @@ -339,7 +339,6 @@ LLFloaterPreference::LLFloaterPreference(const LLSD& key) mCommitCallbackRegistrar.add("Pref.ClickDisablePopup", boost::bind(&LLFloaterPreference::onClickDisablePopup, this)); mCommitCallbackRegistrar.add("Pref.LogPath", boost::bind(&LLFloaterPreference::onClickLogPath, this)); mCommitCallbackRegistrar.add("Pref.Logging", boost::bind(&LLFloaterPreference::onCommitLogging, this)); - mCommitCallbackRegistrar.add("Pref.OpenHelp", boost::bind(&LLFloaterPreference::onOpenHelp, this)); mCommitCallbackRegistrar.add("Pref.UpdateMeterText", boost::bind(&LLFloaterPreference::updateMeterText, this, _1)); mCommitCallbackRegistrar.add("Pref.HardwareSettings", boost::bind(&LLFloaterPreference::onOpenHardwareSettings, this)); mCommitCallbackRegistrar.add("Pref.HardwareDefaults", boost::bind(&LLFloaterPreference::setHardwareDefaults, this)); @@ -608,12 +607,6 @@ void LLFloaterPreference::onBtnOK() LLPanelLogin::refreshLocation( false ); } -void LLFloaterPreference::onOpenHelp() -{ - const char* xml_alert = "GraphicsPreferencesHelp"; - LLNotifications::instance().add(this->contextualNotification(xml_alert)); -} - // static void LLFloaterPreference::onBtnApply( ) { @@ -1043,11 +1036,15 @@ void LLFloaterPreference::onClickSetKey() void LLFloaterPreference::setKey(KEY key) { childSetValue("modifier_combo", LLKeyboard::stringFromKey(key)); + // update the control right away since we no longer wait for apply + getChild<LLUICtrl>("modifier_combo")->onCommit(); } void LLFloaterPreference::onClickSetMiddleMouse() { childSetValue("modifier_combo", "MiddleMouse"); + // update the control right away since we no longer wait for apply + getChild<LLUICtrl>("modifier_combo")->onCommit(); } void LLFloaterPreference::onClickSkipDialogs() diff --git a/indra/newview/llfloaterpreference.h b/indra/newview/llfloaterpreference.h index 34723b8c7e3c2e480f476d4d63eec0e8b3773f2d..b1ad0348c0de2b60c8ab16fa91923ff365271eaf 100644 --- a/indra/newview/llfloaterpreference.h +++ b/indra/newview/llfloaterpreference.h @@ -84,7 +84,6 @@ class LLFloaterPreference : public LLFloater void onBtnOK(); void onBtnCancel(); void onBtnApply(); - void onOpenHelp(); // void onClickClearCache(); void onClickBrowserClearCache(); diff --git a/indra/newview/llfloaterregioninfo.cpp b/indra/newview/llfloaterregioninfo.cpp index 11544f5b7b58780180ce9022df5bd14c7ac5c5cc..32229bd85045a5d58a099764c03be62ef5bb0427 100644 --- a/indra/newview/llfloaterregioninfo.cpp +++ b/indra/newview/llfloaterregioninfo.cpp @@ -179,6 +179,8 @@ BOOL LLFloaterRegionInfo::postBuild() LLPanelRegionInfo* panel; panel = new LLPanelRegionGeneralInfo; mInfoPanels.push_back(panel); + panel->getCommitCallbackRegistrar().add("RegionInfo.ManageTelehub", boost::bind(&LLPanelRegionInfo::onClickManageTelehub, panel)); + LLUICtrlFactory::getInstance()->buildPanel(panel, "panel_region_general.xml"); mTab->addTabPanel(LLTabContainer::TabPanelParams().panel(panel).select_tab(true)); @@ -544,14 +546,10 @@ void LLPanelRegionInfo::initCtrl(const std::string& name) getChild<LLUICtrl>(name)->setCommitCallback(boost::bind(&LLPanelRegionInfo::onChangeAnything, this)); } -void LLPanelRegionInfo::initHelpBtn(const std::string& name, const std::string& xml_alert) -{ - getChild<LLUICtrl>(name)->setCommitCallback(boost::bind(&LLPanelRegionInfo::onClickHelp, this, xml_alert)); -} - -void LLPanelRegionInfo::onClickHelp(std::string xml_alert) +void LLPanelRegionInfo::onClickManageTelehub() { - LLNotifications::instance().add(xml_alert); + LLFloaterReg::hideInstance("region_info"); + LLFloaterReg::showInstance("telehubs"); } ///////////////////////////////////////////////////////////////////////////// @@ -589,22 +587,10 @@ BOOL LLPanelRegionGeneralInfo::postBuild() initCtrl("restrict_pushobject"); initCtrl("block_parcel_search_check"); - initHelpBtn("terraform_help", "HelpRegionBlockTerraform"); - initHelpBtn("fly_help", "HelpRegionBlockFly"); - initHelpBtn("damage_help", "HelpRegionAllowDamage"); - initHelpBtn("agent_limit_help", "HelpRegionAgentLimit"); - initHelpBtn("object_bonus_help", "HelpRegionObjectBonus"); - initHelpBtn("access_help", "HelpRegionMaturity"); - initHelpBtn("restrict_pushobject_help", "HelpRegionRestrictPushObject"); - initHelpBtn("land_resell_help", "HelpRegionLandResell"); - initHelpBtn("parcel_changes_help", "HelpParcelChanges"); - initHelpBtn("parcel_search_help", "HelpRegionSearch"); - childSetAction("kick_btn", onClickKick, this); childSetAction("kick_all_btn", onClickKickAll, this); childSetAction("im_btn", onClickMessage, this); // childSetAction("manage_telehub_btn", onClickManageTelehub, this); - mCommitCallbackRegistrar.add("RegionInfo.Cancel", boost::bind(&LLPanelRegionGeneralInfo::onClickManageTelehub, this)); return LLPanelRegionInfo::postBuild(); } @@ -712,11 +698,7 @@ bool LLPanelRegionGeneralInfo::onMessageCommit(const LLSD& notification, const L return false; } -void LLPanelRegionGeneralInfo::onClickManageTelehub() -{ - LLFloaterReg::hideInstance("region_info"); - LLFloaterReg::showInstance("telehubs"); -} + // setregioninfo // strings[0] = 'Y' - block terraform, 'N' - not @@ -809,13 +791,6 @@ BOOL LLPanelRegionDebugInfo::postBuild() initCtrl("disable_collisions_check"); initCtrl("disable_physics_check"); - initHelpBtn("disable_scripts_help", "HelpRegionDisableScripts"); - initHelpBtn("disable_collisions_help", "HelpRegionDisableCollisions"); - initHelpBtn("disable_physics_help", "HelpRegionDisablePhysics"); - initHelpBtn("top_colliders_help", "HelpRegionTopColliders"); - initHelpBtn("top_scripts_help", "HelpRegionTopScripts"); - initHelpBtn("restart_help", "HelpRegionRestart"); - childSetAction("choose_avatar_btn", onClickChooseAvatar, this); childSetAction("return_btn", onClickReturn, this); childSetAction("top_colliders_btn", onClickTopColliders, this); @@ -1182,15 +1157,6 @@ BOOL LLPanelRegionTerrainInfo::postBuild() { LLPanelRegionInfo::postBuild(); - initHelpBtn("water_height_help", "HelpRegionWaterHeight"); - initHelpBtn("terrain_raise_help", "HelpRegionTerrainRaise"); - initHelpBtn("terrain_lower_help", "HelpRegionTerrainLower"); - initHelpBtn("upload_raw_help", "HelpRegionUploadRaw"); - initHelpBtn("download_raw_help", "HelpRegionDownloadRaw"); - initHelpBtn("use_estate_sun_help", "HelpRegionUseEstateSun"); - initHelpBtn("fixed_sun_help", "HelpRegionFixedSun"); - initHelpBtn("bake_terrain_help", "HelpRegionBakeTerrain"); - initCtrl("water_height_spin"); initCtrl("terrain_raise_spin"); initCtrl("terrain_lower_spin"); @@ -2103,20 +2069,6 @@ BOOL LLPanelEstateInfo::postBuild() getChild<LLUICtrl>("abuse_email_address")->setCommitCallback(boost::bind(&LLPanelEstateInfo::onChangeAnything, this)); getChild<LLLineEditor>("abuse_email_address")->setKeystrokeCallback(onChangeText, this); - initHelpBtn("estate_manager_help", "HelpEstateEstateManager"); - initHelpBtn("use_global_time_help", "HelpEstateUseGlobalTime"); - initHelpBtn("fixed_sun_help", "HelpEstateFixedSun"); - initHelpBtn("WLEditSkyHelp", "HelpEditSky"); - initHelpBtn("WLEditDayCycleHelp", "HelpEditDayCycle"); - - initHelpBtn("externally_visible_help", "HelpEstateExternallyVisible"); - initHelpBtn("allow_direct_teleport_help", "HelpEstateAllowDirectTeleport"); - initHelpBtn("allow_resident_help", "HelpEstateAllowResident"); - initHelpBtn("allow_group_help", "HelpEstateAllowGroup"); - initHelpBtn("ban_resident_help", "HelpEstateBanResident"); - initHelpBtn("abuse_email_address_help", "HelpEstateAbuseEmailAddress"); - initHelpBtn("voice_chat_help", "HelpEstateVoiceChat"); - // set up the use global time checkbox getChild<LLUICtrl>("use_global_time_check")->setCommitCallback(boost::bind(&LLPanelEstateInfo::onChangeUseGlobalTime, this)); getChild<LLUICtrl>("fixed_sun_check")->setCommitCallback(boost::bind(&LLPanelEstateInfo::onChangeFixedSun, this)); @@ -2694,7 +2646,6 @@ bool LLPanelEstateCovenant::estateUpdate(LLMessageSystem* msg) // virtual BOOL LLPanelEstateCovenant::postBuild() { - initHelpBtn("covenant_help", "HelpEstateCovenant"); mEstateNameText = getChild<LLTextBox>("estate_name_text"); mEstateOwnerText = getChild<LLTextBox>("estate_owner_text"); mLastModifiedText = getChild<LLTextBox>("covenant_timestamp_text"); diff --git a/indra/newview/llfloaterregioninfo.h b/indra/newview/llfloaterregioninfo.h index 95833af8a107f3bf9c7c8e4a5c6468a421260073..a3b91223b78bed0785923fcaf73af96104e99f8b 100644 --- a/indra/newview/llfloaterregioninfo.h +++ b/indra/newview/llfloaterregioninfo.h @@ -123,12 +123,10 @@ class LLPanelRegionInfo : public LLPanel void enableButton(const std::string& btn_name, BOOL enable = TRUE); void disableButton(const std::string& btn_name); + void onClickManageTelehub(); + protected: void initCtrl(const std::string& name); - void initHelpBtn(const std::string& name, const std::string& xml_alert); - - // Callback for all help buttons, data is name of XML alert to show. - void onClickHelp(std::string xml_alert); // Returns TRUE if update sent and apply button should be // disabled. @@ -152,6 +150,7 @@ class LLPanelRegionInfo : public LLPanel class LLPanelRegionGeneralInfo : public LLPanelRegionInfo { + public: LLPanelRegionGeneralInfo() : LLPanelRegionInfo() {} @@ -161,16 +160,16 @@ class LLPanelRegionGeneralInfo : public LLPanelRegionInfo // LLPanel virtual BOOL postBuild(); + protected: virtual BOOL sendUpdate(); - static void onClickKick(void* userdata); static void onKickCommit(const std::vector<std::string>& names, const std::vector<LLUUID>& ids, void* userdata); static void onClickKickAll(void* userdata); bool onKickAllCommit(const LLSD& notification, const LLSD& response); static void onClickMessage(void* userdata); bool onMessageCommit(const LLSD& notification, const LLSD& response); - void onClickManageTelehub(); + }; ///////////////////////////////////////////////////////////////////////////// diff --git a/indra/newview/llfloaterwater.cpp b/indra/newview/llfloaterwater.cpp index 72c82c178b6f6e0fb714775638b03044abb7ce75..a0fe42bf61763ed48f2c220c6bd64fdb94c8fa52 100644 --- a/indra/newview/llfloaterwater.cpp +++ b/indra/newview/llfloaterwater.cpp @@ -110,23 +110,6 @@ BOOL LLFloaterWater::postBuild() } void LLFloaterWater::initCallbacks(void) { - // help buttons - initHelpBtn("WaterFogColorHelp", "HelpWaterFogColor"); - initHelpBtn("WaterFogDensityHelp", "HelpWaterFogDensity"); - initHelpBtn("WaterUnderWaterFogModHelp", "HelpUnderWaterFogMod"); - initHelpBtn("WaterGlowHelp", "HelpWaterGlow"); - initHelpBtn("WaterNormalScaleHelp", "HelpWaterNormalScale"); - initHelpBtn("WaterFresnelScaleHelp", "HelpWaterFresnelScale"); - initHelpBtn("WaterFresnelOffsetHelp", "HelpWaterFresnelOffset"); - - initHelpBtn("WaterBlurMultiplierHelp", "HelpWaterBlurMultiplier"); - initHelpBtn("WaterScaleBelowHelp", "HelpWaterScaleBelow"); - initHelpBtn("WaterScaleAboveHelp", "HelpWaterScaleAbove"); - - initHelpBtn("WaterNormalMapHelp", "HelpWaterNormalMap"); - initHelpBtn("WaterWave1Help", "HelpWaterWave1"); - initHelpBtn("WaterWave2Help", "HelpWaterWave2"); - LLWaterParamManager * param_mgr = LLWaterParamManager::instance(); getChild<LLUICtrl>("WaterFogColor")->setCommitCallback(boost::bind(&LLFloaterWater::onWaterFogColorMoved, this, _1, ¶m_mgr->mFogColor)); @@ -173,16 +156,6 @@ void LLFloaterWater::initCallbacks(void) { getChild<LLUICtrl>("WaterNormalMap")->setCommitCallback(boost::bind(&LLFloaterWater::onNormalMapPicked, this, _1)); } -void LLFloaterWater::onClickHelp(std::string xml_alert) -{ - LLNotifications::instance().add(contextualNotification(xml_alert)); -} - -void LLFloaterWater::initHelpBtn(const std::string& name, const std::string& xml_alert) -{ - getChild<LLButton>(name)->setClickedCallback(boost::bind(&LLFloaterWater::onClickHelp, this, xml_alert)); -} - bool LLFloaterWater::newPromptCallback(const LLSD& notification, const LLSD& response) { std::string text = response["message"].asString(); diff --git a/indra/newview/llfloaterwater.h b/indra/newview/llfloaterwater.h index 08c630c69e3e45bb27a6af27455a4120f2919bc5..0ea2436dbea4a5e1bfb8b41be5d7e082051cf6d7 100644 --- a/indra/newview/llfloaterwater.h +++ b/indra/newview/llfloaterwater.h @@ -59,10 +59,6 @@ class LLFloaterWater : public LLFloater /// initialize all void initCallbacks(void); - // help button stuff - void onClickHelp(std::string xml_alert); - void initHelpBtn(const std::string& name, const std::string& xml_alert); - bool newPromptCallback(const LLSD& notification, const LLSD& response); /// general purpose callbacks for dealing with color controllers diff --git a/indra/newview/llfloaterwindlight.cpp b/indra/newview/llfloaterwindlight.cpp index 02979acdd72a291a1f2b0c8b9ee02f0f56fae83e..60494f3cce4c88609ff22fd10db54dccc3023a78 100644 --- a/indra/newview/llfloaterwindlight.cpp +++ b/indra/newview/llfloaterwindlight.cpp @@ -119,36 +119,6 @@ BOOL LLFloaterWindLight::postBuild() } void LLFloaterWindLight::initCallbacks(void) { - // help buttons - initHelpBtn("WLBlueHorizonHelp", "HelpBlueHorizon"); - initHelpBtn("WLHazeHorizonHelp", "HelpHazeHorizon"); - initHelpBtn("WLBlueDensityHelp", "HelpBlueDensity"); - initHelpBtn("WLHazeDensityHelp", "HelpHazeDensity"); - - initHelpBtn("WLDensityMultHelp", "HelpDensityMult"); - initHelpBtn("WLDistanceMultHelp", "HelpDistanceMult"); - initHelpBtn("WLMaxAltitudeHelp", "HelpMaxAltitude"); - - initHelpBtn("WLSunlightColorHelp", "HelpSunlightColor"); - initHelpBtn("WLAmbientHelp", "HelpSunAmbient"); - initHelpBtn("WLSunGlowHelp", "HelpSunGlow"); - initHelpBtn("WLTimeOfDayHelp", "HelpTimeOfDay"); - initHelpBtn("WLEastAngleHelp", "HelpEastAngle"); - - initHelpBtn("WLSceneGammaHelp", "HelpSceneGamma"); - initHelpBtn("WLStarBrightnessHelp", "HelpStarBrightness"); - - initHelpBtn("WLCloudColorHelp", "HelpCloudColor"); - initHelpBtn("WLCloudDetailHelp", "HelpCloudDetail"); - initHelpBtn("WLCloudDensityHelp", "HelpCloudDensity"); - initHelpBtn("WLCloudCoverageHelp", "HelpCloudCoverage"); - - initHelpBtn("WLCloudScaleHelp", "HelpCloudScale"); - initHelpBtn("WLCloudScrollXHelp", "HelpCloudScrollX"); - initHelpBtn("WLCloudScrollYHelp", "HelpCloudScrollY"); - - initHelpBtn("WLClassicCloudsHelp", "HelpClassicClouds"); - LLWLParamManager * param_mgr = LLWLParamManager::instance(); // blue horizon @@ -237,16 +207,6 @@ void LLFloaterWindLight::initCallbacks(void) { getChild<LLUICtrl>("WLStarAlpha")->setCommitCallback(boost::bind(&LLFloaterWindLight::onStarAlphaMoved, this, _1)); } -void LLFloaterWindLight::onClickHelp(std::string xml_alert) -{ - LLNotifications::instance().add(contextualNotification(xml_alert)); -} - -void LLFloaterWindLight::initHelpBtn(const std::string& name, const std::string& xml_alert) -{ - getChild<LLButton>(name)->setClickedCallback(boost::bind(&LLFloaterWindLight::onClickHelp, this, xml_alert)); -} - bool LLFloaterWindLight::newPromptCallback(const LLSD& notification, const LLSD& response) { std::string text = response["message"].asString(); diff --git a/indra/newview/llfloaterwindlight.h b/indra/newview/llfloaterwindlight.h index 56c2c6623b1e0d197416496b31c23cb28d196781..ed9322c4509eab5028b1d2c99de5937ecb3a919d 100644 --- a/indra/newview/llfloaterwindlight.h +++ b/indra/newview/llfloaterwindlight.h @@ -57,10 +57,6 @@ class LLFloaterWindLight : public LLFloater /// initialize all void initCallbacks(void); - // help button stuff - void onClickHelp(std::string alert); - void initHelpBtn(const std::string& name, const std::string& xml_alert); - bool newPromptCallback(const LLSD& notification, const LLSD& response); /// general purpose callbacks for dealing with color controllers diff --git a/indra/newview/llimfloater.cpp b/indra/newview/llimfloater.cpp index b21df870931c32fafb15cb4bb33114efda9c2cf8..dee86f4a222504ac1f0e6192de6ddea54bb0f4ce 100644 --- a/indra/newview/llimfloater.cpp +++ b/indra/newview/llimfloater.cpp @@ -51,6 +51,7 @@ #include "llviewerwindow.h" #include "llvoicechannel.h" #include "lltransientfloatermgr.h" +#include "llinventorymodel.h" @@ -265,7 +266,7 @@ void LLIMFloater::draw() } } - LLFloater::draw(); + LLTransientDockableFloater::draw(); } @@ -602,6 +603,162 @@ void LLIMFloater::processSessionUpdate(const LLSD& session_update) } } +BOOL LLIMFloater::handleDragAndDrop(S32 x, S32 y, MASK mask, + BOOL drop, EDragAndDropType cargo_type, + void *cargo_data, EAcceptance *accept, + std::string& tooltip_msg) +{ + + if (mDialog == IM_NOTHING_SPECIAL) + { + LLToolDragAndDrop::handleGiveDragAndDrop(mOtherParticipantUUID, mSessionID, drop, + cargo_type, cargo_data, accept); + } + + // handle case for dropping calling cards (and folders of calling cards) onto invitation panel for invites + else if (isInviteAllowed()) + { + *accept = ACCEPT_NO; + + if (cargo_type == DAD_CALLINGCARD) + { + if (dropCallingCard((LLInventoryItem*)cargo_data, drop)) + { + *accept = ACCEPT_YES_MULTI; + } + } + else if (cargo_type == DAD_CATEGORY) + { + if (dropCategory((LLInventoryCategory*)cargo_data, drop)) + { + *accept = ACCEPT_YES_MULTI; + } + } + } + return TRUE; +} + +BOOL LLIMFloater::dropCallingCard(LLInventoryItem* item, BOOL drop) +{ + BOOL rv = isInviteAllowed(); + if(rv && item && item->getCreatorUUID().notNull()) + { + if(drop) + { + std::vector<LLUUID> ids; + ids.push_back(item->getCreatorUUID()); + inviteToSession(ids); + } + } + else + { + // set to false if creator uuid is null. + rv = FALSE; + } + return rv; +} + +BOOL LLIMFloater::dropCategory(LLInventoryCategory* category, BOOL drop) +{ + BOOL rv = isInviteAllowed(); + if(rv && category) + { + LLInventoryModel::cat_array_t cats; + LLInventoryModel::item_array_t items; + LLUniqueBuddyCollector buddies; + gInventory.collectDescendentsIf(category->getUUID(), + cats, + items, + LLInventoryModel::EXCLUDE_TRASH, + buddies); + S32 count = items.count(); + if(count == 0) + { + rv = FALSE; + } + else if(drop) + { + std::vector<LLUUID> ids; + ids.reserve(count); + for(S32 i = 0; i < count; ++i) + { + ids.push_back(items.get(i)->getCreatorUUID()); + } + inviteToSession(ids); + } + } + return rv; +} + +BOOL LLIMFloater::isInviteAllowed() const +{ + + return ( (IM_SESSION_CONFERENCE_START == mDialog) + || (IM_SESSION_INVITE == mDialog) ); +} + +class LLSessionInviteResponder : public LLHTTPClient::Responder +{ +public: + LLSessionInviteResponder(const LLUUID& session_id) + { + mSessionID = session_id; + } + + void error(U32 statusNum, const std::string& reason) + { + llinfos << "Error inviting all agents to session" << llendl; + //throw something back to the viewer here? + } + +private: + LLUUID mSessionID; +}; + +BOOL LLIMFloater::inviteToSession(const std::vector<LLUUID>& ids) +{ + LLViewerRegion* region = gAgent.getRegion(); + if (!region) + { + return FALSE; + } + + S32 count = ids.size(); + + if( isInviteAllowed() && (count > 0) ) + { + llinfos << "LLIMFloater::inviteToSession() - inviting participants" << llendl; + + std::string url = region->getCapability("ChatSessionRequest"); + + LLSD data; + + data["params"] = LLSD::emptyArray(); + for (int i = 0; i < count; i++) + { + data["params"].append(ids[i]); + } + + data["method"] = "invite"; + data["session-id"] = mSessionID; + LLHTTPClient::post( + url, + data, + new LLSessionInviteResponder( + mSessionID)); + } + else + { + llinfos << "LLIMFloater::inviteToSession -" + << " no need to invite agents for " + << mDialog << llendl; + // successful add, because everyone that needed to get added + // was added. + } + + return TRUE; +} + void LLIMFloater::addTypingIndicator(const LLIMInfo* im_info) { // We may have lost a "stop-typing" packet, don't add it twice diff --git a/indra/newview/llimfloater.h b/indra/newview/llimfloater.h index d2aac57ee2c0c5f0195c7105be77e4ca26302e3e..f5edb3188abb10cbb8c8dbbc0765fa4c2d604ae9 100644 --- a/indra/newview/llimfloater.h +++ b/indra/newview/llimfloater.h @@ -35,11 +35,13 @@ #include "lltransientdockablefloater.h" #include "lllogchat.h" +#include "lltooldraganddrop.h" class LLLineEditor; class LLPanelChatControlPanel; class LLChatHistory; - +class LLInventoryItem; +class LLInventoryCategory; /** * Individual IM window that appears at the bottom of the screen, @@ -90,10 +92,21 @@ class LLIMFloater : public LLTransientDockableFloater void processIMTyping(const LLIMInfo* im_info, BOOL typing); void processSessionUpdate(const LLSD& session_update); + BOOL handleDragAndDrop(S32 x, S32 y, MASK mask, + BOOL drop, EDragAndDropType cargo_type, + void *cargo_data, EAcceptance *accept, + std::string& tooltip_msg); + private: // process focus events to set a currently active session /* virtual */ void onFocusLost(); /* virtual */ void onFocusReceived(); + + BOOL dropCallingCard(LLInventoryItem* item, BOOL drop); + BOOL dropCategory(LLInventoryCategory* category, BOOL drop); + + BOOL isInviteAllowed() const; + BOOL inviteToSession(const std::vector<LLUUID>& agent_ids); static void onInputEditorFocusReceived( LLFocusableElement* caller, void* userdata ); static void onInputEditorFocusLost(LLFocusableElement* caller, void* userdata); diff --git a/indra/newview/llimview.cpp b/indra/newview/llimview.cpp index 49fc9d8055fad6ec8440ad7f8370f521524a2796..66a3e3e85c03df90ee9f53e379ffd983eb6e8beb 100644 --- a/indra/newview/llimview.cpp +++ b/indra/newview/llimview.cpp @@ -89,9 +89,6 @@ LLIMMgr* gIMMgr = NULL; const static std::string IM_SEPARATOR(": "); -std::map<LLUUID, LLIMModel::LLIMSession*> LLIMModel::sSessionsMap; - - void toast_callback(const LLSD& msg){ // do not show toast in busy mode or it goes from agent @@ -105,7 +102,13 @@ void toast_callback(const LLSD& msg){ { return; } - + + // Skip toasting for system messages + if (msg["from_id"].asUUID() == LLUUID::null) + { + return; + } + LLSD args; args["MESSAGE"] = msg["message"]; args["TIME"] = msg["time"]; @@ -232,6 +235,12 @@ void LLIMModel::LLIMSession::addMessage(const std::string& from, const LLUUID& f message["index"] = (LLSD::Integer)mMsgs.size(); mMsgs.push_front(message); + + if (mSpeakers && from_id.notNull()) + { + mSpeakers->speakerChatted(from_id); + mSpeakers->setSpeakerTyping(from_id, FALSE); + } } void LLIMModel::LLIMSession::chatFromLogFile(LLLogChat::ELogLineType type, const LLSD& msg, void* userdata) @@ -252,12 +261,11 @@ void LLIMModel::LLIMSession::chatFromLogFile(LLLogChat::ELogLineType type, const LLIMModel::LLIMSession* LLIMModel::findIMSession(const LLUUID& session_id) const { - return get_if_there(LLIMModel::instance().sSessionsMap, session_id, + return get_if_there(mId2SessionMap, session_id, (LLIMModel::LLIMSession*) NULL); } -//*TODO change name to represent session initialization aspect (IB) -void LLIMModel::updateSessionID(const LLUUID& old_session_id, const LLUUID& new_session_id) +void LLIMModel::processSessionInitializedReply(const LLUUID& old_session_id, const LLUUID& new_session_id) { LLIMSession* session = findIMSession(old_session_id); if (session) @@ -266,8 +274,8 @@ void LLIMModel::updateSessionID(const LLUUID& old_session_id, const LLUUID& new_ if (old_session_id != new_session_id) { - sSessionsMap.erase(old_session_id); - sSessionsMap[new_session_id] = session; + mId2SessionMap.erase(old_session_id); + mId2SessionMap[new_session_id] = session; gIMMgr->notifyObserverSessionIDUpdated(old_session_id, new_session_id); } @@ -316,14 +324,14 @@ void LLIMModel::testMessages() bool LLIMModel::newSession(const LLUUID& session_id, const std::string& name, const EInstantMessage& type, const LLUUID& other_participant_id, const std::vector<LLUUID>& ids) { - if (is_in_map(sSessionsMap, session_id)) + if (findIMSession(session_id)) { llwarns << "IM Session " << session_id << " already exists" << llendl; return false; } LLIMSession* session = new LLIMSession(session_id, name, type, other_participant_id, ids); - sSessionsMap[session_id] = session; + mId2SessionMap[session_id] = session; LLIMMgr::getInstance()->notifyObserverSessionAdded(session_id, name, other_participant_id); @@ -333,9 +341,9 @@ bool LLIMModel::newSession(const LLUUID& session_id, const std::string& name, co bool LLIMModel::clearSession(const LLUUID& session_id) { - if (sSessionsMap.find(session_id) == sSessionsMap.end()) return false; - delete (sSessionsMap[session_id]); - sSessionsMap.erase(session_id); + if (mId2SessionMap.find(session_id) == mId2SessionMap.end()) return false; + delete (mId2SessionMap[session_id]); + mId2SessionMap.erase(session_id); return true; } @@ -383,7 +391,6 @@ bool LLIMModel::addToHistory(const LLUUID& session_id, const std::string& from, return true; } -//*TODO rewrite chat history persistence using LLSD serialization (IB) bool LLIMModel::logToFile(const LLUUID& session_id, const std::string& from, const LLUUID& from_id, const std::string& utf8_text) { S32 im_log_option = gSavedPerAccountSettings.getS32("IMLogOptions"); @@ -403,6 +410,23 @@ bool LLIMModel::logToFile(const LLUUID& session_id, const std::string& from, con return false; } +bool LLIMModel::proccessOnlineOfflineNotification( + const LLUUID& session_id, + const std::string& utf8_text) +{ + // Add message to old one floater + LLFloaterIMPanel *floater = gIMMgr->findFloaterBySession(session_id); + if ( floater ) + { + if ( !utf8_text.empty() ) + { + floater->addHistoryLine(utf8_text, LLUIColorTable::instance().getColor("SystemChatColor")); + } + } + // Add system message to history + return addMessage(session_id, SYSTEM_FROM, LLUUID::null, utf8_text); +} + bool LLIMModel::addMessage(const LLUUID& session_id, const std::string& from, const LLUUID& from_id, const std::string& utf8_text, bool log2file /* = true */) { LLIMSession* session = findIMSession(session_id); @@ -547,8 +571,7 @@ void LLIMModel::sendLeaveSession(const LLUUID& session_id, const LLUUID& other_p } } - -//*TODO update list of messages in a LLIMSession (IB) +//*TODO this method is better be moved to the LLIMMgr void LLIMModel::sendMessage(const std::string& utf8_text, const LLUUID& im_session_id, const LLUUID& other_participant_id, @@ -1443,14 +1466,6 @@ void LLIMMgr::addMessage( else { floater->addHistoryLine(msg, color, true, other_participant_id, from); // Insert linked name to front of message - - //*TODO consider moving that speaker management stuff into model (IB) - LLIMSpeakerMgr* speaker_mgr = LLIMModel::getInstance()->getSpeakerManager(new_session_id); - if (speaker_mgr) - { - speaker_mgr->speakerChatted(gAgentID); - speaker_mgr->setSpeakerTyping(gAgentID, FALSE); - } } LLIMModel::instance().addMessage(new_session_id, from, other_participant_id, msg); @@ -1516,7 +1531,7 @@ S32 LLIMMgr::getNumberOfUnreadIM() std::map<LLUUID, LLIMModel::LLIMSession*>::iterator it; S32 num = 0; - for(it = LLIMModel::sSessionsMap.begin(); it != LLIMModel::sSessionsMap.end(); ++it) + for(it = LLIMModel::getInstance()->mId2SessionMap.begin(); it != LLIMModel::getInstance()->mId2SessionMap.end(); ++it) { num += (*it).second->mNumUnread; } @@ -1582,7 +1597,9 @@ LLUUID LLIMMgr::addSession( LLUUID session_id = computeSessionID(dialog,other_participant_id); - if (!LLIMModel::getInstance()->findIMSession(session_id)) + bool new_session = !LLIMModel::getInstance()->findIMSession(session_id); + + if (new_session) { LLIMModel::getInstance()->newSession(session_id, name, dialog, other_participant_id, ids); } @@ -1604,6 +1621,9 @@ LLUUID LLIMMgr::addSession( ids); } + //we don't need to show notes about online/offline, mute/unmute users' statuses for existing sessions + if (!new_session) return session_id; + noteOfflineUsers(session_id, floater, ids); // Only warn for regular IMs - not group IMs @@ -1612,8 +1632,6 @@ LLUUID LLIMMgr::addSession( noteMutedUsers(session_id, floater, ids); } - - return session_id; } @@ -2013,7 +2031,7 @@ void LLIMMgr::noteOfflineUsers( { const LLRelationship* info = NULL; LLAvatarTracker& at = LLAvatarTracker::instance(); - LLIMModel* im_model = LLIMModel::getInstance(); + LLIMModel& im_model = LLIMModel::instance(); for(S32 i = 0; i < count; ++i) { info = at.getBuddyInfo(ids.get(i)); @@ -2024,13 +2042,7 @@ void LLIMMgr::noteOfflineUsers( LLUIString offline = LLTrans::getString("offline_message"); offline.setArg("[FIRST]", first); offline.setArg("[LAST]", last); - - if (floater) - { - floater->addHistoryLine(offline, LLUIColorTable::instance().getColor("SystemChatColor")); - } - - im_model->addMessage(session_id, SYSTEM_FROM, LLUUID::null, offline); + im_model.proccessOnlineOfflineNotification(session_id, offline); } } } @@ -2122,7 +2134,7 @@ class LLViewerChatterBoxSessionStartReply : public LLHTTPNode { session_id = body["session_id"].asUUID(); - LLIMModel::getInstance()->updateSessionID(temp_session_id, session_id); + LLIMModel::getInstance()->processSessionInitializedReply(temp_session_id, session_id); LLIMSpeakerMgr* speaker_mgr = LLIMModel::getInstance()->getSpeakerManager(session_id); if (speaker_mgr) diff --git a/indra/newview/llimview.h b/indra/newview/llimview.h index d0bd594df1ccbac09bc458a004373e72c43a0bee..f986d9dcdbe07cf31c77b5f75a470dcb8665a9ac 100644 --- a/indra/newview/llimview.h +++ b/indra/newview/llimview.h @@ -92,8 +92,8 @@ class LLIMModel : public LLSingleton<LLIMModel> void resetActiveSessionID() { mActiveSessionID.setNull(); } LLUUID getActiveSessionID() { return mActiveSessionID; } - //*TODO make it non-static as LLIMMOdel is a singleton (IB) - static std::map<LLUUID, LLIMSession*> sSessionsMap; //mapping session_id to session + /** Session id to session object */ + std::map<LLUUID, LLIMSession*> mId2SessionMap; typedef boost::signals2::signal<void(const LLSD&)> session_signal_t; typedef boost::function<void(const LLSD&)> session_callback_t; @@ -109,7 +109,7 @@ class LLIMModel : public LLSingleton<LLIMModel> /** * Rebind session data to a new session id. */ - void updateSessionID(const LLUUID& old_session_id, const LLUUID& new_session_id); + void processSessionInitializedReply(const LLUUID& old_session_id, const LLUUID& new_session_id); boost::signals2::connection addNewMsgCallback( session_callback_t cb ) { return mNewMsgSignal.connect(cb); } boost::signals2::connection addNoUnreadMsgsCallback( session_callback_t cb ) { return mNoUnreadMsgsSignal.connect(cb); } @@ -136,7 +136,12 @@ class LLIMModel : public LLSingleton<LLIMModel> * It sends new message signal for each added message. */ bool addMessage(const LLUUID& session_id, const std::string& from, const LLUUID& other_participant_id, const std::string& utf8_text, bool log2file = true); - + + /** + * Add a system message to an IM Model + */ + bool proccessOnlineOfflineNotification(const LLUUID& session_id, const std::string& utf8_text); + /** * Get a session's name. * For a P2P chat - it's an avatar's name, diff --git a/indra/newview/llinspectavatar.cpp b/indra/newview/llinspectavatar.cpp index 99580d091899efc1c6be099496eed7be27581446..bfad2b162480cde9fed16af1f8e932521dc55525 100644 --- a/indra/newview/llinspectavatar.cpp +++ b/indra/newview/llinspectavatar.cpp @@ -107,9 +107,12 @@ class LLInspectAvatar : public LLInspect void onClickPay(); void onClickBlock(); void onClickReport(); + void onClickFreeze(); + void onClickEject(); void onClickZoomIn(); void onClickFindOnMap(); bool onVisibleFindOnMap(); + bool onVisibleFreezeEject(); void onClickMuteVolume(); void onVolumeChange(const LLSD& data); @@ -190,11 +193,16 @@ LLInspectAvatar::LLInspectAvatar(const LLSD& sd) mCommitCallbackRegistrar.add("InspectAvatar.InviteToGroup", boost::bind(&LLInspectAvatar::onClickInviteToGroup, this)); mCommitCallbackRegistrar.add("InspectAvatar.Pay", boost::bind(&LLInspectAvatar::onClickPay, this)); mCommitCallbackRegistrar.add("InspectAvatar.Block", boost::bind(&LLInspectAvatar::onClickBlock, this)); + mCommitCallbackRegistrar.add("InspectAvatar.Freeze", + boost::bind(&LLInspectAvatar::onClickFreeze, this)); + mCommitCallbackRegistrar.add("InspectAvatar.Eject", + boost::bind(&LLInspectAvatar::onClickEject, this)); mCommitCallbackRegistrar.add("InspectAvatar.Report", boost::bind(&LLInspectAvatar::onClickReport, this)); mCommitCallbackRegistrar.add("InspectAvatar.FindOnMap", boost::bind(&LLInspectAvatar::onClickFindOnMap, this)); mCommitCallbackRegistrar.add("InspectAvatar.ZoomIn", boost::bind(&LLInspectAvatar::onClickZoomIn, this)); mVisibleCallbackRegistrar.add("InspectAvatar.VisibleFindOnMap", boost::bind(&LLInspectAvatar::onVisibleFindOnMap, this)); - + mVisibleCallbackRegistrar.add("InspectAvatar.VisibleFreezeEject", + boost::bind(&LLInspectAvatar::onVisibleFreezeEject, this)); // can't make the properties request until the widgets are constructed // as it might return immediately, so do it in postBuild. @@ -437,13 +445,13 @@ void LLInspectAvatar::nameUpdatedCallback( void LLInspectAvatar::onClickAddFriend() { LLAvatarActions::requestFriendshipDialog(mAvatarID, mAvatarName); + closeFloater(); } void LLInspectAvatar::onClickViewProfile() { - // hide inspector when showing profile - setFocus(FALSE); LLAvatarActions::showProfile(mAvatarID); + closeFloater(); } bool LLInspectAvatar::onVisibleFindOnMap() @@ -451,24 +459,33 @@ bool LLInspectAvatar::onVisibleFindOnMap() return gAgent.isGodlike() || is_agent_mappable(mAvatarID); } +bool LLInspectAvatar::onVisibleFreezeEject() +{ + return enable_freeze_eject( LLSD(mAvatarID) ); +} + void LLInspectAvatar::onClickIM() { LLAvatarActions::startIM(mAvatarID); + closeFloater(); } void LLInspectAvatar::onClickTeleport() { LLAvatarActions::offerTeleport(mAvatarID); + closeFloater(); } void LLInspectAvatar::onClickInviteToGroup() { LLAvatarActions::inviteToGroup(mAvatarID); + closeFloater(); } void LLInspectAvatar::onClickPay() { LLAvatarActions::pay(mAvatarID); + closeFloater(); } void LLInspectAvatar::onClickBlock() @@ -476,11 +493,25 @@ void LLInspectAvatar::onClickBlock() LLMute mute(mAvatarID, mAvatarName, LLMute::AGENT); LLMuteList::getInstance()->add(mute); LLPanelBlockedList::showPanelAndSelect(mute.mID); + closeFloater(); } void LLInspectAvatar::onClickReport() { LLFloaterReporter::showFromObject(mAvatarID); + closeFloater(); +} + +void LLInspectAvatar::onClickFreeze() +{ + handle_avatar_freeze( LLSD(mAvatarID) ); + closeFloater(); +} + +void LLInspectAvatar::onClickEject() +{ + handle_avatar_eject( LLSD(mAvatarID) ); + closeFloater(); } void LLInspectAvatar::onClickZoomIn() diff --git a/indra/newview/lllandmarkactions.cpp b/indra/newview/lllandmarkactions.cpp index 091346d3b41b7cbb524bd56f2523f07ca25d924f..0b07dd4f21212785ed9eac924705c957aa27b592 100644 --- a/indra/newview/lllandmarkactions.cpp +++ b/indra/newview/lllandmarkactions.cpp @@ -133,6 +133,33 @@ use_substring(if_use_substring) } }; +// Returns true if the given inventory item is a landmark pointing to the current parcel. +// Used to find out if there is at least one landmark from current parcel. +class LLFistAgentParcelLandmark : public LLInventoryCollectFunctor +{ +private: + bool mFounded;// to avoid unnecessary check + +public: + LLFistAgentParcelLandmark(): mFounded(false){} + + /*virtual*/ bool operator()(LLInventoryCategory* cat, LLInventoryItem* item) + { + if (mFounded || !item || item->getType() != LLAssetType::AT_LANDMARK) + return false; + + LLLandmark* landmark = gLandmarkList.getAsset(item->getAssetUUID()); + if (!landmark) // the landmark not been loaded yet + return false; + + LLVector3d landmark_global_pos; + if (!landmark->getGlobalPos(landmark_global_pos)) + return false; + mFounded = LLViewerParcelMgr::getInstance()->inAgentParcel(landmark_global_pos); + return mFounded; + } +}; + static void fetch_landmarks(LLInventoryModel::cat_array_t& cats, LLInventoryModel::item_array_t& items, LLInventoryCollectFunctor& add) @@ -172,6 +199,16 @@ bool LLLandmarkActions::landmarkAlreadyExists() return findLandmarkForAgentPos() != NULL; } +//static +bool LLLandmarkActions::hasParcelLandmark() +{ + LLFistAgentParcelLandmark get_first_agent_landmark; + LLInventoryModel::cat_array_t cats; + LLInventoryModel::item_array_t items; + fetch_landmarks(cats, items, get_first_agent_landmark); + return !items.empty(); + +} // *TODO: This could be made more efficient by only fetching the FIRST // landmark that meets the criteria diff --git a/indra/newview/lllandmarkactions.h b/indra/newview/lllandmarkactions.h index 32f05e702b0943ed387e74b78906b6fdccb83709..312426cab01c4d0632348cbe5e935dd4370b3df3 100644 --- a/indra/newview/lllandmarkactions.h +++ b/indra/newview/lllandmarkactions.h @@ -50,9 +50,14 @@ class LLLandmarkActions */ static LLInventoryModel::item_array_t fetchLandmarksByName(std::string& name, BOOL if_use_substring); /** - * @brief Checks whether landmark exists for current parcel. + * @brief Checks whether landmark exists for current agent position. */ static bool landmarkAlreadyExists(); + + /** + * @brief Checks whether landmark exists for current parcel. + */ + static bool hasParcelLandmark(); /** * @brief Searches landmark for global position. diff --git a/indra/newview/lllocationinputctrl.cpp b/indra/newview/lllocationinputctrl.cpp index 00f12ae2eb89bb63c29ca6e53f4ec0954645d500..8fe317a2921543a740dadb48aec5593526aa8773 100644 --- a/indra/newview/lllocationinputctrl.cpp +++ b/indra/newview/lllocationinputctrl.cpp @@ -294,6 +294,11 @@ void LLLocationInputCtrl::hideList() BOOL LLLocationInputCtrl::handleToolTip(S32 x, S32 y, MASK mask) { + + if(mAddLandmarkBtn->parentPointInView(x,y)) + { + updateAddLandmarkTooltip(); + } // Let the buttons show their tooltips. if (LLUICtrl::handleToolTip(x, y, mask)) { @@ -602,11 +607,12 @@ void LLLocationInputCtrl::enableAddLandmarkButton(bool val) // depending on whether current parcel has been landmarked. void LLLocationInputCtrl::updateAddLandmarkButton() { - bool landmark_exists = LLLandmarkActions::landmarkAlreadyExists(); - enableAddLandmarkButton(!landmark_exists); - + enableAddLandmarkButton(LLLandmarkActions::hasParcelLandmark()); +} +void LLLocationInputCtrl::updateAddLandmarkTooltip() +{ std::string tooltip; - if(landmark_exists) + if(LLLandmarkActions::landmarkAlreadyExists()) { tooltip = mEditLandmarkTooltip; } diff --git a/indra/newview/lllocationinputctrl.h b/indra/newview/lllocationinputctrl.h index c74a294ca373a8ec12e484a850bbe1f425e13fcb..44dc0cb2510bf3abc96cfe87b7cb9d90dd5e0ee9 100644 --- a/indra/newview/lllocationinputctrl.h +++ b/indra/newview/lllocationinputctrl.h @@ -107,6 +107,7 @@ class LLLocationInputCtrl bool findTeleportItemsByTitle(const LLTeleportHistoryItem& item, const std::string& filter); void setText(const LLStringExplicit& text); void updateAddLandmarkButton(); + void updateAddLandmarkTooltip(); void updateContextMenu(); void updateWidgetlayout(); void changeLocationPresentation(); diff --git a/indra/newview/llnavigationbar.h b/indra/newview/llnavigationbar.h index 8b625e7fa62099b09e5c14477e7fda7025388fba..04707d8d48a3d3a26540867e48fa424903cba98e 100644 --- a/indra/newview/llnavigationbar.h +++ b/indra/newview/llnavigationbar.h @@ -77,7 +77,6 @@ class LLNavigationBar void onBackOrForwardButtonHeldDown(const LLSD& param); void onForwardButtonClicked(); void onHomeButtonClicked(); - void onHelpButtonClicked(); void onLocationSelection(); void onLocationPrearrange(const LLSD& data); void onSearchCommit(); diff --git a/indra/newview/llnearbychathandler.cpp b/indra/newview/llnearbychathandler.cpp index 957513e154aebf1dc2c996cb023506c9df7d8486..8a8ad9d073fc65b9df128bed5f1f2949eb9a4b84 100644 --- a/indra/newview/llnearbychathandler.cpp +++ b/indra/newview/llnearbychathandler.cpp @@ -262,8 +262,9 @@ void LLNearbyChatScreenChannel::showToastsBottom() toast_rect.setLeftTopAndSize(getRect().mLeft , toast_top, toast_rect.getWidth() ,toast_rect.getHeight()); toast->setRect(toast_rect); - + toast->setIsHidden(false); toast->setVisible(TRUE); + bottom = toast->getRect().mTop; } } diff --git a/indra/newview/llpanelgroup.cpp b/indra/newview/llpanelgroup.cpp index 4708d7ba364622b4a2f8b7e5961087526156ccce..10f015774afdc471db00d00662292435020cb608 100644 --- a/indra/newview/llpanelgroup.cpp +++ b/indra/newview/llpanelgroup.cpp @@ -86,23 +86,6 @@ BOOL LLPanelGroupTab::postBuild() return TRUE; } - - -void LLPanelGroupTab::handleClickHelp() -{ - // Display the help text. - std::string help_text( getHelpText() ); - if ( !help_text.empty() ) - { - LLSD args; - args["MESSAGE"] = help_text; - LLFloater* parent_floater = gFloaterView->getParentFloater(this); - LLNotification::Params params(parent_floater->contextualNotification("GenericAlert")); - params.substitutions(args); - LLNotifications::instance().add(params); - } -} - LLPanelGroup::LLPanelGroup() : LLPanel(), LLGroupMgrObserver( LLUUID() ), diff --git a/indra/newview/llpanelgroup.h b/indra/newview/llpanelgroup.h index 5c7b0ddd0603bdb162925b0c5b9a13e5df1de386..306e6575fc7122a3ecfec663f8c35b6bbe873d45 100644 --- a/indra/newview/llpanelgroup.h +++ b/indra/newview/llpanelgroup.h @@ -148,12 +148,6 @@ class LLPanelGroupTab : public LLPanel // Triggered when group information changes in the group manager. virtual void update(LLGroupChange gc) { } - // This is the text to be displayed when a help button is pressed. - virtual std::string getHelpText() const { return mHelpText; } - - // Display anything returned by getHelpText - void handleClickHelp(); - // This just connects the help button callback. virtual BOOL postBuild(); @@ -171,11 +165,8 @@ class LLPanelGroupTab : public LLPanel protected: LLUUID mGroupID; - std::string mHelpText; - BOOL mAllowEdit; BOOL mHasModal; - }; #endif // LL_LLPANELGROUP_H diff --git a/indra/newview/llpanelgrouproles.cpp b/indra/newview/llpanelgrouproles.cpp index 71486c908cc1b82ea66e5befca367e1b6c9e8341..88aad4923d67bced285108a9020c3b15cde5aab8 100644 --- a/indra/newview/llpanelgrouproles.cpp +++ b/indra/newview/llpanelgrouproles.cpp @@ -361,20 +361,6 @@ void LLPanelGroupRoles::cancel() panelp->cancel(); } -// Pass all of these messages to the currently visible sub tab. -std::string LLPanelGroupRoles::getHelpText() const -{ - LLPanelGroupTab* panelp = (LLPanelGroupTab*) mSubTabContainer->getCurrentPanel(); - if (panelp) - { - return panelp->getHelpText(); - } - else - { - return mHelpText; - } -} - void LLPanelGroupRoles::update(LLGroupChange gc) { if (mGroupID.isNull()) return; diff --git a/indra/newview/llpanelgrouproles.h b/indra/newview/llpanelgrouproles.h index bd5fc1d2350f77bd0f4ce7244754d15ccde5a134..b6e2245e70d0fcb9e6b58f2355cbf8b4e01ff635 100644 --- a/indra/newview/llpanelgrouproles.h +++ b/indra/newview/llpanelgrouproles.h @@ -78,7 +78,6 @@ class LLPanelGroupRoles : public LLPanelGroupTab bool onModalClose(const LLSD& notification, const LLSD& response); // Most of these messages are just passed on to the current sub-tab. - virtual std::string getHelpText() const; virtual void activate(); virtual void deactivate(); virtual bool needsApply(std::string& mesg); diff --git a/indra/newview/llpanelimcontrolpanel.cpp b/indra/newview/llpanelimcontrolpanel.cpp index f9eeaf1e9e3e237fb7ddbf0946f862d852dbda62..b54975b76b6392ea9ae9818e00e44acd5d058249 100644 --- a/indra/newview/llpanelimcontrolpanel.cpp +++ b/indra/newview/llpanelimcontrolpanel.cpp @@ -54,10 +54,16 @@ void LLPanelChatControlPanel::onEndCallButtonClicked() gIMMgr->endCall(mSessionId); } +void LLPanelChatControlPanel::onOpenVoiceControlsClicked() +{ + // TODO: implement Voice Control Panel opening +} + BOOL LLPanelChatControlPanel::postBuild() { childSetAction("call_btn", boost::bind(&LLPanelChatControlPanel::onCallButtonClicked, this)); childSetAction("end_call_btn", boost::bind(&LLPanelChatControlPanel::onEndCallButtonClicked, this)); + childSetAction("voice_ctrls_btn", boost::bind(&LLPanelChatControlPanel::onOpenVoiceControlsClicked, this)); return TRUE; } @@ -73,8 +79,10 @@ void LLPanelChatControlPanel::draw() LLVoiceChannel* voice_channel = session->mVoiceChannel; if (voice_channel && voice_enabled) { - childSetVisible("end_call_btn", voice_channel->getState() >= LLVoiceChannel::STATE_CALL_STARTED); - childSetVisible("call_btn", voice_channel->getState() < LLVoiceChannel::STATE_CALL_STARTED); + bool is_call_started = ( voice_channel->getState() >= LLVoiceChannel::STATE_CALL_STARTED ); + childSetVisible("end_call_btn", is_call_started); + childSetVisible("voice_ctrls_btn", is_call_started); + childSetVisible("call_btn", ! is_call_started); } bool session_initialized = session->mSessionInitialized; diff --git a/indra/newview/llpanelimcontrolpanel.h b/indra/newview/llpanelimcontrolpanel.h index 220b7b14ba66ba1c578967105ad0e36bb7156d64..d25f33935a3f58305cfb2c5146669c4d4c0e1ff8 100644 --- a/indra/newview/llpanelimcontrolpanel.h +++ b/indra/newview/llpanelimcontrolpanel.h @@ -50,6 +50,7 @@ class LLPanelChatControlPanel : public LLPanel void onCallButtonClicked(); void onEndCallButtonClicked(); + void onOpenVoiceControlsClicked(); virtual void setSessionId(const LLUUID& session_id) { mSessionId = session_id; } diff --git a/indra/newview/llpanelland.cpp b/indra/newview/llpanelland.cpp index bce5525a4066618bedb854b092a5650e2515f5dc..417a8048347671d0e2884bfdd5b4bf9db621ec41 100644 --- a/indra/newview/llpanelland.cpp +++ b/indra/newview/llpanelland.cpp @@ -70,7 +70,6 @@ BOOL LLPanelLandInfo::postBuild() childSetAction("button subdivide land",onClickDivide,this); childSetAction("button join land",onClickJoin,this); childSetAction("button about land",onClickAbout,this); - childSetAction("button show owners help", onShowOwnersHelp, this); mCheckShowOwners = getChild<LLCheckBoxCtrl>("checkbox show owners"); childSetValue("checkbox show owners", gSavedSettings.getBOOL("ShowParcelOwners")); @@ -265,8 +264,3 @@ void LLPanelLandInfo::onClickAbout(void*) LLFloaterReg::showInstance("about_land"); } - -void LLPanelLandInfo::onShowOwnersHelp(void* user_data) -{ - LLNotifications::instance().add("ShowOwnersHelp"); -} diff --git a/indra/newview/llpanelland.h b/indra/newview/llpanelland.h index 92fe3134052984afeede523848294e571f5aae5b..02e7e7bf3856036c3578779a4429b76a851e27c4 100644 --- a/indra/newview/llpanelland.h +++ b/indra/newview/llpanelland.h @@ -60,7 +60,6 @@ class LLPanelLandInfo static void onClickDivide(void*); static void onClickJoin(void*); static void onClickAbout(void*); - static void onShowOwnersHelp(void*); protected: //LLTextBox* mTextPriceLabel; diff --git a/indra/newview/llpanellandmarks.cpp b/indra/newview/llpanellandmarks.cpp index 48a93f0d42a73a13f57713e85d75ef0fdd6cdff3..c9598a2576892f972a11802348289035b0e5b334 100644 --- a/indra/newview/llpanellandmarks.cpp +++ b/indra/newview/llpanellandmarks.cpp @@ -184,9 +184,9 @@ void LLLandmarksPanel::updateVerbs() if (!isTabVisible()) return; - BOOL enabled = isLandmarkSelected(); - mTeleportBtn->setEnabled(enabled); - mShowOnMapBtn->setEnabled(enabled); + bool landmark_selected = isLandmarkSelected(); + mTeleportBtn->setEnabled(landmark_selected && isActionEnabled("teleport")); + mShowOnMapBtn->setEnabled(landmark_selected && isActionEnabled("show_on_map")); // TODO: mantipov: Uncomment when mShareBtn is supported // Share button should be enabled when neither a folder nor a landmark is selected diff --git a/indra/newview/llpanelmediasettingssecurity.cpp b/indra/newview/llpanelmediasettingssecurity.cpp index f5607aa2874e03a6e21e62f84dfedfd907262792..33f0952f536f801313fafe9324d3784f6f955f21 100644 --- a/indra/newview/llpanelmediasettingssecurity.cpp +++ b/indra/newview/llpanelmediasettingssecurity.cpp @@ -50,10 +50,11 @@ LLPanelMediaSettingsSecurity::LLPanelMediaSettingsSecurity() : mParent( NULL ) { - // build dialog from XML - LLUICtrlFactory::getInstance()->buildPanel(this, "panel_media_settings_security.xml"); mCommitCallbackRegistrar.add("Media.whitelistAdd", boost::bind(&LLPanelMediaSettingsSecurity::onBtnAdd, this)); mCommitCallbackRegistrar.add("Media.whitelistDelete", boost::bind(&LLPanelMediaSettingsSecurity::onBtnDel, this)); + // build dialog from XML + LLUICtrlFactory::getInstance()->buildPanel(this, "panel_media_settings_security.xml"); + } //////////////////////////////////////////////////////////////////////////////// @@ -62,10 +63,7 @@ BOOL LLPanelMediaSettingsSecurity::postBuild() { mEnableWhiteList = getChild< LLCheckBoxCtrl >( LLMediaEntry::WHITELIST_ENABLE_KEY ); mWhiteListList = getChild< LLScrollListCtrl >( LLMediaEntry::WHITELIST_KEY ); - - childSetAction("whitelist_add", onBtnAdd, this); - childSetAction("whitelist_del", onBtnDel, this); - + setDefaultBtn("whitelist_add"); return true; @@ -237,17 +235,17 @@ void LLPanelMediaSettingsSecurity::getValues( LLSD &fill_me_in ) const std::string LLPanelMediaSettingsSecurity::makeValidUrl( const std::string& src_url ) { // use LLURI to determine if we have a valid scheme - LLURI candidate_url( src_url ); - if ( candidate_url.scheme().empty() ) - { + LLURI candidate_url( src_url ); + if ( candidate_url.scheme().empty() ) + { // build a URL comprised of default scheme and the original fragment const std::string default_scheme( "http://" ); return default_scheme + src_url; - }; - - // we *could* test the "default scheme" + "original fragment" URL again - // using LLURI to see if it's valid but I think the outcome is the same - // in either case - our only option is to return the original URL + }; + + // we *could* test the "default scheme" + "original fragment" URL again + // using LLURI to see if it's valid but I think the outcome is the same + // in either case - our only option is to return the original URL // we *think* the original url passed in was valid return src_url; @@ -334,10 +332,10 @@ void LLPanelMediaSettingsSecurity::onBtnDel( void* userdata ) self->mWhiteListList->deleteSelectedItems(); } -//////////////////////////////////////////////////////////////////////////////// -// -void LLPanelMediaSettingsSecurity::setParent( LLFloaterMediaSettings* parent ) -{ - mParent = parent; -}; - +//////////////////////////////////////////////////////////////////////////////// +// +void LLPanelMediaSettingsSecurity::setParent( LLFloaterMediaSettings* parent ) +{ + mParent = parent; +}; + diff --git a/indra/newview/llpanelplaceinfo.cpp b/indra/newview/llpanelplaceinfo.cpp index 5af27a5ec1cef8ab31b8e7def42872245261f2c9..34644cfe42d1bca8177db115f489214568c71f87 100644 --- a/indra/newview/llpanelplaceinfo.cpp +++ b/indra/newview/llpanelplaceinfo.cpp @@ -54,6 +54,7 @@ #include "llaccordionctrltab.h" #include "llagent.h" #include "llagentui.h" +#include "llappviewer.h" #include "llavatarpropertiesprocessor.h" #include "llcallbacklist.h" #include "llexpandabletextbox.h" @@ -1003,13 +1004,15 @@ void LLPanelPlaceInfo::updateYouAreHereBanner(void* userdata) LLPanelPlaceInfo* self = static_cast<LLPanelPlaceInfo*>(userdata); if(!self->getVisible()) return; + if(!gDisconnected) + { + static F32 radius = gSavedSettings.getF32("YouAreHereDistance"); - static F32 radius = gSavedSettings.getF32("YouAreHereDistance"); - - BOOL display_banner = self->mLastSelectedRegionID == gAgent.getRegion()->getRegionID() && + BOOL display_banner = gAgent.getRegion()->getRegionID() == self->mLastSelectedRegionID && LLAgentUI::checkAgentDistance(self->mPosRegion, radius); - self->mYouAreHerePanel->setVisible(display_banner); + self->mYouAreHerePanel->setVisible(display_banner); + } } void LLPanelPlaceInfo::onForSaleBannerClick() diff --git a/indra/newview/llpanelprimmediacontrols.cpp b/indra/newview/llpanelprimmediacontrols.cpp index e4b32c4820d379cbe98ddcc317995c6f03a88f01..58ca481b77b9dd827bdfcacd27f5bbacc0f68a61 100644 --- a/indra/newview/llpanelprimmediacontrols.cpp +++ b/indra/newview/llpanelprimmediacontrols.cpp @@ -228,7 +228,10 @@ void LLPanelPrimMediaControls::updateShape() bool can_navigate = parcel->getMediaAllowNavigate(); bool enabled = false; - bool has_focus = media_impl->hasFocus(); + // There is no such thing as "has_focus" being different from normal controls set + // anymore (as of user feedback from bri 10/09). So we cheat here and force 'has_focus' + // to 'true' (or, actually, we use a setting) + bool has_focus = (gSavedSettings.getBOOL("PrimMediaControlsUseHoverControlSet")) ? media_impl->hasFocus() : true; setVisible(enabled); if (objectp) @@ -310,8 +313,8 @@ void LLPanelPrimMediaControls::updateShape() fwd_ctrl->setEnabled(has_focus); media_address_ctrl->setVisible(false); media_address_ctrl->setEnabled(false); - media_play_slider_panel->setVisible(!mini_controls); - media_play_slider_panel->setEnabled(!mini_controls); + media_play_slider_panel->setVisible(has_focus && !mini_controls); + media_play_slider_panel->setEnabled(has_focus && !mini_controls); volume_ctrl->setVisible(has_focus); volume_up_ctrl->setVisible(has_focus); diff --git a/indra/newview/llpanelprofileview.cpp b/indra/newview/llpanelprofileview.cpp index 1d16c4ef5e8e746fb648791dd6cba20bc54a3f09..d4ab5013f9592dc4a54e667375d53441e7f6e903 100644 --- a/indra/newview/llpanelprofileview.cpp +++ b/indra/newview/llpanelprofileview.cpp @@ -32,10 +32,12 @@ #include "llviewerprecompiledheaders.h" +#include "llavatarconstants.h" #include "lluserrelations.h" #include "llpanelprofileview.h" +#include "llavatarpropertiesprocessor.h" #include "llcallingcard.h" #include "llpanelavatar.h" #include "llpanelpicks.h" @@ -48,14 +50,46 @@ static std::string PANEL_NOTES = "panel_notes"; static const std::string PANEL_PROFILE = "panel_profile"; static const std::string PANEL_PICKS = "panel_picks"; + +class AvatarStatusObserver : public LLAvatarPropertiesObserver +{ +public: + AvatarStatusObserver(LLPanelProfileView* profile_view) + { + mProfileView = profile_view; + } + + void processProperties(void* data, EAvatarProcessorType type) + { + if(APT_PROPERTIES != type) return; + const LLAvatarData* avatar_data = static_cast<const LLAvatarData*>(data); + if(avatar_data && mProfileView->getAvatarId() == avatar_data->avatar_id) + { + mProfileView->processOnlineStatus(avatar_data->flags & AVATAR_ONLINE); + LLAvatarPropertiesProcessor::instance().removeObserver(mProfileView->getAvatarId(), this); + } + } + + void subscribe() + { + LLAvatarPropertiesProcessor::instance().addObserver(mProfileView->getAvatarId(), this); + } + +private: + LLPanelProfileView* mProfileView; +}; + LLPanelProfileView::LLPanelProfileView() : LLPanelProfile() , mStatusText(NULL) +, mAvatarStatusObserver(NULL) { + mAvatarStatusObserver = new AvatarStatusObserver(this); } LLPanelProfileView::~LLPanelProfileView(void) { + delete mAvatarStatusObserver; } /*virtual*/ @@ -66,6 +100,9 @@ void LLPanelProfileView::onOpen(const LLSD& key) { id = key["id"]; } + + // subscribe observer to get online status. Request will be sent by LLPanelAvatarProfile itself + mAvatarStatusObserver->subscribe(); if(id.notNull() && getAvatarId() != id) { setAvatarId(id); @@ -74,10 +111,12 @@ void LLPanelProfileView::onOpen(const LLSD& key) // Update the avatar name. gCacheName->get(getAvatarId(), FALSE, boost::bind(&LLPanelProfileView::onAvatarNameCached, this, _1, _2, _3, _4)); - +/* +// disable this part of code according to EXT-2022. See processOnlineStatus // status should only show if viewer has permission to view online/offline. EXT-453 mStatusText->setVisible(isGrantedToSeeOnlineStatus()); updateOnlineStatus(); +*/ LLPanelProfile::onOpen(key); } @@ -93,6 +132,7 @@ BOOL LLPanelProfileView::postBuild() getTabContainer()[PANEL_PROFILE]->childSetVisible("status_combo", FALSE); mStatusText = getChild<LLTextBox>("status"); + mStatusText->setVisible(false); childSetCommitCallback("back",boost::bind(&LLPanelProfileView::onBackBtnClick,this),NULL); @@ -135,13 +175,18 @@ void LLPanelProfileView::updateOnlineStatus() return; bool online = relationship->isOnline(); -// std::string statusName(); std::string status = getString(online ? "status_online" : "status_offline"); mStatusText->setValue(status); } +void LLPanelProfileView::processOnlineStatus(bool online) +{ + mAvatarIsOnline = online; + mStatusText->setVisible(online); +} + void LLPanelProfileView::onAvatarNameCached(const LLUUID& id, const std::string& first_name, const std::string& last_name, BOOL is_group) { llassert(getAvatarId() == id); @@ -155,7 +200,7 @@ void LLPanelProfileView::togglePanel(LLPanel* panel) { // LLPanelProfile::togglePanel shows/hides all children, // we don't want to display online status for non friends, so re-hide it here - mStatusText->setVisible(isGrantedToSeeOnlineStatus()); + mStatusText->setVisible(mAvatarIsOnline); } } diff --git a/indra/newview/llpanelprofileview.h b/indra/newview/llpanelprofileview.h index 07a6c3a9a08de8ee579485d7d5eeac5bf3858dc4..b59d1d42f31acbcda672ae1f9379829adb3d3bc5 100644 --- a/indra/newview/llpanelprofileview.h +++ b/indra/newview/llpanelprofileview.h @@ -40,6 +40,7 @@ class LLPanelProfile; class LLPanelProfileTab; class LLTextBox; +class AvatarStatusObserver; /** * Panel for displaying Avatar's profile. It consists of three sub panels - Profile, @@ -49,6 +50,7 @@ class LLPanelProfileView : public LLPanelProfile { LOG_CLASS(LLPanelProfileView); friend class LLUICtrlFactory; + friend class AvatarStatusObserver; public: @@ -65,8 +67,9 @@ class LLPanelProfileView : public LLPanelProfile protected: void onBackBtnClick(); - bool isGrantedToSeeOnlineStatus(); - void updateOnlineStatus(); + bool isGrantedToSeeOnlineStatus(); // deprecated after EXT-2022 is implemented + void updateOnlineStatus(); // deprecated after EXT-2022 is implemented + void processOnlineStatus(bool online); private: // LLCacheName will call this function when avatar name is loaded from server. @@ -78,6 +81,8 @@ class LLPanelProfileView : public LLPanelProfile BOOL is_group); LLTextBox* mStatusText; + AvatarStatusObserver* mAvatarStatusObserver; + bool mAvatarIsOnline; }; #endif //LL_LLPANELPROFILEVIEW_H diff --git a/indra/newview/llpreviewscript.cpp b/indra/newview/llpreviewscript.cpp index ac7abf14485da500d2c80ddbe38e5931ef15228d..b391c6ff1da2f6f04c58557e3cc9698210fff016 100644 --- a/indra/newview/llpreviewscript.cpp +++ b/indra/newview/llpreviewscript.cpp @@ -452,7 +452,7 @@ bool LLScriptEdCore::hasChanged() { if (!mEditor) return false; - return !mEditor->isPristine(); + return ((!mEditor->isPristine() || mEnableSave) && mHasScriptData); } void LLScriptEdCore::draw() diff --git a/indra/newview/llselectmgr.cpp b/indra/newview/llselectmgr.cpp index d68897b64f6a79465af1d0a8048a5fdc920d1fa9..759c86f3a028d67d002e3297d91a06f2489c1384 100644 --- a/indra/newview/llselectmgr.cpp +++ b/indra/newview/llselectmgr.cpp @@ -801,6 +801,8 @@ LLObjectSelectionHandle LLSelectMgr::setHoverObject(LLViewerObject *objectp, S32 return NULL; } + mHoverObjects->mPrimaryObject = objectp; + objectp = objectp->getRootEdit(); // is the requested object the same as the existing hover object root? @@ -834,6 +836,11 @@ LLSelectNode *LLSelectMgr::getHoverNode() return mHoverObjects->getFirstRootNode(); } +LLSelectNode *LLSelectMgr::getPrimaryHoverNode() +{ + return mHoverObjects->mSelectNodeMap[mHoverObjects->mPrimaryObject]; +} + void LLSelectMgr::highlightObjectOnly(LLViewerObject* objectp) { if (!objectp) diff --git a/indra/newview/llselectmgr.h b/indra/newview/llselectmgr.h index 6e757ef976fc05bc6a2e315adf07788bc7997e70..2050a73f2675c8518fcc3d6957389623bcbd6753 100644 --- a/indra/newview/llselectmgr.h +++ b/indra/newview/llselectmgr.h @@ -404,6 +404,7 @@ class LLSelectMgr : public LLEditMenuHandler, public LLSingleton<LLSelectMgr> LLObjectSelectionHandle setHoverObject(LLViewerObject *objectp, S32 face = -1); LLSelectNode *getHoverNode(); + LLSelectNode *getPrimaryHoverNode(); void highlightObjectOnly(LLViewerObject *objectp); void highlightObjectAndFamily(LLViewerObject *objectp); diff --git a/indra/newview/llsyswellwindow.cpp b/indra/newview/llsyswellwindow.cpp index 419603e14e5d23b46d4e00b81fc6990bd1fbf5e8..c25541842967c8dc7007672666eaede8d8b5f74d 100644 --- a/indra/newview/llsyswellwindow.cpp +++ b/indra/newview/llsyswellwindow.cpp @@ -409,7 +409,6 @@ bool LLSysWellWindow::isWindowEmpty() void LLSysWellWindow::sessionAdded(const LLUUID& session_id, const std::string& name, const LLUUID& other_participant_id) { - //*TODO get rid of get_session_value, session_id's are unique, cause performance degradation with lots chiclets (IB) if (mMessageList->getItemByValue(session_id) == NULL) { S32 chicletCounter = LLIMModel::getInstance()->getNumUnread(session_id); diff --git a/indra/newview/lltoolpie.cpp b/indra/newview/lltoolpie.cpp index 304f1dffaf009f7a248b2f771cd4e6b9a13bb4b2..0a9e72506b45ea3513edbd6e51bef3bd4b1f709d 100644 --- a/indra/newview/lltoolpie.cpp +++ b/indra/newview/lltoolpie.cpp @@ -598,6 +598,9 @@ BOOL LLToolPie::handleDoubleClick(S32 x, S32 y, MASK mask) static bool needs_tooltip(LLSelectNode* nodep) { + if (!nodep) + return false; + LLViewerObject* object = nodep->getObject(); LLViewerObject *parent = (LLViewerObject *)object->getParent(); if (object->flagHandleTouch() @@ -773,7 +776,10 @@ BOOL LLToolPie::handleToolTip(S32 local_x, S32 local_y, MASK mask) } } - bool needs_tip = needs_tooltip(nodep); + // also check the primary node since sometimes it can have an action even though + // the root node doesn't + bool needs_tip = needs_tooltip(nodep) || + needs_tooltip(LLSelectMgr::getInstance()->getPrimaryHoverNode()); if (show_all_object_tips || needs_tip) { diff --git a/indra/newview/llviewerjointmesh.cpp b/indra/newview/llviewerjointmesh.cpp index cd60a8d560630f68b49fa4298167765fb0e4fb7f..5b8902dec48be1f1803caba1cd6c37f200df472c 100644 --- a/indra/newview/llviewerjointmesh.cpp +++ b/indra/newview/llviewerjointmesh.cpp @@ -582,7 +582,7 @@ U32 LLViewerJointMesh::drawShape( F32 pixelArea, BOOL first_pass, BOOL is_dummy) } else { - gGL.getTexUnit(0)->bind(LLViewerTextureManager::getFetchedTexture(IMG_DEFAULT_AVATAR)); + gGL.getTexUnit(0)->bind(LLViewerTextureManager::getFetchedTexture(IMG_DEFAULT)); } if (gRenderForSelect) diff --git a/indra/newview/llviewermedia.cpp b/indra/newview/llviewermedia.cpp index e89f17cf7298ae364e7393d71377aede5978f81f..55e4f28e75f5c97c9af1d8a3be1842f5bb0ee238 100644 --- a/indra/newview/llviewermedia.cpp +++ b/indra/newview/llviewermedia.cpp @@ -1189,6 +1189,17 @@ BOOL LLViewerMediaImpl::handleMouseUp(S32 x, S32 y, MASK mask) return TRUE; } +////////////////////////////////////////////////////////////////////////////////////////// +std::string LLViewerMediaImpl::getName() const +{ + if (mMediaSource) + { + return mMediaSource->getMediaName(); + } + + return LLStringUtil::null; +}; + ////////////////////////////////////////////////////////////////////////////////////////// void LLViewerMediaImpl::navigateBack() { diff --git a/indra/newview/llviewermedia.h b/indra/newview/llviewermedia.h index dac04820783c06c6d66bbc9b3e8eec885ba4e8ce..d6dde0c93e382463f4015c0ed3fce0c773a7637f 100644 --- a/indra/newview/llviewermedia.h +++ b/indra/newview/llviewermedia.h @@ -228,7 +228,7 @@ class LLViewerMediaImpl /*virtual*/ BOOL handleToolTip(S32 x, S32 y, MASK mask) { return FALSE; }; /*virtual*/ BOOL handleMiddleMouseDown(S32 x, S32 y, MASK mask) { return FALSE; }; /*virtual*/ BOOL handleMiddleMouseUp(S32 x, S32 y, MASK mask) {return FALSE; }; - /*virtual*/ std::string getName() const { return LLStringUtil::null; }; + /*virtual*/ std::string getName() const; /*virtual*/ void screenPointToLocal(S32 screen_x, S32 screen_y, S32* local_x, S32* local_y) const {}; /*virtual*/ void localPointToScreen(S32 local_x, S32 local_y, S32* screen_x, S32* screen_y) const {}; @@ -258,7 +258,7 @@ class LLViewerMediaImpl void calculateInterest(); F64 getInterest() const { return mInterest; }; F64 getApproximateTextureInterest(); - S32 getProximity() { return mProximity; }; + S32 getProximity() const { return mProximity; }; // Mark this object as being used in a UI panel instead of on a prim // This will be used as part of the interest sorting algorithm. diff --git a/indra/newview/llviewermediafocus.cpp b/indra/newview/llviewermediafocus.cpp index 2f7040aaa30b19ccb054c2e70e3019cf2c7299aa..657c58364f69aa3d48492502066d53f830c01132 100644 --- a/indra/newview/llviewermediafocus.cpp +++ b/indra/newview/llviewermediafocus.cpp @@ -86,6 +86,9 @@ void LLViewerMediaFocus::setFocusFace(LLPointer<LLViewerObject> objectp, S32 fac mFocusedObjectID = objectp->getID(); mFocusedObjectFace = face; mFocusedObjectNormal = pick_normal; + + // Focusing on a media face clears its disable flag. + media_impl->setDisabled(false); LLTextureEntry* tep = objectp->getTE(face); if(tep->hasMedia()) diff --git a/indra/newview/llviewermenu.cpp b/indra/newview/llviewermenu.cpp index 864cf9d57bb49800def31ff7cfa4a756189c9482..9da9ff5ce7fc3d104d8120ad29d0e6d8bdfe549e 100644 --- a/indra/newview/llviewermenu.cpp +++ b/indra/newview/llviewermenu.cpp @@ -2963,11 +2963,20 @@ bool callback_freeze(const LLSD& notification, const LLSD& response) } -class LLAvatarFreeze : public view_listener_t +void handle_avatar_freeze(const LLSD& avatar_id) { - bool handleEvent(const LLSD& userdata) - { - LLVOAvatar* avatar = find_avatar_from_object( LLSelectMgr::getInstance()->getSelection()->getPrimaryObject() ); + // Use avatar_id if available, otherwise default to right-click avatar + LLVOAvatar* avatar = NULL; + if (avatar_id.asUUID().notNull()) + { + avatar = find_avatar_from_object(avatar_id.asUUID()); + } + else + { + avatar = find_avatar_from_object( + LLSelectMgr::getInstance()->getSelection()->getPrimaryObject()); + } + if( avatar ) { std::string fullname = avatar->getFullname(); @@ -2991,9 +3000,7 @@ class LLAvatarFreeze : public view_listener_t callback_freeze); } } - return true; - } -}; +} class LLAvatarVisibleDebug : public view_listener_t { @@ -3003,14 +3010,6 @@ class LLAvatarVisibleDebug : public view_listener_t } }; -class LLAvatarEnableDebug : public view_listener_t -{ - bool handleEvent(const LLSD& userdata) - { - return gAgent.isGodlike(); - } -}; - class LLAvatarDebug : public view_listener_t { bool handleEvent(const LLSD& userdata) @@ -3087,11 +3086,20 @@ bool callback_eject(const LLSD& notification, const LLSD& response) return false; } -class LLAvatarEject : public view_listener_t +void handle_avatar_eject(const LLSD& avatar_id) { - bool handleEvent(const LLSD& userdata) - { - LLVOAvatar* avatar = find_avatar_from_object( LLSelectMgr::getInstance()->getSelection()->getPrimaryObject() ); + // Use avatar_id if available, otherwise default to right-click avatar + LLVOAvatar* avatar = NULL; + if (avatar_id.asUUID().notNull()) + { + avatar = find_avatar_from_object(avatar_id.asUUID()); + } + else + { + avatar = find_avatar_from_object( + LLSelectMgr::getInstance()->getSelection()->getPrimaryObject()); + } + if( avatar ) { LLSD payload; @@ -3142,38 +3150,41 @@ class LLAvatarEject : public view_listener_t } } } - return true; - } -}; +} -class LLAvatarEnableFreezeEject : public view_listener_t +bool enable_freeze_eject(const LLSD& avatar_id) { - bool handleEvent(const LLSD& userdata) + // Use avatar_id if available, otherwise default to right-click avatar + LLVOAvatar* avatar = NULL; + if (avatar_id.asUUID().notNull()) { - LLVOAvatar* avatar = find_avatar_from_object( LLSelectMgr::getInstance()->getSelection()->getPrimaryObject() ); - bool new_value = (avatar != NULL); + avatar = find_avatar_from_object(avatar_id.asUUID()); + } + else + { + avatar = find_avatar_from_object( + LLSelectMgr::getInstance()->getSelection()->getPrimaryObject()); + } + if (!avatar) return false; - if (new_value) - { - const LLVector3& pos = avatar->getPositionRegion(); - const LLVector3d& pos_global = avatar->getPositionGlobal(); - LLParcel* parcel = LLViewerParcelMgr::getInstance()->selectParcelAt(pos_global)->getParcel(); - LLViewerRegion* region = avatar->getRegion(); - new_value = (region != NULL); - - if (new_value) - { - new_value = region->isOwnedSelf(pos); - if (!new_value || region->isOwnedGroup(pos)) - { - new_value = LLViewerParcelMgr::getInstance()->isParcelOwnedByAgent(parcel,GP_LAND_ADMIN); - } - } - } + // Gods can always freeze + if (gAgent.isGodlike()) return true; - return new_value; + // Estate owners / managers can freeze + // Parcel owners can also freeze + const LLVector3& pos = avatar->getPositionRegion(); + const LLVector3d& pos_global = avatar->getPositionGlobal(); + LLParcel* parcel = LLViewerParcelMgr::getInstance()->selectParcelAt(pos_global)->getParcel(); + LLViewerRegion* region = avatar->getRegion(); + if (!region) return false; + + bool new_value = region->isOwnedSelf(pos); + if (!new_value || region->isOwnedGroup(pos)) + { + new_value = LLViewerParcelMgr::getInstance()->isParcelOwnedByAgent(parcel,GP_LAND_ADMIN); } -}; + return new_value; +} class LLAvatarGiveCard : public view_listener_t { @@ -8021,18 +8032,18 @@ void initialize_menus() view_listener_t::addMenu(new LLObjectMute(), "Avatar.Mute"); view_listener_t::addMenu(new LLAvatarAddFriend(), "Avatar.AddFriend"); view_listener_t::addMenu(new LLAvatarAddContact(), "Avatar.AddContact"); - view_listener_t::addMenu(new LLAvatarFreeze(), "Avatar.Freeze"); + commit.add("Avatar.Freeze", boost::bind(&handle_avatar_freeze, LLSD())); view_listener_t::addMenu(new LLAvatarDebug(), "Avatar.Debug"); view_listener_t::addMenu(new LLAvatarVisibleDebug(), "Avatar.VisibleDebug"); - view_listener_t::addMenu(new LLAvatarEnableDebug(), "Avatar.EnableDebug"); view_listener_t::addMenu(new LLAvatarInviteToGroup(), "Avatar.InviteToGroup"); view_listener_t::addMenu(new LLAvatarGiveCard(), "Avatar.GiveCard"); - view_listener_t::addMenu(new LLAvatarEject(), "Avatar.Eject"); + commit.add("Avatar.Eject", boost::bind(&handle_avatar_eject, LLSD())); view_listener_t::addMenu(new LLAvatarSendIM(), "Avatar.SendIM"); view_listener_t::addMenu(new LLAvatarReportAbuse(), "Avatar.ReportAbuse"); view_listener_t::addMenu(new LLAvatarEnableAddFriend(), "Avatar.EnableAddFriend"); - view_listener_t::addMenu(new LLAvatarEnableFreezeEject(), "Avatar.EnableFreezeEject"); + enable.add("Avatar.EnableFreezeEject", boost::bind(&enable_freeze_eject, _2)); + visible.add("Avatar.EnableFreezeEject", boost::bind(&enable_freeze_eject, _2)); // Object pie menu view_listener_t::addMenu(new LLObjectBuild(), "Object.Build"); diff --git a/indra/newview/llviewermenu.h b/indra/newview/llviewermenu.h index 6d32df2bc54da706867ac2e4f1f97b5e8e62b7de..b65878b5e63f4d491f7a29121950766affe9e4d1 100644 --- a/indra/newview/llviewermenu.h +++ b/indra/newview/llviewermenu.h @@ -101,6 +101,14 @@ void handle_take_copy(); void handle_look_at_selection(const LLSD& param); void handle_zoom_to_object(LLUUID object_id); +// Takes avatar UUID, or if no UUID passed, uses last selected object +void handle_avatar_freeze(const LLSD& avatar_id); + +// Takes avatar UUID, or if no UUID passed, uses last selected object +void handle_avatar_eject(const LLSD& avatar_id); + +bool enable_freeze_eject(const LLSD& avatar_id); + // Can anyone take a free copy of the object? // *TODO: Move to separate file bool anyone_copy_selection(LLSelectNode* nodep); diff --git a/indra/newview/llviewermessage.cpp b/indra/newview/llviewermessage.cpp index 8b7df63884772639fc2f381aca51f644f0fed521..5fd762ab3d33001c605fbbb9d032f88b31783871 100644 --- a/indra/newview/llviewermessage.cpp +++ b/indra/newview/llviewermessage.cpp @@ -2380,7 +2380,7 @@ void process_chat_from_simulator(LLMessageSystem *msg, void **user_data) switch(chat.mChatType) { case CHAT_TYPE_WHISPER: - verb = "(" + LLTrans::getString("whisper") + ")"; + verb = LLTrans::getString("whisper") + " "; break; case CHAT_TYPE_DEBUG_MSG: case CHAT_TYPE_OWNER: @@ -2388,7 +2388,7 @@ void process_chat_from_simulator(LLMessageSystem *msg, void **user_data) verb = ""; break; case CHAT_TYPE_SHOUT: - verb = "(" + LLTrans::getString("shout") + ")"; + verb = LLTrans::getString("shout") + " "; break; case CHAT_TYPE_START: case CHAT_TYPE_STOP: diff --git a/indra/newview/pipeline.cpp b/indra/newview/pipeline.cpp index a37de468b3a957b53c984fe0b08beb3fa96ebbca..0dc1a88ee8912ffe0b8dd8e623e2302a235f878f 100644 --- a/indra/newview/pipeline.cpp +++ b/indra/newview/pipeline.cpp @@ -7908,6 +7908,7 @@ void LLPipeline::generateHighlight(LLCamera& camera) mHighlight.flush(); gGL.setColorMask(true, false); + gViewerWindow->setup3DViewport(); } } diff --git a/indra/newview/skins/default/textures/bottomtray/Snapshot_Off.png b/indra/newview/skins/default/textures/bottomtray/Snapshot_Off.png index 6f2726c3e672a87918a50007e5dfe978051dbdd4..d7ec04237b53b2b2634210381b1a423a401375d6 100644 Binary files a/indra/newview/skins/default/textures/bottomtray/Snapshot_Off.png and b/indra/newview/skins/default/textures/bottomtray/Snapshot_Off.png differ diff --git a/indra/newview/skins/default/textures/textures.xml b/indra/newview/skins/default/textures/textures.xml index c322d2aebb2da361ff4198de263200dde1bebdc9..a75d38d9671fcb0bde242d400c595c275c8caf8e 100644 --- a/indra/newview/skins/default/textures/textures.xml +++ b/indra/newview/skins/default/textures/textures.xml @@ -488,6 +488,9 @@ <!--WARNING OLD ART *do not use*--> + <texture name="Banner_ForSale" file_name="Banner_ForSale.png" preload="false" /> + <texture name="Banner_YouAreHere" file_name="Banner_YouAreHere.png" preload="false" /> + <texture name="btn_chatbar.tga" scale.left="20" scale.top="24" scale.right="44" scale.bottom="0" /> <texture name="btn_chatbar_selected.tga" scale.left="20" scale.top="24" scale.right="44" scale.bottom="0" /> @@ -532,15 +535,6 @@ <texture name="move_down_in.tga" preload="false" /> <texture name="move_down_out.tga" preload="false" /> - <texture name="tool_grab.tga" /> - <texture name="tool_grab_active.tga" /> - - <texture name="tool_face.tga" /> - <texture name="tool_face_active.tga" /> - - <texture name="tool_create.tga" /> - <texture name="tool_create_active.tga" /> - <texture name="up_arrow.tga" file_name="up_arrow.png" /> <texture name="down_arrow.tga" file_name="down_arrow.png" /> @@ -605,54 +599,6 @@ <texture name="icon_popular.tga" /> <texture name="icon_top_pick.tga" /> - <texture name="inv_folder_animation.tga" /> - <texture name="inv_folder_bodypart.tga" /> - <texture name="inv_folder_callingcard.tga" /> - <texture name="inv_folder_clothing.tga" /> - <texture name="inv_folder_current_outfit.tga" /> - <texture name="inv_folder_gesture.tga" /> - <texture name="inv_folder_landmark.tga" /> - <texture name="inv_folder_lostandfound.tga" /> - <texture name="inv_folder_my_outfits.tga" /> - <texture name="inv_folder_notecard.tga" /> - <texture name="inv_folder_object.tga" /> - <texture name="inv_folder_outfit.tga" /> - <texture name="inv_folder_plain_closed.tga" /> - <texture name="inv_folder_script.tga" /> - <texture name="inv_folder_snapshot.tga" /> - <texture name="inv_folder_sound.tga" /> - <texture name="inv_folder_texture.tga" /> - <texture name="inv_folder_trash.tga" /> - - <texture name="inv_item_animation.tga" /> - <texture name="inv_item_skin.tga" /> - <texture name="inv_item_callingcard_offline.tga" /> - <texture name="inv_item_callingcard_online.tga" /> - <texture name="inv_item_eyes.tga" /> - <texture name="inv_item_gesture.tga" /> - <texture name="inv_item_gloves.tga" /> - <texture name="inv_item_hair.tga" /> - <texture name="inv_item_jacket.tga" /> - <texture name="inv_item_landmark.tga" /> - <texture name="inv_item_landmark_visited.tga" /> - <texture name="inv_item_linkitem.tga" /> - <texture name="inv_item_linkfolder.tga" /> - <texture name="inv_item_notecard.tga" /> - <texture name="inv_item_object.tga" /> - <texture name="inv_item_object_multi.tga" /> - <texture name="inv_item_pants.tga" /> - <texture name="inv_item_script.tga" /> - <texture name="inv_item_shape.tga" /> - <texture name="inv_item_shirt.tga" /> - <texture name="inv_item_shoes.tga" /> - <texture name="inv_item_skirt.tga" /> - <texture name="inv_item_snapshot.tga" /> - <texture name="inv_item_socks.tga" /> - <texture name="inv_item_sound.tga" /> - <texture name="inv_item_texture.tga" /> - <texture name="inv_item_underpants.tga" /> - <texture name="inv_item_undershirt.tga" /> - <texture name="lag_status_critical.tga" /> <texture name="lag_status_good.tga" /> <texture name="lag_status_warning.tga" /> @@ -679,37 +625,6 @@ <texture name="notify_next.png" preload="true" /> <texture name="notify_box_icon.tga" /> - <texture name="object_cone.tga" /> - <texture name="object_cone_active.tga" /> - <texture name="object_cube.tga" /> - <texture name="object_cube_active.tga" /> - <texture name="object_cylinder.tga" /> - <texture name="object_cylinder_active.tga" /> - <texture name="object_grass.tga" /> - <texture name="object_grass_active.tga" /> - <texture name="object_hemi_cone.tga" /> - <texture name="object_hemi_cone_active.tga" /> - <texture name="object_hemi_cylinder.tga" /> - <texture name="object_hemi_cylinder_active.tga" /> - <texture name="object_hemi_sphere.tga" /> - <texture name="object_hemi_sphere_active.tga" /> - <texture name="object_prism.tga" /> - <texture name="object_prism_active.tga" /> - <texture name="object_pyramid.tga" /> - <texture name="object_pyramid_active.tga" /> - <texture name="object_ring.tga" /> - <texture name="object_ring_active.tga" /> - <texture name="object_sphere.tga" /> - <texture name="object_sphere_active.tga" /> - <texture name="object_tetrahedron.tga" /> - <texture name="object_tetrahedron_active.tga" /> - <texture name="object_torus.tga" /> - <texture name="object_torus_active.tga" /> - <texture name="object_tree.tga" /> - <texture name="object_tree_active.tga" /> - <texture name="object_tube.tga" /> - <texture name="object_tube_active.tga" /> - <texture name="pixiesmall.j2c" use_mips="true" /> <texture name="script_error.j2c" use_mips="true" /> <texture name="silhouette.j2c" use_mips="true" /> @@ -725,11 +640,6 @@ <texture name="status_no_push.tga" /> <texture name="status_no_scripts.tga" /> - <texture name="tool_dozer.tga" /> - <texture name="tool_dozer_active.tga" /> - <texture name="tool_zoom.tga" /> - <texture name="tool_zoom_active.tga" /> - <texture name="icn_active-speakers-dot-lvl0.tga" /> <texture name="icn_active-speakers-dot-lvl1.tga" /> <texture name="icn_active-speakers-dot-lvl2.tga" /> diff --git a/indra/newview/skins/default/xui/en/floater_about_land.xml b/indra/newview/skins/default/xui/en/floater_about_land.xml index e13aa610e535d118259e86ce2d530297267e765b..033e18a1395587b822517af3097ac67b70162c2d 100644 --- a/indra/newview/skins/default/xui/en/floater_about_land.xml +++ b/indra/newview/skins/default/xui/en/floater_about_land.xml @@ -1492,16 +1492,6 @@ Only large parcels can be listed in search. name="item12" value="other" /> </combo_box> - <button - follows="left|top" - height="18" - label="?" - label_selected="?" - layout="topleft" - left_pad="15" - name="?" - top_delta="0" - width="18" /> <check_box height="16" label="Mature Content" @@ -1916,16 +1906,6 @@ Only large parcels can be listed in search. name="check sound local" top_delta="0" width="292" /> - <button - follows="left|top" - height="18" - label="?" - label_selected="?" - layout="topleft" - left_delta="292" - name="?" - top_delta="-2" - width="18" /> <text type="string" length="1" diff --git a/indra/newview/skins/default/xui/en/floater_avatar_picker.xml b/indra/newview/skins/default/xui/en/floater_avatar_picker.xml index 3f4f8b197f6438c0dcd1201bf5239759e08fb29f..1fd9b9531873f45bf164b84663a3fa1a24cc3cb0 100644 --- a/indra/newview/skins/default/xui/en/floater_avatar_picker.xml +++ b/indra/newview/skins/default/xui/en/floater_avatar_picker.xml @@ -104,9 +104,9 @@ layout="topleft" left="10" name="InstructSelectFriend" - top="15" + top="5" width="200"> - Select a friend(s): + Select a person: </text> <button follows="top|right" diff --git a/indra/newview/skins/default/xui/en/floater_day_cycle_options.xml b/indra/newview/skins/default/xui/en/floater_day_cycle_options.xml index b8fa104352a362b0b196bd12a1f88c003fb80ee9..b0d636445d5bd40245a94895bf74d6f3f998eb21 100644 --- a/indra/newview/skins/default/xui/en/floater_day_cycle_options.xml +++ b/indra/newview/skins/default/xui/en/floater_day_cycle_options.xml @@ -28,16 +28,6 @@ name="Day Cycle" top="0" width="642"> - <button - follows="left|top" - font="SansSerifSmall" - height="15" - label="?" - layout="topleft" - left="612" - name="WLDayCycleHelp" - top="3" - width="18" /> <multi_slider can_edit_text="true" control_name="WLTimeSlider" diff --git a/indra/newview/skins/default/xui/en/floater_im.xml b/indra/newview/skins/default/xui/en/floater_im.xml index b6cf05aefcee636379de9d58b38d2e8e2fa38e16..92a611175981dab7a66b5d291067330aba897db9 100644 --- a/indra/newview/skins/default/xui/en/floater_im.xml +++ b/indra/newview/skins/default/xui/en/floater_im.xml @@ -1,5 +1,6 @@ <?xml version="1.0" encoding="utf-8" standalone="yes" ?> <multi_floater + legacy_header_height="18" can_resize="true" follows="left|bottom" height="422" diff --git a/indra/newview/skins/default/xui/en/floater_im_session.xml b/indra/newview/skins/default/xui/en/floater_im_session.xml index d9c3ff77d951c090f7b4b6e3d5c2e53a3e3477e6..26d2f4e497f707eb7cc6dd9647a4a9fe664d002f 100644 --- a/indra/newview/skins/default/xui/en/floater_im_session.xml +++ b/indra/newview/skins/default/xui/en/floater_im_session.xml @@ -3,7 +3,7 @@ legacy_header_height="18" background_visible="true" follows="left|top|right|bottom" - height="250" + height="270" layout="topleft" left="0" name="panel_im" @@ -17,7 +17,7 @@ min_width="200" min_height="150"> <layout_stack follows="left|top|right|bottom" - height="235" + height="255" width="365" layout="topleft" orientation="horizontal" @@ -29,11 +29,11 @@ layout="topleft" top_delta="-3" width="146" - height="225" + height="255" follows="left" label="IM Control Panel" user_resize="false" /> - <layout_panel height="235" + <layout_panel height="255" width="200" left_delta="146" top="0" @@ -56,7 +56,7 @@ length="1" follows="left|top|right|bottom" font="SansSerif" - height="185" + height="205" layout="topleft" name="chat_history" parse_highlights="true" diff --git a/indra/newview/skins/default/xui/en/floater_lagmeter.xml b/indra/newview/skins/default/xui/en/floater_lagmeter.xml index d98fdc5118be58d3176bcdc6a2c0c3397a5ffb4a..309475098f31f03a42599edceeeab94fb5d96977 100644 --- a/indra/newview/skins/default/xui/en/floater_lagmeter.xml +++ b/indra/newview/skins/default/xui/en/floater_lagmeter.xml @@ -323,15 +323,6 @@ left="40" name="server_lag_cause" right="-32" /> - <!--button - bottom="145" - follows="left|top" - height="18" - label="?" - layout="topleft" - name="server_help" - right="-10" - width="18" /--> <button follows="left|top" height="20" diff --git a/indra/newview/skins/default/xui/en/floater_nearby_chat.xml b/indra/newview/skins/default/xui/en/floater_nearby_chat.xml index 65dd4e74ff5038e3b514a8fb60b980bb093ffd6e..e7c5bf85857f34e08b37a4b02f176e6b0f2cc6fd 100644 --- a/indra/newview/skins/default/xui/en/floater_nearby_chat.xml +++ b/indra/newview/skins/default/xui/en/floater_nearby_chat.xml @@ -14,6 +14,7 @@ help_topic="nearby_chat" save_rect="true" title="Nearby Chat" + save_dock_state="true" save_visibility="true" single_instance="true" width="320"> diff --git a/indra/newview/skins/default/xui/en/floater_perm_prefs.xml b/indra/newview/skins/default/xui/en/floater_perm_prefs.xml index eb0c22b9c493e92725cfdace4751950093a7abb4..0967706cc29c4014d6b2fb32582c01ccfb72ea26 100644 --- a/indra/newview/skins/default/xui/en/floater_perm_prefs.xml +++ b/indra/newview/skins/default/xui/en/floater_perm_prefs.xml @@ -17,20 +17,6 @@ name="permissions" top="20" width="315"> - <button - follows="left" - height="18" - label="?" - label_selected="?" - layout="topleft" - left="260" - name="help" - top="7" - width="22"> - <button.commit_callback - function="Notification.Show" - parameter="ClickUploadHelpPermissions" /> - </button> <check_box control_name="ShareWithGroup" height="16" diff --git a/indra/newview/skins/default/xui/en/floater_preview_notecard.xml b/indra/newview/skins/default/xui/en/floater_preview_notecard.xml index 3797055054863f87ed92372093f4c0851efee938..b44de8e178203c0659e4fae7a6703473324ed36b 100644 --- a/indra/newview/skins/default/xui/en/floater_preview_notecard.xml +++ b/indra/newview/skins/default/xui/en/floater_preview_notecard.xml @@ -75,7 +75,7 @@ left="4" max_length="65536" name="Notecard Editor" - allow_html="true" + allow_html="false" handle_edit_keys_directly="true" tab_group="1" top="46" diff --git a/indra/newview/skins/default/xui/en/floater_tools.xml b/indra/newview/skins/default/xui/en/floater_tools.xml index ca125383023c306d1f6d3ce9c53944cda97aa6dd..f566dbdb75f41e2b74a3497fe882613845ba4c81 100644 --- a/indra/newview/skins/default/xui/en/floater_tools.xml +++ b/indra/newview/skins/default/xui/en/floater_tools.xml @@ -2868,15 +2868,6 @@ tool_tip="Colorize the parcels according to the type of owner: Green = Your land Aqua = Your group's land Red = Owned by others Yellow = For sale Purple = For auction Grey = Public" top_pad="8" width="205" /> - <!--TODO: HOOK UP TO HELP VIEWER--> - <!-- <button - image_overlay="Arrow_Right_Off" - picture_style="true" - left_pad="5" - name="button show owners help" - tool_tip="See an explanation of colors" - width="26" - height="22" />--> <text type="string" length="1" diff --git a/indra/newview/skins/default/xui/en/floater_water.xml b/indra/newview/skins/default/xui/en/floater_water.xml index af3606fd1c01819976d494f86ce6561ca5a94e9e..012b69c3e3f187bbc133af8ad2b227e98f2d08bc 100644 --- a/indra/newview/skins/default/xui/en/floater_water.xml +++ b/indra/newview/skins/default/xui/en/floater_water.xml @@ -95,16 +95,6 @@ width="355"> Water Fog Color </text> - <button - follows="left|top" - font="SansSerifSmall" - height="18" - label="?" - layout="topleft" - left_delta="150" - name="WaterFogColorHelp" - top_delta="-2" - width="18" /> <color_swatch border_color="0.45098 0.517647 0.607843 1" can_apply_immediately="true" @@ -130,16 +120,6 @@ width="355"> Fog Density Exponent </text> - <button - follows="left|top" - font="SansSerifSmall" - height="18" - label="?" - layout="topleft" - left_delta="150" - name="WaterFogDensityHelp" - top_delta="-2" - width="18" /> <slider control_name="WaterFogDensity" decimal_digits="1" @@ -165,16 +145,6 @@ width="355"> Underwater Fog Modifier </text> - <button - follows="left|top" - font="SansSerifSmall" - height="18" - label="?" - layout="topleft" - left_delta="150" - name="WaterUnderWaterFogModHelp" - top_delta="-2" - width="18" /> <slider decimal_digits="2" follows="left" @@ -200,16 +170,6 @@ width="355"> Reflection Wavelet Scale </text> - <button - follows="left|top" - font="SansSerifSmall" - height="18" - label="?" - layout="topleft" - left_delta="150" - name="WaterNormalScaleHelp" - top_delta="-2" - width="18" /> <text type="string" length="1" @@ -298,16 +258,6 @@ width="355"> Fresnel Scale </text> - <button - follows="left|top" - font="SansSerifSmall" - height="18" - label="?" - layout="topleft" - left_delta="150" - name="WaterFresnelScaleHelp" - top_delta="-2" - width="18" /> <slider control_name="WaterFresnelScale" decimal_digits="2" @@ -333,16 +283,6 @@ width="355"> Fresnel Offset </text> - <button - follows="left|top" - font="SansSerifSmall" - height="18" - label="?" - layout="topleft" - left_delta="150" - name="WaterFresnelOffsetHelp" - top_delta="-2" - width="18" /> <slider control_name="WaterFresnelOffset" decimal_digits="2" @@ -368,16 +308,6 @@ width="355"> Refract Scale Above </text> - <button - follows="left|top" - font="SansSerifSmall" - height="18" - label="?" - layout="topleft" - left_delta="150" - name="WaterScaleAboveHelp" - top_delta="-2" - width="18" /> <slider control_name="WaterScaleAbove" decimal_digits="2" @@ -403,16 +333,6 @@ width="355"> Refract Scale Below </text> - <button - follows="left|top" - font="SansSerifSmall" - height="18" - label="?" - layout="topleft" - left_delta="150" - name="WaterScaleBelowHelp" - top_delta="-2" - width="18" /> <slider control_name="WaterScaleBelow" decimal_digits="2" @@ -438,16 +358,6 @@ width="355"> Blur Multiplier </text> - <button - follows="left|top" - font="SansSerifSmall" - height="18" - label="?" - layout="topleft" - left_delta="150" - name="WaterBlurMultiplierHelp" - top_delta="-2" - width="18" /> <slider control_name="WaterBlurMult" follows="left" @@ -486,16 +396,6 @@ width="355"> Big Wave Direction </text> - <button - follows="left|top" - font="SansSerifSmall" - height="18" - label="?" - layout="topleft" - left_delta="145" - name="WaterWave1Help" - top_delta="-2" - width="18" /> <text type="string" length="1" @@ -563,16 +463,6 @@ width="355"> Little Wave Direction </text> - <button - follows="left|top" - font="SansSerifSmall" - height="18" - label="?" - layout="topleft" - left_delta="145" - name="WaterWave2Help" - top_delta="-2" - width="18" /> <text type="string" length="1" @@ -640,16 +530,6 @@ width="355"> Normal Map </text> - <button - follows="left|top" - font="SansSerifSmall" - height="18" - label="?" - layout="topleft" - left_delta="125" - name="WaterNormalMapHelp" - top_delta="-2" - width="18" /> <texture_picker height="143" layout="topleft" diff --git a/indra/newview/skins/default/xui/en/floater_windlight_options.xml b/indra/newview/skins/default/xui/en/floater_windlight_options.xml index 2c09e82f087577e85ef18dfd8ee6574376fc90d0..fd905d7a14ef8324557b54646fc83be0922eb30c 100644 --- a/indra/newview/skins/default/xui/en/floater_windlight_options.xml +++ b/indra/newview/skins/default/xui/en/floater_windlight_options.xml @@ -104,16 +104,6 @@ width="355"> Blue Horizon </text> - <button - follows="left|top" - font="SansSerifSmall" - height="18" - label="?" - layout="topleft" - left_delta="150" - name="WLBlueHorizonHelp" - top_delta="-2" - width="18" /> <text type="string" length="1" @@ -227,16 +217,6 @@ width="355"> Haze Horizon </text> - <button - follows="left|top" - font="SansSerifSmall" - height="18" - label="?" - layout="topleft" - left_delta="150" - name="WLHazeHorizonHelp" - top_delta="-2" - width="18" /> <slider control_name="WLHazeHorizon" decimal_digits="2" @@ -262,16 +242,6 @@ width="355"> Blue Density </text> - <button - follows="left|top" - font="SansSerifSmall" - height="18" - label="?" - layout="topleft" - left_delta="150" - name="WLBlueDensityHelp" - top_delta="-2" - width="18" /> <text type="string" length="1" @@ -385,16 +355,6 @@ width="355"> Haze Density </text> - <button - follows="left|top" - font="SansSerifSmall" - height="18" - label="?" - layout="topleft" - left_delta="150" - name="WLHazeDensityHelp" - top_delta="-2" - width="18" /> <slider control_name="WLHazeDensity" decimal_digits="2" @@ -421,16 +381,6 @@ width="355"> Density Multiplier </text> - <button - follows="left|top" - font="SansSerifSmall" - height="18" - label="?" - layout="topleft" - left_delta="150" - name="WLDensityMultHelp" - top_delta="-2" - width="18" /> <slider control_name="WLDensityMult" decimal_digits="2" @@ -457,16 +407,6 @@ width="355"> Distance Multiplier </text> - <button - follows="left|top" - font="SansSerifSmall" - height="18" - label="?" - layout="topleft" - left_delta="150" - name="WLDistanceMultHelp" - top_delta="-2" - width="18" /> <slider control_name="WLDistancMult" decimal_digits="1" @@ -492,16 +432,6 @@ width="355"> Max Altitude </text> - <button - follows="left|top" - font="SansSerifSmall" - height="18" - label="?" - layout="topleft" - left_delta="150" - name="WLMaxAltitudeHelp" - top_delta="-2" - width="18" /> <slider control_name="WLMaxAltitude" decimal_digits="0" @@ -540,16 +470,6 @@ width="355"> Sun/Moon Color </text> - <button - follows="left|top" - font="SansSerifSmall" - height="18" - label="?" - layout="topleft" - left_delta="150" - name="WLSunlightColorHelp" - top_delta="-2" - width="18" /> <text type="string" length="1" @@ -663,16 +583,6 @@ width="355"> Sun/Moon Position </text> - <button - follows="left|top" - font="SansSerifSmall" - height="18" - label="?" - layout="topleft" - left_delta="150" - name="WLTimeOfDayHelp" - top_delta="-2" - width="18" /> <icon height="20" image_name="icon_diurnal.tga" @@ -705,16 +615,6 @@ width="355"> Ambient </text> - <button - follows="left|top" - font="SansSerifSmall" - height="18" - label="?" - layout="topleft" - left_delta="150" - name="WLAmbientHelp" - top_delta="-2" - width="18" /> <text type="string" length="1" @@ -828,16 +728,6 @@ width="355"> East Angle </text> - <button - follows="left|top" - font="SansSerifSmall" - height="18" - label="?" - layout="topleft" - left_delta="150" - name="WLEastAngleHelp" - top_delta="-2" - width="18" /> <slider control_name="WLEastAngle" decimal_digits="2" @@ -863,16 +753,6 @@ width="355"> Sun Glow </text> - <button - follows="left|top" - font="SansSerifSmall" - height="18" - label="?" - layout="topleft" - left_delta="150" - name="WLSunGlowHelp" - top_delta="-2" - width="18" /> <slider control_name="WLGlowB" decimal_digits="2" @@ -915,16 +795,6 @@ width="200"> Scene Gamma </text> - <button - follows="left|top" - font="SansSerifSmall" - height="18" - label="?" - layout="topleft" - left_delta="150" - name="WLSceneGammaHelp" - top_delta="-2" - width="18" /> <slider control_name="WLGamma" decimal_digits="2" @@ -951,16 +821,6 @@ width="355"> Star Brightness </text> - <button - follows="left|top" - font="SansSerifSmall" - height="18" - label="?" - layout="topleft" - left_delta="150" - name="WLStarBrightnessHelp" - top_delta="-2" - width="18" /> <slider control_name="WLStarAlpha" decimal_digits="2" @@ -1000,16 +860,6 @@ width="355"> Cloud Color </text> - <button - follows="left|top" - font="SansSerifSmall" - height="18" - label="?" - layout="topleft" - left_delta="150" - name="WLCloudColorHelp" - top_delta="-2" - width="18" /> <text type="string" length="1" @@ -1123,16 +973,6 @@ width="355"> Cloud XY/Density </text> - <button - follows="left|top" - font="SansSerifSmall" - height="18" - label="?" - layout="topleft" - left_delta="150" - name="WLCloudDensityHelp" - top_delta="-2" - width="18" /> <text type="string" length="1" @@ -1221,16 +1061,6 @@ width="355"> Cloud Coverage </text> - <button - follows="left|top" - font="SansSerifSmall" - height="18" - label="?" - layout="topleft" - left_delta="150" - name="WLCloudCoverageHelp" - top_delta="-2" - width="18" /> <slider control_name="WLCloudCoverage" decimal_digits="2" @@ -1256,16 +1086,6 @@ width="355"> Cloud Scale </text> - <button - follows="left|top" - font="SansSerifSmall" - height="18" - label="?" - layout="topleft" - left_delta="150" - name="WLCloudScaleHelp" - top_delta="-2" - width="18" /> <slider control_name="WLCloudScale" decimal_digits="2" @@ -1292,16 +1112,6 @@ width="355"> Cloud Detail (XY/Density) </text> - <button - follows="left|top" - font="SansSerifSmall" - height="18" - label="?" - layout="topleft" - left_delta="150" - name="WLCloudDetailHelp" - top_delta="-2" - width="18" /> <text type="string" length="1" @@ -1390,16 +1200,6 @@ width="355"> Cloud Scroll X </text> - <button - follows="left|top" - font="SansSerifSmall" - height="18" - label="?" - layout="topleft" - left_delta="125" - name="WLCloudScrollXHelp" - top_delta="-2" - width="18" /> <check_box control_name="WLCloudLockX" follows="left" @@ -1436,16 +1236,6 @@ width="355"> Cloud Scroll Y </text> - <button - follows="left|top" - font="SansSerifSmall" - height="18" - label="?" - layout="topleft" - left_delta="125" - name="WLCloudScrollYHelp" - top_delta="-2" - width="18" /> <check_box control_name="WLCloudLockY" follows="left" @@ -1479,16 +1269,6 @@ name="DrawClassicClouds" top="104" width="200" /> - <button - follows="left|top" - font="SansSerifSmall" - height="18" - label="?" - layout="topleft" - left="608" - name="WLClassicCloudsHelp" - top="84" - width="18" /> </panel> </tab_container> </floater> diff --git a/indra/newview/skins/default/xui/en/menu_inspect_avatar_gear.xml b/indra/newview/skins/default/xui/en/menu_inspect_avatar_gear.xml index edff1a093a4e827a71a448aec67be9d0f8fa3876..6049476a43f6360558548af69b1ffbb43d901de6 100644 --- a/indra/newview/skins/default/xui/en/menu_inspect_avatar_gear.xml +++ b/indra/newview/skins/default/xui/en/menu_inspect_avatar_gear.xml @@ -68,7 +68,7 @@ <menu_item_call.on_click function="InspectAvatar.Freeze"/> <menu_item_call.on_visible - function="IsGodCustomerService"/> + function="InspectAvatar.VisibleFreezeEject"/> </menu_item_call> <menu_item_call label="Eject" @@ -76,13 +76,13 @@ <menu_item_call.on_click function="InspectAvatar.Eject"/> <menu_item_call.on_visible - function="IsGodCustomerService"/> + function="InspectAvatar.VisibleFreezeEject"/> </menu_item_call> <menu_item_call label="Debug" name="debug"> <menu_item_call.on_click - function="InspectAvatar.Debug"/> + function="Avatar.Debug"/> <menu_item_call.on_visible function="IsGodCustomerService"/> </menu_item_call> diff --git a/indra/newview/skins/default/xui/en/notifications.xml b/indra/newview/skins/default/xui/en/notifications.xml index d51cb1309310ec5587154537cd27d0f5f8799744..babed28f10eaac707b0fd7d5286631dd2f3b9dbe 100644 --- a/indra/newview/skins/default/xui/en/notifications.xml +++ b/indra/newview/skins/default/xui/en/notifications.xml @@ -370,99 +370,12 @@ Add this Ability to '[ROLE_NAME]'? </notification> <notification - icon="alertmodal.tga" - name="ClickPublishHelpLand" - type="alertmodal"> -Selecting the "Publish in Search" -Checking this box will show: -- this parcel in search results -- this parcel's public objects -- this parcel in web search - </notification> - - <notification - icon="alertmodal.tga" - name="ClickSoundHelpLand" - type="alertmodal">Media and Music can only be experienced within the parcel. Sound and Voice options can be restricted to the parcel or will be heard by residents outside the parcel depending on their maturity Rating. Go to Knowledge Base to learn more about how to set these options? - <url option="0" name="url"> - https://support.secondlife.com/ics/support/default.asp?deptID=4417&task=knowledge&questionID=5046 - </url> - <usetemplate - name="okcancelbuttons" - yestext="Go to Knowledge Base" - notext="Close" /> - </notification> - - <notification - icon="alertmodal.tga" - name="ClickSearchHelpAll" - type="alertmodal"> -Search results are organized based on the tab you are in, your maturity Rating, the category chosen, and other factors. For more details, please see the Knowledge Base. - <url option="0" name="url"> - https://support.secondlife.com/ics/support/default.asp?deptID=4417&task=knowledge&questionID=4722 - </url> - <usetemplate - name="okcancelbuttons" - yestext="Go to Knowledge Base" - notext="Close" /> - </notification> - - <notification - icon="alertmodal.tga" - name="ClickPublishHelpLandDisabled" - type="alertmodal"> -You can't make this parcel show in search because it is located in a region that forbids this. - </notification> - - <notification - icon="alertmodal.tga" - name="ClickPublishHelpAvatar" - type="alertmodal"> -Selecting "Show in Search" will show: -- my profile in search results -- a link to my profile in public group pages - </notification> - - <notification - icon="alertmodal.tga" - name="ClickPartnerHelpAvatar" - type="alertmodal"> -You can propose to another Resident or dissolve an existing partnership through the [SECOND_LIFE] website. - -Go to the [SECOND_LIFE] web site for more information on partnering? - <usetemplate - name="okcancelbuttons" - notext="Cancel" - yestext="Go to Page"/> - </notification> - - <notification - icon="alertmodal.tga" - name="ClickUploadHelpPermissions" - type="alertmodal"> -Your default permissions may not work in older regions. - </notification> - -<notification icon="alertmodal.tga" name="ClickUnimplemented" type="alertmodal"> Sorry, not implemented yet. </notification> - <notification - icon="alertmodal.tga" - name="ClickWebProfileHelpAvatar" - type="alertmodal"> -If this Resident has set a web profile URL then you can: - * Click 'Load' to see the page in this Web tab. - * Click Load > 'In external browser' to view the page in your default web browser. - * Click Load > 'Home URL' to return to this Resident's web profile if you've navigated away. - -When viewing your own profile, you can enter any URL as your web profile and click OK to set it. -Other residents can visit the URL you set when they look at your profile. - </notification> - <notification icon="alertmodal.tga" name="JoinGroupCanAfford" @@ -1957,21 +1870,6 @@ Join land? yestext="OK"/> </notification> - <notification - icon="alertmodal.tga" - name="ShowOwnersHelp" - type="alertmodal"> -Show owners: -Color parcels to show the owner type. - -Green = Your land -Aqua = Your Group's land -Red = Owned by others -Yellow = For sale -Purple = For auction -Grey = Public - </notification> - <notification icon="alertmodal.tga" name="ConfirmNotecardSave" @@ -2845,18 +2743,6 @@ Visit the [SECOND_LIFE] Public Issue Tracker, where you can report bugs and othe yestext="Go to page"/> </notification> - <notification - icon="alertmodal.tga" - name="WebLaunchPublicIssueHelp" - type="alertmodal"> -Visit the [SECOND_LIFE] Wiki for info on how to use the Public Issue Tracker. - <usetemplate - ignoretext="Launch my browser to view instructions for the Public Issue Tracker" - name="okcancelignore" - notext="Cancel" - yestext="Go to page"/> - </notification> - <notification icon="alertmodal.tga" name="WebLaunchSupportWiki" @@ -3634,669 +3520,272 @@ Type a short announcement which will be sent to everyone in this region. <notification icon="alertmodal.tga" - label="Block Terraform" - name="HelpRegionBlockTerraform" + label="Changed Region Maturity" + name="RegionMaturityChange" type="alertmodal"> -If this box is checked, land owners will not be able to terraform their land regardless of the per-parcel 'Edit Terrain' setting. - -Default: off +The maturity rating for this region has been updated. +It may take some time for the change to be reflected on the map. </notification> <notification icon="alertmodal.tga" - label="Block Fly" - name="HelpRegionBlockFly" + label="Voice Version Mismatch" + name="VoiceVersionMismatch" type="alertmodal"> -If this box is checked, people will not be able to fly in this region regardless of the per-parcel 'Fly' setting. - -Default: off +This version of [APP_NAME] is not compatible with the Voice Chat feature in this region. In order for Voice Chat to function correctly you will need to update [APP_NAME]. </notification> <notification icon="alertmodal.tga" - label="Bulk Change Content Permissions" - name="HelpBulkPermission" + label="Can't Buy Objects" + name="BuyObjectOneOwner" type="alertmodal"> -The Bulk Permissions tool helps you to quickly change the permissions on multiple items in the contents of the selected object(s). However, please note that you are only setting permissions on the items in the Contents of the selected objects -- not permissions on the container object(s) themselves. - -Also note, the permissions are not applied to the nested contents of any of the contained items. Your request only operates on items exactly one level deep. - -You can selectively choose which types of items to modify by using the checklist under 'Content Types' here. Snapshots are included when you select Textures. - -* This tool will only succeed at changing permissions on items you are allowed to change. -* You cannot grant any Next owner permissions which you do not already have. -* The Next owner permissions are merely requests. If any item cannot take all of the new permissions, none of its permissions will change. - -When you are ready to change the permissions in bulk, click 'Apply' and wait for the results to display. - -If you close the Bulk Permissions window while permissions are being changed, it will halt the operation. +Cannot buy objects from different owners at the same time. +Please select only one object and try again. </notification> <notification icon="alertmodal.tga" - label="Allow Damage" - name="HelpRegionAllowDamage" + label="Can't Buy Contents" + name="BuyContentsOneOnly" type="alertmodal"> -If this box is checked, the health system across all parcels regardless of individual parcel settings. If this box is left unchecked, individual parcel owners will still be able to activate the health system on their parcels. - -Default: off +Unable to buy the contents of more than one object at a time. +Please select only one object and try again. </notification> <notification icon="alertmodal.tga" - label="Agent Limit" - name="HelpRegionAgentLimit" + label="Can't Buy Contents" + name="BuyContentsOneOwner" type="alertmodal"> -Sets the maximum number of avatars allowed in this region. -Performance may vary depending on the number avatars present. - -Default: 40 +Cannot buy objects from different owners at the same time. +Please select only one object and try again. </notification> <notification icon="alertmodal.tga" - label="Object Bonus" - name="HelpRegionObjectBonus" + name="BuyOriginal" type="alertmodal"> -The Object Bonus is a multiplier for primitives allowed on any given parcel. The range allowed is 1 to 10. Set at '1', each 512m² parcel is allowed 117 objects. Set at '2', each 512m² parcel is allowed 234, or twice as many, and so on. The max number of objects allowed per region remains 15,000 no matter what the Object Bonus is. Once set, be aware that lowering the Object Bonus may cause objects to be returned or deleted. - -Default: 1.0 +Buy original object from [OWNER] for L$[PRICE]? +You will become the owner of this object. +You will be able to: + Modify: [MODIFYPERM] + Copy: [COPYPERM] + Resell or Give Away: [RESELLPERM] + <usetemplate + name="okcancelbuttons" + notext="Cancel" + yestext="OK"/> </notification> <notification icon="alertmodal.tga" - label="Maturity" - name="HelpRegionMaturity" + name="BuyOriginalNoOwner" type="alertmodal"> -Sets the maturity Rating of the Region, as shown in the menu bar at the top of any Resident's viewer, and in tooltips on the World Map when the cursor hovers over this Region. This setting also affects access to this Region and search results. Other Residents may only enter Regions or view search results with the same maturity Ratings they have chosen in their preferences. - -It may take some time for this change to be reflected on the map. +Buy original object for L$[PRICE]? +You will become the owner of this object. +You will be able to: + Modify: [MODIFYPERM] + Copy: [COPYPERM] + Resell or Give Away: [RESELLPERM] + <usetemplate + name="okcancelbuttons" + notext="Cancel" + yestext="OK"/> </notification> <notification icon="alertmodal.tga" - label="Restrict Pushing" - name="HelpRegionRestrictPushObject" + name="BuyCopy" type="alertmodal"> -This checkbox sets the full region to restricted push permissions. -When enabled, Residents may only be pushed by themselves or by the parcel's owner. -(Push refers to the llPushObject() LSL function.) - -Default: Off +Buy a copy from [OWNER] for L$[PRICE]? +The object will be copied to your inventory. +You will be able to: + Modify: [MODIFYPERM] + Copy: [COPYPERM] + Resell or Give Away: [RESELLPERM] + <usetemplate + name="okcancelbuttons" + notext="Cancel" + yestext="OK"/> </notification> <notification icon="alertmodal.tga" - label="Parcel Join/Subdivide" - name="HelpParcelChanges" + name="BuyCopyNoOwner" type="alertmodal"> -This checkbox sets whether or not parcels not owned by the estate owner can be joined or subdivided. -If this option is unchecked: - * Only estate owners or managers can join or subdivide parcels. - * They may only join or subdivide parcels belonging to the owner, or to a group where they have the appropriate group powers. -If this option is checked: - * All parcel owners can join or subdivide the parcels they own. - * For group owned parcels, those with appropriate group powers may join or subdivide parcels. - -Default: Checked +Buy a copy for L$[PRICE]? +The object will be copied to your inventory. +You will be able to: + Modify: [MODIFYPERM] + Copy: [COPYPERM] + Resell or Give Away: [RESELLPERM] + <usetemplate + name="okcancelbuttons" + notext="Cancel" + yestext="OK"/> </notification> <notification icon="alertmodal.tga" - label="Do Not Show In Search" - name="HelpRegionSearch" + name="BuyContents" type="alertmodal"> -Checking this box will block parcel owners from listing their parcels in search. - -Default: Off +Buy contents from [OWNER] for L$[PRICE]? +They will be copied to your inventory. + <usetemplate + name="okcancelbuttons" + notext="Cancel" + yestext="OK"/> </notification> <notification icon="alertmodal.tga" - label="Changed Region Maturity" - name="RegionMaturityChange" + name="BuyContentsNoOwner" type="alertmodal"> -The maturity rating for this region has been updated. -It may take some time for the change to be reflected on the map. +Buy contents for L$[PRICE]? +They will be copied to your inventory. + <usetemplate + name="okcancelbuttons" + notext="Cancel" + yestext="OK"/> </notification> <notification icon="alertmodal.tga" - label="Land Resale" - name="HelpRegionLandResell" + name="ConfirmPurchase" type="alertmodal"> -Estate owners and managers can sell any land owned by the estate owner. -If this option is left unchecked, buyers cannot resell their land in this region. -If this option is checked, buyers can resell their land in this region. +This transaction will: +[ACTION] -Default: Disallow +Are you sure you want to proceed with this purchase? + <usetemplate + name="okcancelbuttons" + notext="Cancel" + yestext="OK"/> </notification> <notification icon="alertmodal.tga" - label="Disable Scripts" - name="HelpRegionDisableScripts" - type="alertmodal"> -When sim performance is poor, a script may be to blame. Open the Statistics Bar (Ctrl+Shift+1). Look at the Simulator Physics FPS. -If it is lower than 45, open the Time panel located at the bottom of the Stats Bar. If Script Time reads 25 ms or higher, click the Get Top Scripts button. You will be given the name and location of scripts that may be causing poor performance. + name="ConfirmPurchasePassword" + type="password"> +This transaction will: +[ACTION] -Checking the Disable Scripts box and then pressing the Apply button will temporarily disable all scripts in this region. You may need to do this in order to travel to the location of a noted 'top script'. Once you have arrived at the location, investigate the script to determine if it is causing the problem. You may want to contact the owner of the script or delete or return the object. -Uncheck the Disable Script box and then Apply to reactivate the scripts in the region. +Are you sure you want to proceed with this purchase? +Please re-enter your password and click OK. + <form name="form"> + <input + name="message" + type="password"/> + <button + default="true" + index="0" + name="ConfirmPurchase" + text="OK"/> + <button + index="1" + name="Cancel" + text="Cancel"/> + </form> + </notification> -Default: off + <notification + icon="alert.tga" + name="SetPickLocation" + type="alert"> +Note: +You have updated the location of this pick but the other details will retain their original values. + <usetemplate + name="okbutton" + yestext="OK"/> </notification> <notification icon="alertmodal.tga" - label="Disable Collisions" - name="HelpRegionDisableCollisions" + name="MoveInventoryFromObject" type="alertmodal"> -When sim performance is poor, physical objects may be to blame. -Open the Statistics Bar (Ctrl+Shift+1). Look at the Simulator Physics FPS. If it is lower than 45, open the Time panel located at the bottom of the Stats Bar. If Sim Time (Physics) reads 20 ms or higher, click the Get Top Colliders button. -You will be given the name and location of physical objects that may be causing poor performance. - -Checking the Disable Collisions box and then pressing the Apply button will temporarily disable object-object collisions. You may need to do this in order to travel to the location of a noted 'top collider'. Once you have arrived at the location, investigate the object - is it constantly colliding with other objects? You may want to contact the owner of the object or delete or return the object. -Uncheck the Disable Collisions box and then Apply to reactivate collisions in the region. +You have selected 'no copy' inventory items. +These items will be moved to your inventory, not copied. -Default: off +Move the inventory item(s)? + <usetemplate + ignoretext="Warn me before I move 'no-copy' items from an object" + name="okcancelignore" + notext="Cancel" + yestext="OK"/> </notification> <notification icon="alertmodal.tga" - label="Disable Physics" - name="HelpRegionDisablePhysics" + name="MoveInventoryFromScriptedObject" type="alertmodal"> -Disable Physics is similar to Disable Collisions, except all physics simulation is disabled. This means that not only will objects stop colliding, but avatars will be unable to move. - -This should only be used when Disable Collisions does not give back enough performance to the region to investigate a physics problem or Top Collider. +You have selected 'no copy' inventory items. These items will be moved to your inventory, not copied. +Because this object is scripted, moving these items to your inventory may cause the script to malfunction. -Be sure to re-enable physics when you are done, or avatars will continue to be unable to move. +Move the inventory item(s)? + <usetemplate + ignoretext="Warn me before I move 'no-copy' items which might break a scripted object" + name="okcancelignore" + notext="Cancel" + yestext="OK"/> + </notification> -Default: off + <notification + icon="alert.tga" + name="ClickActionNotPayable" + type="alert"> +Warning: The 'Pay object' click action has been set, but it will only work if a script is added with a money() event. + <form name="form"> + <ignore name="ignore" + text="I set the action 'Pay object' when building an object without a money() script"/> + </form> </notification> <notification icon="alertmodal.tga" - label="Top Colliders" - name="HelpRegionTopColliders" + name="OpenObjectCannotCopy" type="alertmodal"> -Show a list of objects experiencing the greatest number of potential object-object collisions. These objects can slow performance. Select Advanced > Performance Tools > Statistics Bar and look under Simulator > Time > Physics Time to see if more than 20 ms is being spent in physics. +There are no items in this object that you are allowed to copy. </notification> <notification icon="alertmodal.tga" - label="Top Scripts" - name="HelpRegionTopScripts" + name="WebLaunchAccountHistory" type="alertmodal"> -Show a list of objects spending the most time running LSL scripts. These objects can slow performance. -Select Advanced > Performance Tools > Statistics Bar and look under Simulator > Time > Script Time to see if more than 25 ms is being spent in scripts. +Go to your [http://secondlife.com/account/ Dashboard] to see your account history? + <usetemplate + ignoretext="Launch my browser to see my account history" + name="okcancelignore" + notext="Cancel" + yestext="Go to page"/> </notification> <notification icon="alertmodal.tga" - label="Restart Region" - name="HelpRegionRestart" + name="ConfirmQuit" type="alertmodal"> -Restart the server process running this region after a two minute warning. All Residents in the region will be disconnected. The region will save its data, and should come back up within 90 seconds. - -Restarting the region will not fix most performance problems, and should usually be used only when directed. +Are you sure you want to quit? + <usetemplate + ignoretext="Confirm before I quit" + name="okcancelignore" + notext="Don't Quit" + yestext="Quit"/> + <unique/> </notification> <notification icon="alertmodal.tga" - label="Water Height" - name="HelpRegionWaterHeight" + name="HelpReportAbuseEmailLL" type="alertmodal"> -This is the height in meters where water appears. If this setting is anything other than 20 and you have water that is adjacent to the edge of world or 'void' water, there will be a visible gap. +Use this tool to report violations of the [http://secondlife.com/corporate/tos.php Terms of Service] and [http://secondlife.com/corporate/cs.php Community Standards]. -Default: 20 +All reported abuses are investigated and resolved. You can view the resolution by reading the [http://secondlife.com/support/incidentreport.php Incident Report]. + <unique/> </notification> <notification icon="alertmodal.tga" - label="Terrain Raise" - name="HelpRegionTerrainRaise" - type="alertmodal"> -This is the distance in meters that parcel owners can raise their terrain above the 'baked' terrain default height. - -Default: 4 - </notification> - - <notification - icon="alertmodal.tga" - label="Terrain Lower" - name="HelpRegionTerrainLower" - type="alertmodal"> -This is the distance in meters that parcel owners can lower their terrain below the 'baked' terrain default height. - -Default: -4 - </notification> - - <notification - icon="alertmodal.tga" - label="Upload RAW Terrain" - name="HelpRegionUploadRaw" - type="alertmodal"> -This button uploads a .RAW file to the region you are in. -The file must have the correct dimensions (RGB, 256x256) and 13 channels. The best way to create a terrain file is to download the existing RAW file. A good first step is to modify the red channel (land height), and upload it. - -The upload can take up to 45 seconds. Note that uploading a terrain file *will not* move the objects that are on the land, only the terrain itself and the permissions associated with the parcels. This can result in objects going underground. - -For more information on editing region height fields, consult F1 Help. - </notification> - - <notification - icon="alertmodal.tga" - label="Download RAW Terrain" - name="HelpRegionDownloadRaw" - type="alertmodal"> -This button downloads a file containing the height field data, parcel dimensions, parcel for sale status and some parcel permissions for this region. When opening the file in a program such as Photoshop you must specify the document's dimensions which are: RGB, 256x256 with 13 channels. This terrain file cannot be opened in any other way. - -For more information on editing region height fields, consult F1 help. - </notification> - - <notification - icon="alertmodal.tga" - label="Use Estate Sun" - name="HelpRegionUseEstateSun" - type="alertmodal"> -This checkbox makes the sun position in this region the same as the sun position in the rest of the estate. - -Default: on - </notification> - - <notification - icon="alertmodal.tga" - label="Fixed Sun" - name="HelpRegionFixedSun" - type="alertmodal"> -This checkbox sets the sun position to the position in the Phase slider and stops the sun from moving. - -Default: off - </notification> - - <notification - icon="alertmodal.tga" - label="Bake Terrain" - name="HelpRegionBakeTerrain" - type="alertmodal"> -This button saves the current shape of the terrain as the new default for the region. Once baked, the land can revert to the saved shape whenever you or others use the Edit Terrain 'Revert' option. The baked terrain is also the middle point for the terrain raise and lower limits. - </notification> - - <notification - icon="alertmodal.tga" - label="Estate Managers" - name="HelpEstateEstateManager" - type="alertmodal"> -An estate manager is a Resident to whom you have delegated control of region and estate settings. An estate manager can change any setting in these panels, except for uploading, downloading, and baking terrain. In particular, they can allow or ban Residents from your estate. - -Estate managers can only be added or removed by the owner of the estate, not by each other. Please only choose Residents you trust as estate managers, as you will be ultimately responsible for their actions. - </notification> - - <notification - icon="alertmodal.tga" - label="Use Global Time" - name="HelpEstateUseGlobalTime" - type="alertmodal"> -This checkbox makes the sun in your estate follow the same position as on the Linden-owned 'mainland' estates. - -Default: on - </notification> - - <notification - icon="alertmodal.tga" - label="Fixed Sun" - name="HelpEstateFixedSun" - type="alertmodal"> -This checkbox sets the sun position to the position in the Phase slider and stops the sun from moving. - </notification> - - <notification - icon="alertmodal.tga" - label="Public Access" - name="HelpEstateExternallyVisible" - type="alertmodal"> -This checkbox sets whether Residents who are on other estates can enter this estate without being on an access list. - -Default: on - </notification> - - <notification - icon="alertmodal.tga" - label="Allow Direct Teleport" - name="HelpEstateAllowDirectTeleport" - type="alertmodal"> -When checked, allows Residents to directly teleport to any point in your estate. When unchecked, Residents teleport to the nearest telehub. - -Default: off - </notification> - - <notification - icon="alertmodal.tga" - label="Allow Access" - name="HelpEstateAllowResident" - type="alertmodal"> -Access to this estate will be limited to Residents listed here and any groups below. This setting is only available when Public Access is unchecked. - </notification> - - <notification - icon="alertmodal.tga" - label="Allow Group Access" - name="HelpEstateAllowGroup" - type="alertmodal"> -Access to this estate will be limited to groups listed here and any Residents above. This setting is only available when Public Access is unchecked. - </notification> - - <notification - icon="alertmodal.tga" - label="Abuse Email Address" - name="HelpEstateAbuseEmailAddress" - type="alertmodal"> -Setting this to a valid email address will cause abuse reports on this estate to be sent to that address. -Setting it blank will cause abuse reports to be sent only to Linden Lab. - </notification> - - <notification - icon="alertmodal.tga" - label="Deny Access" - name="HelpEstateBanResident" - type="alertmodal"> -Residents on this list are denied access to your estate, regardless of any other settings. - </notification> - - <notification - icon="alertmodal.tga" - label="Allow Voice Chat" - name="HelpEstateVoiceChat" - type="alertmodal"> -Parcels in this estate are allowed to have their own voice channels in which residents may hear and talk with others nearby. - -Default: off - </notification> - - <notification - icon="alertmodal.tga" - label="Voice Version Mismatch" - name="VoiceVersionMismatch" - type="alertmodal"> -This version of [APP_NAME] is not compatible with the Voice Chat feature in this region. In order for Voice Chat to function correctly you will need to update [APP_NAME]. - </notification> - - <notification - icon="alertmodal.tga" - label="Estate Covenant" - name="HelpEstateCovenant" - type="alertmodal"> -Setting an estate covenant enables you to sell parcels within that estate. If a covenant is not set, you cannot sell the land. The notecard for your covenant can be empty if you do not wish to apply any rules or advise buyers of anything in relation to the land before they buy it. - -A covenant can be used to communicate rules, guidelines, cultural information or simply your own expectations to the prospective buyer. This can include zoning, building regulations, payment options or any other information you feel it is important for the new owner to have seen and to have agreed to before they purchase. - -The buyer must agree to the covenant by ticking the check box before they will be able to finish the purchase. Estate covenants are always visible in the About Land dialog for any parcels that have one set. - </notification> - - <notification - icon="alertmodal.tga" - label="Can't Buy Objects" - name="BuyObjectOneOwner" - type="alertmodal"> -Cannot buy objects from different owners at the same time. -Please select only one object and try again. - </notification> - - <notification - icon="alertmodal.tga" - label="Can't Buy Contents" - name="BuyContentsOneOnly" - type="alertmodal"> -Unable to buy the contents of more than one object at a time. -Please select only one object and try again. - </notification> - - <notification - icon="alertmodal.tga" - label="Can't Buy Contents" - name="BuyContentsOneOwner" - type="alertmodal"> -Cannot buy objects from different owners at the same time. -Please select only one object and try again. - </notification> - - <notification - icon="alertmodal.tga" - name="BuyOriginal" - type="alertmodal"> -Buy original object from [OWNER] for L$[PRICE]? -You will become the owner of this object. -You will be able to: - Modify: [MODIFYPERM] - Copy: [COPYPERM] - Resell or Give Away: [RESELLPERM] - <usetemplate - name="okcancelbuttons" - notext="Cancel" - yestext="OK"/> - </notification> - - <notification - icon="alertmodal.tga" - name="BuyOriginalNoOwner" - type="alertmodal"> -Buy original object for L$[PRICE]? -You will become the owner of this object. -You will be able to: - Modify: [MODIFYPERM] - Copy: [COPYPERM] - Resell or Give Away: [RESELLPERM] - <usetemplate - name="okcancelbuttons" - notext="Cancel" - yestext="OK"/> - </notification> - - <notification - icon="alertmodal.tga" - name="BuyCopy" - type="alertmodal"> -Buy a copy from [OWNER] for L$[PRICE]? -The object will be copied to your inventory. -You will be able to: - Modify: [MODIFYPERM] - Copy: [COPYPERM] - Resell or Give Away: [RESELLPERM] - <usetemplate - name="okcancelbuttons" - notext="Cancel" - yestext="OK"/> - </notification> - - <notification - icon="alertmodal.tga" - name="BuyCopyNoOwner" - type="alertmodal"> -Buy a copy for L$[PRICE]? -The object will be copied to your inventory. -You will be able to: - Modify: [MODIFYPERM] - Copy: [COPYPERM] - Resell or Give Away: [RESELLPERM] - <usetemplate - name="okcancelbuttons" - notext="Cancel" - yestext="OK"/> - </notification> - - <notification - icon="alertmodal.tga" - name="BuyContents" - type="alertmodal"> -Buy contents from [OWNER] for L$[PRICE]? -They will be copied to your inventory. - <usetemplate - name="okcancelbuttons" - notext="Cancel" - yestext="OK"/> - </notification> - - <notification - icon="alertmodal.tga" - name="BuyContentsNoOwner" - type="alertmodal"> -Buy contents for L$[PRICE]? -They will be copied to your inventory. - <usetemplate - name="okcancelbuttons" - notext="Cancel" - yestext="OK"/> - </notification> - - <notification - icon="alertmodal.tga" - name="ConfirmPurchase" - type="alertmodal"> -This transaction will: -[ACTION] - -Are you sure you want to proceed with this purchase? - <usetemplate - name="okcancelbuttons" - notext="Cancel" - yestext="OK"/> - </notification> - - <notification - icon="alertmodal.tga" - name="ConfirmPurchasePassword" - type="password"> -This transaction will: -[ACTION] - -Are you sure you want to proceed with this purchase? -Please re-enter your password and click OK. - <form name="form"> - <input - name="message" - type="password"/> - <button - default="true" - index="0" - name="ConfirmPurchase" - text="OK"/> - <button - index="1" - name="Cancel" - text="Cancel"/> - </form> - </notification> - - <notification - icon="alert.tga" - name="SetPickLocation" - type="alert"> -Note: -You have updated the location of this pick but the other details will retain their original values. - <usetemplate - name="okbutton" - yestext="OK"/> - </notification> - - <notification - icon="alertmodal.tga" - name="MoveInventoryFromObject" - type="alertmodal"> -You have selected 'no copy' inventory items. -These items will be moved to your inventory, not copied. - -Move the inventory item(s)? - <usetemplate - ignoretext="Warn me before I move 'no-copy' items from an object" - name="okcancelignore" - notext="Cancel" - yestext="OK"/> - </notification> - - <notification - icon="alertmodal.tga" - name="MoveInventoryFromScriptedObject" - type="alertmodal"> -You have selected 'no copy' inventory items. These items will be moved to your inventory, not copied. -Because this object is scripted, moving these items to your inventory may cause the script to malfunction. - -Move the inventory item(s)? - <usetemplate - ignoretext="Warn me before I move 'no-copy' items which might break a scripted object" - name="okcancelignore" - notext="Cancel" - yestext="OK"/> - </notification> - - <notification - icon="alert.tga" - name="ClickActionNotPayable" - type="alert"> -Warning: The 'Pay object' click action has been set, but it will only work if a script is added with a money() event. - <form name="form"> - <ignore name="ignore" - text="I set the action 'Pay object' when building an object without a money() script"/> - </form> - </notification> - - <notification - icon="alertmodal.tga" - name="OpenObjectCannotCopy" - type="alertmodal"> -There are no items in this object that you are allowed to copy. - </notification> - - <notification - icon="alertmodal.tga" - name="WebLaunchAccountHistory" - type="alertmodal"> -Go to your [http://secondlife.com/account/ Dashboard] to see your account history? - <usetemplate - ignoretext="Launch my browser to see my account history" - name="okcancelignore" - notext="Cancel" - yestext="Go to page"/> - </notification> - - <notification - icon="alertmodal.tga" - name="ClickOpenF1Help" - type="alertmodal"> -Do you want to visit [SECOND_LIFE] help? - <usetemplate - ignoretext="Launch my browser to view Help/Support" - name="okcancelignore" - notext="Cancel" - yestext="Go"/> - </notification> - - <notification - icon="alertmodal.tga" - name="ConfirmQuit" - type="alertmodal"> -Are you sure you want to quit? - <usetemplate - ignoretext="Confirm before I quit" - name="okcancelignore" - notext="Don't Quit" - yestext="Quit"/> - <unique/> - </notification> - - <notification - icon="alertmodal.tga" - name="HelpReportAbuseEmailLL" - type="alertmodal"> -Use this tool to report violations of the [http://secondlife.com/corporate/tos.php Terms of Service] and [http://secondlife.com/corporate/cs.php Community Standards]. - -All reported abuses are investigated and resolved. You can view the resolution by reading the [http://secondlife.com/support/incidentreport.php Incident Report]. - <unique/> - </notification> - - <notification - icon="alertmodal.tga" - name="HelpReportAbuseEmailEO" + name="HelpReportAbuseEmailEO" type="alertmodal"> IMPORTANT: This report will go to the owner of the region you are currently in and not to Linden Lab. @@ -4499,31 +3988,6 @@ Link to this from a web page to give others easy access to this location, or try </form> </notification> - <notification - icon="alertmodal.tga" - name="GraphicsPreferencesHelp" - type="alertmodal"> -This panel controls window size and resolution and the quality of the client's graphics. The Preferences > Graphics interface allows you to choose between four graphics levels: Low, Mid, High, and Ultra. You may also customize your graphics settings by clicking the Advanced button and manipulating the following settings: - -Shaders: Enable or disable various types of pixel shaders. - -Reflection Detail: Sets the types of objects that water can reflect. - -Avatar Rendering: Sets options that affect how the client renders avatars. - -Draw Distance: Affects how far out from your viewpoint objects will be rendered in the scene. - -Max Particle Count: Sets the maximum number of particles you are able to see on your screen at once. - -Post Process Quality: Sets the resolution with which Glow is rendered. - -Mesh Detail: Sets the amount of detail or number of triangles used in rendering certain objects. A higher value takes longer to render, but makes these objects appear with more detail. - -Lighting Detail: Selects what types of lights you would like to render. - -Terrain Detail: Sets the amount of detail you would like to see for the terrain texture. - </notification> - <notification icon="alertmodal.tga" name="WLSavePresetAlert" @@ -4571,306 +4035,6 @@ PostProcess Effect exists. Do you still wish overwrite it? yestext="Yes"/> </notification> - <notification - icon="alertmodal.tga" - name="HelpEditSky" - type="alertmodal"> -Edit the WindLight sliders to create and save a set of skies. - </notification> - - <notification - icon="alertmodal.tga" - name="HelpEditDayCycle" - type="alertmodal"> -Set which skies to turn to throughout the day. - </notification> - - <notification - icon="alertmodal.tga" - name="EnvSettingsHelpButton" - type="alertmodal"> -These settings adjust the way the environment looks locally on your computer. Your graphics card needs to support atmospheric shaders in order to have access to all of the settings. - -Adjust the "Time of Day" slider to change the day's phase locally on the viewer. - -Adjust the "Cloud Cover" slider to control how much the clouds cover the sky. - -Pick a color in the "Water Color" color picker to change the color of the water. - -Adjust the "Water Fog" slider to control how dense the fog is underwater. - -Click "Use Estate Time" to reset the time of day to the region's current time of day and remain linked to it. - -Click "Advanced Sky" to bring up an editor with more advanced settings for the sky. - -Click "Advanced Water" to bring up an editor with more advanced settings for the water. - </notification> - - <notification - icon="alertmodal.tga" - name="HelpDayCycle" - type="alertmodal"> -The Day Cycle Editor gives you control over the sky during [SECOND_LIFE]'s day/night cycle. This is the cycle that is used by the Basic Environment Editor's Time of Day slider. - -The Day Cycle Editor works by setting keyframes. These are nodes (represented by the gray blips on the time graph) that have Sky Presets associated with them. As the Time of Day progresses, the WindLight sky "animates" as it interpolates between these keyframes. - -The yellow arrow above the timeline represents your current view, based on Time of Day. Click and drag it to see how your day will animate. You may add or delete keyframes by pressing the Add Key and Delete Key buttons to the right of the timeline. - -You can set the time position of a keyframe by either dragging it along the timeline, or by setting its value manually in the Key Frame Settings frame. Within the Key Frame Settings frame, you'll be able to associate the keyframe with its respective WindLight preset. - -Length of Cycle dictates the overall duration of a "day". Setting this to a low value (for instance, 2 min.) will mean your entire 24-hour timeline will animate in only two real minutes! Once you are satisfied with your timeline and keyframe cycle, use the Play and Stop buttons to preview the results. Remember- you can also move the yellow time-indicator arrow above the timeline to see the cycle animate interactively. Using the Use Estate Time button will synchronize your day length and time of day with the Estate's day cycle. - -Once you are pleased with your Day Cycle, you can save and load it with the Save Test Day and Load Test Day buttons. Note that, for now, we only allow one Day Cycle. - </notification> - - <notification - icon="alertmodal.tga" - name="HelpBlueHorizon" - type="alertmodal"> -Use the Red/Green/Blue (RGB) sliders to adjust the color of the sky. You can use the Intensity (I) slider to move all three RGB sliders in unison. - </notification> - - <notification - icon="alertmodal.tga" - name="HelpHazeHorizon" - type="alertmodal"> -Haze Horizon is one of the most useful parameters for adjusting overall light exposure in the scene. It is effective for simulating many exposure settings, such as white-outs from the sun and darker, closed-iris settings. - </notification> - - <notification - icon="alertmodal.tga" - name="HelpBlueDensity" - type="alertmodal"> -Blue Density affects the overall color saturation of the sky and fog. If you move the Intensity (I) slider to the right, colors will become brighter and more vibrant. If you move it all the way to the left, the colors will become duller, eventually fading to black and white. If you want to fine-tune the sky's color balance, you can control individual elements of saturation by using the Red/Green/Blue (RGB) sliders. - </notification> - - <notification - icon="alertmodal.tga" - name="HelpHazeDensity" - type="alertmodal"> -Haze Density controls the level of dull, gray haze in the atmosphere. It is effective for simulating scenes with high levels of smoke and man-made pollutants. It is also effective for simulating fog and mist. - </notification> - - <notification - icon="alertmodal.tga" - name="HelpDensityMult" - type="alertmodal"> -The Density Multiplier can be used to affect the overall atmospheric density. At lower settings, it creates a feeling of "thin air", and at higher settings, it creates a very heavy, smoggy effect. - </notification> - - <notification - icon="alertmodal.tga" - name="HelpDistanceMult" - type="alertmodal"> -Adjusts WindLight's perceived distance. A value of zero effectively turns off WindLight's influence on terrain and objects. Values greater than 1 simulate greater distances for thicker atmospheric effects. - </notification> - - <notification - icon="alertmodal.tga" - name="HelpMaxAltitude" - type="alertmodal"> -Max Altitude adjusts the altitude calculations WindLight performs when computing its atmospheric lighting. At later times of day, it is useful for adjusting how "deep" the sunset appears. - </notification> - - <notification - icon="alertmodal.tga" - name="HelpSunlightColor" - type="alertmodal"> -Adjusts the color and intensity of the direct light in the scene. - </notification> - - <notification - icon="alertmodal.tga" - name="HelpSunAmbient" - type="alertmodal"> -Adjusts the color and intensity of ambient atmospheric light in the scene. - </notification> - - <notification - icon="alertmodal.tga" - name="HelpSunGlow" - type="alertmodal"> -The Size slider controls the size of the sun. -The Focus slider controls how blurred the sun is over the sky. - </notification> - - <notification - icon="alertmodal.tga" - name="HelpSceneGamma" - type="alertmodal"> -Adjust the screen's distribution of light and dark. - </notification> - - <notification - icon="alertmodal.tga" - name="HelpStarBrightness" - type="alertmodal"> -Adjusts the brightness of the stars in the sky. - </notification> - - <notification - icon="alertmodal.tga" - name="HelpTimeOfDay" - type="alertmodal"> -Controls the location of the sun in the sky. -Similar to elevation. - </notification> - - <notification - icon="alertmodal.tga" - name="HelpEastAngle" - type="alertmodal"> -Controls the location of the sun in the sky. -Similar to azimuth. - </notification> - - <notification - icon="alertmodal.tga" - name="HelpCloudColor" - type="alertmodal"> -Edits the color of the clouds. It is generally recommended to keep it whitish, but hey, have fun if you want. - </notification> - - <notification - icon="alertmodal.tga" - name="HelpCloudDetail" - type="alertmodal"> -Controls the detail image layered on top of the main cloud image. X and Y control its position. D (Density) controls how puffy or fractured the clouds appear. - </notification> - - <notification - icon="alertmodal.tga" - name="HelpCloudDensity" - type="alertmodal"> -Allows you to control the position of the clouds with the X and Y sliders and how dense they are with the the D slider. - </notification> - - <notification - icon="alertmodal.tga" - name="HelpCloudCoverage" - type="alertmodal"> -Controls how much the clouds cover the sky. - </notification> - - <notification - icon="alertmodal.tga" - name="HelpCloudScale" - type="alertmodal"> -Controls the scaling of the cloud image on the sky dome. - </notification> - - <notification - icon="alertmodal.tga" - name="HelpCloudScrollX" - type="alertmodal"> -Controls the speed of the clouds as they move in the X direction. - </notification> - - <notification - icon="alertmodal.tga" - name="HelpCloudScrollY" - type="alertmodal"> -Controls the speed of the clouds as they move in the Y direction. - </notification> - - <notification - icon="alertmodal.tga" - name="HelpClassicClouds" - type="alertmodal"> -Check this box to enable rendering of [SECOND_LIFE]'s older classic clouds in addition to WindLight's clouds. - </notification> - - <notification - icon="alertmodal.tga" - name="HelpWaterFogColor" - type="alertmodal"> -Chooses the color of the underwater fog. - </notification> - - <notification - icon="alertmodal.tga" - name="HelpWaterFogDensity" - type="alertmodal"> -Controls how dense the water fog is and how far you can see underwater. - </notification> - - <notification - icon="alertmodal.tga" - name="HelpUnderWaterFogMod" - type="alertmodal"> -Modifies the effect of the Fog Density Exponent to control how far you can see when your avatar is underwater. - </notification> - - <notification - icon="alertmodal.tga" - name="HelpWaterGlow" - type="alertmodal"> -Controls how much the surface of the water glows. - </notification> - - <notification - icon="alertmodal.tga" - name="HelpWaterNormalScale" - type="alertmodal"> -Controls the scaling of the three wavelets that make up the water. - </notification> - - <notification - icon="alertmodal.tga" - name="HelpWaterFresnelScale" - type="alertmodal"> -Controls how much light is reflected at different angles. - </notification> - - <notification - icon="alertmodal.tga" - name="HelpWaterFresnelOffset" - type="alertmodal"> -Controls how much light intensity is reflected. - </notification> - - <notification - icon="alertmodal.tga" - name="HelpWaterScaleAbove" - type="alertmodal"> -Controls how much light is refracted from looking above the surface of the water. - </notification> - - <notification - icon="alertmodal.tga" - name="HelpWaterScaleBelow" - type="alertmodal"> -Controls how much light is refracted from looking from below the surface of the water. - </notification> - - <notification - icon="alertmodal.tga" - name="HelpWaterBlurMultiplier" - type="alertmodal"> -Controls how waves and reflections are mixed. - </notification> - - <notification - icon="alertmodal.tga" - name="HelpWaterNormalMap" - type="alertmodal"> -Controls what normal map is layered across the water to determine reflections/refractions. - </notification> - - <notification - icon="alertmodal.tga" - name="HelpWaterWave1" - type="alertmodal"> -Controls where and how fast the large scaled version of the normal map moves in the X and Y direction. - </notification> - - <notification - icon="alertmodal.tga" - name="HelpWaterWave2" - type="alertmodal"> -Controls where and how fast the the small scaled version of the normal map moves in the X and Y direction. - </notification> - <notification icon="alert.tga" name="NewSkyPreset" @@ -5618,14 +4782,6 @@ You are banned from the region. Your account cannot connect to this teen grid region. </notification> - <notification - icon="notify.tga" - name="NoHelpIslandTP" - type="notify"> -You cannot teleport back to Help Island. -Go to 'Help Island Public' to repeat the tutorial. - </notification> - <notification icon="notify.tga" name="ImproperPaymentStatus" diff --git a/indra/newview/skins/default/xui/en/panel_adhoc_control_panel.xml b/indra/newview/skins/default/xui/en/panel_adhoc_control_panel.xml index 8db745fab711e90a2cda2a9478e2c61a67d19920..f50acc224f053796b42600374bac9757d6fb8425 100644 --- a/indra/newview/skins/default/xui/en/panel_adhoc_control_panel.xml +++ b/indra/newview/skins/default/xui/en/panel_adhoc_control_panel.xml @@ -13,17 +13,26 @@ left="3" name="speakers_list" opaque="false" + show_info_btn="false" + show_profile_btn="false" top="10" width="140" /> <button name="call_btn" label="Call" - width="90" + width="125" height="20" /> <button name="end_call_btn" label="End Call" - width="90" + width="125" height="20" visible="false"/> + <button + enabled="false" + name="voice_ctrls_btn" + label="Open Voice Controls" + width="125" + height="20" + visible="false"/> </panel> diff --git a/indra/newview/skins/default/xui/en/panel_bottomtray.xml b/indra/newview/skins/default/xui/en/panel_bottomtray.xml index 73a1bae1c6567a2b5ed801b1485ff87cdc99fbdc..61bd1d186e51bd614b7693368ae2903df7943ccc 100644 --- a/indra/newview/skins/default/xui/en/panel_bottomtray.xml +++ b/indra/newview/skins/default/xui/en/panel_bottomtray.xml @@ -10,7 +10,7 @@ left="0" name="bottom_tray" top="28" - chrome="true" + chrome="true" border_visible="false" width="1000"> <layout_stack @@ -47,7 +47,7 @@ min_width="300" name="chat_bar" user_resize="false" - filename="panel_nearby_chat_bar.xml"/> + filename="panel_nearby_chat_bar.xml" /> <layout_panel mouse_opaque="false" auto_resize="false" @@ -55,23 +55,22 @@ height="28" layout="topleft" min_height="28" - width="96" + width="100" top_delta="0" min_width="96" name="speak_panel" user_resize="false"> - <chiclet_talk - follows="right" - height="23" - speak_button.font="SansSerifMedium" - speak_button.tab_stop="true" - show_button.tab_stop="true" - layout="topleft" - left="0" - name="talk" - top="3" - width="96" /> - </layout_panel> + <chiclet_talk + follows="right" + height="23" + speak_button.tab_stop="true" + show_button.tab_stop="true" + layout="topleft" + left="0" + name="talk" + top="3" + width="100" /> + </layout_panel> <icon auto_resize="false" follows="left|right" @@ -89,21 +88,21 @@ height="28" layout="topleft" min_height="28" - width="76" + width="80" top_delta="0" min_width="76" name="gesture_panel" user_resize="false"> - <button - follows="right" - height="23" - label="Gesture" - layout="topleft" - name="Gesture" - left="0" - top="3" - use_ellipses="true" - width="76" /> + <button + follows="right" + height="23" + label="Gesture" + layout="topleft" + name="Gesture" + left="0" + top="3" + use_ellipses="true" + width="80" /> </layout_panel> <icon auto_resize="false" @@ -124,7 +123,7 @@ layout="topleft" min_height="28" name="movement_panel" - width="76" + width="80" min_width="76"> <button follows="left|right" @@ -136,7 +135,7 @@ name="movement_btn" tool_tip="Show/hide movement controls" top="3" - width="76"> + width="80"> <button.init_callback function="Button.SetDockableFloaterToggle" parameter="moveview" /> @@ -175,7 +174,7 @@ tool_tip="Show/hide camera controls" top="3" name="camera_btn" - width="76"> + width="80"> <button.init_callback function="Button.SetDockableFloaterToggle" parameter="camera" /> @@ -199,28 +198,19 @@ height="28" layout="topleft" name="snapshot_panel" - width="35"> - <split_button - arrow_position="right" + width="40"> + <button follows="left|right" height="23" left="0" + label="" layout="topleft" name="snapshots" - width="46" - top="3"> - <split_button.item - image_overlay="Snapshot_Off" - name="snapshot" - tool_tip="Take snapshot" - /> - <split_button.arrow_button - name="snapshot_settings" - image_overlay="Widget_UpArrow" - tool_tip="Snapshot and Preset Views" - width="18" + width="36" + top="3" + image_overlay="Snapshot_Off" + tool_tip="Take snapshot" /> - </split_button> </layout_panel> <layout_panel mouse_opaque="false" @@ -297,7 +287,7 @@ height="10" image_name="spacer24.tga" layout="topleft" - left="0" + right="-1" top="0" width="10"/> </layout_stack> diff --git a/indra/newview/skins/default/xui/en/panel_group_control_panel.xml b/indra/newview/skins/default/xui/en/panel_group_control_panel.xml index 15b6b2a00db2467433af09e1e3512bc9cffa2952..9ed510dff3e1feeed5f2a99f428c6529ffdc0b13 100644 --- a/indra/newview/skins/default/xui/en/panel_group_control_panel.xml +++ b/indra/newview/skins/default/xui/en/panel_group_control_panel.xml @@ -2,7 +2,7 @@ <panel name="panel_im_control_panel" width="146" - height="215" + height="238" border="false"> <avatar_list color="DkGray2" @@ -13,23 +13,32 @@ left="3" name="speakers_list" opaque="false" + show_info_btn="false" + show_profile_btn="false" top="10" width="140" /> <button name="group_info_btn" label="Group Info" left_delta="3" - width="90" + width="125" height="20" /> <button name="call_btn" label="Call" - width="90" + width="125" height="20" /> <button name="end_call_btn" label="End Call" - width="90" + width="125" height="20" visible="false"/> + <button + enabled="false" + name="voice_ctrls_btn" + label="Open Voice Controls" + width="125" + height="20" + visible="false"/> </panel> diff --git a/indra/newview/skins/default/xui/en/panel_group_land_money.xml b/indra/newview/skins/default/xui/en/panel_group_land_money.xml index 04e0ad3be8a3d3b94bfcaeb09b66d0974b45b32f..c81c7113ae22a4b241b47cb3137afb6a7808d259 100644 --- a/indra/newview/skins/default/xui/en/panel_group_land_money.xml +++ b/indra/newview/skins/default/xui/en/panel_group_land_money.xml @@ -29,17 +29,6 @@ name="land_contrib_error"> Unable to set your land contribution. </panel.string> - <!-- - <button - follows="left|top" - height="16" - label="?" - layout="topleft" - left="250" - name="help_button" - top="8" - width="20" /> - --> <!-- <text type="string" follows="left|top" diff --git a/indra/newview/skins/default/xui/en/panel_group_notices.xml b/indra/newview/skins/default/xui/en/panel_group_notices.xml index d9fb962998246cfac15a5d5cb18205a41e40cc0b..0e4d490369af3560b75c50b27565b7b937b4218c 100644 --- a/indra/newview/skins/default/xui/en/panel_group_notices.xml +++ b/indra/newview/skins/default/xui/en/panel_group_notices.xml @@ -22,16 +22,6 @@ the General tab. name="no_notices_text"> There are no past notices. </panel.string> - <!-- <button - follows="left|top" - height="16" - label="?" - label_selected="?" - layout="topleft" - left="250" - name="help_button" - top="8" - width="20" /> --> <!--<text follows="left|top" type="string" @@ -383,4 +373,4 @@ the General tab. top_pad="10" width="135" /> </panel> -</panel> \ No newline at end of file +</panel> diff --git a/indra/newview/skins/default/xui/en/panel_group_roles.xml b/indra/newview/skins/default/xui/en/panel_group_roles.xml index 909c3f457760fbfb8c6f5e71cee8fab6b9d989db..e87859f788af9d2a5c7149ef739e7ffa05fb728d 100644 --- a/indra/newview/skins/default/xui/en/panel_group_roles.xml +++ b/indra/newview/skins/default/xui/en/panel_group_roles.xml @@ -18,17 +18,6 @@ </panel.string> <panel.string name="help_text" /> - <!-- - <button - follows="left|top" - height="16" - label="?" - layout="topleft" - left="250" - name="help_button" - top="8" - width="20" /> - --> <!--<panel follows="left|top" height="80" diff --git a/indra/newview/skins/default/xui/en/panel_im_control_panel.xml b/indra/newview/skins/default/xui/en/panel_im_control_panel.xml index dca52def495782eb636b7658951b131e9403d68c..c4cdaa41f970cf401e376ee43599a558c21d3500 100644 --- a/indra/newview/skins/default/xui/en/panel_im_control_panel.xml +++ b/indra/newview/skins/default/xui/en/panel_im_control_panel.xml @@ -1,7 +1,7 @@ <?xml version="1.0" encoding="utf-8" standalone="yes" ?> <panel name="panel_im_control_panel" - width="96" - height="225" + width="125" + height="248" border="false"> <avatar_icon name="avatar_icon" @@ -11,17 +11,17 @@ <button name="view_profile_btn" label="View Profile" left_delta="3" - width="90" + width="125" height="20" /> <button name="add_friend_btn" label="Add Friend" - width="90" + width="125" height="20" /> <button name="call_btn" label="Call" - width="90" + width="125" height="20" /> <button @@ -29,11 +29,19 @@ label="End Call" name="end_call_btn" visible="false" - width="90" /> + width="125" /> + + <button + enabled="false" + name="voice_ctrls_btn" + label="Open Voice Controls" + width="125" + height="20" + visible="false"/> <button name="share_btn" label="Share" - width="90" + width="125" height="20" /> </panel> diff --git a/indra/newview/skins/default/xui/en/panel_preferences_advanced.xml b/indra/newview/skins/default/xui/en/panel_preferences_advanced.xml index 91dcdce23bb8bc44165f72e9584f21d49d50ba55..b8fc72b7549cd3a49605bce7f1ed3f840c0baf01 100644 --- a/indra/newview/skins/default/xui/en/panel_preferences_advanced.xml +++ b/indra/newview/skins/default/xui/en/panel_preferences_advanced.xml @@ -240,8 +240,8 @@ Avatars: width="256" top_pad="5"/> <radio_group - enabled_control="ShowScriptErrors" - control_name="ShowScriptErrorsLocation" + enabled_control="ShowScriptErrors" + control_name="ShowScriptErrorsLocation" follows="top|left" draw_border="false" height="40" @@ -269,6 +269,8 @@ Avatars: </radio_group> <check_box follows="top|left" + enabled_control="EnableVoiceChat" + control_name="PushToTalkToggle" height="20" label="Use Push-to-talk in toggle mode" layout="topleft" @@ -279,6 +281,9 @@ Avatars: tool_tip="When in toggle mode, press and release the push-to-talk trigger to switch your microphone on and off. When not in toggle mode, the microphone is active only when the trigger is held down."/> <line_editor follows="top|left" + control_name="PushToTalkButton" + enabled="false" + enabled_control="EnableVoiceChat" height="19" left_delta="50" max_length="254" @@ -287,22 +292,30 @@ Avatars: top_pad="0" width="280" /> <button - follows="top|left" - height="20" - label="Set Key" - left_delta="0" - name="set_voice_hotkey_button" - width="115" - top_pad="5" /> + follows="top|left" + enabled_control="EnableVoiceChat" + height="20" + label="Set Key" + left_delta="0" + name="set_voice_hotkey_button" + width="115" + top_pad="5"> + <button.commit_callback + function="Pref.VoiceSetKey" /> + </button> <button - bottom_delta="0" - follows="left" - font="SansSerif" - halign="center" - height="20" - label="Middle Mouse Button" - left_delta="120" - mouse_opaque="true" - name="set_voice_middlemouse_button" - width="160" /> + bottom_delta="0" + enabled_control="EnableVoiceChat" + follows="left" + font="SansSerif" + halign="center" + height="20" + label="Middle Mouse Button" + left_delta="120" + mouse_opaque="true" + name="set_voice_middlemouse_button" + width="160"> + <button.commit_callback + function="Pref.VoiceSetMiddleMouse" /> + </button> </panel> diff --git a/indra/newview/skins/default/xui/en/panel_region_covenant.xml b/indra/newview/skins/default/xui/en/panel_region_covenant.xml index b3147f5e6bafd51ace1c6e3841c467fd5bdaf2e6..49fc930cd8ae1ba18225cf3fbd683e082b45e174 100644 --- a/indra/newview/skins/default/xui/en/panel_region_covenant.xml +++ b/indra/newview/skins/default/xui/en/panel_region_covenant.xml @@ -103,17 +103,6 @@ width="308"> Last Modified Wed Dec 31 16:00:00 1969 </text> - <button - follows="left|top" - font="SansSerifSmall" - height="18" - label="?" - layout="topleft" - left_pad="5" - name="covenant_help" - top_delta="-2" - width="18" /> - <text_editor enabled="false" follows="left|top" diff --git a/indra/newview/skins/default/xui/en/panel_region_debug.xml b/indra/newview/skins/default/xui/en/panel_region_debug.xml index 25e1171688c7a89c7c35050bae7cdb2fad4a5686..a1bca4229dcfa2cf309ad46a369d0a254b0199ac 100644 --- a/indra/newview/skins/default/xui/en/panel_region_debug.xml +++ b/indra/newview/skins/default/xui/en/panel_region_debug.xml @@ -40,16 +40,6 @@ tool_tip="Disable all scripts in this region" top="30" width="80" /> - <button - follows="left|top" - font="SansSerifSmall" - height="18" - label="?" - layout="topleft" - left_pad="70" - name="disable_scripts_help" - top_delta="2" - width="18" /> <check_box height="20" label="Disable Collisions" @@ -59,16 +49,6 @@ tool_tip="Disable non-avatar collisions in this region" top="50" width="80" /> - <button - follows="left|top" - font="SansSerifSmall" - height="18" - label="?" - layout="topleft" - left_pad="70" - name="disable_collisions_help" - top_delta="2" - width="18" /> <check_box height="20" label="Disable Physics" @@ -78,16 +58,6 @@ tool_tip="Disable all physics in this region" top="70" width="80" /> - <button - follows="left|top" - font="SansSerifSmall" - height="18" - label="?" - layout="topleft" - left_pad="70" - name="disable_physics_help" - top_delta="2" - width="18" /> <button enabled="false" follows="left|top" @@ -204,16 +174,6 @@ tool_tip="List of objects experiencing the most potential collisions" top="313" width="150" /> - <button - follows="left|top" - font="SansSerifSmall" - height="18" - label="?" - layout="topleft" - left_pad="10" - name="top_colliders_help" - top_delta="2" - width="18" /> <button follows="left|top" font="SansSerifSmall" @@ -225,16 +185,6 @@ tool_tip="List of objects spending the most time running scripts" top_pad="5" width="150" /> - <button - follows="left|top" - font="SansSerifSmall" - height="18" - label="?" - layout="topleft" - left_pad="10" - name="top_scripts_help" - top_delta="2" - width="18" /> <button follows="left|top" font="SansSerifSmall" @@ -246,16 +196,6 @@ tool_tip="Give 2 minute countdown and restart region" top_pad="5" width="130" /> - <button - follows="left|top" - font="SansSerifSmall" - height="18" - label="?" - layout="topleft" - left_pad="10" - name="restart_help" - top_delta="2" - width="18" /> <button follows="left|top" font="SansSerifSmall" diff --git a/indra/newview/skins/default/xui/en/panel_region_estate.xml b/indra/newview/skins/default/xui/en/panel_region_estate.xml index c7a60ed2e48d196acbb601abbe3015f7f493946b..add1476179191b8e1e3b021b91fddc1f275cb4b4 100644 --- a/indra/newview/skins/default/xui/en/panel_region_estate.xml +++ b/indra/newview/skins/default/xui/en/panel_region_estate.xml @@ -94,16 +94,6 @@ regions in the estate. name="use_global_time_check" top="132" width="200" /> - <button - follows="left|top" - font="SansSerifSmall" - height="18" - label="?" - layout="topleft" - left_pad="20" - name="use_global_time_help" - top_delta="2" - width="18" /> <check_box height="20" label="Fixed Sun" @@ -112,16 +102,6 @@ regions in the estate. name="fixed_sun_check" top="152" width="100" /> - <button - follows="left|top" - font="SansSerifSmall" - height="18" - label="?" - layout="topleft" - left_pad="120" - name="fixed_sun_help" - top_delta="2" - width="18" /> <icon height="20" image_name="icon_day_cycle.tga" @@ -151,16 +131,6 @@ regions in the estate. name="externally_visible_check" top_pad="6" width="200" /> - <button - follows="left|top" - font="SansSerifSmall" - height="18" - label="?" - layout="topleft" - left_pad="20" - name="externally_visible_help" - top_delta="2" - width="18" /> <text type="string" length="1" @@ -201,16 +171,6 @@ regions in the estate. name="voice_chat_check" top="304" width="200" /> - <button - follows="left|top" - font="SansSerifSmall" - height="18" - label="?" - layout="topleft" - left_pad="20" - name="voice_chat_help" - top_delta="2" - width="18" /> <check_box height="20" label="Allow Direct Teleport" @@ -219,16 +179,6 @@ regions in the estate. name="allow_direct_teleport" top_pad="4" width="80" /> - <button - follows="left|top" - font="SansSerifSmall" - height="18" - label="?" - layout="topleft" - left_pad="140" - name="allow_direct_teleport_help" - top_delta="2" - width="18" /> <text type="string" length="1" @@ -249,16 +199,6 @@ regions in the estate. name="abuse_email_address" top_pad="5" width="205" /> - <button - follows="left|top" - font="SansSerifSmall" - height="18" - label="?" - layout="topleft" - left_pad="12" - name="abuse_email_address_help" - top_dekta="0" - width="18" /> <button enabled="false" follows="left|top" @@ -300,16 +240,6 @@ regions in the estate. width="200"> Estate Managers: </text> - <button - follows="left|top" - font="SansSerifSmall" - height="18" - label="?" - layout="topleft" - left_delta="182" - name="estate_manager_help" - top_delta="-1" - width="18" /> <view_border bevel_style="none" follows="top|left" @@ -357,16 +287,6 @@ regions in the estate. width="200"> Allowed Residents: </text> - <button - follows="left|top" - font="SansSerifSmall" - height="18" - label="?" - layout="topleft" - left_delta="182" - name="allow_resident_help" - top_delta="-1" - width="18" /> <view_border bevel_style="none" follows="top|left" @@ -414,16 +334,6 @@ regions in the estate. width="200"> Allowed Groups: </text> - <button - follows="left|top" - font="SansSerifSmall" - height="18" - label="?" - layout="topleft" - left_delta="182" - name="allow_group_help" - top_delta="-1" - width="18" /> <view_border bevel_style="none" follows="top|left" @@ -471,16 +381,6 @@ regions in the estate. width="200"> Banned Residents: </text> - <button - follows="left|top" - font="SansSerifSmall" - height="18" - label="?" - layout="topleft" - left_delta="182" - name="ban_resident_help" - top_delta="-1" - width="18" /> <view_border bevel_style="none" follows="top|left" diff --git a/indra/newview/skins/default/xui/en/panel_region_general.xml b/indra/newview/skins/default/xui/en/panel_region_general.xml index 160ae96fc4e0b66d7b17bd5c8052a8ff7206a52d..42c63196995b2901496c0046ec964e082c453d73 100644 --- a/indra/newview/skins/default/xui/en/panel_region_general.xml +++ b/indra/newview/skins/default/xui/en/panel_region_general.xml @@ -83,16 +83,6 @@ name="block_terraform_check" top="70" width="80" /> - <button - follows="left|top" - font="SansSerifSmall" - height="18" - label="?" - layout="topleft" - left_pad="115" - name="terraform_help" - top_delta="2" - width="18" /> <check_box height="20" label="Block Fly" @@ -101,16 +91,6 @@ name="block_fly_check" top="90" width="80" /> - <button - follows="left|top" - font="SansSerifSmall" - height="18" - label="?" - layout="topleft" - left_pad="115" - name="fly_help" - top_delta="2" - width="18" /> <check_box height="20" label="Allow Damage" @@ -119,16 +99,6 @@ name="allow_damage_check" top="110" width="80" /> - <button - follows="left|top" - font="SansSerifSmall" - height="18" - label="?" - layout="topleft" - left_pad="115" - name="damage_help" - top_delta="2" - width="18" /> <check_box height="20" label="Restrict Pushing" @@ -137,16 +107,6 @@ name="restrict_pushobject" top="130" width="80" /> - <button - follows="left|top" - font="SansSerifSmall" - height="18" - label="?" - layout="topleft" - left_pad="115" - name="restrict_pushobject_help" - top_delta="2" - width="18" /> <check_box height="20" label="Allow Land Resell" @@ -155,16 +115,6 @@ name="allow_land_resell_check" top="160" width="80" /> - <button - follows="left|top" - font="SansSerifSmall" - height="18" - label="?" - layout="topleft" - left_pad="115" - name="land_resell_help" - top_delta="2" - width="18" /> <check_box height="20" label="Allow Land Join/Divide" @@ -173,16 +123,6 @@ name="allow_parcel_changes_check" top="180" width="80" /> - <button - follows="left|top" - font="SansSerifSmall" - height="18" - label="?" - layout="topleft" - left_pad="115" - name="parcel_changes_help" - top_delta="2" - width="18" /> <check_box height="20" label="Block Land Show in Search" @@ -192,16 +132,6 @@ tool_tip="Let people see this region and its parcels in search results" top="200" width="80" /> - <button - follows="left|top" - font="SansSerifSmall" - height="18" - label="?" - layout="topleft" - left_pad="115" - name="parcel_search_help" - top_delta="2" - width="18" /> <spinner follows="left|top" height="20" @@ -215,16 +145,6 @@ name="agent_limit_spin" top="240" width="170" /> - <button - follows="left|top" - font="SansSerifSmall" - height="18" - label="?" - layout="topleft" - left_pad="25" - name="agent_limit_help" - top_delta="2" - width="18" /> <spinner follows="left|top" height="20" @@ -238,16 +158,6 @@ name="object_bonus_spin" top="260" width="170" /> - <button - follows="left|top" - font="SansSerifSmall" - height="18" - label="?" - layout="topleft" - left_pad="25" - name="object_bonus_help" - top_delta="2" - width="18" /> <text follows="left|top" height="20" @@ -280,16 +190,6 @@ name="PG" value="13" /> </combo_box> - <button - follows="left|top" - font="SansSerifSmall" - height="18" - label="?" - layout="topleft" - left_pad="10" - name="access_help" - top_delta="2" - width="18" /> <button enabled="false" follows="left|top" @@ -299,10 +199,7 @@ left="108" name="apply_btn" top="320" - width="100"> - <button.commit_callback - function="RegionInfo.Cancel" /> - </button> + width="100"/> <button follows="left|top" height="20" @@ -338,5 +235,8 @@ left="250" name="manage_telehub_btn" top="70" - width="150" /> + width="150"> + <button.commit_callback + function="RegionInfo.ManageTelehub" /> + </button> </panel> diff --git a/indra/newview/skins/default/xui/en/panel_region_general_layout.xml b/indra/newview/skins/default/xui/en/panel_region_general_layout.xml index 9b9c62dbf9d6d9928b4f60937813d8b780513233..bffd84877f701bb2ef4745d05326ca666e73084c 100644 --- a/indra/newview/skins/default/xui/en/panel_region_general_layout.xml +++ b/indra/newview/skins/default/xui/en/panel_region_general_layout.xml @@ -83,16 +83,6 @@ name="block_terraform_check" top="70" width="80" /> - <button - follows="left|top" - font="SansSerifSmall" - height="18" - label="?" - layout="topleft" - left_pad="115" - name="terraform_help" - top_delta="2" - width="18" /> <check_box height="20" label="Block Fly" @@ -101,16 +91,6 @@ name="block_fly_check" top="90" width="80" /> - <button - follows="left|top" - font="SansSerifSmall" - height="18" - label="?" - layout="topleft" - left_pad="115" - name="fly_help" - top_delta="2" - width="18" /> <check_box height="20" label="Allow Damage" @@ -119,16 +99,6 @@ name="allow_damage_check" top="110" width="80" /> - <button - follows="left|top" - font="SansSerifSmall" - height="18" - label="?" - layout="topleft" - left_pad="115" - name="damage_help" - top_delta="2" - width="18" /> <check_box height="20" label="Restrict Pushing" @@ -137,16 +107,6 @@ name="restrict_pushobject" top="130" width="80" /> - <button - follows="left|top" - font="SansSerifSmall" - height="18" - label="?" - layout="topleft" - left_pad="115" - name="restrict_pushobject_help" - top_delta="2" - width="18" /> <check_box height="20" label="Allow Land Resell" @@ -155,16 +115,6 @@ name="allow_land_resell_check" top="160" width="80" /> - <button - follows="left|top" - font="SansSerifSmall" - height="18" - label="?" - layout="topleft" - left_pad="115" - name="land_resell_help" - top_delta="2" - width="18" /> <check_box height="20" label="Allow Land Join/Divide" @@ -173,16 +123,6 @@ name="allow_parcel_changes_check" top="180" width="80" /> - <button - follows="left|top" - font="SansSerifSmall" - height="18" - label="?" - layout="topleft" - left_pad="115" - name="parcel_changes_help" - top_delta="2" - width="18" /> <check_box height="20" label="Block Land Show in Search" @@ -192,16 +132,6 @@ tool_tip="Let people see this region and its parcels in search results" top="200" width="80" /> - <button - follows="left|top" - font="SansSerifSmall" - height="18" - label="?" - layout="topleft" - left_pad="115" - name="parcel_search_help" - top_delta="2" - width="18" /> <spinner follows="left|top" height="20" @@ -215,16 +145,6 @@ name="agent_limit_spin" top="240" width="170" /> - <button - follows="left|top" - font="SansSerifSmall" - height="18" - label="?" - layout="topleft" - left_pad="25" - name="agent_limit_help" - top_delta="2" - width="18" /> <spinner follows="left|top" height="20" @@ -238,16 +158,6 @@ name="object_bonus_spin" top="260" width="170" /> - <button - follows="left|top" - font="SansSerifSmall" - height="18" - label="?" - layout="topleft" - left_pad="25" - name="object_bonus_help" - top_delta="2" - width="18" /> <text follows="left|top" height="20" @@ -280,16 +190,6 @@ name="PG" value="13" /> </combo_box> - <button - follows="left|top" - font="SansSerifSmall" - height="18" - label="?" - layout="topleft" - left_pad="10" - name="access_help" - top_delta="2" - width="18" /> <button enabled="false" follows="left|top" @@ -299,10 +199,7 @@ left="108" name="apply_btn" top="320" - width="100"> - <button.commit_callback - function="RegionInfo.Cancel" /> - </button> + width="100"/> <button follows="left|top" height="20" @@ -338,5 +235,8 @@ left_delta="0" name="manage_telehub_btn" top_pad="20" - width="150" /> + width="150" > + <button.commit_callback + function="RegionInfo.ManageTelehub" /> + </button> </panel> diff --git a/indra/newview/skins/default/xui/en/panel_region_terrain.xml b/indra/newview/skins/default/xui/en/panel_region_terrain.xml index 148d9500bb8324e8289a0ceacaf6252357502aac..ffd51bf510fc1e60195f15cd00cbeed374fe75ac 100644 --- a/indra/newview/skins/default/xui/en/panel_region_terrain.xml +++ b/indra/newview/skins/default/xui/en/panel_region_terrain.xml @@ -42,16 +42,6 @@ name="water_height_spin" top="40" width="180" /> - <button - follows="left|top" - font="SansSerifSmall" - height="18" - label="?" - layout="topleft" - left_pad="5" - name="water_height_help" - top_delta="2" - width="18" /> <spinner follows="left|top" height="20" @@ -64,16 +54,6 @@ name="terrain_raise_spin" top="60" width="180" /> - <button - follows="left|top" - font="SansSerifSmall" - height="18" - label="?" - layout="topleft" - left_pad="5" - name="terrain_raise_help" - top_delta="2" - width="18" /> <spinner follows="left|top" height="20" @@ -87,16 +67,6 @@ name="terrain_lower_spin" top="80" width="180" /> - <button - follows="left|top" - font="SansSerifSmall" - height="18" - label="?" - layout="topleft" - left_pad="5" - name="terrain_lower_help" - top_delta="2" - width="18" /> <check_box height="20" label="Use Estate Sun" @@ -105,16 +75,6 @@ name="use_estate_sun_check" top="35" width="100" /> - <button - follows="left|top" - font="SansSerifSmall" - height="18" - label="?" - layout="topleft" - left_pad="70" - name="use_estate_sun_help" - top_delta="2" - width="18" /> <check_box height="20" label="Fixed Sun" @@ -123,16 +83,6 @@ name="fixed_sun_check" top="55" width="100" /> - <button - follows="left|top" - font="SansSerifSmall" - height="18" - label="?" - layout="topleft" - left_pad="70" - name="fixed_sun_help" - top_delta="2" - width="18" /> <icon height="20" image_name="icon_day_cycle.tga" @@ -182,16 +132,6 @@ tool_tip="Available only to estate owners, not managers" top_pad="60" width="170" /> - <button - follows="left|top" - font="SansSerifSmall" - height="18" - label="?" - layout="topleft" - left_pad="10" - name="download_raw_help" - top_delta="2" - width="18" /> <button follows="left|top" height="20" @@ -202,16 +142,6 @@ tool_tip="Available only to estate owners, not managers" top="243" width="170" /> - <button - follows="left|top" - font="SansSerifSmall" - height="18" - label="?" - layout="topleft" - left_pad="10" - name="upload_raw_help" - top_delta="2" - width="18" /> <button follows="left|top" height="20" @@ -222,14 +152,4 @@ tool_tip="Set current terrain as mid-point for raise/lower limits" top="283" width="100" /> - <button - follows="left|top" - font="SansSerifSmall" - height="18" - label="?" - layout="topleft" - left_pad="10" - name="bake_terrain_help" - top_delta="2" - width="18" /> </panel> diff --git a/indra/newview/skins/default/xui/en/panel_teleport_history_item.xml b/indra/newview/skins/default/xui/en/panel_teleport_history_item.xml index 73a7d95ff47dd46a7fc6a2a7e4553ee847cb2f2f..f559343b34a6d2c4c2571dc9719a6dec93fc4595 100644 --- a/indra/newview/skins/default/xui/en/panel_teleport_history_item.xml +++ b/indra/newview/skins/default/xui/en/panel_teleport_history_item.xml @@ -28,15 +28,14 @@ visible="false" width="320" /> <icon - height="20" - follows="top|right|left" - image_name="ListItem_Select" + height="16" + follows="top|left" + image_name="Inv_Landmark" layout="topleft" left="0" name="landmark_icon" top="0" - visible="false" - width="20" /> + width="16" /> <text follows="left|right" height="20"