diff options
author | Graham Linden <none@none> | 2014-09-25 09:20:01 -0700 |
---|---|---|
committer | Graham Linden <none@none> | 2014-09-25 09:20:01 -0700 |
commit | 9f4788d7a8a924de654d55bfb102a81f797a9cf9 (patch) | |
tree | 742fb8127dc84052265647ed110e8a6446253103 /indra | |
parent | 6004ad167458914c3b85438b96e81ea8796e368b (diff) | |
parent | 499f5aa9a4b46d61ee94b26d5c86bc032766af70 (diff) |
Merge viewer-release 3.7.17
Diffstat (limited to 'indra')
332 files changed, 7629 insertions, 5422 deletions
diff --git a/indra/CMakeLists.txt b/indra/CMakeLists.txt index 410d25ad97..24ea59ca49 100755 --- a/indra/CMakeLists.txt +++ b/indra/CMakeLists.txt @@ -71,7 +71,6 @@ add_subdirectory(${LIBS_OPEN_PREFIX}media_plugins) if (LINUX) add_subdirectory(${VIEWER_PREFIX}linux_crash_logger) - add_subdirectory(${VIEWER_PREFIX}linux_updater) if (INSTALL_PROPRIETARY) include(LLAppearanceUtility) add_subdirectory(${LLAPPEARANCEUTILITY_SRC_DIR} ${LLAPPEARANCEUTILITY_BIN_DIR}) @@ -86,9 +85,8 @@ elseif (WINDOWS) if (EXISTS ${VIEWER_DIR}win_setup) add_subdirectory(${VIEWER_DIR}win_setup) endif (EXISTS ${VIEWER_DIR}win_setup) - add_subdirectory(${VIEWER_PREFIX}win_updater) - # add_dependencies(viewer windows-updater windows-setup windows-crash-logger) - add_dependencies(viewer windows-updater windows-crash-logger) + # add_dependencies(viewer windows-setup windows-crash-logger) + add_dependencies(viewer windows-crash-logger) elseif (SOLARIS) add_subdirectory(solaris_crash_logger) add_dependencies(viewer solaris-crash-logger) diff --git a/indra/linux_updater/CMakeLists.txt b/indra/linux_updater/CMakeLists.txt deleted file mode 100644 index 4a9e82f9b6..0000000000 --- a/indra/linux_updater/CMakeLists.txt +++ /dev/null @@ -1,57 +0,0 @@ -# -*- cmake -*- - -project(linux_updater) - -include(00-Common) -include(CURL) -include(CARes) -include(OpenSSL) -include(UI) -include(LLCommon) -include(LLMessage) -include(LLVFS) -include(LLXML) -include(LLUI) -include(Linking) - -include_directories( - ${LLCOMMON_INCLUDE_DIRS} - ${LLVFS_INCLUDE_DIRS} - ${LLXML_INCLUDE_DIRS} - ${LLUI_INCLUDE_DIRS} - ${CURL_INCLUDE_DIRS} - ${CARES_INCLUDE_DIRS} - ${OPENSSL_INCLUDE_DIRS} - ${UI_INCLUDE_DIRS} - ) -include_directories(SYSTEM - ${LLCOMMON_SYSTEM_INCLUDE_DIRS} - ${LLXML_SYSTEM_INCLUDE_DIRS} - ) - -set(linux_updater_SOURCE_FILES linux_updater.cpp) - -set(linux_updater_HEADER_FILES CMakeLists.txt) - -set_source_files_properties(${linux_updater_HEADER_FILES} - PROPERTIES HEADER_FILES_ONLY TRUE) - -list(APPEND linux_updater_SOURCE_FILES ${linux_updater_HEADER_FILES}) - -add_executable(linux-updater ${linux_updater_SOURCE_FILES}) - -target_link_libraries(linux-updater - ${CURL_LIBRARIES} - ${CARES_LIBRARIES} - ${OPENSSL_LIBRARIES} - ${CRYPTO_LIBRARIES} - ${LLMESSAGE_LIBRARIES} - ${UI_LIBRARIES} - ${LLXML_LIBRARIES} - ${LLUI_LIBRARIES} - ${LLVFS_LIBRARIES} - ${LLCOMMON_LIBRARIES} - ) - -add_custom_target(linux-updater-target ALL - DEPENDS linux-updater) diff --git a/indra/linux_updater/linux_updater.cpp b/indra/linux_updater/linux_updater.cpp deleted file mode 100644 index 5c94deba02..0000000000 --- a/indra/linux_updater/linux_updater.cpp +++ /dev/null @@ -1,926 +0,0 @@ -/** - * @file linux_updater.cpp - * @author Kyle Ambroff <ambroff@lindenlab.com>, Tofu Linden - * @brief Viewer update program for unix platforms that support GTK+ - * - * $LicenseInfo:firstyear=2008&license=viewerlgpl$ - * Second Life Viewer Source Code - * Copyright (C) 2010, Linden Research, Inc. - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; - * version 2.1 of the License only. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - * - * Linden Research, Inc., 945 Battery Street, San Francisco, CA 94111 USA - * $/LicenseInfo$ - */ - -#include <unistd.h> -#include <signal.h> -#include <errno.h> -#include <set> -#include <iostream> - -#include "linden_common.h" -#include "llerrorcontrol.h" -#include "llfile.h" -#include "lldir.h" -#include "lldiriterator.h" - -/*==========================================================================*| -// IQA-490: Use of LLTrans -- by this program at least -- appears to be buggy. -// With it, the 3.3.2 beta 1 linux-updater.bin crashes; without it seems stable. -#include "llxmlnode.h" -#include "lltrans.h" -|*==========================================================================*/ - -static class LLTrans -{ -public: - LLTrans(); - static std::string getString(const std::string& key); - -private: - std::string _getString(const std::string& key) const; - - typedef std::map<std::string, std::string> MessageMap; - MessageMap mMessages; -} sLLTransInstance; - -#include <curl/curl.h> -#include <map> -#include <boost/foreach.hpp> - -extern "C" { -#include <gtk/gtk.h> -} - -const guint UPDATE_PROGRESS_TIMEOUT = 100; -const guint UPDATE_PROGRESS_TEXT_TIMEOUT = 1000; -const guint ROTATE_IMAGE_TIMEOUT = 8000; - -typedef struct _updater_app_state { - std::string app_name; - std::string url; - std::string file; - std::string image_dir; - std::string dest_dir; - std::string strings_dirs; - std::string strings_file; - - LLDirIterator *image_dir_iter; - - GtkWidget *window; - GtkWidget *progress_bar; - GtkWidget *image; - - double progress_value; - bool activity_mode; - - guint image_rotation_timeout_id; - guint progress_update_timeout_id; - guint update_progress_text_timeout_id; - - bool failure; -} UpdaterAppState; - -// List of entries from strings.xml to always replace -static std::set<std::string> default_trans_args; -void init_default_trans_args() -{ - default_trans_args.insert("SECOND_LIFE"); // World - default_trans_args.insert("APP_NAME"); - default_trans_args.insert("SECOND_LIFE_GRID"); - default_trans_args.insert("SUPPORT_SITE"); -} - -bool translate_init(std::string comma_delim_path_list, - std::string base_xml_name) -{ - return true; -/*==========================================================================*| - init_default_trans_args(); - - // extract paths string vector from comma-delimited flat string - std::vector<std::string> paths; - LLStringUtil::getTokens(comma_delim_path_list, paths, ","); // split over ',' - - for(std::vector<std::string>::iterator it = paths.begin(), end_it = paths.end(); - it != end_it; - ++it) - { - (*it) = gDirUtilp->findSkinnedFilename(*it, base_xml_name); - } - - // suck the translation xml files into memory - LLXMLNodePtr root; - bool success = LLXMLNode::getLayeredXMLNode(root, paths); - if (!success) - { - // couldn't load string table XML - return false; - } - else - { - // get those strings out of the XML - LLTrans::parseStrings(root, default_trans_args); - return true; - } -|*==========================================================================*/ -} - - -void updater_app_ui_init(void); -void updater_app_quit(UpdaterAppState *app_state); -void parse_args_and_init(int argc, char **argv, UpdaterAppState *app_state); -std::string next_image_filename(std::string& image_path, LLDirIterator& iter); -void display_error(GtkWidget *parent, std::string title, std::string message); -BOOL install_package(std::string package_file, std::string destination); -BOOL spawn_viewer(UpdaterAppState *app_state); - -extern "C" { - void on_window_closed(GtkWidget *sender, GdkEvent *event, gpointer state); - gpointer worker_thread_cb(gpointer *data); - int download_progress_cb(gpointer data, double t, double d, double utotal, double ulnow); - gboolean rotate_image_cb(gpointer data); - gboolean progress_update_timeout(gpointer data); - gboolean update_progress_text_timeout(gpointer data); -} - -void updater_app_ui_init(UpdaterAppState *app_state) -{ - GtkWidget *vbox; - GtkWidget *summary_label; - GtkWidget *description_label; - GtkWidget *frame; - - llassert(app_state != NULL); - - // set up window and main container - std::string window_title = LLTrans::getString("UpdaterWindowTitle"); - app_state->window = gtk_window_new(GTK_WINDOW_TOPLEVEL); - gtk_window_set_title(GTK_WINDOW(app_state->window), - window_title.c_str()); - gtk_window_set_resizable(GTK_WINDOW(app_state->window), FALSE); - gtk_window_set_position(GTK_WINDOW(app_state->window), - GTK_WIN_POS_CENTER_ALWAYS); - - gtk_container_set_border_width(GTK_CONTAINER(app_state->window), 12); - g_signal_connect(G_OBJECT(app_state->window), "delete-event", - G_CALLBACK(on_window_closed), app_state); - - vbox = gtk_vbox_new(FALSE, 6); - gtk_container_add(GTK_CONTAINER(app_state->window), vbox); - - // set top label - std::ostringstream label_ostr; - label_ostr << "<big><b>" - << LLTrans::getString("UpdaterNowUpdating") - << "</b></big>"; - - summary_label = gtk_label_new(NULL); - gtk_label_set_use_markup(GTK_LABEL(summary_label), TRUE); - gtk_label_set_markup(GTK_LABEL(summary_label), - label_ostr.str().c_str()); - gtk_misc_set_alignment(GTK_MISC(summary_label), 0, 0.5); - gtk_box_pack_start(GTK_BOX(vbox), summary_label, FALSE, FALSE, 0); - - // create the description label - description_label = gtk_label_new(LLTrans::getString("UpdaterUpdatingDescriptive").c_str()); - gtk_label_set_line_wrap(GTK_LABEL(description_label), TRUE); - gtk_misc_set_alignment(GTK_MISC(description_label), 0, 0.5); - gtk_box_pack_start(GTK_BOX(vbox), description_label, FALSE, FALSE, 0); - - // If an image path has been set, load the background images - if (!app_state->image_dir.empty()) { - frame = gtk_frame_new(NULL); - gtk_frame_set_shadow_type(GTK_FRAME(frame), GTK_SHADOW_IN); - gtk_box_pack_start(GTK_BOX(vbox), frame, TRUE, TRUE, 0); - - // load the first image - app_state->image = gtk_image_new_from_file - (next_image_filename(app_state->image_dir, *app_state->image_dir_iter).c_str()); - gtk_widget_set_size_request(app_state->image, 340, 310); - gtk_container_add(GTK_CONTAINER(frame), app_state->image); - - // rotate the images every 5 seconds - app_state->image_rotation_timeout_id = g_timeout_add - (ROTATE_IMAGE_TIMEOUT, rotate_image_cb, app_state); - } - - // set up progress bar, and update it roughly every 1/10 of a second - app_state->progress_bar = gtk_progress_bar_new(); - gtk_progress_bar_set_text(GTK_PROGRESS_BAR(app_state->progress_bar), - LLTrans::getString("UpdaterProgressBarTextWithEllipses").c_str()); - gtk_box_pack_start(GTK_BOX(vbox), - app_state->progress_bar, FALSE, TRUE, 0); - app_state->progress_update_timeout_id = g_timeout_add - (UPDATE_PROGRESS_TIMEOUT, progress_update_timeout, app_state); - app_state->update_progress_text_timeout_id = g_timeout_add - (UPDATE_PROGRESS_TEXT_TIMEOUT, update_progress_text_timeout, app_state); - - gtk_widget_show_all(app_state->window); -} - -gboolean rotate_image_cb(gpointer data) -{ - UpdaterAppState *app_state; - std::string filename; - - llassert(data != NULL); - app_state = (UpdaterAppState *) data; - - filename = next_image_filename(app_state->image_dir, *app_state->image_dir_iter); - - gdk_threads_enter(); - gtk_image_set_from_file(GTK_IMAGE(app_state->image), filename.c_str()); - gdk_threads_leave(); - - return TRUE; -} - -std::string next_image_filename(std::string& image_path, LLDirIterator& iter) -{ - std::string image_filename; - iter.next(image_filename); - return gDirUtilp->add(image_path, image_filename); -} - -void on_window_closed(GtkWidget *sender, GdkEvent* event, gpointer data) -{ - UpdaterAppState *app_state; - - llassert(data != NULL); - app_state = (UpdaterAppState *) data; - - updater_app_quit(app_state); -} - -void updater_app_quit(UpdaterAppState *app_state) -{ - if (app_state != NULL) - { - g_source_remove(app_state->progress_update_timeout_id); - - if (!app_state->image_dir.empty()) - { - g_source_remove(app_state->image_rotation_timeout_id); - } - } - - gtk_main_quit(); -} - -void display_error(GtkWidget *parent, std::string title, std::string message) -{ - GtkWidget *dialog; - - dialog = gtk_message_dialog_new(GTK_WINDOW(parent), - GTK_DIALOG_DESTROY_WITH_PARENT, - GTK_MESSAGE_ERROR, - GTK_BUTTONS_OK, - "%s", message.c_str()); - gtk_window_set_title(GTK_WINDOW(dialog), title.c_str()); - gtk_dialog_run(GTK_DIALOG(dialog)); - gtk_widget_destroy(dialog); -} - -gpointer worker_thread_cb(gpointer data) -{ - UpdaterAppState *app_state; - CURL *curl; - CURLcode result; - FILE *package_file; - GError *error = NULL; - int fd; - - //g_return_val_if_fail (data != NULL, NULL); - app_state = (UpdaterAppState *) data; - - try { - - if(!app_state->url.empty()) - { - char* tmp_local_filename = NULL; - // create temporary file to store the package. - fd = g_file_open_tmp - ("secondlife-update-XXXXXX", &tmp_local_filename, &error); - if (error != NULL) - { - LL_ERRS() << "Unable to create temporary file: " - << error->message - << LL_ENDL; - - g_error_free(error); - throw 0; - } - - if(tmp_local_filename != NULL) - { - app_state->file = tmp_local_filename; - g_free(tmp_local_filename); - } - - package_file = fdopen(fd, "wb"); - if (package_file == NULL) - { - LL_ERRS() << "Failed to create temporary file: " - << app_state->file.c_str() - << LL_ENDL; - - gdk_threads_enter(); - display_error(app_state->window, - LLTrans::getString("UpdaterFailDownloadTitle"), - LLTrans::getString("UpdaterFailUpdateDescriptive")); - gdk_threads_leave(); - throw 0; - } - - // initialize curl and start downloading the package - LL_INFOS() << "Downloading package: " << app_state->url << LL_ENDL; - - curl = curl_easy_init(); - if (curl == NULL) - { - LL_ERRS() << "Failed to initialize libcurl" << LL_ENDL; - - gdk_threads_enter(); - display_error(app_state->window, - LLTrans::getString("UpdaterFailDownloadTitle"), - LLTrans::getString("UpdaterFailUpdateDescriptive")); - gdk_threads_leave(); - throw 0; - } - - curl_easy_setopt(curl, CURLOPT_URL, app_state->url.c_str()); - curl_easy_setopt(curl, CURLOPT_NOSIGNAL, TRUE); - curl_easy_setopt(curl, CURLOPT_FOLLOWLOCATION, TRUE); - curl_easy_setopt(curl, CURLOPT_WRITEDATA, package_file); - curl_easy_setopt(curl, CURLOPT_NOPROGRESS, FALSE); - curl_easy_setopt(curl, CURLOPT_PROGRESSFUNCTION, - &download_progress_cb); - curl_easy_setopt(curl, CURLOPT_PROGRESSDATA, app_state); - - result = curl_easy_perform(curl); - fclose(package_file); - curl_easy_cleanup(curl); - - if (result) - { - LL_ERRS() << "Failed to download update: " - << app_state->url - << LL_ENDL; - - gdk_threads_enter(); - display_error(app_state->window, - LLTrans::getString("UpdaterFailDownloadTitle"), - LLTrans::getString("UpdaterFailUpdateDescriptive")); - gdk_threads_leave(); - - throw 0; - } - } - - // now pulse the progres bar back and forth while the package is - // being unpacked - gdk_threads_enter(); - std::string installing_msg = LLTrans::getString("UpdaterNowInstalling"); - gtk_progress_bar_set_text( - GTK_PROGRESS_BAR(app_state->progress_bar), - installing_msg.c_str()); - app_state->activity_mode = TRUE; - gdk_threads_leave(); - - // *TODO: if the destination is not writable, terminate this - // thread and show file chooser? - if (!install_package(app_state->file.c_str(), app_state->dest_dir)) - { - LL_WARNS() << "Failed to install package to destination: " - << app_state->dest_dir - << LL_ENDL; - - gdk_threads_enter(); - display_error(app_state->window, - LLTrans::getString("UpdaterFailInstallTitle"), - LLTrans::getString("UpdaterFailUpdateDescriptive")); - //"Failed to update " + app_state->app_name, - gdk_threads_leave(); - throw 0; - } - - // try to spawn the new viewer - if (!spawn_viewer(app_state)) - { - LL_WARNS() << "Viewer was not installed properly in : " - << app_state->dest_dir - << LL_ENDL; - - gdk_threads_enter(); - display_error(app_state->window, - LLTrans::getString("UpdaterFailStartTitle"), - LLTrans::getString("UpdaterFailUpdateDescriptive")); - gdk_threads_leave(); - throw 0; - } - } - catch (...) - { - app_state->failure = TRUE; - } - - gdk_threads_enter(); - updater_app_quit(app_state); - gdk_threads_leave(); - - return NULL; -} - - -gboolean less_anal_gspawnsync(gchar **argv, - gchar **stderr_output, - gint *child_exit_status, - GError **spawn_error) -{ - // store current SIGCHLD handler if there is one, replace with default - // handler to make glib happy - struct sigaction sigchld_backup; - struct sigaction sigchld_appease_glib; - sigchld_appease_glib.sa_handler = SIG_DFL; - sigemptyset(&sigchld_appease_glib.sa_mask); - sigchld_appease_glib.sa_flags = 0; - sigaction(SIGCHLD, &sigchld_appease_glib, &sigchld_backup); - - gboolean rtn = g_spawn_sync(NULL, - argv, - NULL, - (GSpawnFlags) (G_SPAWN_STDOUT_TO_DEV_NULL), - NULL, - NULL, - NULL, - stderr_output, - child_exit_status, - spawn_error); - - // restore SIGCHLD handler - sigaction(SIGCHLD, &sigchld_backup, NULL); - - return rtn; -} - - -// perform a rename, or perform a (prompted) root rename if that fails -int -rename_with_sudo_fallback(const std::string& filename, const std::string& newname) -{ - int rtncode = ::rename(filename.c_str(), newname.c_str()); - LL_DEBUGS() << "rename result is: " << rtncode << " / " << errno << LL_ENDL; - if (rtncode && (EACCES == errno || EPERM == errno || EXDEV == errno)) - { - LL_INFOS() << "Permission problem in rename, or moving between different mount points. Retrying as a mv under a sudo." << LL_ENDL; - // failed due to permissions, try again as a gksudo or kdesu mv wrapper hack - char *sudo_cmd = NULL; - sudo_cmd = g_find_program_in_path("gksudo"); - if (!sudo_cmd) - { - sudo_cmd = g_find_program_in_path("kdesu"); - } - if (sudo_cmd) - { - char *mv_cmd = NULL; - mv_cmd = g_find_program_in_path("mv"); - if (mv_cmd) - { - char *src_string_copy = g_strdup(filename.c_str()); - char *dst_string_copy = g_strdup(newname.c_str()); - char* argv[] = - { - sudo_cmd, - mv_cmd, - src_string_copy, - dst_string_copy, - NULL - }; - - gchar *stderr_output = NULL; - gint child_exit_status = 0; - GError *spawn_error = NULL; - if (!less_anal_gspawnsync(argv, &stderr_output, - &child_exit_status, &spawn_error)) - { - LL_WARNS() << "Failed to spawn child process: " - << spawn_error->message - << LL_ENDL; - } - else if (child_exit_status) - { - LL_WARNS() << "mv command failed: " - << (stderr_output ? stderr_output : "(no reason given)") - << LL_ENDL; - } - else - { - // everything looks good, clear the error code - rtncode = 0; - } - - g_free(src_string_copy); - g_free(dst_string_copy); - if (spawn_error) g_error_free(spawn_error); - } - } - } - return rtncode; -} - -gboolean install_package(std::string package_file, std::string destination) -{ - char *tar_cmd = NULL; - std::ostringstream command; - - // Find the absolute path to the 'tar' command. - tar_cmd = g_find_program_in_path("tar"); - if (!tar_cmd) - { - LL_ERRS() << "`tar' was not found in $PATH" << LL_ENDL; - return FALSE; - } - LL_INFOS() << "Found tar command: " << tar_cmd << LL_ENDL; - - // Unpack the tarball in a temporary place first, then move it to - // its final destination - std::string tmp_dest_dir = gDirUtilp->getTempFilename(); - if (LLFile::mkdir(tmp_dest_dir, 0744)) - { - LL_ERRS() << "Failed to create directory: " - << destination - << LL_ENDL; - - return FALSE; - } - - char *package_file_string_copy = g_strdup(package_file.c_str()); - char *tmp_dest_dir_string_copy = g_strdup(tmp_dest_dir.c_str()); - gchar *argv[8] = { - tar_cmd, - const_cast<gchar*>("--strip"), const_cast<gchar*>("1"), - const_cast<gchar*>("-xjf"), - package_file_string_copy, - const_cast<gchar*>("-C"), tmp_dest_dir_string_copy, - NULL, - }; - - LL_INFOS() << "Untarring package: " << package_file << LL_ENDL; - - // store current SIGCHLD handler if there is one, replace with default - // handler to make glib happy - struct sigaction sigchld_backup; - struct sigaction sigchld_appease_glib; - sigchld_appease_glib.sa_handler = SIG_DFL; - sigemptyset(&sigchld_appease_glib.sa_mask); - sigchld_appease_glib.sa_flags = 0; - sigaction(SIGCHLD, &sigchld_appease_glib, &sigchld_backup); - - gchar *stderr_output = NULL; - gint child_exit_status = 0; - GError *untar_error = NULL; - if (!less_anal_gspawnsync(argv, &stderr_output, - &child_exit_status, &untar_error)) - { - LL_WARNS() << "Failed to spawn child process: " - << untar_error->message - << LL_ENDL; - return FALSE; - } - - if (child_exit_status) - { - LL_WARNS() << "Untar command failed: " - << (stderr_output ? stderr_output : "(no reason given)") - << LL_ENDL; - return FALSE; - } - - g_free(tar_cmd); - g_free(package_file_string_copy); - g_free(tmp_dest_dir_string_copy); - g_free(stderr_output); - if (untar_error) g_error_free(untar_error); - - // move the existing package out of the way if it exists - if (gDirUtilp->fileExists(destination)) - { - std::string backup_dir = destination + ".backup"; - int oldcounter = 1; - while (gDirUtilp->fileExists(backup_dir)) - { - // find a foo.backup.N folder name that isn't taken yet - backup_dir = destination + ".backup." + llformat("%d", oldcounter); - ++oldcounter; - } - - if (rename_with_sudo_fallback(destination, backup_dir)) - { - LL_WARNS() << "Failed to move directory: '" - << destination << "' -> '" << backup_dir - << LL_ENDL; - return FALSE; - } - } - - // The package has been unpacked in a staging directory, now we just - // need to move it to its destination. - if (rename_with_sudo_fallback(tmp_dest_dir, destination)) - { - LL_WARNS() << "Failed to move installation to the destination: " - << destination - << LL_ENDL; - return FALSE; - } - - // \0/ Success! - return TRUE; -} - -gboolean progress_update_timeout(gpointer data) -{ - UpdaterAppState *app_state; - - llassert(data != NULL); - - app_state = (UpdaterAppState *) data; - - gdk_threads_enter(); - if (app_state->activity_mode) - { - gtk_progress_bar_pulse - (GTK_PROGRESS_BAR(app_state->progress_bar)); - } - else - { - gtk_progress_set_value(GTK_PROGRESS(app_state->progress_bar), - app_state->progress_value); - } - gdk_threads_leave(); - - return TRUE; -} - -gboolean update_progress_text_timeout(gpointer data) -{ - UpdaterAppState *app_state; - - llassert(data != NULL); - app_state = (UpdaterAppState *) data; - - if (app_state->activity_mode == TRUE) - { - // We no longer need this timeout, it will be removed. - return FALSE; - } - - if (!app_state->progress_value) - { - return TRUE; - } - - std::string progress_text = llformat((LLTrans::getString("UpdaterProgressBarText")+" (%.0f%%)").c_str(), app_state->progress_value); - - gdk_threads_enter(); - gtk_progress_bar_set_text(GTK_PROGRESS_BAR(app_state->progress_bar), - progress_text.c_str()); - gdk_threads_leave(); - - return TRUE; -} - -int download_progress_cb(gpointer data, - double t, - double d, - double utotal, - double ulnow) -{ - UpdaterAppState *app_state; - - llassert(data != NULL); - app_state = (UpdaterAppState *) data; - - if (t <= 0.0) - { - app_state->progress_value = 0; - } - else - { - app_state->progress_value = d * 100.0 / t; - } - return 0; -} - -BOOL spawn_viewer(UpdaterAppState *app_state) -{ - llassert(app_state != NULL); - - std::string cmd = app_state->dest_dir + "/secondlife"; - GError *error = NULL; - - // We want to spawn the Viewer on the same display as the updater app - gboolean success = gdk_spawn_command_line_on_screen - (gtk_widget_get_screen(app_state->window), cmd.c_str(), &error); - - if (!success) - { - LL_WARNS() << "Failed to launch viewer: " << error->message - << LL_ENDL; - } - - if (error) g_error_free(error); - - return success; -} - -void show_usage_and_exit() -{ - std::cout << "Usage: linux-updater <--url URL | --file FILE> --name NAME --dest PATH --stringsdir PATH1,PATH2 --stringsfile FILE" - << "[--image-dir PATH]" - << std::endl; - exit(1); -} - -void parse_args_and_init(int argc, char **argv, UpdaterAppState *app_state) -{ - int i; - - for (i = 1; i < argc; i++) - { - if ((!strcmp(argv[i], "--url")) && (++i < argc)) - { - app_state->url = argv[i]; - } - else if ((!strcmp(argv[i], "--file")) && (++i < argc)) - { - app_state->file = argv[i]; - } - else if ((!strcmp(argv[i], "--name")) && (++i < argc)) - { - app_state->app_name = argv[i]; - } - else if ((!strcmp(argv[i], "--image-dir")) && (++i < argc)) - { - app_state->image_dir = argv[i]; - app_state->image_dir_iter = new LLDirIterator(argv[i], "*.jpg"); - } - else if ((!strcmp(argv[i], "--dest")) && (++i < argc)) - { - app_state->dest_dir = argv[i]; - } - else if ((!strcmp(argv[i], "--stringsdir")) && (++i < argc)) - { - app_state->strings_dirs = argv[i]; - } - else if ((!strcmp(argv[i], "--stringsfile")) && (++i < argc)) - { - app_state->strings_file = argv[i]; - } - else - { - // show usage, an invalid option was given. - show_usage_and_exit(); - } - } - - if (app_state->app_name.empty() - || (app_state->url.empty() && app_state->file.empty()) - || app_state->dest_dir.empty()) - { - show_usage_and_exit(); - } - - app_state->progress_value = 0.0; - app_state->activity_mode = FALSE; - app_state->failure = FALSE; - - translate_init(app_state->strings_dirs, app_state->strings_file); -} - -int main(int argc, char **argv) -{ - UpdaterAppState* app_state = new UpdaterAppState; - - parse_args_and_init(argc, argv, app_state); - - // Initialize logger, and rename old log file - gDirUtilp->initAppDirs("SecondLife"); - LLError::initForApplication - (gDirUtilp->getExpandedFilename(LL_PATH_APP_SETTINGS, "")); - std::string old_log_file = gDirUtilp->getExpandedFilename - (LL_PATH_LOGS, "updater.log.old"); - std::string log_file = - gDirUtilp->getExpandedFilename(LL_PATH_LOGS, "updater.log"); - LLFile::rename(log_file, old_log_file); - LLError::logToFile(log_file); - - // initialize gthreads and gtk+ - if (!g_thread_supported()) - { - g_thread_init(NULL); - gdk_threads_init(); - } - - gtk_init(&argc, &argv); - - // create UI - updater_app_ui_init(app_state); - - //LL_INFOS() << "SAMPLE TRANSLATION IS: " << LLTrans::getString("LoginInProgress") << LL_ENDL; - - // create download thread - g_thread_create(GThreadFunc(worker_thread_cb), app_state, FALSE, NULL); - - gdk_threads_enter(); - gtk_main(); - gdk_threads_leave(); - - // Delete the file only if created from url download. - if(!app_state->url.empty() && !app_state->file.empty()) - { - if (gDirUtilp->fileExists(app_state->file)) - { - LLFile::remove(app_state->file); - } - } - - bool success = !app_state->failure; - delete app_state->image_dir_iter; - delete app_state; - return success ? 0 : 1; -} - -/***************************************************************************** -* Dummy LLTrans implementation (IQA-490) -*****************************************************************************/ -static LLTrans sStaticStrings; - -// lookup -std::string LLTrans::_getString(const std::string& key) const -{ - MessageMap::const_iterator found = mMessages.find(key); - if (found != mMessages.end()) - { - return found->second; - } - LL_WARNS("linux_updater") << "No message for key '" << key - << "' -- add to LLTrans::LLTrans() in linux_updater.cpp" - << LL_ENDL; - return key; -} - -// static lookup -std::string LLTrans::getString(const std::string& key) -{ - return sLLTransInstance._getString(key); -} - -// initialization -LLTrans::LLTrans() -{ - typedef std::pair<const char*, const char*> Pair; - static const Pair data[] = - { - Pair("UpdaterFailDownloadTitle", - "Failed to download update"), - Pair("UpdaterFailInstallTitle", - "Failed to install update"), - Pair("UpdaterFailStartTitle", - "Failed to start viewer"), - Pair("UpdaterFailUpdateDescriptive", - "An error occurred while updating Second Life. " - "Please download the latest version from www.secondlife.com."), - Pair("UpdaterNowInstalling", - "Installing Second Life..."), - Pair("UpdaterNowUpdating", - "Now updating Second Life..."), - Pair("UpdaterProgressBarText", - "Downloading update"), - Pair("UpdaterProgressBarTextWithEllipses", - "Downloading update..."), - Pair("UpdaterUpdatingDescriptive", - "Your Second Life Viewer is being updated to the latest release. " - "This may take some time, so please be patient."), - Pair("UpdaterWindowTitle", - "Second Life Update") - }; - - BOOST_FOREACH(Pair pair, data) - { - mMessages[pair.first] = pair.second; - } -} diff --git a/indra/llaudio/llaudiodecodemgr.h b/indra/llaudio/llaudiodecodemgr.h index 7a9b807d04..8228e20e8c 100755 --- a/indra/llaudio/llaudiodecodemgr.h +++ b/indra/llaudio/llaudiodecodemgr.h @@ -24,7 +24,7 @@ */ #ifndef LL_LLAUDIODECODEMGR_H -#define LL_LLAUDIODECODEMG_H +#define LL_LLAUDIODECODEMGR_H #include "stdtypes.h" diff --git a/indra/llinventory/llfoldertype.cpp b/indra/llinventory/llfoldertype.cpp index 5f8aaae20b..23bf6da1f9 100755 --- a/indra/llinventory/llfoldertype.cpp +++ b/indra/llinventory/llfoldertype.cpp @@ -93,7 +93,7 @@ LLFolderDictionary::LLFolderDictionary() addEntry(LLFolderType::FT_MESH, new FolderEntry("mesh", TRUE)); addEntry(LLFolderType::FT_INBOX, new FolderEntry("inbox", TRUE)); - addEntry(LLFolderType::FT_OUTBOX, new FolderEntry("outbox", FALSE)); + addEntry(LLFolderType::FT_OUTBOX, new FolderEntry("outbox", TRUE)); addEntry(LLFolderType::FT_BASIC_ROOT, new FolderEntry("basic_rt", TRUE)); diff --git a/indra/llinventory/llparcel.cpp b/indra/llinventory/llparcel.cpp index e400877b3b..b24e14c72b 100755 --- a/indra/llinventory/llparcel.cpp +++ b/indra/llinventory/llparcel.cpp @@ -793,8 +793,6 @@ BOOL LLParcel::addToAccessList(const LLUUID& agent_id, S32 time) } } - removeFromBanList(agent_id); - LLAccessEntry new_entry; new_entry.mID = agent_id; new_entry.mTime = time; @@ -838,8 +836,6 @@ BOOL LLParcel::addToBanList(const LLUUID& agent_id, S32 time) } } - removeFromAccessList(agent_id); - LLAccessEntry new_entry; new_entry.mID = agent_id; new_entry.mTime = time; diff --git a/indra/llui/llfolderview.cpp b/indra/llui/llfolderview.cpp index cca26f335a..474b545f00 100755 --- a/indra/llui/llfolderview.cpp +++ b/indra/llui/llfolderview.cpp @@ -1371,7 +1371,8 @@ BOOL LLFolderView::search(LLFolderViewItem* first_item, const std::string &searc } } - const std::string current_item_label(search_item->getViewModelItem()->getSearchableName()); + std::string current_item_label(search_item->getViewModelItem()->getSearchableName()); + LLStringUtil::toUpper(current_item_label); S32 search_string_length = llmin(upper_case_string.size(), current_item_label.size()); if (!current_item_label.compare(0, search_string_length, upper_case_string)) { diff --git a/indra/llui/llfolderviewitem.cpp b/indra/llui/llfolderviewitem.cpp index 83254c2840..7c88f8fb9b 100644 --- a/indra/llui/llfolderviewitem.cpp +++ b/indra/llui/llfolderviewitem.cpp @@ -256,6 +256,24 @@ BOOL LLFolderViewItem::passedFilter(S32 filter_generation) return getViewModelItem()->passedFilter(filter_generation); } +BOOL LLFolderViewItem::isPotentiallyVisible(S32 filter_generation) +{ + // Item should be visible if: + // 1. item passed current filter + // 2. item was updated (gen < 0) but has descendants that passed filter + // 3. item was recently updated and was visible before update + + LLFolderViewModelItem* model = getViewModelItem(); + if (model->getLastFilterGeneration() < 0 && !getFolderViewModel()->getFilter().isModified()) + { + return model->descendantsPassedFilter(filter_generation) || getVisible(); + } + else + { + return model->passedFilter(filter_generation); + } +} + void LLFolderViewItem::refresh() { LLFolderViewModelItem& vmi = *getViewModelItem(); @@ -655,7 +673,7 @@ void LLFolderViewItem::drawOpenFolderArrow(const Params& default_params, const L // const S32 TOP_PAD = default_params.item_top_pad; - if (hasVisibleChildren() || getViewModelItem()->hasChildren()) + if (hasVisibleChildren()) { LLUIImage* arrow_image = default_params.folder_arrow_image; gl_draw_scaled_rotated_image( @@ -968,7 +986,7 @@ S32 LLFolderViewFolder::arrange( S32* width, S32* height ) getRoot()->getFolderViewModel()->sort(this); LL_RECORD_BLOCK_TIME(FTM_ARRANGE); - + // evaluate mHasVisibleChildren mHasVisibleChildren = false; if (getViewModelItem()->descendantsPassedFilter()) @@ -979,7 +997,7 @@ S32 LLFolderViewFolder::arrange( S32* width, S32* height ) for (items_t::iterator iit = mItems.begin(); iit != mItems.end(); ++iit) { LLFolderViewItem* itemp = (*iit); - found = itemp->passedFilter(); + found = itemp->isPotentiallyVisible(); if (found) break; } @@ -989,7 +1007,7 @@ S32 LLFolderViewFolder::arrange( S32* width, S32* height ) for (folders_t::iterator fit = mFolders.begin(); fit != mFolders.end(); ++fit) { LLFolderViewFolder* folderp = (*fit); - found = folderp->passedFilter(); + found = folderp->isPotentiallyVisible(); if (found) break; } @@ -1022,7 +1040,7 @@ S32 LLFolderViewFolder::arrange( S32* width, S32* height ) for(folders_t::iterator fit = mFolders.begin(); fit != mFolders.end(); ++fit) { LLFolderViewFolder* folderp = (*fit); - folderp->setVisible(folderp->passedFilter()); // passed filter or has descendants that passed filter + folderp->setVisible(folderp->isPotentiallyVisible()); if (folderp->getVisible()) { @@ -1041,7 +1059,7 @@ S32 LLFolderViewFolder::arrange( S32* width, S32* height ) iit != mItems.end(); ++iit) { LLFolderViewItem* itemp = (*iit); - itemp->setVisible(itemp->passedFilter()); + itemp->setVisible(itemp->isPotentiallyVisible()); if (itemp->getVisible()) { diff --git a/indra/llui/llfolderviewitem.h b/indra/llui/llfolderviewitem.h index a9b0201236..0cd20a0f2d 100644 --- a/indra/llui/llfolderviewitem.h +++ b/indra/llui/llfolderviewitem.h @@ -254,6 +254,7 @@ public: S32 getIndentation() { return mIndentation; } virtual BOOL passedFilter(S32 filter_generation = -1); + virtual BOOL isPotentiallyVisible(S32 filter_generation = -1); // refresh information from the object being viewed. virtual void refresh(); diff --git a/indra/llui/lllineeditor.cpp b/indra/llui/lllineeditor.cpp index b09c927782..45f4272aa7 100755 --- a/indra/llui/lllineeditor.cpp +++ b/indra/llui/lllineeditor.cpp @@ -254,6 +254,7 @@ void LLLineEditor::onCommit() setControlValue(getValue()); LLUICtrl::onCommit(); + resetDirty(); // Selection on commit needs to be turned off when evaluating maths // expressions, to allow indication of the error position diff --git a/indra/llui/llstatgraph.cpp b/indra/llui/llstatgraph.cpp index a44bc18733..98962aff9a 100755 --- a/indra/llui/llstatgraph.cpp +++ b/indra/llui/llstatgraph.cpp @@ -44,9 +44,10 @@ LLStatGraph::LLStatGraph(const Params& p) : LLView(p), mMin(p.min), mMax(p.max), - mPerSec(true), + mPerSec(p.per_sec), mPrecision(p.precision), mValue(p.value), + mUnits(p.units), mNewStatFloatp(p.stat.count_stat_float) { setToolTip(p.name()); diff --git a/indra/llui/lltextbase.cpp b/indra/llui/lltextbase.cpp index 71db0ac030..9b125a85b9 100755 --- a/indra/llui/lltextbase.cpp +++ b/indra/llui/lltextbase.cpp @@ -1307,14 +1307,14 @@ void LLTextBase::replaceWithSuggestion(U32 index) if ( (it->first <= (U32)mCursorPos) && (it->second >= (U32)mCursorPos) ) { deselect(); - - // Delete the misspelled word - removeStringNoUndo(it->first, it->second - it->first); - // Insert the suggestion in its place LLWString suggestion = utf8str_to_wstring(mSuggestionList[index]); insertStringNoUndo(it->first, utf8str_to_wstring(mSuggestionList[index])); + // Delete the misspelled word + removeStringNoUndo(it->first + (S32)suggestion.length(), it->second - it->first); + + setCursorPos(it->first + (S32)suggestion.length()); break; @@ -2381,7 +2381,7 @@ S32 LLTextBase::getDocIndexFromLocalCoord( S32 local_x, S32 local_y, BOOL round, // binary search for line that starts before local_y line_list_t::const_iterator line_iter = std::lower_bound(mLineInfoList.begin(), mLineInfoList.end(), doc_y, compare_bottom()); - if (line_iter == mLineInfoList.end()) + if (!mLineInfoList.size() || line_iter == mLineInfoList.end()) { return getLength(); // past the end } @@ -2473,7 +2473,6 @@ LLRect LLTextBase::getDocRectFromDocIndex(S32 pos) const // clamp pos to valid values pos = llclamp(pos, 0, mLineInfoList.back().mDocIndexEnd - 1); - // find line that contains cursor line_list_t::const_iterator line_iter = std::upper_bound(mLineInfoList.begin(), mLineInfoList.end(), pos, line_end_compare()); doc_rect.mLeft = line_iter->mRect.mLeft; @@ -2649,6 +2648,12 @@ void LLTextBase::changeLine( S32 delta ) LLRect visible_region = getVisibleDocumentRect(); S32 new_cursor_pos = getDocIndexFromLocalCoord(mDesiredXPixel, mLineInfoList[new_line].mRect.mBottom + mVisibleTextRect.mBottom - visible_region.mBottom, TRUE); + S32 actual_line = getLineNumFromDocIndex(new_cursor_pos); + if (actual_line != new_line) + { + // line edge, correcting position by 1 to move onto proper line + new_cursor_pos += new_line - actual_line; + } setCursorPos(new_cursor_pos, true); } } diff --git a/indra/llui/lltexteditor.cpp b/indra/llui/lltexteditor.cpp index 576e8f7600..cf5fdef539 100755 --- a/indra/llui/lltexteditor.cpp +++ b/indra/llui/lltexteditor.cpp @@ -1126,7 +1126,6 @@ void LLTextEditor::addChar(llwchar wc) } } - void LLTextEditor::addLineBreakChar(BOOL group_together) { if( !getEnabled() ) diff --git a/indra/llui/llui.h b/indra/llui/llui.h index b162f25887..c727f75c4f 100755 --- a/indra/llui/llui.h +++ b/indra/llui/llui.h @@ -86,6 +86,7 @@ enum EAcceptance { ACCEPT_POSTPONED, // we are asynchronously determining acceptance ACCEPT_NO, // Uninformative, general purpose denial. + ACCEPT_NO_CUSTOM, // Denial with custom message. ACCEPT_NO_LOCKED, // Operation would be valid, but permissions are set to disallow it. ACCEPT_YES_COPY_SINGLE, // We'll take a copy of a single item ACCEPT_YES_SINGLE, // Accepted. OK to drag and drop single item here. diff --git a/indra/llwindow/llopenglview-objc.mm b/indra/llwindow/llopenglview-objc.mm index 017ea3769c..f7031341eb 100644 --- a/indra/llwindow/llopenglview-objc.mm +++ b/indra/llwindow/llopenglview-objc.mm @@ -398,9 +398,35 @@ attributedStringInfo getSegments(NSAttributedString *str) } } -- (void)flagsChanged:(NSEvent *)theEvent { +- (void)flagsChanged:(NSEvent *)theEvent +{ mModifiers = [theEvent modifierFlags]; callModifier([theEvent modifierFlags]); + + NSInteger mask = 0; + switch([theEvent keyCode]) + { + case 56: + mask = NSShiftKeyMask; + break; + case 58: + mask = NSAlternateKeyMask; + break; + case 59: + mask = NSControlKeyMask; + break; + default: + return; + } + + if (mModifiers & mask) + { + callKeyDown([theEvent keyCode], 0); + } + else + { + callKeyUp([theEvent keyCode], 0); + } } - (BOOL) acceptsFirstResponder diff --git a/indra/mac_updater/mac_updater.cpp b/indra/mac_updater/mac_updater.cpp deleted file mode 100644 index f533d47b18..0000000000 --- a/indra/mac_updater/mac_updater.cpp +++ /dev/null @@ -1,1266 +0,0 @@ -/** - * @file mac_updater.cpp - * @brief - * - * $LicenseInfo:firstyear=2006&license=viewerlgpl$ - * Second Life Viewer Source Code - * Copyright (C) 2010, Linden Research, Inc. - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; - * version 2.1 of the License only. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - * - * Linden Research, Inc., 945 Battery Street, San Francisco, CA 94111 USA - * $/LicenseInfo$ - */ - -#include "linden_common.h" - -#include <boost/format.hpp> - -#include <libgen.h> -#include <sys/types.h> -#include <sys/stat.h> -#include <unistd.h> - -#include <curl/curl.h> -#include <pthread.h> - -#include "llerror.h" -#include "lltimer.h" -#include "lldir.h" -#include "llfile.h" - -#include "llstring.h" - -#include <Carbon/Carbon.h> - -#include "llerrorcontrol.h" - -#if LL_DARWIN -// FSPathMakeRef, FSObjectCopy, deprecations... -#pragma GCC diagnostic ignored "-Wdeprecated-declarations" -#endif - -enum -{ - kEventClassCustom = 'Cust', - kEventCustomProgress = 'Prog', - kEventParamCustomCurValue = 'Cur ', - kEventParamCustomMaxValue = 'Max ', - kEventParamCustomText = 'Text', - kEventCustomDone = 'Done', -}; - -WindowRef gWindow = NULL; -EventHandlerRef gEventHandler = NULL; -OSStatus gFailure = noErr; -Boolean gCancelled = false; - -const char *gUpdateURL; -const char *gProductName; -const char *gBundleID; -const char *gDmgFile; -const char *gMarkerPath; - -void *updatethreadproc(void*); - -pthread_t updatethread; - -OSStatus setProgress(int cur, int max) -{ - OSStatus err; - ControlRef progressBar = NULL; - ControlID id; - - id.signature = 'prog'; - id.id = 0; - - err = GetControlByID(gWindow, &id, &progressBar); - if(err == noErr) - { - Boolean indeterminate; - - if(max == 0) - { - indeterminate = true; - err = SetControlData(progressBar, kControlEntireControl, kControlProgressBarIndeterminateTag, sizeof(Boolean), (Ptr)&indeterminate); - } - else - { - double percentage = (double)cur / (double)max; - SetControlMinimum(progressBar, 0); - SetControlMaximum(progressBar, 100); - SetControlValue(progressBar, (SInt16)(percentage * 100)); - - indeterminate = false; - err = SetControlData(progressBar, kControlEntireControl, kControlProgressBarIndeterminateTag, sizeof(Boolean), (Ptr)&indeterminate); - - Draw1Control(progressBar); - } - } - - return(err); -} - -OSStatus setProgressText(CFStringRef text) -{ - OSStatus err; - ControlRef progressText = NULL; - ControlID id; - - id.signature = 'what'; - id.id = 0; - - err = GetControlByID(gWindow, &id, &progressText); - if(err == noErr) - { - err = SetControlData(progressText, kControlEntireControl, kControlStaticTextCFStringTag, sizeof(CFStringRef), (Ptr)&text); - Draw1Control(progressText); - } - - return(err); -} - -OSStatus sendProgress(long cur, long max, CFStringRef text = NULL) -{ - OSStatus result; - EventRef evt; - - result = CreateEvent( - NULL, - kEventClassCustom, - kEventCustomProgress, - 0, - kEventAttributeNone, - &evt); - - // This event needs to be targeted at the window so it goes to the window's handler. - if(result == noErr) - { - EventTargetRef target = GetWindowEventTarget(gWindow); - result = SetEventParameter ( - evt, - kEventParamPostTarget, - typeEventTargetRef, - sizeof(target), - &target); - } - - if(result == noErr) - { - result = SetEventParameter ( - evt, - kEventParamCustomCurValue, - typeLongInteger, - sizeof(cur), - &cur); - } - - if(result == noErr) - { - result = SetEventParameter ( - evt, - kEventParamCustomMaxValue, - typeLongInteger, - sizeof(max), - &max); - } - - if(result == noErr) - { - if(text != NULL) - { - result = SetEventParameter ( - evt, - kEventParamCustomText, - typeCFStringRef, - sizeof(text), - &text); - } - } - - if(result == noErr) - { - // Send the event - PostEventToQueue( - GetMainEventQueue(), - evt, - kEventPriorityStandard); - - } - - return(result); -} - -OSStatus sendDone(void) -{ - OSStatus result; - EventRef evt; - - result = CreateEvent( - NULL, - kEventClassCustom, - kEventCustomDone, - 0, - kEventAttributeNone, - &evt); - - // This event needs to be targeted at the window so it goes to the window's handler. - if(result == noErr) - { - EventTargetRef target = GetWindowEventTarget(gWindow); - result = SetEventParameter ( - evt, - kEventParamPostTarget, - typeEventTargetRef, - sizeof(target), - &target); - } - - if(result == noErr) - { - // Send the event - PostEventToQueue( - GetMainEventQueue(), - evt, - kEventPriorityStandard); - - } - - return(result); -} - -OSStatus dialogHandler(EventHandlerCallRef handler, EventRef event, void *userdata) -{ - OSStatus result = eventNotHandledErr; - OSStatus err; - UInt32 evtClass = GetEventClass(event); - UInt32 evtKind = GetEventKind(event); - - if((evtClass == kEventClassCommand) && (evtKind == kEventCommandProcess)) - { - HICommand cmd; - err = GetEventParameter(event, kEventParamDirectObject, typeHICommand, NULL, sizeof(cmd), NULL, &cmd); - - if(err == noErr) - { - switch(cmd.commandID) - { - case kHICommandCancel: - gCancelled = true; -// QuitAppModalLoopForWindow(gWindow); - result = noErr; - break; - } - } - } - else if((evtClass == kEventClassCustom) && (evtKind == kEventCustomProgress)) - { - // Request to update the progress dialog - long cur = 0; - long max = 0; - CFStringRef text = NULL; - (void) GetEventParameter(event, kEventParamCustomCurValue, typeLongInteger, NULL, sizeof(cur), NULL, &cur); - (void) GetEventParameter(event, kEventParamCustomMaxValue, typeLongInteger, NULL, sizeof(max), NULL, &max); - (void) GetEventParameter(event, kEventParamCustomText, typeCFStringRef, NULL, sizeof(text), NULL, &text); - - err = setProgress(cur, max); - if(err == noErr) - { - if(text != NULL) - { - setProgressText(text); - } - } - - result = noErr; - } - else if((evtClass == kEventClassCustom) && (evtKind == kEventCustomDone)) - { - // We're done. Exit the modal loop. - QuitAppModalLoopForWindow(gWindow); - result = noErr; - } - - return(result); -} - -#if 0 -size_t curl_download_callback(void *data, size_t size, size_t nmemb, - void *user_data) -{ - S32 bytes = size * nmemb; - char *cdata = (char *) data; - for (int i =0; i < bytes; i += 1) - { - gServerResponse.append(cdata[i]); - } - return bytes; -} -#endif - -int curl_progress_callback_func(void *clientp, - double dltotal, - double dlnow, - double ultotal, - double ulnow) -{ - int max = (int)(dltotal / 1024.0); - int cur = (int)(dlnow / 1024.0); - sendProgress(cur, max); - - if(gCancelled) - return(1); - - return(0); -} - -int parse_args(int argc, char **argv) -{ - int j; - - for (j = 1; j < argc; j++) - { - if ((!strcmp(argv[j], "-url")) && (++j < argc)) - { - gUpdateURL = argv[j]; - } - else if ((!strcmp(argv[j], "-name")) && (++j < argc)) - { - gProductName = argv[j]; - } - else if ((!strcmp(argv[j], "-bundleid")) && (++j < argc)) - { - gBundleID = argv[j]; - } - else if ((!strcmp(argv[j], "-dmg")) && (++j < argc)) - { - gDmgFile = argv[j]; - } - else if ((!strcmp(argv[j], "-marker")) && (++j < argc)) - { - gMarkerPath = argv[j];; - } - } - - return 0; -} - -int main(int argc, char **argv) -{ - // We assume that all the logs we're looking for reside on the current drive - gDirUtilp->initAppDirs("SecondLife"); - - LLError::initForApplication( gDirUtilp->getExpandedFilename(LL_PATH_APP_SETTINGS, "")); - - // Rename current log file to ".old" - std::string old_log_file = gDirUtilp->getExpandedFilename(LL_PATH_LOGS, "updater.log.old"); - std::string log_file = gDirUtilp->getExpandedFilename(LL_PATH_LOGS, "updater.log"); - LLFile::rename(log_file.c_str(), old_log_file.c_str()); - - // Set the log file to updater.log - LLError::logToFile(log_file); - - ///////////////////////////////////////// - // - // Process command line arguments - // - gUpdateURL = NULL; - gProductName = NULL; - gBundleID = NULL; - gDmgFile = NULL; - gMarkerPath = NULL; - parse_args(argc, argv); - if ((gUpdateURL == NULL) && (gDmgFile == NULL)) - { - llinfos << "Usage: mac_updater -url <url> | -dmg <dmg file> [-name <product_name>] [-program <program_name>]" << llendl; - exit(1); - } - else - { - llinfos << "Update url is: " << gUpdateURL << llendl; - if (gProductName) - { - llinfos << "Product name is: " << gProductName << llendl; - } - else - { - gProductName = "Second Life"; - } - if (gBundleID) - { - llinfos << "Bundle ID is: " << gBundleID << llendl; - } - else - { - gBundleID = "com.secondlife.indra.viewer"; - } - } - - llinfos << "Starting " << gProductName << " Updater" << llendl; - - // Real UI... - OSStatus err; - IBNibRef nib = NULL; - - err = CreateNibReference(CFSTR("AutoUpdater"), &nib); - - char windowTitle[MAX_PATH]; /* Flawfinder: ignore */ - snprintf(windowTitle, sizeof(windowTitle), "%s Updater", gProductName); - CFStringRef windowTitleRef = NULL; - windowTitleRef = CFStringCreateWithCString(NULL, windowTitle, kCFStringEncodingUTF8); - - if(err == noErr) - { - err = CreateWindowFromNib(nib, CFSTR("Updater"), &gWindow); - } - - if (err == noErr) - { - err = SetWindowTitleWithCFString(gWindow, windowTitleRef); - } - CFRelease(windowTitleRef); - - if(err == noErr) - { - // Set up an event handler for the window. - EventTypeSpec handlerEvents[] = - { - { kEventClassCommand, kEventCommandProcess }, - { kEventClassCustom, kEventCustomProgress }, - { kEventClassCustom, kEventCustomDone } - }; - InstallStandardEventHandler(GetWindowEventTarget(gWindow)); - InstallWindowEventHandler( - gWindow, - NewEventHandlerUPP(dialogHandler), - GetEventTypeCount (handlerEvents), - handlerEvents, - 0, - &gEventHandler); - } - - if(err == noErr) - { - ShowWindow(gWindow); - SelectWindow(gWindow); - } - - if(err == noErr) - { - pthread_create(&updatethread, - NULL, - &updatethreadproc, - NULL); - - } - - if(err == noErr) - { - RunAppModalLoopForWindow(gWindow); - } - - void *threadresult; - - pthread_join(updatethread, &threadresult); - - if(!gCancelled && (gFailure != noErr)) - { - // Something went wrong. Since we always just tell the user to download a new version, we don't really care what. - AlertStdCFStringAlertParamRec params; - SInt16 retval_mac = 1; - DialogRef alert = NULL; - OSStatus err; - - params.version = kStdCFStringAlertVersionOne; - params.movable = false; - params.helpButton = false; - params.defaultText = (CFStringRef)kAlertDefaultOKText; - params.cancelText = 0; - params.otherText = 0; - params.defaultButton = 1; - params.cancelButton = 0; - params.position = kWindowDefaultPosition; - params.flags = 0; - - err = CreateStandardAlert( - kAlertStopAlert, - CFSTR("Error"), - CFSTR("An error occurred while updating Second Life. Please download the latest version from www.secondlife.com."), - ¶ms, - &alert); - - if(err == noErr) - { - err = RunStandardAlert( - alert, - NULL, - &retval_mac); - } - - if(gMarkerPath != 0) - { - // Create a install fail marker that can be used by the viewer to - // detect install problems. - std::ofstream stream(gMarkerPath); - if(stream) stream << -1; - } - exit(-1); - } else { - exit(0); - } - - if(gWindow != NULL) - { - DisposeWindow(gWindow); - } - - if(nib != NULL) - { - DisposeNibReference(nib); - } - - return 0; -} - -bool isDirWritable(FSRef &dir) -{ - bool result = false; - - // Test for a writable directory by creating a directory, then deleting it again. - // This is kinda lame, but will pretty much always give the right answer. - - OSStatus err = noErr; - char temp[PATH_MAX] = ""; /* Flawfinder: ignore */ - - err = FSRefMakePath(&dir, (UInt8*)temp, sizeof(temp)); - - if(err == noErr) - { - strncat(temp, "/.test_XXXXXX", (sizeof(temp) - strlen(temp)) - 1); - - if(mkdtemp(temp) != NULL) - { - // We were able to make the directory. This means the directory is writable. - result = true; - - // Clean up. - rmdir(temp); - } - } - -#if 0 - // This seemed like a good idea, but won't tell us if we're on a volume mounted read-only. - UInt8 perm; - err = FSGetUserPrivilegesPermissions(&targetParentRef, &perm, NULL); - if(err == noErr) - { - if(perm & kioACUserNoMakeChangesMask) - { - // Parent directory isn't writable. - llinfos << "Target parent directory not writable." << llendl; - err = -1; - replacingTarget = false; - } - } -#endif - - return result; -} - -static std::string HFSUniStr255_to_utf8str(const HFSUniStr255* src) -{ - llutf16string string16((U16*)&(src->unicode), src->length); - std::string result = utf16str_to_utf8str(string16); - return result; -} - -int restoreObject(const char* aside, const char* target, const char* path, const char* object) -{ - char source[PATH_MAX] = ""; /* Flawfinder: ignore */ - char dest[PATH_MAX] = ""; /* Flawfinder: ignore */ - snprintf(source, sizeof(source), "%s/%s/%s", aside, path, object); - snprintf(dest, sizeof(dest), "%s/%s", target, path); - FSRef sourceRef; - FSRef destRef; - OSStatus err; - err = FSPathMakeRef((UInt8 *)source, &sourceRef, NULL); - if(err != noErr) return false; - err = FSPathMakeRef((UInt8 *)dest, &destRef, NULL); - if(err != noErr) return false; - - llinfos << "Copying " << source << " to " << dest << llendl; - - err = FSCopyObjectSync( - &sourceRef, - &destRef, - NULL, - NULL, - kFSFileOperationOverwrite); - - if(err != noErr) return false; - return true; -} - -// Replace any mention of "Second Life" with the product name. -void filterFile(const char* filename) -{ - char temp[PATH_MAX] = ""; /* Flawfinder: ignore */ - // First copy the target's version, so we can run it through sed. - snprintf(temp, sizeof(temp), "cp '%s' '%s.tmp'", filename, filename); - system(temp); /* Flawfinder: ignore */ - - // Now run it through sed. - snprintf(temp, sizeof(temp), - "sed 's/Second Life/%s/g' '%s.tmp' > '%s'", gProductName, filename, filename); - system(temp); /* Flawfinder: ignore */ -} - -static bool isFSRefViewerBundle(FSRef *targetRef) -{ - bool result = false; - CFURLRef targetURL = NULL; - CFBundleRef targetBundle = NULL; - CFStringRef targetBundleID = NULL; - CFStringRef sourceBundleID = NULL; - - targetURL = CFURLCreateFromFSRef(NULL, targetRef); - - if(targetURL == NULL) - { - llinfos << "Error creating target URL." << llendl; - } - else - { - targetBundle = CFBundleCreate(NULL, targetURL); - } - - if(targetBundle == NULL) - { - llinfos << "Failed to create target bundle." << llendl; - } - else - { - targetBundleID = CFBundleGetIdentifier(targetBundle); - } - - if(targetBundleID == NULL) - { - llinfos << "Couldn't retrieve target bundle ID." << llendl; - } - else - { - sourceBundleID = CFStringCreateWithCString(NULL, gBundleID, kCFStringEncodingUTF8); - if(CFStringCompare(sourceBundleID, targetBundleID, 0) == kCFCompareEqualTo) - { - // This is the bundle we're looking for. - result = true; - } - else - { - llinfos << "Target bundle ID mismatch." << llendl; - } - } - - // Don't release targetBundleID -- since we don't retain it, it's released when targetBundle is released. - if(targetURL != NULL) - CFRelease(targetURL); - if(targetBundle != NULL) - CFRelease(targetBundle); - - return result; -} - -// Search through the directory specified by 'parent' for an item that appears to be a Second Life viewer. -static OSErr findAppBundleOnDiskImage(FSRef *parent, FSRef *app) -{ - FSIterator iterator; - bool found = false; - - OSErr err = FSOpenIterator( parent, kFSIterateFlat, &iterator ); - if(!err) - { - do - { - ItemCount actualObjects = 0; - Boolean containerChanged = false; - FSCatalogInfo info; - FSRef ref; - HFSUniStr255 unicodeName; - err = FSGetCatalogInfoBulk( - iterator, - 1, - &actualObjects, - &containerChanged, - kFSCatInfoNodeFlags, - &info, - &ref, - NULL, - &unicodeName ); - - if(actualObjects == 0) - break; - - if(!err) - { - // Call succeeded and not done with the iteration. - std::string name = HFSUniStr255_to_utf8str(&unicodeName); - - llinfos << "Considering \"" << name << "\"" << llendl; - - if(info.nodeFlags & kFSNodeIsDirectoryMask) - { - // This is a directory. See if it's a .app - if(name.find(".app") != std::string::npos) - { - // Looks promising. Check to see if it has the right bundle identifier. - if(isFSRefViewerBundle(&ref)) - { - llinfos << name << " is the one" << llendl; - // This is the one. Return it. - *app = ref; - found = true; - break; - } else { - llinfos << name << " is not the bundle we are looking for; move along" << llendl; - } - - } - } - } - } - while(!err); - - llinfos << "closing the iterator" << llendl; - - FSCloseIterator(iterator); - - llinfos << "closed" << llendl; - } - - if(!err && !found) - err = fnfErr; - - return err; -} - -void *updatethreadproc(void*) -{ - char tempDir[PATH_MAX] = ""; /* Flawfinder: ignore */ - FSRef tempDirRef; - char temp[PATH_MAX] = ""; /* Flawfinder: ignore */ - // *NOTE: This buffer length is used in a scanf() below. - char deviceNode[1024] = ""; /* Flawfinder: ignore */ - LLFILE *downloadFile = NULL; - OSStatus err; - ProcessSerialNumber psn; - char target[PATH_MAX] = ""; /* Flawfinder: ignore */ - FSRef targetRef; - FSRef targetParentRef; - FSVolumeRefNum targetVol; - FSRef trashFolderRef; - Boolean replacingTarget = false; - - memset(&tempDirRef, 0, sizeof(tempDirRef)); - memset(&targetRef, 0, sizeof(targetRef)); - memset(&targetParentRef, 0, sizeof(targetParentRef)); - - try - { - // Attempt to get a reference to the Second Life application bundle containing this updater. - // Any failures during this process will cause us to default to updating /Applications/Second Life.app - { - FSRef myBundle; - - err = GetCurrentProcess(&psn); - if(err == noErr) - { - err = GetProcessBundleLocation(&psn, &myBundle); - } - - if(err == noErr) - { - // Sanity check: Make sure the name of the item referenced by targetRef is "Second Life.app". - FSRefMakePath(&myBundle, (UInt8*)target, sizeof(target)); - - llinfos << "Updater bundle location: " << target << llendl; - } - - // Our bundle should be in Second Life.app/Contents/Resources/AutoUpdater.app - // so we need to go up 3 levels to get the path to the main application bundle. - if(err == noErr) - { - err = FSGetCatalogInfo(&myBundle, kFSCatInfoNone, NULL, NULL, NULL, &targetRef); - } - if(err == noErr) - { - err = FSGetCatalogInfo(&targetRef, kFSCatInfoNone, NULL, NULL, NULL, &targetRef); - } - if(err == noErr) - { - err = FSGetCatalogInfo(&targetRef, kFSCatInfoNone, NULL, NULL, NULL, &targetRef); - } - - // And once more to get the parent of the target - if(err == noErr) - { - err = FSGetCatalogInfo(&targetRef, kFSCatInfoNone, NULL, NULL, NULL, &targetParentRef); - } - - if(err == noErr) - { - FSRefMakePath(&targetRef, (UInt8*)target, sizeof(target)); - llinfos << "Path to target: " << target << llendl; - } - - // Sanity check: make sure the target is a bundle with the right identifier - if(err == noErr) - { - // Assume the worst... - err = -1; - - if(isFSRefViewerBundle(&targetRef)) - { - // This is the bundle we're looking for. - err = noErr; - replacingTarget = true; - } - } - - // Make sure the target's parent directory is writable. - if(err == noErr) - { - if(!isDirWritable(targetParentRef)) - { - // Parent directory isn't writable. - llinfos << "Target parent directory not writable." << llendl; - err = -1; - replacingTarget = false; - } - } - - if(err != noErr) - { - Boolean isDirectory; - llinfos << "Target search failed, defaulting to /Applications/" << gProductName << ".app." << llendl; - - // Set up the parent directory - err = FSPathMakeRef((UInt8*)"/Applications", &targetParentRef, &isDirectory); - if((err != noErr) || (!isDirectory)) - { - // We're so hosed. - llinfos << "Applications directory not found, giving up." << llendl; - throw 0; - } - - snprintf(target, sizeof(target), "/Applications/%s.app", gProductName); - - memset(&targetRef, 0, sizeof(targetRef)); - err = FSPathMakeRef((UInt8*)target, &targetRef, NULL); - if(err == fnfErr) - { - // This is fine, just means we're not replacing anything. - err = noErr; - replacingTarget = false; - } - else - { - replacingTarget = true; - } - - // Make sure the target's parent directory is writable. - if(err == noErr) - { - if(!isDirWritable(targetParentRef)) - { - // Parent directory isn't writable. - llinfos << "Target parent directory not writable." << llendl; - err = -1; - replacingTarget = false; - } - } - - } - - // If we haven't fixed all problems by this point, just bail. - if(err != noErr) - { - llinfos << "Unable to pick a target, giving up." << llendl; - throw 0; - } - } - - // Find the volID of the volume the target resides on - { - FSCatalogInfo info; - err = FSGetCatalogInfo( - &targetParentRef, - kFSCatInfoVolume, - &info, - NULL, - NULL, - NULL); - - if(err != noErr) - throw 0; - - targetVol = info.volume; - } - - // Find the temporary items and trash folders on that volume. - err = FSFindFolder( - targetVol, - kTrashFolderType, - true, - &trashFolderRef); - - if(err != noErr) - throw 0; - -#if 0 // *HACK for DEV-11935 see below for details. - - FSRef tempFolderRef; - - err = FSFindFolder( - targetVol, - kTemporaryFolderType, - true, - &tempFolderRef); - - if(err != noErr) - throw 0; - - err = FSRefMakePath(&tempFolderRef, (UInt8*)temp, sizeof(temp)); - - if(err != noErr) - throw 0; - -#else - - // *HACK for DEV-11935 the above kTemporaryFolderType query was giving - // back results with path names that seem to be too long to be used as - // mount points. I suspect this incompatibility was introduced in the - // Leopard 10.5.2 update, but I have not verified this. - char const HARDCODED_TMP[] = "/tmp"; - strncpy(temp, HARDCODED_TMP, sizeof(HARDCODED_TMP)); - -#endif // 0 *HACK for DEV-11935 - - // Skip downloading the file if the dmg was passed on the command line. - std::string dmgName; - if(gDmgFile != NULL) { - dmgName = basename((char *)gDmgFile); - char * dmgDir = dirname((char *)gDmgFile); - strncpy(tempDir, dmgDir, sizeof(tempDir)); - err = FSPathMakeRef((UInt8*)tempDir, &tempDirRef, NULL); - if(err != noErr) throw 0; - chdir(tempDir); - goto begin_install; - } else { - // Continue on to download file. - dmgName = "SecondLife.dmg"; - } - - - strncat(temp, "/SecondLifeUpdate_XXXXXX", (sizeof(temp) - strlen(temp)) - 1); - if(mkdtemp(temp) == NULL) - { - throw 0; - } - - strncpy(tempDir, temp, sizeof(tempDir)); - temp[sizeof(tempDir) - 1] = '\0'; - - llinfos << "tempDir is " << tempDir << llendl; - - err = FSPathMakeRef((UInt8*)tempDir, &tempDirRef, NULL); - - if(err != noErr) - throw 0; - - chdir(tempDir); - - snprintf(temp, sizeof(temp), "SecondLife.dmg"); - - downloadFile = LLFile::fopen(temp, "wb"); /* Flawfinder: ignore */ - if(downloadFile == NULL) - { - throw 0; - } - - { - CURL *curl = curl_easy_init(); - - curl_easy_setopt(curl, CURLOPT_NOSIGNAL, 1); - // curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, &curl_download_callback); - curl_easy_setopt(curl, CURLOPT_FILE, downloadFile); - curl_easy_setopt(curl, CURLOPT_NOPROGRESS, 0); - curl_easy_setopt(curl, CURLOPT_PROGRESSFUNCTION, &curl_progress_callback_func); - curl_easy_setopt(curl, CURLOPT_URL, gUpdateURL); - curl_easy_setopt(curl, CURLOPT_FOLLOWLOCATION, 1); - - sendProgress(0, 1, CFSTR("Downloading...")); - - CURLcode result = curl_easy_perform(curl); - - curl_easy_cleanup(curl); - - if(gCancelled) - { - llinfos << "User cancel, bailing out."<< llendl; - throw 0; - } - - if(result != CURLE_OK) - { - llinfos << "Error " << result << " while downloading disk image."<< llendl; - throw 0; - } - - fclose(downloadFile); - downloadFile = NULL; - } - - begin_install: - sendProgress(0, 0, CFSTR("Mounting image...")); - LLFile::mkdir("mnt", 0700); - - // NOTE: we could add -private at the end of this command line to keep the image from showing up in the Finder, - // but if our cleanup fails, this makes it much harder for the user to unmount the image. - std::string mountOutput; - boost::format cmdFormat("hdiutil attach %s -mountpoint mnt"); - cmdFormat % dmgName; - FILE* mounter = popen(cmdFormat.str().c_str(), "r"); /* Flawfinder: ignore */ - - if(mounter == NULL) - { - llinfos << "Failed to mount disk image, exiting."<< llendl; - throw 0; - } - - // We need to scan the output from hdiutil to find the device node it uses to attach the disk image. - // If we don't have this information, we can't detach it later. - while(mounter != NULL) - { - size_t len = fread(temp, 1, sizeof(temp)-1, mounter); - temp[len] = 0; - mountOutput.append(temp); - if(len < sizeof(temp)-1) - { - // End of file or error. - int result = pclose(mounter); - if(result != 0) - { - // NOTE: We used to abort here, but pclose() started returning - // -1, possibly when the size of the DMG passed a certain point - llinfos << "Unexpected result closing pipe: " << result << llendl; - } - mounter = NULL; - } - } - - if(!mountOutput.empty()) - { - const char *s = mountOutput.c_str(); - const char *prefix = "/dev/"; - char *sub = strstr(s, prefix); - - if(sub != NULL) - { - sub += strlen(prefix); /* Flawfinder: ignore */ - sscanf(sub, "%1023s", deviceNode); /* Flawfinder: ignore */ - } - } - - if(deviceNode[0] != 0) - { - llinfos << "Disk image attached on /dev/" << deviceNode << llendl; - } - else - { - llinfos << "Disk image device node not found!" << llendl; - throw 0; - } - - // Get an FSRef to the new application on the disk image - FSRef sourceRef; - FSRef mountRef; - snprintf(temp, sizeof(temp), "%s/mnt", tempDir); - - llinfos << "Disk image mount point is: " << temp << llendl; - - err = FSPathMakeRef((UInt8 *)temp, &mountRef, NULL); - if(err != noErr) - { - llinfos << "Couldn't make FSRef to disk image mount point." << llendl; - throw 0; - } - - sendProgress(0, 0, CFSTR("Searching for the app bundle...")); - err = findAppBundleOnDiskImage(&mountRef, &sourceRef); - if(err != noErr) - { - llinfos << "Couldn't find application bundle on mounted disk image." << llendl; - throw 0; - } - else - { - llinfos << "found the bundle." << llendl; - } - - sendProgress(0, 0, CFSTR("Preparing to copy files...")); - - FSRef asideRef; - char aside[MAX_PATH]; /* Flawfinder: ignore */ - - // this will hold the name of the destination target - CFStringRef appNameRef; - - if(replacingTarget) - { - // Get the name of the target we're replacing - HFSUniStr255 appNameUniStr; - err = FSGetCatalogInfo(&targetRef, 0, NULL, &appNameUniStr, NULL, NULL); - if(err != noErr) - throw 0; - appNameRef = FSCreateStringFromHFSUniStr(NULL, &appNameUniStr); - - // Move aside old version (into work directory) - err = FSMoveObject(&targetRef, &tempDirRef, &asideRef); - if(err != noErr) - { - llwarns << "failed to move aside old version (error code " << - err << ")" << llendl; - throw 0; - } - - // Grab the path for later use. - err = FSRefMakePath(&asideRef, (UInt8*)aside, sizeof(aside)); - } - else - { - // Construct the name of the target based on the product name - char appName[MAX_PATH]; /* Flawfinder: ignore */ - snprintf(appName, sizeof(appName), "%s.app", gProductName); - appNameRef = CFStringCreateWithCString(NULL, appName, kCFStringEncodingUTF8); - } - - sendProgress(0, 0, CFSTR("Copying files...")); - - llinfos << "Starting copy..." << llendl; - - // Copy the new version from the disk image to the target location. - err = FSCopyObjectSync( - &sourceRef, - &targetParentRef, - appNameRef, - &targetRef, - kFSFileOperationDefaultOptions); - - // Grab the path for later use. - err = FSRefMakePath(&targetRef, (UInt8*)target, sizeof(target)); - if(err != noErr) - throw 0; - - llinfos << "Copy complete. Target = " << target << llendl; - - if(err != noErr) - { - // Something went wrong during the copy. Attempt to put the old version back and bail. - (void)FSDeleteObject(&targetRef); - if(replacingTarget) - { - (void)FSMoveObject(&asideRef, &targetParentRef, NULL); - } - throw 0; - } - else - { - // The update has succeeded. Clear the cache directory. - - sendProgress(0, 0, CFSTR("Clearing cache...")); - - llinfos << "Clearing cache..." << llendl; - - gDirUtilp->deleteFilesInDir(gDirUtilp->getExpandedFilename(LL_PATH_CACHE,""), "*.*"); - - llinfos << "Clear complete." << llendl; - - } - } - catch(...) - { - if(!gCancelled) - if(gFailure == noErr) - gFailure = -1; - } - - // Failures from here on out are all non-fatal and not reported. - sendProgress(0, 3, CFSTR("Cleaning up...")); - - // Close disk image file if necessary - if(downloadFile != NULL) - { - llinfos << "Closing download file." << llendl; - - fclose(downloadFile); - downloadFile = NULL; - } - - sendProgress(1, 3); - // Unmount image - if(deviceNode[0] != 0) - { - llinfos << "Detaching disk image." << llendl; - - snprintf(temp, sizeof(temp), "hdiutil detach '%s'", deviceNode); - system(temp); /* Flawfinder: ignore */ - } - - sendProgress(2, 3); - - // Move work directory to the trash - if(tempDir[0] != 0) - { - llinfos << "Moving work directory to the trash." << llendl; - - FSRef trashRef; - OSStatus err = FSMoveObjectToTrashSync(&tempDirRef, &trashRef, 0); - if(err != noErr) { - llwarns << "failed to move files to trash, (error code " << - err << ")" << llendl; - } - } - - if(!gCancelled && !gFailure && (target[0] != 0)) - { - llinfos << "Touching application bundle." << llendl; - - snprintf(temp, sizeof(temp), "touch '%s'", target); - system(temp); /* Flawfinder: ignore */ - - llinfos << "Launching updated application." << llendl; - - snprintf(temp, sizeof(temp), "open '%s'", target); - system(temp); /* Flawfinder: ignore */ - } - - sendDone(); - - return(NULL); -} - -#if LL_DARWIN -#pragma GCC diagnostic warning "-Wdeprecated-declarations" -#endif diff --git a/indra/media_plugins/quicktime/media_plugin_quicktime.cpp b/indra/media_plugins/quicktime/media_plugin_quicktime.cpp index 93d2a8fa6e..ff1ed8bfbc 100755 --- a/indra/media_plugins/quicktime/media_plugin_quicktime.cpp +++ b/indra/media_plugins/quicktime/media_plugin_quicktime.cpp @@ -28,26 +28,26 @@ #include "linden_common.h" -#if defined(LL_DARWIN) - #include <QuickTime/QuickTime.h> -#elif defined(LL_WINDOWS) - #include "llwin32headers.h" - #include "MacTypes.h" - #include "QTML.h" - #include "Movies.h" - #include "QDoffscreen.h" - #include "FixMath.h" - #include "QTLoadLibraryUtils.h" -#endif - #include "llgl.h" - + #include "llplugininstance.h" #include "llpluginmessage.h" #include "llpluginmessageclasses.h" #include "media_plugin_base.h" - + #if LL_QUICKTIME_ENABLED + +#if defined(LL_DARWIN) +#include <QuickTime/QuickTime.h> +#elif defined(LL_WINDOWS) +#include "llwin32headers.h" +#include "MacTypes.h" +#include "QTML.h" +#include "Movies.h" +#include "QDoffscreen.h" +#include "FixMath.h" +#include "QTLoadLibraryUtils.h" +#endif diff --git a/indra/newview/CMakeLists.txt b/indra/newview/CMakeLists.txt index debf0eeca7..b7b7b88d35 100755 --- a/indra/newview/CMakeLists.txt +++ b/indra/newview/CMakeLists.txt @@ -251,6 +251,7 @@ set(viewer_SOURCE_FILES llfloaterinspect.cpp llfloaterinventory.cpp llfloaterjoystick.cpp + llfloaterlagmeter.cpp llfloaterland.cpp llfloaterlandholdings.cpp llfloatermap.cpp @@ -857,6 +858,7 @@ set(viewer_HEADER_FILES llfloaterinspect.h llfloaterinventory.h llfloaterjoystick.h + llfloaterlagmeter.h llfloaterland.h llfloaterlandholdings.h llfloatermap.h @@ -1768,7 +1770,6 @@ if (WINDOWS) media_plugin_webkit winmm_shim windows-crash-logger - windows-updater ) if (FMODEX) @@ -1814,7 +1815,6 @@ if (WINDOWS) add_dependencies(${VIEWER_BINARY_NAME} SLPlugin - windows-updater windows-crash-logger ) diff --git a/indra/newview/VIEWER_VERSION.txt b/indra/newview/VIEWER_VERSION.txt index 03d7b8fb9b..9a4c4371ee 100644 --- a/indra/newview/VIEWER_VERSION.txt +++ b/indra/newview/VIEWER_VERSION.txt @@ -1 +1 @@ -3.7.15 +3.7.17 diff --git a/indra/newview/app_settings/filters/BlackAndWhite.xml b/indra/newview/app_settings/filters/BlackAndWhite.xml index 101ed8233a..7894628d29 100644 --- a/indra/newview/app_settings/filters/BlackAndWhite.xml +++ b/indra/newview/app_settings/filters/BlackAndWhite.xml @@ -1,20 +1,6 @@ <llsd> <array> <array> - <string>linearize</string> - <real>0.01</real> - <real>1.0</real> - <real>1.0</real> - <real>1.0</real> - </array> - <array> - <string>contrast</string> - <real>0.8</real> - <real>1.0</real> - <real>1.0</real> - <real>1.0</real> - </array> - <array> <string>grayscale</string> </array> </array> diff --git a/indra/newview/app_settings/filters/Sepia.xml b/indra/newview/app_settings/filters/Sepia.xml index 3d577b2998..81d7caf0eb 100644 --- a/indra/newview/app_settings/filters/Sepia.xml +++ b/indra/newview/app_settings/filters/Sepia.xml @@ -1,31 +1,6 @@ <llsd> <array> <array> - <string>linearize</string> - <real>0.01</real> - <real>1.0</real> - <real>1.0</real> - <real>1.0</real> - </array> - <array> - <string>contrast</string> - <real>0.8</real> - <real>1.0</real> - <real>1.0</real> - <real>1.0</real> - </array> - <array> - <string>stencil</string> - <string>vignette</string> - <string>fade</string> - <real>0.5</real> - <real>1.0</real> - <real>0.0</real> - <real>0.0</real> - <real>1.0</real> - <real>4.0</real> - </array> - <array> <string>sepia</string> </array> </array> diff --git a/indra/newview/app_settings/keywords.ini b/indra/newview/app_settings/keywords.ini index 17c70ef1c5..4972472f67 100755 --- a/indra/newview/app_settings/keywords.ini +++ b/indra/newview/app_settings/keywords.ini @@ -628,22 +628,22 @@ RCERR_CAST_TIME_EXCEEDED TODO: add documentation RCERR_SIM_PERF_LOW TODO: add documentation RCERR_UNKNOWN TODO: add documentation -ESTATE_ACCESS_ALLOWED_AGENT_ADD TODO: add documentation -ESTATE_ACCESS_ALLOWED_AGENT_REMOVE TODO: add documentation -ESTATE_ACCESS_ALLOWED_GROUP_ADD TODO: add documentation -ESTATE_ACCESS_ALLOWED_GROUP_REMOVE TODO: add documentation -ESTATE_ACCESS_BANNED_AGENT_ADD TODO: add documentation -ESTATE_ACCESS_BANNED_AGENT_REMOVE TODO: add documentation +ESTATE_ACCESS_ALLOWED_AGENT_ADD Passed to llManageEstateAccess to add the agent to this estate's Allowed Residents list +ESTATE_ACCESS_ALLOWED_AGENT_REMOVE Passed to llManageEstateAccess to remove the agent from this estate's Allowed Residents list +ESTATE_ACCESS_ALLOWED_GROUP_ADD Passed to llManageEstateAccess to add the group to this estate's Allowed groups list +ESTATE_ACCESS_ALLOWED_GROUP_REMOVE Passed to llManageEstateAccess to remove the group from this estate's Allowed groups list +ESTATE_ACCESS_BANNED_AGENT_ADD Passed to llManageEstateAccess to add the agent to this estate's Banned residents list +ESTATE_ACCESS_BANNED_AGENT_REMOVE Passed to llManageEstateAccess to remove the agent from this estate's Banned residents list DENSITY TODO: add documentation FRICTION TODO: add documentation RESTITUTION TODO: add documentation GRAVITY_MULTIPLIER TODO: add documentation -KFM_COMMAND TODO: add documentation -KFM_CMD_PLAY TODO: add documentation -KFM_CMD_STOP TODO: add documentation -KFM_CMD_PAUSE TODO: add documentation +KFM_COMMAND Command used in the options parameter of llSetKeyframedMotion, followed by one of: KFM_CMD_STOP, KFM_CMD_PLAY, KFM_CMD_PAUSE to play, stop or pause the motion +KFM_CMD_PLAY Command used in the options parameter llSetKeyframedMotion. Resumes the animation previously stopped by KFM_CMD_STOP or KFM_CMD_PAUSE +KFM_CMD_STOP Command used in the options parameter llSetKeyframedMotion. Stops the animation and resets it at the start of motion +KFM_CMD_PAUSE Command used in the options parameter llSetKeyframedMotion. Stops the animation but doesn t reset it at the start of motion. KFM_CMD_SET_MODE TODO: add documentation KFM_MODE TODO: add documentation KFM_FORWARD TODO: add documentation @@ -657,18 +657,18 @@ KFM_TRANSLATION TODO: add documentation CHARACTER_CMD_STOP TODO: add documentation CHARACTER_CMD_JUMP TODO: add documentation -CHARACTER_DESIRED_SPEED TODO: add documentation -CHARACTER_RADIUS TODO: add documentation -CHARACTER_LENGTH TODO: add documentation -CHARACTER_ORIENTATION TODO: add documentation -CHARACTER_AVOIDANCE_MODE TODO: add documentation +CHARACTER_DESIRED_SPEED Constant used to indicate that the following argument is the desired speed for a Pathfinding character. +CHARACTER_RADIUS Constant used to indicate that the following argument is the radius of the capsule for a Pathfinding character. +CHARACTER_LENGTH Constant used to indicate that the following argument is the length of the capsule for a Pathfinding character. +CHARACTER_ORIENTATION Constant used to indicate that the following argument is the orientation of the capsule for a Pathfinding character. +CHARACTER_AVOIDANCE_MODE Allows you to specify that a character should not try to avoid other characters, should not try to avoid dynamic obstacles, or both. Is combined with a mask bit flags PURSUIT_OFFSET TODO: add documentation REQUIRE_LINE_OF_SIGHT TODO: add documentation PURSUIT_FUZZ_FACTOR TODO: add documentation PURSUIT_INTERCEPT TODO: add documentation FORCE_DIRECT_PATH TODO: add documentation -VERTICAL TODO: add documentation -HORIZONTAL TODO: add documentation +VERTICAL Constant to indicate that the orientation of the capsule for a Pathfinding character is vertical. +HORIZONTAL Constant to indicate that the orientation of the capsule for a Pathfinding character is horizontal. AVOID_CHARACTERS TODO: add documentation AVOID_DYNAMIC_OBSTACLES TODO: add documentation @@ -683,12 +683,12 @@ PU_FAILURE_UNREACHABLE Goal is no longer reachable for some reason - e PU_GOAL_REACHED Character has reached the goal and will stop or choose a new goal (if wandering). PU_SLOWDOWN_DISTANCE_REACHED Character is near current goal. -CHARACTER_TYPE TODO: add documentation -CHARACTER_TYPE_A TODO: add documentation -CHARACTER_TYPE_B TODO: add documentation -CHARACTER_TYPE_C TODO: add documentation -CHARACTER_TYPE_D TODO: add documentation -CHARACTER_TYPE_NONE TODO: add documentation +CHARACTER_TYPE Specifies which walkability coefficient will be used by this character. Used in combination with one of the character type flags. +CHARACTER_TYPE_A Used for character types that you prefer move in a way consistent with humanoids. +CHARACTER_TYPE_B Used for character types that you prefer move in a way consistent with wild animals or off road vehicles. +CHARACTER_TYPE_C Used for mechanical character types or road going vehicles. +CHARACTER_TYPE_D Used for character types that are not consistent with the A, B, or C type. +CHARACTER_TYPE_NONE Used to set no specific character type. TRAVERSAL_TYPE TODO: add documentation TRAVERSAL_TYPE_SLOW TODO: add documentation diff --git a/indra/newview/app_settings/settings.xml b/indra/newview/app_settings/settings.xml index b63cba75ec..6a905eabb1 100755 --- a/indra/newview/app_settings/settings.xml +++ b/indra/newview/app_settings/settings.xml @@ -102,7 +102,7 @@ <key>Type</key> <string>Boolean</string> <key>Value</key> - <integer>0</integer> + <integer>1</integer> </map> <key>AgentPause</key> <map> @@ -11474,17 +11474,6 @@ <key>Value</key> <integer>0</integer> </map> - <key>SnapshotFiltersEnabled</key> - <map> - <key>Comment</key> - <string>Enable filters in the Snapshot Advanced panel (experimental).</string> - <key>Persist</key> - <integer>1</integer> - <key>Type</key> - <string>Boolean</string> - <key>Value</key> - <integer>0</integer> - </map> <key>SnapshotFormat</key> <map> <key>Comment</key> @@ -13234,7 +13223,7 @@ <key>Value</key> <string>Default</string> </map> - <key>UseExternalBrowser</key> + <key>UseExternalBrowser</key> <!-- deprecated (see MAINT-4127) --> <map> <key>Comment</key> <string>Use default browser when opening web pages instead of in-world browser.</string> @@ -13245,6 +13234,17 @@ <key>Value</key> <boolean>1</boolean> </map> + <key>PreferredBrowserBehavior</key> + <map> + <key>Comment</key> + <string>Use system browser for any links (0), use builtin browser for SL links and system one for others (1) or use builtin browser only (2).</string> + <key>Persist</key> + <integer>1</integer> + <key>Type</key> + <string>U32</string> + <key>Value</key> + <integer>1</integer> + </map> <key>UseFreezeFrame</key> <map> <key>Comment</key> @@ -14235,6 +14235,17 @@ <key>Value</key> <integer>0</integer> </map> + <key>LeaveMouselook</key> + <map> + <key>Comment</key> + <string>Exit Mouselook mode via S or Down Arrow keys while sitting </string> + <key>Persist</key> + <integer>1</integer> + <key>Type</key> + <string>Boolean</string> + <key>Value</key> + <integer>0</integer> + </map> <key>TextureLoggingThreshold</key> <map> <key>Comment</key> @@ -15473,6 +15484,17 @@ <key>Value</key> <string /> </map> + <key>WearFolderLimit</key> + <map> + <key>Comment</key> + <string>Limits number of items in the folder that can be replaced/added to current outfit</string> + <key>Persist</key> + <integer>1</integer> + <key>Type</key> + <string>U32</string> + <key>Value</key> + <integer>125</integer> + </map> <key>EveryoneCopy</key> <map> <key>Comment</key> diff --git a/indra/newview/llagent.cpp b/indra/newview/llagent.cpp index bd6025feea..e5a90e8a28 100755 --- a/indra/newview/llagent.cpp +++ b/indra/newview/llagent.cpp @@ -3712,6 +3712,12 @@ bool LLAgent::teleportCore(bool is_local) return false; } + // force stand up and stop a sitting animation (if any), see MAINT-3969 + if (isAgentAvatarValid() && gAgentAvatarp->getParent() && gAgentAvatarp->isSitting()) + { + gAgentAvatarp->getOffObject(); + } + #if 0 // This should not exist. It has been added, removed, added, and now removed again. // This change needs to come from the simulator. Otherwise, the agent ends up out of @@ -3887,7 +3893,7 @@ void LLAgent::teleportRequest( bool look_at_from_camera) { LLViewerRegion* regionp = getRegion(); - bool is_local = (region_handle == to_region_handle(getPositionGlobal())); + bool is_local = (region_handle == regionp->getHandle()); if(regionp && teleportCore(is_local)) { LL_INFOS("") << "TeleportLocationRequest: '" << region_handle << "':" @@ -4054,7 +4060,12 @@ void LLAgent::teleportViaLocationLookAt(const LLVector3d& pos_global) void LLAgent::doTeleportViaLocationLookAt(const LLVector3d& pos_global) { mbTeleportKeepsLookAt = true; - gAgentCamera.setFocusOnAvatar(FALSE, ANIMATE); // detach camera form avatar, so it keeps direction + + if(!gAgentCamera.isfollowCamLocked()) + { + gAgentCamera.setFocusOnAvatar(FALSE, ANIMATE); // detach camera form avatar, so it keeps direction + } + U64 region_handle = to_region_handle(pos_global); LLVector3 pos_local = (LLVector3)(pos_global - from_region_handle(region_handle)); teleportRequest(region_handle, pos_local, getTeleportKeepsLookAt()); diff --git a/indra/newview/llagentcamera.cpp b/indra/newview/llagentcamera.cpp index 7b0496ea45..2356a84688 100755 --- a/indra/newview/llagentcamera.cpp +++ b/indra/newview/llagentcamera.cpp @@ -2721,6 +2721,11 @@ void LLAgentCamera::lookAtLastChat() } } +bool LLAgentCamera::isfollowCamLocked() +{ + return mFollowCam.getPositionLocked(); +} + BOOL LLAgentCamera::setPointAt(EPointAtType target_type, LLViewerObject *object, LLVector3 position) { // disallow pointing at attachments and avatars diff --git a/indra/newview/llagentcamera.h b/indra/newview/llagentcamera.h index 00fa6ea189..4d0f9a80de 100755 --- a/indra/newview/llagentcamera.h +++ b/indra/newview/llagentcamera.h @@ -155,6 +155,7 @@ private: //-------------------------------------------------------------------- public: void setUsingFollowCam(bool using_follow_cam); + bool isfollowCamLocked(); private: LLFollowCam mFollowCam; // Ventrella diff --git a/indra/newview/llagentwearables.cpp b/indra/newview/llagentwearables.cpp index 890fc9a8d9..49fedb8df8 100755 --- a/indra/newview/llagentwearables.cpp +++ b/indra/newview/llagentwearables.cpp @@ -1035,6 +1035,7 @@ void LLAgentWearables::setWearableOutfit(const LLInventoryItem::item_array_t& it if (mismatched == 0) { LL_DEBUGS("Avatar") << "no changes, bailing out" << LL_ENDL; + mCOFChangeInProgress = false; return; } diff --git a/indra/newview/llaisapi.cpp b/indra/newview/llaisapi.cpp index da66ea357a..96de15bf75 100755 --- a/indra/newview/llaisapi.cpp +++ b/indra/newview/llaisapi.cpp @@ -380,8 +380,15 @@ void AISUpdate::parseMeta(const LLSD& update) it != cat_ids.end(); ++it) { LLViewerInventoryCategory *cat = gInventory.getCategory(*it); - mCatDescendentDeltas[cat->getParentUUID()]--; - mObjectsDeletedIds.insert(*it); + if(cat) + { + mCatDescendentDeltas[cat->getParentUUID()]--; + mObjectsDeletedIds.insert(*it); + } + else + { + LL_WARNS("Inventory") << "removed category not found " << *it << LL_ENDL; + } } // parse _categories_items_removed -> mObjectsDeletedIds @@ -392,8 +399,15 @@ void AISUpdate::parseMeta(const LLSD& update) it != item_ids.end(); ++it) { LLViewerInventoryItem *item = gInventory.getItem(*it); - mCatDescendentDeltas[item->getParentUUID()]--; - mObjectsDeletedIds.insert(*it); + if(item) + { + mCatDescendentDeltas[item->getParentUUID()]--; + mObjectsDeletedIds.insert(*it); + } + else + { + LL_WARNS("Inventory") << "removed item not found " << *it << LL_ENDL; + } } // parse _broken_links_removed -> mObjectsDeletedIds @@ -403,8 +417,15 @@ void AISUpdate::parseMeta(const LLSD& update) it != broken_link_ids.end(); ++it) { LLViewerInventoryItem *item = gInventory.getItem(*it); - mCatDescendentDeltas[item->getParentUUID()]--; - mObjectsDeletedIds.insert(*it); + if(item) + { + mCatDescendentDeltas[item->getParentUUID()]--; + mObjectsDeletedIds.insert(*it); + } + else + { + LL_WARNS("Inventory") << "broken link not found " << *it << LL_ENDL; + } } // parse _created_items @@ -795,7 +816,7 @@ void AISUpdate::doUpdate() // Since this is a copy of the category *before* the accounting update, above, // we need to transfer back the updated version/descendent count. LLViewerInventoryCategory* curr_cat = gInventory.getCategory(new_category->getUUID()); - if (NULL == curr_cat) + if (!curr_cat) { LL_WARNS("Inventory") << "Failed to update unknown category " << new_category->getUUID() << LL_ENDL; } diff --git a/indra/newview/llappearancemgr.cpp b/indra/newview/llappearancemgr.cpp index 9451a30341..29534a4382 100755 --- a/indra/newview/llappearancemgr.cpp +++ b/indra/newview/llappearancemgr.cpp @@ -1710,8 +1710,16 @@ bool LLAppearanceMgr::getCanAddToCOF(const LLUUID& outfit_cat_id) return false; } + LLInventoryModel::cat_array_t cats; + LLInventoryModel::item_array_t items; LLFindWearablesEx not_worn(/*is_worn=*/ false, /*include_body_parts=*/ false); - return gInventory.hasMatchingDirectDescendent(outfit_cat_id, not_worn); + gInventory.collectDescendentsIf(outfit_cat_id, + cats, + items, + LLInventoryModel::EXCLUDE_TRASH, + not_worn); + + return items.size() > 0; } bool LLAppearanceMgr::getCanReplaceCOF(const LLUUID& outfit_cat_id) @@ -1729,8 +1737,16 @@ bool LLAppearanceMgr::getCanReplaceCOF(const LLUUID& outfit_cat_id) } // Check whether the outfit contains any wearables we aren't wearing already (STORM-702). - LLFindWearablesEx not_worn(/*is_worn=*/ false, /*include_body_parts=*/ true); - return gInventory.hasMatchingDirectDescendent(outfit_cat_id, not_worn); + LLInventoryModel::cat_array_t cats; + LLInventoryModel::item_array_t items; + LLFindWearablesEx is_worn(/*is_worn=*/ false, /*include_body_parts=*/ true); + gInventory.collectDescendentsIf(outfit_cat_id, + cats, + items, + LLInventoryModel::EXCLUDE_TRASH, + is_worn); + + return items.size() > 0; } void LLAppearanceMgr::purgeBaseOutfitLink(const LLUUID& category, LLPointer<LLInventoryCallback> cb) diff --git a/indra/newview/llappviewer.cpp b/indra/newview/llappviewer.cpp index 24150daea4..3a5008507a 100755 --- a/indra/newview/llappviewer.cpp +++ b/indra/newview/llappviewer.cpp @@ -3368,11 +3368,11 @@ LLSD LLAppViewer::getViewerInfo() const // TODO: Implement media plugin version query info["QT_WEBKIT_VERSION"] = "4.7.1 (version number hard-coded)"; - if (gPacketsIn > 0) + S32 packets_in = LLViewerStats::instance().getRecording().getSum(LLStatViewer::PACKETS_IN); + if (packets_in > 0) { - LLTrace::Recording& last_frame = LLTrace::get_frame_recording().getLastRecording(); - info["PACKETS_LOST"] = last_frame.getSum(LLStatViewer::PACKETS_LOST); - info["PACKETS_IN"] = last_frame.getSum(LLStatViewer::PACKETS_IN); + info["PACKETS_LOST"] = LLViewerStats::instance().getRecording().getSum(LLStatViewer::PACKETS_LOST); + info["PACKETS_IN"] = packets_in; info["PACKETS_PCT"] = 100.f*info["PACKETS_LOST"].asReal() / info["PACKETS_IN"].asReal(); } diff --git a/indra/newview/llavataractions.cpp b/indra/newview/llavataractions.cpp index dad85a016c..8235b13118 100755 --- a/indra/newview/llavataractions.cpp +++ b/indra/newview/llavataractions.cpp @@ -143,7 +143,7 @@ void LLAvatarActions::removeFriendsDialog(const uuid_vec_t& ids) LLAvatarName av_name; if(LLAvatarNameCache::get(agent_id, &av_name)) { - args["NAME"] = av_name.getDisplayName(); + args["NAME"] = av_name.getCompleteName(); } msgType = "RemoveFromFriends"; @@ -381,7 +381,7 @@ void LLAvatarActions::showOnMap(const LLUUID& id) } gFloaterWorldMap->trackAvatar(id, av_name.getDisplayName()); - LLFloaterReg::showInstance("world_map"); + LLFloaterReg::showInstance("world_map", "center"); } // static @@ -533,6 +533,14 @@ void LLAvatarActions::share(const LLUUID& id) { // we should always get here, but check to verify anyways LLIMModel::getInstance()->addMessage(session_id, SYSTEM_FROM, LLUUID::null, LLTrans::getString("share_alert"), false); + + LLFloaterIMSessionTab* session_floater = LLFloaterIMSessionTab::findConversation(session_id); + if (session_floater && session_floater->isMinimized()) + { + session_floater->setMinimized(false); + } + LLFloaterIMContainer *im_container = LLFloaterReg::getTypedInstance<LLFloaterIMContainer>("im_container"); + im_container->selectConversationPair(session_id, true); } } diff --git a/indra/newview/llfavoritesbar.cpp b/indra/newview/llfavoritesbar.cpp index 1b3cfb5ebd..6c5b5be720 100755 --- a/indra/newview/llfavoritesbar.cpp +++ b/indra/newview/llfavoritesbar.cpp @@ -40,7 +40,6 @@ #include "llagent.h" #include "llavatarnamecache.h" #include "llclipboard.h" -#include "llclipboard.h" #include "llinventorybridge.h" #include "llinventoryfunctions.h" #include "llfloatersidepanelcontainer.h" @@ -51,7 +50,7 @@ #include "lltoggleablemenu.h" #include "llviewerinventory.h" #include "llviewermenu.h" -#include "llviewermenu.h" +#include "llviewernetwork.h" #include "lltooldraganddrop.h" #include "llsdserialize.h" @@ -327,6 +326,7 @@ public: gInventory.updateItem(item); gInventory.notifyObservers(); + LLFavoritesOrderStorage::instance().saveOrder(); } LLView::getWindow()->setCursor(UI_CURSOR_ARROW); @@ -1452,6 +1452,18 @@ void LLFavoritesOrderStorage::getSLURL(const LLUUID& asset_id) void LLFavoritesOrderStorage::destroyClass() { LLFavoritesOrderStorage::instance().cleanup(); + + + std::string old_filename = gDirUtilp->getExpandedFilename(LL_PATH_USER_SETTINGS, "stored_favorites.xml"); + llifstream file; + file.open(old_filename); + if (file.is_open()) + { + std::string new_filename = gDirUtilp->getExpandedFilename(LL_PATH_USER_SETTINGS, "stored_favorites_" + LLGridManager::getInstance()->getGrid() + ".xml"); + LLFile::copy(old_filename,new_filename); + LLFile::remove(old_filename); + } + if (gSavedPerAccountSettings.getBOOL("ShowFavoritesOnLogin")) { LLFavoritesOrderStorage::instance().saveFavoritesSLURLs(); @@ -1498,7 +1510,7 @@ void LLFavoritesOrderStorage::saveFavoritesSLURLs() return; } - std::string filename = gDirUtilp->getExpandedFilename(LL_PATH_USER_SETTINGS, "stored_favorites.xml"); + std::string filename = gDirUtilp->getExpandedFilename(LL_PATH_USER_SETTINGS, "stored_favorites_" + LLGridManager::getInstance()->getGrid() + ".xml"); llifstream in_file; in_file.open(filename); LLSD fav_llsd; @@ -1546,7 +1558,7 @@ void LLFavoritesOrderStorage::saveFavoritesSLURLs() void LLFavoritesOrderStorage::removeFavoritesRecordOfUser() { - std::string filename = gDirUtilp->getExpandedFilename(LL_PATH_USER_SETTINGS, "stored_favorites.xml"); + std::string filename = gDirUtilp->getExpandedFilename(LL_PATH_USER_SETTINGS, "stored_favorites_" + LLGridManager::getInstance()->getGrid() + ".xml"); LLSD fav_llsd; llifstream file; file.open(filename); @@ -1641,6 +1653,16 @@ void LLFavoritesOrderStorage::cleanup() mSortIndexes.swap(aTempMap); } +void LLFavoritesOrderStorage::saveOrder() +{ + LLInventoryModel::cat_array_t cats; + LLInventoryModel::item_array_t items; + LLIsType is_type(LLAssetType::AT_LANDMARK); + LLUUID favorites_id = gInventory.findCategoryUUIDForType(LLFolderType::FT_FAVORITE); + gInventory.collectDescendentsIf(favorites_id, cats, items, LLInventoryModel::EXCLUDE_TRASH, is_type); + saveItemsOrder(items); +} + void LLFavoritesOrderStorage::saveItemsOrder( const LLInventoryModel::item_array_t& items ) { int sortField = 0; diff --git a/indra/newview/llfavoritesbar.h b/indra/newview/llfavoritesbar.h index 211d3c4ce3..5ca1d3e8ed 100755 --- a/indra/newview/llfavoritesbar.h +++ b/indra/newview/llfavoritesbar.h @@ -203,6 +203,8 @@ public: // Is used to save order for Favorites folder. void saveItemsOrder(const LLInventoryModel::item_array_t& items); + void saveOrder(); + void rearrangeFavoriteLandmarks(const LLUUID& source_item_id, const LLUUID& target_item_id); /** diff --git a/indra/newview/llfloateravatar.cpp b/indra/newview/llfloateravatar.cpp index bdc5b581a9..31adf5b61e 100755 --- a/indra/newview/llfloateravatar.cpp +++ b/indra/newview/llfloateravatar.cpp @@ -34,6 +34,7 @@ #include "llfloateravatar.h" #include "lluictrlfactory.h" +#include "llmediactrl.h" LLFloaterAvatar::LLFloaterAvatar(const LLSD& key) @@ -43,6 +44,13 @@ LLFloaterAvatar::LLFloaterAvatar(const LLSD& key) LLFloaterAvatar::~LLFloaterAvatar() { + LLMediaCtrl* avatar_picker = findChild<LLMediaCtrl>("avatar_picker_contents"); + if (avatar_picker) + { + avatar_picker->navigateStop(); + avatar_picker->clearCache(); //images are reloading each time already + avatar_picker->unloadMediaSource(); + } } BOOL LLFloaterAvatar::postBuild() diff --git a/indra/newview/llfloaterfacebook.cpp b/indra/newview/llfloaterfacebook.cpp index 9e2082b49e..6888e076aa 100644 --- a/indra/newview/llfloaterfacebook.cpp +++ b/indra/newview/llfloaterfacebook.cpp @@ -58,7 +58,6 @@ static LLPanelInjector<LLFacebookStatusPanel> t_panel_status("llfacebookstatuspa static LLPanelInjector<LLFacebookPhotoPanel> t_panel_photo("llfacebookphotopanel"); static LLPanelInjector<LLFacebookCheckinPanel> t_panel_checkin("llfacebookcheckinpanel"); static LLPanelInjector<LLFacebookFriendsPanel> t_panel_friends("llfacebookfriendspanel"); -static LLPanelInjector<LLFacebookAccountPanel> t_panel_account("llfacebookaccountpanel"); const S32 MAX_POSTCARD_DATASIZE = 1024 * 1024; // one megabyte const std::string DEFAULT_CHECKIN_LOCATION_URL = "http://maps.secondlife.com/"; @@ -99,13 +98,29 @@ S32 compute_jpeg_quality(S32 width, S32 height) LLFacebookStatusPanel::LLFacebookStatusPanel() : mMessageTextEditor(NULL), mPostButton(NULL), - mCancelButton(NULL) + mCancelButton(NULL), + mAccountCaptionLabel(NULL), + mAccountNameLabel(NULL), + mPanelButtons(NULL), + mConnectButton(NULL), + mDisconnectButton(NULL) { + mCommitCallbackRegistrar.add("SocialSharing.Connect", boost::bind(&LLFacebookStatusPanel::onConnect, this)); + mCommitCallbackRegistrar.add("SocialSharing.Disconnect", boost::bind(&LLFacebookStatusPanel::onDisconnect, this)); + + setVisibleCallback(boost::bind(&LLFacebookStatusPanel::onVisibilityChange, this, _2)); + mCommitCallbackRegistrar.add("SocialSharing.SendStatus", boost::bind(&LLFacebookStatusPanel::onSend, this)); } BOOL LLFacebookStatusPanel::postBuild() { + mAccountCaptionLabel = getChild<LLTextBox>("account_caption_label"); + mAccountNameLabel = getChild<LLTextBox>("account_name_label"); + mPanelButtons = getChild<LLUICtrl>("panel_buttons"); + mConnectButton = getChild<LLUICtrl>("connect_btn"); + mDisconnectButton = getChild<LLUICtrl>("disconnect_btn"); + mMessageTextEditor = getChild<LLUICtrl>("status_message"); mPostButton = getChild<LLUICtrl>("post_status_btn"); mCancelButton = getChild<LLUICtrl>("cancel_status_btn"); @@ -115,6 +130,16 @@ BOOL LLFacebookStatusPanel::postBuild() void LLFacebookStatusPanel::draw() { + LLFacebookConnect::EConnectionState connection_state = LLFacebookConnect::instance().getConnectionState(); + + //Disable the 'disconnect' button and the 'use another account' button when disconnecting in progress + bool disconnecting = connection_state == LLFacebookConnect::FB_DISCONNECTING; + mDisconnectButton->setEnabled(!disconnecting); + + //Disable the 'connect' button when a connection is in progress + bool connecting = connection_state == LLFacebookConnect::FB_CONNECTION_IN_PROGRESS; + mConnectButton->setEnabled(!connecting); + if (mMessageTextEditor && mPostButton && mCancelButton) { bool no_ongoing_connection = !(LLFacebookConnect::instance().isTransactionOngoing()); @@ -131,7 +156,7 @@ void LLFacebookStatusPanel::onSend() { LLEventPumps::instance().obtain("FacebookConnectState").stopListening("LLFacebookStatusPanel"); // just in case it is already listening LLEventPumps::instance().obtain("FacebookConnectState").listen("LLFacebookStatusPanel", boost::bind(&LLFacebookStatusPanel::onFacebookConnectStateChange, this, _1)); - + // Connect to Facebook if necessary and then post if (LLFacebookConnect::instance().isConnected()) { @@ -160,6 +185,24 @@ bool LLFacebookStatusPanel::onFacebookConnectStateChange(const LLSD& data) return false; } +bool LLFacebookStatusPanel::onFacebookConnectAccountStateChange(const LLSD& data) +{ + if(LLFacebookConnect::instance().isConnected()) + { + //In process of disconnecting so leave the layout as is + if(data.get("enum").asInteger() != LLFacebookConnect::FB_DISCONNECTING) + { + showConnectedLayout(); + } + } + else + { + showDisconnectedLayout(); + } + + return false; +} + void LLFacebookStatusPanel::sendStatus() { std::string message = mMessageTextEditor->getValue().asString(); @@ -169,6 +212,103 @@ void LLFacebookStatusPanel::sendStatus() } } +void LLFacebookStatusPanel::onVisibilityChange(BOOL visible) +{ + if(visible) + { + LLEventPumps::instance().obtain("FacebookConnectState").stopListening("LLFacebookAccountPanel"); + LLEventPumps::instance().obtain("FacebookConnectState").listen("LLFacebookAccountPanel", boost::bind(&LLFacebookStatusPanel::onFacebookConnectAccountStateChange, this, _1)); + + LLEventPumps::instance().obtain("FacebookConnectInfo").stopListening("LLFacebookAccountPanel"); + LLEventPumps::instance().obtain("FacebookConnectInfo").listen("LLFacebookAccountPanel", boost::bind(&LLFacebookStatusPanel::onFacebookConnectInfoChange, this)); + + //Connected + if(LLFacebookConnect::instance().isConnected()) + { + showConnectedLayout(); + } + //Check if connected (show disconnected layout in meantime) + else + { + showDisconnectedLayout(); + } + if ((LLFacebookConnect::instance().getConnectionState() == LLFacebookConnect::FB_NOT_CONNECTED) || + (LLFacebookConnect::instance().getConnectionState() == LLFacebookConnect::FB_CONNECTION_FAILED)) + { + LLFacebookConnect::instance().checkConnectionToFacebook(); + } + } + else + { + LLEventPumps::instance().obtain("FacebookConnectState").stopListening("LLFacebookAccountPanel"); + LLEventPumps::instance().obtain("FacebookConnectInfo").stopListening("LLFacebookAccountPanel"); + } +} + +bool LLFacebookStatusPanel::onFacebookConnectInfoChange() +{ + LLSD info = LLFacebookConnect::instance().getInfo(); + std::string clickable_name; + + //Strings of format [http://www.somewebsite.com Click Me] become clickable text + if(info.has("link") && info.has("name")) + { + clickable_name = "[" + info["link"].asString() + " " + info["name"].asString() + "]"; + } + + mAccountNameLabel->setText(clickable_name); + + return false; +} + +void LLFacebookStatusPanel::showConnectButton() +{ + if(!mConnectButton->getVisible()) + { + mConnectButton->setVisible(TRUE); + mDisconnectButton->setVisible(FALSE); + } +} + +void LLFacebookStatusPanel::hideConnectButton() +{ + if(mConnectButton->getVisible()) + { + mConnectButton->setVisible(FALSE); + mDisconnectButton->setVisible(TRUE); + } +} + +void LLFacebookStatusPanel::showDisconnectedLayout() +{ + mAccountCaptionLabel->setText(getString("facebook_disconnected")); + mAccountNameLabel->setText(std::string("")); + showConnectButton(); +} + +void LLFacebookStatusPanel::showConnectedLayout() +{ + LLFacebookConnect::instance().loadFacebookInfo(); + + mAccountCaptionLabel->setText(getString("facebook_connected")); + hideConnectButton(); +} + +void LLFacebookStatusPanel::onConnect() +{ + LLFacebookConnect::instance().checkConnectionToFacebook(true); + + //Clear only the facebook browser cookies so that the facebook login screen appears + LLViewerMedia::getCookieStore()->removeCookiesByDomain(".facebook.com"); +} + +void LLFacebookStatusPanel::onDisconnect() +{ + LLFacebookConnect::instance().disconnectFromFacebook(); + + LLViewerMedia::getCookieStore()->removeCookiesByDomain(".facebook.com"); +} + void LLFacebookStatusPanel::clearAndClose() { mMessageTextEditor->setValue(""); @@ -185,7 +325,6 @@ void LLFacebookStatusPanel::clearAndClose() /////////////////////////// LLFacebookPhotoPanel::LLFacebookPhotoPanel() : -mSnapshotPanel(NULL), mResolutionComboBox(NULL), mRefreshBtn(NULL), mBtnPreview(NULL), @@ -213,7 +352,6 @@ BOOL LLFacebookPhotoPanel::postBuild() { setVisibleCallback(boost::bind(&LLFacebookPhotoPanel::onVisibilityChange, this, _2)); - mSnapshotPanel = getChild<LLUICtrl>("snapshot_panel"); mResolutionComboBox = getChild<LLUICtrl>("resolution_combobox"); mResolutionComboBox->setValue("[i1200,i630]"); // hardcoded defaults ftw! mResolutionComboBox->setCommitCallback(boost::bind(&LLFacebookPhotoPanel::updateResolution, this, TRUE)); @@ -300,16 +438,9 @@ void LLFacebookPhotoPanel::draw() // calc preview offset within the preview rect const S32 local_offset_x = (thumbnail_rect.getWidth() - thumbnail_w) / 2 ; const S32 local_offset_y = (thumbnail_rect.getHeight() - thumbnail_h) / 2 ; + S32 offset_x = thumbnail_rect.mLeft + local_offset_x; + S32 offset_y = thumbnail_rect.mBottom + local_offset_y; - // calc preview offset within the floater rect - // Hack : To get the full offset, we need to take into account each and every offset of each widgets up to the floater. - // This is almost as arbitrary as using a fixed offset so that's what we do here for the sake of simplicity. - // *TODO : Get the offset looking through the hierarchy of widgets, should be done in postBuild() so to avoid traversing the hierarchy each time. - S32 offset_x = thumbnail_rect.mLeft + local_offset_x - 1; - S32 offset_y = thumbnail_rect.mBottom + local_offset_y - 39; - - mSnapshotPanel->localPointToOtherView(offset_x, offset_y, &offset_x, &offset_y, getParentByType<LLFloater>()); - gGL.matrixMode(LLRender::MM_MODELVIEW); // Apply floater transparency to the texture unless the floater is focused. F32 alpha = getTransparencyType() == TT_ACTIVE ? 1.0f : getCurrentTransparency(); @@ -887,164 +1018,6 @@ bool LLFacebookFriendsPanel::onConnectedToFacebook(const LLSD& data) return false; } -/////////////////////////// -//LLFacebookAccountPanel////// -/////////////////////////// - -LLFacebookAccountPanel::LLFacebookAccountPanel() : -mAccountCaptionLabel(NULL), -mAccountNameLabel(NULL), -mPanelButtons(NULL), -mConnectButton(NULL), -mDisconnectButton(NULL) -{ - mCommitCallbackRegistrar.add("SocialSharing.Connect", boost::bind(&LLFacebookAccountPanel::onConnect, this)); - mCommitCallbackRegistrar.add("SocialSharing.Disconnect", boost::bind(&LLFacebookAccountPanel::onDisconnect, this)); - - setVisibleCallback(boost::bind(&LLFacebookAccountPanel::onVisibilityChange, this, _2)); -} - -BOOL LLFacebookAccountPanel::postBuild() -{ - mAccountCaptionLabel = getChild<LLTextBox>("account_caption_label"); - mAccountNameLabel = getChild<LLTextBox>("account_name_label"); - mPanelButtons = getChild<LLUICtrl>("panel_buttons"); - mConnectButton = getChild<LLUICtrl>("connect_btn"); - mDisconnectButton = getChild<LLUICtrl>("disconnect_btn"); - - return LLPanel::postBuild(); -} - -void LLFacebookAccountPanel::draw() -{ - LLFacebookConnect::EConnectionState connection_state = LLFacebookConnect::instance().getConnectionState(); - - //Disable the 'disconnect' button and the 'use another account' button when disconnecting in progress - bool disconnecting = connection_state == LLFacebookConnect::FB_DISCONNECTING; - mDisconnectButton->setEnabled(!disconnecting); - - //Disable the 'connect' button when a connection is in progress - bool connecting = connection_state == LLFacebookConnect::FB_CONNECTION_IN_PROGRESS; - mConnectButton->setEnabled(!connecting); - - LLPanel::draw(); -} - -void LLFacebookAccountPanel::onVisibilityChange(BOOL visible) -{ - if(visible) - { - LLEventPumps::instance().obtain("FacebookConnectState").stopListening("LLFacebookAccountPanel"); - LLEventPumps::instance().obtain("FacebookConnectState").listen("LLFacebookAccountPanel", boost::bind(&LLFacebookAccountPanel::onFacebookConnectStateChange, this, _1)); - - LLEventPumps::instance().obtain("FacebookConnectInfo").stopListening("LLFacebookAccountPanel"); - LLEventPumps::instance().obtain("FacebookConnectInfo").listen("LLFacebookAccountPanel", boost::bind(&LLFacebookAccountPanel::onFacebookConnectInfoChange, this)); - - //Connected - if(LLFacebookConnect::instance().isConnected()) - { - showConnectedLayout(); - } - //Check if connected (show disconnected layout in meantime) - else - { - showDisconnectedLayout(); - } - if ((LLFacebookConnect::instance().getConnectionState() == LLFacebookConnect::FB_NOT_CONNECTED) || - (LLFacebookConnect::instance().getConnectionState() == LLFacebookConnect::FB_CONNECTION_FAILED)) - { - LLFacebookConnect::instance().checkConnectionToFacebook(); - } - } - else - { - LLEventPumps::instance().obtain("FacebookConnectState").stopListening("LLFacebookAccountPanel"); - LLEventPumps::instance().obtain("FacebookConnectInfo").stopListening("LLFacebookAccountPanel"); - } -} - -bool LLFacebookAccountPanel::onFacebookConnectStateChange(const LLSD& data) -{ - if(LLFacebookConnect::instance().isConnected()) - { - //In process of disconnecting so leave the layout as is - if(data.get("enum").asInteger() != LLFacebookConnect::FB_DISCONNECTING) - { - showConnectedLayout(); - } - } - else - { - showDisconnectedLayout(); - } - - return false; -} - -bool LLFacebookAccountPanel::onFacebookConnectInfoChange() -{ - LLSD info = LLFacebookConnect::instance().getInfo(); - std::string clickable_name; - - //Strings of format [http://www.somewebsite.com Click Me] become clickable text - if(info.has("link") && info.has("name")) - { - clickable_name = "[" + info["link"].asString() + " " + info["name"].asString() + "]"; - } - - mAccountNameLabel->setText(clickable_name); - - return false; -} - -void LLFacebookAccountPanel::showConnectButton() -{ - if(!mConnectButton->getVisible()) - { - mConnectButton->setVisible(TRUE); - mDisconnectButton->setVisible(FALSE); - } -} - -void LLFacebookAccountPanel::hideConnectButton() -{ - if(mConnectButton->getVisible()) - { - mConnectButton->setVisible(FALSE); - mDisconnectButton->setVisible(TRUE); - } -} - -void LLFacebookAccountPanel::showDisconnectedLayout() -{ - mAccountCaptionLabel->setText(getString("facebook_disconnected")); - mAccountNameLabel->setText(std::string("")); - showConnectButton(); -} - -void LLFacebookAccountPanel::showConnectedLayout() -{ - LLFacebookConnect::instance().loadFacebookInfo(); - - mAccountCaptionLabel->setText(getString("facebook_connected")); - hideConnectButton(); -} - -void LLFacebookAccountPanel::onConnect() -{ - LLFacebookConnect::instance().checkConnectionToFacebook(true); - - //Clear only the facebook browser cookies so that the facebook login screen appears - LLViewerMedia::getCookieStore()->removeCookiesByDomain(".facebook.com"); -} - -void LLFacebookAccountPanel::onDisconnect() -{ - LLFacebookConnect::instance().disconnectFromFacebook(); - - LLViewerMedia::getCookieStore()->removeCookiesByDomain(".facebook.com"); -} - //////////////////////// //LLFloaterFacebook/////// //////////////////////// diff --git a/indra/newview/llfloaterfacebook.h b/indra/newview/llfloaterfacebook.h index 34356412d6..a4ca666b20 100644 --- a/indra/newview/llfloaterfacebook.h +++ b/indra/newview/llfloaterfacebook.h @@ -46,11 +46,28 @@ public: void draw(); void onSend(); bool onFacebookConnectStateChange(const LLSD& data); + bool onFacebookConnectAccountStateChange(const LLSD& data); void sendStatus(); void clearAndClose(); private: + void onVisibilityChange(BOOL new_visibility); + bool onFacebookConnectInfoChange(); + void onConnect(); + void onUseAnotherAccount(); + void onDisconnect(); + + void showConnectButton(); + void hideConnectButton(); + void showDisconnectedLayout(); + void showConnectedLayout(); + + LLTextBox * mAccountCaptionLabel; + LLTextBox * mAccountNameLabel; + LLUICtrl * mPanelButtons; + LLUICtrl * mConnectButton; + LLUICtrl * mDisconnectButton; LLUICtrl* mMessageTextEditor; LLUICtrl* mPostButton; LLUICtrl* mCancelButton; @@ -87,7 +104,6 @@ private: LLHandle<LLView> mPreviewHandle; - LLUICtrl * mSnapshotPanel; LLUICtrl * mResolutionComboBox; LLUICtrl * mFilterComboBox; LLUICtrl * mRefreshBtn; @@ -147,33 +163,6 @@ private: LLAvatarList* mSuggestedFriends; }; -class LLFacebookAccountPanel : public LLPanel -{ -public: - LLFacebookAccountPanel(); - BOOL postBuild(); - void draw(); - -private: - void onVisibilityChange(BOOL new_visibility); - bool onFacebookConnectStateChange(const LLSD& data); - bool onFacebookConnectInfoChange(); - void onConnect(); - void onUseAnotherAccount(); - void onDisconnect(); - - void showConnectButton(); - void hideConnectButton(); - void showDisconnectedLayout(); - void showConnectedLayout(); - - LLTextBox * mAccountCaptionLabel; - LLTextBox * mAccountNameLabel; - LLUICtrl * mPanelButtons; - LLUICtrl * mConnectButton; - LLUICtrl * mDisconnectButton; -}; - class LLFloaterFacebook : public LLFloater { public: diff --git a/indra/newview/llfloaterflickr.cpp b/indra/newview/llfloaterflickr.cpp index 5d44e9619c..36afab86b7 100644 --- a/indra/newview/llfloaterflickr.cpp +++ b/indra/newview/llfloaterflickr.cpp @@ -65,7 +65,6 @@ const std::string FLICKR_MACHINE_TAGS_NAMESPACE = "secondlife"; /////////////////////////// LLFlickrPhotoPanel::LLFlickrPhotoPanel() : -mSnapshotPanel(NULL), mResolutionComboBox(NULL), mRefreshBtn(NULL), mBtnPreview(NULL), @@ -96,7 +95,6 @@ BOOL LLFlickrPhotoPanel::postBuild() { setVisibleCallback(boost::bind(&LLFlickrPhotoPanel::onVisibilityChange, this, _2)); - mSnapshotPanel = getChild<LLUICtrl>("snapshot_panel"); mResolutionComboBox = getChild<LLUICtrl>("resolution_combobox"); mResolutionComboBox->setCommitCallback(boost::bind(&LLFlickrPhotoPanel::updateResolution, this, TRUE)); mFilterComboBox = getChild<LLUICtrl>("filters_combobox"); @@ -191,16 +189,9 @@ void LLFlickrPhotoPanel::draw() // calc preview offset within the preview rect const S32 local_offset_x = (thumbnail_rect.getWidth() - thumbnail_w) / 2 ; const S32 local_offset_y = (thumbnail_rect.getHeight() - thumbnail_h) / 2 ; + S32 offset_x = thumbnail_rect.mLeft + local_offset_x; + S32 offset_y = thumbnail_rect.mBottom + local_offset_y; - // calc preview offset within the floater rect - // Hack : To get the full offset, we need to take into account each and every offset of each widgets up to the floater. - // This is almost as arbitrary as using a fixed offset so that's what we do here for the sake of simplicity. - // *TODO : Get the offset looking through the hierarchy of widgets, should be done in postBuild() so to avoid traversing the hierarchy each time. - S32 offset_x = thumbnail_rect.mLeft + local_offset_x - 1; - S32 offset_y = thumbnail_rect.mBottom + local_offset_y - 39; - - mSnapshotPanel->localPointToOtherView(offset_x, offset_y, &offset_x, &offset_y, getParentByType<LLFloater>()); - gGL.matrixMode(LLRender::MM_MODELVIEW); // Apply floater transparency to the texture unless the floater is focused. F32 alpha = getTransparencyType() == TT_ACTIVE ? 1.0f : getCurrentTransparency(); diff --git a/indra/newview/llfloaterflickr.h b/indra/newview/llfloaterflickr.h index ba27c9a3d8..74da3bcea9 100644 --- a/indra/newview/llfloaterflickr.h +++ b/indra/newview/llfloaterflickr.h @@ -67,7 +67,6 @@ private: LLHandle<LLView> mPreviewHandle; - LLUICtrl * mSnapshotPanel; LLUICtrl * mResolutionComboBox; LLUICtrl * mFilterComboBox; LLUICtrl * mRefreshBtn; diff --git a/indra/newview/llfloaterimcontainer.cpp b/indra/newview/llfloaterimcontainer.cpp index be8195b5ee..ab57e8c170 100755 --- a/indra/newview/llfloaterimcontainer.cpp +++ b/indra/newview/llfloaterimcontainer.cpp @@ -229,7 +229,9 @@ BOOL LLFloaterIMContainer::postBuild() mStubCollapseBtn = getChild<LLButton>("stub_collapse_btn"); mStubCollapseBtn->setClickedCallback(boost::bind(&LLFloaterIMContainer::onStubCollapseButtonClicked, this)); mSpeakBtn = getChild<LLButton>("speak_btn"); - mSpeakBtn->setClickedCallback(boost::bind(&LLFloaterIMContainer::onSpeakButtonClicked, this)); + + mSpeakBtn->setMouseDownCallback(boost::bind(&LLFloaterIMContainer::onSpeakButtonPressed, this)); + mSpeakBtn->setMouseUpCallback(boost::bind(&LLFloaterIMContainer::onSpeakButtonReleased, this)); childSetAction("add_btn", boost::bind(&LLFloaterIMContainer::onAddButtonClicked, this)); @@ -352,11 +354,18 @@ void LLFloaterIMContainer::onStubCollapseButtonClicked() collapseMessagesPane(true); } -void LLFloaterIMContainer::onSpeakButtonClicked() +void LLFloaterIMContainer::onSpeakButtonPressed() +{ + LLVoiceClient::getInstance()->inputUserControlState(true); + updateSpeakBtnState(); +} + +void LLFloaterIMContainer::onSpeakButtonReleased() { - LLAgent::toggleMicrophone("speak"); + LLVoiceClient::getInstance()->inputUserControlState(false); updateSpeakBtnState(); } + void LLFloaterIMContainer::onExpandCollapseButtonClicked() { if (mConversationsPane->isCollapsed() && mMessagesPane->isCollapsed() @@ -1401,6 +1410,10 @@ bool LLFloaterIMContainer::enableContextMenuItem(const std::string& item, uuid_v { return is_single_select && LLAvatarActions::canCall(); } + else if ("can_open_voice_conversation" == item) + { + return is_single_select && LLAvatarActions::canCall(); + } else if ("can_zoom_in" == item) { return is_single_select && gObjectList.findObject(single_id); diff --git a/indra/newview/llfloaterimcontainer.h b/indra/newview/llfloaterimcontainer.h index 5ea9fd399b..f21c0b9947 100755 --- a/indra/newview/llfloaterimcontainer.h +++ b/indra/newview/llfloaterimcontainer.h @@ -135,7 +135,8 @@ private: void onExpandCollapseButtonClicked(); void onStubCollapseButtonClicked(); void processParticipantsStyleUpdate(); - void onSpeakButtonClicked(); + void onSpeakButtonPressed(); + void onSpeakButtonReleased(); /*virtual*/ void onClickCloseBtn(bool app_quitting = false); /*virtual*/ void closeHostedFloater(); diff --git a/indra/newview/llfloaterimsession.cpp b/indra/newview/llfloaterimsession.cpp index 7852a1f7b3..9def253ba5 100755 --- a/indra/newview/llfloaterimsession.cpp +++ b/indra/newview/llfloaterimsession.cpp @@ -927,8 +927,7 @@ void LLFloaterIMSession::onInputEditorFocusReceived( LLFocusableElement* caller, // Allow enabling the LLFloaterIMSession input editor only if session can accept text LLIMModel::LLIMSession* im_session = LLIMModel::instance().findIMSession(self->mSessionID); - //TODO: While disabled lllineeditor can receive focus we need to check if it is enabled (EK) - if( im_session && im_session->mTextIMPossible && self->mInputEditor->getEnabled()) + if( im_session && im_session->mTextIMPossible && !self->mInputEditor->getReadOnly()) { //in disconnected state IM input editor should be disabled self->mInputEditor->setEnabled(!gDisconnected); diff --git a/indra/newview/llfloaterlagmeter.cpp b/indra/newview/llfloaterlagmeter.cpp new file mode 100644 index 0000000000..f72f2631a1 --- /dev/null +++ b/indra/newview/llfloaterlagmeter.cpp @@ -0,0 +1,378 @@ +/** + * @file llfloaterlagmeter.cpp + * @brief The "Lag-o-Meter" floater used to tell users what is causing lag. + * + * $LicenseInfo:firstyear=2007&license=viewerlgpl$ + * Second Life Viewer Source Code + * Copyright (C) 2010, Linden Research, Inc. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; + * version 2.1 of the License only. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + * + * Linden Research, Inc., 945 Battery Street, San Francisco, CA 94111 USA + * $/LicenseInfo$ + */ + +#include "llviewerprecompiledheaders.h" + +#include "llfloaterlagmeter.h" + +#include "lluictrlfactory.h" +#include "llviewerstats.h" +#include "llviewertexture.h" +#include "llviewercontrol.h" +#include "llappviewer.h" + +#include "lltexturefetch.h" + +#include "llbutton.h" +#include "llfocusmgr.h" +#include "lltextbox.h" + +const std::string LAG_CRITICAL_IMAGE_NAME = "lag_status_critical.tga"; +const std::string LAG_WARNING_IMAGE_NAME = "lag_status_warning.tga"; +const std::string LAG_GOOD_IMAGE_NAME = "lag_status_good.tga"; + +LLFloaterLagMeter::LLFloaterLagMeter(const LLSD& key) + : LLFloater(key) +{ + mCommitCallbackRegistrar.add("LagMeter.ClickShrink", boost::bind(&LLFloaterLagMeter::onClickShrink, this)); +} + +BOOL LLFloaterLagMeter::postBuild() +{ + // Don't let this window take keyboard focus -- it's confusing to + // lose arrow-key driving when testing lag. + setIsChrome(TRUE); + + // were we shrunk last time? + if (isShrunk()) + { + onClickShrink(); + } + + mClientButton = getChild<LLButton>("client_lagmeter"); + mClientText = getChild<LLTextBox>("client_text"); + mClientCause = getChild<LLTextBox>("client_lag_cause"); + + mNetworkButton = getChild<LLButton>("network_lagmeter"); + mNetworkText = getChild<LLTextBox>("network_text"); + mNetworkCause = getChild<LLTextBox>("network_lag_cause"); + + mServerButton = getChild<LLButton>("server_lagmeter"); + mServerText = getChild<LLTextBox>("server_text"); + mServerCause = getChild<LLTextBox>("server_lag_cause"); + + std::string config_string = getString("client_frame_rate_critical_fps", mStringArgs); + mClientFrameTimeCritical = F32Seconds(1.0f / (float)atof( config_string.c_str() )); + config_string = getString("client_frame_rate_warning_fps", mStringArgs); + mClientFrameTimeWarning = F32Seconds(1.0f / (float)atof( config_string.c_str() )); + + config_string = getString("network_packet_loss_critical_pct", mStringArgs); + mNetworkPacketLossCritical = F32Percent((float)atof( config_string.c_str() )); + config_string = getString("network_packet_loss_warning_pct", mStringArgs); + mNetworkPacketLossWarning = F32Percent((float)atof( config_string.c_str() )); + + config_string = getString("network_ping_critical_ms", mStringArgs); + mNetworkPingCritical = F32Milliseconds((float)atof( config_string.c_str() )); + config_string = getString("network_ping_warning_ms", mStringArgs); + mNetworkPingWarning = F32Milliseconds((float)atof( config_string.c_str() )); + config_string = getString("server_frame_rate_critical_fps", mStringArgs); + + mServerFrameTimeCritical = F32Seconds(1.0f / (float)atof( config_string.c_str() )); + config_string = getString("server_frame_rate_warning_fps", mStringArgs); + mServerFrameTimeWarning = F32Seconds(1.0f / (float)atof( config_string.c_str() )); + config_string = getString("server_single_process_max_time_ms", mStringArgs); + mServerSingleProcessMaxTime = F32Seconds((float)atof( config_string.c_str() )); + +// mShrunk = false; + config_string = getString("max_width_px", mStringArgs); + mMaxWidth = atoi( config_string.c_str() ); + config_string = getString("min_width_px", mStringArgs); + mMinWidth = atoi( config_string.c_str() ); + + mStringArgs["[CLIENT_FRAME_RATE_CRITICAL]"] = getString("client_frame_rate_critical_fps"); + mStringArgs["[CLIENT_FRAME_RATE_WARNING]"] = getString("client_frame_rate_warning_fps"); + + mStringArgs["[NETWORK_PACKET_LOSS_CRITICAL]"] = getString("network_packet_loss_critical_pct"); + mStringArgs["[NETWORK_PACKET_LOSS_WARNING]"] = getString("network_packet_loss_warning_pct"); + + mStringArgs["[NETWORK_PING_CRITICAL]"] = getString("network_ping_critical_ms"); + mStringArgs["[NETWORK_PING_WARNING]"] = getString("network_ping_warning_ms"); + + mStringArgs["[SERVER_FRAME_RATE_CRITICAL]"] = getString("server_frame_rate_critical_fps"); + mStringArgs["[SERVER_FRAME_RATE_WARNING]"] = getString("server_frame_rate_warning_fps"); + +// childSetAction("minimize", onClickShrink, this); + updateControls(isShrunk()); // if expanded append colon to the labels (EXT-4079) + + return TRUE; +} +LLFloaterLagMeter::~LLFloaterLagMeter() +{ + // save shrunk status for next time +// gSavedSettings.setBOOL("LagMeterShrunk", mShrunk); + // expand so we save the large window rectangle + if (isShrunk()) + { + onClickShrink(); + } +} + +void LLFloaterLagMeter::draw() +{ + determineClient(); + determineNetwork(); + determineServer(); + + LLFloater::draw(); +} + +void LLFloaterLagMeter::determineClient() +{ + F32Milliseconds client_frame_time = LLTrace::get_frame_recording().getPeriodMean(LLStatViewer::FRAME_STACKTIME); + bool find_cause = false; + + if (!gFocusMgr.getAppHasFocus()) + { + mClientButton->setImageUnselected(LLUI::getUIImage(LAG_GOOD_IMAGE_NAME)); + mClientText->setText( getString("client_frame_time_window_bg_msg", mStringArgs) ); + mClientCause->setText( LLStringUtil::null ); + } + else if(client_frame_time >= mClientFrameTimeCritical) + { + mClientButton->setImageUnselected(LLUI::getUIImage(LAG_CRITICAL_IMAGE_NAME)); + mClientText->setText( getString("client_frame_time_critical_msg", mStringArgs) ); + find_cause = true; + } + else if(client_frame_time >= mClientFrameTimeWarning) + { + mClientButton->setImageUnselected(LLUI::getUIImage(LAG_WARNING_IMAGE_NAME)); + mClientText->setText( getString("client_frame_time_warning_msg", mStringArgs) ); + find_cause = true; + } + else + { + mClientButton->setImageUnselected(LLUI::getUIImage(LAG_GOOD_IMAGE_NAME)); + mClientText->setText( getString("client_frame_time_normal_msg", mStringArgs) ); + mClientCause->setText( LLStringUtil::null ); + } + + if(find_cause) + { + if(gSavedSettings.getF32("RenderFarClip") > 128) + { + mClientCause->setText( getString("client_draw_distance_cause_msg", mStringArgs) ); + } + else if(LLAppViewer::instance()->getTextureFetch()->getNumRequests() > 2) + { + mClientCause->setText( getString("client_texture_loading_cause_msg", mStringArgs) ); + } + else if(LLViewerTexture::sBoundTextureMemory > LLViewerTexture::sMaxBoundTextureMemory) + { + mClientCause->setText( getString("client_texture_memory_cause_msg", mStringArgs) ); + } + else + { + mClientCause->setText( getString("client_complex_objects_cause_msg", mStringArgs) ); + } + } +} + +void LLFloaterLagMeter::determineNetwork() +{ + LLTrace::PeriodicRecording& frame_recording = LLTrace::get_frame_recording(); + F32Percent packet_loss = frame_recording.getPeriodMean(LLStatViewer::PACKETS_LOST_PERCENT); + F32Milliseconds ping_time = frame_recording.getPeriodMean(LLStatViewer::SIM_PING); + bool find_cause_loss = false; + bool find_cause_ping = false; + + // *FIXME: We can't blame a large ping time on anything in + // particular if the frame rate is low, because a low frame + // rate is a sure recipe for bad ping times right now until + // the network handlers are de-synched from the rendering. + F32Milliseconds client_frame_time = frame_recording.getPeriodMean(LLStatViewer::FRAME_STACKTIME); + + if(packet_loss >= mNetworkPacketLossCritical) + { + mNetworkButton->setImageUnselected(LLUI::getUIImage(LAG_CRITICAL_IMAGE_NAME)); + mNetworkText->setText( getString("network_packet_loss_critical_msg", mStringArgs) ); + find_cause_loss = true; + } + else if(ping_time >= mNetworkPingCritical) + { + mNetworkButton->setImageUnselected(LLUI::getUIImage(LAG_CRITICAL_IMAGE_NAME)); + if (client_frame_time < mNetworkPingCritical) + { + mNetworkText->setText( getString("network_ping_critical_msg", mStringArgs) ); + find_cause_ping = true; + } + } + else if(packet_loss >= mNetworkPacketLossWarning) + { + mNetworkButton->setImageUnselected(LLUI::getUIImage(LAG_WARNING_IMAGE_NAME)); + mNetworkText->setText( getString("network_packet_loss_warning_msg", mStringArgs) ); + find_cause_loss = true; + } + else if(ping_time >= mNetworkPingWarning) + { + mNetworkButton->setImageUnselected(LLUI::getUIImage(LAG_WARNING_IMAGE_NAME)); + if (client_frame_time < mNetworkPingWarning) + { + mNetworkText->setText( getString("network_ping_warning_msg", mStringArgs) ); + find_cause_ping = true; + } + } + else + { + mNetworkButton->setImageUnselected(LLUI::getUIImage(LAG_GOOD_IMAGE_NAME)); + mNetworkText->setText( getString("network_performance_normal_msg", mStringArgs) ); + } + + if(find_cause_loss) + { + mNetworkCause->setText( getString("network_packet_loss_cause_msg", mStringArgs) ); + } + else if(find_cause_ping) + { + mNetworkCause->setText( getString("network_ping_cause_msg", mStringArgs) ); + } + else + { + mNetworkCause->setText( LLStringUtil::null ); + } +} + +void LLFloaterLagMeter::determineServer() +{ + F32Milliseconds sim_frame_time = LLTrace::get_frame_recording().getLastRecording().getLastValue(LLStatViewer::SIM_FRAME_TIME); + bool find_cause = false; + + if(sim_frame_time >= mServerFrameTimeCritical) + { + mServerButton->setImageUnselected(LLUI::getUIImage(LAG_CRITICAL_IMAGE_NAME)); + mServerText->setText( getString("server_frame_time_critical_msg", mStringArgs) ); + find_cause = true; + } + else if(sim_frame_time >= mServerFrameTimeWarning) + { + mServerButton->setImageUnselected(LLUI::getUIImage(LAG_WARNING_IMAGE_NAME)); + mServerText->setText( getString("server_frame_time_warning_msg", mStringArgs) ); + find_cause = true; + } + else + { + mServerButton->setImageUnselected(LLUI::getUIImage(LAG_GOOD_IMAGE_NAME)); + mServerText->setText( getString("server_frame_time_normal_msg", mStringArgs) ); + mServerCause->setText( LLStringUtil::null ); + } + + if(find_cause) + { + LLTrace::Recording& last_recording = LLTrace::get_frame_recording().getLastRecording(); + + if(last_recording.getLastValue(LLStatViewer::SIM_PHYSICS_TIME) > mServerSingleProcessMaxTime) + { + mServerCause->setText( getString("server_physics_cause_msg", mStringArgs) ); + } + else if(last_recording.getLastValue(LLStatViewer::SIM_SCRIPTS_TIME) > mServerSingleProcessMaxTime) + { + mServerCause->setText( getString("server_scripts_cause_msg", mStringArgs) ); + } + else if(last_recording.getLastValue(LLStatViewer::SIM_NET_TIME) > mServerSingleProcessMaxTime) + { + mServerCause->setText( getString("server_net_cause_msg", mStringArgs) ); + } + else if(last_recording.getLastValue(LLStatViewer::SIM_AGENTS_TIME) > mServerSingleProcessMaxTime) + { + mServerCause->setText( getString("server_agent_cause_msg", mStringArgs) ); + } + else if(last_recording.getLastValue(LLStatViewer::SIM_IMAGES_TIME) > mServerSingleProcessMaxTime) + { + mServerCause->setText( getString("server_images_cause_msg", mStringArgs) ); + } + else + { + mServerCause->setText( getString("server_generic_cause_msg", mStringArgs) ); + } + } +} + +void LLFloaterLagMeter::updateControls(bool shrink) +{ +// LLFloaterLagMeter * self = (LLFloaterLagMeter*)data; + + LLButton * button = getChild<LLButton>("minimize"); + S32 delta_width = mMaxWidth -mMinWidth; + LLRect r = getRect(); + + if(!shrink) + { + setTitle(getString("max_title_msg", mStringArgs) ); + // make left edge appear to expand + r.translate(-delta_width, 0); + setRect(r); + reshape(mMaxWidth, getRect().getHeight()); + + getChild<LLUICtrl>("client")->setValue(getString("client_text_msg", mStringArgs) + ":"); + getChild<LLUICtrl>("network")->setValue(getString("network_text_msg",mStringArgs) + ":"); + getChild<LLUICtrl>("server")->setValue(getString("server_text_msg", mStringArgs) + ":"); + + // usually "<<" + button->setLabel( getString("smaller_label", mStringArgs) ); + } + else + { + setTitle( getString("min_title_msg", mStringArgs) ); + // make left edge appear to collapse + r.translate(delta_width, 0); + setRect(r); + reshape(mMinWidth, getRect().getHeight()); + + getChild<LLUICtrl>("client")->setValue(getString("client_text_msg", mStringArgs) ); + getChild<LLUICtrl>("network")->setValue(getString("network_text_msg",mStringArgs) ); + getChild<LLUICtrl>("server")->setValue(getString("server_text_msg", mStringArgs) ); + + // usually ">>" + button->setLabel( getString("bigger_label", mStringArgs) ); + } + // Don't put keyboard focus on the button + button->setFocus(FALSE); + +// self->mClientText->setVisible(self->mShrunk); +// self->mClientCause->setVisible(self->mShrunk); +// self->getChildView("client_help")->setVisible( self->mShrunk); + +// self->mNetworkText->setVisible(self->mShrunk); +// self->mNetworkCause->setVisible(self->mShrunk); +// self->getChildView("network_help")->setVisible( self->mShrunk); + +// self->mServerText->setVisible(self->mShrunk); +// self->mServerCause->setVisible(self->mShrunk); +// self->getChildView("server_help")->setVisible( self->mShrunk); + +// self->mShrunk = !self->mShrunk; +} + +BOOL LLFloaterLagMeter::isShrunk() +{ + return gSavedSettings.getBOOL("LagMeterShrunk"); +} + +void LLFloaterLagMeter::onClickShrink() // toggle "LagMeterShrunk" +{ + bool shrunk = isShrunk(); + updateControls(!shrunk); + gSavedSettings.setBOOL("LagMeterShrunk", !shrunk); +} diff --git a/indra/newview/llfloaterlagmeter.h b/indra/newview/llfloaterlagmeter.h new file mode 100644 index 0000000000..929ea40629 --- /dev/null +++ b/indra/newview/llfloaterlagmeter.h @@ -0,0 +1,80 @@ +/** + * @file llfloaterlagmeter.h + * @brief The "Lag-o-Meter" floater used to tell users what is causing lag. + * + * $LicenseInfo:firstyear=2007&license=viewerlgpl$ + * Second Life Viewer Source Code + * Copyright (C) 2010, Linden Research, Inc. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; + * version 2.1 of the License only. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + * + * Linden Research, Inc., 945 Battery Street, San Francisco, CA 94111 USA + * $/LicenseInfo$ + */ + +#ifndef LLFLOATERLAGMETER_H +#define LLFLOATERLAGMETER_H + +#include "llfloater.h" + +class LLTextBox; + +class LLFloaterLagMeter : public LLFloater +{ + friend class LLFloaterReg; + +public: + /*virtual*/ void draw(); + /*virtual*/ BOOL postBuild(); +private: + + LLFloaterLagMeter(const LLSD& key); + /*virtual*/ ~LLFloaterLagMeter(); + void determineClient(); + void determineNetwork(); + void determineServer(); + void updateControls(bool shrink); + BOOL isShrunk(); + + void onClickShrink(); + + bool mShrunk; + S32 mMaxWidth, mMinWidth; + + F32Milliseconds mClientFrameTimeCritical; + F32Milliseconds mClientFrameTimeWarning; + LLButton* mClientButton; + LLTextBox* mClientText; + LLTextBox* mClientCause; + + F32Percent mNetworkPacketLossCritical; + F32Percent mNetworkPacketLossWarning; + F32Milliseconds mNetworkPingCritical; + F32Milliseconds mNetworkPingWarning; + LLButton* mNetworkButton; + LLTextBox* mNetworkText; + LLTextBox* mNetworkCause; + + F32Milliseconds mServerFrameTimeCritical; + F32Milliseconds mServerFrameTimeWarning; + F32Milliseconds mServerSingleProcessMaxTime; + LLButton* mServerButton; + LLTextBox* mServerText; + LLTextBox* mServerCause; + + LLStringUtil::format_map_t mStringArgs; +}; + +#endif diff --git a/indra/newview/llfloaterland.cpp b/indra/newview/llfloaterland.cpp index 7213064746..7621c35ed2 100755 --- a/indra/newview/llfloaterland.cpp +++ b/indra/newview/llfloaterland.cpp @@ -1517,6 +1517,8 @@ void LLPanelLandObjects::onClickRefresh(void* userdata) LLViewerRegion* region = LLViewerParcelMgr::getInstance()->getSelectionRegion(); if (!region) return; + self->mBtnRefresh->setEnabled(false); + // ready the list for results self->mOwnerList->deleteAllItems(); self->mOwnerList->setCommentText(LLTrans::getString("Searching")); @@ -1576,6 +1578,7 @@ void LLPanelLandObjects::processParcelObjectOwnersReply(LLMessageSystem *msg, vo { msg->getU32("DataExtended", "TimeStamp", most_recent_time, i); } + if (owner_id.isNull()) { continue; @@ -1611,10 +1614,10 @@ void LLPanelLandObjects::processParcelObjectOwnersReply(LLMessageSystem *msg, vo item_params.columns.add().value(LLDate((time_t)most_recent_time)).font(FONT).column("mostrecent").type("date"); self->mOwnerList->addNameItemRow(item_params); - LL_DEBUGS() << "object owner " << owner_id << " (" << (is_group_owned ? "group" : "agent") << ") owns " << object_count << " objects." << LL_ENDL; } + // check for no results if (0 == self->mOwnerList->getItemCount()) { @@ -1624,6 +1627,8 @@ void LLPanelLandObjects::processParcelObjectOwnersReply(LLMessageSystem *msg, vo { self->mOwnerList->setEnabled(TRUE); } + + self->mBtnRefresh->setEnabled(true); } // static @@ -2776,10 +2781,16 @@ void LLPanelLandAccess::callbackAvatarCBAccess(const uuid_vec_t& ids) { LLUUID id = ids[0]; LLParcel* parcel = mParcel->getParcel(); - if (parcel) + if (parcel && parcel->addToAccessList(id, 0)) { - parcel->addToAccessList(id, 0); - LLViewerParcelMgr::getInstance()->sendParcelAccessListUpdate(AL_ACCESS); + U32 lists_to_update = AL_ACCESS; + // agent was successfully added to access list + // but we also need to check ban list to ensure that agent will not be in two lists simultaneously + if(parcel->removeFromBanList(id)) + { + lists_to_update |= AL_BAN; + } + LLViewerParcelMgr::getInstance()->sendParcelAccessListUpdate(lists_to_update); refresh(); } } @@ -2828,10 +2839,16 @@ void LLPanelLandAccess::callbackAvatarCBBanned(const uuid_vec_t& ids) { LLUUID id = ids[0]; LLParcel* parcel = mParcel->getParcel(); - if (parcel) + if (parcel && parcel->addToBanList(id, 0)) { - parcel->addToBanList(id, 0); - LLViewerParcelMgr::getInstance()->sendParcelAccessListUpdate(AL_BAN); + U32 lists_to_update = AL_BAN; + // agent was successfully added to ban list + // but we also need to check access list to ensure that agent will not be in two lists simultaneously + if (parcel->removeFromAccessList(id)) + { + lists_to_update |= AL_ACCESS; + } + LLViewerParcelMgr::getInstance()->sendParcelAccessListUpdate(lists_to_update); refresh(); } } diff --git a/indra/newview/llfloaternotificationsconsole.cpp b/indra/newview/llfloaternotificationsconsole.cpp index c21e4ff7e8..fd03efa061 100755 --- a/indra/newview/llfloaternotificationsconsole.cpp +++ b/indra/newview/llfloaternotificationsconsole.cpp @@ -41,6 +41,7 @@ class LLNotificationChannelPanel : public LLLayoutPanel { public: LLNotificationChannelPanel(const Params& p); + ~LLNotificationChannelPanel(); BOOL postBuild(); private: @@ -57,6 +58,20 @@ LLNotificationChannelPanel::LLNotificationChannelPanel(const LLNotificationChann buildFromFile( "panel_notifications_channel.xml"); } +LLNotificationChannelPanel::~LLNotificationChannelPanel() +{ + // Userdata for all records is a LLNotification* we need to clean up + std::vector<LLScrollListItem*> data_list = getChild<LLScrollListCtrl>("notifications_list")->getAllData(); + std::vector<LLScrollListItem*>::iterator data_itor; + for (data_itor = data_list.begin(); data_itor != data_list.end(); ++data_itor) + { + LLScrollListItem* item = *data_itor; + LLNotification* notification = (LLNotification*)item->getUserdata(); + delete notification; + notification = NULL; + } +} + BOOL LLNotificationChannelPanel::postBuild() { LLButton* header_button = getChild<LLButton>("header"); @@ -124,7 +139,7 @@ bool LLNotificationChannelPanel::update(const LLSD& payload) row["columns"][2]["type"] = "date"; LLScrollListItem* sli = getChild<LLScrollListCtrl>("notifications_list")->addElement(row); - sli->setUserdata(&(*notification)); + sli->setUserdata(new LLNotification(notification->asLLSD())); } return false; diff --git a/indra/newview/llfloaterregioninfo.cpp b/indra/newview/llfloaterregioninfo.cpp index 5e9b25b474..a2af9da670 100755 --- a/indra/newview/llfloaterregioninfo.cpp +++ b/indra/newview/llfloaterregioninfo.cpp @@ -481,6 +481,17 @@ void LLFloaterRegionInfo::refresh() } } +void LLFloaterRegionInfo::enableTopButtons() +{ + getChildView("top_colliders_btn")->setEnabled(true); + getChildView("top_scripts_btn")->setEnabled(true); +} + +void LLFloaterRegionInfo::disableTopButtons() +{ + getChildView("top_colliders_btn")->setEnabled(false); + getChildView("top_scripts_btn")->setEnabled(false); +} ///---------------------------------------------------------------------------- /// Local class implementation @@ -1033,6 +1044,11 @@ void LLPanelRegionDebugInfo::onClickTopColliders(void* data) if(!instance) return; LLFloaterReg::showInstance("top_objects"); instance->clearList(); + instance->disableRefreshBtn(); + + self->getChildView("top_colliders_btn")->setEnabled(false); + self->getChildView("top_scripts_btn")->setEnabled(false); + self->sendEstateOwnerMessage(gMessageSystem, "colliders", invoice, strings); } @@ -1047,6 +1063,11 @@ void LLPanelRegionDebugInfo::onClickTopScripts(void* data) if(!instance) return; LLFloaterReg::showInstance("top_objects"); instance->clearList(); + instance->disableRefreshBtn(); + + self->getChildView("top_colliders_btn")->setEnabled(false); + self->getChildView("top_scripts_btn")->setEnabled(false); + self->sendEstateOwnerMessage(gMessageSystem, "scripts", invoice, strings); } diff --git a/indra/newview/llfloaterregioninfo.h b/indra/newview/llfloaterregioninfo.h index 5bc4273d5f..792f60ebc8 100755 --- a/indra/newview/llfloaterregioninfo.h +++ b/indra/newview/llfloaterregioninfo.h @@ -96,6 +96,8 @@ public: void requestRegionInfo(); void requestMeshRezInfo(); + void enableTopButtons(); + void disableTopButtons(); private: diff --git a/indra/newview/llfloatersidepanelcontainer.cpp b/indra/newview/llfloatersidepanelcontainer.cpp index c5248719e9..aee20ff706 100755 --- a/indra/newview/llfloatersidepanelcontainer.cpp +++ b/indra/newview/llfloatersidepanelcontainer.cpp @@ -57,7 +57,7 @@ void LLFloaterSidePanelContainer::onOpen(const LLSD& key) getChild<LLPanel>(sMainPanelName)->onOpen(key); } -void LLFloaterSidePanelContainer::onClickCloseBtn(bool) +void LLFloaterSidePanelContainer::closeFloater(bool app_quitting) { LLPanelOutfitEdit* panel_outfit_edit = dynamic_cast<LLPanelOutfitEdit*>(LLFloaterSidePanelContainer::getPanel("appearance", "panel_outfit_edit")); @@ -75,7 +75,7 @@ void LLFloaterSidePanelContainer::onClickCloseBtn(bool) } } - LLFloater::onClickCloseBtn(); + LLFloater::closeFloater(app_quitting); } LLPanel* LLFloaterSidePanelContainer::openChildPanel(const std::string& panel_name, const LLSD& params) diff --git a/indra/newview/llfloatersidepanelcontainer.h b/indra/newview/llfloatersidepanelcontainer.h index 13b17e8867..d7ecd52e57 100755 --- a/indra/newview/llfloatersidepanelcontainer.h +++ b/indra/newview/llfloatersidepanelcontainer.h @@ -51,7 +51,7 @@ public: /*virtual*/ void onOpen(const LLSD& key); - /*virtual*/ void onClickCloseBtn(bool app_quitting = false); + /*virtual*/ void closeFloater(bool app_quitting = false); LLPanel* openChildPanel(const std::string& panel_name, const LLSD& params); diff --git a/indra/newview/llfloatersnapshot.cpp b/indra/newview/llfloatersnapshot.cpp index 960d3f35dd..8677028942 100755 --- a/indra/newview/llfloatersnapshot.cpp +++ b/indra/newview/llfloatersnapshot.cpp @@ -62,7 +62,6 @@ const S32 MAX_TEXTURE_SIZE = 512 ; //max upload texture size 512 * 512 static LLDefaultChildRegistry::Register<LLSnapshotFloaterView> r("snapshot_floater_view"); - ///---------------------------------------------------------------------------- /// Class LLFloaterSnapshot::Impl ///---------------------------------------------------------------------------- @@ -96,7 +95,6 @@ public: static void onClickAutoSnap(LLUICtrl *ctrl, void* data); static void onClickFilter(LLUICtrl *ctrl, void* data); //static void onClickAdvanceSnap(LLUICtrl *ctrl, void* data); - static void onClickMore(void* data) ; static void onClickUICheck(LLUICtrl *ctrl, void* data); static void onClickHUDCheck(LLUICtrl *ctrl, void* data); static void applyKeepAspectCheck(LLFloaterSnapshot* view, BOOL checked); @@ -264,29 +262,34 @@ void LLFloaterSnapshot::Impl::updateLayout(LLFloaterSnapshot* floaterp) BOOL advanced = gSavedSettings.getBOOL("AdvanceSnapshot"); - // Show/hide advanced options. - LLPanel* advanced_options_panel = floaterp->getChild<LLPanel>("advanced_options_panel"); - floaterp->getChild<LLButton>("advanced_options_btn")->setImageOverlay(advanced ? "TabIcon_Open_Off" : "TabIcon_Close_Off"); - if (advanced != advanced_options_panel->getVisible()) + //BD - Automatically calculate the size of our snapshot window to enlarge + // the snapshot preview to its maximum size, this is especially helpfull + // for pretty much every aspect ratio other than 1:1. + F32 panel_width = 400.f * gViewerWindow->getWorldViewAspectRatio(); + + //BD - Make sure we clamp at 700 here because 700 would be for 16:9 which we + // consider the maximum. Everything bigger will be clamped and will have + // a slightly smaller preview window which most likely won't fill up the + // whole snapshot floater as it should. + if(panel_width > 700.f) { - S32 panel_width = advanced_options_panel->getRect().getWidth(); - floaterp->getChild<LLPanel>("advanced_options_panel")->setVisible(advanced); - S32 floater_width = floaterp->getRect().getWidth(); - floater_width += (advanced ? panel_width : -panel_width); - floaterp->reshape(floater_width, floaterp->getRect().getHeight()); + panel_width = 700.f; } - if(!advanced) //set to original window resolution + S32 floater_width = 224.f; + if(advanced) { - previewp->mKeepAspectRatio = TRUE; - - floaterp->getChild<LLComboBox>("profile_size_combo")->setCurrentByIndex(0); - floaterp->getChild<LLComboBox>("postcard_size_combo")->setCurrentByIndex(0); - floaterp->getChild<LLComboBox>("texture_size_combo")->setCurrentByIndex(0); - floaterp->getChild<LLComboBox>("local_size_combo")->setCurrentByIndex(0); + floater_width = floater_width + panel_width; + } - LLSnapshotLivePreview* previewp = getPreviewView(floaterp); - previewp->setSize(gViewerWindow->getWindowWidthRaw(), gViewerWindow->getWindowHeightRaw()); + LLUICtrl* thumbnail_placeholder = floaterp->getChild<LLUICtrl>("thumbnail_placeholder"); + thumbnail_placeholder->setVisible(advanced); + thumbnail_placeholder->reshape(panel_width, thumbnail_placeholder->getRect().getHeight()); + floaterp->getChild<LLUICtrl>("image_res_text")->setVisible(advanced); + floaterp->getChild<LLUICtrl>("file_size_label")->setVisible(advanced); + if(!floaterp->isMinimized()) + { + floaterp->reshape(floater_width, floaterp->getRect().getHeight()); } bool use_freeze_frame = floaterp->getChild<LLUICtrl>("freeze_frame_check")->getValue().asBoolean(); @@ -388,7 +391,7 @@ void LLFloaterSnapshot::Impl::updateControls(LLFloaterSnapshot* floater) height_ctrl->setValue(h); } - // Сlamp snapshot resolution to window size when showing UI or HUD in snapshot. + // Clamp snapshot resolution to window size when showing UI or HUD in snapshot. if (gSavedSettings.getBOOL("RenderUIInSnapshot") || gSavedSettings.getBOOL("RenderHUDInSnapshot")) { S32 width = gViewerWindow->getWindowWidthRaw(); @@ -576,25 +579,11 @@ void LLFloaterSnapshot::Impl::onClickFilter(LLUICtrl *ctrl, void* data) LLComboBox* filterbox = static_cast<LLComboBox *>(view->getChild<LLComboBox>("filters_combobox")); std::string filter_name = (filterbox->getCurrentIndex() ? filterbox->getSimple() : ""); previewp->setFilter(filter_name); - previewp->updateSnapshot(FALSE, TRUE); + previewp->updateSnapshot(TRUE); } } } -void LLFloaterSnapshot::Impl::onClickMore(void* data) -{ - BOOL visible = gSavedSettings.getBOOL("AdvanceSnapshot"); - - LLFloaterSnapshot *view = (LLFloaterSnapshot *)data; - if (view) - { - view->impl.setStatus(Impl::STATUS_READY); - gSavedSettings.setBOOL("AdvanceSnapshot", !visible); - updateControls(view) ; - updateLayout(view) ; - } -} - // static void LLFloaterSnapshot::Impl::onClickUICheck(LLUICtrl *ctrl, void* data) { @@ -772,6 +761,12 @@ void LLFloaterSnapshot::Impl::updateResolution(LLUICtrl* ctrl, void* data, BOOL S32 original_width = 0 , original_height = 0 ; previewp->getSize(original_width, original_height) ; + if (gSavedSettings.getBOOL("RenderUIInSnapshot") || gSavedSettings.getBOOL("RenderHUDInSnapshot")) + { //clamp snapshot resolution to window size when showing UI or HUD in snapshot + width = llmin(width, gViewerWindow->getWindowWidthRaw()); + height = llmin(height, gViewerWindow->getWindowHeightRaw()); + } + if (width == 0 || height == 0) { // take resolution from current window size @@ -817,14 +812,12 @@ void LLFloaterSnapshot::Impl::updateResolution(LLUICtrl* ctrl, void* data, BOOL checkAspectRatio(view, width) ; previewp->getSize(width, height); - - if (gSavedSettings.getBOOL("RenderUIInSnapshot") || gSavedSettings.getBOOL("RenderHUDInSnapshot")) - { //clamp snapshot resolution to window size when showing UI or HUD in snapshot - width = llmin(width, gViewerWindow->getWindowWidthRaw()); - height = llmin(height, gViewerWindow->getWindowHeightRaw()); - } - updateSpinners(view, previewp, width, height, TRUE); // may change width and height + // We use the height spinner here because we come here via the aspect ratio + // checkbox as well and we want height always changing to width by default. + // If we use the width spinner we would change width according to height by + // default, that is not what we want. + updateSpinners(view, previewp, width, height, !getHeightSpinner(view)->isDirty()); // may change width and height if(getWidthSpinner(view)->getValue().asInteger() != width || getHeightSpinner(view)->getValue().asInteger() != height) { @@ -839,12 +832,11 @@ void LLFloaterSnapshot::Impl::updateResolution(LLUICtrl* ctrl, void* data, BOOL // hide old preview as the aspect ratio could be wrong checkAutoSnapshot(previewp, FALSE); LL_DEBUGS() << "updating thumbnail" << LL_ENDL; - getPreviewView(view)->updateSnapshot(FALSE, TRUE); + getPreviewView(view)->updateSnapshot(TRUE); if(do_update) { LL_DEBUGS() << "Will update controls" << LL_ENDL; updateControls(view); - setNeedRefresh(view, true); } } } @@ -887,7 +879,6 @@ void LLFloaterSnapshot::Impl::onImageFormatChange(LLFloaterSnapshot* view) LL_DEBUGS() << "image format changed, updating snapshot" << LL_ENDL; getPreviewView(view)->updateSnapshot(TRUE); updateControls(view); - setNeedRefresh(view, false); // we're refreshing } } @@ -956,6 +947,8 @@ void LLFloaterSnapshot::Impl::setImageSizeSpinnersValues(LLFloaterSnapshot *view // static void LLFloaterSnapshot::Impl::updateSpinners(LLFloaterSnapshot* view, LLSnapshotLivePreview* previewp, S32& width, S32& height, BOOL is_width_changed) { + getWidthSpinner(view)->resetDirty(); + getHeightSpinner(view)->resetDirty(); if (checkImageSize(previewp, width, height, is_width_changed, previewp->getMaxImageSize())) { setImageSizeSpinnersValues(view, width, height); @@ -965,8 +958,6 @@ void LLFloaterSnapshot::Impl::updateSpinners(LLFloaterSnapshot* view, LLSnapshot // static void LLFloaterSnapshot::Impl::applyCustomResolution(LLFloaterSnapshot* view, S32 w, S32 h) { - bool need_refresh = false; - LL_DEBUGS() << "applyCustomResolution(" << w << ", " << h << ")" << LL_ENDL; if (!view) return; @@ -981,25 +972,16 @@ void LLFloaterSnapshot::Impl::applyCustomResolution(LLFloaterSnapshot* view, S32 //if to upload a snapshot, process spinner input in a special way. previewp->setMaxImageSize((S32) getWidthSpinner(view)->getMaxValue()) ; - updateSpinners(view, previewp, w, h, w != curw); // may change w and h - previewp->setSize(w,h); checkAutoSnapshot(previewp, FALSE); - LL_DEBUGS() << "applied custom resolution, updating thumbnail" << LL_ENDL; - previewp->updateSnapshot(FALSE, TRUE); comboSetCustom(view, "profile_size_combo"); comboSetCustom(view, "postcard_size_combo"); comboSetCustom(view, "texture_size_combo"); comboSetCustom(view, "local_size_combo"); - need_refresh = true; + LL_DEBUGS() << "applied custom resolution, updating thumbnail" << LL_ENDL; + previewp->updateSnapshot(TRUE); } } - - updateControls(view); - if (need_refresh) - { - setNeedRefresh(view, true); // need to do this after updateControls() - } } // static @@ -1055,8 +1037,6 @@ BOOL LLFloaterSnapshot::postBuild() mSucceessLblPanel = getChild<LLUICtrl>("succeeded_panel"); mFailureLblPanel = getChild<LLUICtrl>("failed_panel"); - childSetAction("advanced_options_btn", Impl::onClickMore, this); - childSetCommitCallback("ui_check", Impl::onClickUICheck, this); getChild<LLUICtrl>("ui_check")->setValue(gSavedSettings.getBOOL("RenderUIInSnapshot")); @@ -1075,24 +1055,15 @@ BOOL LLFloaterSnapshot::postBuild() getChild<LLUICtrl>("auto_snapshot_check")->setValue(gSavedSettings.getBOOL("AutoSnapshot")); childSetCommitCallback("auto_snapshot_check", Impl::onClickAutoSnap, this); + // Filters LLComboBox* filterbox = getChild<LLComboBox>("filters_combobox"); - if (gSavedSettings.getBOOL("SnapshotFiltersEnabled")) - { - // Update filter list if setting is on (experimental) - std::vector<std::string> filter_list = LLImageFiltersManager::getInstance()->getFiltersList(); - for (U32 i = 0; i < filter_list.size(); i++) - { - filterbox->add(filter_list[i]); - } - childSetCommitCallback("filters_combobox", Impl::onClickFilter, this); - } - else + std::vector<std::string> filter_list = LLImageFiltersManager::getInstance()->getFiltersList(); + for (U32 i = 0; i < filter_list.size(); i++) { - // Hide Filter UI if setting is off (default) - getChild<LLUICtrl>("filter_list_label")->setVisible(FALSE); - filterbox->setVisible(FALSE); + filterbox->add(filter_list[i]); } + childSetCommitCallback("filters_combobox", Impl::onClickFilter, this); LLWebProfile::setImageUploadResultCallback(boost::bind(&LLFloaterSnapshot::Impl::onSnapshotUploadFinished, _1)); LLPostCard::setPostResultCallback(boost::bind(&LLFloaterSnapshot::Impl::onSendingPostcardFinished, _1)); @@ -1119,7 +1090,7 @@ BOOL LLFloaterSnapshot::postBuild() getChild<LLComboBox>("profile_size_combo")->selectNthItem(0); getChild<LLComboBox>("postcard_size_combo")->selectNthItem(0); getChild<LLComboBox>("texture_size_combo")->selectNthItem(0); - getChild<LLComboBox>("local_size_combo")->selectNthItem(0); + getChild<LLComboBox>("local_size_combo")->selectNthItem(8); getChild<LLComboBox>("local_format_combo")->selectNthItem(0); impl.mPreviewHandle = previewp->getHandle(); @@ -1145,7 +1116,7 @@ void LLFloaterSnapshot::draw() LLFloater::draw(); - if (previewp && !isMinimized()) + if (previewp && !isMinimized() && sThumbnailPlaceholder->getVisible()) { if(previewp->getThumbnailImage()) { @@ -1172,44 +1143,13 @@ void LLFloaterSnapshot::draw() previewp->drawPreviewRect(offset_x, offset_y) ; - // Draw some controls on top of the preview thumbnail. - static const S32 PADDING = 5; - static const S32 REFRESH_LBL_BG_HEIGHT = 32; - - // Reshape and position the posting result message panels at the top of the thumbnail. - // Do this regardless of current posting status (finished or not) to avoid flicker - // when the result message is displayed for the first time. - // if (impl.getStatus() == Impl::STATUS_FINISHED) - { - LLRect result_lbl_rect = mSucceessLblPanel->getRect(); - const S32 result_lbl_h = result_lbl_rect.getHeight(); - result_lbl_rect.setLeftTopAndSize(local_offset_x, local_offset_y + thumbnail_h, thumbnail_w - 1, result_lbl_h); - mSucceessLblPanel->reshape(result_lbl_rect.getWidth(), result_lbl_h); - mSucceessLblPanel->setRect(result_lbl_rect); - mFailureLblPanel->reshape(result_lbl_rect.getWidth(), result_lbl_h); - mFailureLblPanel->setRect(result_lbl_rect); - } - - // Position the refresh button in the bottom left corner of the thumbnail. - mRefreshBtn->setOrigin(local_offset_x + PADDING, local_offset_y + PADDING); - - if (impl.mNeedRefresh) - { - // Place the refresh hint text to the right of the refresh button. - const LLRect& refresh_btn_rect = mRefreshBtn->getRect(); - mRefreshLabel->setOrigin(refresh_btn_rect.mLeft + refresh_btn_rect.getWidth() + PADDING, refresh_btn_rect.mBottom); - - // Draw the refresh hint background. - LLRect refresh_label_bg_rect(offset_x, offset_y + REFRESH_LBL_BG_HEIGHT, offset_x + thumbnail_w - 1, offset_y); - gl_rect_2d(refresh_label_bg_rect, LLColor4::white % 0.9f, TRUE); - } - gGL.pushUIMatrix(); LLUI::translate((F32) thumbnail_rect.mLeft, (F32) thumbnail_rect.mBottom); sThumbnailPlaceholder->draw(); gGL.popUIMatrix(); } } + impl.updateLayout(this); } void LLFloaterSnapshot::onOpen(const LLSD& key) @@ -1225,6 +1165,9 @@ void LLFloaterSnapshot::onOpen(const LLSD& key) gSnapshotFloaterView->setVisible(TRUE); gSnapshotFloaterView->adjustToFitScreen(this, FALSE); + impl.updateControls(this); + impl.updateLayout(this); + // Initialize default tab. getChild<LLSideTrayPanelContainer>("panel_container")->getCurrentPanel()->onOpen(LLSD()); } @@ -1293,8 +1236,6 @@ S32 LLFloaterSnapshot::notify(const LLSD& info) { // Disable the send/post/save buttons until snapshot is ready. impl.updateControls(this); - // Force hiding the "Refresh to save" hint because we know we've just started refresh. - impl.setNeedRefresh(this, false); return 1; } diff --git a/indra/newview/llfloatertools.cpp b/indra/newview/llfloatertools.cpp index bd5d2207b4..7477b02867 100755 --- a/indra/newview/llfloatertools.cpp +++ b/indra/newview/llfloatertools.cpp @@ -888,6 +888,9 @@ void LLFloaterTools::onClose(bool app_quitting) // hide the advanced object weights floater LLFloaterReg::hideInstance("object_weights"); + + // prepare content for next call + mPanelContents->clearContents(); } void click_popup_info(void*) diff --git a/indra/newview/llfloatertopobjects.cpp b/indra/newview/llfloatertopobjects.cpp index 7530c72dd2..d604b8619a 100755 --- a/indra/newview/llfloatertopobjects.cpp +++ b/indra/newview/llfloatertopobjects.cpp @@ -50,6 +50,7 @@ #include "llviewerregion.h" #include "lluictrlfactory.h" #include "llviewerwindow.h" +#include "llfloaterregioninfo.h" //LLFloaterTopObjects* LLFloaterTopObjects::sInstance = NULL; @@ -207,7 +208,7 @@ void LLFloaterTopObjects::handleReply(LLMessageSystem *msg, void** data) columns[column_num++]["font"] = "SANSSERIF"; columns[column_num]["column"] = "location"; - columns[column_num]["value"] = llformat("<%0.1f,%0.1f,%0.1f>", location_x, location_y, location_z); + columns[column_num]["value"] = llformat("<%0.f, %0.f, %0.f>", location_x, location_y, location_z); columns[column_num++]["font"] = "SANSSERIF"; columns[column_num]["column"] = "parcel"; @@ -257,6 +258,8 @@ void LLFloaterTopObjects::handleReply(LLMessageSystem *msg, void** data) format.setArg("[COUNT]", llformat("%d", total_count)); format.setArg("[TIME]", llformat("%0.3f", mtotalScore)); getChild<LLUICtrl>("title_text")->setValue(LLSD(format)); + list->setColumnLabel("URLs", getString("URLs")); + list->setColumnLabel("memory", getString("memory")); } else { @@ -268,6 +271,13 @@ void LLFloaterTopObjects::handleReply(LLMessageSystem *msg, void** data) format.setArg("[COUNT]", llformat("%d", total_count)); getChild<LLUICtrl>("title_text")->setValue(LLSD(format)); } + + LLFloaterRegionInfo* region_info_floater = LLFloaterReg::getTypedInstance<LLFloaterRegionInfo>("region_info"); + if(region_info_floater) + { + region_info_floater->enableTopButtons(); + } + getChildView("refresh_btn")->setEnabled(true); } void LLFloaterTopObjects::onCommitObjectsList() @@ -453,12 +463,24 @@ void LLFloaterTopObjects::onRefresh() msg->addStringFast(_PREHASH_Filter, filter); msg->addS32Fast(_PREHASH_ParcelLocalID, 0); + LLFloaterRegionInfo* region_info_floater = LLFloaterReg::getTypedInstance<LLFloaterRegionInfo>("region_info"); + if(region_info_floater) + { + region_info_floater->disableTopButtons(); + } + disableRefreshBtn(); + msg->sendReliable(gAgent.getRegionHost()); mFilter.clear(); mFlags = 0; } +void LLFloaterTopObjects::disableRefreshBtn() +{ + getChildView("refresh_btn")->setEnabled(false); +} + void LLFloaterTopObjects::onGetByObjectName() { mFlags = STAT_FILTER_BY_OBJECT; diff --git a/indra/newview/llfloatertopobjects.h b/indra/newview/llfloatertopobjects.h index 28d2aa58e2..dbbe9ac521 100755 --- a/indra/newview/llfloatertopobjects.h +++ b/indra/newview/llfloatertopobjects.h @@ -66,6 +66,7 @@ public: void onRefresh(); static void setMode(U32 mode); + void disableRefreshBtn(); private: LLFloaterTopObjects(const LLSD& key); diff --git a/indra/newview/llfloatertwitter.cpp b/indra/newview/llfloatertwitter.cpp index acc97d447a..868d623d57 100644 --- a/indra/newview/llfloatertwitter.cpp +++ b/indra/newview/llfloatertwitter.cpp @@ -64,7 +64,6 @@ const std::string DEFAULT_STATUS_TEXT = " #SecondLife"; /////////////////////////// LLTwitterPhotoPanel::LLTwitterPhotoPanel() : -mSnapshotPanel(NULL), mResolutionComboBox(NULL), mRefreshBtn(NULL), mBtnPreview(NULL), @@ -94,7 +93,6 @@ BOOL LLTwitterPhotoPanel::postBuild() { setVisibleCallback(boost::bind(&LLTwitterPhotoPanel::onVisibilityChange, this, _2)); - mSnapshotPanel = getChild<LLUICtrl>("snapshot_panel"); mResolutionComboBox = getChild<LLUICtrl>("resolution_combobox"); mResolutionComboBox->setValue("[i800,i600]"); // hardcoded defaults ftw! mResolutionComboBox->setCommitCallback(boost::bind(&LLTwitterPhotoPanel::updateResolution, this, TRUE)); @@ -194,15 +192,8 @@ void LLTwitterPhotoPanel::draw() // calc preview offset within the preview rect const S32 local_offset_x = (thumbnail_rect.getWidth() - thumbnail_w) / 2 ; const S32 local_offset_y = (thumbnail_rect.getHeight() - thumbnail_h) / 2 ; - - // calc preview offset within the floater rect - // Hack : To get the full offset, we need to take into account each and every offset of each widgets up to the floater. - // This is almost as arbitrary as using a fixed offset so that's what we do here for the sake of simplicity. - // *TODO : Get the offset looking through the hierarchy of widgets, should be done in postBuild() so to avoid traversing the hierarchy each time. - S32 offset_x = thumbnail_rect.mLeft + local_offset_x - 1; - S32 offset_y = thumbnail_rect.mBottom + local_offset_y - 39; - - mSnapshotPanel->localPointToOtherView(offset_x, offset_y, &offset_x, &offset_y, getParentByType<LLFloater>()); + S32 offset_x = thumbnail_rect.mLeft + local_offset_x; + S32 offset_y = thumbnail_rect.mBottom + local_offset_y; gGL.matrixMode(LLRender::MM_MODELVIEW); // Apply floater transparency to the texture unless the floater is focused. diff --git a/indra/newview/llfloatertwitter.h b/indra/newview/llfloatertwitter.h index f07ec2ca2f..d586799d18 100644 --- a/indra/newview/llfloatertwitter.h +++ b/indra/newview/llfloatertwitter.h @@ -70,7 +70,6 @@ private: LLHandle<LLView> mPreviewHandle; - LLUICtrl * mSnapshotPanel; LLUICtrl * mResolutionComboBox; LLUICtrl * mFilterComboBox; LLUICtrl * mRefreshBtn; diff --git a/indra/newview/llfloaterurlentry.cpp b/indra/newview/llfloaterurlentry.cpp index e26f1e9ea5..e02e8eeb5a 100755 --- a/indra/newview/llfloaterurlentry.cpp +++ b/indra/newview/llfloaterurlentry.cpp @@ -204,6 +204,10 @@ void LLFloaterURLEntry::onBtnOK( void* userdata ) LLURLHistory::addURL("parcel", media_url); } + // show progress bar here? + getWindow()->incBusyCount(); + self->getChildView("loading_label")->setVisible( true); + // leading whitespace causes problems with the MIME-type detection so strip it LLStringUtil::trim( media_url ); @@ -233,10 +237,6 @@ void LLFloaterURLEntry::onBtnOK( void* userdata ) self->getChildView("ok_btn")->setEnabled(false); self->getChildView("cancel_btn")->setEnabled(false); self->getChildView("media_entry")->setEnabled(false); - - // show progress bar here? - getWindow()->incBusyCount(); - self->getChildView("loading_label")->setVisible( true); } // static diff --git a/indra/newview/llfloaterwebcontent.cpp b/indra/newview/llfloaterwebcontent.cpp index 7f599073d5..3f3d87b564 100755 --- a/indra/newview/llfloaterwebcontent.cpp +++ b/indra/newview/llfloaterwebcontent.cpp @@ -293,7 +293,7 @@ void LLFloaterWebContent::onOpen(const LLSD& key) void LLFloaterWebContent::onClose(bool app_quitting) { // If we close the web browsing window showing the facebook login, we need to signal to this object that the connection will not happen - LLFloater* fbc_web = LLFloaterReg::getInstance("fbc_web"); + LLFloater* fbc_web = LLFloaterReg::findInstance("fbc_web"); if (fbc_web == this) { if (!LLFacebookConnect::instance().isConnected()) diff --git a/indra/newview/llfolderviewmodelinventory.cpp b/indra/newview/llfolderviewmodelinventory.cpp index 7339398fa5..7615c12043 100755 --- a/indra/newview/llfolderviewmodelinventory.cpp +++ b/indra/newview/llfolderviewmodelinventory.cpp @@ -133,9 +133,9 @@ void LLFolderViewModelItemInventory::setPassedFilter(bool passed, S32 filter_gen bool before = mPrevPassedAllFilters; mPrevPassedAllFilters = passedFilter(filter_generation); - if (before != mPrevPassedAllFilters) + if (before != mPrevPassedAllFilters) { - // Need to rearrange the folder if the filtered state of the item changed + // Need to rearrange the folder if the filtered state of the item changed LLFolderViewFolder* parent_folder = mFolderViewItem->getParentFolder(); if (parent_folder) { diff --git a/indra/newview/llgesturemgr.cpp b/indra/newview/llgesturemgr.cpp index b15556d73d..119872ec29 100755 --- a/indra/newview/llgesturemgr.cpp +++ b/indra/newview/llgesturemgr.cpp @@ -1406,7 +1406,7 @@ BOOL LLGestureMgr::matchPrefix(const std::string& in_str, std::string* out_str) } if (rest_of_match.compare("") == 0) { - return FALSE; + return TRUE; } if (buf.compare("") != 0) { diff --git a/indra/newview/llinventorybridge.cpp b/indra/newview/llinventorybridge.cpp index 87335cd5e6..33e557cddd 100755 --- a/indra/newview/llinventorybridge.cpp +++ b/indra/newview/llinventorybridge.cpp @@ -103,6 +103,7 @@ bool move_task_inventory_callback(const LLSD& notification, const LLSD& response bool confirm_attachment_rez(const LLSD& notification, const LLSD& response); void teleport_via_landmark(const LLUUID& asset_id); static BOOL can_move_to_outfit(LLInventoryItem* inv_item, BOOL move_is_into_current_outfit); +static BOOL can_move_to_landmarks(LLInventoryItem* inv_item); static bool check_category(LLInventoryModel* model, const LLUUID& cat_id, LLInventoryPanel* active_panel, @@ -2216,13 +2217,18 @@ BOOL LLFolderBridge::dragCategoryIntoFolder(LLInventoryCategory* inv_cat, && (LLToolDragAndDrop::SOURCE_AGENT == source); BOOL accept = FALSE; + U64 filter_types = filter->getFilterTypes(); + BOOL use_filter = filter_types && (filter_types&LLInventoryFilter::FILTERTYPE_DATE || (filter_types&LLInventoryFilter::FILTERTYPE_OBJECT)==0); + if (is_agent_inventory) { const LLUUID &trash_id = model->findCategoryUUIDForType(LLFolderType::FT_TRASH, false); const LLUUID &landmarks_id = model->findCategoryUUIDForType(LLFolderType::FT_LANDMARK, false); + const LLUUID &my_outifts_id = model->findCategoryUUIDForType(LLFolderType::FT_MY_OUTFITS, false); const BOOL move_is_into_trash = (mUUID == trash_id) || model->isObjectDescendentOf(mUUID, trash_id); - const BOOL move_is_into_outfit = getCategory() && (getCategory()->getPreferredType() == LLFolderType::FT_OUTFIT); + const BOOL move_is_into_my_outfits = (mUUID == my_outifts_id) || model->isObjectDescendentOf(mUUID, my_outifts_id); + const BOOL move_is_into_outfit = move_is_into_my_outfits || (getCategory() && getCategory()->getPreferredType()==LLFolderType::FT_OUTFIT); const BOOL move_is_into_landmarks = (mUUID == landmarks_id) || model->isObjectDescendentOf(mUUID, landmarks_id); //-------------------------------------------------------------------------------- @@ -2273,6 +2279,29 @@ BOOL LLFolderBridge::dragCategoryIntoFolder(LLInventoryCategory* inv_cat, } } } + U32 max_items_to_wear = gSavedSettings.getU32("WearFolderLimit"); + if (is_movable + && move_is_into_current_outfit + && descendent_items.size() > max_items_to_wear) + { + LLInventoryModel::cat_array_t cats; + LLInventoryModel::item_array_t items; + LLFindWearablesEx not_worn(/*is_worn=*/ false, /*include_body_parts=*/ false); + gInventory.collectDescendentsIf(cat_id, + cats, + items, + LLInventoryModel::EXCLUDE_TRASH, + not_worn); + + if (items.size() > max_items_to_wear) + { + // Can't move 'large' folders into current outfit: MAINT-4086 + is_movable = FALSE; + LLStringUtil::format_map_t args; + args["AMOUNT"] = llformat("%d", max_items_to_wear); + tooltip_msg = LLTrans::getString("TooltipTooManyWearables",args); + } + } if (is_movable && move_is_into_trash) { for (S32 i=0; i < descendent_items.size(); ++i) @@ -2414,7 +2443,7 @@ BOOL LLFolderBridge::dragCategoryIntoFolder(LLInventoryCategory* inv_cat, is_movable = active_folder_view != NULL; } - if (is_movable) + if (is_movable && use_filter) { // Check whether the folder being dragged from active inventory panel // passes the filter of the destination panel. @@ -2552,6 +2581,12 @@ BOOL move_inv_category_world_to_agent(const LLUUID& object_id, BOOL accept = FALSE; BOOL is_move = FALSE; + BOOL use_filter = FALSE; + if (filter) + { + U64 filter_types = filter->getFilterTypes(); + use_filter = filter_types && (filter_types&LLInventoryFilter::FILTERTYPE_DATE || (filter_types&LLInventoryFilter::FILTERTYPE_OBJECT)==0); + } // coming from a task. Need to figure out if the person can // move/copy this item. @@ -2584,7 +2619,7 @@ BOOL move_inv_category_world_to_agent(const LLUUID& object_id, accept = TRUE; } - if (filter && accept) + if (accept && use_filter) { accept = filter->check(item); } @@ -2797,7 +2832,7 @@ void LLInventoryCopyAndWearObserver::changed(U32 mask) mContentsCount) { gInventory.removeObserver(this); - LLAppearanceMgr::instance().wearInventoryCategory(category, FALSE, FALSE); + LLAppearanceMgr::instance().wearInventoryCategory(category, FALSE, TRUE); delete this; } } @@ -2815,7 +2850,7 @@ void LLFolderBridge::performAction(LLInventoryModel* model, std::string action) LLFolderViewFolder *f = dynamic_cast<LLFolderViewFolder *>(mInventoryPanel.get()->getItemByID(mUUID)); if (f) { - f->setOpen(TRUE); + f->toggleOpen(); } return; @@ -3097,10 +3132,14 @@ void LLFolderBridge::pasteFromClipboard() { const LLUUID ¤t_outfit_id = model->findCategoryUUIDForType(LLFolderType::FT_CURRENT_OUTFIT, false); const LLUUID &outbox_id = model->findCategoryUUIDForType(LLFolderType::FT_OUTBOX, false); + const LLUUID &favorites_id = model->findCategoryUUIDForType(LLFolderType::FT_FAVORITE, false); + const LLUUID &my_outifts_id = model->findCategoryUUIDForType(LLFolderType::FT_MY_OUTFITS, false); const BOOL move_is_into_current_outfit = (mUUID == current_outfit_id); - const BOOL move_is_into_outfit = (getCategory() && getCategory()->getPreferredType()==LLFolderType::FT_OUTFIT); + const BOOL move_is_into_my_outfits = (mUUID == my_outifts_id) || model->isObjectDescendentOf(mUUID, my_outifts_id); + const BOOL move_is_into_outfit = move_is_into_my_outfits || (getCategory() && getCategory()->getPreferredType()==LLFolderType::FT_OUTFIT); const BOOL move_is_into_outbox = model->isObjectDescendentOf(mUUID, outbox_id); + const BOOL move_is_into_favorites = (mUUID == favorites_id); std::vector<LLUUID> objects; LLClipboard::instance().pasteFromClipboard(objects); @@ -3158,11 +3197,18 @@ void LLFolderBridge::pasteFromClipboard() { if (move_is_into_current_outfit || move_is_into_outfit) { - if (can_move_to_outfit(item, move_is_into_current_outfit)) + if (item && can_move_to_outfit(item, move_is_into_current_outfit)) { dropToOutfit(item, move_is_into_current_outfit); } } + else if (move_is_into_favorites) + { + if (item && can_move_to_landmarks(item)) + { + dropToFavorites(item); + } + } else if (LLClipboard::instance().isCutMode()) { // Do a move to "paste" a "cut" @@ -3225,9 +3271,11 @@ void LLFolderBridge::pasteLinkFromClipboard() { const LLUUID ¤t_outfit_id = model->findCategoryUUIDForType(LLFolderType::FT_CURRENT_OUTFIT, false); const LLUUID &outbox_id = model->findCategoryUUIDForType(LLFolderType::FT_OUTBOX, false); + const LLUUID &my_outifts_id = model->findCategoryUUIDForType(LLFolderType::FT_MY_OUTFITS, false); const BOOL move_is_into_current_outfit = (mUUID == current_outfit_id); - const BOOL move_is_into_outfit = (getCategory() && getCategory()->getPreferredType()==LLFolderType::FT_OUTFIT); + const BOOL move_is_into_my_outfits = (mUUID == my_outifts_id) || model->isObjectDescendentOf(mUUID, my_outifts_id); + const BOOL move_is_into_outfit = move_is_into_my_outfits || (getCategory() && getCategory()->getPreferredType()==LLFolderType::FT_OUTFIT); const BOOL move_is_into_outbox = model->isObjectDescendentOf(mUUID, outbox_id); if (move_is_into_outbox) @@ -3729,6 +3777,28 @@ void LLFolderBridge::modifyOutfit(BOOL append) LLViewerInventoryCategory* cat = getCategory(); if(!cat) return; + // checking amount of items to wear + U32 max_items = gSavedSettings.getU32("WearFolderLimit"); + if (cat->getDescendentCount() > max_items) + { + LLInventoryModel::cat_array_t cats; + LLInventoryModel::item_array_t items; + LLFindWearablesEx not_worn(/*is_worn=*/ false, /*include_body_parts=*/ false); + gInventory.collectDescendentsIf(cat->getUUID(), + cats, + items, + LLInventoryModel::EXCLUDE_TRASH, + not_worn); + + if (items.size() > max_items) + { + LLSD args; + args["AMOUNT"] = llformat("%d", max_items); + LLNotificationsUtil::add("TooManyWearables", args); + return; + } + } + LLAppearanceMgr::instance().wearInventoryCategory( cat, FALSE, append ); } @@ -3783,6 +3853,12 @@ static BOOL can_move_to_outfit(LLInventoryItem* inv_item, BOOL move_is_into_curr return FALSE; } + U32 flags = inv_item->getFlags(); + if(flags & LLInventoryItemFlags::II_FLAGS_OBJECT_HAS_MULTIPLE_ITEMS) + { + return FALSE; + } + if (move_is_into_current_outfit && get_is_item_worn(inv_item->getUUID())) { return FALSE; @@ -3868,16 +3944,22 @@ BOOL LLFolderBridge::dragItemIntoFolder(LLInventoryItem* inv_item, const LLUUID &favorites_id = model->findCategoryUUIDForType(LLFolderType::FT_FAVORITE, false); const LLUUID &landmarks_id = model->findCategoryUUIDForType(LLFolderType::FT_LANDMARK, false); const LLUUID &outbox_id = model->findCategoryUUIDForType(LLFolderType::FT_OUTBOX, false); + const LLUUID &my_outifts_id = model->findCategoryUUIDForType(LLFolderType::FT_MY_OUTFITS, false); const BOOL move_is_into_current_outfit = (mUUID == current_outfit_id); const BOOL move_is_into_favorites = (mUUID == favorites_id); - const BOOL move_is_into_outfit = (getCategory() && getCategory()->getPreferredType()==LLFolderType::FT_OUTFIT); + const BOOL move_is_into_my_outfits = (mUUID == my_outifts_id) || model->isObjectDescendentOf(mUUID, my_outifts_id); + const BOOL move_is_into_outfit = move_is_into_my_outfits || (getCategory() && getCategory()->getPreferredType()==LLFolderType::FT_OUTFIT); const BOOL move_is_into_landmarks = (mUUID == landmarks_id) || model->isObjectDescendentOf(mUUID, landmarks_id); const BOOL move_is_into_outbox = model->isObjectDescendentOf(mUUID, outbox_id); const BOOL move_is_from_outbox = model->isObjectDescendentOf(inv_item->getUUID(), outbox_id); LLToolDragAndDrop::ESource source = LLToolDragAndDrop::getInstance()->getSource(); BOOL accept = FALSE; + U64 filter_types = filter->getFilterTypes(); + // We shouldn't allow to drop non recent items into recent tab (or some similar transactions) + // while we are allowing to interact with regular filtered inventory + BOOL use_filter = filter_types && (filter_types&LLInventoryFilter::FILTERTYPE_DATE || (filter_types&LLInventoryFilter::FILTERTYPE_OBJECT)==0); LLViewerObject* object = NULL; if(LLToolDragAndDrop::SOURCE_AGENT == source) { @@ -3976,7 +4058,7 @@ BOOL LLFolderBridge::dragItemIntoFolder(LLInventoryItem* inv_item, // Check whether the item being dragged from active inventory panel // passes the filter of the destination panel. - if (accept && active_panel) + if (accept && active_panel && use_filter) { LLFolderViewItem* fv_item = active_panel->getItemByID(inv_item->getUUID()); if (!fv_item) return false; @@ -4114,7 +4196,7 @@ BOOL LLFolderBridge::dragItemIntoFolder(LLInventoryItem* inv_item, // Check whether the item being dragged from in world // passes the filter of the destination panel. - if (accept) + if (accept && use_filter) { accept = filter->check(inv_item); } @@ -4158,7 +4240,7 @@ BOOL LLFolderBridge::dragItemIntoFolder(LLInventoryItem* inv_item, // Check whether the item being dragged from notecard // passes the filter of the destination panel. - if (accept) + if (accept && use_filter) { accept = filter->check(inv_item); } @@ -4198,7 +4280,7 @@ BOOL LLFolderBridge::dragItemIntoFolder(LLInventoryItem* inv_item, // Check whether the item being dragged from the library // passes the filter of the destination panel. - if (accept && active_panel) + if (accept && active_panel && use_filter) { LLFolderViewItem* fv_item = active_panel->getItemByID(inv_item->getUUID()); if (!fv_item) return false; diff --git a/indra/newview/llinventorybridge.h b/indra/newview/llinventorybridge.h index 7dac830098..833fbbadbb 100755 --- a/indra/newview/llinventorybridge.h +++ b/indra/newview/llinventorybridge.h @@ -158,7 +158,7 @@ protected: BOOL isAgentInventory() const; // false if lost or in the inventory library BOOL isCOFFolder() const; // true if COF or descendant of BOOL isInboxFolder() const; // true if COF or descendant of marketplace inbox - BOOL isOutboxFolder() const; // true if COF or descendant of marketplace outbox + BOOL isOutboxFolderDirectParent() const; const LLUUID getOutboxFolder() const; @@ -172,6 +172,10 @@ protected: const LLUUID& new_parent, BOOL restamp); void removeBatchNoCheck(std::vector<LLFolderViewModelItem*>& batch); + +public: + BOOL isOutboxFolder() const; // true if COF or descendant of marketplace outbox + protected: LLHandle<LLInventoryPanel> mInventoryPanel; LLFolderView* mRoot; diff --git a/indra/newview/llinventoryfilter.cpp b/indra/newview/llinventoryfilter.cpp index 000eee3317..f211acedf0 100755 --- a/indra/newview/llinventoryfilter.cpp +++ b/indra/newview/llinventoryfilter.cpp @@ -37,6 +37,7 @@ #include "llfolderview.h" #include "llinventorybridge.h" #include "llviewerfoldertype.h" +#include "llradiogroup.h" // linden library includes #include "llclipboard.h" @@ -51,6 +52,7 @@ LLInventoryFilter::FilterOps::FilterOps(const Params& p) mMinDate(p.date_range.min_date), mMaxDate(p.date_range.max_date), mHoursAgo(p.hours_ago), + mDateSearchDirection(p.date_search_direction), mShowFolderState(p.show_folder_state), mPermissions(p.permissions), mFilterTypes(p.types), @@ -177,6 +179,7 @@ bool LLInventoryFilter::checkAgainstFilterType(const LLFolderViewModelItemInvent // Pass if this item's type is of the correct filter type if (filterTypes & FILTERTYPE_OBJECT) { + // If it has no type, pass it, unless it's a link. if (object_type == LLInventoryType::IT_NONE) { @@ -209,6 +212,7 @@ bool LLInventoryFilter::checkAgainstFilterType(const LLFolderViewModelItemInvent { const U16 HOURS_TO_SECONDS = 3600; time_t earliest = time_corrected() - mFilterOps.mHoursAgo * HOURS_TO_SECONDS; + if (mFilterOps.mMinDate > time_min() && mFilterOps.mMinDate < earliest) { earliest = mFilterOps.mMinDate; @@ -217,9 +221,19 @@ bool LLInventoryFilter::checkAgainstFilterType(const LLFolderViewModelItemInvent { earliest = 0; } - if (listener->getCreationDate() < earliest || - listener->getCreationDate() > mFilterOps.mMaxDate) - return FALSE; + + if (FILTERDATEDIRECTION_NEWER == mFilterOps.mDateSearchDirection || isSinceLogoff()) + { + if (listener->getCreationDate() < earliest || + listener->getCreationDate() > mFilterOps.mMaxDate) + return FALSE; + } + else + { + if (listener->getCreationDate() > earliest || + listener->getCreationDate() > mFilterOps.mMaxDate) + return FALSE; + } } //////////////////////////////////////////////////////////////////////////////// @@ -244,13 +258,25 @@ bool LLInventoryFilter::checkAgainstFilterType(const LLFolderViewModelItemInvent bool is_hidden_if_empty = LLViewerFolderType::lookupIsHiddenIfEmpty(listener->getPreferredType()); if (is_hidden_if_empty) { - // Force the fetching of those folders so they are hidden iff they really are empty... + // Force the fetching of those folders so they are hidden if they really are empty... gInventory.fetchDescendentsOf(object_id); - return FALSE; + + LLInventoryModel::cat_array_t* cat_array = NULL; + LLInventoryModel::item_array_t* item_array = NULL; + gInventory.getDirectDescendentsOf(object_id,cat_array,item_array); + S32 descendents_actual = 0; + if(cat_array && item_array) + { + descendents_actual = cat_array->size() + item_array->size(); + } + if (descendents_actual == 0) + { + return FALSE; + } } } } - + return TRUE; } @@ -629,11 +655,22 @@ void LLInventoryFilter::setHoursAgo(U32 hours) bool are_date_limits_valid = mFilterOps.mMinDate == time_min() && mFilterOps.mMaxDate == time_max(); bool is_increasing = hours > mFilterOps.mHoursAgo; + bool is_decreasing = hours < mFilterOps.mHoursAgo; bool is_increasing_from_zero = is_increasing && !mFilterOps.mHoursAgo && !isSinceLogoff(); // *NOTE: need to cache last filter time, in case filter goes stale - BOOL less_restrictive = (are_date_limits_valid && ((is_increasing && mFilterOps.mHoursAgo)) || !hours); - BOOL more_restrictive = (are_date_limits_valid && (!is_increasing && hours) || is_increasing_from_zero); + BOOL less_restrictive; + BOOL more_restrictive; + if (FILTERDATEDIRECTION_NEWER == mFilterOps.mDateSearchDirection) + { + less_restrictive = (are_date_limits_valid && ((is_increasing && mFilterOps.mHoursAgo)) || !hours); + more_restrictive = (are_date_limits_valid && (!is_increasing && hours) || is_increasing_from_zero); + } + else + { + less_restrictive = (are_date_limits_valid && ((is_decreasing && mFilterOps.mHoursAgo)) || !hours); + more_restrictive = (are_date_limits_valid && (!is_decreasing && hours) || is_increasing_from_zero); + } mFilterOps.mHoursAgo = hours; mFilterOps.mMinDate = time_min(); @@ -662,6 +699,20 @@ void LLInventoryFilter::setHoursAgo(U32 hours) } } +void LLInventoryFilter::setDateSearchDirection(U32 direction) +{ + if (direction != mFilterOps.mDateSearchDirection) + { + mFilterOps.mDateSearchDirection = direction; + setModified(FILTER_RESTART); + } +} + +U32 LLInventoryFilter::getDateSearchDirection() const +{ + return mFilterOps.mDateSearchDirection; +} + void LLInventoryFilter::setFilterLinks(U64 filter_links) { if (mFilterOps.mFilterLinks != filter_links) @@ -926,6 +977,7 @@ LLInventoryFilter& LLInventoryFilter::operator=( const LLInventoryFilter& othe setFilterObjectTypes(other.getFilterObjectTypes()); setDateRange(other.getMinDate(), other.getMaxDate()); setHoursAgo(other.getHoursAgo()); + setDateSearchDirection(other.getDateSearchDirection()); setShowFolderState(other.getShowFolderState()); setFilterPermissions(other.getFilterPermissions()); setFilterSubString(other.getFilterSubString()); @@ -945,6 +997,7 @@ void LLInventoryFilter::toParams(Params& params) const params.filter_ops.date_range.min_date = getMinDate(); params.filter_ops.date_range.max_date = getMaxDate(); params.filter_ops.hours_ago = getHoursAgo(); + params.filter_ops.date_search_direction = getDateSearchDirection(); params.filter_ops.show_folder_state = getShowFolderState(); params.filter_ops.permissions = getFilterPermissions(); params.substring = getFilterSubString(); @@ -966,12 +1019,18 @@ void LLInventoryFilter::fromParams(const Params& params) } setDateRange(params.filter_ops.date_range.min_date, params.filter_ops.date_range.max_date); setHoursAgo(params.filter_ops.hours_ago); + setDateSearchDirection(params.filter_ops.date_search_direction); setShowFolderState(params.filter_ops.show_folder_state); setFilterPermissions(params.filter_ops.permissions); setFilterSubString(params.substring); setDateRangeLastLogoff(params.since_logoff); } +U64 LLInventoryFilter::getFilterTypes() const +{ + return mFilterOps.mFilterTypes; +} + U64 LLInventoryFilter::getFilterObjectTypes() const { return mFilterOps.mFilterObjectTypes; diff --git a/indra/newview/llinventoryfilter.h b/indra/newview/llinventoryfilter.h index ce516af0b9..5e18ad4d20 100755 --- a/indra/newview/llinventoryfilter.h +++ b/indra/newview/llinventoryfilter.h @@ -55,6 +55,12 @@ public: FILTERTYPE_EMPTYFOLDERS = 0x1 << 5 // pass if folder is not a system folder to be hidden if }; + enum EFilterDateDirection + { + FILTERDATEDIRECTION_NEWER, + FILTERDATEDIRECTION_OLDER + }; + enum EFilterLink { FILTERLINK_INCLUDE_LINKS, // show links too @@ -94,7 +100,8 @@ public: Optional<EFilterLink> links; Optional<LLUUID> uuid; Optional<DateRange> date_range; - Optional<S32> hours_ago; + Optional<U32> hours_ago; + Optional<U32> date_search_direction; Optional<EFolderShow> show_folder_state; Optional<PermissionMask> permissions; @@ -107,6 +114,7 @@ public: uuid("uuid"), date_range("date_range"), hours_ago("hours_ago", 0), + date_search_direction("date_search_direction", FILTERDATEDIRECTION_NEWER), show_folder_state("show_folder_state", SHOW_NON_EMPTY_FOLDERS), permissions("permissions", PERM_NONE) {} @@ -124,6 +132,7 @@ public: time_t mMinDate, mMaxDate; U32 mHoursAgo; + U32 mDateSearchDirection; EFolderShow mShowFolderState; PermissionMask mPermissions; @@ -151,6 +160,7 @@ public: // +-------------------------------------------------------------------+ // + Parameters // +-------------------------------------------------------------------+ + U64 getFilterTypes() const; U64 getFilterObjectTypes() const; U64 getFilterCategoryTypes() const; U64 getFilterWearableTypes() const; @@ -177,6 +187,8 @@ public: void setHoursAgo(U32 hours); U32 getHoursAgo() const; + void setDateSearchDirection(U32 direction); + U32 getDateSearchDirection() const; void setFilterLinks(U64 filter_link); U64 getFilterLinks() const; diff --git a/indra/newview/llinventoryfunctions.cpp b/indra/newview/llinventoryfunctions.cpp index 1e7825a13e..1abc09bf3b 100755 --- a/indra/newview/llinventoryfunctions.cpp +++ b/indra/newview/llinventoryfunctions.cpp @@ -881,7 +881,7 @@ bool LLFindWearablesEx::operator()(LLInventoryCategory* cat, LLInventoryItem* it if (!vitem) return false; // Skip non-wearables. - if (!vitem->isWearableType() && vitem->getType() != LLAssetType::AT_OBJECT) + if (!vitem->isWearableType() && vitem->getType() != LLAssetType::AT_OBJECT && vitem->getType() != LLAssetType::AT_GESTURE) { return false; } diff --git a/indra/newview/llinventorypanel.cpp b/indra/newview/llinventorypanel.cpp index a4a85e2e8d..e18ecd2e2a 100755 --- a/indra/newview/llinventorypanel.cpp +++ b/indra/newview/llinventorypanel.cpp @@ -336,7 +336,9 @@ LLInventoryFilter& LLInventoryPanel::getFilter() void LLInventoryPanel::setFilterTypes(U64 types, LLInventoryFilter::EFilterType filter_type) { if (filter_type == LLInventoryFilter::FILTERTYPE_OBJECT) + { getFilter().setFilterObjectTypes(types); + } if (filter_type == LLInventoryFilter::FILTERTYPE_CATEGORY) getFilter().setFilterCategoryTypes(types); } @@ -400,6 +402,11 @@ void LLInventoryPanel::setHoursAgo(U32 hours) getFilter().setHoursAgo(hours); } +void LLInventoryPanel::setDateSearchDirection(U32 direction) +{ + getFilter().setDateSearchDirection(direction); +} + void LLInventoryPanel::setFilterLinks(U64 filter_links) { getFilter().setFilterLinks(filter_links); @@ -581,6 +588,22 @@ void LLInventoryPanel::modelChanged(U32 mask) } } } + + if (mask & (LLInventoryObserver::STRUCTURE | LLInventoryObserver::REMOVE)) + { + // STRUCTURE and REMOVE model changes usually fail to update (clean) + // mMostFilteredDescendantGeneration of parent folder and dirtyFilter() + // is not sufficient for successful filter update, so we need to check + // all already passed element over again to remove obsolete elements. + // New items or moved items should be sufficiently covered by + // dirtyFilter(). + LLInventoryFilter& filter = getFilter(); + if (filter.getFilterTypes() & LLInventoryFilter::FILTERTYPE_DATE + || filter.isNotDefault()) + { + filter.setModified(LLFolderViewFilter::FILTER_MORE_RESTRICTIVE); + } + } } LLUUID LLInventoryPanel::getRootFolderID() @@ -1390,6 +1413,17 @@ BOOL LLInventoryPanel::handleKeyHere( KEY key, MASK mask ) // Open selected items if enter key hit on the inventory panel if (mask == MASK_NONE) { + //Don't allow attaching or opening items from Merchant Outbox + LLFolderViewItem* folder_item = mFolderRoot.get()->getCurSelectedItem(); + if(folder_item) + { + LLInvFVBridge* bridge = (LLInvFVBridge*)folder_item->getViewModelItem(); + if(bridge && bridge->isOutboxFolder() && (bridge->getInventoryType() != LLInventoryType::IT_CATEGORY)) + { + return handled; + } + } + LLInventoryAction::doToSelected(mInventory, mFolderRoot.get(), "open"); handled = TRUE; } diff --git a/indra/newview/llinventorypanel.h b/indra/newview/llinventorypanel.h index 91c3efd8f0..a490dfce5d 100755 --- a/indra/newview/llinventorypanel.h +++ b/indra/newview/llinventorypanel.h @@ -173,6 +173,7 @@ public: const std::string getFilterSubString(); void setSinceLogoff(BOOL sl); void setHoursAgo(U32 hours); + void setDateSearchDirection(U32 direction); BOOL getSinceLogoff(); void setFilterLinks(U64 filter_links); diff --git a/indra/newview/lllocalbitmaps.cpp b/indra/newview/lllocalbitmaps.cpp index b91e37d596..897ee8429a 100755 --- a/indra/newview/lllocalbitmaps.cpp +++ b/indra/newview/lllocalbitmaps.cpp @@ -61,7 +61,9 @@ #include "llnotificationsutil.h" #include "pipeline.h" #include "llmaterialmgr.h" - +#include "llimagedimensionsinfo.h" +#include "llviewercontrol.h" +#include "lltrans.h" /*=======================================*/ /* Formal declarations, constants, etc. */ /*=======================================*/ @@ -845,6 +847,12 @@ bool LLLocalBitmapMgr::addUnit() std::string filename = picker.getFirstFile(); while(!filename.empty()) { + if(!checkTextureDimensions(filename)) + { + filename = picker.getNextFile(); + continue; + } + LLLocalBitmap* unit = new LLLocalBitmap(filename); if (unit->getValid()) @@ -874,6 +882,37 @@ bool LLLocalBitmapMgr::addUnit() return add_successful; } +bool LLLocalBitmapMgr::checkTextureDimensions(std::string filename) +{ + std::string exten = gDirUtilp->getExtension(filename); + U32 codec = LLImageBase::getCodecFromExtension(exten); + std::string mImageLoadError; + LLImageDimensionsInfo image_info; + if (!image_info.load(filename,codec)) + { + return false; + } + + S32 max_width = gSavedSettings.getS32("max_texture_dimension_X"); + S32 max_height = gSavedSettings.getS32("max_texture_dimension_Y"); + + if ((image_info.getWidth() > max_width) || (image_info.getHeight() > max_height)) + { + LLStringUtil::format_map_t args; + args["WIDTH"] = llformat("%d", max_width); + args["HEIGHT"] = llformat("%d", max_height); + mImageLoadError = LLTrans::getString("texture_load_dimensions_error", args); + + LLSD notif_args; + notif_args["REASON"] = mImageLoadError; + LLNotificationsUtil::add("CannotUploadTexture", notif_args); + + return false; + } + + return true; +} + void LLLocalBitmapMgr::delUnit(LLUUID tracking_id) { if (!sBitmapList.empty()) diff --git a/indra/newview/lllocalbitmaps.h b/indra/newview/lllocalbitmaps.h index a15ea10801..59467922b4 100755 --- a/indra/newview/lllocalbitmaps.h +++ b/indra/newview/lllocalbitmaps.h @@ -120,6 +120,7 @@ class LLLocalBitmapMgr static void cleanupClass(); static bool addUnit(); static void delUnit(LLUUID tracking_id); + static bool checkTextureDimensions(std::string filename); static LLUUID getWorldID(LLUUID tracking_id); static std::string getFilename(LLUUID tracking_id); diff --git a/indra/newview/llmanip.cpp b/indra/newview/llmanip.cpp index bbcdcb126d..0935691ebc 100755 --- a/indra/newview/llmanip.cpp +++ b/indra/newview/llmanip.cpp @@ -62,7 +62,7 @@ F32 LLManip::sHelpTextFadeTime = 2.f; S32 LLManip::sNumTimesHelpTextShown = 0; S32 LLManip::sMaxTimesShowHelpText = 5; F32 LLManip::sGridMaxSubdivisionLevel = 32.f; -F32 LLManip::sGridMinSubdivisionLevel = 1.f; +F32 LLManip::sGridMinSubdivisionLevel = 1.f / 32.f; LLVector2 LLManip::sTickLabelSpacing(60.f, 25.f); @@ -176,7 +176,7 @@ BOOL LLManip::getManipAxis(LLViewerObject* object, EManipPart manip, LLVector3 & return TRUE; } -F32 LLManip::getSubdivisionLevel(const LLVector3 &reference_point, const LLVector3 &translate_axis, F32 grid_scale, S32 min_pixel_spacing) +F32 LLManip::getSubdivisionLevel(const LLVector3 &reference_point, const LLVector3 &translate_axis, F32 grid_scale, S32 min_pixel_spacing, F32 min_subdivisions, F32 max_subdivisions) { //update current snap subdivision level LLVector3 cam_to_reference; @@ -192,7 +192,8 @@ F32 LLManip::getSubdivisionLevel(const LLVector3 &reference_point, const LLVecto F32 projected_translation_axis_length = (translate_axis % cam_to_reference).magVec(); F32 subdivisions = llmax(projected_translation_axis_length * grid_scale / (current_range / LLViewerCamera::getInstance()->getPixelMeterRatio() * min_pixel_spacing), 0.f); - subdivisions = llclamp((F32)pow(2.f, llfloor(log(subdivisions) / log(2.f))), 1.f / 32.f, 32.f); + // figure out nearest power of 2 that subdivides grid_scale with result > min_pixel_spacing + subdivisions = llclamp((F32)pow(2.f, llfloor(log(subdivisions) / log(2.f))), min_subdivisions, max_subdivisions); return subdivisions; } @@ -548,37 +549,31 @@ void LLManip::renderTickValue(const LLVector3& pos, F32 value, const std::string BOOL hud_selection = mObjectSelection->getSelectType() == SELECT_TYPE_HUD; gGL.matrixMode(LLRender::MM_MODELVIEW); gGL.pushMatrix(); - LLVector3 render_pos = pos; - if (hud_selection) { - F32 zoom_amt = gAgentCamera.mHUDCurZoom; - F32 inv_zoom_amt = 1.f / zoom_amt; - // scale text back up to counter-act zoom level - render_pos = pos * zoom_amt; - gGL.scalef(inv_zoom_amt, inv_zoom_amt, inv_zoom_amt); - } - - LLColor4 shadow_color = LLColor4::black; - shadow_color.mV[VALPHA] = color.mV[VALPHA] * 0.5f; + LLVector3 render_pos = pos; + if (hud_selection) + { + F32 zoom_amt = gAgentCamera.mHUDCurZoom; + F32 inv_zoom_amt = 1.f / zoom_amt; + // scale text back up to counter-act zoom level + render_pos = pos * zoom_amt; + gGL.scalef(inv_zoom_amt, inv_zoom_amt, inv_zoom_amt); + } - if (fractional_portion != 0) - { - fraction_string = llformat("%c%02d%s", LLResMgr::getInstance()->getDecimalPoint(), fractional_portion, suffix.c_str()); + LLColor4 shadow_color = LLColor4::black; + shadow_color.mV[VALPHA] = color.mV[VALPHA] * 0.5f; - gViewerWindow->setup3DViewport(1, -1); - hud_render_utf8text(val_string, render_pos, *big_fontp, LLFontGL::NORMAL, LLFontGL::NO_SHADOW, -1.f * big_fontp->getWidthF32(val_string), 3.f, shadow_color, hud_selection); - hud_render_utf8text(fraction_string, render_pos, *small_fontp, LLFontGL::NORMAL, LLFontGL::NO_SHADOW, 1.f, 3.f, shadow_color, hud_selection); + if (fractional_portion != 0) + { + fraction_string = llformat("%c%02d%s", LLResMgr::getInstance()->getDecimalPoint(), fractional_portion, suffix.c_str()); - gViewerWindow->setup3DViewport(); - hud_render_utf8text(val_string, render_pos, *big_fontp, LLFontGL::NORMAL, LLFontGL::NO_SHADOW, -1.f * big_fontp->getWidthF32(val_string), 3.f, color, hud_selection); - hud_render_utf8text(fraction_string, render_pos, *small_fontp, LLFontGL::NORMAL, LLFontGL::NO_SHADOW, 1.f, 3.f, color, hud_selection); - } - else - { - gViewerWindow->setup3DViewport(1, -1); - hud_render_utf8text(val_string, render_pos, *big_fontp, LLFontGL::NORMAL, LLFontGL::NO_SHADOW, -0.5f * big_fontp->getWidthF32(val_string), 3.f, shadow_color, hud_selection); - gViewerWindow->setup3DViewport(); - hud_render_utf8text(val_string, render_pos, *big_fontp, LLFontGL::NORMAL, LLFontGL::NO_SHADOW, -0.5f * big_fontp->getWidthF32(val_string), 3.f, color, hud_selection); + hud_render_utf8text(val_string, render_pos, *big_fontp, LLFontGL::NORMAL, LLFontGL::DROP_SHADOW, -1.f * big_fontp->getWidthF32(val_string), 3.f, color, hud_selection); + hud_render_utf8text(fraction_string, render_pos, *small_fontp, LLFontGL::NORMAL, LLFontGL::DROP_SHADOW, 1.f, 3.f, color, hud_selection); + } + else + { + hud_render_utf8text(val_string, render_pos, *big_fontp, LLFontGL::NORMAL, LLFontGL::DROP_SHADOW, -0.5f * big_fontp->getWidthF32(val_string), 3.f, color, hud_selection); + } } gGL.popMatrix(); } diff --git a/indra/newview/llmanip.h b/indra/newview/llmanip.h index 6263e4244f..1fb05e047a 100755 --- a/indra/newview/llmanip.h +++ b/indra/newview/llmanip.h @@ -137,7 +137,7 @@ protected: LLVector3 getPivotPoint(); void getManipNormal(LLViewerObject* object, EManipPart manip, LLVector3 &normal); BOOL getManipAxis(LLViewerObject* object, EManipPart manip, LLVector3 &axis); - F32 getSubdivisionLevel(const LLVector3 &reference_point, const LLVector3 &translate_axis, F32 grid_scale, S32 min_pixel_spacing = MIN_DIVISION_PIXEL_WIDTH); + F32 getSubdivisionLevel(const LLVector3 &reference_point, const LLVector3 &translate_axis, F32 grid_scale, S32 min_pixel_spacing = MIN_DIVISION_PIXEL_WIDTH, F32 min_subdivisions = sGridMinSubdivisionLevel, F32 max_subdivisions = sGridMaxSubdivisionLevel); void renderTickValue(const LLVector3& pos, F32 value, const std::string& suffix, const LLColor4 &color); void renderTickText(const LLVector3& pos, const std::string& suffix, const LLColor4 &color); void updateGridSettings(); diff --git a/indra/newview/llmaniptranslate.cpp b/indra/newview/llmaniptranslate.cpp index 8a89131c43..d22672bc16 100755 --- a/indra/newview/llmaniptranslate.cpp +++ b/indra/newview/llmaniptranslate.cpp @@ -374,7 +374,7 @@ BOOL LLManipTranslate::handleMouseDownOnPart( S32 x, S32 y, MASK mask ) //LLVector3 select_center_agent = gAgent.getPosAgentFromGlobal(LLSelectMgr::getInstance()->getSelectionCenterGlobal()); // TomY: The above should (?) be identical to the below LLVector3 select_center_agent = getPivotPoint(); - mSubdivisions = llclamp(getSubdivisionLevel(select_center_agent, axis_exists ? axis : LLVector3::z_axis, getMinGridScale()), sGridMinSubdivisionLevel, sGridMaxSubdivisionLevel); + mSubdivisions = getSubdivisionLevel(select_center_agent, axis_exists ? axis : LLVector3::z_axis, getMinGridScale()); // if we clicked on a planar manipulator, recenter mouse cursor if (mManipPart >= LL_YZ_PLANE && mManipPart <= LL_XY_PLANE) @@ -516,7 +516,7 @@ BOOL LLManipTranslate::handleHover(S32 x, S32 y, MASK mask) LLSelectMgr::getInstance()->updateSelectionCenter(); LLVector3d current_pos_global = gAgent.getPosGlobalFromAgent(getPivotPoint()); - mSubdivisions = llclamp(getSubdivisionLevel(getPivotPoint(), axis_f, getMinGridScale()), sGridMinSubdivisionLevel, sGridMaxSubdivisionLevel); + mSubdivisions = getSubdivisionLevel(getPivotPoint(), axis_f, getMinGridScale()); // Project the cursor onto that plane LLVector3d relative_move; @@ -606,7 +606,7 @@ BOOL LLManipTranslate::handleHover(S32 x, S32 y, MASK mask) max_grid_scale = mGridScale.mV[VZ]; } - F32 num_subdivisions = llclamp(getSubdivisionLevel(getPivotPoint(), camera_projected_dir, max_grid_scale), sGridMinSubdivisionLevel, sGridMaxSubdivisionLevel); + F32 num_subdivisions = getSubdivisionLevel(getPivotPoint(), camera_projected_dir, max_grid_scale); F32 grid_scale_a; F32 grid_scale_b; @@ -1254,6 +1254,7 @@ void LLManipTranslate::renderSnapGuides() for (S32 pass = 0; pass < 3; pass++) { LLColor4 line_color = setupSnapGuideRenderPass(pass); + LLGLDepthTest gls_depth(pass != 1); gGL.begin(LLRender::LINES); { @@ -1285,7 +1286,7 @@ void LLManipTranslate::renderSnapGuides() { tick_start = selection_center + (translate_axis * (smallest_grid_unit_scale * (F32)i - offset_nearest_grid_unit)); - F32 cur_subdivisions = llclamp(getSubdivisionLevel(tick_start, translate_axis, getMinGridScale()), sGridMinSubdivisionLevel, sGridMaxSubdivisionLevel); + F32 cur_subdivisions = getSubdivisionLevel(tick_start, translate_axis, getMinGridScale()); if (fmodf((F32)(i + sub_div_offset), (max_subdivisions / cur_subdivisions)) != 0.f) { @@ -1383,7 +1384,7 @@ void LLManipTranslate::renderSnapGuides() tick_scale *= 0.7f; } - if (fmodf((F32)(i + sub_div_offset), (max_subdivisions / llmin(sGridMaxSubdivisionLevel, getSubdivisionLevel(tick_pos, translate_axis, getMinGridScale(), tick_label_spacing)))) == 0.f) + if (fmodf((F32)(i + sub_div_offset), (max_subdivisions / getSubdivisionLevel(tick_pos, translate_axis, getMinGridScale(), tick_label_spacing))) == 0.f) { F32 snap_offset_meters; diff --git a/indra/newview/llmediactrl.cpp b/indra/newview/llmediactrl.cpp index 086bc1c186..f4e08dc790 100755 --- a/indra/newview/llmediactrl.cpp +++ b/indra/newview/llmediactrl.cpp @@ -509,6 +509,16 @@ void LLMediaCtrl::navigateForward() //////////////////////////////////////////////////////////////////////////////// // +void LLMediaCtrl::navigateStop() +{ + if (mMediaSource && mMediaSource->hasMedia()) + { + mMediaSource->getMediaPlugin()->browse_stop(); + } +} + +//////////////////////////////////////////////////////////////////////////////// +// bool LLMediaCtrl::canNavigateBack() { if (mMediaSource) diff --git a/indra/newview/llmediactrl.h b/indra/newview/llmediactrl.h index b6ed0f3fab..785c57b78a 100755 --- a/indra/newview/llmediactrl.h +++ b/indra/newview/llmediactrl.h @@ -99,6 +99,7 @@ public: void navigateBack(); void navigateHome(); void navigateForward(); + void navigateStop(); void navigateToLocalPage( const std::string& subdir, const std::string& filename_in ); bool canNavigateBack(); bool canNavigateForward(); diff --git a/indra/newview/llnotificationstorage.cpp b/indra/newview/llnotificationstorage.cpp index 2923221c90..e9970de58c 100755 --- a/indra/newview/llnotificationstorage.cpp +++ b/indra/newview/llnotificationstorage.cpp @@ -103,19 +103,21 @@ bool LLNotificationStorage::writeNotifications(const LLSD& pNotificationData) co return didFileOpen; } -bool LLNotificationStorage::readNotifications(LLSD& pNotificationData) const +bool LLNotificationStorage::readNotifications(LLSD& pNotificationData, bool is_new_filename) const { - LL_INFOS("LLNotificationStorage") << "starting read '" << mFileName << "'" << LL_ENDL; + std::string filename = is_new_filename? mFileName : mOldFileName; + + LL_INFOS("LLNotificationStorage") << "starting read '" << filename << "'" << LL_ENDL; bool didFileRead; pNotificationData.clear(); - llifstream notifyFile(mFileName.c_str()); + llifstream notifyFile(filename.c_str()); didFileRead = notifyFile.is_open(); if (!didFileRead) { - LL_WARNS("LLNotificationStorage") << "Failed to open file '" << mFileName << "'" << LL_ENDL; + LL_WARNS("LLNotificationStorage") << "Failed to open file '" << filename << "'" << LL_ENDL; } else { @@ -128,7 +130,19 @@ bool LLNotificationStorage::readNotifications(LLSD& pNotificationData) const } } - LL_INFOS("LLNotificationStorage") << "ending read '" << mFileName << "'" << LL_ENDL; + LL_INFOS("LLNotificationStorage") << "ending read '" << filename << "'" << LL_ENDL; + if (!didFileRead) + { + if(is_new_filename) + { + didFileRead = readNotifications(pNotificationData, false); + if(didFileRead) + { + writeNotifications(pNotificationData); + LLFile::remove(mOldFileName); + } + } + } return didFileRead; } diff --git a/indra/newview/llnotificationstorage.h b/indra/newview/llnotificationstorage.h index 53fd898ea4..21d7123747 100755 --- a/indra/newview/llnotificationstorage.h +++ b/indra/newview/llnotificationstorage.h @@ -43,13 +43,15 @@ public: protected: bool writeNotifications(const LLSD& pNotificationData) const; - bool readNotifications(LLSD& pNotificationData) const; + bool readNotifications(LLSD& pNotificationData, bool is_new_filename = true) const; void setFileName(std::string pFileName) {mFileName = pFileName;} + void setOldFileName(std::string pFileName) {mOldFileName = pFileName;} LLNotificationResponderInterface* createResponder(const std::string& pNotificationName, const LLSD& pParams) const; private: std::string mFileName; + std::string mOldFileName; }; #endif // LL_NOTIFICATIONSTORAGE_H diff --git a/indra/newview/llpanelcontents.cpp b/indra/newview/llpanelcontents.cpp index 89a9e0dc16..407cbfc47b 100755 --- a/indra/newview/llpanelcontents.cpp +++ b/indra/newview/llpanelcontents.cpp @@ -142,6 +142,13 @@ void LLPanelContents::refresh() } } +void LLPanelContents::clearContents() +{ + if (mPanelInventoryObject) + { + mPanelInventoryObject->clearInventoryTask(); + } +} // diff --git a/indra/newview/llpanelcontents.h b/indra/newview/llpanelcontents.h index ad62e13bc2..6ecc78afa0 100755 --- a/indra/newview/llpanelcontents.h +++ b/indra/newview/llpanelcontents.h @@ -48,6 +48,7 @@ public: virtual ~LLPanelContents(); void refresh(); + void clearContents(); static void onClickNewScript(void*); diff --git a/indra/newview/llpaneleditwearable.cpp b/indra/newview/llpaneleditwearable.cpp index ac00c5d986..19a86cdcea 100755 --- a/indra/newview/llpaneleditwearable.cpp +++ b/indra/newview/llpaneleditwearable.cpp @@ -860,10 +860,8 @@ void LLPanelEditWearable::draw() void LLPanelEditWearable::onClose() { - if ( isDirty() ) - { - revertChanges(); - } + // any unsaved changes should be reverted at this point + revertChanges(); } void LLPanelEditWearable::setVisible(BOOL visible) @@ -951,7 +949,7 @@ void LLPanelEditWearable::onCommitSexChange() gAgentAvatarp->updateSexDependentLayerSets(); gAgentAvatarp->updateVisualParams(); - + showWearable(mWearablePtr, TRUE, TRUE); updateScrollingPanelUI(); } diff --git a/indra/newview/llpanelgrouproles.cpp b/indra/newview/llpanelgrouproles.cpp index 2e747bc4da..c3a10b3fa0 100755 --- a/indra/newview/llpanelgrouproles.cpp +++ b/indra/newview/llpanelgrouproles.cpp @@ -2389,7 +2389,8 @@ void LLPanelGroupRolesSubTab::handleActionCheck(LLUICtrl* ctrl, bool force) } else { - LL_WARNS() << "Unable to look up role information for role id: " << role_id << LL_ENDL; + LL_WARNS() << "Unable to look up role information for role id: " + << role_id << LL_ENDL; } ////////////////////////////////////////////////////////////////////////// @@ -2834,7 +2835,7 @@ void LLPanelGroupActionsSubTab::setGroupID(const LLUUID& id) if(mActionMembers) mActionMembers->deleteAllItems(); if(mActionDescription) mActionDescription->clear(); - + LLPanelGroupSubTab::setGroupID(id); } diff --git a/indra/newview/llpanellogin.cpp b/indra/newview/llpanellogin.cpp index 088eaa8e0d..abdfa89f50 100755 --- a/indra/newview/llpanellogin.cpp +++ b/indra/newview/llpanellogin.cpp @@ -225,11 +225,16 @@ void LLPanelLogin::addUsersWithFavoritesToUsername() { LLComboBox* combo = getChild<LLComboBox>("username_combo"); if (!combo) return; - std::string filename = gDirUtilp->getExpandedFilename(LL_PATH_USER_SETTINGS, "stored_favorites.xml"); + std::string filename = gDirUtilp->getExpandedFilename(LL_PATH_USER_SETTINGS, "stored_favorites_" + LLGridManager::getInstance()->getGrid() + ".xml"); + std::string old_filename = gDirUtilp->getExpandedFilename(LL_PATH_USER_SETTINGS, "stored_favorites.xml"); LLSD fav_llsd; llifstream file; file.open(filename); - if (!file.is_open()) return; + if (!file.is_open()) + { + file.open(old_filename); + if (!file.is_open()) return; + } LLSDSerialize::fromXML(fav_llsd, file); for (LLSD::map_const_iterator iter = fav_llsd.beginMap(); iter != fav_llsd.endMap(); ++iter) @@ -251,11 +256,17 @@ void LLPanelLogin::addFavoritesToStartLocation() // Load favorites into the combo. std::string user_defined_name = getChild<LLComboBox>("username_combo")->getSimple(); - std::string filename = gDirUtilp->getExpandedFilename(LL_PATH_USER_SETTINGS, "stored_favorites.xml"); + std::replace(user_defined_name.begin(), user_defined_name.end(), '.', ' '); + std::string filename = gDirUtilp->getExpandedFilename(LL_PATH_USER_SETTINGS, "stored_favorites_" + LLGridManager::getInstance()->getGrid() + ".xml"); + std::string old_filename = gDirUtilp->getExpandedFilename(LL_PATH_USER_SETTINGS, "stored_favorites.xml"); LLSD fav_llsd; llifstream file; file.open(filename); - if (!file.is_open()) return; + if (!file.is_open()) + { + file.open(old_filename); + if (!file.is_open()) return; + } LLSDSerialize::fromXML(fav_llsd, file); for (LLSD::map_const_iterator iter = fav_llsd.beginMap(); iter != fav_llsd.endMap(); ++iter) @@ -954,11 +965,12 @@ void LLPanelLogin::onSelectServer() // The user twiddled with the grid choice ui. // apply the selection to the grid setting. LLPointer<LLCredential> credential; - + LLComboBox* server_combo = getChild<LLComboBox>("server_combo"); LLSD server_combo_val = server_combo->getSelectedValue(); LL_INFOS("AppInit") << "grid "<<server_combo_val.asString()<< LL_ENDL; LLGridManager::getInstance()->setGridChoice(server_combo_val.asString()); + addFavoritesToStartLocation(); /* * Determine whether or not the value in the start_location_combo makes sense diff --git a/indra/newview/llpanelmaininventory.cpp b/indra/newview/llpanelmaininventory.cpp index b02298090a..a7c9dbdf7b 100755 --- a/indra/newview/llpanelmaininventory.cpp +++ b/indra/newview/llpanelmaininventory.cpp @@ -55,6 +55,7 @@ #include "llviewertexturelist.h" #include "llsidepanelinventory.h" #include "llfolderview.h" +#include "llradiogroup.h" const std::string FILTERS_FILENAME("filters.xml"); @@ -82,6 +83,7 @@ public: void updateElementsFromFilter(); BOOL getCheckShowEmpty(); BOOL getCheckSinceLogoff(); + U32 getDateSearchDirection(); static void onTimeAgo(LLUICtrl*, void *); static void onCloseBtn(void* user_data); @@ -382,9 +384,11 @@ BOOL LLPanelMainInventory::filtersVisible(void* user_data) void LLPanelMainInventory::onClearSearch() { + BOOL initially_active = FALSE; LLFloater *finder = getFinder(); if (mActivePanel) { + initially_active = mActivePanel->getFilter().isNotDefault(); mActivePanel->setFilterSubString(LLStringUtil::null); mActivePanel->setFilterTypes(0xffffffffffffffffULL); mActivePanel->setFilterLinks(LLInventoryFilter::FILTERLINK_INCLUDE_LINKS); @@ -395,8 +399,8 @@ void LLPanelMainInventory::onClearSearch() LLFloaterInventoryFinder::selectAllTypes(finder); } - // re-open folders that were initially open - if (mActivePanel) + // re-open folders that were initially open in case filter was active + if (mActivePanel && (mFilterSubString.size() || initially_active)) { mSavedFolderState->setApply(TRUE); mActivePanel->getRootFolder()->applyFunctorRecursively(*mSavedFolderState); @@ -700,6 +704,30 @@ void LLFloaterInventoryFinder::onTimeAgo(LLUICtrl *ctrl, void *user_data) if ( self->mSpinSinceDays->get() || self->mSpinSinceHours->get() ) { self->getChild<LLUICtrl>("check_since_logoff")->setValue(false); + + U32 days = (U32)self->mSpinSinceDays->get(); + U32 hours = (U32)self->mSpinSinceHours->get(); + if (hours >= 24) + { + // Try to handle both cases of spinner clicking and text input in a sensible fashion as best as possible. + // There is no way to tell if someone has clicked the spinner to get to 24 or input 24 manually, so in + // this case add to days. Any value > 24 means they have input the hours manually, so do not add to the + // current day value. + if (24 == hours) // Got to 24 via spinner clicking or text input of 24 + { + days = days + hours / 24; + } + else // Text input, so do not add to days + { + days = hours / 24; + } + hours = (U32)hours % 24; + self->mSpinSinceHours->setFocus(false); + self->mSpinSinceDays->setFocus(false); + self->mSpinSinceDays->set((F32)days); + self->mSpinSinceHours->set((F32)hours); + self->mSpinSinceHours->setFocus(true); + } } } @@ -719,6 +747,7 @@ void LLFloaterInventoryFinder::updateElementsFromFilter() std::string filter_string = mFilter->getFilterSubString(); LLInventoryFilter::EFolderShow show_folders = mFilter->getShowFolderState(); U32 hours = mFilter->getHoursAgo(); + U32 date_search_direction = mFilter->getDateSearchDirection(); // update the ui elements setTitle(mFilter->getName()); @@ -740,6 +769,7 @@ void LLFloaterInventoryFinder::updateElementsFromFilter() getChild<LLUICtrl>("check_since_logoff")->setValue(mFilter->isSinceLogoff()); mSpinSinceHours->set((F32)(hours % 24)); mSpinSinceDays->set((F32)(hours / 24)); + getChild<LLRadioGroup>("date_search_direction")->setSelectedIndex(date_search_direction); } void LLFloaterInventoryFinder::draw() @@ -840,17 +870,23 @@ void LLFloaterInventoryFinder::draw() } U32 days = (U32)mSpinSinceDays->get(); U32 hours = (U32)mSpinSinceHours->get(); - if (hours > 24) + if (hours >= 24) { - days += hours / 24; + days = hours / 24; hours = (U32)hours % 24; + // A UI element that has focus will not display a new value set to it + mSpinSinceHours->setFocus(false); + mSpinSinceDays->setFocus(false); mSpinSinceDays->set((F32)days); mSpinSinceHours->set((F32)hours); + mSpinSinceHours->setFocus(true); } hours += days * 24; + mPanelMainInventory->getPanel()->setHoursAgo(hours); mPanelMainInventory->getPanel()->setSinceLogoff(getCheckSinceLogoff()); mPanelMainInventory->setFilterTextFromFilter(); + mPanelMainInventory->getPanel()->setDateSearchDirection(getDateSearchDirection()); LLPanel::draw(); } @@ -865,6 +901,11 @@ BOOL LLFloaterInventoryFinder::getCheckSinceLogoff() return getChild<LLUICtrl>("check_since_logoff")->getValue(); } +U32 LLFloaterInventoryFinder::getDateSearchDirection() +{ + return getChild<LLRadioGroup>("date_search_direction")->getSelectedIndex(); +} + void LLFloaterInventoryFinder::onCloseBtn(void* user_data) { LLFloaterInventoryFinder* finderp = (LLFloaterInventoryFinder*)user_data; diff --git a/indra/newview/llpanelobjectinventory.cpp b/indra/newview/llpanelobjectinventory.cpp index 665b9ab294..6b74d90708 100755 --- a/indra/newview/llpanelobjectinventory.cpp +++ b/indra/newview/llpanelobjectinventory.cpp @@ -1862,14 +1862,19 @@ void LLPanelObjectInventory::refresh() } if(!has_inventory) { - mTaskUUID = LLUUID::null; - removeVOInventoryListener(); - clearContents(); + clearInventoryTask(); } mInventoryViewModel.setTaskID(mTaskUUID); //LL_INFOS() << "LLPanelObjectInventory::refresh() " << mTaskUUID << LL_ENDL; } +void LLPanelObjectInventory::clearInventoryTask() +{ + mTaskUUID = LLUUID::null; + removeVOInventoryListener(); + clearContents(); +} + void LLPanelObjectInventory::removeSelectedItem() { if(mFolders) diff --git a/indra/newview/llpanelobjectinventory.h b/indra/newview/llpanelobjectinventory.h index 9559f7e886..3de49242ac 100755 --- a/indra/newview/llpanelobjectinventory.h +++ b/indra/newview/llpanelobjectinventory.h @@ -62,6 +62,7 @@ public: void refresh(); const LLUUID& getTaskUUID() { return mTaskUUID;} + void clearInventoryTask(); void removeSelectedItem(); void startRenamingSelectedItem(); diff --git a/indra/newview/llpanelpeoplemenus.cpp b/indra/newview/llpanelpeoplemenus.cpp index 6979ae06e0..a5f59dbf4a 100755 --- a/indra/newview/llpanelpeoplemenus.cpp +++ b/indra/newview/llpanelpeoplemenus.cpp @@ -90,7 +90,7 @@ LLContextMenu* PeopleContextMenu::createMenu() // Set up for multi-selected People // registrar.add("Avatar.AddFriend", boost::bind(&LLAvatarActions::requestFriendshipDialog, mUUIDs)); // *TODO: unimplemented - registrar.add("Avatar.IM", boost::bind(&LLAvatarActions::startConference, mUUIDs, LLUUID::null)); + registrar.add("Avatar.IM", boost::bind(&PeopleContextMenu::startConference, this)); registrar.add("Avatar.Call", boost::bind(&LLAvatarActions::startAdhocCall, mUUIDs, LLUUID::null)); registrar.add("Avatar.OfferTeleport", boost::bind(&PeopleContextMenu::offerTeleport, this)); registrar.add("Avatar.RemoveFriend", boost::bind(&LLAvatarActions::removeFriendsDialog, mUUIDs)); @@ -272,6 +272,19 @@ void PeopleContextMenu::offerTeleport() LLAvatarActions::offerTeleport(mUUIDs); } +void PeopleContextMenu::startConference() +{ + uuid_vec_t uuids; + for (uuid_vec_t::const_iterator it = mUUIDs.begin(); it != mUUIDs.end(); ++it) + { + if(*it != gAgentID) + { + uuids.push_back(*it); + } + } + LLAvatarActions::startConference(uuids); +} + //== NearbyPeopleContextMenu =============================================================== void NearbyPeopleContextMenu::buildContextMenu(class LLMenuGL& menu, U32 flags) diff --git a/indra/newview/llpanelpeoplemenus.h b/indra/newview/llpanelpeoplemenus.h index 945382ebc5..9767bab89f 100755 --- a/indra/newview/llpanelpeoplemenus.h +++ b/indra/newview/llpanelpeoplemenus.h @@ -47,6 +47,7 @@ private: bool enableContextMenuItem(const LLSD& userdata); bool checkContextMenuItem(const LLSD& userdata); void offerTeleport(); + void startConference(); void requestTeleport(); }; diff --git a/indra/newview/llpanelsnapshot.cpp b/indra/newview/llpanelsnapshot.cpp index 5924448671..56569e3207 100755 --- a/indra/newview/llpanelsnapshot.cpp +++ b/indra/newview/llpanelsnapshot.cpp @@ -65,8 +65,6 @@ void LLPanelSnapshot::onOpen(const LLSD& key) { LLFloaterSnapshot::getInstance()->notify(LLSD().with("image-format-change", true)); } - - updateCustomResControls(); } LLFloaterSnapshot::ESnapshotFormat LLPanelSnapshot::getImageFormat() const @@ -77,11 +75,6 @@ LLFloaterSnapshot::ESnapshotFormat LLPanelSnapshot::getImageFormat() const void LLPanelSnapshot::enableControls(BOOL enable) { setCtrlsEnabled(enable); - if (enable) - { - // Make sure only relevant controls are enabled/shown. - updateCustomResControls(); - } } LLSpinCtrl* LLPanelSnapshot::getWidthSpinner() @@ -121,16 +114,6 @@ LLSideTrayPanelContainer* LLPanelSnapshot::getParentContainer() return parent; } -// virtual -void LLPanelSnapshot::updateCustomResControls() -{ - // Only show width/height spinners and the aspect ratio checkbox - // when a custom resolution is chosen. - LLComboBox* combo = getChild<LLComboBox>(getImageSizeComboName()); - const bool show = combo->getFirstSelectedIndex() == (combo->getItemCount() - 1); - getChild<LLUICtrl>(getImageSizePanelName())->setVisible(show); -} - void LLPanelSnapshot::updateImageQualityLevel() { LLSliderCtrl* quality_slider = getChild<LLSliderCtrl>("image_quality_slider"); @@ -188,8 +171,6 @@ void LLPanelSnapshot::onCustomResolutionCommit() void LLPanelSnapshot::onResolutionComboCommit(LLUICtrl* ctrl) { - updateCustomResControls(); - LLSD info; info["combo-res-change"]["control-name"] = ctrl->getName(); LLFloaterSnapshot::getInstance()->notify(info); diff --git a/indra/newview/llpanelsnapshot.h b/indra/newview/llpanelsnapshot.h index f3274cf594..42ad798d60 100755 --- a/indra/newview/llpanelsnapshot.h +++ b/indra/newview/llpanelsnapshot.h @@ -57,7 +57,6 @@ public: protected: LLSideTrayPanelContainer* getParentContainer(); - virtual void updateCustomResControls(); void updateImageQualityLevel(); void goBack(); ///< Switch to the default (Snapshot Options) panel void cancel(); diff --git a/indra/newview/llpanelsnapshotinventory.cpp b/indra/newview/llpanelsnapshotinventory.cpp index 47e46a968f..c8a201a5c8 100755 --- a/indra/newview/llpanelsnapshotinventory.cpp +++ b/indra/newview/llpanelsnapshotinventory.cpp @@ -49,7 +49,6 @@ public: /*virtual*/ void onOpen(const LLSD& key); private: - /*virtual*/ void updateCustomResControls(); ///< Show/hide custom resolution controls (spinners and checkbox) /*virtual*/ std::string getWidthSpinnerName() const { return "inventory_snapshot_width"; } /*virtual*/ std::string getHeightSpinnerName() const { return "inventory_snapshot_height"; } /*virtual*/ std::string getAspectRatioCBName() const { return "inventory_keep_aspect_check"; } @@ -73,7 +72,6 @@ BOOL LLPanelSnapshotInventory::postBuild() { getChild<LLSpinCtrl>(getWidthSpinnerName())->setAllowEdit(FALSE); getChild<LLSpinCtrl>(getHeightSpinnerName())->setAllowEdit(FALSE); - getChild<LLUICtrl>(getAspectRatioCBName())->setVisible(FALSE); // we don't keep aspect ratio for inventory textures return LLPanelSnapshot::postBuild(); } @@ -85,17 +83,6 @@ void LLPanelSnapshotInventory::onOpen(const LLSD& key) } // virtual -void LLPanelSnapshotInventory::updateCustomResControls() -{ - LLComboBox* combo = getChild<LLComboBox>(getImageSizeComboName()); - S32 selected_idx = combo->getFirstSelectedIndex(); - const bool show = selected_idx == (combo->getItemCount() - 1); // Custom selected - - getChild<LLUICtrl>(getWidthSpinnerName())->setVisible(show); - getChild<LLUICtrl>(getHeightSpinnerName())->setVisible(show); -} - -// virtual void LLPanelSnapshotInventory::updateControls(const LLSD& info) { const bool have_snapshot = info.has("have-snapshot") ? info["have-snapshot"].asBoolean() : true; diff --git a/indra/newview/llpanelsnapshotoptions.cpp b/indra/newview/llpanelsnapshotoptions.cpp index 743ef3e329..0fc9ceec83 100755 --- a/indra/newview/llpanelsnapshotoptions.cpp +++ b/indra/newview/llpanelsnapshotoptions.cpp @@ -72,7 +72,9 @@ LLPanelSnapshotOptions::LLPanelSnapshotOptions() mCommitCallbackRegistrar.add("Snapshot.SaveToEmail", boost::bind(&LLPanelSnapshotOptions::onSaveToEmail, this)); mCommitCallbackRegistrar.add("Snapshot.SaveToInventory", boost::bind(&LLPanelSnapshotOptions::onSaveToInventory, this)); mCommitCallbackRegistrar.add("Snapshot.SaveToComputer", boost::bind(&LLPanelSnapshotOptions::onSaveToComputer, this)); - + mCommitCallbackRegistrar.add("Snapshot.SendToFacebook", boost::bind(&LLPanelSnapshotOptions::onSendToFacebook, this)); + mCommitCallbackRegistrar.add("Snapshot.SendToTwitter", boost::bind(&LLPanelSnapshotOptions::onSendToTwitter, this)); + mCommitCallbackRegistrar.add("Snapshot.SendToFlickr", boost::bind(&LLPanelSnapshotOptions::onSendToFlickr, this)); LLGlobalEconomy::Singleton::getInstance()->addObserver(this); } @@ -84,13 +86,6 @@ LLPanelSnapshotOptions::~LLPanelSnapshotOptions() // virtual BOOL LLPanelSnapshotOptions::postBuild() { - LLTextBox* sendToFacebookTextBox = getChild<LLTextBox>("send_to_facebook_textbox"); - sendToFacebookTextBox->setURLClickedCallback(boost::bind(&LLPanelSnapshotOptions::onSendToFacebook, this)); - LLTextBox* sendToTwitterTextBox = getChild<LLTextBox>("send_to_twitter_textbox"); - sendToTwitterTextBox->setURLClickedCallback(boost::bind(&LLPanelSnapshotOptions::onSendToTwitter, this)); - LLTextBox* sendToFlickrTextBox = getChild<LLTextBox>("send_to_flickr_textbox"); - sendToFlickrTextBox->setURLClickedCallback(boost::bind(&LLPanelSnapshotOptions::onSendToFlickr, this)); - return LLPanel::postBuild(); } diff --git a/indra/newview/llpanelsnapshotpostcard.cpp b/indra/newview/llpanelsnapshotpostcard.cpp index 95c443b826..8e37b1418c 100755 --- a/indra/newview/llpanelsnapshotpostcard.cpp +++ b/indra/newview/llpanelsnapshotpostcard.cpp @@ -72,7 +72,6 @@ private: void onMsgFormFocusRecieved(); void onFormatComboCommit(LLUICtrl* ctrl); void onQualitySliderCommit(LLUICtrl* ctrl); - void onTabButtonPress(S32 btn_idx); void onSend(); bool mHasFirstMsgFocus; @@ -86,8 +85,6 @@ LLPanelSnapshotPostcard::LLPanelSnapshotPostcard() { mCommitCallbackRegistrar.add("Postcard.Send", boost::bind(&LLPanelSnapshotPostcard::onSend, this)); mCommitCallbackRegistrar.add("Postcard.Cancel", boost::bind(&LLPanelSnapshotPostcard::cancel, this)); - mCommitCallbackRegistrar.add("Postcard.Message", boost::bind(&LLPanelSnapshotPostcard::onTabButtonPress, this, 0)); - mCommitCallbackRegistrar.add("Postcard.Settings", boost::bind(&LLPanelSnapshotPostcard::onTabButtonPress, this, 1)); } @@ -108,8 +105,6 @@ BOOL LLPanelSnapshotPostcard::postBuild() getChild<LLUICtrl>("image_quality_slider")->setCommitCallback(boost::bind(&LLPanelSnapshotPostcard::onQualitySliderCommit, this, _1)); - getChild<LLButton>("message_btn")->setToggleState(TRUE); - return LLPanelSnapshot::postBuild(); } @@ -218,27 +213,6 @@ void LLPanelSnapshotPostcard::onQualitySliderCommit(LLUICtrl* ctrl) LLFloaterSnapshot::getInstance()->notify(info); // updates the "SnapshotQuality" setting } -void LLPanelSnapshotPostcard::onTabButtonPress(S32 btn_idx) -{ - LLButton* buttons[2] = { - getChild<LLButton>("message_btn"), - getChild<LLButton>("settings_btn"), - }; - - // Switch between Message and Settings tabs. - LLButton* clicked_btn = buttons[btn_idx]; - LLButton* other_btn = buttons[!btn_idx]; - LLSideTrayPanelContainer* container = - getChild<LLSideTrayPanelContainer>("postcard_panel_container"); - - container->selectTab(clicked_btn->getToggleState() ? btn_idx : !btn_idx); - //clicked_btn->setEnabled(FALSE); - other_btn->toggleState(); - //other_btn->setEnabled(TRUE); - - LL_DEBUGS() << "Button #" << btn_idx << " (" << clicked_btn->getName() << ") clicked" << LL_ENDL; -} - void LLPanelSnapshotPostcard::onSend() { // Validate input. diff --git a/indra/newview/llpersistentnotificationstorage.cpp b/indra/newview/llpersistentnotificationstorage.cpp index 8658921dc4..9e4f50b7a7 100755 --- a/indra/newview/llpersistentnotificationstorage.cpp +++ b/indra/newview/llpersistentnotificationstorage.cpp @@ -35,7 +35,7 @@ #include "llscreenchannel.h" #include "llscriptfloater.h" #include "llviewermessage.h" - +#include "llviewernetwork.h" LLPersistentNotificationStorage::LLPersistentNotificationStorage() : LLSingleton<LLPersistentNotificationStorage>() , LLNotificationStorage("") @@ -158,7 +158,10 @@ void LLPersistentNotificationStorage::loadNotifications() void LLPersistentNotificationStorage::initialize() { - setFileName(gDirUtilp->getExpandedFilename(LL_PATH_PER_SL_ACCOUNT, "open_notifications.xml")); + std::string file_name = "open_notifications_" + LLGridManager::getInstance()->getGrid() + ".xml"; + setFileName(gDirUtilp->getExpandedFilename(LL_PATH_PER_SL_ACCOUNT, file_name)); + setOldFileName(gDirUtilp->getExpandedFilename(LL_PATH_PER_SL_ACCOUNT, "open_notifications.xml")); + LLNotifications::instance().getChannel("Persistent")-> connectChanged(boost::bind(&LLPersistentNotificationStorage::onPersistentChannelChanged, this, _1)); } diff --git a/indra/newview/llpreviewnotecard.cpp b/indra/newview/llpreviewnotecard.cpp index c4858e241e..337a63e627 100755 --- a/indra/newview/llpreviewnotecard.cpp +++ b/indra/newview/llpreviewnotecard.cpp @@ -474,12 +474,17 @@ bool LLPreviewNotecard::saveIfNeeded(LLInventoryItem* copyitem) &onSaveComplete, (void*)info, FALSE); + return true; } else // !gAssetStorage { LL_WARNS() << "Not connected to an asset storage system." << LL_ENDL; return false; } + if(mCloseAfterSave) + { + closeFloater(); + } } } return true; diff --git a/indra/newview/llpreviewscript.cpp b/indra/newview/llpreviewscript.cpp index 9411b8265b..8eea5ea73e 100755 --- a/indra/newview/llpreviewscript.cpp +++ b/indra/newview/llpreviewscript.cpp @@ -1166,7 +1166,7 @@ void LLScriptEdCore::onBtnSaveToFile( void* userdata ) if( self->mSaveCallback ) { LLFilePicker& file_picker = LLFilePicker::instance(); - if( file_picker.getSaveFile( LLFilePicker::FFSAVE_SCRIPT ) ) + if( file_picker.getSaveFile( LLFilePicker::FFSAVE_SCRIPT, self->mScriptName ) ) { std::string filename = file_picker.getFirstFile(); std::string scriptText=self->mEditor->getText(); @@ -1948,6 +1948,7 @@ void LLLiveLSLEditor::loadScriptText(LLVFS *vfs, const LLUUID &uuid, LLAssetType mScriptEd->setScriptText(LLStringExplicit(&buffer[0]), TRUE); mScriptEd->mEditor->makePristine(); + mScriptEd->setScriptName(getItem()->getName()); } diff --git a/indra/newview/llpreviewscript.h b/indra/newview/llpreviewscript.h index 9ea191e928..515f277c4a 100755 --- a/indra/newview/llpreviewscript.h +++ b/indra/newview/llpreviewscript.h @@ -114,6 +114,8 @@ public: virtual bool hasAccelerators() const { return true; } + void setScriptName(const std::string& name){mScriptName = name;}; + private: void onBtnHelp(); void onBtnDynamicHelp(); @@ -138,6 +140,7 @@ protected: private: std::string mSampleText; + std::string mScriptName; LLScriptEditor* mEditor; void (*mLoadCallback)(void* userdata); void (*mSaveCallback)(void* userdata, BOOL close_after_save); diff --git a/indra/newview/llpreviewsound.cpp b/indra/newview/llpreviewsound.cpp index 11b81a58fc..105c5e8cbe 100755 --- a/indra/newview/llpreviewsound.cpp +++ b/indra/newview/llpreviewsound.cpp @@ -95,7 +95,6 @@ void LLPreviewSound::auditionSound( void *userdata ) if(item && gAudiop) { - LLVector3d lpos_global = gAgent.getPositionGlobal(); - gAudiop->triggerSound(item->getAssetUUID(), gAgent.getID(), SOUND_GAIN, LLAudioEngine::AUDIO_TYPE_SFX, lpos_global); + gAudiop->triggerSound(item->getAssetUUID(), gAgent.getID(), SOUND_GAIN, LLAudioEngine::AUDIO_TYPE_SFX); } } diff --git a/indra/newview/llscenemonitor.cpp b/indra/newview/llscenemonitor.cpp index 7f705e44d2..179a73413e 100644 --- a/indra/newview/llscenemonitor.cpp +++ b/indra/newview/llscenemonitor.cpp @@ -709,9 +709,20 @@ void LLSceneMonitorView::onClose(bool app_quitting) setVisible(false); } +void LLSceneMonitorView::onClickCloseBtn(bool app_quitting) +{ + setVisible(false); +} + void LLSceneMonitorView::onVisibilityChange(BOOL visible) { - visible = visible && LLGLSLShader::sNoFixedFunction; + if (!LLGLSLShader::sNoFixedFunction && visible) + { + visible = false; + // keep Scene monitor and its view in sycn + setVisible(false); + LL_WARNS("SceneMonitor") << "Incompatible graphical settings, Scene Monitor can't be turned on" << LL_ENDL; + } LLSceneMonitor::getInstance()->setDebugViewerVisible(visible); } diff --git a/indra/newview/llscenemonitor.h b/indra/newview/llscenemonitor.h index e9ceb2aa2a..5bde3b5aab 100644 --- a/indra/newview/llscenemonitor.h +++ b/indra/newview/llscenemonitor.h @@ -116,6 +116,7 @@ public: protected: virtual void onClose(bool app_quitting=false); + virtual void onClickCloseBtn(bool app_quitting=false); }; extern LLSceneMonitorView* gSceneMonitorView; diff --git a/indra/newview/llsceneview.cpp b/indra/newview/llsceneview.cpp index 32f327b762..112fa5b4e1 100755 --- a/indra/newview/llsceneview.cpp +++ b/indra/newview/llsceneview.cpp @@ -56,6 +56,10 @@ void LLSceneView::onClose(bool) setVisible(false); } +void LLSceneView::onClickCloseBtn(bool) +{ + setVisible(false); +} void LLSceneView::draw() { diff --git a/indra/newview/llsceneview.h b/indra/newview/llsceneview.h index 6d839bcf08..e077c358b4 100755 --- a/indra/newview/llsceneview.h +++ b/indra/newview/llsceneview.h @@ -39,6 +39,7 @@ public: protected: virtual void onClose(bool app_qutting = false); + virtual void onClickCloseBtn(bool app_qutting = false); }; diff --git a/indra/newview/llsnapshotlivepreview.cpp b/indra/newview/llsnapshotlivepreview.cpp index bc5993ec76..1aa7041175 100644 --- a/indra/newview/llsnapshotlivepreview.cpp +++ b/indra/newview/llsnapshotlivepreview.cpp @@ -195,6 +195,8 @@ void LLSnapshotLivePreview::updateSnapshot(BOOL new_snapshot, BOOL new_thumbnail mSnapshotDelayTimer.start(); mSnapshotDelayTimer.setTimerExpirySec(delay); + mPosTakenGlobal = gAgentCamera.getCameraPositionGlobal(); + // Tell the floater container that the snapshot is in the process of updating itself if (mViewContainer) { @@ -760,7 +762,6 @@ BOOL LLSnapshotLivePreview::onIdle( void* snapshot_preview ) curr_preview_image->setFilteringOption(previewp->getSnapshotType() == SNAPSHOT_TEXTURE ? LLTexUnit::TFO_ANISOTROPIC : LLTexUnit::TFO_POINT); curr_preview_image->setAddressMode(LLTexUnit::TAM_CLAMP); - previewp->mPosTakenGlobal = gAgentCamera.getCameraPositionGlobal(); previewp->mShineCountdown = 4; // wait a few frames to avoid animation glitch due to readback this frame } } @@ -975,6 +976,21 @@ void LLSnapshotLivePreview::saveTexture() mPreviewImage->getHeight(), mPreviewImage->getComponents()); + // Apply the filter to mPreviewImage + if (getFilter() != "") + { + std::string filter_path = LLImageFiltersManager::getInstance()->getFilterPath(getFilter()); + if (filter_path != "") + { + LLImageFilter filter(filter_path); + filter.executeFilter(scaled); + } + else + { + LL_WARNS() << "Couldn't find a path to the following filter : " << getFilter() << LL_ENDL; + } + } + scaled->biasedScaleToPowerOfTwo(MAX_TEXTURE_SIZE); LL_DEBUGS() << "scaled texture to " << scaled->getWidth() << "x" << scaled->getHeight() << LL_ENDL; diff --git a/indra/newview/llstartup.cpp b/indra/newview/llstartup.cpp index 0c282a19a5..74df18810c 100755 --- a/indra/newview/llstartup.cpp +++ b/indra/newview/llstartup.cpp @@ -2226,7 +2226,6 @@ bool idle_startup() return TRUE; } - LL_WARNS("AppInit") << "Reached end of idle_startup for state " << LLStartUp::getStartupState() << LL_ENDL; return TRUE; } diff --git a/indra/newview/llstatusbar.cpp b/indra/newview/llstatusbar.cpp index 047538a32a..eedb829b48 100755 --- a/indra/newview/llstatusbar.cpp +++ b/indra/newview/llstatusbar.cpp @@ -200,6 +200,7 @@ BOOL LLStatusBar::postBuild() sgp.stat.count_stat_float(&LLStatViewer::ACTIVE_MESSAGE_DATA_RECEIVED); sgp.units("Kbps"); sgp.precision(0); + sgp.per_sec(true); mSGBandwidth = LLUICtrlFactory::create<LLStatGraph>(sgp); addChild(mSGBandwidth); x -= SIM_STAT_WIDTH + 2; diff --git a/indra/newview/llsyntaxid.cpp b/indra/newview/llsyntaxid.cpp index b1194dcd1b..a763d42a8d 100644 --- a/indra/newview/llsyntaxid.cpp +++ b/indra/newview/llsyntaxid.cpp @@ -47,23 +47,22 @@ public: LL_DEBUGS("SyntaxLSL") << "Instantiating with file saving to: '" << filespec << "'" << LL_ENDL; } - virtual void errorWithContent(U32 status, - const std::string& reason, - const LLSD& content) + /* virtual */ void httpFailure() { - LL_WARNS("SyntaxLSL") << "failed to fetch syntax file [status:" << status << "]: " << content << LL_ENDL; + LL_WARNS("SyntaxLSL") << "failed to fetch syntax file [status:" << getStatus() << "]: " << getContent() << LL_ENDL; } - virtual void result(const LLSD& content_ref) + /* virtual */ void httpSuccess() { // Continue only if a valid LLSD object was returned. - if (content_ref.isMap()) + const LLSD& content = getContent(); + if (content.isMap()) { - if (LLSyntaxIdLSL::getInstance()->isSupportedVersion(content_ref)) + if (LLSyntaxIdLSL::getInstance()->isSupportedVersion(content)) { - LLSyntaxIdLSL::getInstance()->setKeywordsXml(content_ref); + LLSyntaxIdLSL::getInstance()->setKeywordsXml(content); - cacheFile(content_ref); + cacheFile(content); LLSyntaxIdLSL::getInstance()->handleFileFetched(mFileSpec); } else diff --git a/indra/newview/lltexturefetch.cpp b/indra/newview/lltexturefetch.cpp index 425e339713..d9a874be49 100755 --- a/indra/newview/lltexturefetch.cpp +++ b/indra/newview/lltexturefetch.cpp @@ -1346,17 +1346,20 @@ bool LLTextureFetchWorker::doWork(S32 param) LL_WARNS(LOG_TXT) << "trying to seek a non-default texture on the sim. Bad!" << LL_ENDL; } setUrl(http_url + "/?texture_id=" + mID.asString().c_str()); + LL_DEBUGS("Texture") << "Texture URL " << mUrl << LL_ENDL; mWriteToCacheState = CAN_WRITE ; //because this texture has a fixed texture id. } else { mCanUseHTTP = false ; + LL_DEBUGS("Texture") << "Texture not available via HTTP: no URL " << mUrl << LL_ENDL; } } else { // This will happen if not logged in or if a region deoes not have HTTP Texture enabled //LL_WARNS(LOG_TXT) << "Region not found for host: " << mHost << LL_ENDL; + LL_DEBUGS("Texture") << "Texture not available via HTTP: no region " << mUrl << LL_ENDL; mCanUseHTTP = false; } } diff --git a/indra/newview/lltextureview.cpp b/indra/newview/lltextureview.cpp index 4f0413a2e4..b7786bcdd7 100755 --- a/indra/newview/lltextureview.cpp +++ b/indra/newview/lltextureview.cpp @@ -501,7 +501,7 @@ private: void LLGLTexMemBar::draw() { S32Megabytes bound_mem = LLViewerTexture::sBoundTextureMemory; - S32Megabytes max_bound_mem = LLViewerTexture::sMaxBoundTextureMem; + S32Megabytes max_bound_mem = LLViewerTexture::sMaxBoundTextureMemory; S32Megabytes total_mem = LLViewerTexture::sTotalTextureMemory; S32Megabytes max_total_mem = LLViewerTexture::sMaxTotalTextureMem; F32 discard_bias = LLViewerTexture::sDesiredDiscardBias; diff --git a/indra/newview/lltoast.cpp b/indra/newview/lltoast.cpp index 1b5b44423f..63ede7f8ac 100755 --- a/indra/newview/lltoast.cpp +++ b/indra/newview/lltoast.cpp @@ -234,6 +234,8 @@ void LLToast::closeToast() { mOnDeleteToastSignal(this); + setSoundFlags(SILENT); + closeFloater(); } diff --git a/indra/newview/lltoastalertpanel.cpp b/indra/newview/lltoastalertpanel.cpp index 8fd0eb5931..c82894a5cc 100755 --- a/indra/newview/lltoastalertpanel.cpp +++ b/indra/newview/lltoastalertpanel.cpp @@ -266,6 +266,11 @@ LLToastAlertPanel::LLToastAlertPanel( LLNotificationPtr notification, bool modal mLineEditor->setMaxTextChars(edit_text_max_chars); mLineEditor->setText(edit_text_contents); + if("SaveOutfitAs" == mNotification->getName()) + { + mLineEditor->setPrevalidate(&LLTextValidate::validateASCII); + } + // decrease limit of line editor of teleport offer dialog to avoid truncation of // location URL in invitation message, see EXT-6891 if ("OfferTeleport" == mNotification->getName()) diff --git a/indra/newview/lltoolbrush.cpp b/indra/newview/lltoolbrush.cpp index 56f0f8be25..e3eb8ba7af 100755 --- a/indra/newview/lltoolbrush.cpp +++ b/indra/newview/lltoolbrush.cpp @@ -52,7 +52,7 @@ #include "llworld.h" #include "llappviewer.h" #include "llparcel.h" - +#include "roles_constants.h" #include "llglheaders.h" const std::string REGION_BLOCKS_TERRAFORM_MSG = "This region does not allow terraforming.\n" @@ -239,9 +239,9 @@ void LLToolBrushLand::modifyLandInSelectionGlobal() iter != mLastAffectedRegions.end(); ++iter) { LLViewerRegion* regionp = *iter; - if (!canTerraform(regionp)) + if (!canTerraformRegion(regionp)) { - alertNoTerraform(regionp); + alertNoTerraformRegion(regionp); return; } } @@ -376,12 +376,17 @@ BOOL LLToolBrushLand::handleMouseDown(S32 x, S32 y, MASK mask) LLRegionPosition region_position( spot ); LLViewerRegion* regionp = region_position.getRegion(); - if (!canTerraform(regionp)) + if (!canTerraformRegion(regionp)) { - alertNoTerraform(regionp); + alertNoTerraformRegion(regionp); return TRUE; } + if (!canTerraformParcel(regionp)) + { + alertNoTerraformParcel(); + } + LLVector3 pos_region = region_position.getPositionRegion(); U32 grids = regionp->getLand().mGridsPerEdge; S32 i = llclamp( (S32)pos_region.mV[VX], 0, (S32)grids ); @@ -408,6 +413,16 @@ BOOL LLToolBrushLand::handleHover( S32 x, S32 y, MASK mask ) mMouseY = y; mGotHover = TRUE; gViewerWindow->setCursor(UI_CURSOR_TOOLLAND); + + LLVector3d spot; + if( gViewerWindow->mousePointOnLandGlobal( mMouseX, mMouseY, &spot ) ) + { + + spot.mdV[VX] = floor( spot.mdV[VX] + 0.5 ); + spot.mdV[VY] = floor( spot.mdV[VY] + 0.5 ); + + LLViewerParcelMgr::getInstance()->setHoverParcel(spot); + } return TRUE; } @@ -653,7 +668,7 @@ void LLToolBrushLand::redo() }*/ // static -bool LLToolBrushLand::canTerraform(LLViewerRegion* regionp) const +bool LLToolBrushLand::canTerraformRegion(LLViewerRegion* regionp) const { if (!regionp) return false; if (regionp->canManageEstate()) return true; @@ -661,7 +676,22 @@ bool LLToolBrushLand::canTerraform(LLViewerRegion* regionp) const } // static -void LLToolBrushLand::alertNoTerraform(LLViewerRegion* regionp) +bool LLToolBrushLand::canTerraformParcel(LLViewerRegion* regionp) const +{ + LLParcel* selected_parcel = LLViewerParcelMgr::getInstance()->getHoverParcel(); + bool is_terraform_allowed = false; + if (selected_parcel) + { + BOOL owner_release = LLViewerParcelMgr::isParcelOwnedByAgent(selected_parcel, GP_LAND_ALLOW_EDIT_LAND); + is_terraform_allowed = ( gAgent.canManageEstate() || (selected_parcel->getOwnerID() == regionp->getOwner()) || owner_release); + } + + return is_terraform_allowed; +} + + +// static +void LLToolBrushLand::alertNoTerraformRegion(LLViewerRegion* regionp) { if (!regionp) return; @@ -671,6 +701,19 @@ void LLToolBrushLand::alertNoTerraform(LLViewerRegion* regionp) } +// static +void LLToolBrushLand::alertNoTerraformParcel() +{ + LLParcel* selected_parcel = LLViewerParcelMgr::getInstance()->getHoverParcel(); + if (selected_parcel) + { + LLSD args; + args["PARCEL"] = selected_parcel->getName(); + LLNotificationsUtil::add("ParcelNoTerraforming", args); + } + +} + ///============================================================================ /// Local function definitions ///============================================================================ diff --git a/indra/newview/lltoolbrush.h b/indra/newview/lltoolbrush.h index 1c7f198900..2ec6911de9 100755 --- a/indra/newview/lltoolbrush.h +++ b/indra/newview/lltoolbrush.h @@ -81,10 +81,14 @@ protected: const LLVector3& pos_world); // Does region allow terraform, or are we a god? - bool canTerraform(LLViewerRegion* regionp) const; + bool canTerraformRegion(LLViewerRegion* regionp) const; + + bool canTerraformParcel(LLViewerRegion* regionp) const; // Modal dialog that you can't terraform the region - void alertNoTerraform(LLViewerRegion* regionp); + void alertNoTerraformRegion(LLViewerRegion* regionp); + + void alertNoTerraformParcel(); protected: F32 mStartingZ; diff --git a/indra/newview/lltoolcomp.cpp b/indra/newview/lltoolcomp.cpp index b75d6b3dcb..4bda9072d0 100755 --- a/indra/newview/lltoolcomp.cpp +++ b/indra/newview/lltoolcomp.cpp @@ -126,12 +126,20 @@ void LLToolComposite::handleSelect() mSelected = TRUE; } +void LLToolComposite::handleDeselect() +{ + mCur->handleDeselect(); + mCur = mDefault; + mSelected = FALSE; +} + //---------------------------------------------------------------------------- // LLToolCompInspect //---------------------------------------------------------------------------- LLToolCompInspect::LLToolCompInspect() -: LLToolComposite(std::string("Inspect")) +: LLToolComposite(std::string("Inspect")), + mIsToolCameraActive(FALSE) { mSelectRect = new LLToolSelectRect(this); mDefault = mSelectRect; @@ -146,42 +154,87 @@ LLToolCompInspect::~LLToolCompInspect() BOOL LLToolCompInspect::handleMouseDown(S32 x, S32 y, MASK mask) { - mMouseDown = TRUE; - gViewerWindow->pickAsync(x, y, mask, pickCallback); - return TRUE; + BOOL handled = FALSE; + + if (mCur == LLToolCamera::getInstance()) + { + handled = mCur->handleMouseDown(x, y, mask); + } + else + { + mMouseDown = TRUE; + gViewerWindow->pickAsync(x, y, mask, pickCallback); + handled = TRUE; + } + + return handled; +} + +BOOL LLToolCompInspect::handleMouseUp(S32 x, S32 y, MASK mask) +{ + BOOL handled = LLToolComposite::handleMouseUp(x, y, mask); + mIsToolCameraActive = getCurrentTool() == LLToolCamera::getInstance(); + return handled; } void LLToolCompInspect::pickCallback(const LLPickInfo& pick_info) { LLViewerObject* hit_obj = pick_info.getObject(); + LLToolCompInspect * tool_inspectp = LLToolCompInspect::getInstance(); - if (!LLToolCompInspect::getInstance()->mMouseDown) + if (!tool_inspectp->mMouseDown) { // fast click on object, but mouse is already up...just do select - LLToolCompInspect::getInstance()->mSelectRect->handleObjectSelection(pick_info, gSavedSettings.getBOOL("EditLinkedParts"), FALSE); + tool_inspectp->mSelectRect->handleObjectSelection(pick_info, gSavedSettings.getBOOL("EditLinkedParts"), FALSE); return; } - if( hit_obj ) - { - if (LLSelectMgr::getInstance()->getSelection()->getObjectCount()) - { - LLEditMenuHandler::gEditMenuHandler = LLSelectMgr::getInstance(); - } - LLToolCompInspect::getInstance()->setCurrentTool( LLToolCompInspect::getInstance()->mSelectRect ); - LLToolCompInspect::getInstance()->mSelectRect->handlePick( pick_info ); + LLSelectMgr * mgr_selectp = LLSelectMgr::getInstance(); + if( hit_obj && mgr_selectp->getSelection()->getObjectCount()) { + LLEditMenuHandler::gEditMenuHandler = mgr_selectp; + } + + tool_inspectp->setCurrentTool( tool_inspectp->mSelectRect ); + tool_inspectp->mIsToolCameraActive = FALSE; + tool_inspectp->mSelectRect->handlePick( pick_info ); +} + +BOOL LLToolCompInspect::handleDoubleClick(S32 x, S32 y, MASK mask) +{ + return TRUE; +} + +BOOL LLToolCompInspect::handleKey(KEY key, MASK mask) +{ + BOOL handled = FALSE; + if(KEY_ALT == key) + { + setCurrentTool(LLToolCamera::getInstance()); + mIsToolCameraActive = TRUE; + handled = TRUE; } else { - LLToolCompInspect::getInstance()->setCurrentTool( LLToolCompInspect::getInstance()->mSelectRect ); - LLToolCompInspect::getInstance()->mSelectRect->handlePick( pick_info ); + handled = LLToolComposite::handleKey(key, mask); } + + return handled; } -BOOL LLToolCompInspect::handleDoubleClick(S32 x, S32 y, MASK mask) +void LLToolCompInspect::onMouseCaptureLost() { - return TRUE; + LLToolComposite::onMouseCaptureLost(); + mIsToolCameraActive = FALSE; +} + +void LLToolCompInspect::keyUp(KEY key, MASK mask) +{ + if (KEY_ALT == key && mCur == LLToolCamera::getInstance()) + { + setCurrentTool(mDefault); + mIsToolCameraActive = FALSE; + } } //---------------------------------------------------------------------------- diff --git a/indra/newview/lltoolcomp.h b/indra/newview/lltoolcomp.h index bbb5ed5797..e75d3c22e2 100755 --- a/indra/newview/lltoolcomp.h +++ b/indra/newview/lltoolcomp.h @@ -62,7 +62,7 @@ public: virtual BOOL clipMouseWhenDown() { return mCur->clipMouseWhenDown(); } virtual void handleSelect(); - virtual void handleDeselect() { mCur->handleDeselect(); mCur = mDefault; mSelected = FALSE; } + virtual void handleDeselect(); virtual void render() { mCur->render(); } virtual void draw() { mCur->draw(); } @@ -78,9 +78,10 @@ public: { mCur->localPointToScreen(local_x, local_y, screen_x, screen_y); } BOOL isSelecting(); + LLTool* getCurrentTool() { return mCur; } + protected: void setCurrentTool( LLTool* new_tool ); - LLTool* getCurrentTool() { return mCur; } // In hover handler, call this to auto-switch tools void setToolFromMask( MASK mask, LLTool *normal ); @@ -108,9 +109,18 @@ public: // Overridden from LLToolComposite virtual BOOL handleMouseDown(S32 x, S32 y, MASK mask); + virtual BOOL handleMouseUp(S32 x, S32 y, MASK mask); virtual BOOL handleDoubleClick(S32 x, S32 y, MASK mask); + virtual BOOL handleKey(KEY key, MASK mask); + virtual void onMouseCaptureLost(); + void keyUp(KEY key, MASK mask); static void pickCallback(const LLPickInfo& pick_info); + + BOOL isToolCameraActive() const { return mIsToolCameraActive; } + +private: + BOOL mIsToolCameraActive; }; //----------------------------------------------------------------------- diff --git a/indra/newview/lltooldraganddrop.cpp b/indra/newview/lltooldraganddrop.cpp index eabf6f0497..575e5c5c52 100755 --- a/indra/newview/lltooldraganddrop.cpp +++ b/indra/newview/lltooldraganddrop.cpp @@ -513,6 +513,7 @@ void LLToolDragAndDrop::onMouseCaptureLost() mSource = SOURCE_AGENT; mSourceID.setNull(); mObjectID.setNull(); + mCustomMsg.clear(); } BOOL LLToolDragAndDrop::handleMouseUp( S32 x, S32 y, MASK mask ) @@ -556,6 +557,12 @@ ECursorType LLToolDragAndDrop::acceptanceToCursor( EAcceptance acceptance ) mCursor = UI_CURSOR_NOLOCKED; break; + case ACCEPT_NO_CUSTOM: + mToolTipMsg = mCustomMsg; + mCursor = UI_CURSOR_NO; + break; + + case ACCEPT_NO: mCursor = UI_CURSOR_NO; break; @@ -630,6 +637,7 @@ BOOL LLToolDragAndDrop::handleToolTip(S32 x, S32 y, MASK mask) void LLToolDragAndDrop::handleDeselect() { mToolTipMsg.clear(); + mCustomMsg.clear(); LLToolTipMgr::instance().blockToolTips(); } @@ -2164,6 +2172,26 @@ EAcceptance LLToolDragAndDrop::dad3dWearCategory( // TODO: investigate wearables may not be loaded at this point EXT-8231 } + U32 max_items = gSavedSettings.getU32("WearFolderLimit"); + if (category->getDescendentCount()>max_items) + { + LLInventoryModel::cat_array_t cats; + LLInventoryModel::item_array_t items; + LLFindWearablesEx not_worn(/*is_worn=*/ false, /*include_body_parts=*/ false); + gInventory.collectDescendentsIf(category->getUUID(), + cats, + items, + LLInventoryModel::EXCLUDE_TRASH, + not_worn); + if (items.size() > max_items) + { + LLStringUtil::format_map_t args; + args["AMOUNT"] = llformat("%d", max_items); + mCustomMsg = LLTrans::getString("TooltipTooManyWearables",args); + return ACCEPT_NO_CUSTOM; + } + } + if(mSource == SOURCE_AGENT) { const LLUUID trash_id = gInventory.findCategoryUUIDForType(LLFolderType::FT_TRASH); diff --git a/indra/newview/lltooldraganddrop.h b/indra/newview/lltooldraganddrop.h index 99b794ce58..de501ea32a 100755 --- a/indra/newview/lltooldraganddrop.h +++ b/indra/newview/lltooldraganddrop.h @@ -149,6 +149,7 @@ protected: BOOL mDrop; S32 mCurItemIndex; std::string mToolTipMsg; + std::string mCustomMsg; enddrag_signal_t mEndDragSignal; diff --git a/indra/newview/lltoolfocus.cpp b/indra/newview/lltoolfocus.cpp index ee4ec112f8..58073d1186 100755 --- a/indra/newview/lltoolfocus.cpp +++ b/indra/newview/lltoolfocus.cpp @@ -53,6 +53,7 @@ #include "llmorphview.h" #include "llfloaterreg.h" #include "llfloatercamera.h" +#include "llmenugl.h" // Globals BOOL gCameraBtnZoom = TRUE; @@ -75,6 +76,7 @@ LLToolCamera::LLToolCamera() mOutsideSlopX(FALSE), mOutsideSlopY(FALSE), mValidClickPoint(FALSE), + mValidSelection(FALSE), mMouseSteering(FALSE), mMouseUpX(0), mMouseUpY(0), @@ -91,6 +93,8 @@ void LLToolCamera::handleSelect() if (gFloaterTools) { gFloaterTools->setStatusText("camera"); + // in case we start from tools floater, we count any selection as valid + mValidSelection = gFloaterTools->getVisible(); } } @@ -98,6 +102,14 @@ void LLToolCamera::handleSelect() void LLToolCamera::handleDeselect() { // gAgent.setLookingAtAvatar(FALSE); + + // Make sure that temporary selection won't pass anywhere except pie tool. + MASK override_mask = gKeyboard ? gKeyboard->currentMask(TRUE) : 0; + if (!mValidSelection && (override_mask != MASK_NONE || (gFloaterTools && gFloaterTools->getVisible()))) + { + LLMenuGL::sMenuContainer->hideMenus(); + LLSelectMgr::getInstance()->validateSelection(); + } } BOOL LLToolCamera::handleMouseDown(S32 x, S32 y, MASK mask) diff --git a/indra/newview/lltoolfocus.h b/indra/newview/lltoolfocus.h index b1ac42e33f..d23eb2cce6 100755 --- a/indra/newview/lltoolfocus.h +++ b/indra/newview/lltoolfocus.h @@ -65,6 +65,7 @@ protected: BOOL mOutsideSlopX; BOOL mOutsideSlopY; BOOL mValidClickPoint; + BOOL mValidSelection; BOOL mMouseSteering; S32 mMouseUpX; // needed for releaseMouse() S32 mMouseUpY; diff --git a/indra/newview/lltoolgrab.cpp b/indra/newview/lltoolgrab.cpp index 493c970141..fa6694b93b 100755 --- a/indra/newview/lltoolgrab.cpp +++ b/indra/newview/lltoolgrab.cpp @@ -56,6 +56,7 @@ #include "llviewerregion.h" #include "llvoavatarself.h" #include "llworld.h" +#include "llmenugl.h" const S32 SLOP_DIST_SQ = 4; @@ -83,6 +84,7 @@ LLToolGrab::LLToolGrab( LLToolComposite* composite ) mLastFace(0), mSpinGrabbing( FALSE ), mSpinRotation(), + mClickedInMouselook( FALSE ), mHideBuildHighlight(FALSE) { } @@ -97,6 +99,8 @@ void LLToolGrab::handleSelect() { // viewer can crash during startup if we don't check. gFloaterTools->setStatusText("grab"); + // in case we start from tools floater, we count any selection as valid + mValidSelection = gFloaterTools->getVisible(); } gGrabBtnVertical = FALSE; gGrabBtnSpin = FALSE; @@ -109,6 +113,14 @@ void LLToolGrab::handleDeselect() setMouseCapture( FALSE ); } + // Make sure that temporary(invalid) selection won't pass anywhere except pie tool. + MASK override_mask = gKeyboard ? gKeyboard->currentMask(TRUE) : 0; + if (!mValidSelection && (override_mask != MASK_NONE || (gFloaterTools && gFloaterTools->getVisible()))) + { + LLMenuGL::sMenuContainer->hideMenus(); + LLSelectMgr::getInstance()->validateSelection(); + } + } BOOL LLToolGrab::handleDoubleClick(S32 x, S32 y, MASK mask) @@ -136,6 +148,7 @@ BOOL LLToolGrab::handleMouseDown(S32 x, S32 y, MASK mask) // can grab transparent objects (how touch event propagates, scripters rely on this) gViewerWindow->pickAsync(x, y, mask, pickCallback, TRUE); } + mClickedInMouselook = gAgentCamera.cameraMouselook(); return TRUE; } @@ -926,13 +939,21 @@ BOOL LLToolGrab::handleMouseUp(S32 x, S32 y, MASK mask) { setMouseCapture( FALSE ); } + mMode = GRAB_INACTIVE; - // HACK: Make some grabs temporary - if (gGrabTransientTool) + if(mClickedInMouselook && !gAgentCamera.cameraMouselook()) { - gBasicToolset->selectTool( gGrabTransientTool ); - gGrabTransientTool = NULL; + mClickedInMouselook = FALSE; + } + else + { + // HACK: Make some grabs temporary + if (gGrabTransientTool) + { + gBasicToolset->selectTool( gGrabTransientTool ); + gGrabTransientTool = NULL; + } } //gAgent.setObjectTracking(gSavedSettings.getBOOL("TrackFocusObject")); diff --git a/indra/newview/lltoolgrab.h b/indra/newview/lltoolgrab.h index 06a3b662c8..4e22732124 100755 --- a/indra/newview/lltoolgrab.h +++ b/indra/newview/lltoolgrab.h @@ -119,6 +119,7 @@ private: BOOL mHasMoved; // has mouse moved off center at all? BOOL mOutsideSlop; // has mouse moved outside center 5 pixels? BOOL mDeselectedThisClick; + BOOL mValidSelection; S32 mLastFace; LLVector2 mLastUVCoords; @@ -133,6 +134,8 @@ private: LLQuaternion mSpinRotation; BOOL mHideBuildHighlight; + + BOOL mClickedInMouselook; }; extern BOOL gGrabBtnVertical; diff --git a/indra/newview/lltoolmgr.cpp b/indra/newview/lltoolmgr.cpp index aa55caf7ec..175227173f 100755 --- a/indra/newview/lltoolmgr.cpp +++ b/indra/newview/lltoolmgr.cpp @@ -34,6 +34,7 @@ //#include "llfirstuse.h" // tools and manipulators +#include "llfloaterinspect.h" #include "lltool.h" #include "llmanipscale.h" #include "llselectmgr.h" @@ -218,7 +219,20 @@ LLTool* LLToolMgr::getCurrentTool() } if (cur_tool) { - cur_tool->handleSelect(); + if ( LLToolCompInspect::getInstance()->isToolCameraActive() + && prev_tool == LLToolCamera::getInstance() + && cur_tool == LLToolPie::getInstance() ) + { + LLFloaterInspect * inspect_instance = LLFloaterReg::getTypedInstance<LLFloaterInspect>("inspect"); + if(inspect_instance && inspect_instance->getVisible()) + { + setTransientTool(LLToolCompInspect::getInstance()); + } + } + else + { + cur_tool->handleSelect(); + } } } diff --git a/indra/newview/lltoolpie.cpp b/indra/newview/lltoolpie.cpp index 6881ec4563..e4353aafaa 100755 --- a/indra/newview/lltoolpie.cpp +++ b/indra/newview/lltoolpie.cpp @@ -439,8 +439,12 @@ ECursorType LLToolPie::cursorFromObject(LLViewerObject* object) break; case CLICK_ACTION_BUY: if ( mClickActionBuyEnabled ) - { - cursor = UI_CURSOR_TOOLBUY; + { + LLSelectNode* node = LLSelectMgr::getInstance()->getHoverNode(); + if (!node || node->mSaleInfo.isForSale()) + { + cursor = UI_CURSOR_TOOLBUY; + } } break; case CLICK_ACTION_OPEN: @@ -544,6 +548,7 @@ BOOL LLToolPie::handleHover(S32 x, S32 y, MASK mask) mHoverPick = gViewerWindow->pickImmediate(x, y, FALSE); LLViewerObject *parent = NULL; LLViewerObject *object = mHoverPick.getObject(); + LLSelectMgr::getInstance()->setHoverObject(object, mHoverPick.mObjectFace); if (object) { parent = object->getRootEdit(); @@ -1306,7 +1311,16 @@ void LLToolPie::handleDeselect() } // remove temporary selection for pie menu LLSelectMgr::getInstance()->setHoverObject(NULL); - LLSelectMgr::getInstance()->validateSelection(); + + // Menu may be still up during transfer to different tool. + // toolfocus and toolgrab should retain menu, they will clear it if needed + MASK override_mask = gKeyboard ? gKeyboard->currentMask(TRUE) : 0; + if (gMenuHolder && (!gMenuHolder->getVisible() || (override_mask & (MASK_ALT | MASK_CONTROL)) == 0)) + { + // in most cases menu is useless without correct selection, so either keep both or discard both + gMenuHolder->hideMenus(); + LLSelectMgr::getInstance()->validateSelection(); + } } LLTool* LLToolPie::getOverrideTool(MASK mask) @@ -1686,6 +1700,12 @@ BOOL LLToolPie::handleRightClickPick() } } + // non UI object - put focus back "in world" + if (gFocusMgr.getKeyboardFocus()) + { + gFocusMgr.setKeyboardFocus(NULL); + } + LLTool::handleRightMouseDown(x, y, mask); // We handled the event. return TRUE; diff --git a/indra/newview/lltoolselect.cpp b/indra/newview/lltoolselect.cpp index 0a9153eecb..812abe9dbd 100755 --- a/indra/newview/lltoolselect.cpp +++ b/indra/newview/lltoolselect.cpp @@ -36,6 +36,7 @@ #include "llmanip.h" #include "llmenugl.h" #include "llselectmgr.h" +#include "llviewermediafocus.h" #include "lltoolmgr.h" #include "llfloaterscriptdebug.h" #include "llviewercamera.h" @@ -110,6 +111,21 @@ LLObjectSelectionHandle LLToolSelect::handleObjectSelection(const LLPickInfo& pi { BOOL already_selected = object->isSelected(); + if (already_selected && + object->getNumTEs() > 0 && + !LLSelectMgr::getInstance()->getSelection()->contains(object,SELECT_ALL_TES)) + { + const LLTextureEntry* tep = object->getTE(pick.mObjectFace); + if (tep && !tep->isSelected() && !LLViewerMediaFocus::getInstance()->getFocusedObjectID().isNull()) + { + // we were interacting with media and clicked on non selected face, drop media focus + LLViewerMediaFocus::getInstance()->clearFocus(); + // selection was removed and zoom preserved by clearFocus(), continue with regular selection + already_selected = false; + extend_select = true; + } + } + if ( extend_select ) { if ( already_selected ) diff --git a/indra/newview/llurldispatcher.cpp b/indra/newview/llurldispatcher.cpp index 615064c782..78268944fc 100755 --- a/indra/newview/llurldispatcher.cpp +++ b/indra/newview/llurldispatcher.cpp @@ -278,13 +278,13 @@ public: tokens[2].asReal(), tokens[3].asReal()); } - - LLSD args; - args["LOCATION"] = tokens[0]; // Region names may be %20 escaped. std::string region_name = LLURI::unescape(tokens[0]); + LLSD args; + args["LOCATION"] = region_name; + LLSD payload; payload["region_name"] = region_name; payload["callback_url"] = LLSLURL(region_name, coords).getSLURLString(); diff --git a/indra/newview/llviewerfloaterreg.cpp b/indra/newview/llviewerfloaterreg.cpp index 4e491f257d..e19fe9ca75 100755 --- a/indra/newview/llviewerfloaterreg.cpp +++ b/indra/newview/llviewerfloaterreg.cpp @@ -76,6 +76,7 @@ #include "llfloaterinspect.h" #include "llfloaterinventory.h" #include "llfloaterjoystick.h" +#include "llfloaterlagmeter.h" #include "llfloaterland.h" #include "llfloaterlandholdings.h" #include "llfloatermap.h" @@ -237,6 +238,7 @@ void LLViewerFloaterReg::registerFloaters() LLNotificationsUI::registerFloater(); LLFloaterDisplayNameUtil::registerFloater(); + LLFloaterReg::add("lagmeter", "floater_lagmeter.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLFloaterLagMeter>); LLFloaterReg::add("land_holdings", "floater_land_holdings.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLFloaterLandHoldings>); LLFloaterReg::add("mem_leaking", "floater_mem_leaking.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLFloaterMemLeak>); diff --git a/indra/newview/llviewerkeyboard.cpp b/indra/newview/llviewerkeyboard.cpp index 160478788c..b0f4802e20 100755 --- a/indra/newview/llviewerkeyboard.cpp +++ b/indra/newview/llviewerkeyboard.cpp @@ -162,7 +162,7 @@ void agent_push_backward( EKeystate s ) { camera_move_backward(s); } - else if (!gAgent.backwardGrabbed() && gAgentAvatarp->isSitting()) + else if (!gAgent.backwardGrabbed() && gAgentAvatarp->isSitting() && gSavedSettings.getBOOL("LeaveMouselook")) { gAgentCamera.changeCameraToThirdPerson(); } diff --git a/indra/newview/llviewermenu.cpp b/indra/newview/llviewermenu.cpp index 8c9429c05d..38aaff9279 100755 --- a/indra/newview/llviewermenu.cpp +++ b/indra/newview/llviewermenu.cpp @@ -64,6 +64,7 @@ #include "llfloaterinventory.h" #include "llfloaterimcontainer.h" #include "llfloaterland.h" +#include "llfloaterimnearbychat.h" #include "llfloaterpathfindingcharacters.h" #include "llfloaterpathfindinglinksets.h" #include "llfloaterpay.h" @@ -92,6 +93,7 @@ #include "llparcel.h" #include "llrootview.h" #include "llsceneview.h" +#include "llscenemonitor.h" #include "llselectmgr.h" #include "llspellcheckmenuhandler.h" #include "llstatusbar.h" @@ -533,6 +535,10 @@ class LLAdvancedToggleConsole : public view_listener_t { toggle_visibility( (void*)gSceneView); } + else if ("scene monitor" == console_type) + { + toggle_visibility( (void*)gSceneMonitorView); + } return true; } @@ -559,6 +565,10 @@ class LLAdvancedCheckConsole : public view_listener_t { new_value = get_visibility( (void*) gSceneView); } + else if ("scene monitor" == console_type) + { + new_value = get_visibility( (void*) gSceneMonitorView); + } return new_value; } @@ -5660,6 +5670,25 @@ void toggle_debug_menus(void*) // gExportDialog = LLUploadDialog::modalUploadDialog("Exporting selected objects..."); // } // + +class LLCommunicateNearbyChat : public view_listener_t +{ + bool handleEvent(const LLSD& userdata) + { + LLFloaterIMContainer* im_box = LLFloaterIMContainer::getInstance(); + bool nearby_visible = LLFloaterReg::getTypedInstance<LLFloaterIMNearbyChat>("nearby_chat")->isInVisibleChain(); + if(nearby_visible && im_box->getSelectedSession() == LLUUID() && im_box->getConversationListItemSize() > 1) + { + im_box->selectNextorPreviousConversation(false); + } + else + { + LLFloaterReg::toggleInstanceOrBringToFront("nearby_chat"); + } + return true; + } +}; + class LLWorldSetHomeLocation : public view_listener_t { bool handleEvent(const LLSD& userdata) @@ -6176,7 +6205,7 @@ class LLPromptShowURL : public view_listener_t std::string alert = param.substr(0, offset); std::string url = param.substr(offset+1); - if(gSavedSettings.getBOOL("UseExternalBrowser")) + if (LLWeb::useExternalBrowser(url)) { LLSD payload; payload["url"] = url; @@ -7796,7 +7825,7 @@ void handle_web_content_test(const LLSD& param) void handle_show_url(const LLSD& param) { std::string url = param.asString(); - if(gSavedSettings.getBOOL("UseExternalBrowser")) + if (LLWeb::useExternalBrowser(url)) { LLWeb::loadURLExternal(url); } @@ -8233,9 +8262,9 @@ class LLWorldEnableEnvSettings : public view_listener_t bool result = false; std::string tod = userdata.asString(); - if (tod == "region") + if (LLEnvManagerNew::instance().getUseRegionSettings()) { - return LLEnvManagerNew::instance().getUseRegionSettings(); + return (tod == "region"); } if (LLEnvManagerNew::instance().getUseFixedSky()) @@ -8578,6 +8607,9 @@ void initialize_menus() // Me > Movement view_listener_t::addMenu(new LLAdvancedAgentFlyingInfo(), "Agent.getFlying"); + //Communicate Nearby chat + view_listener_t::addMenu(new LLCommunicateNearbyChat(), "Communicate.NearbyChat"); + // Communicate > Voice morphing > Subscribe... commit.add("Communicate.VoiceMorphing.Subscribe", boost::bind(&handle_voice_morphing_subscribe)); LLVivoxVoiceClient * voice_clientp = LLVivoxVoiceClient::getInstance(); diff --git a/indra/newview/llviewermenufile.cpp b/indra/newview/llviewermenufile.cpp index 80f47ecab2..b2a37694fe 100755 --- a/indra/newview/llviewermenufile.cpp +++ b/indra/newview/llviewermenufile.cpp @@ -477,8 +477,10 @@ class LLFileEnableCloseWindow : public view_listener_t { bool handleEvent(const LLSD& userdata) { - bool new_value = NULL != gFloaterView->getFrontmostClosableFloater(); - return new_value; + bool frontmost_fl_exists = (NULL != gFloaterView->getFrontmostClosableFloater()); + bool frontmost_snapshot_fl_exists = (NULL != gSnapshotFloaterView->getFrontmostClosableFloater()); + + return frontmost_fl_exists || frontmost_snapshot_fl_exists; } }; @@ -486,7 +488,21 @@ class LLFileCloseWindow : public view_listener_t { bool handleEvent(const LLSD& userdata) { - LLFloater::closeFrontmostFloater(); + bool frontmost_fl_exists = (NULL != gFloaterView->getFrontmostClosableFloater()); + LLFloater* snapshot_floater = gSnapshotFloaterView->getFrontmostClosableFloater(); + + if(snapshot_floater && (!frontmost_fl_exists || snapshot_floater->hasFocus())) + { + snapshot_floater->closeFloater(); + if (gFocusMgr.getKeyboardFocus() == NULL) + { + gFloaterView->focusFrontFloater(); + } + } + else + { + LLFloater::closeFrontmostFloater(); + } return true; } }; diff --git a/indra/newview/llviewermessage.cpp b/indra/newview/llviewermessage.cpp index 9d5c3c4d4a..44eb4361f1 100755 --- a/indra/newview/llviewermessage.cpp +++ b/indra/newview/llviewermessage.cpp @@ -3767,6 +3767,15 @@ void process_chat_from_simulator(LLMessageSystem *msg, void **user_data) LLNotificationsUI::LLNotificationManager::instance().onChat(chat, args); } + // don't call notification for debug messages from not owned objects + if (chat.mChatType == CHAT_TYPE_DEBUG_MSG) + { + if (gAgentID != chat.mOwnerID) + { + return; + } + } + LLSD msg_notify = LLSD(LLSD::emptyMap()); msg_notify["session_id"] = LLUUID(); msg_notify["from_id"] = chat.mFromID; @@ -5747,83 +5756,101 @@ bool handle_special_notification(std::string notificationID, LLSD& llsdBlock) } // some of the server notifications need special handling. This is where we do that. -bool handle_teleport_access_blocked(LLSD& llsdBlock) +bool handle_teleport_access_blocked(LLSD& llsdBlock, const std::string & notificationID, const std::string & defaultMessage) { - std::string notificationID("TeleportEntryAccessBlocked"); U8 regionAccess = static_cast<U8>(llsdBlock["_region_access"].asInteger()); std::string regionMaturity = LLViewerRegion::accessToString(regionAccess); LLStringUtil::toLower(regionMaturity); llsdBlock["REGIONMATURITY"] = regionMaturity; bool returnValue = false; - LLNotificationPtr maturityLevelNotification; - std::string notifySuffix = "_Notify"; - if (regionAccess == SIM_ACCESS_MATURE) - { - if (gAgent.isTeen()) - { - gAgent.clearTeleportRequest(); - maturityLevelNotification = LLNotificationsUtil::add(notificationID+"_AdultsOnlyContent", llsdBlock); - returnValue = true; + LLNotificationPtr tp_failure_notification; + std::string notifySuffix; - notifySuffix = "_NotifyAdultsOnly"; - } - else if (gAgent.prefersPG()) + if (notificationID == std::string("TeleportEntryAccessBlocked")) + { + notifySuffix = "_Notify"; + if (regionAccess == SIM_ACCESS_MATURE) { - if (gAgent.hasRestartableFailedTeleportRequest()) + if (gAgent.isTeen()) { - maturityLevelNotification = LLNotificationsUtil::add(notificationID+"_ChangeAndReTeleport", llsdBlock, llsdBlock, handle_prompt_for_maturity_level_change_and_reteleport_callback); + gAgent.clearTeleportRequest(); + tp_failure_notification = LLNotificationsUtil::add(notificationID+"_AdultsOnlyContent", llsdBlock); returnValue = true; + + notifySuffix = "_NotifyAdultsOnly"; + } + else if (gAgent.prefersPG()) + { + if (gAgent.hasRestartableFailedTeleportRequest()) + { + tp_failure_notification = LLNotificationsUtil::add(notificationID+"_ChangeAndReTeleport", llsdBlock, llsdBlock, handle_prompt_for_maturity_level_change_and_reteleport_callback); + returnValue = true; + } + else + { + gAgent.clearTeleportRequest(); + tp_failure_notification = LLNotificationsUtil::add(notificationID+"_Change", llsdBlock, llsdBlock, handle_prompt_for_maturity_level_change_callback); + returnValue = true; + } } else { gAgent.clearTeleportRequest(); - maturityLevelNotification = LLNotificationsUtil::add(notificationID+"_Change", llsdBlock, llsdBlock, handle_prompt_for_maturity_level_change_callback); + tp_failure_notification = LLNotificationsUtil::add(notificationID+"_PreferencesOutOfSync", llsdBlock, llsdBlock, handle_prompt_for_maturity_level_change_callback); returnValue = true; } } - else - { - gAgent.clearTeleportRequest(); - maturityLevelNotification = LLNotificationsUtil::add(notificationID+"_PreferencesOutOfSync", llsdBlock, llsdBlock, handle_prompt_for_maturity_level_change_callback); - returnValue = true; - } - } - else if (regionAccess == SIM_ACCESS_ADULT) - { - if (!gAgent.isAdult()) - { - gAgent.clearTeleportRequest(); - maturityLevelNotification = LLNotificationsUtil::add(notificationID+"_AdultsOnlyContent", llsdBlock); - returnValue = true; - - notifySuffix = "_NotifyAdultsOnly"; - } - else if (gAgent.prefersPG() || gAgent.prefersMature()) + else if (regionAccess == SIM_ACCESS_ADULT) { - if (gAgent.hasRestartableFailedTeleportRequest()) + if (!gAgent.isAdult()) { - maturityLevelNotification = LLNotificationsUtil::add(notificationID+"_ChangeAndReTeleport", llsdBlock, llsdBlock, handle_prompt_for_maturity_level_change_and_reteleport_callback); + gAgent.clearTeleportRequest(); + tp_failure_notification = LLNotificationsUtil::add(notificationID+"_AdultsOnlyContent", llsdBlock); returnValue = true; + + notifySuffix = "_NotifyAdultsOnly"; + } + else if (gAgent.prefersPG() || gAgent.prefersMature()) + { + if (gAgent.hasRestartableFailedTeleportRequest()) + { + tp_failure_notification = LLNotificationsUtil::add(notificationID+"_ChangeAndReTeleport", llsdBlock, llsdBlock, handle_prompt_for_maturity_level_change_and_reteleport_callback); + returnValue = true; + } + else + { + gAgent.clearTeleportRequest(); + tp_failure_notification = LLNotificationsUtil::add(notificationID+"_Change", llsdBlock, llsdBlock, handle_prompt_for_maturity_level_change_callback); + returnValue = true; + } } else { gAgent.clearTeleportRequest(); - maturityLevelNotification = LLNotificationsUtil::add(notificationID+"_Change", llsdBlock, llsdBlock, handle_prompt_for_maturity_level_change_callback); + tp_failure_notification = LLNotificationsUtil::add(notificationID+"_PreferencesOutOfSync", llsdBlock, llsdBlock, handle_prompt_for_maturity_level_change_callback); returnValue = true; } + } + } // End of special handling for "TeleportEntryAccessBlocked" + else + { // Normal case, no message munging + gAgent.clearTeleportRequest(); + if (LLNotifications::getInstance()->templateExists(notificationID)) + { + tp_failure_notification = LLNotificationsUtil::add(notificationID, llsdBlock, llsdBlock); } else { - gAgent.clearTeleportRequest(); - maturityLevelNotification = LLNotificationsUtil::add(notificationID+"_PreferencesOutOfSync", llsdBlock, llsdBlock, handle_prompt_for_maturity_level_change_callback); - returnValue = true; - } + llsdBlock["MESSAGE"] = defaultMessage; + tp_failure_notification = LLNotificationsUtil::add("GenericAlertOK", llsdBlock); } + returnValue = true; + } - if ((maturityLevelNotification == NULL) || maturityLevelNotification->isIgnored()) + if ((tp_failure_notification == NULL) || tp_failure_notification->isIgnored()) { - // Given a simple notification if no maturityLevelNotification is set or it is ignore + // Given a simple notification if no tp_failure_notification is set or it is ignore LLNotificationsUtil::add(notificationID + notifySuffix, llsdBlock); } @@ -6039,8 +6066,8 @@ void process_alert_core(const std::string& message, BOOL modal) std::string alert_name(message.substr(ALERT_PREFIX.length())); if (!handle_special_alerts(alert_name)) { - LLNotificationsUtil::add(alert_name); - } + LLNotificationsUtil::add(alert_name); + } } else if (message.find(NOTIFY_PREFIX) == 0) { @@ -6062,10 +6089,10 @@ void process_alert_core(const std::string& message, BOOL modal) LLFloaterRegionRestarting::close(); } - std::string new_msg =LLNotifications::instance().getGlobalString(text); - args["MESSAGE"] = new_msg; - LLNotificationsUtil::add("SystemMessage", args); - } + std::string new_msg =LLNotifications::instance().getGlobalString(text); + args["MESSAGE"] = new_msg; + LLNotificationsUtil::add("SystemMessage", args); + } else if (modal) { LLSD args; @@ -6648,8 +6675,8 @@ std::string formatted_time(const time_t& the_time) void process_teleport_failed(LLMessageSystem *msg, void**) { - std::string reason; - std::string big_reason; + std::string message_id; // Tag from server, like "RegionEntryAccessBlocked" + std::string big_reason; // Actual message to display LLSD args; // Let the interested parties know that teleport failed. @@ -6659,16 +6686,16 @@ void process_teleport_failed(LLMessageSystem *msg, void**) if (msg->has(_PREHASH_AlertInfo) && msg->getSizeFast(_PREHASH_AlertInfo, _PREHASH_Message) > 0) { // Get the message ID - msg->getStringFast(_PREHASH_AlertInfo, _PREHASH_Message, reason); - big_reason = LLAgent::sTeleportErrorMessages[reason]; + msg->getStringFast(_PREHASH_AlertInfo, _PREHASH_Message, message_id); + big_reason = LLAgent::sTeleportErrorMessages[message_id]; if ( big_reason.size() > 0 ) { // Substitute verbose reason from the local map args["REASON"] = big_reason; } else { // Nothing found in the map - use what the server returned in the original message block - msg->getStringFast(_PREHASH_Info, _PREHASH_Reason, reason); - args["REASON"] = reason; + msg->getStringFast(_PREHASH_Info, _PREHASH_Reason, big_reason); + args["REASON"] = big_reason; } LLSD llsd_block; @@ -6684,7 +6711,7 @@ void process_teleport_failed(LLMessageSystem *msg, void**) else { // change notification name in this special case - if (handle_teleport_access_blocked(llsd_block)) + if (handle_teleport_access_blocked(llsd_block, message_id, args["REASON"])) { if( gAgent.getTeleportState() != LLAgent::TELEPORT_NONE ) { @@ -6697,17 +6724,17 @@ void process_teleport_failed(LLMessageSystem *msg, void**) } else - { - msg->getStringFast(_PREHASH_Info, _PREHASH_Reason, reason); + { // Extra message payload not found - use what the simulator sent + msg->getStringFast(_PREHASH_Info, _PREHASH_Reason, message_id); - big_reason = LLAgent::sTeleportErrorMessages[reason]; + big_reason = LLAgent::sTeleportErrorMessages[message_id]; if ( big_reason.size() > 0 ) { // Substitute verbose reason from the local map args["REASON"] = big_reason; } else { // Nothing found in the map - use what the server returned - args["REASON"] = reason; + args["REASON"] = message_id; } } diff --git a/indra/newview/llviewerobject.cpp b/indra/newview/llviewerobject.cpp index 80592f01ce..4f992fc184 100755 --- a/indra/newview/llviewerobject.cpp +++ b/indra/newview/llviewerobject.cpp @@ -2792,8 +2792,8 @@ void LLViewerObject::dirtyInventory() mInventory->clear(); // will deref and delete entries delete mInventory; mInventory = NULL; - mInventoryDirty = TRUE; } + mInventoryDirty = TRUE; } void LLViewerObject::registerInventoryListener(LLVOInventoryListener* listener, void* user_data) @@ -2830,12 +2830,15 @@ void LLViewerObject::clearInventoryListeners() void LLViewerObject::requestInventory() { - mInventoryDirty = FALSE; + if(mInventoryDirty && mInventory && !mInventoryCallbacks.empty()) + { + mInventory->clear(); // will deref and delete entries + delete mInventory; + mInventory = NULL; + mInventoryDirty = FALSE; //since we are going to request it now + } if(mInventory) { - //mInventory->clear() // will deref and delete it - //delete mInventory; - //mInventory = NULL; doInventoryCallback(); } // throw away duplicate requests diff --git a/indra/newview/llviewerparcelmgr.cpp b/indra/newview/llviewerparcelmgr.cpp index cdb08f4707..7c94442f09 100755 --- a/indra/newview/llviewerparcelmgr.cpp +++ b/indra/newview/llviewerparcelmgr.cpp @@ -117,6 +117,7 @@ LLViewerParcelMgr::LLViewerParcelMgr() mHoverRequestResult(0), mHoverWestSouth(), mHoverEastNorth(), + mTeleportInProgressPosition(), mRenderCollision(FALSE), mRenderSelection(TRUE), mCollisionBanned(0), @@ -1320,12 +1321,6 @@ void LLViewerParcelMgr::setHoverParcel(const LLVector3d& pos) static U32 last_west, last_south; - // only request parcel info when tooltip is shown - if (!gSavedSettings.getBOOL("ShowLandHoverTip")) - { - return; - } - // only request parcel info if position has changed outside of the // last parcel grid step U32 west_parcel_step = (U32) floor( pos.mdV[VX] / PARCEL_GRID_STEP_METERS ); @@ -1585,7 +1580,15 @@ void LLViewerParcelMgr::processParcelProperties(LLMessageSystem *msg, void **use if (instance->mTeleportInProgress) { instance->mTeleportInProgress = FALSE; - instance->mTeleportFinishedSignal(gAgent.getPositionGlobal(), false); + if(instance->mTeleportInProgressPosition.isNull()) + { + //initial update + instance->mTeleportFinishedSignal(gAgent.getPositionGlobal(), false); + } + else + { + instance->mTeleportFinishedSignal(instance->mTeleportInProgressPosition, false); + } } } } @@ -2494,6 +2497,7 @@ void LLViewerParcelMgr::onTeleportFinished(bool local, const LLVector3d& new_pos // Non-local teleport (inter-region or between different parcels of the same region). // The agent parcel data has not been updated yet. // Let's wait for the update and then emit the signal. + mTeleportInProgressPosition = new_pos; mTeleportInProgress = TRUE; } } diff --git a/indra/newview/llviewerparcelmgr.h b/indra/newview/llviewerparcelmgr.h index 58d398e141..b5b269abdf 100755 --- a/indra/newview/llviewerparcelmgr.h +++ b/indra/newview/llviewerparcelmgr.h @@ -335,6 +335,7 @@ private: std::vector<LLParcelObserver*> mObservers; BOOL mTeleportInProgress; + LLVector3d mTeleportInProgressPosition; teleport_finished_signal_t mTeleportFinishedSignal; teleport_failed_signal_t mTeleportFailedSignal; diff --git a/indra/newview/llviewerregion.cpp b/indra/newview/llviewerregion.cpp index cd5f64b9ca..11cbf3fc24 100755 --- a/indra/newview/llviewerregion.cpp +++ b/indra/newview/llviewerregion.cpp @@ -285,8 +285,8 @@ private: { regionp->setCapability(iter->first, iter->second); - LL_DEBUGS("AppInit", "Capabilities") << "got capability for " - << iter->first << LL_ENDL; + LL_DEBUGS("AppInit", "Capabilities") + << "Capability '" << iter->first << "' is '" << iter->second << "'" << LL_ENDL; /* HACK we're waiting for the ServerReleaseNotes */ if (iter->first == "ServerReleaseNotes" && regionp->getReleaseNotesRequested()) diff --git a/indra/newview/llviewertexture.cpp b/indra/newview/llviewertexture.cpp index ba89aafc84..4e2eef39d6 100755 --- a/indra/newview/llviewertexture.cpp +++ b/indra/newview/llviewertexture.cpp @@ -88,7 +88,7 @@ F32 LLViewerTexture::sDesiredDiscardBias = 0.f; F32 LLViewerTexture::sDesiredDiscardScale = 1.1f; S32Bytes LLViewerTexture::sBoundTextureMemory; S32Bytes LLViewerTexture::sTotalTextureMemory; -S32Megabytes LLViewerTexture::sMaxBoundTextureMem; +S32Megabytes LLViewerTexture::sMaxBoundTextureMemory; S32Megabytes LLViewerTexture::sMaxTotalTextureMem; S32Bytes LLViewerTexture::sMaxDesiredTextureMem; S8 LLViewerTexture::sCameraMovingDiscardBias = 0; @@ -534,11 +534,11 @@ void LLViewerTexture::updateClass(const F32 velocity, const F32 angular_velocity sBoundTextureMemory = LLImageGL::sBoundTextureMemory; sTotalTextureMemory = LLImageGL::sGlobalTextureMemory; - sMaxBoundTextureMem = gTextureList.getMaxResidentTexMem(); + sMaxBoundTextureMemory = gTextureList.getMaxResidentTexMem(); sMaxTotalTextureMem = gTextureList.getMaxTotalTextureMem(); sMaxDesiredTextureMem = sMaxTotalTextureMem; //in Bytes, by default and when total used texture memory is small. - if (sBoundTextureMemory >= sMaxBoundTextureMem || + if (sBoundTextureMemory >= sMaxBoundTextureMemory || sTotalTextureMemory >= sMaxTotalTextureMem) { //when texture memory overflows, lower down the threshold to release the textures more aggressively. @@ -558,7 +558,7 @@ void LLViewerTexture::updateClass(const F32 velocity, const F32 angular_velocity sEvaluationTimer.reset(); } else if (sDesiredDiscardBias > 0.0f && - sBoundTextureMemory < sMaxBoundTextureMem * texmem_lower_bound_scale && + sBoundTextureMemory < sMaxBoundTextureMemory * texmem_lower_bound_scale && sTotalTextureMemory < sMaxTotalTextureMem * texmem_lower_bound_scale) { // If we are using less texture memory than we should, @@ -576,7 +576,7 @@ void LLViewerTexture::updateClass(const F32 velocity, const F32 angular_velocity sCameraMovingBias = llmax(0.2f * camera_moving_speed, 2.0f * camera_angular_speed - 1); sCameraMovingDiscardBias = (S8)(sCameraMovingBias); - LLViewerTexture::sFreezeImageScalingDown = (sBoundTextureMemory < 0.75f * sMaxBoundTextureMem * texmem_middle_bound_scale) && + LLViewerTexture::sFreezeImageScalingDown = (sBoundTextureMemory < 0.75f * sMaxBoundTextureMemory * texmem_middle_bound_scale) && (sTotalTextureMemory < 0.75f * sMaxTotalTextureMem * texmem_middle_bound_scale); } @@ -3074,7 +3074,7 @@ void LLViewerLODTexture::processTextureStats() scaleDown(); } // Limit the amount of GL memory bound each frame - else if ( sBoundTextureMemory > sMaxBoundTextureMem * texmem_middle_bound_scale && + else if ( sBoundTextureMemory > sMaxBoundTextureMemory * texmem_middle_bound_scale && (!getBoundRecently() || mDesiredDiscardLevel >= mCachedRawDiscardLevel)) { scaleDown(); diff --git a/indra/newview/llviewertexture.h b/indra/newview/llviewertexture.h index 307204da60..05912404e4 100755 --- a/indra/newview/llviewertexture.h +++ b/indra/newview/llviewertexture.h @@ -210,7 +210,7 @@ public: static F32 sDesiredDiscardScale; static S32Bytes sBoundTextureMemory; static S32Bytes sTotalTextureMemory; - static S32Megabytes sMaxBoundTextureMem; + static S32Megabytes sMaxBoundTextureMemory; static S32Megabytes sMaxTotalTextureMem; static S32Bytes sMaxDesiredTextureMem ; static S8 sCameraMovingDiscardBias; diff --git a/indra/newview/llviewerwindow.cpp b/indra/newview/llviewerwindow.cpp index 4d263c118b..9dcd0b81e0 100755 --- a/indra/newview/llviewerwindow.cpp +++ b/indra/newview/llviewerwindow.cpp @@ -1392,6 +1392,13 @@ BOOL LLViewerWindow::handleTranslatedKeyUp(KEY key, MASK mask) // Let the voice chat code check for its PTT key. Note that this never affects event processing. LLVoiceClient::getInstance()->keyUp(key, mask); + // Let the inspect tool code check for ALT key to set LLToolSelectRect active instead LLToolCamera + LLToolCompInspect * tool_inspectp = LLToolCompInspect::getInstance(); + if (LLToolMgr::getInstance()->getCurrentTool() == tool_inspectp) + { + tool_inspectp->keyUp(key, mask); + } + return FALSE; } @@ -1962,7 +1969,7 @@ void LLViewerWindow::initWorldUI() // Force gFloaterTools to initialize LLFloaterReg::getInstance("build"); - LLFloaterReg::hideInstance("build"); + // Status bar LLPanel* status_bar_container = getRootView()->getChild<LLPanel>("status_bar_container"); @@ -3216,6 +3223,8 @@ void LLViewerWindow::updateUI() } append_xui_tooltip(tooltip_view, params); + params.styled_message.add().text("\n"); + screen_sticky_rect.intersectWith(tooltip_view->calcScreenRect()); params.sticky_rect = screen_sticky_rect; @@ -3265,7 +3274,7 @@ void LLViewerWindow::updateUI() updateLayout(); - saveLastMouse(mCurrentMousePoint); + mLastMousePoint = mCurrentMousePoint; // cleanup unused selections when no modal dialogs are open if (LLModalDialog::activeCount() == 0) @@ -3505,8 +3514,6 @@ void LLViewerWindow::saveLastMouse(const LLCoordGL &point) // Store last mouse location. // If mouse leaves window, pretend last point was on edge of window - mLastMousePoint = mCurrentMousePoint; - if (point.mX < 0) { mCurrentMousePoint.mX = 0; diff --git a/indra/newview/llvoavatar.cpp b/indra/newview/llvoavatar.cpp index 9f42776d78..22b979aa09 100755 --- a/indra/newview/llvoavatar.cpp +++ b/indra/newview/llvoavatar.cpp @@ -2068,7 +2068,7 @@ void LLVOAvatar::idleUpdate(LLAgent &agent, const F64 &time) } if (!(gPipeline.hasRenderType(LLPipeline::RENDER_TYPE_AVATAR)) - && !(gSavedSettings.getBOOL("DisableAllRenderTypes"))) + && !(gSavedSettings.getBOOL("DisableAllRenderTypes")) && !isSelf()) { return; } diff --git a/indra/newview/llvoicechannel.cpp b/indra/newview/llvoicechannel.cpp index 3c3dc33772..9a84cae403 100755 --- a/indra/newview/llvoicechannel.cpp +++ b/indra/newview/llvoicechannel.cpp @@ -280,14 +280,14 @@ void LLVoiceChannel::deactivate() if (callStarted()) { setState(STATE_HUNG_UP); - + //Default mic is OFF when leaving voice calls - if (gSavedSettings.getBOOL("AutoDisengageMic") && + if (gSavedSettings.getBOOL("AutoDisengageMic") && sCurrentVoiceChannel == this && LLVoiceClient::getInstance()->getUserPTTState()) { gSavedSettings.setBOOL("PTTCurrentlyEnabled", true); - LLVoiceClient::getInstance()->inputUserControlState(true); + LLVoiceClient::getInstance()->setUserPTTState(false); } } LLVoiceClient::getInstance()->removeObserver(this); diff --git a/indra/newview/llvoiceclient.cpp b/indra/newview/llvoiceclient.cpp index 815965fb0a..0bf373f478 100755 --- a/indra/newview/llvoiceclient.cpp +++ b/indra/newview/llvoiceclient.cpp @@ -36,6 +36,7 @@ #include "llsdserialize.h" #include "llui.h" #include "llkeyboard.h" +#include "llagent.h" const F32 LLVoiceClient::OVERDRIVEN_POWER_LEVEL = 0.7f; @@ -635,7 +636,7 @@ void LLVoiceClient::keyDown(KEY key, MASK mask) return; } - if(!mPTTIsMiddleMouse) + if(!mPTTIsMiddleMouse && LLAgent::isActionAllowed("speak")) { bool down = (mPTTKey != KEY_NONE) && gKeyboard->getKeyDown(mPTTKey); @@ -654,12 +655,9 @@ void LLVoiceClient::keyUp(KEY key, MASK mask) } void LLVoiceClient::middleMouseState(bool down) { - if(mPTTIsMiddleMouse) + if(mPTTIsMiddleMouse && LLAgent::isActionAllowed("speak")) { - if(mPTTIsMiddleMouse) - { - inputUserControlState(down); - } + inputUserControlState(down); } } diff --git a/indra/newview/llweb.cpp b/indra/newview/llweb.cpp index 665671a38f..0312972a22 100755 --- a/indra/newview/llweb.cpp +++ b/indra/newview/llweb.cpp @@ -50,6 +50,8 @@ #include "llviewerwindow.h" #include "llnotificationsutil.h" +#include <boost/regex.hpp> + bool on_load_url_external_response(const LLSD& notification, const LLSD& response, bool async ); @@ -87,7 +89,8 @@ void LLWeb::loadURL(const std::string& url, const std::string& target, const std // Force load in the internal browser, as if with a blank target. loadURLInternal(url, "", uuid); } - else if (gSavedSettings.getBOOL("UseExternalBrowser") || (target == "_external")) + + else if (useExternalBrowser(url) || (target == "_external")) { loadURLExternal(url); } @@ -225,3 +228,19 @@ std::string LLWeb::expandURLSubstitutions(const std::string &url, return LLWeb::escapeURL(expanded_url); } + +//static +bool LLWeb::useExternalBrowser(const std::string &url) +{ + if (gSavedSettings.getU32("PreferredBrowserBehavior") == BROWSER_EXTERNAL_ONLY) + { + return true; + } + else if (gSavedSettings.getU32("PreferredBrowserBehavior") == BROWSER_INT_LL_EXT_OTHERS) + { + boost::regex pattern = boost::regex("\\b(lindenlab.com|secondlife.com)\\b", boost::regex::perl|boost::regex::icase); + boost::match_results<std::string::const_iterator> matches; + return !(boost::regex_search(url, matches, pattern)); + } + return false; +} diff --git a/indra/newview/llweb.h b/indra/newview/llweb.h index 0b95f664d6..7c90badbfe 100755 --- a/indra/newview/llweb.h +++ b/indra/newview/llweb.h @@ -40,6 +40,13 @@ class LLWeb { public: + enum PreferredBrowser + { + BROWSER_EXTERNAL_ONLY = 0, + BROWSER_INT_LL_EXT_OTHERS = 1, + BROWSER_INTERNAL_ONLY = 2 + }; + static void initClass(); /// Load the given url in the operating system's web browser, async if we want to return immediately @@ -57,6 +64,7 @@ public: /// Expands various strings like [LANG], [VERSION], etc. in a URL static std::string expandURLSubstitutions(const std::string &url, const LLSD &default_subs); + static bool useExternalBrowser(const std::string &url); }; #endif diff --git a/indra/newview/llworldmapview.cpp b/indra/newview/llworldmapview.cpp index a770352f86..7cb53a0706 100755 --- a/indra/newview/llworldmapview.cpp +++ b/indra/newview/llworldmapview.cpp @@ -1694,6 +1694,8 @@ BOOL LLWorldMapView::handleHover( S32 x, S32 y, MASK mask ) sPanY += delta_y; sTargetPanX = sPanX; sTargetPanY = sPanY; + + gViewerWindow->moveCursorToCenter(); } // doesn't matter, cursor should be hidden diff --git a/indra/newview/skins/default/xui/da/floater_lagmeter.xml b/indra/newview/skins/default/xui/da/floater_lagmeter.xml new file mode 100644 index 0000000000..149d174c34 --- /dev/null +++ b/indra/newview/skins/default/xui/da/floater_lagmeter.xml @@ -0,0 +1,151 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<floater name="floater_lagmeter" title="LAG METER"> + <floater.string name="max_title_msg"> + Lag mÃ¥ler + </floater.string> + <floater.string name="max_width_px"> + 360 + </floater.string> + <floater.string name="min_title_msg"> + Lag + </floater.string> + <floater.string name="min_width_px"> + 90 + </floater.string> + <floater.string name="client_text_msg"> + Klient + </floater.string> + <floater.string name="client_frame_rate_critical_fps"> + 10 + </floater.string> + <floater.string name="client_frame_rate_warning_fps"> + 15 + </floater.string> + <floater.string name="client_frame_time_window_bg_msg"> + Normal, vindue i baggrund + </floater.string> + <floater.string name="client_frame_time_critical_msg"> + Klients billeder/sek under [CLIENT_FRAME_RATE_CRITICAL] + </floater.string> + <floater.string name="client_frame_time_warning_msg"> + Klients billeder/sek mellem [CLIENT_FRAME_RATE_CRITICAL] og [CLIENT_FRAME_RATE_WARNING] + </floater.string> + <floater.string name="client_frame_time_normal_msg"> + Normal + </floater.string> + <floater.string name="client_draw_distance_cause_msg"> + Mulig Ã¥rsag: 'Vis afstand' sat for højt i grafik indstillinger + </floater.string> + <floater.string name="client_texture_loading_cause_msg"> + Mulig Ã¥rsag: Billeder hentes + </floater.string> + <floater.string name="client_texture_memory_cause_msg"> + Mulig Ã¥rsag: For mange billeder i hukommelse + </floater.string> + <floater.string name="client_complex_objects_cause_msg"> + Mulig Ã¥rsag: For mange komplekse objekter i scenariet + </floater.string> + <floater.string name="network_text_msg"> + Netværk + </floater.string> + <floater.string name="network_packet_loss_critical_pct"> + 10 + </floater.string> + <floater.string name="network_packet_loss_warning_pct"> + 5 + </floater.string> + <floater.string name="network_packet_loss_critical_msg"> + Forbindelsen mister over [NETWORK_PACKET_LOSS_CRITICAL]% pakker + </floater.string> + <floater.string name="network_packet_loss_warning_msg"> + Forbindelsen mister [NETWORK_PACKET_LOSS_WARNING]%-[NETWORK_PACKET_LOSS_CRITICAL]% pakker + </floater.string> + <floater.string name="network_performance_normal_msg"> + Normal + </floater.string> + <floater.string name="network_ping_critical_ms"> + 600 + </floater.string> + <floater.string name="network_ping_warning_ms"> + 300 + </floater.string> + <floater.string name="network_ping_critical_msg"> + Forbindelsens ping tider er over [NETWORK_PING_CRITICAL] ms + </floater.string> + <floater.string name="network_ping_warning_msg"> + Forbindelsens ping tider er [NETWORK_PING_WARNING]-[NETWORK_PING_CRITICAL] ms + </floater.string> + <floater.string name="network_packet_loss_cause_msg"> + Muligvis dÃ¥rlig forbindelse eller 'bÃ¥ndbredde' sat for højt i netværksopsætning. + </floater.string> + <floater.string name="network_ping_cause_msg"> + Muligvis dÃ¥rlig forbindelse eller fil delings program. + </floater.string> + <floater.string name="server_text_msg"> + Server + </floater.string> + <floater.string name="server_frame_rate_critical_fps"> + 20 + </floater.string> + <floater.string name="server_frame_rate_warning_fps"> + 30 + </floater.string> + <floater.string name="server_single_process_max_time_ms"> + 20 + </floater.string> + <floater.string name="server_frame_time_critical_msg"> + Simulator framerate er under [SERVER_FRAME_RATE_CRITICAL] + </floater.string> + <floater.string name="server_frame_time_warning_msg"> + Simulator framerate er mellem [SERVER_FRAME_RATE_CRITICAL] og [SERVER_FRAME_RATE_WARNING] + </floater.string> + <floater.string name="server_frame_time_normal_msg"> + Normal + </floater.string> + <floater.string name="server_physics_cause_msg"> + Mulig Ã¥rsag: For mange fysiske objekter + </floater.string> + <floater.string name="server_scripts_cause_msg"> + Mulig Ã¥rsag: For mange objekter med script + </floater.string> + <floater.string name="server_net_cause_msg"> + Mulig Ã¥rsag: For meget netværks trafik + </floater.string> + <floater.string name="server_agent_cause_msg"> + Mulig Ã¥rsag: For mange avatarer i bevægelse i regionen + </floater.string> + <floater.string name="server_images_cause_msg"> + Mulig Ã¥rsag: For mange billed udregninger + </floater.string> + <floater.string name="server_generic_cause_msg"> + Mulig Ã¥rsag: Simulator belastning for stor + </floater.string> + <floater.string name="smaller_label"> + >> + </floater.string> + <floater.string name="bigger_label"> + << + </floater.string> + <button label="" label_selected="" name="client_lagmeter" tool_tip="Status for klient lag"/> + <text name="client"> + Klient + </text> + <text name="client_text"> + Normal + </text> + <button label="" label_selected="" name="network_lagmeter" tool_tip="Network lag status"/> + <text name="network"> + Netværk + </text> + <text name="network_text"> + Normal + </text> + <button label="" label_selected="" name="server_lagmeter" tool_tip="Status for server lag"/> + <text name="server"> + Server + </text> + <text name="server_text"> + Normal + </text> + <button label=">>" name="minimize" tool_tip="Ændre størrelse"/> +</floater> diff --git a/indra/newview/skins/default/xui/de/floater_lagmeter.xml b/indra/newview/skins/default/xui/de/floater_lagmeter.xml new file mode 100644 index 0000000000..45ff37c147 --- /dev/null +++ b/indra/newview/skins/default/xui/de/floater_lagmeter.xml @@ -0,0 +1,151 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<floater name="floater_lagmeter" title="LAG METER"> + <floater.string name="max_title_msg"> + Lag-Anzeige + </floater.string> + <floater.string name="max_width_px"> + 350 + </floater.string> + <floater.string name="min_title_msg"> + Lag + </floater.string> + <floater.string name="min_width_px"> + 90 + </floater.string> + <floater.string name="client_text_msg"> + Client + </floater.string> + <floater.string name="client_frame_rate_critical_fps"> + 10 + </floater.string> + <floater.string name="client_frame_rate_warning_fps"> + 15 + </floater.string> + <floater.string name="client_frame_time_window_bg_msg"> + Normal, Fenster im Hintergrund + </floater.string> + <floater.string name="client_frame_time_critical_msg"> + Client-Frame-Rate unter [CLIENT_FRAME_RATE_CRITICAL] + </floater.string> + <floater.string name="client_frame_time_warning_msg"> + Client-Frame-Rate zwischen [CLIENT_FRAME_RATE_CRITICAL] und [CLIENT_FRAME_RATE_WARNING] + </floater.string> + <floater.string name="client_frame_time_normal_msg"> + Normal + </floater.string> + <floater.string name="client_draw_distance_cause_msg"> + Mögliche Ursache: Sichtweite zu groß + </floater.string> + <floater.string name="client_texture_loading_cause_msg"> + Mögliche Ursache: Bilder werden geladen + </floater.string> + <floater.string name="client_texture_memory_cause_msg"> + Mögliche Ursache: Zu viele Bilder im Speicher + </floater.string> + <floater.string name="client_complex_objects_cause_msg"> + Mögliche Ursache: Zu viele komplexe Objekte in der Szene + </floater.string> + <floater.string name="network_text_msg"> + Netzwerk + </floater.string> + <floater.string name="network_packet_loss_critical_pct"> + 10 + </floater.string> + <floater.string name="network_packet_loss_warning_pct"> + 5 + </floater.string> + <floater.string name="network_packet_loss_critical_msg"> + Paketverlust der Verbindung übersteigt [NETWORK_PACKET_LOSS_CRITICAL]% + </floater.string> + <floater.string name="network_packet_loss_warning_msg"> + Paketverlust der Verbindung liegt bei [NETWORK_PACKET_LOSS_WARNING]%-[NETWORK_PACKET_LOSS_CRITICAL]% + </floater.string> + <floater.string name="network_performance_normal_msg"> + Normal + </floater.string> + <floater.string name="network_ping_critical_ms"> + 600 + </floater.string> + <floater.string name="network_ping_warning_ms"> + 300 + </floater.string> + <floater.string name="network_ping_critical_msg"> + Ping-Zeit der Verbindung übersteigt [NETWORK_PING_CRITICAL] ms + </floater.string> + <floater.string name="network_ping_warning_msg"> + Ping-Zeit der Verbindung liegt bei [NETWORK_PING_WARNING]-[NETWORK_PING_CRITICAL] ms + </floater.string> + <floater.string name="network_packet_loss_cause_msg"> + Möglicherweise schlechte Verbindung oder zu hoher Wert für „Bandbreite“. + </floater.string> + <floater.string name="network_ping_cause_msg"> + Möglicherweise schlechte Verbindung oder File-Sharing-Anwendung. + </floater.string> + <floater.string name="server_text_msg"> + Server + </floater.string> + <floater.string name="server_frame_rate_critical_fps"> + 20 + </floater.string> + <floater.string name="server_frame_rate_warning_fps"> + 30 + </floater.string> + <floater.string name="server_single_process_max_time_ms"> + 20 + </floater.string> + <floater.string name="server_frame_time_critical_msg"> + Simulator-Frame-Rate liegt unter [SERVER_FRAME_RATE_CRITICAL] + </floater.string> + <floater.string name="server_frame_time_warning_msg"> + Simulator-Frame-Rate liegt zwischen [SERVER_FRAME_RATE_CRITICAL] und [SERVER_FRAME_RATE_WARNING] + </floater.string> + <floater.string name="server_frame_time_normal_msg"> + Normal + </floater.string> + <floater.string name="server_physics_cause_msg"> + Mögliche Ursache: Zu viele physische Objekte + </floater.string> + <floater.string name="server_scripts_cause_msg"> + Mögliche Ursache: Zu viele geskriptete Objekte + </floater.string> + <floater.string name="server_net_cause_msg"> + Mögliche Ursache: Zu viel Netzwerktraffic + </floater.string> + <floater.string name="server_agent_cause_msg"> + Mögliche Ursache: Zu viele Personen in Bewegung in der Region + </floater.string> + <floater.string name="server_images_cause_msg"> + Mögliche Ursache: Zu viele Bildberechnungen + </floater.string> + <floater.string name="server_generic_cause_msg"> + Mögliche Ursache: Zu hohe Simulator-Last + </floater.string> + <floater.string name="smaller_label"> + >> + </floater.string> + <floater.string name="bigger_label"> + << + </floater.string> + <button name="client_lagmeter" tool_tip="Client-Lag-Status"/> + <text name="client"> + Client + </text> + <text name="client_text"> + Normal + </text> + <button name="network_lagmeter" tool_tip="Netzwerk-Lag-Status"/> + <text name="network"> + Netzwerk + </text> + <text name="network_text"> + Normal + </text> + <button name="server_lagmeter" tool_tip="Server-Lag-Status"/> + <text name="server"> + Server + </text> + <text name="server_text"> + Normal + </text> + <button label=">> " name="minimize" tool_tip="Fenstergröße ändern"/> +</floater> diff --git a/indra/newview/skins/default/xui/de/floater_region_restarting.xml b/indra/newview/skins/default/xui/de/floater_region_restarting.xml new file mode 100644 index 0000000000..890391c508 --- /dev/null +++ b/indra/newview/skins/default/xui/de/floater_region_restarting.xml @@ -0,0 +1,23 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<floater name="region_restarting" title="REGION WIRD NEU GESTARTET"> + <string name="RegionName"> + Die Region, in der Sie sich gerade befinden ([NAME]), wird gleich neu gestartet. + +Wenn Sie in dieser Region bleiben, werden Sie abgemeldet. + </string> + <string name="RestartSeconds"> + Sekunden bis Neustart +[SECONDS] + </string> + <panel name="layout_panel_1"> + <text name="region_name"> + Die Region, in der Sie sich gerade befinden (-längster Regionsname-), wird gleich neu gestartet. + +Wenn Sie in dieser Region bleiben, werden Sie abgemeldet. + </text> + <text name="restart_seconds"> + Sekunden bis Neustart + 32767 + </text> + </panel> +</floater> diff --git a/indra/newview/skins/default/xui/de/floater_scene_load_stats.xml b/indra/newview/skins/default/xui/de/floater_scene_load_stats.xml new file mode 100644 index 0000000000..dff462a594 --- /dev/null +++ b/indra/newview/skins/default/xui/de/floater_scene_load_stats.xml @@ -0,0 +1,64 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<floater name="Scene Load Statistics" title="STATISTIKEN ZUM LADEN VON SZENEN"> + <button label="Anhalten" name="playpause"/> + <scroll_container name="statistics_scroll"> + <container_view name="statistics_view"> + <stat_view label="Standard" name="basic"> + <stat_bar label="Frame-Pixel-Differenz" name="frame difference"/> + <stat_bar label="Empfangene UDP-Daten" name="bandwidth"/> + <stat_bar label="Paketverlust" name="packet_loss"/> + </stat_view> + <stat_view label="Erweitert" name="advanced"> + <stat_view label="Darstellung" name="render"> + <stat_bar label="Objektanzahl" name="objs"/> + <stat_bar label="Neue Objekte" name="newobjs"/> + <stat_bar label="Objektcache-Trefferrate" name="object_cache_hits"/> + </stat_view> + <stat_view label="Textur" name="texture"> + <stat_bar label="Cache-Trefferrate" name="texture_cache_hits"/> + <stat_bar label="Cache-Leselatenz" name="texture_cache_read_latency"/> + <stat_bar label="Anzahl" name="numimagesstat"/> + <stat_bar label="Rohanzahl" name="numrawimagesstat"/> + </stat_view> + <stat_view label="Netzwerk" name="network"> + <stat_bar label="Paketeingang" name="packetsinstat"/> + <stat_bar label="Paketausgang" name="packetsoutstat"/> + <stat_bar label="Objekte" name="objectdatareceived"/> + <stat_bar label="Textur" name="texturedatareceived"/> + <stat_bar label="Asset" name="assetudpdatareceived"/> + <stat_bar label="Ebenen" name="layersdatareceived"/> + <stat_bar label="Tatsächlicher Eingang" name="messagedatain"/> + <stat_bar label="Tatsächlicher Ausgang" name="messagedataout"/> + <stat_bar label="Ausstehende Vorgänge im VFS" name="vfspendingoperations"/> + </stat_view> + </stat_view> + <stat_view label="Simulator" name="sim"> + <stat_bar label="Objekte" name="simobjects"/> + <stat_bar label="Aktive Objekte" name="simactiveobjects"/> + <stat_bar label="Aktive Skripts" name="simactivescripts"/> + <stat_bar label="Paketeingang" name="siminpps"/> + <stat_bar label="Paketausgang" name="simoutpps"/> + <stat_bar label="Ausstehende Downloads" name="simpendingdownloads"/> + <stat_bar label="Ausstehende Uploads" name="simpendinguploads"/> + <stat_bar label="Gesamtanzahl nicht bestätigter Bytes" name="simtotalunackedbytes"/> + <stat_view label="Zeit (ms)" name="simperf"> + <stat_bar label="Gesamt-Framezeit" name="simframemsec"/> + <stat_bar label="Nettozeit" name="simnetmsec"/> + <stat_bar label="Physikzeit" name="simsimphysicsmsec"/> + <stat_bar label="Simulationszeit" name="simsimothermsec"/> + <stat_bar label="Agentenzeit" name="simagentmsec"/> + <stat_bar label="Bilderzeit" name="simimagesmsec"/> + <stat_bar label="Skriptzeit" name="simscriptmsec"/> + <stat_bar label="Verbleib. Zeit" name="simsparemsec"/> + <stat_view label="Zeitdetails (ms)" name="timedetails"> + <stat_bar label="Physikschritt" name="simsimphysicsstepmsec"/> + <stat_bar label="Phys. Formen aktualisieren" name="simsimphysicsshapeupdatemsec"/> + <stat_bar label="Physik – andere" name="simsimphysicsothermsec"/> + <stat_bar label="Schlafzeit" name="simsleepmsec"/> + <stat_bar label="Pump IO" name="simpumpiomsec"/> + </stat_view> + </stat_view> + </stat_view> + </container_view> + </scroll_container> +</floater> diff --git a/indra/newview/skins/default/xui/de/floater_snapshot.xml b/indra/newview/skins/default/xui/de/floater_snapshot.xml index 798461c007..b98ee78685 100755 --- a/indra/newview/skins/default/xui/de/floater_snapshot.xml +++ b/indra/newview/skins/default/xui/de/floater_snapshot.xml @@ -41,23 +41,24 @@ </string> <button name="advanced_options_btn" tool_tip="Erweiterte Optionen"/> <text name="image_res_text"> - [WIDTH] x [HEIGHT] px + [WIDTH]px (Breite) x [HEIGHT]px (Höhe) </text> <text name="file_size_label"> [SIZE] KB </text> + <button name="advanced_options" label="AUFNAHME OPTIONEN"/> <panel name="advanced_options_panel"> - <text name="advanced_options_label"> - ERWEITERTE OPTIONEN - </text> <text name="layer_type_label"> - Aufnahme: + Aufnehmen: </text> <combo_box label="Bildebenen" name="layer_types"> <combo_box.item label="Farben" name="Colors"/> <combo_box.item label="Tiefe" name="Depth"/> </combo_box> - <check_box label="Schnittstelle" name="ui_check"/> + <combo_box label="Filter" name="filters_combobox"> + <combo_box.item label="Kein Filter" name="NoFilter"/> + </combo_box> + <check_box label="Benutzeroberfläche" name="ui_check"/> <check_box label="HUDs" name="hud_check"/> <check_box label="Standbild (Vollbild)" name="freeze_frame_check"/> <check_box label="Automatisch aktualisieren" name="auto_snapshot_check"/> diff --git a/indra/newview/skins/default/xui/de/floater_stats.xml b/indra/newview/skins/default/xui/de/floater_stats.xml index f3239f73c7..f4a9acddec 100755 --- a/indra/newview/skins/default/xui/de/floater_stats.xml +++ b/indra/newview/skins/default/xui/de/floater_stats.xml @@ -4,17 +4,20 @@ <container_view name="statistics_view" width="280"> <stat_view label="Basic" name="basic"> <stat_bar label="FPS" name="fps"/> - <stat_bar label="Bandbreite" name="bandwidth"/> + <stat_bar label="Empfangene UDP-Daten" name="bandwidth"/> <stat_bar label="Paketverlust" name="packet_loss"/> <stat_bar label="Ping Sim" name="ping"/> </stat_view> <stat_view label="Erweitert" name="advanced"> <stat_view label="Darstellung" name="render"> - <stat_bar label="Pro Frame gezeichnete KTris" name="ktrisframe"/> - <stat_bar label="Pro Sek. gezeichnete KTris" name="ktrissec"/> + <stat_bar label="KTris pro Frame" name="ktrisframe"/> + <stat_bar label="KTris pro Sekunden" name="ktrissec"/> <stat_bar label="Objektanzahl" name="objs"/> <stat_bar label="Neue Objekte" name="newobjs"/> <stat_bar label="Objektcache-Trefferrate" name="object_cache_hits"/> + <stat_bar label="Durchgeführte Okklusionsabfragen" name="occlusion_queries"/> + <stat_bar label="Okkludierte Objekte" name="occluded"/> + <stat_bar label="Nicht okkludierte Objekte" name="unoccluded"/> </stat_view> <stat_view label="Textur" name="texture"> <stat_bar label="Cache-Trefferrate" name="texture_cache_hits"/> @@ -26,15 +29,32 @@ <stat_bar label="Rohsp" name="rawmemstat"/> <stat_bar label="Zugeteilter Sp" name="glboundmemstat"/> </stat_view> + <stat_view label="Speichernutzung" name="memory"> + <stat_bar label="LLTrace" name="LLTrace"/> + <stat_bar label="UI" name="LLView"/> + <stat_bar label="Schriftarten" name="LLFontFreetype"/> + <stat_bar label="Inventar" name="LLInventoryObject"/> + <stat_bar label="Viewer-Objekte" name="LLViewerObject"/> + <stat_bar label="Octree-Gruppendaten" name="LLViewerOctreeGroup"/> + <stat_bar label="Octree-Daten" name="LLViewerOctreeEntry"/> + <stat_bar label="Viewer-Objekt-Cache" name="LLVOCacheEntry"/> + <stat_bar label="Zeichnungsobjekte" name="LLDrawable"/> + <stat_bar label="Gesichtsdaten" name="LLFace"/> + <stat_bar label="Zeichnungsinfos" name="LLDrawInfo"/> + <stat_bar label="Texturdaten" name="LLTexture"/> + <stat_bar label="Bilddaten" name="LLImage"/> + <stat_bar label="GL-Bilddaten" name="LLImageGL"/> + <stat_bar label="Vertex-Buffer" name="LLVertexBuffer"/> + </stat_view> <stat_view label="Netzwerk" name="network"> <stat_bar label="Paketeingang" name="packetsinstat"/> <stat_bar label="Paketausgang" name="packetsoutstat"/> - <stat_bar label="Objekte" name="objectkbitstat"/> - <stat_bar label="Textur" name="texturekbitstat"/> - <stat_bar label="Bestand" name="assetkbitstat"/> - <stat_bar label="Ebenen" name="layerskbitstat"/> - <stat_bar label="Tatsächlicher Eingang" name="actualinkbitstat"/> - <stat_bar label="Tatsächlicher Ausgang" name="actualoutkbitstat"/> + <stat_bar label="Objekte" name="objectdatareceived"/> + <stat_bar label="Textur" name="texturedatareceived"/> + <stat_bar label="Asset" name="assetudpdatareceived"/> + <stat_bar label="Ebenen" name="layersdatareceived"/> + <stat_bar label="Tatsächlicher Eingang" name="messagedatain"/> + <stat_bar label="Tatsächlicher Ausgang" name="messagedataout"/> <stat_bar label="Ausstehende Vorgänge im VFS" name="vfspendingoperations"/> </stat_view> </stat_view> @@ -64,8 +84,8 @@ <stat_bar label="Paketausgang" name="simoutpps"/> <stat_bar label="Ausstehende Downloads" name="simpendingdownloads"/> <stat_bar label="Ausstehende Uploads" name="simpendinguploads"/> - <stat_bar label="Gesamtanzahl „Unacked" Bytes" name="simtotalunackedbytes"/> - <stat_view label="Zeit (ms)" name="simperf"> + <stat_bar label="Gesamtmenge unbestätigter Daten" name="simtotalunackedbytes"/> + <stat_view label="Zeit" name="simperf"> <stat_bar label="Gesamtzeit Frame" name="simframemsec"/> <stat_bar label="Netto-Zeit" name="simnetmsec"/> <stat_bar label="Physik-Zeit" name="simsimphysicsmsec"/> @@ -74,7 +94,7 @@ <stat_bar label="Bilder-Zeit" name="simimagesmsec"/> <stat_bar label="Skript-Zeit" name="simscriptmsec"/> <stat_bar label="Verbleib. Zeit" name="simsparemsec"/> - <stat_view label="Zeitdetails (ms)" name="timedetails"> + <stat_view label="Zeitdetails" name="timedetails"> <stat_bar label="Physik-Schritt" name="simsimphysicsstepmsec"/> <stat_bar label="Phys. Formen aktualisieren" name="simsimphysicsshapeupdatemsec"/> <stat_bar label="Physik – andere" name="simsimphysicsothermsec"/> diff --git a/indra/newview/skins/default/xui/de/menu_avatar_icon.xml b/indra/newview/skins/default/xui/de/menu_avatar_icon.xml index c036cf5515..ad47f1d37d 100755 --- a/indra/newview/skins/default/xui/de/menu_avatar_icon.xml +++ b/indra/newview/skins/default/xui/de/menu_avatar_icon.xml @@ -2,6 +2,7 @@ <menu name="Avatar Icon Menu"> <menu_item_call label="Profil anzeigen" name="Show Profile"/> <menu_item_call label="IM senden..." name="Send IM"/> + <menu_item_call label="Teleport anfordern" name="Request Teleport"/> <menu_item_call label="Freund hinzufügen..." name="Add Friend"/> <menu_item_call label="Freund entfernen..." name="Remove Friend"/> </menu> diff --git a/indra/newview/skins/default/xui/de/menu_inventory.xml b/indra/newview/skins/default/xui/de/menu_inventory.xml index cd2fca313e..d838f736f8 100755 --- a/indra/newview/skins/default/xui/de/menu_inventory.xml +++ b/indra/newview/skins/default/xui/de/menu_inventory.xml @@ -70,6 +70,7 @@ <menu_item_call label="Wiedergeben/Abspielen" name="Sound Play"/> <menu_item_call label="SLurl kopieren" name="url_copy"/> <menu_item_call label="Landmarken-Info" name="About Landmark"/> + <menu_item_call label="Auf Karte anzeigen" name="show_on_map"/> <menu_item_call label="Inworld abspielen" name="Animation Play"/> <menu_item_call label="Lokal abspielen" name="Animation Audition"/> <menu_item_call label="Instant Message senden" name="Send Instant Message"/> diff --git a/indra/newview/skins/default/xui/de/menu_login.xml b/indra/newview/skins/default/xui/de/menu_login.xml index 62358cc5a8..329ea20179 100755 --- a/indra/newview/skins/default/xui/de/menu_login.xml +++ b/indra/newview/skins/default/xui/de/menu_login.xml @@ -5,7 +5,15 @@ <menu_item_call label="[APP_NAME] schließen" name="Quit"/> </menu> <menu label="Hilfe" name="Help"> - <menu_item_call label="[SECOND_LIFE]-Hilfe" name="Second Life Help"/> + <menu_item_call label="Anweisungen..." name="How To"/> + <menu_item_call label="Kurzanleitung" name="Quickstart"/> + <menu_item_call label="Knowledge Base" name="Knowledge Base"/> + <menu_item_call label="Wiki" name="Wiki"/> + <menu_item_call label="Community-Foren" name="Community Forums"/> + <menu_item_call label="Support-Portal" name="Support portal"/> + <menu_item_call label="[SECOND_LIFE]-Neuigkeiten" name="Second Life News"/> + <menu_item_call label="[SECOND_LIFE]-Blogs" name="Second Life Blogs"/> + <menu_item_call label="Fehler melden" name="Report Bug"/> <menu_item_call label="INFO ÃœBER [APP_NAME]" name="About Second Life"/> </menu> <menu_item_check label="Debug-Menü anzeigen" name="Show Debug Menu"/> diff --git a/indra/newview/skins/default/xui/de/menu_teleport_history_item.xml b/indra/newview/skins/default/xui/de/menu_teleport_history_item.xml index ff8fb0b181..1d7e3059c0 100755 --- a/indra/newview/skins/default/xui/de/menu_teleport_history_item.xml +++ b/indra/newview/skins/default/xui/de/menu_teleport_history_item.xml @@ -2,5 +2,5 @@ <context_menu name="Teleport History Item Context Menu"> <menu_item_call label="Teleportieren" name="Teleport"/> <menu_item_call label="Weitere Informationen" name="More Information"/> - <menu_item_call label="In Zwischenablage kopieren" name="CopyToClipboard"/> + <menu_item_call label="SLurl kopieren" name="CopyToClipboard"/> </context_menu> diff --git a/indra/newview/skins/default/xui/de/menu_viewer.xml b/indra/newview/skins/default/xui/de/menu_viewer.xml index be5d4891d7..8e15e128a6 100755 --- a/indra/newview/skins/default/xui/de/menu_viewer.xml +++ b/indra/newview/skins/default/xui/de/menu_viewer.xml @@ -72,11 +72,11 @@ <menu_item_check label="Menü „Erweitert“" name="Show Advanced Menu"/> </menu> <menu label="Sonne" name="Sun"> - <menu_item_call label="Sonnenaufgang" name="Sunrise"/> - <menu_item_call label="Mittag" name="Noon"/> - <menu_item_call label="Sonnenuntergang" name="Sunset"/> - <menu_item_call label="Mitternacht" name="Midnight"/> - <menu_item_call label="Regionseinstellungen verwenden" name="Use Region Settings"/> + <menu_item_check label="Sonnenaufgang" name="Sunrise"/> + <menu_item_check label="Mittag" name="Noon"/> + <menu_item_check label="Sonnenuntergang" name="Sunset"/> + <menu_item_check label="Mitternacht" name="Midnight"/> + <menu_item_check label="Regionseinstellungen verwenden" name="Use Region Settings"/> </menu> <menu label="Umwelt-Editor" name="Environment Editor"> <menu_item_call label="Umwelt-Einstellungen..." name="Environment Settings"/> @@ -165,8 +165,6 @@ </menu> <menu label="Hilfe" name="Help"> <menu_item_call label="Anweisungen..." name="How To"/> - <menu_item_call label="[SECOND_LIFE]-Hilfe" name="Second Life Help"/> - <menu_item_call label="Benutzerhandbuch" name="User’s guide"/> <menu_item_call label="Knowledge Base" name="Knowledge Base"/> <menu_item_call label="Wiki" name="Wiki"/> <menu_item_call label="Community-Foren" name="Community Forums"/> @@ -188,6 +186,7 @@ <menu label="Performance Tools" name="Performance Tools"> <menu_item_call label="Lag-Anzeige" name="Lag Meter"/> <menu_item_check label="Statistikleiste" name="Statistics Bar"/> + <menu_item_call label="Statistiken zum Laden von Szenen" name="Scene Load Statistics"/> <menu_item_check label="Zuggewicht für Avatare anzeigen" name="Avatar Rendering Cost"/> </menu> <menu label="Hervorhebung und Sichtbarkeit" name="Highlighting and Visibility"> @@ -250,6 +249,7 @@ <menu_item_check label="Schnelle Timer" name="Fast Timers"/> <menu_item_check label="Speicher" name="Memory"/> <menu_item_check label="Szenestatistiken" name="Scene Statistics"/> + <menu_item_check label="Monitor zum Laden von Szenen" name="Scene Loading Monitor"/> <menu_item_call label="Debug-Konsole für Texturabruffehler" name="Texture Fetch Debug Console"/> <menu_item_call label="Info zu Region in Fenster Fehler beseitigen" name="Region Info to Debug Console"/> <menu_item_call label="Gruppeninfo in Fenster Fehler beseitigen" name="Group Info to Debug Console"/> @@ -286,6 +286,7 @@ <menu_item_check label="Periodic Slow Frame" name="Periodic Slow Frame"/> <menu_item_check label="Frame-Test" name="Frame Test"/> <menu_item_call label="Rahmenprofil" name="Frame Profile"/> + <menu_item_call label="Benchmark" name="Benchmark"/> </menu> <menu label="Metadaten darstellen" name="Render Metadata"> <menu_item_check label="Bonding Boxes" name="Bounding Boxes"/> @@ -304,6 +305,7 @@ <menu_item_check label="Konstruktionswarteschlange" name="Build Queue"/> <menu_item_check label="Lichter" name="Lights"/> <menu_item_check label="Gelenkpunkte" name="Collision Skeleton"/> + <menu_item_check label="Gelenke" name="Joints"/> <menu_item_check label="Raycast" name="Raycast"/> <menu_item_check label="Windvektoren" name="Wind Vectors"/> <menu_item_check label="Komplexität beim Rendern" name="rendercomplexity"/> @@ -336,6 +338,7 @@ <menu_item_check label="Angehängte Lichter rendern" name="Render Attached Lights"/> <menu_item_check label="Angehängte Partikel rendern" name="Render Attached Particles"/> <menu_item_check label="Leucht-Objekte schweben lassen" name="Hover Glow Objects"/> + <menu_item_call label="Cache sofort leeren" name="Cache Clear"/> </menu> <menu label="Netzwerk" name="Network"> <menu_item_check label="Agent pausieren" name="AgentPause"/> @@ -368,7 +371,6 @@ <menu_item_call label="Fokus ausgeben" name="Dump Focus Holder"/> <menu_item_call label="Ausgewählte Objektinfo drucken" name="Print Selected Object Info"/> <menu_item_call label="Agent-Info drucken" name="Print Agent Info"/> - <menu_item_check label="Regions-Debug-Konsole" name="Region Debug Console"/> <menu_item_check label="Fehler in SelectMgr beseitigen" name="Debug SelectMgr"/> <menu_item_check label="Fehler in Klicks beseitigen" name="Debug Clicks"/> <menu_item_check label="Debug-Ansichten" name="Debug Views"/> diff --git a/indra/newview/skins/default/xui/de/notifications.xml b/indra/newview/skins/default/xui/de/notifications.xml index b3ae98f633..c728402e89 100755 --- a/indra/newview/skins/default/xui/de/notifications.xml +++ b/indra/newview/skins/default/xui/de/notifications.xml @@ -114,13 +114,13 @@ Weitere Informationen finden Sie im [[MARKETPLACE_IMPORTS_URL] Fehlerprotokoll]. <usetemplate name="okbutton" yestext="OK"/> </notification> <notification name="OutboxImportFailed"> - Ãœbertragung fehlgeschlagen + Ãœbertragung fehlgeschlagen mit Fehler „[ERROR_CODE]“ Aufgrund eines System- oder Netzwerkfehlers wurden keine Ordner an den Marktplatz übertragen. Versuchen Sie es später erneut. <usetemplate name="okbutton" yestext="OK"/> </notification> <notification name="OutboxInitFailed"> - Marktplatzinitialisierung fehlgeschlagen + Marktplatzinitialisierung fehlgeschlagen mit Fehler „[ERROR_CODE]“ Marktplatzinitialisierung aufgrund eines System- oder Netzwerkfehlers fehlgeschlagen. Versuchen Sie es später erneut. <usetemplate name="okbutton" yestext="OK"/> @@ -1744,6 +1744,10 @@ womit Sie die Höchstgrenze von [LIMIT] überschreiten. Sind Sie sicher, dass Sie zu <nolink>[LOCATION]</nolink> teleportieren möchten? <usetemplate ignoretext="Bestätigen, dass ich zu einer Landmarke teleportieren möchte" name="okcancelignore" notext="Abbrechen" yestext="Teleportieren"/> </notification> + <notification name="TeleportViaSLAPP"> + Möchten Sie wirklich zu <nolink>[LOCATION]</nolink> teleportieren? + <usetemplate ignoretext="Bestätigen, dass ich via SLAPP teleportieren möchte" name="okcancelignore" notext="Abbrechen" yestext="Teleportieren"/> + </notification> <notification name="TeleportToPick"> Nach [PICK] teleportieren? <usetemplate ignoretext="Bestätigen, dass ich zu einer Position in Auswahl teleportieren möchte" name="okcancelignore" notext="Abbrechen" yestext="Teleportieren"/> @@ -1954,6 +1958,9 @@ Tausende Regionen werden verändert und der Spaceserver wird dadurch stark belas <notification name="ProblemAddingEstateManager"> Es gibt Probleme beim Hinzufügen eines neuen Grundbesitzverwalters. Bei mindestens einem Grundbesitz ist die Verwalterliste voll. </notification> + <notification name="ProblemAddingEstateBanManager"> + Grundbesitzer oder Grundstücksverwalter kann nicht auf die Bannliste gesetzt werden. + </notification> <notification name="ProblemAddingEstateGeneric"> Problem beim Hinzufügen zu dieser Grundbesitzliste. Bei mindestens einem Grundbesitz ist die Liste voll. </notification> @@ -3038,13 +3045,13 @@ Details finden Sie in der Protokolldatei. Regionsfähigkeit „[CAPABILITY]“ konnte nicht abgerufen werden. </notification> <notification name="ShareItemsConfirmation"> - Möchten Sie wirklich die folgenden Objekte: + Möchten Sie wirklich die folgenden Artikel: <nolink>[ITEMS]</nolink> -für folgende Einwohner freigeben: +mit den folgenden Einwohnern teilen: -[RESIDENTS] +<nolink>[RESIDENTS]</nolink> <usetemplate name="okcancelbuttons" notext="Abbrechen" yestext="OK"/> </notification> <notification name="ShareFolderConfirmation"> @@ -3056,7 +3063,7 @@ Möchten Sie wirklich die folgenden Artikel: mit den folgenden Einwohnern teilen: -[RESIDENTS] +<nolink>[RESIDENTS]</nolink> <usetemplate name="okcancelbuttons" notext="Abbrechen" yestext="OK"/> </notification> <notification name="ItemsShared"> @@ -3510,10 +3517,6 @@ Warten Sie kurz und versuchen Sie es noch einmal. <notification name="EjectComingSoon"> Sie nicht hier nicht mehr zugelassen und haben [EJECT_TIME] Sekunden Zeit, um zu gehen. </notification> - <notification name="NoEnterServerFull"> - Sie können diese Region nicht betreten, da -der Server voll ist. - </notification> <notification name="SaveBackToInvDisabled"> Erneutes Speichern im Inventar ist deaktiviert. </notification> @@ -3703,6 +3706,9 @@ der Server voll ist. <notification name="LinkFailedTooMuchPhysics"> Objekt verwendet zu viele Physikressourcen – seine Dynamik wurde deaktiviert. </notification> + <notification name="EstateManagerFailedllTeleportHome"> + Das Objekt „[OBJECT_NAME]“ auf [SLURL] kann Grundstücksverwalter nicht nach Hause teleportieren. + </notification> <notification name="TeleportedHomeByObjectOnParcel"> Sie wurden vom Objekt „[OBJECT_NAME]“ auf der Parzelle „[PARCEL_NAME]“ nach Hause teleportiert </notification> @@ -3893,13 +3899,18 @@ der Server voll ist. Auswahl enthält nicht genügend gemietete Parzellen zum Zusammenlegen. </notification> <notification name="CantDivideLandMultipleParcelsSelected"> - Land kann nicht geteilt werden.\nMehr als eine Parzelle ist ausgewählt.\nWählen Sie ein kleineres Stück Land aus. + Land kann nicht geteilt werden. +Mehr als eine Parzelle ist ausgewählt. +Wählen Sie eine kleinere Landfläche aus. </notification> <notification name="CantDivideLandCantFindParcel"> - Land kann nicht geteilt werden.\nParzelle nicht auffindbar.\nMelden Sie das Problem über „Hilfe“ -> „Fehler melden“... + Land kann nicht geteilt werden. +Parzelle kann nicht gefunden werden. +Bitte melden Sie den Fehler über „Hilfe“ -> „Fehler melden“. </notification> <notification name="CantDivideLandWholeParcelSelected"> - Land kann nicht geteilt werden. Die gesamte Parzelle ist ausgewählt.\nWählen Sie ein kleineres Stück Land aus. + Land kann nicht geteilt werden. Die gesamte Parzelle ist ausgewählt. +Wählen Sie eine kleinere Landfläche aus. </notification> <notification name="LandHasBeenDivided"> Land wurde geteilt. @@ -4039,4 +4050,8 @@ der Server voll ist. Dateien können nicht verschoben werden. Vorheriger Pfad wurde wiederhergestellt. <usetemplate ignoretext="Dateien können nicht verschoben werden. Vorheriger Pfad wurde wiederhergestellt." name="okignore" yestext="OK"/> </notification> + <notification name="ChatHistoryIsBusyAlert"> + Chatverlaufsdatei ist noch mit vorheriger Operation beschäftigt. Versuchen Sie es in ein paar Minuten noch einmal oder chatten Sie mit einer anderen Person. + <usetemplate name="okbutton" yestext="OK"/> + </notification> </notifications> diff --git a/indra/newview/skins/default/xui/de/panel_group_info_sidetray.xml b/indra/newview/skins/default/xui/de/panel_group_info_sidetray.xml index bf4d44af52..1775394ecd 100755 --- a/indra/newview/skins/default/xui/de/panel_group_info_sidetray.xml +++ b/indra/newview/skins/default/xui/de/panel_group_info_sidetray.xml @@ -20,7 +20,7 @@ <layout_panel name="group_accordions"> <accordion name="groups_accordion"> <accordion_tab name="group_general_tab" title="Allgemein"/> - <accordion_tab name="group_roles_tab" title="Rollen"/> + <accordion_tab name="group_roles_tab" title="Rollen und Mitglieder"/> <accordion_tab name="group_notices_tab" title="Mitteilungen"/> <accordion_tab name="group_land_tab" title="Land/Kapital"/> </accordion> diff --git a/indra/newview/skins/default/xui/de/panel_group_roles.xml b/indra/newview/skins/default/xui/de/panel_group_roles.xml index f297d32a91..20f61817a3 100755 --- a/indra/newview/skins/default/xui/de/panel_group_roles.xml +++ b/indra/newview/skins/default/xui/de/panel_group_roles.xml @@ -21,6 +21,7 @@ um mehrere Mitglieder auszuwählen. <name_list.columns label="Mitglied" name="name" relative_width="0.30"/> <name_list.columns label="Ãœbereignung" name="donated" relative_width="0.33"/> <name_list.columns label="Status" name="online"/> + <name_list.columns label="Titel" name="title"/> </name_list> <button label="Einladen" name="member_invite"/> <button label="Hinauswerfen" name="member_eject"/> diff --git a/indra/newview/skins/default/xui/de/panel_postcard_message.xml b/indra/newview/skins/default/xui/de/panel_postcard_message.xml index 6eeef8af71..b34dc776de 100755 --- a/indra/newview/skins/default/xui/de/panel_postcard_message.xml +++ b/indra/newview/skins/default/xui/de/panel_postcard_message.xml @@ -9,13 +9,11 @@ <text name="subject_label"> Betreff: </text> - <line_editor label="Betreff hier eingeben." name="subject_form"/> + <line_editor label="Betreff hier rein." name="subject_form"/> <text name="msg_label"> Nachricht: </text> <text_editor name="msg_form"> Nachricht hier eingeben. </text_editor> - <button label="Abbrechen" name="cancel_btn"/> - <button label="Senden" name="send_btn"/> </panel> diff --git a/indra/newview/skins/default/xui/de/panel_postcard_settings.xml b/indra/newview/skins/default/xui/de/panel_postcard_settings.xml index c1a1c0cc46..e6d3b7de66 100755 --- a/indra/newview/skins/default/xui/de/panel_postcard_settings.xml +++ b/indra/newview/skins/default/xui/de/panel_postcard_settings.xml @@ -7,17 +7,10 @@ <combo_box.item label="1024x768" name="1024x768"/> <combo_box.item label="Benutzerdefiniert" name="Custom"/> </combo_box> - <layout_stack name="postcard_image_params_ls"> - <layout_panel name="postcard_image_size_lp"> - <spinner label="Breite" name="postcard_snapshot_width"/> - <spinner label="Höhe" name="postcard_snapshot_height"/> - <check_box label="Seitenverhältnis beibehalten" name="postcard_keep_aspect_check"/> - </layout_panel> - <layout_panel name="postcard_image_format_quality_lp"> - <slider label="Bildqualität" name="image_quality_slider"/> - <text name="image_quality_level"> - ([QLVL]) - </text> - </layout_panel> - </layout_stack> + <spinner label="Breite x Höhe" name="postcard_snapshot_width"/> + <check_box label="Seitenverhältnis beibehalten" name="postcard_keep_aspect_check"/> + <slider label="Qualität" name="image_quality_slider"/> + <text name="image_quality_level"> + ([QLVL]) + </text> </panel> diff --git a/indra/newview/skins/default/xui/de/panel_region_debug.xml b/indra/newview/skins/default/xui/de/panel_region_debug.xml index a03a0b8b7b..d4b0ed907e 100755 --- a/indra/newview/skins/default/xui/de/panel_region_debug.xml +++ b/indra/newview/skins/default/xui/de/panel_region_debug.xml @@ -7,11 +7,8 @@ unbekannt </text> <check_box label="Skripts deaktivieren" name="disable_scripts_check" tool_tip="Skripts in dieser Region deaktivieren"/> - <button label="?" name="disable_scripts_help"/> <check_box label="Kollisionen deaktivieren" name="disable_collisions_check" tool_tip="Nicht-Avatar-Kollisionen in dieser Region deaktivieren"/> - <button label="?" name="disable_collisions_help"/> <check_box label="Physik deaktivieren" name="disable_physics_check" tool_tip="Physik in dieser Region deaktivieren"/> - <button label="?" name="disable_physics_help"/> <button label="Ãœbernehmen" name="apply_btn"/> <text name="objret_text_lbl" width="110"> Objekt zurückgeben @@ -31,10 +28,8 @@ <check_box label="In jeder Region auf diesem Grundbesitz" name="return_estate_wide" tool_tip="Es werden die Objekte in allen Regionen dieses Grundbesitzes zurückgegeben"/> <button label="Zurückgeben" name="return_btn" width="90"/> <button label="Top-Kollisionsobjekte..." name="top_colliders_btn" tool_tip="Liste der Objekte mit den meisten potenziellen Kollisionen"/> - <button label="?" name="top_colliders_help"/> - <button label="Top-Skripts..." name="top_scripts_btn" tool_tip="Zeigt eine Liste der Objekte an, die die meiste Zeit benötigen, um Skripts auszuführen."/> - <button label="?" name="top_scripts_help"/> <button label="Region neu starten" name="restart_btn" tool_tip="2-Minuten-Countdown und Region neu starten"/> - <button label="?" name="restart_help"/> + <button label="Top-Skripts..." name="top_scripts_btn" tool_tip="Zeigt eine Liste der Objekte an, die die meiste Zeit benötigen, um Skripts auszuführen."/> <button label="Neustart abbrechen" name="cancel_restart_btn" tool_tip="Regionsneustart abbrechen"/> + <button label="Regions-Debug-Konsole" name="region_debug_console_btn" tool_tip="Regions-Debug-Konsole öffnen"/> </panel> diff --git a/indra/newview/skins/default/xui/de/panel_region_general.xml b/indra/newview/skins/default/xui/de/panel_region_general.xml index f383be992b..6324e90029 100755 --- a/indra/newview/skins/default/xui/de/panel_region_general.xml +++ b/indra/newview/skins/default/xui/de/panel_region_general.xml @@ -20,12 +20,12 @@ </text> <check_box label="Terraformen blockieren" name="block_terraform_check"/> <check_box label="Fliegen blockieren" name="block_fly_check"/> + <check_box label="Ãœberfliegen von Parzellen blockieren" name="block_fly_over_check" tool_tip="Zugangsprüfungen nach oben ausdehnen, um Ãœberfliegen einer Parzelle zu verhindern"/> <check_box label="Schaden zulassen" name="allow_damage_check"/> <check_box label="Stoßen beschränken" name="restrict_pushobject"/> <check_box label="Landwiederverkauf zulassen" name="allow_land_resell_check"/> <check_box label="Landumverteilung zulassen" name="allow_parcel_changes_check"/> <check_box label="Landanzeige in Suche blockieren" name="block_parcel_search_check" tool_tip="Diese Region und ihre Parzellen in Suchergebnissen anzeigen"/> - <check_box label="Netzobjekte zulassen" name="mesh_rez_enabled_check" tool_tip="Anderen das Rezzen von Netzobjekten in dieser Region gestatten"/> <spinner label="Avatar-Limit" name="agent_limit_spin"/> <spinner label="Objektbonus" name="object_bonus_spin"/> <text label="Inhaltseinstufung" name="access_text"> diff --git a/indra/newview/skins/default/xui/de/panel_snapshot_inventory.xml b/indra/newview/skins/default/xui/de/panel_snapshot_inventory.xml index 10827ce6f2..d13f56ed3d 100755 --- a/indra/newview/skins/default/xui/de/panel_snapshot_inventory.xml +++ b/indra/newview/skins/default/xui/de/panel_snapshot_inventory.xml @@ -1,7 +1,7 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <panel name="panel_snapshot_inventory"> <text name="title"> - In meinem Inventar speichern + Inventar </text> <text name="hint_lbl"> Das Speichern eines Bilds in Ihrem Inventar kostet [UPLOAD_COST] L$. Um das Bild als Textur zu speichern, wählen Sie eines der quadratischen Formate aus. @@ -13,8 +13,7 @@ <combo_box.item label="Groß (512x512)" name="Large(512x512)"/> <combo_box.item label="Benutzerdefiniert" name="Custom"/> </combo_box> - <spinner label="Breite" name="inventory_snapshot_width"/> - <spinner label="Höhe" name="inventory_snapshot_height"/> + <spinner label="Breite x Höhe" name="inventory_snapshot_width"/> <check_box label="Seitenverhältnis beibehalten" name="inventory_keep_aspect_check"/> <button label="Abbrechen" name="cancel_btn"/> <button label="Speichern" name="save_btn"/> diff --git a/indra/newview/skins/default/xui/de/panel_snapshot_local.xml b/indra/newview/skins/default/xui/de/panel_snapshot_local.xml index 3aeae80388..53e78ba290 100755 --- a/indra/newview/skins/default/xui/de/panel_snapshot_local.xml +++ b/indra/newview/skins/default/xui/de/panel_snapshot_local.xml @@ -1,7 +1,7 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <panel name="panel_snapshot_local"> <text name="title"> - Auf meinem Computer speichern + Festplatte </text> <combo_box label="Auflösung" name="local_size_combo"> <combo_box.item label="Aktuelles Fenster" name="CurrentWindow"/> @@ -13,24 +13,17 @@ <combo_box.item label="1600x1200" name="1600x1200"/> <combo_box.item label="Benutzerdefiniert" name="Custom"/> </combo_box> - <layout_stack name="local_image_params_ls"> - <layout_panel name="local_image_size_lp"> - <spinner label="Breite" name="local_snapshot_width"/> - <spinner label="Höhe" name="local_snapshot_height"/> - <check_box label="Seitenverhältnis beibehalten" name="local_keep_aspect_check"/> - </layout_panel> - <layout_panel name="local_image_format_quality_lp"> - <combo_box label="Format" name="local_format_combo"> - <combo_box.item label="PNG (verlustfrei)" name="PNG"/> - <combo_box.item label="JPEG" name="JPEG"/> - <combo_box.item label="BMP (verlustfrei)" name="BMP"/> - </combo_box> - <slider label="Bildqualität" name="image_quality_slider"/> - <text name="image_quality_level"> - ([QLVL]) - </text> - </layout_panel> - </layout_stack> + <spinner label="Breite x Höhe" name="local_snapshot_width"/> + <check_box label="Seitenverhältnis beibehalten" name="local_keep_aspect_check"/> + <combo_box label="Format" name="local_format_combo"> + <combo_box.item label="PNG (verlustfrei)" name="PNG"/> + <combo_box.item label="JPEG" name="JPEG"/> + <combo_box.item label="BMP (verlustfrei)" name="BMP"/> + </combo_box> + <slider label="Qualität" name="image_quality_slider"/> + <text name="image_quality_level"> + ([QLVL]) + </text> <button label="Abbrechen" name="cancel_btn"/> <flyout_button label="Speichern" name="save_btn" tool_tip="Bild als Datei speichern"> <flyout_button.item label="Speichern" name="save_item"/> diff --git a/indra/newview/skins/default/xui/de/panel_snapshot_options.xml b/indra/newview/skins/default/xui/de/panel_snapshot_options.xml index e1d8a5dc6d..e2ba5bd4db 100755 --- a/indra/newview/skins/default/xui/de/panel_snapshot_options.xml +++ b/indra/newview/skins/default/xui/de/panel_snapshot_options.xml @@ -1,7 +1,10 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <panel name="panel_snapshot_options"> - <button label="In meinem Profil posten" name="save_to_profile_btn"/> - <button label="E-Mail" name="save_to_email_btn"/> - <button label="In meinem Inventar speichern ([AMOUNT] L$)" name="save_to_inventory_btn"/> - <button label="Auf meinem Computer speichern" name="save_to_computer_btn"/> + <button label="Ins Profil hochladen" name="save_to_profile_btn"/> + <button label="Per E-Mail senden" name="save_to_email_btn"/> + <button label="Im Inventar speichern" name="save_to_inventory_btn"/> + <button label="Auf Festplatte speichern" name="save_to_computer_btn"/> + <button label="Zu Facebook hochladen" name="send_to_facebook_btn"/> + <button label="Zu Twitter hochladen" name="send_to_twitter_btn"/> + <button label="Zu Flickr hochladen" name="send_to_flickr_btn"/> </panel> diff --git a/indra/newview/skins/default/xui/de/panel_snapshot_postcard.xml b/indra/newview/skins/default/xui/de/panel_snapshot_postcard.xml index c9afe86d7f..ead56f2885 100755 --- a/indra/newview/skins/default/xui/de/panel_snapshot_postcard.xml +++ b/indra/newview/skins/default/xui/de/panel_snapshot_postcard.xml @@ -12,6 +12,10 @@ <text name="title"> E-Mail </text> - <button label="Nachricht" name="message_btn"/> - <button label="Einstellungen" name="settings_btn"/> + <tab_container name="postcard_tabs"> + <panel name="panel_postcard_message" label="Nachricht"/> + <panel name="panel_postcard_settings" label="Einstellungen"/> + </tab_container> + <button name="cancel_btn" label="Abbrechen"/> + <button name="send_btn" label="Absenden"/> </panel> diff --git a/indra/newview/skins/default/xui/de/panel_snapshot_profile.xml b/indra/newview/skins/default/xui/de/panel_snapshot_profile.xml index 8d1c52dea8..0f21edd1b6 100755 --- a/indra/newview/skins/default/xui/de/panel_snapshot_profile.xml +++ b/indra/newview/skins/default/xui/de/panel_snapshot_profile.xml @@ -1,28 +1,21 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <panel name="panel_snapshot_profile"> <text name="title"> - In meinem Profil posten + Profil </text> <combo_box label="Auflösung" name="profile_size_combo"> - <combo_box.item label="Aktuelles Fenster" name="CurrentWindow"/> - <combo_box.item label="640x480" name="640x480"/> - <combo_box.item label="800x600" name="800x600"/> - <combo_box.item label="1024x768" name="1024x768"/> - <combo_box.item label="Benutzerdefiniert" name="Custom"/> + <combo_box.item label="Aktuelles Fenster" name="CurrentWindow"/> + <combo_box.item label="640x480" name="640x480"/> + <combo_box.item label="800x600" name="800x600"/> + <combo_box.item label="1024x768" name="1024x768"/> + <combo_box.item label="Benutzerdefiniert" name="Custom"/> </combo_box> - <layout_stack name="profile_image_params_ls"> - <layout_panel name="profile_image_size_lp"> - <spinner label="Breite" name="profile_snapshot_width"/> - <spinner label="Höhe" name="profile_snapshot_height"/> - <check_box label="Seitenverhältnis beibehalten" name="profile_keep_aspect_check"/> - </layout_panel> - <layout_panel name="profile_image_metadata_lp"> - <text name="caption_label"> - Bildunterschrift: - </text> - <check_box initial_value="true" label="Ort einschließen" name="add_location_cb"/> - </layout_panel> - </layout_stack> + <spinner label="Breite x Höhe" name="profile_snapshot_width"/> + <check_box label="Seitenverhältnis beibehalten" name="profile_keep_aspect_check"/> + <text name="caption_label"> + Bildunterschrift: + </text> + <check_box initial_value="true" label="Ort einschließen" name="add_location_cb"/> <button label="Abbrechen" name="cancel_btn"/> <button label="Posten" name="post_btn"/> </panel> diff --git a/indra/newview/skins/default/xui/de/sidepanel_inventory.xml b/indra/newview/skins/default/xui/de/sidepanel_inventory.xml index 2585c5dc90..94c3c75254 100755 --- a/indra/newview/skins/default/xui/de/sidepanel_inventory.xml +++ b/indra/newview/skins/default/xui/de/sidepanel_inventory.xml @@ -28,12 +28,12 @@ <button label="Profil" name="info_btn" tool_tip="Objektprofil anzeigen"/> </layout_panel> <layout_panel name="share_btn_lp"> - <button label="Teilen" name="share_btn" tool_tip="Inventarobjekt teilen"/> + <button label="Freigeben" name="share_btn" tool_tip="Inventarobjekt freigeben"/> </layout_panel> <layout_panel name="shop_btn_lp"> <button label="Einkaufen" name="shop_btn" tool_tip="Marktplatz-Webseite öffnen"/> <button label="Anziehen" name="wear_btn" tool_tip="Ausgewähltes Outfit tragen"/> - <button label="Wiedergeben" name="play_btn"/> + <button label="Spielen" name="play_btn"/> <button label="Teleportieren" name="teleport_btn" tool_tip="Zu ausgewähltem Standort teleportieren"/> </layout_panel> </layout_stack> diff --git a/indra/newview/skins/default/xui/de/strings.xml b/indra/newview/skins/default/xui/de/strings.xml index 082febd709..95657ba14e 100755 --- a/indra/newview/skins/default/xui/de/strings.xml +++ b/indra/newview/skins/default/xui/de/strings.xml @@ -37,6 +37,45 @@ <string name="StartupRequireDriverUpdate"> Grafikinitialisierung fehlgeschlagen. Bitte aktualisieren Sie Ihren Grafiktreiber. </string> + <string name="AboutHeader"> + [APP_NAME] [VIEWER_VERSION_0].[VIEWER_VERSION_1].[VIEWER_VERSION_2] ([VIEWER_VERSION_3]) [BUILD_DATE] [BUILD_TIME] ([CHANNEL]) +[[VIEWER_RELEASE_NOTES_URL] [ReleaseNotes]] + </string> + <string name="AboutCompiler"> + Kompiliert mit [COMPILER], Version [COMPILER_VERSION] + </string> + <string name="AboutPosition"> + Sie befinden sich an [POSITION_LOCAL_0,number,1], [POSITION_LOCAL_1,number,1], [POSITION_LOCAL_2,number,1] in [REGION] auf <nolink>[HOSTNAME]</nolink> ([HOSTIP]) +SLURL: <nolink>[SLURL]</nolink> +(globale Koordinaten [POSITION_0,number,1], [POSITION_1,number,1], [POSITION_2,number,1]) +[SERVER_VERSION] +[SERVER_RELEASE_NOTES_URL] + </string> + <string name="AboutSystem"> + CPU: [CPU] +Speicher: [MEMORY_MB] MB +Betriebssystemversion: [OS_VERSION] +Grafikkartenhersteller: [GRAPHICS_CARD_VENDOR] +Grafikkarte: [GRAPHICS_CARD] + </string> + <string name="AboutDriver"> + Windows-Grafiktreiberversion: [GRAPHICS_DRIVER_VERSION] + </string> + <string name="AboutLibs"> + OpenGL-Version: [OPENGL_VERSION] + +libcurl-Version: [LIBCURL_VERSION] +J2C-Decoderversion: [J2C_VERSION] +Audiotreiberversion: [AUDIO_DRIVER_VERSION] +Qt-Webkit-Version: [QT_WEBKIT_VERSION] +Voice-Server-Version: [VOICE_VERSION] + </string> + <string name="AboutTraffic"> + Paketverlust: [PACKETS_LOST,number,0]/[PACKETS_IN,number,0] ([PACKETS_PCT,number,1] %) + </string> + <string name="ErrorFetchingServerReleaseNotesURL"> + Fehler beim Abrufen der URL für die Server-Versionshinweise. + </string> <string name="ProgressRestoring"> Wird wiederhergestellt... </string> @@ -937,15 +976,15 @@ Warten Sie kurz und versuchen Sie dann noch einmal, sich anzumelden. <string name="ControlYourCamera"> Kamerasteuerung </string> + <string name="TeleportYourAgent"> + Sie teleportieren + </string> <string name="NotConnected"> Nicht verbunden </string> <string name="AgentNameSubst"> (Sie) </string> - <string name="TeleportYourAgent"> - Sie teleportieren - </string> <string name="JoinAnExperience"> Bei einem Erlebnis mitmachen </string> @@ -1267,8 +1306,7 @@ Warten Sie kurz und versuchen Sie dann noch einmal, sich anzumelden. <string name="InventoryNoTexture"> Sie haben keine Kopie dieser Textur in Ihrem Inventar. </string> - <string name="Unconstrained">keines</string> - <string name="InventoryInboxNoItems"> + <string name="InventoryInboxNoItems"> Einkäufe aus dem Marktplatz erscheinen hier. Sie können diese dann zur Verwendung in Ihr Inventar ziehen. </string> <string name="MarketplaceURL"> @@ -1300,6 +1338,18 @@ Warten Sie kurz und versuchen Sie dann noch einmal, sich anzumelden. <string name="InventoryOutboxNoItems"> Ziehen Sie Ordner in dien Bereich und klicken Sie auf „In Marktplatz übertragen“, um sie im [[MARKETPLACE_DASHBOARD_URL] Marktplatz] zum Verkauf anzubieten. </string> + <string name="InventoryOutboxInitializingTitle"> + Marktplatz wird initialisiert. + </string> + <string name="InventoryOutboxInitializing"> + Wir greifen auf Ihr Konto im [[MARKETPLACE_CREATE_STORE_URL] Marktplatz-Laden] zu. + </string> + <string name="InventoryOutboxErrorTitle"> + Marktplatzfehler. + </string> + <string name="InventoryOutboxError"> + Der [[MARKETPLACE_CREATE_STORE_URL] Marktplatz-Laden] gibt Fehler zurück. + </string> <string name="Marketplace Error None"> Keine Fehler </string> @@ -1327,6 +1377,9 @@ Warten Sie kurz und versuchen Sie dann noch einmal, sich anzumelden. <string name="Open landmarks"> Landmarken öffnen </string> + <string name="Unconstrained"> + Variabel + </string> <string name="no_transfer" value=" (kein Transferieren)"/> <string name="no_modify" value=" (kein Bearbeiten)"/> <string name="no_copy" value=" (kein Kopieren)"/> @@ -1727,6 +1780,9 @@ Warten Sie kurz und versuchen Sie dann noch einmal, sich anzumelden. <string name="CompileQueueDownloadedCompiling"> Heruntergeladen, wird kompiliert </string> + <string name="CompileQueueServiceUnavailable"> + Kein Skriptkompilierungsdienst verfügbar + </string> <string name="CompileQueueScriptNotFound"> Skript wurde auf Server nicht gefunden. </string> diff --git a/indra/newview/skins/default/xui/en/floater_facebook.xml b/indra/newview/skins/default/xui/en/floater_facebook.xml index 4535b9084e..2ea34fb751 100644 --- a/indra/newview/skins/default/xui/en/floater_facebook.xml +++ b/indra/newview/skins/default/xui/en/floater_facebook.xml @@ -2,7 +2,6 @@ <floater positioning="cascading" can_close="true" - can_resize="true" help_topic="floater_facebook" layout="topleft" name="floater_facebook" @@ -10,23 +9,15 @@ single_instance="true" reuse_instance="true" title="POST TO FACEBOOK" - min_height="501" + min_height="462" min_width="304" - height="482" - width="304"> - <panel - height="482" - width="304" - visible="true" - name="background" - follows="all" - top="0" - left="0"> + height="462" + width="272"> <tab_container name="tabs" tab_group="1" - tab_min_width="70" - tab_height="30" + tab_min_width="64" + tab_height="21" tab_position="top" top="7" height="437" @@ -57,23 +48,19 @@ follows="all" label="FRIENDS" name="panel_facebook_friends"/> - <panel + <!--<panel filename="panel_facebook_account.xml" class="llfacebookaccountpanel" follows="all" label="ACCOUNT" - name="panel_facebook_account"/> + name="panel_facebook_account"/>--> </tab_container> - <panel - name="connection_status_panel" - follows="left|bottom|right" - height="24"> <text name="connection_error_text" type="string" follows="left|bottom|right" - top="5" - left="9" + bottom="-5" + left="10" width="250" height="20" wrap="true" @@ -88,14 +75,14 @@ height="24" width="24" name="connection_loading_indicator" - top="2" - left="9" + top_delta="-2" + left="10" visible="true"/> <text name="connection_loading_text" type="string" follows="left|bottom|right" - top="5" + top_delta="2" left_pad="5" width="250" height="20" @@ -106,6 +93,4 @@ font="SansSerif"> Loading... </text> - </panel> - </panel> </floater> diff --git a/indra/newview/skins/default/xui/en/floater_flickr.xml b/indra/newview/skins/default/xui/en/floater_flickr.xml index 1a9ffd0489..24de3ddd8d 100644 --- a/indra/newview/skins/default/xui/en/floater_flickr.xml +++ b/indra/newview/skins/default/xui/en/floater_flickr.xml @@ -10,11 +10,11 @@ single_instance="true" reuse_instance="true" title="UPLOAD TO FLICKR" - height="622" - width="304"> + height="590" + width="272"> <panel - height="622" - width="304" + height="590" + width="272" visible="true" name="background" follows="all" @@ -24,10 +24,11 @@ name="tabs" tab_group="1" tab_min_width="70" - tab_height="30" + tab_height="21" tab_position="top" top="7" - height="577" + height="555" + follows="all" halign="center" use_highlighting_on_hover="true"> <panel @@ -51,8 +52,8 @@ name="connection_error_text" type="string" follows="left|bottom|right" - top="5" - left="9" + bottom="-5" + left="10" width="250" height="20" wrap="true" @@ -67,14 +68,14 @@ height="24" width="24" name="connection_loading_indicator" - top="2" - left="9" + top_delta="-2" + left="10" visible="true"/> <text name="connection_loading_text" type="string" follows="left|bottom|right" - top="5" + top_delta="2" left_pad="5" width="250" height="20" 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 dad81aca4f..c64ee5565a 100755 --- a/indra/newview/skins/default/xui/en/floater_im_session.xml +++ b/indra/newview/skins/default/xui/en/floater_im_session.xml @@ -209,7 +209,7 @@ default_tab_group="3" tab_group="2" name="right_part_holder" - min_width="230"> + min_width="207"> <layout_stack animate="true" follows="all" diff --git a/indra/newview/skins/default/xui/en/floater_inventory_view_finder.xml b/indra/newview/skins/default/xui/en/floater_inventory_view_finder.xml index c86ed595a7..17bc818cc1 100755 --- a/indra/newview/skins/default/xui/en/floater_inventory_view_finder.xml +++ b/indra/newview/skins/default/xui/en/floater_inventory_view_finder.xml @@ -2,7 +2,7 @@ <floater legacy_header_height="18" can_minimize="false" - height="408" + height="440" layout="topleft" name="Inventory Finder" help_topic="inventory_finder" @@ -95,36 +95,36 @@ width="126" /> <icon height="16" - image_name="Inv_Mesh" + image_name="Inv_Notecard" layout="topleft" left="8" mouse_opaque="true" - name="icon_mesh" - top="142" + name="icon_notecard" + top="122" width="16" /> <check_box height="16" - label="Meshes" + label="Notecards" layout="topleft" left_pad="2" - name="check_mesh" + name="check_notecard" top_delta="0" width="126" /> <icon height="16" - image_name="Inv_Notecard" + image_name="Inv_Mesh" layout="topleft" left="8" mouse_opaque="true" - name="icon_notecard" - top="122" + name="icon_mesh" + top="142" width="16" /> <check_box height="16" - label="Notecards" + label="Meshes" layout="topleft" left_pad="2" - name="check_notecard" + name="check_mesh" top_delta="0" width="126" /> <icon @@ -223,25 +223,33 @@ top="262" width="100" /> <button - follows="left|top" height="20" label="None" label_selected="None" - layout="topleft" left_delta="0" name="None" - top_pad="4" + left_pad="10" width="100" /> <check_box height="16" label="Always show folders" layout="topleft" - left_delta="0" + left="8" name="check_show_empty" - top_pad="4" + top_pad="6" width="144" /> + <view_border + bevel_style="none" + follows="top|left" + height="0" + layout="topleft" + left="10" + name="horiz_separator" + top_pad="8" + width="260"/> <check_box height="16" + top="324" label="Since Logoff" layout="topleft" left_delta="0" @@ -257,36 +265,74 @@ layout="topleft" left_delta="0" name="- OR -" - top_delta="16" + top="342" width="144"> - OR - </text> + <radio_group + height="16" + layout="topleft" + name="date_search_direction" + top="360" + left="8" + width="270"> + <radio_item + label="Newer than" + layout="topleft" + name="newer" + top_pad="6" + left="0" /> + <radio_item + label="Older than" + layout="topleft" + name="older" + top_delta="0" + left="120" /> + </radio_group> <spinner follows="left|top" height="16" increment="1" initial_value="0" - label="Hours Ago" - label_width="64" layout="topleft" left_delta="0" max_val="240000" name="spin_hours_ago" top_pad="4" - width="144" /> + width="64" /> + <text + type="string" + length="1" + follows="left|top" + height="16" + layout="topleft" + left_pad="3" + top_delta="4" + width="80"> + Hours + </text> <spinner follows="left|top" height="16" increment="1" initial_value="0" - label="Days Ago" - label_width="64" layout="topleft" - left_delta="0" max_val="10000" name="spin_days_ago" top_pad="4" - width="144" /> + left="8" + width="64" /> + <text + type="string" + length="1" + follows="left|top" + height="16" + layout="topleft" + left_pad="3" + top_delta="4" + width="80"> + Days + </text> <button follows="top|right" height="20" @@ -295,6 +341,6 @@ layout="topleft" name="Close" right="-6" - top="382" + top="406" width="76" /> </floater> diff --git a/indra/newview/skins/default/xui/en/floater_lagmeter.xml b/indra/newview/skins/default/xui/en/floater_lagmeter.xml new file mode 100644 index 0000000000..b24c745bdd --- /dev/null +++ b/indra/newview/skins/default/xui/en/floater_lagmeter.xml @@ -0,0 +1,336 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<floater + legacy_header_height="18" + height="170" + layout="topleft" + name="floater_lagmeter" + help_topic="floater_lagmeter" + save_rect="true" + title="LAG METER" + width="350"> + <floater.string + name="max_title_msg"> + Lag Meter + </floater.string> + <floater.string + name="max_width_px"> + 360 + </floater.string> + <floater.string + name="min_title_msg"> + Lag + </floater.string> + <floater.string + name="min_width_px"> + 90 + </floater.string> + <floater.string + name="client_text_msg"> + Client + </floater.string> + <floater.string + name="client_frame_rate_critical_fps"> + 10 + </floater.string> + <floater.string + name="client_frame_rate_warning_fps"> + 15 + </floater.string> + <floater.string + name="client_frame_time_window_bg_msg"> + Normal, window in background + </floater.string> + <floater.string + name="client_frame_time_critical_msg"> + Client frame rate below [CLIENT_FRAME_RATE_CRITICAL] + </floater.string> + <floater.string + name="client_frame_time_warning_msg"> + Client frame rate between [CLIENT_FRAME_RATE_CRITICAL] and [CLIENT_FRAME_RATE_WARNING] + </floater.string> + <floater.string + name="client_frame_time_normal_msg"> + Normal + </floater.string> + <floater.string + name="client_draw_distance_cause_msg"> + Possible cause: Draw distance set too high + </floater.string> + <floater.string + name="client_texture_loading_cause_msg"> + Possible cause: Images loading + </floater.string> + <floater.string + name="client_texture_memory_cause_msg"> + Possible cause: Too many images in memory + </floater.string> + <floater.string + name="client_complex_objects_cause_msg"> + Possible cause: Too many complex objects in scene + </floater.string> + <floater.string + name="network_text_msg"> + Network + </floater.string> + <floater.string + name="network_packet_loss_critical_pct"> + 10 + </floater.string> + <floater.string + name="network_packet_loss_warning_pct"> + 5 + </floater.string> + <floater.string + name="network_packet_loss_critical_msg"> + Connection is dropping over [NETWORK_PACKET_LOSS_CRITICAL]% of packets + </floater.string> + <floater.string + name="network_packet_loss_warning_msg"> + Connection is dropping [NETWORK_PACKET_LOSS_WARNING]%-[NETWORK_PACKET_LOSS_CRITICAL]% of packets + </floater.string> + <floater.string + name="network_performance_normal_msg"> + Normal + </floater.string> + <floater.string + name="network_ping_critical_ms"> + 600 + </floater.string> + <floater.string + name="network_ping_warning_ms"> + 300 + </floater.string> + <floater.string + name="network_ping_critical_msg"> + Connection ping time is over [NETWORK_PING_CRITICAL] ms + </floater.string> + <floater.string + name="network_ping_warning_msg"> + Connection ping time is [NETWORK_PING_WARNING]-[NETWORK_PING_CRITICAL] ms + </floater.string> + <floater.string + name="network_packet_loss_cause_msg"> + Possible bad connection or 'Bandwidth' pref too high. + </floater.string> + <floater.string + name="network_ping_cause_msg"> + Possible bad connection or file-sharing app. + </floater.string> + <floater.string + name="server_text_msg"> + Server + </floater.string> + <floater.string + name="server_frame_rate_critical_fps"> + 20 + </floater.string> + <floater.string + name="server_frame_rate_warning_fps"> + 30 + </floater.string> + <floater.string + name="server_single_process_max_time_ms"> + 20 + </floater.string> + <floater.string + name="server_frame_time_critical_msg"> + Simulator framerate below [SERVER_FRAME_RATE_CRITICAL] + </floater.string> + <floater.string + name="server_frame_time_warning_msg"> + Simulator framerate between [SERVER_FRAME_RATE_CRITICAL] and [SERVER_FRAME_RATE_WARNING] + </floater.string> + <floater.string + name="server_frame_time_normal_msg"> + Normal + </floater.string> + <floater.string + name="server_physics_cause_msg"> + Possible Cause: Too many physical objects + </floater.string> + <floater.string + name="server_scripts_cause_msg"> + Possible Cause: Too many scripted objects + </floater.string> + <floater.string + name="server_net_cause_msg"> + Possible Cause: Too much network traffic + </floater.string> + <floater.string + name="server_agent_cause_msg"> + Possible Cause: Too many moving people in region + </floater.string> + <floater.string + name="server_images_cause_msg"> + Possible Cause: Too many image calculations + </floater.string> + <floater.string + name="server_generic_cause_msg"> + Possible Cause: Simulator load too heavy + </floater.string> + <floater.string + name="smaller_label"> + >> + </floater.string> + <floater.string + name="bigger_label"> + << + </floater.string> + <button + follows="top|left" + height="16" + image_selected="lag_status_good.tga" + image_unselected="lag_status_good.tga" + layout="topleft" + left="8" + name="client_lagmeter" + tab_stop="false" + tool_tip="Client lag status" + top="24" + width="16" /> + <text + type="string" + length="1" + follows="left|top" + font="SansSerif" + height="16" + layout="topleft" + left_pad="3" + name="client" + top_delta="0" + width="128"> + Client + </text> + <text + invisiblity_control="LagMeterShrunk" + type="string" + length="1" + bottom="40" + follows="left|top" + font="SansSerif" + height="16" + layout="topleft" + left="110" + name="client_text" + right="-10"> + Normal + </text> + <text + invisiblity_control="LagMeterShrunk" + bottom="56" + follows="left|top" + height="16" + layout="topleft" + left="40" + name="client_lag_cause" + right="-32" /> + <button + follows="top|left" + height="16" + image_selected="lag_status_good.tga" + image_unselected="lag_status_good.tga" + layout="topleft" + left="8" + name="network_lagmeter" + tab_stop="false" + tool_tip="Network lag status" + top="64" + width="16" /> + <text + type="string" + length="1" + follows="left|top" + font="SansSerif" + height="16" + layout="topleft" + left_pad="3" + name="network" + top_delta="0" + width="128"> + Network + </text> + <text + invisiblity_control="LagMeterShrunk" + type="string" + length="1" + bottom="80" + follows="left|top" + font="SansSerif" + height="16" + layout="topleft" + left="110" + name="network_text" + right="-10"> + Normal + </text> + <text + invisiblity_control="LagMeterShrunk" + bottom="96" + follows="left|top" + height="16" + layout="topleft" + left="40" + name="network_lag_cause" + right="-32" /> + <button + follows="top|left" + height="16" + image_selected="lag_status_good.tga" + image_unselected="lag_status_good.tga" + layout="topleft" + left="8" + name="server_lagmeter" + tab_stop="false" + tool_tip="Server lag status" + top="104" + width="16" /> + <text + type="string" + length="1" + follows="left|top" + font="SansSerif" + height="16" + layout="topleft" + left_pad="3" + name="server" + top_delta="0" + width="60"> + Server + </text> + <text + invisiblity_control="LagMeterShrunk" + type="string" + length="1" + bottom="120" + follows="left|top" + font="SansSerif" + height="16" + layout="topleft" + left="110" + name="server_text" + right="-10"> + Normal + </text> + <text + invisiblity_control="LagMeterShrunk" + bottom="136" + follows="left|top" + height="16" + layout="topleft" + left="40" + name="server_lag_cause" + right="-32" /> + <button + follows="left|top" + height="20" + label=">>" + layout="topleft" + left="10" + name="minimize" + tool_tip="Toggle floater size" + top_delta="24" + width="40"> + <button.commit_callback + function="LagMeter.ClickShrink" /> + </button> +</floater> diff --git a/indra/newview/skins/default/xui/en/floater_openobject.xml b/indra/newview/skins/default/xui/en/floater_openobject.xml index f526970ad0..bf6e0c4917 100755 --- a/indra/newview/skins/default/xui/en/floater_openobject.xml +++ b/indra/newview/skins/default/xui/en/floater_openobject.xml @@ -6,7 +6,7 @@ height="350" layout="topleft" min_height="160" - min_width="270" + min_width="280" name="objectcontents" help_topic="objectcontents" save_rect="true" @@ -40,10 +40,10 @@ <button follows="bottom|left" height="23" - label="Copy To Inventory" - label_selected="Copy To Inventory" + label="Copy to inventory" + label_selected="Copy to inventory" layout="topleft" - left="20" + left="15" name="copy_to_inventory_button" tab_group="1" top_pad="5" @@ -54,12 +54,12 @@ <button follows="bottom|left" height="23" - label="Copy And Wear" - label_selected="Copy And Wear" + label="Copy and add to outfit" + label_selected="Copy and add to outfit" layout="topleft" - left_pad="10" + left_pad="5" name="copy_and_wear_button" - width="120"> + width="135"> <button.commit_callback function="OpenObject.MoveAndWear" /> </button> diff --git a/indra/newview/skins/default/xui/en/floater_report_abuse.xml b/indra/newview/skins/default/xui/en/floater_report_abuse.xml index c50c8c02fe..af62c7a9bc 100755 --- a/indra/newview/skins/default/xui/en/floater_report_abuse.xml +++ b/indra/newview/skins/default/xui/en/floater_report_abuse.xml @@ -253,7 +253,7 @@ name="Land__Encroachment__Objects_textures" value="63" /> <combo_box.item - label="Wagering or Gambling" + label="Gaming Policy Violation" name="Wagering_gambling" value="67" /> </combo_box> diff --git a/indra/newview/skins/default/xui/en/floater_snapshot.xml b/indra/newview/skins/default/xui/en/floater_snapshot.xml index 771035b40d..76adaad57c 100755 --- a/indra/newview/skins/default/xui/en/floater_snapshot.xml +++ b/indra/newview/skins/default/xui/en/floater_snapshot.xml @@ -3,15 +3,18 @@ positioning="cascading" legacy_header_height="18" can_minimize="true" + can_resize="false" can_close="true" - height="500" + height="455" layout="topleft" name="Snapshot" + single_instance="true" help_topic="snapshot" save_rect="true" save_visibility="false" title="SNAPSHOT" - width="470"> + width="624" + min_height="455"> <floater.string name="unknown"> unknown @@ -57,11 +60,11 @@ Saved to Computer! </string> <string - name="facebook_failed_str"> + name="facebook_failed_str"> Failed to upload image to your Facebook timeline. </string> <string - name="profile_failed_str"> + name="profile_failed_str"> Failed to upload image to your Profile Feed. </string> <string @@ -78,35 +81,231 @@ </string> <button follows="left|top" - height="23" - image_overlay="TabIcon_Close_Off" + height="25" + image_overlay="Refresh_Off" + image_hover_unselected="Toolbar_Middle_Over" + image_selected="Toolbar_Middle_Selected" + image_unselected="Toolbar_Middle_Off" + image_overlay_alignment="left" + imgoverlay_label_space="5" + pad_bottom="0" + halign="left" layout="topleft" - left="236" - name="advanced_options_btn" - tool_tip="Advanced options" - top="25" - width="23" /> - <ui_ctrl - height="160" - width="250" - layout="topleft" - name="thumbnail_placeholder" - top="50" - follows="left|top" - left="10"> + left="10" + label="REFRESH" + name="new_snapshot_btn" + top_pad="26" + width="167" /> + <button + follows="left|top" + control_name="AdvanceSnapshot" + invisibility_control="AdvanceSnapshot" + height="25" + is_toggle="true" + layout="topleft" + image_hover_unselected="Toolbar_Middle_Over" + image_selected="Toolbar_Middle_Off" + image_unselected="Toolbar_Middle_Off" + image_overlay="Conv_toolbar_expand" + name="retract_btn" + left_pad="1" + top_delta="0" + width="31" /> + <button + follows="left|top" + control_name="AdvanceSnapshot" + visibility_control="AdvanceSnapshot" + height="25" + is_toggle="true" + layout="topleft" + image_overlay="Conv_toolbar_collapse" + image_hover_unselected="Toolbar_Middle_Over" + image_selected="Toolbar_Middle_Off" + image_unselected="Toolbar_Middle_Off" + name="extend_btn" + left_delta="0" + top_delta="0" + width="31" /> + <panel + height="154" + layout="topleft" + follows="top|left" + left="0" + name="advanced_options_panel" + top_pad="-6" + width="210"> + <view_border + bevel_style="in" + follows="left|top|right" + height="1" + left="10" + layout="topleft" + name="advanced_options_hr" + right="-1" + top_pad="5" + /> + <text + type="string" + length="1" + follows="left|top" + height="13" + layout="topleft" + left="10" + name="layer_type_label" + top_pad="10" + width="100"> + Capture: + </text> + <combo_box + follows="left|top|right" + height="23" + label="Image Layers" + layout="topleft" + left="30" + name="layer_types" + right="-2"> + <combo_box.item + label="Colors" + name="Colors" + value="colors" /> + <combo_box.item + label="Depth" + name="Depth" + value="depth" /> + </combo_box> + <check_box + label="Interface" + layout="topleft" + left="30" + height="16" + top_pad="8" + width="180" + name="ui_check" /> + <check_box + label="HUDs" + layout="topleft" + height="16" + left="30" + top_pad="1" + width="180" + name="hud_check" /> + <check_box + label="Freeze frame (fullscreen)" + layout="topleft" + height="16" + left="10" + top_pad="1" + width="180" + name="freeze_frame_check" /> + <check_box + label="Auto-refresh" + layout="topleft" + height="16" + left="10" + top_pad="1" + width="180" + name="auto_snapshot_check" /> + <text + type="string" + length="1" + follows="left|top" + height="13" + layout="topleft" + left="10" + name="filter_list_label" + top_pad="10" + width="50"> + Filter: + </text> + <combo_box + control_name="PhotoFilters" + follows="left|right|top" + name="filters_combobox" + tool_tip="Image filters" + top_delta="-3" + left="50" + right="-1" + height="21" + width="135"> + <combo_box.item + label="No Filter" + name="NoFilter" + value="NoFilter" /> + </combo_box> + <view_border + bevel_style="in" + follows="left|top|right" + height="1" + left="10" + layout="topleft" + name="advanced_options_hr" + right="-1" + top_pad="7" + /> + </panel> + <panel_container + follows="left|top" + height="230" + layout="topleft" + left="0" + name="panel_container" + default_panel_name="panel_snapshot_options" + top_pad="10" + width="215"> + <panel + class="llpanelsnapshotoptions" + filename="panel_snapshot_options.xml" + follows="all" + layout="topleft" + left="0" + name="panel_snapshot_options" + top="0" /> <panel - background_visible="true" - bg_alpha_color="0.9 1 0.9 1" + class="llpanelsnapshotprofile" + follows="all" + layout="topleft" + name="panel_snapshot_profile" + filename="panel_snapshot_profile.xml" /> + <panel + class="llpanelsnapshotpostcard" + follows="all" + layout="topleft" + name="panel_snapshot_postcard" + filename="panel_snapshot_postcard.xml" /> + <panel + class="llpanelsnapshotinventory" + follows="all" + layout="topleft" + name="panel_snapshot_inventory" + filename="panel_snapshot_inventory.xml" /> + <panel + class="llpanelsnapshotlocal" + follows="all" + layout="topleft" + name="panel_snapshot_local" + filename="panel_snapshot_local.xml" /> + </panel_container> + <view_border + bevel_style="in" + follows="left|top" + height="1" + left="10" + layout="topleft" + name="status_hr" + width="199" + top_pad="-16"/> + <panel + background_visible="false" follows="left|top" font="SansSerifLarge" halign="center" height="20" layout="topleft" - left="0" + left="10" length="1" name="succeeded_panel" - right="-1" - top="0" + width="198" + top_pad="1" type="string" visible="false"> <text @@ -119,7 +318,7 @@ length="1" name="succeeded_lbl" right="-1" - text_color="0.2 0.5 0.2 1" + text_color="0.2 0.85 0.2 1" top="4" translate="false" type="string"> @@ -127,18 +326,17 @@ </text> </panel> <panel - background_visible="true" - bg_alpha_color="1 0.9 0.9 1" + background_visible="false" follows="left|top" font="SansSerifLarge" halign="center" height="20" layout="topleft" - left_delta="0" + left="10" length="1" name="failed_panel" - right="-1" - top="0" + width="198" + top_delta="0" type="string" visible="false"> <text @@ -151,7 +349,7 @@ length="1" name="failed_lbl" right="-1" - text_color="0.5 0.2 0.2 1" + text_color="0.95 0.4 0.4 1" top="4" translate="false" type="string"> @@ -160,51 +358,39 @@ </panel> <loading_indicator follows="left|top" - height="48" + height="24" layout="topleft" name="working_indicator" - left="101" - top="46" + left="10" + top_delta="0" visible="false" - width="48" /> + width="24" /> <text - follows="left|top|right" + follows="left|top" font="SansSerifBold" height="14" layout="topleft" - left="5" + left_pad="3" length="1" - halign="center" + halign="left" name="working_lbl" - right="-5" - top="98" + top_delta="5" translate="false" type="string" visible="false" - width="130"> + width="162"> Working </text> - <button - follows="left|top" - height="22" - image_overlay="Refresh_Off" - layout="topleft" - left="20" - name="new_snapshot_btn" - bottom="-20" - visible="false" - width="22" /> <text follows="left|top" font="SansSerifBold" halign="left" height="18" layout="topleft" - left_pad="10" + left="10" length="1" name="refresh_lbl" - right="-5" - text_color="red" + text_color="0.95 0.4 0.4 1" top_delta="0" translate="false" type="string" @@ -212,37 +398,44 @@ width="130"> Refresh to save. </text> - </ui_ctrl> + <ui_ctrl + layout="topleft" + name="thumbnail_placeholder" + top="23" + left="215" + width="400" + height="400" + follows="top|left"/> <view_border bevel_style="in" height="21" - width="250" layout="topleft" name="img_info_border" - top_pad="3" - follows="left|top" - left_delta="0" - /> + top_pad="0" + right="-10" + follows="left|top|right" + left_delta="0"/> <text type="string" font="SansSerifSmall" length="1" - follows="left|top" + follows="left|top|right" height="14" layout="topleft" - left_delta="5" + left="220" + right="-20" halign="left" name="image_res_text" top_delta="5" - width="100"> - [WIDTH] x [HEIGHT] px + width="200"> + [WIDTH]px (width) x [HEIGHT]px (height) </text> <text - follows="left|top" + follows="right|top" font="SansSerifSmall" height="14" layout="topleft" - left="200" + left="-65" length="1" halign="right" name="file_size_label" @@ -251,161 +444,4 @@ width="50"> [SIZE] KB </text> - <panel_container - follows="left|top" - height="260" - layout="topleft" - left="0" - name="panel_container" - default_panel_name="panel_snapshot_options" - top_pad="10" - width="270"> - <panel - class="llpanelsnapshotoptions" - filename="panel_snapshot_options.xml" - follows="all" - layout="topleft" - left="0" - name="panel_snapshot_options" - top="0" /> - <panel - class="llpanelsnapshotprofile" - follows="all" - layout="topleft" - name="panel_snapshot_profile" - filename="panel_snapshot_profile.xml" /> - <panel - class="llpanelsnapshotpostcard" - follows="all" - layout="topleft" - name="panel_snapshot_postcard" - filename="panel_snapshot_postcard.xml" /> - <panel - class="llpanelsnapshotinventory" - follows="all" - layout="topleft" - name="panel_snapshot_inventory" - filename="panel_snapshot_inventory.xml" /> - <panel - class="llpanelsnapshotlocal" - follows="all" - layout="topleft" - name="panel_snapshot_local" - filename="panel_snapshot_local.xml" /> - </panel_container> - <panel - height="295" - layout="topleft" - left="270" - name="advanced_options_panel" - top="20" - width="200"> - <text - type="string" - font="SansSerifSmall" - length="1" - follows="left|top" - height="14" - layout="topleft" - left="10" - halign="left" - name="advanced_options_label" - right="-10" - top="10"> - ADVANCED OPTIONS - </text> - <view_border - bevel_style="in" - follows="left|top|right" - height="1" - left="10" - layout="topleft" - name="advanced_options_hr" - right="-10" - top_pad="5" - /> - <text - type="string" - length="1" - follows="left|top" - height="13" - layout="topleft" - left="10" - name="layer_type_label" - top_pad="10" - width="50"> - Capture: - </text> - <combo_box - follows="left|top|right" - height="23" - label="Image Layers" - layout="topleft" - left="30" - name="layer_types" - right="-10"> - <combo_box.item - label="Colors" - name="Colors" - value="colors" /> - <combo_box.item - label="Depth" - name="Depth" - value="depth" /> - </combo_box> - <check_box - label="Interface" - layout="topleft" - left="30" - top_pad="10" - width="180" - name="ui_check" /> - <check_box - label="HUDs" - layout="topleft" - left="30" - top_pad="10" - width="180" - name="hud_check" /> - <check_box - label="Freeze frame (fullscreen)" - layout="topleft" - left="10" - top_pad="8" - width="180" - name="freeze_frame_check" /> - <check_box - label="Auto-refresh" - layout="topleft" - left="10" - top_pad="8" - width="180" - name="auto_snapshot_check" /> - <text - type="string" - length="1" - follows="left|top" - height="13" - layout="topleft" - left="10" - name="filter_list_label" - top_pad="10" - width="50"> - Filter: - </text> - <combo_box - control_name="PhotoFilters" - follows="left|right|top" - name="filters_combobox" - tool_tip="Image filters" - top_pad="8" - left="30" - height="21" - width="135"> - <combo_box.item - label="No Filter" - name="NoFilter" - value="NoFilter" /> - </combo_box> - </panel> </floater> diff --git a/indra/newview/skins/default/xui/en/floater_stats.xml b/indra/newview/skins/default/xui/en/floater_stats.xml index bee570d5d0..c9a6e1c9c3 100755 --- a/indra/newview/skins/default/xui/en/floater_stats.xml +++ b/indra/newview/skins/default/xui/en/floater_stats.xml @@ -267,7 +267,9 @@ stat="simsimskippedsilhouettesteps" unit_label="/sec"/> <stat_bar name="simsimpctsteppedcharacters" + label="Characters Updated" stat="simsimpctsteppedcharacters" + unit_label="%" decimal_digits="1"/> </stat_view> <stat_bar name="siminpps" diff --git a/indra/newview/skins/default/xui/en/floater_top_objects.xml b/indra/newview/skins/default/xui/en/floater_top_objects.xml index 0b71177345..36ceddd305 100755 --- a/indra/newview/skins/default/xui/en/floater_top_objects.xml +++ b/indra/newview/skins/default/xui/en/floater_top_objects.xml @@ -38,6 +38,18 @@ name="none_descriptor"> None found. </floater.string> + <floater.string + name="URLs"> + URLs + </floater.string> + <floater.string + name="memory"> + Memory (KB) + </floater.string> + + + + <text type="string" length="1" @@ -82,7 +94,7 @@ name="parcel" width="120" /> <scroll_list.columns - label="Time" + label="Date" name="time" width="130" /> <scroll_list.columns diff --git a/indra/newview/skins/default/xui/en/floater_twitter.xml b/indra/newview/skins/default/xui/en/floater_twitter.xml index aa5bfce2e9..3e1a91e58d 100644 --- a/indra/newview/skins/default/xui/en/floater_twitter.xml +++ b/indra/newview/skins/default/xui/en/floater_twitter.xml @@ -10,21 +10,13 @@ single_instance="true" reuse_instance="true" title="TWITTER" - height="502" - width="304"> - <panel - height="502" - width="304" - visible="true" - name="background" - follows="all" - top="0" - left="0"> + height="462" + width="272"> <tab_container name="tabs" tab_group="1" tab_min_width="70" - tab_height="30" + tab_height="21" tab_position="top" top="7" height="457" @@ -43,17 +35,13 @@ label="ACCOUNT" name="panel_twitter_account"/> </tab_container> - <panel - name="connection_status_panel" - follows="left|bottom|right" - height="24"> <text name="connection_error_text" type="string" follows="left|bottom|right" - top="5" - left="9" - width="250" + bottom="-5" + left="10" + width="252" height="20" wrap="true" halign="left" @@ -67,16 +55,16 @@ height="24" width="24" name="connection_loading_indicator" - top="2" - left="9" + top_delta="-2" + left="10" visible="true"/> <text name="connection_loading_text" type="string" follows="left|bottom|right" - top="5" + top_delta="2" left_pad="5" - width="250" + width="223" height="20" wrap="true" halign="left" @@ -85,6 +73,4 @@ font="SansSerif"> Loading... </text> - </panel> - </panel> </floater> diff --git a/indra/newview/skins/default/xui/en/menu_inventory_gear_default.xml b/indra/newview/skins/default/xui/en/menu_inventory_gear_default.xml index d2519a5aa4..06d0b849a3 100755 --- a/indra/newview/skins/default/xui/en/menu_inventory_gear_default.xml +++ b/indra/newview/skins/default/xui/en/menu_inventory_gear_default.xml @@ -63,7 +63,7 @@ <menu_item_separator layout="topleft" /> <menu_item_call - label="Show Filters" + label="Show Filters..." layout="topleft" name="show_filters"> <on_click diff --git a/indra/newview/skins/default/xui/en/menu_viewer.xml b/indra/newview/skins/default/xui/en/menu_viewer.xml index c8fcda9858..de441983d0 100755 --- a/indra/newview/skins/default/xui/en/menu_viewer.xml +++ b/indra/newview/skins/default/xui/en/menu_viewer.xml @@ -251,8 +251,7 @@ function="Floater.Visible" parameter="nearby_chat" /> <menu_item_check.on_click - function="Floater.ToggleOrBringToFront" - parameter="nearby_chat" /> + function="Communicate.NearbyChat"/> </menu_item_check> <menu_item_check label="Speak" @@ -377,13 +376,16 @@ function="SideTray.PanelPeopleTab" parameter="nearby_panel" /> </menu_item_check> - <menu_item_call + <menu_item_check label="Block List" name="Block List"> - <menu_item_call.on_click + <menu_item_check.on_check + function="SideTray.CheckPanelPeopleTab" + parameter="blocked_panel" /> + <menu_item_check.on_click function="SideTray.PanelPeopleTab" parameter="blocked_panel" /> - </menu_item_call> + </menu_item_check> <menu_item_separator/> <menu_item_check name="Do Not Disturb" @@ -1222,7 +1224,7 @@ name="Grid Options" shortcut="control|shift|B"> <menu_item_call.on_click - function="Floater.Show" + function="Floater.Toggle" parameter="build_options" /> <menu_item_call.on_enable function="Tools.EnableToolNotPie" /> diff --git a/indra/newview/skins/default/xui/en/mime_types.xml b/indra/newview/skins/default/xui/en/mime_types.xml index a585069faa..f5f2223330 100755 --- a/indra/newview/skins/default/xui/en/mime_types.xml +++ b/indra/newview/skins/default/xui/en/mime_types.xml @@ -101,6 +101,27 @@ true </allow_looping> </widgetset> + <widgetset name="none"> + <label name="none_label"> + No Content + </label> + <default_type> + none/none + </default_type> + <icon> + icn_media_web.tga + </icon> + <tooltip name="none_tooltip"> + No media here + </tooltip> + <playtip name="none_playtip" /> + <allow_resize> + false + </allow_resize> + <allow_looping> + false + </allow_looping> + </widgetset> <scheme name="rtsp"> <label name="rtsp_label"> Real Time Streaming diff --git a/indra/newview/skins/default/xui/en/mime_types_linux.xml b/indra/newview/skins/default/xui/en/mime_types_linux.xml index e95b371d00..84aeaf3b54 100755 --- a/indra/newview/skins/default/xui/en/mime_types_linux.xml +++ b/indra/newview/skins/default/xui/en/mime_types_linux.xml @@ -101,6 +101,27 @@ true </allow_looping> </widgetset> + <widgetset name="none"> + <label name="none_label"> + No Content + </label> + <default_type> + none/none + </default_type> + <icon> + icn_media_web.tga + </icon> + <tooltip name="none_tooltip"> + No media here + </tooltip> + <playtip name="none_playtip" /> + <allow_resize> + false + </allow_resize> + <allow_looping> + false + </allow_looping> + </widgetset> <scheme name="rtsp"> <label name="rtsp_label"> Real Time Streaming diff --git a/indra/newview/skins/default/xui/en/mime_types_mac.xml b/indra/newview/skins/default/xui/en/mime_types_mac.xml index 7931e55c0a..90230f12dd 100755 --- a/indra/newview/skins/default/xui/en/mime_types_mac.xml +++ b/indra/newview/skins/default/xui/en/mime_types_mac.xml @@ -101,6 +101,27 @@ true </allow_looping> </widgetset> + <widgetset name="none"> + <label name="none_label"> + No Content + </label> + <default_type> + none/none + </default_type> + <icon> + icn_media_web.tga + </icon> + <tooltip name="none_tooltip"> + No media here + </tooltip> + <playtip name="none_playtip" /> + <allow_resize> + false + </allow_resize> + <allow_looping> + false + </allow_looping> + </widgetset> <scheme name="rtsp"> <label name="rtsp_label"> Real Time Streaming diff --git a/indra/newview/skins/default/xui/en/notifications.xml b/indra/newview/skins/default/xui/en/notifications.xml index 772d81c448..f1d34a1449 100755 --- a/indra/newview/skins/default/xui/en/notifications.xml +++ b/indra/newview/skins/default/xui/en/notifications.xml @@ -169,6 +169,16 @@ No tutorial is currently available. <notification icon="alertmodal.tga" + name="GenericAlertOK" + type="alertmodal"> +[MESSAGE] + <usetemplate + name="okbutton" + yestext="OK"/> + </notification> + + <notification + icon="alertmodal.tga" name="BadInstallation" type="alertmodal"> An error occurred while updating [APP_NAME]. Please [http://get.secondlife.com download the latest version] of the Viewer. @@ -1417,6 +1427,14 @@ Graphics Quality can be raised in Preferences > Graphics. The region [REGION] does not allow terraforming. <tag>fail</tag> </notification> + + <notification + icon="alertmodal.tga" + name="ParcelNoTerraforming" + type="notify"> +You are not allowed to terraform parcel [PARCEL]. + <tag>fail</tag> + </notification> <notification icon="alertmodal.tga" @@ -3797,6 +3815,28 @@ You have left the group [group_name]. </notification> <notification + icon="aler.tga" + name="GroupDepartError" + type="alert"> +Unable to leave group: [reason]. + <tag>reason</tag> + <usetemplate + name="okbutton" + yestext="OK"/> + </notification> + + <notification + icon="alert.tga" + name="GroupDepart" + type="alert"> +You have left the group [group_name]. + <tag>group_name</tag> + <usetemplate + name="okbutton" + yestext="OK"/> + </notification> + + <notification icon="alert.tga" name="ConfirmKick" type="alert"> @@ -4631,6 +4671,17 @@ The region you're trying to visit contains [REGIONMATURITY] content, but your cu <notification icon="alertmodal.tga" + name="RegionTPSpecialUsageBlocked" + type="alertmodal"> + <tag>fail</tag> + Unable to enter region. '[REGION_NAME]' is a Skill Gaming Region, and you must meet certain criteria in order to enter. For details, please review the [http://wiki.secondlife.com/wiki/Linden_Lab_Official:Skill_Gaming_in_Second_Life Skill Gaming FAQ]. + <usetemplate + name="okbutton" + yestext="OK"/> + </notification> + + <notification + icon="alertmodal.tga" name="PreferredMaturityChanged" type="alertmodal"> You won't receive any more notifications that you're about to visit a region with [RATING] content. You may change your content preferences in the future by using Me > Preferences > General from the menu bar. @@ -5396,6 +5447,14 @@ Do you want to replace it with the selected object? </notification> <notification + icon="alertmodal.tga" + name="TooManyWearables" + type="alertmodal"> + You can't wear a folder containing more than [AMOUNT] items. You can change this limit in Advanced > Show Debug Settings > WearFolderLimit. + <tag>fail</tag> + </notification> + + <notification icon="alert.tga" label="Do Not Disturb Mode Warning" name="DoNotDisturbModePay" @@ -7000,11 +7059,11 @@ If you stay in this region you will be logged out. name="LoadWebPage" show_toast="false" type="notify"> -Load web page [URL]? +Load web page [URL] ? [MESSAGE] -From object: <nolink>[OBJECTNAME]</nolink>, owner: [NAME]? +From object: <nolink>[OBJECTNAME]</nolink>, owner: [NAME] <tag>confirm</tag> <form name="form"> <button @@ -7900,7 +7959,16 @@ You uploaded a [RESOLUTION] baked texture for '[BODYREGION]' after [TIME] second ( [EXISTENCE] seconds alive ) You locally updated a [RESOLUTION] baked texture for '[BODYREGION]' after [TIME] seconds. </notification> - + + <notification + icon="alertmodal.tga" + name="CannotUploadTexture" + type="alertmodal"> +Unable to upload texture. +[REASON] + <tag>fail</tag> + </notification> + <notification icon="alertmodal.tga" name="LivePreviewUnavailable" diff --git a/indra/newview/skins/default/xui/en/panel_facebook_account.xml b/indra/newview/skins/default/xui/en/panel_facebook_account.xml deleted file mode 100644 index 122cbfb717..0000000000 --- a/indra/newview/skins/default/xui/en/panel_facebook_account.xml +++ /dev/null @@ -1,77 +0,0 @@ -<panel - height="400" - width="304" - layout="topleft" - follows="all" - name="panel_facebook_account"> - <string - name="facebook_connected" - value="You are connected to Facebook as:" /> - <string - name="facebook_disconnected" - value="Not connected to Facebook" /> - <text - layout="topleft" - length="1" - follows="top|left" - font="SansSerif" - height="16" - left="9" - name="account_caption_label" - top="21" - type="string"> - Not connected to Facebook. - </text> - <text - layout="topleft" - top_pad="2" - length="1" - follows="top|left" - font="SansSerif" - height="16" - left="9" - name="account_name_label" - parse_urls="true" - type="string"/> - <panel - layout="topleft" - follows="left|top" - name="panel_buttons" - height="345" - left="9"> - <button - layout="topleft" - follows="left|top" - top_pad="9" - visible="true" - height="23" - label="Connect..." - name="connect_btn" - width="210"> - <commit_callback function="SocialSharing.Connect"/> - </button> - - <button - layout="topleft" - follows="left|top" - top_delta="0" - height="23" - label="Disconnect" - name="disconnect_btn" - width="210" - visible="false"> - <commit_callback function="SocialSharing.Disconnect"/> - </button> - <text - layout="topleft" - length="1" - follows="top|left" - height="16" - left="0" - name="account_learn_more_label" - top_pad="20" - type="string"> - [http://community.secondlife.com/t5/English-Knowledge-Base/Second-Life-Share-Facebook/ta-p/2149711 Learn about posting to Facebook] - </text> - </panel> -</panel> diff --git a/indra/newview/skins/default/xui/en/panel_facebook_friends.xml b/indra/newview/skins/default/xui/en/panel_facebook_friends.xml index 9d21a3a293..97994fb08b 100644 --- a/indra/newview/skins/default/xui/en/panel_facebook_friends.xml +++ b/indra/newview/skins/default/xui/en/panel_facebook_friends.xml @@ -1,6 +1,6 @@ <panel height="400" - width="304" + width="272" layout="topleft" follows="all" name="panel_facebook_friends"> @@ -9,17 +9,17 @@ value="You currently do not have any Facebook friends who are also Second Life residents. Ask your Facebook friends to join Second Life today!" /> <string name="facebook_friends_no_connected" - value="You're currently not connected to Facebook. Please go to the Account tab to connect and enable this feature." /> + value="You're currently not connected to Facebook. Please go to the Status tab to connect and enable this feature." /> <accordion - background_visible="true" + background_visible="false" bg_alpha_color="DkGray2" bg_opaque_color="DkGray2" follows="all" - height="408" + height="383" layout="topleft" - left="3" + left="10" name="friends_accordion" - right="-2" + right="-10" top_pad="2"> <accordion_tab layout="topleft" @@ -36,7 +36,7 @@ name="second_life_friends" show_permissions_granted="true" top="0" - width="307" /> + width="272" /> </accordion_tab> <accordion_tab layout="topleft" @@ -53,19 +53,20 @@ name="suggested_friends" show_permissions_granted="true" top="0" - width="307" /> + width="272" /> </accordion_tab> </accordion> <text layout="topleft" word_wrap="true" height="64" - width="290" + width="250" follows="top|left|right" font="SansSerif" - left="9" + left="10" + right="-10" name="facebook_friends_status" - top="21" + top="5" type="string"> Not connected to Facebook. </text> diff --git a/indra/newview/skins/default/xui/en/panel_facebook_photo.xml b/indra/newview/skins/default/xui/en/panel_facebook_photo.xml index b5b6dee004..22e6598352 100644 --- a/indra/newview/skins/default/xui/en/panel_facebook_photo.xml +++ b/indra/newview/skins/default/xui/en/panel_facebook_photo.xml @@ -1,29 +1,19 @@ <panel height="400" - width="304" + width="272" layout="topleft" follows="all" name="panel_facebook_photo"> - <layout_stack - layout="topleft" - border_size="0" - height="392" - follows="all" - orientation="vertical" - name="stack_photo" - top="8"> - <layout_panel - name="snapshot_panel" - height="367"> <combo_box control_name="FacebookPhotoResolution" follows="left|top" - top="6" - left="9" + layout="topleft" + top="7" + left="10" name="resolution_combobox" tool_tip="Image resolution" height="21" - width="135"> + width="124"> <combo_box.item label="Current Window" name="CurrentWindow" @@ -47,13 +37,14 @@ </combo_box> <combo_box control_name="FacebookPhotoFilters" - follows="right|top" + follows="left|top" + layout="topleft" name="filters_combobox" tool_tip="Image filters" - top="6" - left="165" + top="7" + left_pad="4" height="21" - width="135"> + width="124"> <combo_box.item label="No Filter" name="NoFilter" @@ -61,48 +52,62 @@ </combo_box> <panel height="150" - width="250" + width="252" visible="true" + layout="topleft" name="thumbnail_placeholder" - top="33" - follows="left|top|right" - left="9"> + top_pad="5" + follows="left|top|rith" + right="-10" + left="10"> </panel> - <button - follows="left|top" - height="23" - label="Refresh" - left="9" - top_pad="5" - name="new_snapshot_btn" - tool_tip="Click to refresh" - visible="true" - width="100" > - <button.commit_callback - function="SocialSharing.RefreshPhoto" /> - </button> - <text + <text follows="left|top" + layout="topleft" font="SansSerif" text_color="EmphasisColor" height="14" - top_pad="-19" - left_pad="-30" + top_pad="2" + left="10" length="1" halign="center" name="working_lbl" translate="false" type="string" visible="true" - width="150"> + width="251"> Refreshing... </text> + <view_border + bevel_style="in" + follows="left|top" + layout="topleft" + height="1" + left="10" + name="refresh_border" + width="250" + top_pad="0"/> + <button + follows="left|top" + layout="topleft" + height="23" + label="Refresh" + left="10" + top_pad="5" + name="new_snapshot_btn" + tool_tip="Click to refresh" + visible="true" + width="100" > + <button.commit_callback + function="SocialSharing.RefreshPhoto" /> + </button> <button follows="right|top" + layout="topleft" height="23" label="Preview" - left="200" - top_pad="-19" + right="-10" + top_delta="0" name="big_preview_btn" tool_tip="Click to toggle preview" is_toggle="true" @@ -114,9 +119,10 @@ <text length="1" follows="top|left|right" + layout="topleft" font="SansSerif" height="16" - left="9" + left="10" name="caption_label" top_pad="20" type="string"> @@ -124,23 +130,22 @@ </text> <text_editor follows="left|top|right|bottom" + layout="topleft" height="87" width="250" - left="9" + left="10" + right="-10" length="1" max_length="700" name="photo_caption" type="string" word_wrap="true"> </text_editor> - </layout_panel> - <layout_panel - name="photo_button_panel" - height="25"> <button - follows="left|bottom" - top="0" - left="9" + follows="left|top" + layout="topleft" + top_pad="22" + left="10" height="23" label="Post" name="post_photo_btn" @@ -149,16 +154,15 @@ function="SocialSharing.SendPhoto" /> </button> <button - follows="left|bottom" + follows="right|top" + layout="topleft" height="23" label="Cancel" name="cancel_photo_btn" - left_pad="15" + right="-10" top_delta="0" width="100"> <button.commit_callback function="SocialSharing.Cancel" /> - </button> - </layout_panel> - </layout_stack> + </button> </panel> diff --git a/indra/newview/skins/default/xui/en/panel_facebook_place.xml b/indra/newview/skins/default/xui/en/panel_facebook_place.xml index 84c87df523..f87b008c4e 100644 --- a/indra/newview/skins/default/xui/en/panel_facebook_place.xml +++ b/indra/newview/skins/default/xui/en/panel_facebook_place.xml @@ -1,115 +1,96 @@ <panel height="400" - width="304" + width="272" layout="topleft" follows="all" name="panel_facebook_place"> - <layout_stack - layout="topleft" - border_size="0" - height="392" - follows="all" - orientation="vertical" - name="stack_place" - top="8"> - <layout_panel - name="place_detail_panel" - height="181"> <text length="1" follows="top|left|right" + layout="topleft" font="SansSerif" height="16" - left="9" + left="10" name="place_caption_label" - top="13" + top="5" type="string"> Say something about where you are: </text> <text_editor follows="top|left|right" - height="150" + layout="topleft" + height="70" width="250" - left="9" + left="10" + right="-10" length="1" max_length="700" name="place_caption" type="string" word_wrap="true"> </text_editor> - </layout_panel> - <layout_panel - name="place_map_panel" - height="186"> + <check_box + follows="left|top" + layout="topleft" + initial_value="false" + height="16" + top_pad="8" + width="8" + label="Include overhead view of location" + name="add_place_view_cb" + left="10"/> <panel follows="left|top" - height="128" - width="128" + layout="topleft" + height="243" + width="250" background_visible="true" bg_opaque_color="Black" bg_alpha_color="Black" - top="20" - left="9" + top_pad="8" + left="10" + right="-12" visible="true" name="map_border"> </panel> - <loading_indicator - follows="left|top" - height="24" - width="24" - name="map_loading_indicator" - top="77" - left="61" - visible="true"/> <icon follows="left|top" - height="128" - width="128" + layout="topleft" + height="243" + width="250" image_name="Map_Placeholder_Icon" - layout="topleft" - top="20" - left="9" + top_delta="0" + right="-12" + left="10" visible="true" name="map_placeholder"> </icon> <icon follows="left|top" - height="128" - width="128" + layout="topleft" + height="243" + width="250" image_name="Map_Placeholder_Icon" - layout="topleft" - top="20" - left="9" + top_delta="0" + left="10" + right="-12" visible="true" name="map_default"> </icon> - <check_box + <loading_indicator follows="left|top" - initial_value="false" - top_delta="8" - width="8" - label="" - name="add_place_view_cb" - left_pad="5"/> - <text - follows="left|top" - font="SansSerif" - height="32" - width="130" - word_wrap="true" - left_pad="12" - top_delta="-8" - type="string"> - Include overhead view of location - </text> - </layout_panel> - <layout_panel - name="place_button_panel" - height="25"> + layout="topleft" + height="24" + width="24" + name="map_loading_indicator" + top_delta="116" + left="126" + visible="false"/> <button follows="left|bottom" - top="0" - left="9" + layout="topleft" + top_pad="95" + left="10" height="23" label="Post" name="post_place_btn" @@ -118,16 +99,15 @@ function="SocialSharing.SendCheckin" /> </button> <button - follows="left|bottom" + follows="right|bottom" + layout="topleft" height="23" label="Cancel" name="cancel_place_btn" - left_pad="15" + right="-10" top_delta="0" width="100"> <button.commit_callback function="SocialSharing.Cancel" /> </button> - </layout_panel> - </layout_stack> </panel> diff --git a/indra/newview/skins/default/xui/en/panel_facebook_status.xml b/indra/newview/skins/default/xui/en/panel_facebook_status.xml index 480abec558..fe0f3c9279 100644 --- a/indra/newview/skins/default/xui/en/panel_facebook_status.xml +++ b/indra/newview/skins/default/xui/en/panel_facebook_status.xml @@ -1,50 +1,113 @@ <panel height="400" - width="304" + width="272" follows="all" layout="topleft" name="panel_facebook_status"> - <layout_stack + <string + name="facebook_connected" + value="You are connected to Facebook as:" /> + <string + name="facebook_disconnected" + value="Not connected to Facebook" /> + <text + layout="topleft" + length="1" + follows="top|left" + font="SansSerif" + height="16" + left="10" + name="account_caption_label" + top="5" + type="string"> + Not connected to Facebook. + </text> + <text + layout="topleft" + top_pad="2" + length="1" + follows="top|left" + font="SansSerif" + height="16" + left="10" + name="account_name_label" + parse_urls="true" + type="string"/> + <panel + layout="topleft" + follows="left|top" + name="panel_buttons" + height="60" + left="0"> + <button + layout="topleft" + follows="left|top" + top_pad="9" + left="10" + visible="true" + height="23" + label="Connect..." + name="connect_btn" + width="251"> + <commit_callback function="SocialSharing.Connect"/> + </button> + + <button + layout="topleft" + follows="left|top|right" + top_delta="0" + left="10" + right="-10" + height="23" + label="Disconnect" + name="disconnect_btn" + width="210" + visible="false"> + <commit_callback function="SocialSharing.Disconnect"/> + </button> + <text layout="topleft" - border_size="0" - height="392" - follows="all" - orientation="vertical" - name="stack_status" - top="8"> - <layout_panel - name="status_detail_panel" - height="367"> + length="1" + follows="top|left|right" + left="10" + right="-10" + height="16" + name="account_learn_more_label" + top_pad="5" + type="string"> + [http://community.secondlife.com/t5/English-Knowledge-Base/Second-Life-Share-Facebook/ta-p/2149711 Learn about posting to Facebook] + </text> + </panel> + <text length="1" + layout="topleft" follows="top|left|right" font="SansSerif" height="16" - left="9" + left="10" name="status_caption_label" - top="13" + top_pad="5" type="string"> What's on your mind? </text> <text_editor follows="left|top|right" + layout="topleft" height="150" - width="250" - left="9" + width="252" + left="10" length="1" max_length="700" name="status_message" type="string" word_wrap="true"> </text_editor> - </layout_panel> - <layout_panel - name="status_button_panel" - height="25"> <button - follows="left|bottom" - top="0" - left="9" + follows="left|top" + layout="topleft" + top_pad="6" + left="10" height="23" label="Post" name="post_status_btn" @@ -53,16 +116,15 @@ function="SocialSharing.SendStatus" /> </button> <button - follows="left|bottom" + follows="right|top" + layout="topleft" height="23" label="Cancel" name="cancel_status_btn" - left_pad="15" + right="-10" top_delta="0" width="100"> <button.commit_callback function="SocialSharing.Cancel" /> </button> - </layout_panel> - </layout_stack> </panel> diff --git a/indra/newview/skins/default/xui/en/panel_flickr_account.xml b/indra/newview/skins/default/xui/en/panel_flickr_account.xml index 506d2e2f74..5c2f335780 100644 --- a/indra/newview/skins/default/xui/en/panel_flickr_account.xml +++ b/indra/newview/skins/default/xui/en/panel_flickr_account.xml @@ -1,6 +1,6 @@ <panel height="540" - width="304" + width="272" layout="topleft" name="panel_flickr_account"> <string @@ -15,9 +15,9 @@ follows="top|left" font="SansSerif" height="16" - left="9" + left="10" name="account_caption_label" - top="21" + top="5" type="string"> Not connected to Flickr. </text> @@ -28,7 +28,7 @@ follows="top|left" font="SansSerif" height="16" - left="9" + left="10" name="account_name_label" parse_urls="true" type="string"/> @@ -36,12 +36,14 @@ layout="topleft" name="panel_buttons" height="345" - left="9"> + left="0"> <button layout="topleft" - follows="left|top" + follows="left|top|right" top_pad="9" visible="true" + left="10" + right="-10" height="23" label="Connect..." name="connect_btn" @@ -51,8 +53,10 @@ <button layout="topleft" - follows="left|top" + follows="left|top|right" top_delta="0" + left="10" + right="-10" height="23" label="Disconnect" name="disconnect_btn" @@ -65,9 +69,9 @@ length="1" follows="top|left" height="16" - left="0" + left="10" name="account_learn_more_label" - top_pad="20" + top_pad="5" type="string"> [http://community.secondlife.com/t5/English-Knowledge-Base/Second-Life-Share-Flickr/ta-p/2435609 Learn about posting to Flickr] </text> diff --git a/indra/newview/skins/default/xui/en/panel_flickr_photo.xml b/indra/newview/skins/default/xui/en/panel_flickr_photo.xml index 8d8ef45c0d..e31695645d 100644 --- a/indra/newview/skins/default/xui/en/panel_flickr_photo.xml +++ b/indra/newview/skins/default/xui/en/panel_flickr_photo.xml @@ -1,28 +1,19 @@ <panel height="540" - width="304" + width="272" + follows="all" layout="topleft" name="panel_flickr_photo"> - <layout_stack - layout="topleft" - border_size="0" - height="532" - follows="all" - orientation="vertical" - name="stack_photo" - top="8"> - <layout_panel - name="snapshot_panel" - height="507"> <combo_box control_name="FlickrPhotoResolution" follows="left|top" - top="6" - left="9" + layout="topleft" + top="7" + left="10" name="resolution_combobox" tool_tip="Image resolution" height="21" - width="135"> + width="124"> <combo_box.item label="Current Window" name="CurrentWindow" @@ -42,13 +33,14 @@ </combo_box> <combo_box control_name="FlickrPhotoFilters" - follows="right|top" + follows="left|top" + layout="topleft" name="filters_combobox" tool_tip="Image filters" - top="6" - left="165" + top_delta="0" + left_pad="4" height="21" - width="135"> + width="124"> <combo_box.item label="No Filter" name="NoFilter" @@ -59,45 +51,59 @@ width="250" visible="true" name="thumbnail_placeholder" - top="33" - follows="left|top" - left="9"> + top_pad="5" + follows="left|top|right" + layout="topleft" + right="-10" + left="10"> </panel> - <button - follows="left|top" - height="23" - label="Refresh" - left="9" - top_pad="5" - name="new_snapshot_btn" - tool_tip="Click to refresh" - visible="true" - width="100" > - <button.commit_callback - function="SocialSharing.RefreshPhoto" /> - </button> - <text + <text follows="left|top" + layout="topleft" font="SansSerif" text_color="EmphasisColor" height="14" - top_pad="-19" - left_pad="-30" + top_pad="2" + left="10" length="1" halign="center" name="working_lbl" translate="false" type="string" visible="true" - width="150"> + width="251"> Refreshing... </text> + <view_border + bevel_style="in" + follows="left|top" + layout="topleft" + height="1" + left="10" + name="refresh_border" + width="250" + top_pad="0"/> + <button + follows="left|top" + layout="topleft" + height="23" + label="Refresh" + left="10" + top_pad="5" + name="new_snapshot_btn" + tool_tip="Click to refresh" + visible="true" + width="100" > + <button.commit_callback + function="SocialSharing.RefreshPhoto" /> + </button> <button follows="right|top" + layout="topleft" height="23" label="Preview" - left="200" - top_pad="-19" + right="-10" + top_delta="0" name="big_preview_btn" tool_tip="Click to toggle preview" is_toggle="true" @@ -109,19 +115,21 @@ <text length="1" follows="top|left|right" + layout="topleft" font="SansSerif" height="16" - left="9" + left="10" name="title_label" - top_pad="15" + top_pad="10" type="string"> Title: </text> <line_editor follows="left|top" + layout="topleft" height="20" width="250" - left="9" + left="10" length="1" max_length="256" name="photo_title" @@ -130,19 +138,23 @@ <text length="1" follows="top|left|right" + layout="topleft" font="SansSerif" height="16" - left="9" + left="10" + right="-10" name="description_label" top_pad="10" + width="25" type="string"> Description: </text> <text_editor follows="left|top" + layout="topleft" height="50" - width="250" - left="9" + width="249" + left="10" length="1" max_length="700" name="photo_description" @@ -151,6 +163,7 @@ </text_editor> <check_box follows="left|top" + layout="topleft" initial_value="true" label="Include SL location at end of description" name="add_location_cb" @@ -159,23 +172,25 @@ top_pad="8"/> <text length="1" - follows="top|left|right" + follows="top|left" + layout="topleft" font="SansSerif" height="16" - left="9" + left="10" name="tags_label" - top_pad="10" + top_pad="6" type="string"> Tags: </text> <text length="1" follows="top|left" + layout="topleft" font="SansSerifSmall" text_color="White_50" height="30" name="tags_help_label" - left="50" + left="51" top_pad="-16" type="string"> Separate tags with spaces @@ -183,9 +198,10 @@ Use "" for multi-word tags </text> <text_editor follows="left|top" + layout="topleft" height="50" - width="250" - left="9" + width="249" + left="10" length="1" max_length="700" name="photo_tags" @@ -195,8 +211,9 @@ Use "" for multi-word tags <combo_box control_name="FlickrPhotoRating" follows="left|top" - top_pad="16" - left="9" + layout="topleft" + top_pad="7" + left="10" name="rating_combobox" tool_tip="Flickr content rating" height="21" @@ -214,14 +231,11 @@ Use "" for multi-word tags name="RestrictedRating" value="3" /> </combo_box> - </layout_panel> - <layout_panel - name="photo_button_panel" - height="25"> <button follows="left|top" - top="0" - left="9" + layout="topleft" + top_pad="7" + left="10" height="23" label="Upload" name="post_photo_btn" @@ -230,16 +244,15 @@ Use "" for multi-word tags function="SocialSharing.SendPhoto" /> </button> <button - follows="left|top" + follows="right|top" + layout="topleft" height="23" label="Cancel" name="cancel_photo_btn" - left_pad="15" + right="-10" top_delta="0" width="100"> <button.commit_callback function="SocialSharing.Cancel" /> - </button> - </layout_panel> - </layout_stack> + </button> </panel> diff --git a/indra/newview/skins/default/xui/en/panel_place_profile.xml b/indra/newview/skins/default/xui/en/panel_place_profile.xml index 30239d6d01..0dd75b1b55 100755 --- a/indra/newview/skins/default/xui/en/panel_place_profile.xml +++ b/indra/newview/skins/default/xui/en/panel_place_profile.xml @@ -295,14 +295,14 @@ value="SampleParcel, Name Long (145, 228, 26)" width="285" /> <expandable_text - follows="left|top|right" + follows="left|top" height="50" layout="topleft" left="5" name="description" top_pad="10" value="Du waltz die spritz" - width="300" /> + width="285" /> <text follows="left|top" height="14" diff --git a/indra/newview/skins/default/xui/en/panel_postcard_message.xml b/indra/newview/skins/default/xui/en/panel_postcard_message.xml index ab2a42ea01..331a08b4bb 100755 --- a/indra/newview/skins/default/xui/en/panel_postcard_message.xml +++ b/indra/newview/skins/default/xui/en/panel_postcard_message.xml @@ -1,6 +1,6 @@ <?xml version="1.0" encoding="utf-8" standalone="yes" ?> <panel - height="380" + height="319" layout="topleft" name="panel_postcard_message" width="490"> @@ -12,7 +12,7 @@ font="SansSerif" height="16" layout="topleft" - left="12" + left="5" name="to_label" top="10" width="60"> @@ -25,7 +25,7 @@ layout="topleft" left_pad="10" name="to_form" - right="-10" + right="-3" top_delta="-4" /> <text type="string" @@ -35,7 +35,7 @@ font="SansSerif" height="16" layout="topleft" - left="12" + left="5" name="name_label" width="60"> From: @@ -47,7 +47,7 @@ left_pad="10" max_length_bytes="100" name="name_form" - right="-10" + right="-3" top_delta="-4" /> <text type="string" @@ -57,7 +57,7 @@ font="SansSerif" height="16" layout="topleft" - left="12" + left="5" name="subject_label" width="60"> Subject: @@ -65,61 +65,24 @@ <line_editor follows="left|top|right" height="20" - label="Type your subject here." layout="topleft" left_pad="10" max_length_bytes="100" name="subject_form" - right="-10" + right="-3" top_delta="-4" /> - <text - type="string" - length="1" - bottom_delta="23" - follows="top|left|right" - font="SansSerif" - layout="topleft" - left="12" - name="msg_label" - right="-10"> - Message: - </text> <text_editor type="string" length="1" follows="left|top|right" - height="60" + height="48" layout="topleft" - left_delta="0" + left="5" max_length="700" name="msg_form" - right="-10" - top_pad="10" + right="-4" + top_pad="5" word_wrap="true"> Type your message here. </text_editor> - <button - follows="right|bottom" - height="23" - label="Cancel" - layout="topleft" - name="cancel_btn" - right="-32" - top="350" - width="100"> - <button.commit_callback - function="Postcard.Cancel" /> - </button> - <button - follows="right|bottom" - height="23" - label="Send" - layout="topleft" - left_delta="-106" - name="send_btn" - top_delta="0" - width="100"> - <button.commit_callback - function="Postcard.Send" /> - </button> </panel> diff --git a/indra/newview/skins/default/xui/en/panel_postcard_settings.xml b/indra/newview/skins/default/xui/en/panel_postcard_settings.xml index 3f67a48b14..525149d7ee 100755 --- a/indra/newview/skins/default/xui/en/panel_postcard_settings.xml +++ b/indra/newview/skins/default/xui/en/panel_postcard_settings.xml @@ -9,10 +9,10 @@ height="23" label="Resolution" layout="topleft" - left="10" + left="5" name="postcard_size_combo" - right="-10" - top_pad="10"> + right="-3" + top_pad="5"> <combo_box.item label="Current Window" name="CurrentWindow" @@ -34,103 +34,55 @@ name="Custom" value="[i-1,i-1]" /> </combo_box> - <layout_stack - animate="false" - follows="all" - height="275" - layout="bottomleft" - name="postcard_image_params_ls" - left_delta="0" - orientation="vertical" - top_pad="10" - right="-10"> - <layout_panel - follows="top|left|right" - height="60" - layout="topleft" - left="0" - name="postcard_image_size_lp" - auto_resize="false" - top="0" - right="-1" - visible="true"> - <spinner - allow_text_entry="false" - decimal_digits="0" - follows="left|top" - height="20" - increment="32" - label="Width" - label_width="40" - layout="topleft" - left="10" - max_val="6016" - min_val="32" - name="postcard_snapshot_width" - top_pad="10" - width="95" /> - <spinner - allow_text_entry="false" - decimal_digits="0" - follows="left|top" - height="20" - increment="32" - label="Height" - label_width="40" - layout="topleft" - left_pad="5" - max_val="6016" - min_val="32" - name="postcard_snapshot_height" - top_delta="0" - width="95" /> - <check_box - height="10" - bottom_delta="20" - follows="left|top" - label="Constrain proportions" - layout="topleft" - left="10" - name="postcard_keep_aspect_check" /> - </layout_panel> - <layout_panel - follows="top|left|right" - height="23" - layout="topleft" - left="0" - name="postcard_image_format_quality_lp" - auto_resize="true" - top="0" - right="-1" - visible="true"> - <slider - decimal_digits="0" - follows="left|top" - height="15" - increment="1" - initial_value="75" - label="Image quality" - label_width="80" - layout="topleft" - left="0" - max_val="100" - name="image_quality_slider" - top_pad="7" - width="190" /> - <text - type="string" - follows="left|top" - font="SansSerifSmall" - length="1" - height="14" - layout="topleft" - left_pad="-5" - halign="left" - name="image_quality_level" - top_delta="0" - width="60"> - ([QLVL]) - </text> - </layout_panel> - </layout_stack> + <spinner + allow_text_entry="false" + decimal_digits="0" + follows="left|top" + height="20" + increment="32" + label="Width x Height" + label_width="90" + layout="topleft" + left="5" + max_val="6016" + min_val="32" + name="postcard_snapshot_width" + top_pad="5" + width="144" /> + <spinner + allow_text_entry="false" + decimal_digits="0" + follows="left|top" + height="20" + increment="32" + label="" + label_width="0" + layout="topleft" + left_pad="0" + max_val="6016" + min_val="32" + name="postcard_snapshot_height" + top_delta="0" + width="52" /> + <check_box + top_pad="12" + follows="left|top" + label="Constrain proportions" + layout="topleft" + left="5" + name="postcard_keep_aspect_check" /> + <slider + decimal_digits="0" + follows="left|top" + height="15" + increment="1" + initial_value="75" + label="Quality:" + label_width="45" + layout="topleft" + left="5" + max_val="100" + name="image_quality_slider" + top_pad="6" + width="190" /> </panel> diff --git a/indra/newview/skins/default/xui/en/panel_preferences_setup.xml b/indra/newview/skins/default/xui/en/panel_preferences_setup.xml index dd4533ae74..1e9a1aa27c 100755 --- a/indra/newview/skins/default/xui/en/panel_preferences_setup.xml +++ b/indra/newview/skins/default/xui/en/panel_preferences_setup.xml @@ -106,7 +106,7 @@ width="300"> Web: </text> - <radio_group + <!-- <radio_group control_name="UseExternalBrowser" draw_border="false" follows="top|left" @@ -136,6 +136,48 @@ tool_tip="Use the built-in web browser for help, web links, etc. This browser opens as a new window inside [APP_NAME]." top_delta="20" width="480" /> + </radio_group> --> + + <radio_group + control_name="PreferredBrowserBehavior" + draw_border="false" + follows="left|top" + height="60" + layout="topleft" + left_delta="50" + name="preferred_browser_behavior" + top_pad="0" + width="480"> + <radio_item + height="20" + label="Use my browser (Chrome, Firefox, IE) for all links" + layout="topleft" + left="0" + name="internal" + value="0" + tool_tip="Use the default system web browser for help, web links, etc. Not recommended if running full screen." + top="0" + width="480" /> + <radio_item + height="20" + label="Use built-in browser for Second Life links only" + layout="topleft" + left_delta="0" + name="external" + value="1" + tool_tip="Use the default system web browser for help, web links, etc. Builtin browser will be used only for LindenLab/SecondLife links." + top_delta="20" + width="480" /> + <radio_item + height="20" + label="Use built-in browser for all links" + layout="topleft" + left="0" + name="internal" + value="2" + tool_tip="Use the built-in web browser for help, web links, etc. This browser opens as a new window inside [APP_NAME]." + top_delta="20" + width="480" /> </radio_group> <check_box diff --git a/indra/newview/skins/default/xui/en/panel_snapshot_inventory.xml b/indra/newview/skins/default/xui/en/panel_snapshot_inventory.xml index 71d808fa4b..ea579c6dae 100755 --- a/indra/newview/skins/default/xui/en/panel_snapshot_inventory.xml +++ b/indra/newview/skins/default/xui/en/panel_snapshot_inventory.xml @@ -12,12 +12,12 @@ left="12" mouse_opaque="true" name="title_icon" - top="5" + top="6" width="18" /> <text follows="top|left|right" font="SansSerifBold" - height="20" + height="14" layout="topleft" left_pad="12" length="1" @@ -25,46 +25,28 @@ right="-10" text_color="white" type="string" - top_delta="5"> - Save to My Inventory + top_delta="3"> + Inventory </text> <view_border bevel_style="in" follows="left|top|right" height="1" - left="10" + left="9" layout="topleft" name="hr" - right="-10" + right="-5" top_pad="5" /> - <text - bottom="35" - follows="top|left|right" - font="SansSerif" - height="56" - layout="topleft" - left="12" - length="1" - name="hint_lbl" - top_pad="10" - type="string" - word_wrap="true"> - Saving an image to your inventory costs L$[UPLOAD_COST]. To save your image as a texture select one of the square formats. - </text> <combo_box follows="top|left|right" - height="23" + height="20" label="Resolution" layout="topleft" left_delta="0" name="texture_size_combo" - right="-10" - top_pad="10"> - <combo_box.item - label="Current Window" - name="CurrentWindow" - value="[i0,i0]" /> + right="-5" + top_pad="5"> <combo_box.item label="Small (128x128)" name="Small(128x128)" @@ -88,61 +70,74 @@ follows="left|top" height="20" increment="32" - label="Width" - label_width="40" + label="Width x Height" + label_width="90" layout="topleft" left="10" max_val="6016" min_val="32" name="inventory_snapshot_width" - top_pad="10" - width="95" /> + top_pad="7" + width="144" /> <spinner allow_text_entry="false" decimal_digits="0" follows="left|top" height="20" increment="32" - label="Height" - label_width="40" + label="" + label_width="0" layout="topleft" - left_pad="5" + left_pad="0" max_val="6016" min_val="32" name="inventory_snapshot_height" top_delta="0" - width="95" /> + width="54" /> <check_box - bottom_delta="20" - height="10" + top_pad="12" follows="left|top" label="Constrain proportions" layout="topleft" left="10" name="inventory_keep_aspect_check" visible="false" /> + <text + follows="top|left" + font="SansSerif" + height="56" + layout="topleft" + left="10" + length="1" + name="hint_lbl" + top_pad="6" + width="200" + type="string" + word_wrap="true"> + Saving an image to your inventory costs L$[UPLOAD_COST]. To save your image as a texture select one of the square formats. + </text> <button follows="right|bottom" height="23" label="Cancel" layout="topleft" name="cancel_btn" - right="-32" - top="350" - width="100"> + right="-5" + top="337" + width="97"> <button.commit_callback function="Inventory.Cancel" /> </button> <button - follows="right|bottom" + follows="left|bottom" height="23" label="Save" layout="topleft" - left_delta="-106" + left="10" name="save_btn" top_delta="0" - width="100"> + width="97"> <button.commit_callback function="Inventory.Save" /> </button> -</panel> +</panel>
\ No newline at end of file diff --git a/indra/newview/skins/default/xui/en/panel_snapshot_local.xml b/indra/newview/skins/default/xui/en/panel_snapshot_local.xml index 781ab17403..188c9f8707 100755 --- a/indra/newview/skins/default/xui/en/panel_snapshot_local.xml +++ b/indra/newview/skins/default/xui/en/panel_snapshot_local.xml @@ -12,12 +12,12 @@ left="12" mouse_opaque="true" name="title_icon" - top="5" + top="7" width="18" /> <text follows="top|left|right" font="SansSerifBold" - height="20" + height="14" layout="topleft" left_pad="12" length="1" @@ -25,28 +25,27 @@ right="-10" text_color="white" type="string" - top_delta="4"> - Save to My Computer + top_delta="2"> + Disk </text> <view_border bevel_style="in" follows="left|top|right" height="1" - left="10" + left="9" layout="topleft" name="hr" - right="-10" - top_pad="5" - /> + right="-5" + top_pad="5"/> <combo_box follows="left|top|right" - height="23" + height="20" label="Resolution" layout="topleft" left_delta="0" name="local_size_combo" - right="-10" - top_pad="10"> + right="-5" + top_pad="5"> <combo_box.item label="Current Window" name="CurrentWindow" @@ -80,149 +79,114 @@ name="Custom" value="[i-1,i-1]" /> </combo_box> - <layout_stack - animate="false" - follows="all" - height="275" - layout="bottomleft" - name="local_image_params_ls" - left_delta="0" - orientation="vertical" - top_pad="10" - right="-10"> - <layout_panel - follows="top|left|right" - height="60" - layout="topleft" - left="0" - name="local_image_size_lp" - auto_resize="false" - top="0" - right="-1" - visible="true"> - <spinner - allow_text_entry="false" - decimal_digits="0" - follows="left|top" - height="20" - increment="32" - label="Width" - label_width="40" - layout="topleft" - left="10" - max_val="6016" - min_val="32" - name="local_snapshot_width" - top_pad="10" - width="95" /> - <spinner - allow_text_entry="false" - decimal_digits="0" - follows="left|top" - height="20" - increment="32" - label="Height" - label_width="40" - layout="topleft" - left_pad="5" - max_val="6016" - min_val="32" - name="local_snapshot_height" - top_delta="0" - width="95" /> - <check_box - bottom_delta="20" - height="10" - follows="left|top" - label="Constrain proportions" - layout="topleft" - left="10" - name="local_keep_aspect_check" /> - </layout_panel> - <layout_panel - follows="top|left|right" - height="23" - layout="topleft" - left="0" - name="local_image_format_quality_lp" - auto_resize="true" - top="0" - right="-1" - visible="true"> - <combo_box - follows="left|top" - height="23" - label="Format" - layout="topleft" - left_delta="0" - name="local_format_combo" - top_pad="0" - width="120"> - <combo_box.item - label="PNG (Lossless)" - name="PNG" - value="PNG" /> - <combo_box.item - label="JPEG" - name="JPEG" - value="JPEG" /> - <combo_box.item - label="BMP (Lossless)" - name="BMP" - value="BMP" /> - </combo_box> - <slider - decimal_digits="0" - follows="left|top" - height="15" - increment="1" - initial_value="75" - label="Image quality" - label_width="80" - layout="topleft" - left="10" - max_val="100" - name="image_quality_slider" - top_pad="7" - width="200" /> - <text - type="string" - follows="left|top" - font="SansSerifSmall" - length="1" - height="14" - layout="topleft" - left_pad="-5" - halign="left" - name="image_quality_level" - top_delta="0" - width="60"> - ([QLVL]) - </text> - </layout_panel> - </layout_stack> + <spinner + allow_text_entry="false" + decimal_digits="0" + follows="left|top" + height="20" + increment="32" + label="Width x Height" + label_width="90" + layout="topleft" + left="10" + max_val="6016" + min_val="32" + name="local_snapshot_width" + top_pad="7" + width="144" /> + <spinner + allow_text_entry="false" + decimal_digits="0" + follows="left|top" + height="20" + increment="32" + label="" + label_width="0" + layout="topleft" + left_pad="0" + max_val="6016" + min_val="32" + name="local_snapshot_height" + top_delta="0" + width="54" /> + <check_box + top_pad="12" + follows="left|top" + label="Constrain proportions" + layout="topleft" + left="10" + name="local_keep_aspect_check" /> + <text + type="string" + length="1" + follows="left|top" + height="13" + layout="topleft" + left="10" + name="local_format_label" + top_pad="7" + width="50"> + Format: + </text> + <combo_box + follows="left|top|right" + height="20" + label="Format" + layout="topleft" + left="65" + right="-5" + name="local_format_combo" + top_delta="-3" + width="120"> + <combo_box.item + label="PNG (Lossless)" + name="PNG" + value="PNG" /> + <combo_box.item + label="JPEG" + name="JPEG" + value="JPEG" /> + <combo_box.item + label="BMP (Lossless)" + name="BMP" + value="BMP" /> + </combo_box> + <slider + decimal_digits="0" + follows="left|top" + height="15" + increment="1" + initial_value="75" + label="Quality:" + label_width="45" + layout="topleft" + left="10" + max_val="100" + name="image_quality_slider" + top_pad="6" + width="203" /> <button follows="right|bottom" height="23" label="Cancel" layout="topleft" name="cancel_btn" - right="-32" - top="350" - width="100"> + right="-5" + top="337" + width="97"> <button.commit_callback function="Local.Cancel" /> </button> <flyout_button - follows="right|bottom" + follows="left|bottom" height="23" label="Save" layout="topleft" - left_delta="-106" + left="10" name="save_btn" tool_tip="Save image to a file" top_delta="0" - width="100"> + width="97"> <flyout_button.item label="Save" name="save_item" @@ -232,4 +196,4 @@ name="saveas_item" value="save as" /> </flyout_button> -</panel> +</panel>
\ No newline at end of file diff --git a/indra/newview/skins/default/xui/en/panel_snapshot_options.xml b/indra/newview/skins/default/xui/en/panel_snapshot_options.xml index eff60f8228..265217ef60 100755 --- a/indra/newview/skins/default/xui/en/panel_snapshot_options.xml +++ b/indra/newview/skins/default/xui/en/panel_snapshot_options.xml @@ -4,117 +4,124 @@ height="240" layout="topleft" name="panel_snapshot_options" - width="490"> + width="208"> + <button + follows="left|top" + font="SansSerif" + halign="left" + height="22" + image_overlay="Snapshot_Download" + image_overlay_alignment="left" + image_top_pad="-0" + imgoverlay_label_space="10" + label="Save to Disk" + layout="topleft" + left="9" + name="save_to_computer_btn" + top_pad="9"> + <button.commit_callback + function="Snapshot.SaveToComputer" /> + </button> <button - follows="left|top|right" + follows="left|top" font="SansSerif" halign="left" - height="38" - image_overlay="Snapshot_Profile" + height="22" + image_overlay="Snapshot_Inventory" image_overlay_alignment="left" - image_top_pad="-2" + image_top_pad="-1" imgoverlay_label_space="10" - label="Post to My Profile Feed" + label="Save to Inventory (L$[AMOUNT])" layout="topleft" left_delta="0" + name="save_to_inventory_btn" + top_pad="5"> + <button.commit_callback + function="Snapshot.SaveToInventory" /> + </button> + <button + follows="left|top" + font="SansSerif" + halign="left" + height="22" + image_overlay="Snapshot_Profile" + image_overlay_alignment="left" + image_top_pad="-1" + imgoverlay_label_space="10" + label="Upload to Profile" + layout="topleft" name="save_to_profile_btn" - pad_left="10" - right="-10" - top_pad="10"> + left_delta="0" + top_pad="5"> <button.commit_callback function="Snapshot.SaveToProfile" /> </button> <button - follows="left|top|right" + follows="left|top" font="SansSerif" halign="left" - height="38" - image_overlay="Snapshot_Email" + height="22" + image_overlay="Snapshot_Facebook" image_overlay_alignment="left" - image_top_pad="-2" + image_top_pad="0" imgoverlay_label_space="10" - label="Email" + label="Upload to Facebook" layout="topleft" left_delta="0" - name="save_to_email_btn" - pad_left="10" - right="-10" - top_pad="10"> + name="send_to_facebook_btn" + top_pad="5"> <button.commit_callback - function="Snapshot.SaveToEmail" /> + function="Snapshot.SendToFacebook"/> </button> <button - follows="left|top|right" + follows="left|top" font="SansSerif" halign="left" - height="38" - image_overlay="Snapshot_Inventory" + height="22" + image_overlay="Command_Twitter_Icon" image_overlay_alignment="left" - image_top_pad="-2" + image_top_pad="0" imgoverlay_label_space="10" - label="Save to My Inventory (L$[AMOUNT])" + label="Upload to Twitter" layout="topleft" left_delta="0" - name="save_to_inventory_btn" - pad_left="10" - right="-10" - top_pad="10"> + name="send_to_twitter_btn" + top_pad="5"> <button.commit_callback - function="Snapshot.SaveToInventory" /> + function="Snapshot.SendToTwitter"/> </button> <button - follows="left|top|right" + follows="left|top" font="SansSerif" halign="left" - height="38" - image_overlay="Snapshot_Download" + height="22" + image_overlay="Command_Flickr_Icon" image_overlay_alignment="left" - image_top_pad="-2" + image_top_pad="0" imgoverlay_label_space="10" - label="Save to My Computer" + label="Upload to Flickr" layout="topleft" left_delta="0" - name="save_to_computer_btn" - pad_left="10" - right="-10" - top_pad="10"> + name="send_to_flickr_btn" + top_pad="5"> <button.commit_callback - function="Snapshot.SaveToComputer" /> + function="Snapshot.SendToFlickr"/> + </button> + <button + follows="left|top" + font="SansSerif" + halign="left" + height="22" + image_overlay="Snapshot_Email" + image_overlay_alignment="left" + image_top_pad="0" + imgoverlay_label_space="10" + label="Send via E-mail" + layout="topleft" + left_delta="0" + name="save_to_email_btn" + top_pad="5"> + <button.commit_callback + function="Snapshot.SaveToEmail" /> </button> - <text - font="SansSerif" - layout="topleft" - length="1" - follows="top|left" - height="16" - left="10" - name="send_to_facebook_textbox" - top_pad="10" - type="string"> - Send to: [secondlife:/// Facebook] - </text> - <text - font="SansSerif" - layout="topleft" - length="1" - follows="top|left" - height="16" - left="140" - name="send_to_twitter_textbox" - top_pad="-16" - type="string"> - [secondlife:/// Twitter] - </text> - <text - font="SansSerif" - layout="topleft" - length="1" - follows="top|left" - height="16" - left="190" - name="send_to_flickr_textbox" - top_pad="-16" - type="string"> - [secondlife:/// Flickr] - </text> -</panel> +</panel>
\ No newline at end of file diff --git a/indra/newview/skins/default/xui/en/panel_snapshot_postcard.xml b/indra/newview/skins/default/xui/en/panel_snapshot_postcard.xml index ebba292a93..975b08be05 100755 --- a/indra/newview/skins/default/xui/en/panel_snapshot_postcard.xml +++ b/indra/newview/skins/default/xui/en/panel_snapshot_postcard.xml @@ -24,12 +24,12 @@ left="12" mouse_opaque="true" name="title_icon" - top="5" + top="7" width="18" /> <text follows="top|left|right" font="SansSerifBold" - height="20" + height="14" layout="topleft" left_pad="12" length="1" @@ -37,63 +37,67 @@ right="-10" text_color="white" type="string" - top_delta="3"> - Email + top_delta="2"> + E-mail </text> - <button - follows="right|top" - height="23" - is_toggle="true" - label="Message" - layout="topleft" - name="message_btn" - right="-82" - top_delta="-7" - width="70"> - <button.commit_callback - function="Postcard.Message" /> - </button> - <button - follows="right|top" - height="23" - is_toggle="true" - label="Settings" - layout="topleft" - name="settings_btn" - top_delta="0" - right="-10" - width="70"> - <button.commit_callback - function="Postcard.Settings" /> - </button> <view_border bevel_style="in" follows="left|top|right" height="1" - left="10" + left="9" layout="topleft" name="hr" - right="-10" + right="-5" top_pad="5" /> - <panel_container + <tab_container + name="postcard_tabs" + tab_group="1" + tab_min_width="97" + tab_height="21" + tab_position="top" + top_pad="7" + left="5" + right="-2" + height="319" follows="all" - height="340" - layout="topleft" - left="0" - name="postcard_panel_container" - default_panel_name="panel_postcard_message" - top_pad="10" - width="490"> + halign="center" + use_highlighting_on_hover="true"> <panel follows="all" layout="topleft" + label="Message" name="panel_postcard_message" filename="panel_postcard_message.xml" /> <panel follows="all" layout="topleft" + label="Settings" name="panel_postcard_settings" filename="panel_postcard_settings.xml" /> - </panel_container> -</panel> + </tab_container> + <button + follows="right|bottom" + height="23" + label="Cancel" + layout="topleft" + name="cancel_btn" + right="-6" + bottom="-20" + width="97"> + <button.commit_callback + function="Postcard.Cancel" /> + </button> + <button + follows="left|bottom" + height="23" + label="Send" + layout="topleft" + left="10" + name="send_btn" + top_delta="0" + width="97"> + <button.commit_callback + function="Postcard.Send" /> + </button> +</panel>
\ No newline at end of file diff --git a/indra/newview/skins/default/xui/en/panel_snapshot_profile.xml b/indra/newview/skins/default/xui/en/panel_snapshot_profile.xml index 0dd357aa1a..d86cb92981 100755 --- a/indra/newview/skins/default/xui/en/panel_snapshot_profile.xml +++ b/indra/newview/skins/default/xui/en/panel_snapshot_profile.xml @@ -12,12 +12,12 @@ left="12" mouse_opaque="true" name="title_icon" - top="5" + top="7" width="18" /> <text follows="top|left|right" font="SansSerifBold" - height="20" + height="14" layout="topleft" left_pad="12" length="1" @@ -26,27 +26,28 @@ text_color="white" type="string" top_delta="4"> - Post to My Profile Feed + Profile </text> <view_border bevel_style="in" follows="left|top|right" height="1" - left="10" + left="9" layout="topleft" name="hr" - right="-10" + right="-5" top_pad="5" /> <combo_box - follows="left|top" + follows="left|top|right" height="23" label="Resolution" layout="topleft" - left_delta="0" + left="10" + right="-5" name="profile_size_combo" - top_pad="10" - width="250"> + top_pad="5" + width="180"> <combo_box.item label="Current Window" name="CurrentWindow" @@ -68,132 +69,99 @@ name="Custom" value="[i-1,i-1]" /> </combo_box> - <layout_stack - animate="false" - follows="all" - height="270" - layout="bottomleft" - name="profile_image_params_ls" + <spinner + allow_text_entry="false" + decimal_digits="0" + follows="left|top" + height="20" + increment="32" + label="Width x Height" + label_width="90" + layout="topleft" + left="10" + max_val="6016" + min_val="32" + name="profile_snapshot_width" + top_pad="7" + width="144" /> + <spinner + allow_text_entry="false" + decimal_digits="0" + follows="left|top" + height="20" + increment="32" + label="" + label_width="0" + layout="topleft" + left_pad="0" + max_val="6016" + min_val="32" + name="profile_snapshot_height" + top_delta="0" + width="54" /> + <check_box + top_pad="12" + label="Constrain proportions" + layout="topleft" + left="10" + name="profile_keep_aspect_check" /> + <text + length="1" + follows="top|left|right" + height="16" + layout="topleft" + left="12" + name="caption_label" + right="-10" + top_pad="4" + type="string"> + Caption: + </text> + <text_editor + follows="top|left|right" + height="35" + layout="topleft" + left="10" + right="-5" + length="1" + max_length="700" + name="caption" + width="200" + top_pad="2" + type="string" + word_wrap="true"> + </text_editor> + <check_box + follows="left|top" + initial_value="true" + label="Include location" + layout="topleft" left_delta="0" - orientation="vertical" - top_pad="10" - right="-10"> - <layout_panel - follows="top|left|right" - height="55" - layout="topleft" - left="0" - name="profile_image_size_lp" - auto_resize="false" - top="0" - right="-1" - visible="true"> - <spinner - allow_text_entry="false" - decimal_digits="0" - follows="left|top" - height="20" - increment="32" - label="Width" - label_width="40" - layout="topleft" - left="10" - max_val="6016" - min_val="32" - name="profile_snapshot_width" - top_pad="10" - width="95" /> - <spinner - allow_text_entry="false" - decimal_digits="0" - follows="left|top" - height="20" - increment="32" - label="Height" - label_width="40" - layout="topleft" - left_pad="5" - max_val="6016" - min_val="32" - name="profile_snapshot_height" - top_delta="0" - width="95" /> - <check_box - height="10" - bottom_delta="20" - label="Constrain proportions" - layout="topleft" - left="10" - name="profile_keep_aspect_check" /> - </layout_panel> - <layout_panel - follows="top|left|right" - height="200" - layout="topleft" - left="0" - name="profile_image_metadata_lp" - auto_resize="true" - top="0" - right="-1" - visible="true"> - <text - length="1" - follows="top|left|right" - font="SansSerif" - height="16" - layout="topleft" - left="0" - name="caption_label" - right="-10" - top_pad="0" - type="string"> - Caption: - </text> - <text_editor - follows="all" - height="155" - layout="topleft" - left_delta="0" - length="1" - max_length="700" - name="caption" - right="-10" - top_pad="5" - type="string" - word_wrap="true"> - </text_editor> - <check_box - follows="left|bottom" - initial_value="true" - label="Include location" - layout="topleft" - left_delta="0" - name="add_location_cb" - top_pad="15" /> - </layout_panel> - </layout_stack> + height="18" + name="add_location_cb" + top_pad="3" /> <button follows="right|bottom" height="23" label="Cancel" layout="topleft" name="cancel_btn" - right="-32" - top="350" - width="100"> + right="-5" + top="337" + width="97"> <button.commit_callback function="PostToProfile.Cancel" /> </button> <button - follows="right|bottom" + follows="left|bottom" height="23" label="Post" layout="topleft" - left_delta="-106" + left="10" name="post_btn" top_delta="0" - width="100"> + width="97"> <button.commit_callback function="PostToProfile.Send" /> </button> -</panel> +</panel>
\ No newline at end of file diff --git a/indra/newview/skins/default/xui/en/panel_tools_texture.xml b/indra/newview/skins/default/xui/en/panel_tools_texture.xml index 426c0c4915..cb6b2fafd8 100644 --- a/indra/newview/skins/default/xui/en/panel_tools_texture.xml +++ b/indra/newview/skins/default/xui/en/panel_tools_texture.xml @@ -36,8 +36,9 @@ <color_swatch can_apply_immediately="true" follows="left|top" - height="45" + height="22" label="" + label_height="0" layout="topleft" left="10" name="colorswatch" diff --git a/indra/newview/skins/default/xui/en/panel_twitter_account.xml b/indra/newview/skins/default/xui/en/panel_twitter_account.xml index ee4f6396e1..b9049a0bba 100644 --- a/indra/newview/skins/default/xui/en/panel_twitter_account.xml +++ b/indra/newview/skins/default/xui/en/panel_twitter_account.xml @@ -1,6 +1,6 @@ <panel height="400" - width="304" + width="272" layout="topleft" name="panel_twitter_account"> <string @@ -15,9 +15,9 @@ follows="top|left" font="SansSerif" height="16" - left="9" + left="10" name="account_caption_label" - top="21" + top="5" type="string"> Not connected to Twitter. </text> @@ -28,19 +28,23 @@ follows="top|left" font="SansSerif" height="16" - left="9" + left="10" name="account_name_label" parse_urls="true" type="string"/> <panel layout="topleft" + follows="top|left" name="panel_buttons" height="345" - left="9"> + top_pad="3" + left="0"> <button layout="topleft" - follows="left|top" + follows="left|top|right" top_pad="9" + left="10" + right="-10" visible="true" height="23" label="Connect..." @@ -51,8 +55,10 @@ <button layout="topleft" - follows="left|top" + follows="left|top|right" top_delta="0" + left="10" + right="-10" height="23" label="Disconnect" name="disconnect_btn" @@ -65,9 +71,9 @@ length="1" follows="top|left" height="16" - left="0" + left="10" name="account_learn_more_label" - top_pad="20" + top_pad="5" type="string"> [http://community.secondlife.com/t5/English-Knowledge-Base/Second-Life-Share-Twitter/ta-p/2435453 Learn about posting to Twitter] </text> diff --git a/indra/newview/skins/default/xui/en/panel_twitter_photo.xml b/indra/newview/skins/default/xui/en/panel_twitter_photo.xml index c2be56da21..9a460ceead 100644 --- a/indra/newview/skins/default/xui/en/panel_twitter_photo.xml +++ b/indra/newview/skins/default/xui/en/panel_twitter_photo.xml @@ -3,31 +3,22 @@ width="304" layout="topleft" name="panel_twitter_photo"> - <layout_stack - layout="topleft" - border_size="0" - height="412" - follows="all" - orientation="vertical" - name="stack_photo" - top="8"> - <layout_panel - name="text_panel" - height="160"> <text length="1" + layout="topleft" follows="top|left|right" font="SansSerif" height="16" - left="9" + left="10" name="status_label" - top="3" + top="5" type="string"> What's happening? </text> <text length="1" follows="top|left" + layout="topleft" font="SansSerif" text_color="EmphasisColor" halign="right" @@ -35,15 +26,16 @@ width="30" left="227" name="status_counter_label" - top="3" + top="5" type="string"> 140 </text> <text_editor follows="left|top" + layout="topleft" height="87" width="250" - left="9" + left="10" length="1" max_length="140" name="photo_status" @@ -52,33 +44,32 @@ </text_editor> <check_box follows="left|top" + layout="topleft" initial_value="true" label="Include SL location" name="add_location_cb" - left="9" + left="10" height="16" - top_pad="10"/> + top_pad="8"/> <check_box follows="left|top" + layout="topleft" initial_value="true" label="Include a photo" name="add_photo_cb" - left="9" + left="10" height="16" - top_pad="10"/> - </layout_panel> - <layout_panel - name="snapshot_panel" - height="227"> + top_pad="1"/> <combo_box control_name="TwitterPhotoResolution" follows="left|top" - top="6" - left="9" + layout="topleft" + top_pad="5" + left="10" name="resolution_combobox" tool_tip="Image resolution" height="21" - width="135"> + width="124"> <combo_box.item label="Current Window" name="CurrentWindow" @@ -99,61 +90,76 @@ <combo_box control_name="TwitterPhotoFilters" follows="right|top" + layout="topleft" name="filters_combobox" tool_tip="Image filters" - top="6" - left="165" + top_delta="0" + right="-10" height="21" - width="135"> + width="124"> <combo_box.item label="No Filter" name="NoFilter" value="NoFilter" /> </combo_box> <panel + layout="topleft" height="150" width="250" visible="true" name="thumbnail_placeholder" - top="33" - follows="left|top" - left="9"> + top_pad="5" + right="-10" + follows="left|top|right" + left="10"> </panel> - <button - follows="left|top" - height="23" - label="Refresh" - left="9" - top_pad="5" - name="new_snapshot_btn" - tool_tip="Click to refresh" - visible="true" - width="100" > - <button.commit_callback - function="SocialSharing.RefreshPhoto" /> - </button> - <text + <text follows="left|top" + layout="topleft" font="SansSerif" text_color="EmphasisColor" height="14" - top_pad="-19" - left_pad="-30" + top_pad="2" + left="10" length="1" halign="center" name="working_lbl" translate="false" type="string" visible="true" - width="150"> + width="251"> Refreshing... </text> + <view_border + bevel_style="in" + follows="left|top" + layout="topleft" + height="1" + left="10" + name="refresh_border" + width="250" + top_pad="0"/> + <button + follows="left|top" + layout="topleft" + height="23" + label="Refresh" + left="10" + top_pad="5" + name="new_snapshot_btn" + tool_tip="Click to refresh" + visible="true" + width="100" > + <button.commit_callback + function="SocialSharing.RefreshPhoto" /> + </button> <button follows="right|top" + layout="topleft" height="23" label="Preview" - left="200" - top_pad="-19" + right="-10" + top_delta="0" name="big_preview_btn" tool_tip="Click to toggle preview" is_toggle="true" @@ -162,14 +168,11 @@ <button.commit_callback function="SocialSharing.BigPreview" /> </button> - </layout_panel> - <layout_panel - name="photo_button_panel" - height="25"> <button follows="left|top" - top="0" - left="9" + layout="topleft" + top_pad="3" + left="10" height="23" label="Tweet" name="post_photo_btn" @@ -178,16 +181,15 @@ function="SocialSharing.SendPhoto" /> </button> <button - follows="left|top" + follows="right|top" + layout="topleft" height="23" label="Cancel" name="cancel_photo_btn" - left_pad="15" + right="-10" top_delta="0" width="100"> <button.commit_callback function="SocialSharing.Cancel" /> </button> - </layout_panel> - </layout_stack> </panel> diff --git a/indra/newview/skins/default/xui/en/strings.xml b/indra/newview/skins/default/xui/en/strings.xml index 5fbc539a06..5dcb8e2cdf 100755 --- a/indra/newview/skins/default/xui/en/strings.xml +++ b/indra/newview/skins/default/xui/en/strings.xml @@ -233,6 +233,7 @@ Please try logging in again in a minute.</string> <string name="TooltipFlagNoScripts">No Scripts</string> <string name="TooltipLand">Land:</string> <string name="TooltipMustSingleDrop">Only a single item can be dragged here</string> + <string name="TooltipTooManyWearables">You can't wear a folder containing more than [AMOUNT] items. You can change this limit in Advanced > Show Debug Settings > WearFolderLimit.</string> <string name="TooltipPrice" value="L$[AMOUNT]: "/> <string name="TooltipOutboxDragToWorld">You can not rez items in your merchant outbox</string> diff --git a/indra/newview/skins/default/xui/en/teleport_strings.xml b/indra/newview/skins/default/xui/en/teleport_strings.xml index fdf41991cd..5a9a16d344 100755 --- a/indra/newview/skins/default/xui/en/teleport_strings.xml +++ b/indra/newview/skins/default/xui/en/teleport_strings.xml @@ -48,7 +48,10 @@ Go to 'Welcome Island Public' to repeat the tutorial. <message name="MustGetAgeRegion"> You must be age 18 or over to enter this region. </message> - </message_set> + <message name="RegionTPSpecialUsageBlocked"> + Unable to enter region. '[REGION_NAME]' is a Skill Gaming Region, and you must meet certain criteria in order to enter. For details, please review the [http://wiki.secondlife.com/wiki/Linden_Lab_Official:Skill_Gaming_in_Second_Life Skill Gaming FAQ]. + </message> + </message_set> <message_set name="progress"> <message name="sending_dest"> Sending to destination. diff --git a/indra/newview/skins/default/xui/es/floater_lagmeter.xml b/indra/newview/skins/default/xui/es/floater_lagmeter.xml new file mode 100644 index 0000000000..227689a194 --- /dev/null +++ b/indra/newview/skins/default/xui/es/floater_lagmeter.xml @@ -0,0 +1,154 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<floater name="floater_lagmeter" title="MEDIDOR DEL LAG"> + <floater.string name="max_title_msg"> + Medidor del lag + </floater.string> + <floater.string name="max_width_px"> + 360 + </floater.string> + <floater.string name="min_title_msg"> + Lag + </floater.string> + <floater.string name="min_width_px"> + 90 + </floater.string> + <floater.string name="client_text_msg"> + Cliente + </floater.string> + <floater.string name="client_frame_rate_critical_fps"> + 10 + </floater.string> + <floater.string name="client_frame_rate_warning_fps"> + 15 + </floater.string> + <floater.string name="client_frame_time_window_bg_msg"> + Normal, ventana en segundo plano + </floater.string> + <floater.string name="client_frame_time_critical_msg"> + Frames del cliente valorados por debajo de [CLIENT_FRAME_RATE_CRITICAL] + </floater.string> + <floater.string name="client_frame_time_warning_msg"> + Frames del cliente valorados entre [CLIENT_FRAME_RATE_CRITICAL] y [CLIENT_FRAME_RATE_WARNING] + </floater.string> + <floater.string name="client_frame_time_normal_msg"> + Normal + </floater.string> + <floater.string name="client_draw_distance_cause_msg"> + Posible causa: distancia de dibujo fijada muy alta + </floater.string> + <floater.string name="client_texture_loading_cause_msg"> + Posible causa: imágenes cargándose + </floater.string> + <floater.string name="client_texture_memory_cause_msg"> + Posible causa: demasiadas imágenes en la memoria + </floater.string> + <floater.string name="client_complex_objects_cause_msg"> + Posible causa: demasiados objetos complejos en la escena + </floater.string> + <floater.string name="network_text_msg"> + Red + </floater.string> + <floater.string name="network_packet_loss_critical_pct"> + 10 + </floater.string> + <floater.string name="network_packet_loss_warning_pct"> + 5 + </floater.string> + <floater.string name="network_packet_loss_critical_msg"> + La conexión deja caer más del [NETWORK_PACKET_LOSS_CRITICAL]% de los paquetes + </floater.string> + <floater.string name="network_packet_loss_warning_msg"> + La conexión deja caer [NETWORK_PACKET_LOSS_WARNING]%-[NETWORK_PACKET_LOSS_CRITICAL]% de los paquetes + </floater.string> + <floater.string name="network_performance_normal_msg"> + Normal + </floater.string> + <floater.string name="network_ping_critical_ms"> + 600 + </floater.string> + <floater.string name="network_ping_warning_ms"> + 300 + </floater.string> + <floater.string name="network_ping_critical_msg"> + El tiempo de conexión -ping- supera los [NETWORK_PING_CRITICAL] ms + </floater.string> + <floater.string name="network_ping_warning_msg"> + El tiempo de conexión -ping- es de [NETWORK_PING_WARNING]-[NETWORK_PING_CRITICAL] ms + </floater.string> + <floater.string name="network_packet_loss_cause_msg"> + Quizá una mala conexión o un ancho de banda fijado demasiado alto. + </floater.string> + <floater.string name="network_ping_cause_msg"> + Quizá una mala conexión o una aplicación de archivos compartidos. + </floater.string> + <floater.string name="server_text_msg"> + Servidor + </floater.string> + <floater.string name="server_frame_rate_critical_fps"> + 20 + </floater.string> + <floater.string name="server_frame_rate_warning_fps"> + 30 + </floater.string> + <floater.string name="server_single_process_max_time_ms"> + 20 + </floater.string> + <floater.string name="server_frame_time_critical_msg"> + Frecuencia (framerate) por debajo de [SERVER_FRAME_RATE_CRITICAL] + </floater.string> + <floater.string name="server_frame_time_warning_msg"> + Frecuencia (framerate) entre [SERVER_FRAME_RATE_CRITICAL] y [SERVER_FRAME_RATE_WARNING] + </floater.string> + <floater.string name="server_frame_time_normal_msg"> + Normal + </floater.string> + <floater.string name="server_physics_cause_msg"> + Posible causa: demasiados objetos fÃsicos + </floater.string> + <floater.string name="server_scripts_cause_msg"> + Posible causa: demasiados objetos con script + </floater.string> + <floater.string name="server_net_cause_msg"> + Posible causa: demasiado tráfico en la red + </floater.string> + <floater.string name="server_agent_cause_msg"> + Posible causa: demasiada gente moviéndose en la región + </floater.string> + <floater.string name="server_images_cause_msg"> + Posible causa: demasiados cálculos de imáganes + </floater.string> + <floater.string name="server_generic_cause_msg"> + Posible causa: carga del simulador muy pesada + </floater.string> + <floater.string name="smaller_label"> + >> + </floater.string> + <floater.string name="bigger_label"> + << + </floater.string> + <button label="" label_selected="" name="client_lagmeter" tool_tip="Estado del lag del cliente"/> + <text name="client"> + Cliente + </text> + <text font="SansSerifSmall" name="client_text"> + Normal + </text> + <text left="30" name="client_lag_cause" right="-10"/> + <button label="" label_selected="" name="network_lagmeter" tool_tip="Estado del lag de la red"/> + <text name="network"> + Red + </text> + <text font="SansSerifSmall" name="network_text"> + Normal + </text> + <text left="30" name="network_lag_cause" right="-10"/> + <button label="" label_selected="" name="server_lagmeter" tool_tip="Estado del lag del servidor"/> + <text name="server"> + Servidor + </text> + <text font="SansSerifSmall" name="server_text"> + Normal + </text> + <text left="30" name="server_lag_cause" right="-32"/> + <button label=">>" name="minimize" tool_tip="Cambia el tamaño de la ventana"/> +</floater> diff --git a/indra/newview/skins/default/xui/es/floater_region_restarting.xml b/indra/newview/skins/default/xui/es/floater_region_restarting.xml new file mode 100644 index 0000000000..d55c8eff17 --- /dev/null +++ b/indra/newview/skins/default/xui/es/floater_region_restarting.xml @@ -0,0 +1,23 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<floater name="region_restarting" title="REGIÓN REINICIANDO"> + <string name="RegionName"> + La región en la que te encuentras ([NAME]) se va a reiniciar. + +Si permaneces en esta región serás desconectado. + </string> + <string name="RestartSeconds"> + Segundos hasta el reinicio +[SECONDS] + </string> + <panel name="layout_panel_1"> + <text name="region_name"> + La región en la que te encuentras (-el nombre de región más largo-) se va a reiniciar. + +Si permaneces en esta región serás desconectado. + </text> + <text name="restart_seconds"> + Segundos hasta el reinicio + 32767 + </text> + </panel> +</floater> diff --git a/indra/newview/skins/default/xui/es/floater_scene_load_stats.xml b/indra/newview/skins/default/xui/es/floater_scene_load_stats.xml new file mode 100644 index 0000000000..f625d5257c --- /dev/null +++ b/indra/newview/skins/default/xui/es/floater_scene_load_stats.xml @@ -0,0 +1,64 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<floater name="Scene Load Statistics" title="ESTADÃSTICAS DE CARGA DE ESCENA"> + <button label="Pausa" name="playpause"/> + <scroll_container name="statistics_scroll"> + <container_view name="statistics_view"> + <stat_view label="Básica" name="basic"> + <stat_bar label="Diferencia de pÃxeles de fotograma" name="frame difference"/> + <stat_bar label="Datos de UDP recibidos" name="bandwidth"/> + <stat_bar label="Pérdida de paquetes" name="packet_loss"/> + </stat_view> + <stat_view label="Avanzado" name="advanced"> + <stat_view label="Renderización" name="render"> + <stat_bar label="Objetos en total" name="objs"/> + <stat_bar label="Objetos nuevos" name="newobjs"/> + <stat_bar label="Ãndice de aciertos de caché de objetos" name="object_cache_hits"/> + </stat_view> + <stat_view label="Textura" name="texture"> + <stat_bar label="Ãndice de aciertos de caché" name="texture_cache_hits"/> + <stat_bar label="Latencia de lectura de caché" name="texture_cache_read_latency"/> + <stat_bar label="Número" name="numimagesstat"/> + <stat_bar label="Raw: número" name="numrawimagesstat"/> + </stat_view> + <stat_view label="Red" name="network"> + <stat_bar label="Paquetes salientes" name="packetsinstat"/> + <stat_bar label="Paquetes entrantes" name="packetsoutstat"/> + <stat_bar label="Objetos" name="objectdatareceived"/> + <stat_bar label="Textura" name="texturedatareceived"/> + <stat_bar label="Asset" name="assetudpdatareceived"/> + <stat_bar label="Capas" name="layersdatareceived"/> + <stat_bar label="Entrando ahora" name="messagedatain"/> + <stat_bar label="Saliendo ahora" name="messagedataout"/> + <stat_bar label="Operaciones VFS pendientes" name="vfspendingoperations"/> + </stat_view> + </stat_view> + <stat_view label="Simulador" name="sim"> + <stat_bar label="Objetos" name="simobjects"/> + <stat_bar label="Objetos activos" name="simactiveobjects"/> + <stat_bar label="Scripts activos" name="simactivescripts"/> + <stat_bar label="Paquetes salientes" name="siminpps"/> + <stat_bar label="Paquetes entrantes" name="simoutpps"/> + <stat_bar label="Descargas pendientes" name="simpendingdownloads"/> + <stat_bar label="Subidas pendientes" name="simpendinguploads"/> + <stat_bar label="Total de bytes no reconocidos" name="simtotalunackedbytes"/> + <stat_view label="Tiempo (ms)" name="simperf"> + <stat_bar label="Tiempo total de los frames" name="simframemsec"/> + <stat_bar label="Tiempo de red" name="simnetmsec"/> + <stat_bar label="Physics Time" name="simsimphysicsmsec"/> + <stat_bar label="Tiempo de la simulación" name="simsimothermsec"/> + <stat_bar label="Tiempo de los agentes" name="simagentmsec"/> + <stat_bar label="Tiempo de las imágenes" name="simimagesmsec"/> + <stat_bar label="Tiempo de los scripts" name="simscriptmsec"/> + <stat_bar label="Tiempo libre" name="simsparemsec"/> + <stat_view label="Datos de tiempo (ms)" name="timedetails"> + <stat_bar label="Paso de fÃsica" name="simsimphysicsstepmsec"/> + <stat_bar label="Actualizar formas fÃsicas" name="simsimphysicsshapeupdatemsec"/> + <stat_bar label="Otros (FÃsica)" name="simsimphysicsothermsec"/> + <stat_bar label="Tiempo de suspensión" name="simsleepmsec"/> + <stat_bar label="Bombea E/S" name="simpumpiomsec"/> + </stat_view> + </stat_view> + </stat_view> + </container_view> + </scroll_container> +</floater> diff --git a/indra/newview/skins/default/xui/es/floater_stats.xml b/indra/newview/skins/default/xui/es/floater_stats.xml index 00601920f2..7ecf5fafae 100755 --- a/indra/newview/skins/default/xui/es/floater_stats.xml +++ b/indra/newview/skins/default/xui/es/floater_stats.xml @@ -4,17 +4,20 @@ <container_view name="statistics_view"> <stat_view label="Básico" name="basic"> <stat_bar label="FPS" name="fps"/> - <stat_bar label="Ancho de banda" name="bandwidth"/> + <stat_bar label="Datos de UDP recibidos" name="bandwidth"/> <stat_bar label="Pérdida de paquetes" name="packet_loss"/> <stat_bar label="Ping del Sim" name="ping"/> </stat_view> <stat_view label="Avanzado" name="advanced"> <stat_view label="Renderización" name="render"> - <stat_bar label="KTris generados por fotograma" name="ktrisframe"/> - <stat_bar label="KTris generados por segundo" name="ktrissec"/> + <stat_bar label="KTris por fotograma" name="ktrisframe"/> + <stat_bar label="KTris por segundo" name="ktrissec"/> <stat_bar label="Objetos en total" name="objs"/> <stat_bar label="Objetos nuevos" name="newobjs"/> <stat_bar label="Ãndice de aciertos de caché de objetos" name="object_cache_hits"/> + <stat_bar label="Consultas de oclusión realizadas" name="occlusion_queries"/> + <stat_bar label="Objetos ocluidos" name="occluded"/> + <stat_bar label="Objeto no ocluido" name="unoccluded"/> </stat_view> <stat_view label="Textura" name="texture"> <stat_bar label="Ãndice de aciertos de caché" name="texture_cache_hits"/> @@ -26,15 +29,32 @@ <stat_bar label="Raw Mem" name="rawmemstat"/> <stat_bar label="Bound Mem" name="glboundmemstat"/> </stat_view> + <stat_view label="Memoria utilizada" name="memory"> + <stat_bar label="LLTrace" name="LLTrace"/> + <stat_bar label="UI" name="LLView"/> + <stat_bar label="Fuentes" name="LLFontFreetype"/> + <stat_bar label="Inventario" name="LLInventoryObject"/> + <stat_bar label="Objetos del visor" name="LLViewerObject"/> + <stat_bar label="Datos de grupo de árbol octal" name="LLViewerOctreeGroup"/> + <stat_bar label="Datos de árbol octal" name="LLViewerOctreeEntry"/> + <stat_bar label="Caché de objetos del visor" name="LLVOCacheEntry"/> + <stat_bar label="Objetos dibujables" name="LLDrawable"/> + <stat_bar label="Datos de cara" name="LLFace"/> + <stat_bar label="Información de dibujo" name="LLDrawInfo"/> + <stat_bar label="Datos de textura" name="LLTexture"/> + <stat_bar label="Datos de imagen" name="LLImage"/> + <stat_bar label="Datos de imagen GL" name="LLImageGL"/> + <stat_bar label="Memorias intermedias de vértice" name="LLVertexBuffer"/> + </stat_view> <stat_view label="Red" name="network"> <stat_bar label="Paquetes salientes" name="packetsinstat"/> <stat_bar label="Paquetes entrantes" name="packetsoutstat"/> - <stat_bar label="Objetos" name="objectkbitstat"/> - <stat_bar label="Textura" name="texturekbitstat"/> - <stat_bar label="Asset" name="assetkbitstat"/> - <stat_bar label="Capas" name="layerskbitstat"/> - <stat_bar label="Entrando ahora" name="actualinkbitstat"/> - <stat_bar label="Saliendo ahora" name="actualoutkbitstat"/> + <stat_bar label="Objetos" name="objectdatareceived"/> + <stat_bar label="Textura" name="texturedatareceived"/> + <stat_bar label="Asset" name="assetudpdatareceived"/> + <stat_bar label="Capas" name="layersdatareceived"/> + <stat_bar label="Entrando ahora" name="messagedatain"/> + <stat_bar label="Saliendo ahora" name="messagedataout"/> <stat_bar label="Operaciones VFS pendientes" name="vfspendingoperations"/> </stat_view> </stat_view> @@ -53,7 +73,8 @@ <stat_bar label="Pasos de silueta omitidos" name="simsimskippedsilhouettesteps"/> <stat_bar label="Personajes actualizados" name="simsimpctsteppedcharacters"/> </stat_view> - <stat_view label="Tiempo (ms)" name="simperf"> + <stat_bar label="Total de datos no reconocidos" name="simtotalunackedbytes"/> + <stat_view label="Tiempo" name="simperf"> <stat_bar label="Tiempo total de los frames" name="simframemsec"/> <stat_bar label="Tiempo de red" name="simnetmsec"/> <stat_bar label="Physics Time" name="simsimphysicsmsec"/> @@ -62,7 +83,7 @@ <stat_bar label="Tiempo de las imágenes" name="simimagesmsec"/> <stat_bar label="Tiempo de los scripts" name="simscriptmsec"/> <stat_bar label="Tiempo libre" name="simsparemsec"/> - <stat_view label="Datos de tiempo (ms)" name="timedetails"> + <stat_view label="Detalles de tiempo" name="timedetails"> <stat_bar label="Paso de fÃsica" name="simsimphysicsstepmsec"/> <stat_bar label="Actualizar formas fÃsicas" name="simsimphysicsshapeupdatemsec"/> <stat_bar label="Otros (FÃsica)" name="simsimphysicsothermsec"/> diff --git a/indra/newview/skins/default/xui/es/menu_avatar_icon.xml b/indra/newview/skins/default/xui/es/menu_avatar_icon.xml index fe7331a108..e3299b0a6b 100755 --- a/indra/newview/skins/default/xui/es/menu_avatar_icon.xml +++ b/indra/newview/skins/default/xui/es/menu_avatar_icon.xml @@ -2,6 +2,7 @@ <menu name="Avatar Icon Menu"> <menu_item_call label="Ver el perfil" name="Show Profile"/> <menu_item_call label="Enviar un MI..." name="Send IM"/> + <menu_item_call label="Petición de teleporte" name="Request Teleport"/> <menu_item_call label="Añadir como amigo..." name="Add Friend"/> <menu_item_call label="Quitar de los amigos..." name="Remove Friend"/> </menu> diff --git a/indra/newview/skins/default/xui/es/menu_inventory.xml b/indra/newview/skins/default/xui/es/menu_inventory.xml index 803d3f1331..cd5bc7917d 100755 --- a/indra/newview/skins/default/xui/es/menu_inventory.xml +++ b/indra/newview/skins/default/xui/es/menu_inventory.xml @@ -69,6 +69,7 @@ <menu_item_call label="Escuchar" name="Sound Play"/> <menu_item_call label="Copiar la SLurl" name="url_copy"/> <menu_item_call label="Acerca del hito" name="About Landmark"/> + <menu_item_call label="Mostrar en el mapa" name="show_on_map"/> <menu_item_call label="Escuchar en el mundo" name="Animation Play"/> <menu_item_call label="Ejecutarla para usted" name="Animation Audition"/> <menu_item_call label="Enviar un mensaje instantáneo" name="Send Instant Message"/> diff --git a/indra/newview/skins/default/xui/es/menu_login.xml b/indra/newview/skins/default/xui/es/menu_login.xml index 2286d0527a..336572f0cb 100755 --- a/indra/newview/skins/default/xui/es/menu_login.xml +++ b/indra/newview/skins/default/xui/es/menu_login.xml @@ -5,7 +5,15 @@ <menu_item_call label="Salir de [APP_NAME]" name="Quit"/> </menu> <menu label="Ayuda" name="Help"> - <menu_item_call label="Ayuda de [SECOND_LIFE]" name="Second Life Help"/> + <menu_item_call label="Cómo..." name="How To"/> + <menu_item_call label="GuÃa rápida" name="Quickstart"/> + <menu_item_call label="Base de Conocimientos" name="Knowledge Base"/> + <menu_item_call label="Wiki" name="Wiki"/> + <menu_item_call label="Foros comunitarios" name="Community Forums"/> + <menu_item_call label="Portal de soporte" name="Support portal"/> + <menu_item_call label="Noticias de [SECOND_LIFE]" name="Second Life News"/> + <menu_item_call label="Blogs de [SECOND_LIFE]" name="Second Life Blogs"/> + <menu_item_call label="Informar de un fallo" name="Report Bug"/> <menu_item_call label="Acerca de [APP_NAME]" name="About Second Life"/> </menu> <menu_item_check label="Mostrar el menú 'Debug'" name="Show Debug Menu"/> diff --git a/indra/newview/skins/default/xui/es/menu_teleport_history_item.xml b/indra/newview/skins/default/xui/es/menu_teleport_history_item.xml index c482907812..1ff555b727 100755 --- a/indra/newview/skins/default/xui/es/menu_teleport_history_item.xml +++ b/indra/newview/skins/default/xui/es/menu_teleport_history_item.xml @@ -2,5 +2,5 @@ <context_menu name="Teleport History Item Context Menu"> <menu_item_call label="Teleportar" name="Teleport"/> <menu_item_call label="Más información" name="More Information"/> - <menu_item_call label="Copiar al portapapeles" name="CopyToClipboard"/> + <menu_item_call label="Copiar la SLurl" name="CopyToClipboard"/> </context_menu> diff --git a/indra/newview/skins/default/xui/es/menu_viewer.xml b/indra/newview/skins/default/xui/es/menu_viewer.xml index e4fe871683..d5208f3d8f 100755 --- a/indra/newview/skins/default/xui/es/menu_viewer.xml +++ b/indra/newview/skins/default/xui/es/menu_viewer.xml @@ -71,11 +71,11 @@ <menu_item_check label="Menú Avanzado" name="Show Advanced Menu"/> </menu> <menu label="Sol" name="Sun"> - <menu_item_call label="Amanecer" name="Sunrise"/> - <menu_item_call label="MediodÃa" name="Noon"/> - <menu_item_call label="Atardecer" name="Sunset"/> - <menu_item_call label="Medianoche" name="Midnight"/> - <menu_item_call label="Usar configuración de región" name="Use Region Settings"/> + <menu_item_check label="Amanecer" name="Sunrise"/> + <menu_item_check label="MediodÃa" name="Noon"/> + <menu_item_check label="Atardecer" name="Sunset"/> + <menu_item_check label="Medianoche" name="Midnight"/> + <menu_item_check label="Usar configuración de región" name="Use Region Settings"/> </menu> <menu label="Editor de entorno" name="Environment Editor"> <menu_item_call label="Configuración del entorno..." name="Environment Settings"/> @@ -164,8 +164,6 @@ </menu> <menu label="Ayuda" name="Help"> <menu_item_call label="Cómo..." name="How To"/> - <menu_item_call label="Ayuda de [SECOND_LIFE]" name="Second Life Help"/> - <menu_item_call label="GuÃa del usuario" name="User’s guide"/> <menu_item_call label="Base de Conocimientos" name="Knowledge Base"/> <menu_item_call label="Wiki" name="Wiki"/> <menu_item_call label="Foros comunitarios" name="Community Forums"/> @@ -187,6 +185,7 @@ <menu label="Herramientas de rendimiento" name="Performance Tools"> <menu_item_call label="Medidor de lag" name="Lag Meter"/> <menu_item_check label="EstadÃsticas" name="Statistics Bar"/> + <menu_item_call label="EstadÃsticas de carga de escenas" name="Scene Load Statistics"/> <menu_item_check label="Mostrar el peso del dibujo de los avatares" name="Avatar Rendering Cost"/> </menu> <menu label="Realzado y Visibilidad" name="Highlighting and Visibility"> @@ -248,6 +247,7 @@ <menu_item_check label="Fast Timers" name="Fast Timers"/> <menu_item_check label="Memory" name="Memory"/> <menu_item_check label="Datos de la escena" name="Scene Statistics"/> + <menu_item_check label="Monitor de carga de escenas" name="Scene Loading Monitor"/> <menu_item_call label="Consola de depuración de obtención de texturas" name="Texture Fetch Debug Console"/> <menu_item_call label="Region Info to Debug Console" name="Region Info to Debug Console"/> <menu_item_check label="Camera" name="Camera"/> @@ -279,6 +279,7 @@ <menu_item_check label="Randomize Framerate" name="Randomize Framerate"/> <menu_item_check label="Frame Test" name="Frame Test"/> <menu_item_call label="Perfil del fotograma" name="Frame Profile"/> + <menu_item_call label="Criterio de referencia" name="Benchmark"/> </menu> <menu label="Render Metadata" name="Render Metadata"> <menu_item_check label="Normales" name="Normals"/> @@ -286,6 +287,7 @@ <menu_item_check label="Actualizar el tipo" name="Update Type"/> <menu_item_check label="Información sobre el nivel de detalle" name="LOD Info"/> <menu_item_check label="Crear cola" name="Build Queue"/> + <menu_item_check label="Articulaciones" name="Joints"/> <menu_item_check label="Vectores de viento" name="Wind Vectors"/> <menu_item_check label="Complejidad del renderizado" name="rendercomplexity"/> <menu_item_check label="Bytes de adjunto" name="attachment bytes"/> @@ -311,6 +313,7 @@ <menu_item_check label="Render Attached Lights" name="Render Attached Lights"/> <menu_item_check label="Render Attached Particles" name="Render Attached Particles"/> <menu_item_check label="Hover Glow Objects" name="Hover Glow Objects"/> + <menu_item_call label="Limpiar caché inmediatamente" name="Cache Clear"/> </menu> <menu label="Red" name="Network"> <menu_item_check label="Pause Avatar" name="AgentPause"/> @@ -326,7 +329,6 @@ <menu_item_call label="Prueba de navegadores de medios" name="Web Browser Test"/> <menu_item_call label="Navegador de contenido web" name="Web Content Browser"/> <menu_item_call label="Print Selected Object Info" name="Print Selected Object Info"/> - <menu_item_check label="Consola de depuración de región" name="Region Debug Console"/> <menu_item_check label="Debug Clicks" name="Debug Clicks"/> <menu_item_check label="Debug Mouse Events" name="Debug Mouse Events"/> </menu> diff --git a/indra/newview/skins/default/xui/es/notifications.xml b/indra/newview/skins/default/xui/es/notifications.xml index d4451ad251..ae421cdfd0 100755 --- a/indra/newview/skins/default/xui/es/notifications.xml +++ b/indra/newview/skins/default/xui/es/notifications.xml @@ -114,15 +114,15 @@ Puedes consultar más información en el [[MARKETPLACE_IMPORTS_URL] registro de <usetemplate name="okbutton" yestext="OK"/> </notification> <notification name="OutboxImportFailed"> - Error de transferencia + Error de la transferencia: '[ERROR_CODE]' -No se han enviado carpetas al Mercado a causa de un error del sistema o de la red. Vuelve a intentarlo más tarde. +No se han enviado carpetas al Mercado a causa de un error del sistema o de la red. Vuelve a intentarlo más tarde. <usetemplate name="okbutton" yestext="OK"/> </notification> <notification name="OutboxInitFailed"> - Error al inicializar el mercado + Error de inicialización del Mercado: '[ERROR_CODE]' -La inicialización del mercado ha fallado por un error del sistema o de la red. Vuelve a intentarlo más tarde. +La inicialización del mercado ha fallado por un error del sistema o de la red. Vuelve a intentarlo más tarde. <usetemplate name="okbutton" yestext="OK"/> </notification> <notification name="CompileQueueSaveText"> @@ -1739,6 +1739,10 @@ excediendo el lÃmite de [LIMIT]. ¿Seguro que quieres teleportarte a <nolink>[LOCATION]</nolink>? <usetemplate ignoretext="Confirmar que quiero teleportarme a un hito" name="okcancelignore" notext="Cancelar" yestext="Teleportar"/> </notification> + <notification name="TeleportViaSLAPP"> + ¿Seguro que quieres teleportarte a <nolink>[LOCATION]</nolink>? + <usetemplate ignoretext="Confirmar el teleporte mediante SLAPP" name="okcancelignore" notext="Cancelar" yestext="Teleportarte"/> + </notification> <notification name="TeleportToPick"> ¿Teleportarte a [PICK]? <usetemplate ignoretext="Confirmar el teleporte a una localización de los Destacados" name="okcancelignore" notext="Cancelar" yestext="Teleportar"/> @@ -1949,6 +1953,9 @@ Se cambiarán miles de regiones, y se provocará un colapso en el espacio del se <notification name="ProblemAddingEstateManager"> Hay problemas al añadir un administrador nuevo del estado. Uno o más estados deben de tener llena la lista de administradores. </notification> + <notification name="ProblemAddingEstateBanManager"> + No se puede añadir el administrador o propietario de un estado a la lista de expulsados. + </notification> <notification name="ProblemAddingEstateGeneric"> Hay problemas al añadir a la lista del estado. Uno o más estados deben de tener llena la lista. </notification> @@ -3028,9 +3035,9 @@ Consulta los detalles en el archivo de registro. <nolink>[ITEMS]</nolink> -Con los siguientes residentes: +Con los siguientes Residentes: -[RESIDENTS] +<nolink>[RESIDENTS]</nolink> <usetemplate name="okcancelbuttons" notext="Cancelar" yestext="OK"/> </notification> <notification name="ShareFolderConfirmation"> @@ -3042,7 +3049,7 @@ Con los siguientes residentes: Con los siguientes Residentes: -[RESIDENTS] +<nolink>[RESIDENTES]</nolink> <usetemplate name="okcancelbuttons" notext="Cancelar" yestext="Aceptar"/> </notification> <notification name="ItemsShared"> @@ -3495,10 +3502,6 @@ Prueba otra vez dentro de un minuto. <notification name="EjectComingSoon"> Te han expulsado de aquà y tienes [EJECT_TIME] segundos para salir. </notification> - <notification name="NoEnterServerFull"> - No puedes entrar en esta región porque -el servidor está lleno. - </notification> <notification name="SaveBackToInvDisabled"> Se ha deshabilitado Devolver el objeto a mi inventario. </notification> @@ -3688,6 +3691,9 @@ el servidor está lleno. <notification name="LinkFailedTooMuchPhysics"> El objeto utiliza una cantidad excesiva de recursos de fÃsica; se ha desactivado su dinámica. </notification> + <notification name="EstateManagerFailedllTeleportHome"> + El objeto '[OBJECT_NAME]' de [SLURL] no puede teleportar a los administradores del estado a la base. + </notification> <notification name="TeleportedHomeByObjectOnParcel"> Has sido teleportado al origen por el objeto '[OBJECT_NAME]' de la parcela '[PARCEL_NAME]' </notification> @@ -3878,13 +3884,18 @@ el servidor está lleno. La selección no contiene suficientes parcelas alquiladas para unirlas. </notification> <notification name="CantDivideLandMultipleParcelsSelected"> - No se puede dividir el terreno.\nHay varias parcelas seleccionadas.\nPrueba a seleccionar un terreno más pequeño. + No se puede dividir el terreno. +Hay varias parcelas seleccionadas. +Prueba a seleccionar un terreno más pequeño. </notification> <notification name="CantDivideLandCantFindParcel"> - No se puede dividir el terreno.\nNo se encuentra la parcela.\nAvÃsanos con Ayuda -> Notificar fallo... + No se puede dividir el terreno. +No se encuentra la parcela. +NotifÃcalo con Ayuda -> Informar de un fallo... </notification> <notification name="CantDivideLandWholeParcelSelected"> - No se puede dividir el terreno. Está seleccionada la parcela completa.\nPrueba a seleccionar un terreno más pequeño. + No se puede dividir el terreno. Esta seleccionada una parcela completa. +Prueba a seleccionar un terreno más pequeño. </notification> <notification name="LandHasBeenDivided"> El terreno se ha dividido. @@ -4024,4 +4035,8 @@ el servidor está lleno. No se pueden mover los archivos. Ruta anterior restaurada. <usetemplate ignoretext="No se pueden mover los archivos. Ruta anterior restaurada." name="okignore" yestext="OK"/> </notification> + <notification name="ChatHistoryIsBusyAlert"> + El archivo de historial de chat todavÃa está realizando la operación anterior. Repite la operación dentro de unos minutos o inicia un chat con otra persona. + <usetemplate name="okbutton" yestext="OK"/> + </notification> </notifications> diff --git a/indra/newview/skins/default/xui/es/panel_group_info_sidetray.xml b/indra/newview/skins/default/xui/es/panel_group_info_sidetray.xml index 09c4eec4d9..18eaa834da 100755 --- a/indra/newview/skins/default/xui/es/panel_group_info_sidetray.xml +++ b/indra/newview/skins/default/xui/es/panel_group_info_sidetray.xml @@ -20,7 +20,7 @@ <layout_panel name="group_accordions"> <accordion name="groups_accordion"> <accordion_tab name="group_general_tab" title="General"/> - <accordion_tab name="group_roles_tab" title="Roles"/> + <accordion_tab name="group_roles_tab" title="Miembros y Roles"/> <accordion_tab name="group_notices_tab" title="Avisos"/> <accordion_tab name="group_land_tab" title="Terreno/Bienes"/> </accordion> diff --git a/indra/newview/skins/default/xui/es/panel_group_roles.xml b/indra/newview/skins/default/xui/es/panel_group_roles.xml index 390b4e2e9d..ced40cca43 100755 --- a/indra/newview/skins/default/xui/es/panel_group_roles.xml +++ b/indra/newview/skins/default/xui/es/panel_group_roles.xml @@ -20,6 +20,7 @@ Seleccione varios nombres manteniendo pulsada la tecla Ctrl y pulsando en cada u <name_list.columns label="Miembro" name="name"/> <name_list.columns label="Donaciones" name="donated"/> <name_list.columns label="Estatus" name="online"/> + <name_list.columns label="Cargo" name="title"/> </name_list> <button label="Invitar" name="member_invite"/> <button label="Expulsar" name="member_eject"/> diff --git a/indra/newview/skins/default/xui/es/panel_region_debug.xml b/indra/newview/skins/default/xui/es/panel_region_debug.xml index 71bdba1a25..f6676967f5 100755 --- a/indra/newview/skins/default/xui/es/panel_region_debug.xml +++ b/indra/newview/skins/default/xui/es/panel_region_debug.xml @@ -7,11 +7,8 @@ desconocida </text> <check_box label="Desactivar los scripts" name="disable_scripts_check" tool_tip="Descativar todos los scripts en esta región"/> - <button label="?" left="215" name="disable_scripts_help"/> <check_box label="Desactivar las colisiones" name="disable_collisions_check" tool_tip="Desactiva las colisiones (no las de avatares) en esta región"/> - <button label="?" left="215" name="disable_collisions_help"/> <check_box label="Desactivar las propiedades fÃsicas" name="disable_physics_check" tool_tip="Desactiva toda la fÃsica en esta región"/> - <button label="?" left="215" name="disable_physics_help"/> <button label="Aplicar" name="apply_btn"/> <text name="objret_text_lbl" width="130"> Devolver el objeto @@ -31,10 +28,8 @@ <check_box label="En cada región de este estado" name="return_estate_wide" tool_tip="Devolver los objetos de todas las regiones que forman este estado"/> <button label="Devolver" name="return_btn"/> <button label="Listar los objetos que colisionan..." name="top_colliders_btn" tool_tip="Lista de los objetos con más posibles colisiones potenciales" width="280"/> - <button label="?" left="297" name="top_colliders_help"/> - <button label="Listar los scripts según su uso..." name="top_scripts_btn" tool_tip="Lista de los objetos que más tiempo emplean ejecutando scripts" width="280"/> - <button label="?" left="297" name="top_scripts_help"/> <button label="Reiniciar la región" name="restart_btn" tool_tip="Cuenta atrás de 2 minutos y reiniciar la región"/> - <button label="?" name="restart_help"/> + <button label="Listar los scripts según su uso..." name="top_scripts_btn" tool_tip="Lista de los objetos que más tiempo emplean ejecutando scripts" width="280"/> <button label="Cancelar reinicio" name="cancel_restart_btn" tool_tip="Cancelar el reinicio de región"/> + <button label="Consola de depuración de región" name="region_debug_console_btn" tool_tip="Abrir consola de depuración de región"/> </panel> diff --git a/indra/newview/skins/default/xui/es/panel_region_general.xml b/indra/newview/skins/default/xui/es/panel_region_general.xml index 453d1fe43c..82149e1c7c 100755 --- a/indra/newview/skins/default/xui/es/panel_region_general.xml +++ b/indra/newview/skins/default/xui/es/panel_region_general.xml @@ -20,12 +20,12 @@ </text> <check_box label="No permitir modificar el terreno" name="block_terraform_check"/> <check_box label="Prohibir volar" name="block_fly_check"/> + <check_box label="Bloquear el vuelo sobre parcelas" name="block_fly_over_check" tool_tip="Extender las comprobaciones de acceso en vertical para impedir el vuelo sobre una parcela"/> <check_box label="Permitir el daño" name="allow_damage_check"/> <check_box label="Impedir los 'empujones'" name="restrict_pushobject"/> <check_box label="Permitir la reventa del terreno" name="allow_land_resell_check"/> <check_box label="Permitir unir/dividir el terreno" name="allow_parcel_changes_check"/> <check_box label="Bloquear el mostrar el terreno en la búsqueda" name="block_parcel_search_check" tool_tip="Permitir que la gente vea esta región y sus parcelas en los resultados de la búsqueda."/> - <check_box label="Permitir objetos de red" name="mesh_rez_enabled_check" tool_tip="Permitir que los usuarios creen objetos de red en esta región"/> <spinner label="Nº máximo de avatares" label_width="120" name="agent_limit_spin" width="180"/> <spinner label="Plus de objetos" label_width="120" name="object_bonus_spin" width="180"/> <text label="Calificación" name="access_text"> diff --git a/indra/newview/skins/default/xui/es/sidepanel_inventory.xml b/indra/newview/skins/default/xui/es/sidepanel_inventory.xml index 9ce14c856f..1e25a4a4a2 100755 --- a/indra/newview/skins/default/xui/es/sidepanel_inventory.xml +++ b/indra/newview/skins/default/xui/es/sidepanel_inventory.xml @@ -14,7 +14,7 @@ <text name="inbox_fresh_new_count"> [NUM] nuevos </text> - <panel tool_tip="Drag and drop items to your inventory to manage and use them"> + <panel name="inbox_inventory_placeholder_panel" tool_tip="Arrastra y coloca los artÃculos en tu inventario para poder utilizarlos"> <text name="inbox_inventory_placeholder"> Aquà se entregarán las compras realizadas en el mercado. </text> @@ -33,8 +33,8 @@ <layout_panel name="shop_btn_lp"> <button label="Comprar" name="shop_btn" tool_tip="Abrir la página web del mercado"/> <button label="Ponerme" name="wear_btn" tool_tip="Ponerme el vestuario seleccionado"/> - <button label="Play" name="play_btn"/> - <button label="Teleporte" name="teleport_btn" tool_tip="Teleportar a la zona elegida"/> + <button label="Jugar" name="play_btn"/> + <button label="Teleportarte" name="teleport_btn" tool_tip="Teleportar a la zona elegida"/> </layout_panel> </layout_stack> </panel> diff --git a/indra/newview/skins/default/xui/es/strings.xml b/indra/newview/skins/default/xui/es/strings.xml index 2b91c542ad..544a70028b 100755 --- a/indra/newview/skins/default/xui/es/strings.xml +++ b/indra/newview/skins/default/xui/es/strings.xml @@ -28,6 +28,45 @@ <string name="StartupRequireDriverUpdate"> Error de inicialización de gráficos. Actualiza tu controlador de gráficos. </string> + <string name="AboutHeader"> + [APP_NAME] [VIEWER_VERSION_0].[VIEWER_VERSION_1].[VIEWER_VERSION_2] ([VIEWER_VERSION_3]) [BUILD_DATE] [BUILD_TIME] ([CHANNEL]) +[[VIEWER_RELEASE_NOTES_URL] [ReleaseNotes]] + </string> + <string name="AboutCompiler"> + Compilado con [COMPILER], versión [COMPILER_VERSION] + </string> + <string name="AboutPosition"> + Estás en la posición [POSITION_LOCAL_0,number,1], [POSITION_LOCAL_1,number,1], [POSITION_LOCAL_2,number,1], de [REGION], alojada en <nolink>[HOSTNAME]</nolink> ([HOSTIP]) +SLURL: <nolink>[SLURL]</nolink> +(coordenadas globales [POSITION_0,number,1], [POSITION_1,number,1], [POSITION_2,number,1]) +[SERVER_VERSION] +[SERVER_RELEASE_NOTES_URL] + </string> + <string name="AboutSystem"> + CPU: [CPU] +Memoria: [MEMORY_MB] MB +Versión del Sistema Operativo: [OS_VERSION] +Fabricante de la tarjeta gráfica: [GRAPHICS_CARD_VENDOR] +Tarjeta gráfica: [GRAPHICS_CARD] + </string> + <string name="AboutDriver"> + Versión de Windows Graphics Driver: [GRAPHICS_DRIVER_VERSION] + </string> + <string name="AboutLibs"> + Versión de OpenGL: [OPENGL_VERSION] + +Versión de libcurl: [LIBCURL_VERSION] +Versión de J2C Decoder: [J2C_VERSION] +Versión de Audio Driver: [AUDIO_DRIVER_VERSION] +Versión de Qt Webkit: [QT_WEBKIT_VERSION] +Versión del servidor de voz: [VOICE_VERSION] + </string> + <string name="AboutTraffic"> + Paquetes perdidos: [PACKETS_LOST,number,0]/[PACKETS_IN,number,0] ([PACKETS_PCT,number,1]%) + </string> + <string name="ErrorFetchingServerReleaseNotesURL"> + Error al obtener la URL de las notas de la versión del servidor. + </string> <string name="ProgressRestoring"> Restaurando... </string> @@ -922,12 +961,12 @@ Intenta iniciar sesión de nuevo en unos instantes. <string name="ControlYourCamera"> Controlar su cámara </string> - <string name="AgentNameSubst"> - (Tú) - </string> <string name="TeleportYourAgent"> Teleportarte </string> + <string name="AgentNameSubst"> + (Tú) + </string> <string name="JoinAnExperience"> Únete a una experiencia </string> @@ -1252,8 +1291,7 @@ Intenta iniciar sesión de nuevo en unos instantes. <string name="InventoryInboxNoItems"> Aquà aparecerán algunos de los objetos que recibas, como los regalos Premium. Después puedes arrastrarlos a tu inventario. </string> - <string name="Unconstrained">Sin restricciones</string> - <string name="MarketplaceURL"> + <string name="MarketplaceURL"> https://marketplace.[MARKETPLACE_DOMAIN_NAME]/ </string> <string name="MarketplaceURL_CreateStore"> @@ -1282,6 +1320,18 @@ Intenta iniciar sesión de nuevo en unos instantes. <string name="InventoryOutboxNoItems"> Arrastra carpetas a esta sección y pulsa en "Enviar al Mercado" para incluirlas en la lista de venta del [[MARKETPLACE_DASHBOARD_URL] Mercado]. </string> + <string name="InventoryOutboxInitializingTitle"> + Inicializando el Mercado. + </string> + <string name="InventoryOutboxInitializing"> + Estamos accediendo a tu cuenta de la [[MARKETPLACE_CREATE_STORE_URL] tienda del Mercado]. + </string> + <string name="InventoryOutboxErrorTitle"> + Errores del Mercado. + </string> + <string name="InventoryOutboxError"> + La [[MARKETPLACE_CREATE_STORE_URL] tienda del Mercado] devuelve errores. + </string> <string name="Marketplace Error None"> Sin errores </string> @@ -1309,6 +1359,9 @@ Intenta iniciar sesión de nuevo en unos instantes. <string name="Open landmarks"> Abrir hitos </string> + <string name="Unconstrained"> + Sin restricciones + </string> <string name="no_transfer" value="(no transferible)"/> <string name="no_modify" value="(no modificable)"/> <string name="no_copy" value="(no copiable)"/> @@ -1703,6 +1756,9 @@ Intenta iniciar sesión de nuevo en unos instantes. <string name="CompileQueueDownloadedCompiling"> Descargado, compilándolo </string> + <string name="CompileQueueServiceUnavailable"> + El servicio de compilación de scripts no está disponible + </string> <string name="CompileQueueScriptNotFound"> No se encuentra el script en el servidor. </string> diff --git a/indra/newview/skins/default/xui/fr/floater_lagmeter.xml b/indra/newview/skins/default/xui/fr/floater_lagmeter.xml new file mode 100644 index 0000000000..39a861d8bd --- /dev/null +++ b/indra/newview/skins/default/xui/fr/floater_lagmeter.xml @@ -0,0 +1,151 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<floater name="floater_lagmeter" title="MESURE DU LAG"> + <floater.string name="max_title_msg"> + Mesure du lag + </floater.string> + <floater.string name="max_width_px"> + 360 + </floater.string> + <floater.string name="min_title_msg"> + Lag + </floater.string> + <floater.string name="min_width_px"> + 90 + </floater.string> + <floater.string name="client_text_msg"> + Client + </floater.string> + <floater.string name="client_frame_rate_critical_fps"> + 10 + </floater.string> + <floater.string name="client_frame_rate_warning_fps"> + 15 + </floater.string> + <floater.string name="client_frame_time_window_bg_msg"> + Normal, fenêtre en arrière-plan + </floater.string> + <floater.string name="client_frame_time_critical_msg"> + Taux de défilement [CLIENT_FRAME_RATE_CRITICAL] + </floater.string> + <floater.string name="client_frame_time_warning_msg"> + Taux de défilement entre [CLIENT_FRAME_RATE_CRITICAL] et [CLIENT_FRAME_RATE_WARNING] + </floater.string> + <floater.string name="client_frame_time_normal_msg"> + Normal + </floater.string> + <floater.string name="client_draw_distance_cause_msg"> + Cause possible : limite d'affichage trop élevée + </floater.string> + <floater.string name="client_texture_loading_cause_msg"> + Cause possible : images en cours de chargement + </floater.string> + <floater.string name="client_texture_memory_cause_msg"> + Cause possible : trop d'images en mémoire + </floater.string> + <floater.string name="client_complex_objects_cause_msg"> + Cause possible : trop d'objets complexes + </floater.string> + <floater.string name="network_text_msg"> + Réseau + </floater.string> + <floater.string name="network_packet_loss_critical_pct"> + 10 + </floater.string> + <floater.string name="network_packet_loss_warning_pct"> + 5 + </floater.string> + <floater.string name="network_packet_loss_critical_msg"> + La connexion perd plus de [NETWORK_PACKET_LOSS_CRITICAL] % de paquets + </floater.string> + <floater.string name="network_packet_loss_warning_msg"> + La connexion perd entre [NETWORK_PACKET_LOSS_WARNING] % et [NETWORK_PACKET_LOSS_CRITICAL] % de paquets + </floater.string> + <floater.string name="network_performance_normal_msg"> + Normal + </floater.string> + <floater.string name="network_ping_critical_ms"> + 600 + </floater.string> + <floater.string name="network_ping_warning_ms"> + 300 + </floater.string> + <floater.string name="network_ping_critical_msg"> + Connexion ping > [NETWORK_PING_CRITICAL] ms + </floater.string> + <floater.string name="network_ping_warning_msg"> + Connexion ping entre [NETWORK_PING_WARNING] et [NETWORK_PING_CRITICAL] ms + </floater.string> + <floater.string name="network_packet_loss_cause_msg"> + Mauvaise connexion possible ou réglage de la bande passante trop élevé. + </floater.string> + <floater.string name="network_ping_cause_msg"> + Mauvaise connexion possible ou app. de partage des fichiers + </floater.string> + <floater.string name="server_text_msg"> + Serveur + </floater.string> + <floater.string name="server_frame_rate_critical_fps"> + 20 + </floater.string> + <floater.string name="server_frame_rate_warning_fps"> + 30 + </floater.string> + <floater.string name="server_single_process_max_time_ms"> + 20 + </floater.string> + <floater.string name="server_frame_time_critical_msg"> + Défilement du simulateur < [SERVER_FRAME_RATE_CRITICAL] + </floater.string> + <floater.string name="server_frame_time_warning_msg"> + Défilement simulateur entre [SERVER_FRAME_RATE_CRITICAL] et [SERVER_FRAME_RATE_WARNING] + </floater.string> + <floater.string name="server_frame_time_normal_msg"> + Normal + </floater.string> + <floater.string name="server_physics_cause_msg"> + Cause possible : trop d'objets physiques + </floater.string> + <floater.string name="server_scripts_cause_msg"> + Cause possible : trop d'objets scriptés + </floater.string> + <floater.string name="server_net_cause_msg"> + Cause possible : trop de trafic réseau + </floater.string> + <floater.string name="server_agent_cause_msg"> + Cause possible : trop de personnes en mouvement + </floater.string> + <floater.string name="server_images_cause_msg"> + Cause possible : trop de calculs d'images + </floater.string> + <floater.string name="server_generic_cause_msg"> + Cause possible : charge simulateur trop lourde + </floater.string> + <floater.string name="smaller_label"> + >> + </floater.string> + <floater.string name="bigger_label"> + << + </floater.string> + <button name="client_lagmeter" tool_tip="Statut du lag client"/> + <text name="client"> + Client + </text> + <text name="client_text"> + Normal + </text> + <button name="network_lagmeter" tool_tip="Statut du lag réseau"/> + <text name="network"> + Réseau + </text> + <text name="network_text"> + Normal + </text> + <button name="server_lagmeter" tool_tip="Statut du lag serveur"/> + <text name="server"> + Serveur + </text> + <text name="server_text"> + Normal + </text> + <button label=">>" name="minimize" tool_tip="Activer/désactiver la taille du floater"/> +</floater> diff --git a/indra/newview/skins/default/xui/fr/floater_region_restarting.xml b/indra/newview/skins/default/xui/fr/floater_region_restarting.xml new file mode 100644 index 0000000000..3a56a83c22 --- /dev/null +++ b/indra/newview/skins/default/xui/fr/floater_region_restarting.xml @@ -0,0 +1,23 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<floater name="region_restarting" title="REDÉMARRAGE DE LA RÉGION"> + <string name="RegionName"> + La région dans laquelle vous vous trouvez actuellement ([NAME]) est sur le point de redémarrer. + +Si vous restez dans cette région, vous serez déconnecté(e). + </string> + <string name="RestartSeconds"> + Secondes avant le redémarrage +[SECONDS] + </string> + <panel name="layout_panel_1"> + <text name="region_name"> + La région dans laquelle vous vous trouvez actuellement (-le nom de région le plus long-) est sur le point de redémarrer. + +Si vous restez dans cette région, vous serez déconnecté(e). + </text> + <text name="restart_seconds"> + Secondes avant le redémarrage + 32767 + </text> + </panel> +</floater> diff --git a/indra/newview/skins/default/xui/fr/floater_scene_load_stats.xml b/indra/newview/skins/default/xui/fr/floater_scene_load_stats.xml new file mode 100644 index 0000000000..62830054bf --- /dev/null +++ b/indra/newview/skins/default/xui/fr/floater_scene_load_stats.xml @@ -0,0 +1,64 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<floater name="Scene Load Statistics" title="STATISTIQUES DE CHARGEMENT DE SCÈNE"> + <button label="Pauser" name="playpause"/> + <scroll_container name="statistics_scroll"> + <container_view name="statistics_view"> + <stat_view label="Basique" name="basic"> + <stat_bar label="Différence en pixels entre les images" name="frame difference"/> + <stat_bar label="Données UDP reçues" name="bandwidth"/> + <stat_bar label="Perte de paquets" name="packet_loss"/> + </stat_view> + <stat_view label="Avancé" name="advanced"> + <stat_view label="Rendu" name="render"> + <stat_bar label="Total des objets" name="objs"/> + <stat_bar label="Nouveaux objets" name="newobjs"/> + <stat_bar label="Taux de réussite du cache des objets" name="object_cache_hits"/> + </stat_view> + <stat_view label="Texture" name="texture"> + <stat_bar label="Taux de réussite du cache" name="texture_cache_hits"/> + <stat_bar label="Latence de lecture du cache" name="texture_cache_read_latency"/> + <stat_bar label="Nombre" name="numimagesstat"/> + <stat_bar label="Nombre brut" name="numrawimagesstat"/> + </stat_view> + <stat_view label="Réseau" name="network"> + <stat_bar label="Paquets en entrée" name="packetsinstat"/> + <stat_bar label="Paquets en sortie" name="packetsoutstat"/> + <stat_bar label="Objets" name="objectdatareceived"/> + <stat_bar label="Texture" name="texturedatareceived"/> + <stat_bar label="Actif" name="assetudpdatareceived"/> + <stat_bar label="Couches" name="layersdatareceived"/> + <stat_bar label="Arrivés" name="messagedatain"/> + <stat_bar label="Sortis" name="messagedataout"/> + <stat_bar label="Opérations VFS en attente" name="vfspendingoperations"/> + </stat_view> + </stat_view> + <stat_view label="Simulateur" name="sim"> + <stat_bar label="Objets" name="simobjects"/> + <stat_bar label="Objets actifs" name="simactiveobjects"/> + <stat_bar label="Scripts actifs" name="simactivescripts"/> + <stat_bar label="Paquets en entrée" name="siminpps"/> + <stat_bar label="Paquets en sortie" name="simoutpps"/> + <stat_bar label="Téléchargements en attente" name="simpendingdownloads"/> + <stat_bar label="Chargements en attente" name="simpendinguploads"/> + <stat_bar label="Total d'octets non reconnus" name="simtotalunackedbytes"/> + <stat_view label="Temps (ms)" name="simperf"> + <stat_bar label="Durée totale de l'image" name="simframemsec"/> + <stat_bar label="Durée nette" name="simnetmsec"/> + <stat_bar label="Durée physique" name="simsimphysicsmsec"/> + <stat_bar label="Durée de la simulation" name="simsimothermsec"/> + <stat_bar label="Durée des avatars" name="simagentmsec"/> + <stat_bar label="Durée des images" name="simimagesmsec"/> + <stat_bar label="Durée des scripts" name="simscriptmsec"/> + <stat_bar label="Temps d'inactivité" name="simsparemsec"/> + <stat_view label="Détails de la durée (ms)" name="timedetails"> + <stat_bar label="Étape propr. physiques" name="simsimphysicsstepmsec"/> + <stat_bar label="Mettre à jour les formes phys" name="simsimphysicsshapeupdatemsec"/> + <stat_bar label="Propriétés physiques Autre" name="simsimphysicsothermsec"/> + <stat_bar label="Temps de sommeil" name="simsleepmsec"/> + <stat_bar label="ES pompe" name="simpumpiomsec"/> + </stat_view> + </stat_view> + </stat_view> + </container_view> + </scroll_container> +</floater> diff --git a/indra/newview/skins/default/xui/fr/floater_stats.xml b/indra/newview/skins/default/xui/fr/floater_stats.xml index d6bd187956..5cad6258ec 100755 --- a/indra/newview/skins/default/xui/fr/floater_stats.xml +++ b/indra/newview/skins/default/xui/fr/floater_stats.xml @@ -4,7 +4,7 @@ <container_view name="statistics_view"> <stat_view label="De base" name="basic"> <stat_bar label="FPS" name="fps"/> - <stat_bar label="Bande passante" name="bandwidth"/> + <stat_bar label="Données UDP reçues" name="bandwidth"/> <stat_bar label="Perte de paquets" name="packet_loss"/> <stat_bar label="Ping sim" name="ping"/> </stat_view> @@ -15,6 +15,9 @@ <stat_bar label="Objets totaux" name="objs"/> <stat_bar label="Nouveaux objets" name="newobjs"/> <stat_bar label="Taux de réussite du cache des objets" name="object_cache_hits"/> + <stat_bar label="Requêtes d'occlusion effectuées" name="occlusion_queries"/> + <stat_bar label="Objets occlus" name="occluded"/> + <stat_bar label="Objets non occlus" name="unoccluded"/> </stat_view> <stat_view label="Texture" name="texture"> <stat_bar label="Taux de réussite du cache" name="texture_cache_hits"/> @@ -26,15 +29,32 @@ <stat_bar label="Mém brute" name="rawmemstat"/> <stat_bar label="Mém liée" name="glboundmemstat"/> </stat_view> + <stat_view label="Utilisation de la mémoire" name="memory"> + <stat_bar label="LLTrace" name="LLTrace"/> + <stat_bar label="Interface" name="LLView"/> + <stat_bar label="Polices" name="LLFontFreetype"/> + <stat_bar label="Inventaire" name="LLInventoryObject"/> + <stat_bar label="Objets du client" name="LLViewerObject"/> + <stat_bar label="Données de groupe Octree" name="LLViewerOctreeGroup"/> + <stat_bar label="Données Octree" name="LLViewerOctreeEntry"/> + <stat_bar label="Cache des objets du client" name="LLVOCacheEntry"/> + <stat_bar label="Dessinables" name="LLDrawable"/> + <stat_bar label="Données de visage" name="LLFace"/> + <stat_bar label="Informations de tracé" name="LLDrawInfo"/> + <stat_bar label="Données de texture" name="LLTexture"/> + <stat_bar label="Données d'image" name="LLImage"/> + <stat_bar label="Données d'image GL" name="LLImageGL"/> + <stat_bar label="Tampon des sommets" name="LLVertexBuffer"/> + </stat_view> <stat_view label="Réseau" name="network"> <stat_bar label="Paquets en entrée" name="packetsinstat"/> <stat_bar label="Paquets en sortie" name="packetsoutstat"/> - <stat_bar label="Objets" name="objectkbitstat"/> - <stat_bar label="Texture" name="texturekbitstat"/> - <stat_bar label="Actif" name="assetkbitstat"/> - <stat_bar label="Couches" name="layerskbitstat"/> - <stat_bar label="Arrivés" name="actualinkbitstat"/> - <stat_bar label="Sortis" name="actualoutkbitstat"/> + <stat_bar label="Objets" name="objectdatareceived"/> + <stat_bar label="Texture" name="texturedatareceived"/> + <stat_bar label="Actif" name="assetudpdatareceived"/> + <stat_bar label="Couches" name="layersdatareceived"/> + <stat_bar label="Arrivés" name="messagedatain"/> + <stat_bar label="Sortis" name="messagedataout"/> <stat_bar label="Opérations VFS en attente" name="vfspendingoperations"/> </stat_view> </stat_view> @@ -64,8 +84,8 @@ <stat_bar label="Paquets en sortie" name="simoutpps"/> <stat_bar label="Téléchargements en attente" name="simpendingdownloads"/> <stat_bar label="Chargements en attente" name="simpendinguploads"/> - <stat_bar label="Total Unacked Bytes" name="simtotalunackedbytes"/> - <stat_view label="Temps (ms)" name="simperf"> + <stat_bar label="Total de données non reconnues" name="simtotalunackedbytes"/> + <stat_view label="Durée" name="simperf"> <stat_bar label="Durée totale de l'image" name="simframemsec"/> <stat_bar label="Durée nette" name="simnetmsec"/> <stat_bar label="Durée sim (physique)" name="simsimphysicsmsec"/> @@ -74,7 +94,7 @@ <stat_bar label="Durée des images" name="simimagesmsec"/> <stat_bar label="Durée des scripts" name="simscriptmsec"/> <stat_bar label="Temps d'inactivité" name="simsparemsec"/> - <stat_view label="Détails Temps (ms)" name="timedetails"> + <stat_view label="Détails de la durée" name="timedetails"> <stat_bar label="Etape propr. physiques" name="simsimphysicsstepmsec"/> <stat_bar label="Mettre à jour les formes phys" name="simsimphysicsshapeupdatemsec"/> <stat_bar label="Propriétés physiques Autre" name="simsimphysicsothermsec"/> diff --git a/indra/newview/skins/default/xui/fr/menu_avatar_icon.xml b/indra/newview/skins/default/xui/fr/menu_avatar_icon.xml index 3bac25c79b..072ac0a6ae 100755 --- a/indra/newview/skins/default/xui/fr/menu_avatar_icon.xml +++ b/indra/newview/skins/default/xui/fr/menu_avatar_icon.xml @@ -2,6 +2,7 @@ <menu name="Avatar Icon Menu"> <menu_item_call label="Voir le profil" name="Show Profile"/> <menu_item_call label="Envoyer IM..." name="Send IM"/> + <menu_item_call label="Demander téléportation" name="Request Teleport"/> <menu_item_call label="Devenir amis..." name="Add Friend"/> <menu_item_call label="Supprimer cet ami..." name="Remove Friend"/> </menu> diff --git a/indra/newview/skins/default/xui/fr/menu_inventory.xml b/indra/newview/skins/default/xui/fr/menu_inventory.xml index 627d3068c3..87b11bdaa5 100755 --- a/indra/newview/skins/default/xui/fr/menu_inventory.xml +++ b/indra/newview/skins/default/xui/fr/menu_inventory.xml @@ -70,6 +70,7 @@ <menu_item_call label="Jouer" name="Sound Play"/> <menu_item_call label="Copier la SLurl" name="url_copy"/> <menu_item_call label="À propos du repère" name="About Landmark"/> + <menu_item_call label="Voir sur la carte" name="show_on_map"/> <menu_item_call label="Jouer dans Second Life" name="Animation Play"/> <menu_item_call label="Jouer localement" name="Animation Audition"/> <menu_item_call label="Envoyer un message instantané" name="Send Instant Message"/> diff --git a/indra/newview/skins/default/xui/fr/menu_login.xml b/indra/newview/skins/default/xui/fr/menu_login.xml index 7b1e106474..5e9969627d 100755 --- a/indra/newview/skins/default/xui/fr/menu_login.xml +++ b/indra/newview/skins/default/xui/fr/menu_login.xml @@ -5,7 +5,15 @@ <menu_item_call label="Quitter [APP_NAME]" name="Quit"/> </menu> <menu label="Aide" name="Help"> - <menu_item_call label="Aide de [SECOND_LIFE]" name="Second Life Help"/> + <menu_item_call label="Aide rapide..." name="How To"/> + <menu_item_call label="Démarrage rapide" name="Quickstart"/> + <menu_item_call label="Base de connaissances" name="Knowledge Base"/> + <menu_item_call label="Wiki" name="Wiki"/> + <menu_item_call label="Forums de la communauté" name="Community Forums"/> + <menu_item_call label="Portail d'assistance" name="Support portal"/> + <menu_item_call label="Actualités [SECOND_LIFE]" name="Second Life News"/> + <menu_item_call label="Blogs [SECOND_LIFE]" name="Second Life Blogs"/> + <menu_item_call label="Signaler un bug" name="Report Bug"/> <menu_item_call label="À propos de [APP_NAME]" name="About Second Life"/> </menu> <menu_item_check label="Afficher le menu de débogage" name="Show Debug Menu"/> diff --git a/indra/newview/skins/default/xui/fr/menu_teleport_history_item.xml b/indra/newview/skins/default/xui/fr/menu_teleport_history_item.xml index fb4582dbce..ba8ed9b3f8 100755 --- a/indra/newview/skins/default/xui/fr/menu_teleport_history_item.xml +++ b/indra/newview/skins/default/xui/fr/menu_teleport_history_item.xml @@ -2,5 +2,5 @@ <context_menu name="Teleport History Item Context Menu"> <menu_item_call label="Téléporter" name="Teleport"/> <menu_item_call label="Plus d'informations" name="More Information"/> - <menu_item_call label="Copier dans le presse-papiers" name="CopyToClipboard"/> + <menu_item_call label="Copier la SLurl" name="CopyToClipboard"/> </context_menu> diff --git a/indra/newview/skins/default/xui/fr/menu_viewer.xml b/indra/newview/skins/default/xui/fr/menu_viewer.xml index 5d0026ace0..4ff834420e 100755 --- a/indra/newview/skins/default/xui/fr/menu_viewer.xml +++ b/indra/newview/skins/default/xui/fr/menu_viewer.xml @@ -72,11 +72,11 @@ <menu_item_check label="Menu Avancé" name="Show Advanced Menu"/> </menu> <menu label="Luminosité" name="Sun"> - <menu_item_call label="Aube" name="Sunrise"/> - <menu_item_call label="Milieu de journée" name="Noon"/> - <menu_item_call label="Coucher de soleil" name="Sunset"/> - <menu_item_call label="Minuit" name="Midnight"/> - <menu_item_call label="Utiliser les réglages de la région" name="Use Region Settings"/> + <menu_item_check label="Aube" name="Sunrise"/> + <menu_item_check label="Milieu de journée" name="Noon"/> + <menu_item_check label="Coucher de soleil" name="Sunset"/> + <menu_item_check label="Minuit" name="Midnight"/> + <menu_item_check label="Utiliser les réglages de la région" name="Use Region Settings"/> </menu> <menu label="Éditeur d'environnement" name="Environment Editor"> <menu_item_call label="Paramètres d'environnement..." name="Environment Settings"/> @@ -165,8 +165,6 @@ </menu> <menu label="Aide" name="Help"> <menu_item_call label="Aide rapide..." name="How To"/> - <menu_item_call label="Aide de [SECOND_LIFE]" name="Second Life Help"/> - <menu_item_call label="Guide de l'utilisateur" name="User’s guide"/> <menu_item_call label="Base de connaissances" name="Knowledge Base"/> <menu_item_call label="Wiki" name="Wiki"/> <menu_item_call label="Forums de la communauté" name="Community Forums"/> @@ -188,6 +186,7 @@ <menu label="Outils de performance" name="Performance Tools"> <menu_item_call label="Mesure du lag" name="Lag Meter"/> <menu_item_check label="Barre de statistiques" name="Statistics Bar"/> + <menu_item_call label="Statistiques de chargement de scène" name="Scene Load Statistics"/> <menu_item_check label="Afficher le poids de dessin pour les avatars" name="Avatar Rendering Cost"/> </menu> <menu label="Surbrillance et visibilité" name="Highlighting and Visibility"> @@ -250,6 +249,7 @@ <menu_item_check label="Chronos" name="Fast Timers"/> <menu_item_check label="Mémoire" name="Memory"/> <menu_item_check label="Statistiques de la scène" name="Scene Statistics"/> + <menu_item_check label="Moniteur de chargement de scène" name="Scene Loading Monitor"/> <menu_item_call label="Console de débogage de la récupération des textures" name="Texture Fetch Debug Console"/> <menu_item_call label="Infos de région vers la console de débogage" name="Region Info to Debug Console"/> <menu_item_call label="Infos de groupe vers la console de débogage" name="Group Info to Debug Console"/> @@ -286,6 +286,7 @@ <menu_item_check label="Cadre lent périodique" name="Periodic Slow Frame"/> <menu_item_check label="Test cadre" name="Frame Test"/> <menu_item_call label="Profil du cadre" name="Frame Profile"/> + <menu_item_call label="Référence" name="Benchmark"/> </menu> <menu label="Métadonnées de rendu" name="Render Metadata"> <menu_item_check label="Cadres" name="Bounding Boxes"/> @@ -304,6 +305,7 @@ <menu_item_check label="File d'attente pour la construction" name="Build Queue"/> <menu_item_check label="Lumières" name="Lights"/> <menu_item_check label="Squelette de collision" name="Collision Skeleton"/> + <menu_item_check label="Articulations" name="Joints"/> <menu_item_check label="Rayons" name="Raycast"/> <menu_item_check label="Vecteurs de vent" name="Wind Vectors"/> <menu_item_check label="Complexité du rendu" name="rendercomplexity"/> @@ -336,6 +338,7 @@ <menu_item_check label="Rendu des lumières jointes" name="Render Attached Lights"/> <menu_item_check label="Rendu des particules jointes" name="Render Attached Particles"/> <menu_item_check label="Objets en surbrillance avec le pointeur" name="Hover Glow Objects"/> + <menu_item_call label="Vider le cache immédiatement" name="Cache Clear"/> </menu> <menu label="Réseau" name="Network"> <menu_item_check label="Pauser l'avatar" name="AgentPause"/> @@ -368,7 +371,6 @@ <menu_item_call label="Dump Focus Holder" name="Dump Focus Holder"/> <menu_item_call label="Imprimer les infos sur l'objet sélectionné" name="Print Selected Object Info"/> <menu_item_call label="Imprimer les infos sur l'avatar" name="Print Agent Info"/> - <menu_item_check label="Console de débogage de région" name="Region Debug Console"/> <menu_item_check label="Débogage SelectMgr" name="Debug SelectMgr"/> <menu_item_check label="Débogage clics" name="Debug Clicks"/> <menu_item_check label="Débogage des vues" name="Debug Views"/> diff --git a/indra/newview/skins/default/xui/fr/notifications.xml b/indra/newview/skins/default/xui/fr/notifications.xml index c295a6f5a7..af46d34b61 100755 --- a/indra/newview/skins/default/xui/fr/notifications.xml +++ b/indra/newview/skins/default/xui/fr/notifications.xml @@ -114,15 +114,15 @@ Pour plus d'informations, consultez le [[MARKETPLACE_IMPORTS_URL] journal d <usetemplate name="okbutton" yestext="OK"/> </notification> <notification name="OutboxImportFailed"> - Échec de transfert + Échec du transfert avec l'erreur « [ERROR_CODE] » -Aucun dossier n'a été envoyé vers la Place du marché en raison d'une erreur système ou réseau. Veuillez réessayer ultérieurement. +Aucun dossier n'a été envoyé vers la Place du marché en raison d'une erreur système ou réseau. Réessayez ultérieurement. <usetemplate name="okbutton" yestext="OK"/> </notification> <notification name="OutboxInitFailed"> - Échec d'initialisation de la Place du marché + Échec de l'initialisation de la Place du marché avec l'erreur « [ERROR_CODE] » -L'initialisation de la Place du marché a échoué en raison d'une erreur système ou réseau. Veuillez réessayer ultérieurement. +L'initialisation de la Place du marché a échoué en raison d'une erreur système ou réseau. Réessayez ultérieurement. <usetemplate name="okbutton" yestext="OK"/> </notification> <notification name="CompileQueueSaveText"> @@ -1729,6 +1729,10 @@ or ce nombre dépasse la limite autorisée fixée à [LIMIT]. Souhaitez-vous vraiment vous téléporter vers <nolink>[LOCATION]</nolink> ? <usetemplate ignoretext="Confirmer que je veux me téléporter à un repère" name="okcancelignore" notext="Annuler" yestext="Téléporter"/> </notification> + <notification name="TeleportViaSLAPP"> + Voulez-vous vraiment vous téléporter jusqu'à <nolink>[LOCATION]</nolink> ? + <usetemplate ignoretext="Confirmer que je veux me téléporter en utilisant SLAPP" name="okcancelignore" notext="Annuler" yestext="Téléporter"/> + </notification> <notification name="TeleportToPick"> Vous téléporter vers [PICK] ? <usetemplate ignoretext="Confirmer que je veux me téléporter à un endroit dans mes Favoris" name="okcancelignore" notext="Annuler" yestext="Téléporter"/> @@ -1939,6 +1943,9 @@ Cette action modifiera des milliers de régions et sera difficile à digérer po <notification name="ProblemAddingEstateManager"> Problèmes lors de l'ajout d'un nouveau gérant de domaine. Il est possible qu'au moins un des domaines ait une liste de gérants complète. </notification> + <notification name="ProblemAddingEstateBanManager"> + Impossible d'ajouter le propriétaire ou le gérant du domaine à la liste des résidents bannis. + </notification> <notification name="ProblemAddingEstateGeneric"> Problème lors de l'ajout à la liste de ce domaine. Il est possible qu'au moins un des domaines ait une liste complète. </notification> @@ -3029,7 +3036,7 @@ Voir le fichier journal pour plus de détails. avec les résidents suivants : -[RESIDENTS] ? +<nolink>[RESIDENTS]</nolink> <usetemplate name="okcancelbuttons" notext="Annuler" yestext="OK"/> </notification> <notification name="ShareFolderConfirmation"> @@ -3041,7 +3048,7 @@ Voulez-vous vraiment partager les articles suivants : avec les résidents suivants : -[RESIDENTS] ? +<nolink>[RESIDENTS]</nolink> <usetemplate name="okcancelbuttons" notext="Annuler" yestext="Ok"/> </notification> <notification name="ItemsShared"> @@ -3496,10 +3503,6 @@ Veuillez réessayer dans une minute. <notification name="EjectComingSoon"> Votre présence ici n'est plus autorisée et vous disposez de [EJECT_TIME] secondes pour partir. </notification> - <notification name="NoEnterServerFull"> - Vous ne pouvez pas pénétrer dans cette région car -le serveur est plein. - </notification> <notification name="SaveBackToInvDisabled"> Le réenregistrement dans l'inventaire a été désactivé. </notification> @@ -3689,6 +3692,9 @@ le serveur est plein. <notification name="LinkFailedTooMuchPhysics"> Cet objet utilise trop de ressources physiques - sa dynamique a été désactivée. </notification> + <notification name="EstateManagerFailedllTeleportHome"> + L'objet « [OBJECT_NAME] » à [SLURL] ne peut pas téléporter les gérants de domaines chez eux. + </notification> <notification name="TeleportedHomeByObjectOnParcel"> Vous avez été téléporté chez vous par l'objet [OBJECT_NAME] sur la parcelle [PARCEL_NAME]. </notification> @@ -3879,13 +3885,18 @@ le serveur est plein. Pas suffisamment de parcelles louées dans la sélection pour effectuer la fusion. </notification> <notification name="CantDivideLandMultipleParcelsSelected"> - Division du terrain impossible.\nPlusieurs parcelles sont sélectionnées.\nVeuillez sélectionner un terrain plus petit. + Division du terrain impossible. +Plusieurs parcelles sont sélectionnées. +Veuillez sélectionner un terrain plus petit. </notification> <notification name="CantDivideLandCantFindParcel"> - Division du terrain impossible.\nParcelle introuvable.\nSignalez-le en allant à Aide -> Signaler un bug... + Division du terrain impossible. +Parcelle introuvable. +Veuillez utiliser Aide > Signaler un bug pour signaler le problème... </notification> <notification name="CantDivideLandWholeParcelSelected"> - Division du terrain impossible. Toute la parcelle est sélectionnée.\nVeuillez sélectionner un terrain plus petit. + Division du terrain impossible. La parcelle entière est sélectionnée. +Veuillez sélectionner un terrain plus petit. </notification> <notification name="LandHasBeenDivided"> Le terrain a été divisé. @@ -4025,4 +4036,8 @@ le serveur est plein. Impossible de déplacer les fichiers. Chemin précédent rétabli. <usetemplate ignoretext="Impossible de déplacer les fichiers. Chemin précédent rétabli." name="okignore" yestext="OK"/> </notification> + <notification name="ChatHistoryIsBusyAlert"> + Le fichier d'historique des chats est occupé à traiter l'opération précédente. Réessayez dans quelques minutes ou choisissez une autre personne pour le chat. + <usetemplate name="okbutton" yestext="OK"/> + </notification> </notifications> diff --git a/indra/newview/skins/default/xui/fr/panel_group_info_sidetray.xml b/indra/newview/skins/default/xui/fr/panel_group_info_sidetray.xml index 047cd692e8..7c3b852de1 100755 --- a/indra/newview/skins/default/xui/fr/panel_group_info_sidetray.xml +++ b/indra/newview/skins/default/xui/fr/panel_group_info_sidetray.xml @@ -20,7 +20,7 @@ <layout_panel name="group_accordions"> <accordion name="groups_accordion"> <accordion_tab name="group_general_tab" title="Général"/> - <accordion_tab name="group_roles_tab" title="Rôles"/> + <accordion_tab name="group_roles_tab" title="Rôles et membres"/> <accordion_tab name="group_notices_tab" title="Notices"/> <accordion_tab name="group_land_tab" title="Terrain/Actifs"/> </accordion> diff --git a/indra/newview/skins/default/xui/fr/panel_group_roles.xml b/indra/newview/skins/default/xui/fr/panel_group_roles.xml index 0bd2e0bdab..71ee70d68b 100755 --- a/indra/newview/skins/default/xui/fr/panel_group_roles.xml +++ b/indra/newview/skins/default/xui/fr/panel_group_roles.xml @@ -20,6 +20,7 @@ Pour sélectionner plusieurs membres, cliquez sur leurs noms en maintenant la to <name_list.columns label="Membre" name="name"/> <name_list.columns label="Donation" name="donated"/> <name_list.columns label="Statut" name="online"/> + <name_list.columns label="Titre" name="title"/> </name_list> <button label="Inviter" name="member_invite"/> <button label="Expulser" name="member_eject"/> diff --git a/indra/newview/skins/default/xui/fr/panel_region_debug.xml b/indra/newview/skins/default/xui/fr/panel_region_debug.xml index 98ae250215..d21695e9aa 100755 --- a/indra/newview/skins/default/xui/fr/panel_region_debug.xml +++ b/indra/newview/skins/default/xui/fr/panel_region_debug.xml @@ -7,11 +7,8 @@ (inconnue) </text> <check_box label="Désactiver les scripts" name="disable_scripts_check" tool_tip="Désactiver tous les scripts dans cette région"/> - <button label="?" name="disable_scripts_help"/> <check_box label="Désactiver les collisions" name="disable_collisions_check" tool_tip="Désactiver les collisions entre non-avatars dans cette région"/> - <button label="?" name="disable_collisions_help"/> <check_box label="Désactiver la physique" name="disable_physics_check" tool_tip="Désactiver tous les effets liés à la physique dans cette région"/> - <button label="?" name="disable_physics_help"/> <button bottom_delta="-38" label="Appliquer" name="apply_btn"/> <text bottom_delta="-42" name="objret_text_lbl" width="260"> Renvoi de l'objet @@ -31,10 +28,8 @@ <check_box label="Dans toutes les régions de ce domaine" name="return_estate_wide" tool_tip="Renvoyer les objets dans toutes les régions qui constituent ce domaine"/> <button label="Renvoyer" name="return_btn"/> <button label="Collisions les plus consommatrices" name="top_colliders_btn" tool_tip="Liste des objets avec le plus de collisions potentielles" width="320"/> - <button label="?" left="337" name="top_colliders_help"/> - <button label="Scripts les plus consommateurs" name="top_scripts_btn" tool_tip="Liste des objets passant le plus de temps à exécuter des scripts" width="320"/> - <button label="?" left="337" name="top_scripts_help"/> <button label="Redémarrer la région" name="restart_btn" tool_tip="Redémarrer la région au bout de 2 minutes" width="160"/> - <button label="?" left="177" name="restart_help"/> + <button label="Scripts les plus consommateurs" name="top_scripts_btn" tool_tip="Liste des objets passant le plus de temps à exécuter des scripts" width="320"/> <button label="Annuler le redémarrage" name="cancel_restart_btn" tool_tip="Annuler le redémarrage de la région." width="160"/> + <button label="Console de débogage de région" name="region_debug_console_btn" tool_tip="Ouvrir la console de débogage de région"/> </panel> diff --git a/indra/newview/skins/default/xui/fr/panel_region_general.xml b/indra/newview/skins/default/xui/fr/panel_region_general.xml index 234d316069..e9dcd6ab5a 100755 --- a/indra/newview/skins/default/xui/fr/panel_region_general.xml +++ b/indra/newview/skins/default/xui/fr/panel_region_general.xml @@ -20,12 +20,12 @@ </text> <check_box label="Interdire le terraformage" name="block_terraform_check"/> <check_box label="Interdire le vol" name="block_fly_check"/> + <check_box label="Bloquer le survol des parcelles" name="block_fly_over_check" tool_tip="Étendre les vérifications d'accès vers le haut pour empêcher le survol d'une parcelle"/> <check_box label="Autoriser les dégâts" name="allow_damage_check"/> <check_box label="Interdire les bousculades" name="restrict_pushobject"/> <check_box label="Autoriser la revente de terrain" name="allow_land_resell_check"/> <check_box label="Autoriser la fusion/division" name="allow_parcel_changes_check"/> <check_box label="Ne pas afficher dans la recherche" name="block_parcel_search_check" tool_tip="Afficher cette région et ses parcelles dans les résultats de recherche"/> - <check_box label="Autoriser les objets de maillage" name="mesh_rez_enabled_check" tool_tip="Laisser les gens rezzer des objets de maillage dans cette région."/> <spinner label="Nombre maximum d'avatars" label_width="160" name="agent_limit_spin" width="240"/> <spinner label="Bonus objet" label_width="160" name="object_bonus_spin" width="240"/> <text label="Maturité" name="access_text"> diff --git a/indra/newview/skins/default/xui/fr/sidepanel_inventory.xml b/indra/newview/skins/default/xui/fr/sidepanel_inventory.xml index ec7dd8c095..372d61263f 100755 --- a/indra/newview/skins/default/xui/fr/sidepanel_inventory.xml +++ b/indra/newview/skins/default/xui/fr/sidepanel_inventory.xml @@ -31,10 +31,10 @@ <button label="Partager" name="share_btn" tool_tip="Partager un article de l'inventaire"/> </layout_panel> <layout_panel name="shop_btn_lp"> - <button label="Acheter" name="shop_btn" tool_tip="Accéder à la place du marché sur le Web"/> + <button label="Faire des achats" name="shop_btn" tool_tip="Accéder à la Place du marché sur le Web"/> <button label="Porter" name="wear_btn" tool_tip="Porter la tenue sélectionnée"/> - <button label="Lire" name="play_btn"/> - <button label="Téléportation" name="teleport_btn" tool_tip="Me téléporter jusqu'à la zone sélectionnée"/> + <button label="Jouer" name="play_btn"/> + <button label="Téléporter" name="teleport_btn" tool_tip="Me téléporter jusqu'à la zone sélectionnée"/> </layout_panel> </layout_stack> </panel> diff --git a/indra/newview/skins/default/xui/fr/strings.xml b/indra/newview/skins/default/xui/fr/strings.xml index b8721420cb..bca134eef3 100755 --- a/indra/newview/skins/default/xui/fr/strings.xml +++ b/indra/newview/skins/default/xui/fr/strings.xml @@ -37,6 +37,45 @@ <string name="StartupRequireDriverUpdate"> Échec d'initialisation des graphiques. Veuillez mettre votre pilote graphique à jour. </string> + <string name="AboutHeader"> + [APP_NAME] [VIEWER_VERSION_0].[VIEWER_VERSION_1].[VIEWER_VERSION_2] ([VIEWER_VERSION_3]) [BUILD_DATE] [BUILD_TIME] ([CHANNEL]) +[[VIEWER_RELEASE_NOTES_URL] [Notes de version]] + </string> + <string name="AboutCompiler"> + Compilé avec [COMPILER] version [COMPILER_VERSION] + </string> + <string name="AboutPosition"> + Vous êtes à [POSITION_LOCAL_0,number,1], [POSITION_LOCAL_1,number,1], [POSITION_LOCAL_2,number,1] dans [REGION], se trouvant à <nolink>[HOSTNAME]</nolink> ([HOSTIP]) +SLURL : <nolink>[SLURL]</nolink> +(coordonnées globales [POSITION_0,number,1], [POSITION_1,number,1], [POSITION_2,number,1]) +[SERVER_VERSION] +[SERVER_RELEASE_NOTES_URL] + </string> + <string name="AboutSystem"> + CPU : [CPU] +Mémoire : [MEMORY_MB] Mo +Version OS : [OS_VERSION] +Distributeur de cartes graphiques : [GRAPHICS_CARD_VENDOR] +Carte graphique : [GRAPHICS_CARD] + </string> + <string name="AboutDriver"> + Version Windows Graphics Driver : [GRAPHICS_DRIVER_VERSION] + </string> + <string name="AboutLibs"> + Version OpenGL : [OPENGL_VERSION] + +Version libcurl : [LIBCURL_VERSION] +Version J2C Decoder : [J2C_VERSION] +Version Audio Driver : [AUDIO_DRIVER_VERSION] +Version Qt Webkit : [QT_WEBKIT_VERSION] +Version serveur vocal : [VOICE_VERSION] + </string> + <string name="AboutTraffic"> + Paquets perdus : [PACKETS_LOST,number,0]/[PACKETS_IN,number,0] ([PACKETS_PCT,number,1]%) + </string> + <string name="ErrorFetchingServerReleaseNotesURL"> + Erreur lors de la récupération de l'URL des notes de version du serveur. + </string> <string name="ProgressRestoring"> Restauration... </string> @@ -937,15 +976,15 @@ Veuillez réessayer de vous connecter dans une minute. <string name="ControlYourCamera"> Contrôler votre caméra </string> + <string name="TeleportYourAgent"> + Vous téléporter + </string> <string name="NotConnected"> Pas connecté(e) </string> <string name="AgentNameSubst"> (Vous) </string> - <string name="TeleportYourAgent"> - Vous téléporter - </string> <string name="JoinAnExperience"> Rejoindre une expérience </string> @@ -1270,8 +1309,7 @@ Veuillez réessayer de vous connecter dans une minute. <string name="InventoryInboxNoItems"> Les achats que vous avez effectués sur la Place du marché s'affichent ici. Vous pouvez alors les faire glisser vers votre inventaire afin de les utiliser. </string> - <string name="Unconstrained">Sans contraintes</string> - <string name="MarketplaceURL"> + <string name="MarketplaceURL"> https://marketplace.[MARKETPLACE_DOMAIN_NAME]/ </string> <string name="MarketplaceURL_CreateStore"> @@ -1300,6 +1338,18 @@ Veuillez réessayer de vous connecter dans une minute. <string name="InventoryOutboxNoItems"> Pour mettre des dossiers en vente sur la [[MARKETPLACE_DASHBOARD_URL] Place du marché], faites-les glisser vers cette zone et cliquez sur "Envoyer vers la Place du marché". </string> + <string name="InventoryOutboxInitializingTitle"> + Initialisation de la Place du marché... + </string> + <string name="InventoryOutboxInitializing"> + Nous sommes en train d'accéder à votre compte dans la [[MARKETPLACE_CREATE_STORE_URL] boutique de la Place du marché]. + </string> + <string name="InventoryOutboxErrorTitle"> + Erreurs de la Place du marché. + </string> + <string name="InventoryOutboxError"> + La [[MARKETPLACE_CREATE_STORE_URL] boutique de la Place du marché] renvoie des erreurs. + </string> <string name="Marketplace Error None"> Aucune erreur </string> @@ -1327,6 +1377,9 @@ Veuillez réessayer de vous connecter dans une minute. <string name="Open landmarks"> Ouvrir les repères </string> + <string name="Unconstrained"> + Sans contraintes + </string> <string name="no_transfer" value=" (pas de transfert)"/> <string name="no_modify" value=" (pas de modification)"/> <string name="no_copy" value=" (pas de copie)"/> @@ -1727,6 +1780,9 @@ Veuillez réessayer de vous connecter dans une minute. <string name="CompileQueueDownloadedCompiling"> Téléchargé, compilation en cours </string> + <string name="CompileQueueServiceUnavailable"> + Service de compilation de script indisponible. + </string> <string name="CompileQueueScriptNotFound"> Script introuvable sur le serveur. </string> diff --git a/indra/newview/skins/default/xui/it/floater_lagmeter.xml b/indra/newview/skins/default/xui/it/floater_lagmeter.xml new file mode 100644 index 0000000000..f7b2b1ab4a --- /dev/null +++ b/indra/newview/skins/default/xui/it/floater_lagmeter.xml @@ -0,0 +1,154 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<floater name="floater_lagmeter" title="MISURATORE LAG"> + <floater.string name="max_title_msg"> + Misuratore del lag + </floater.string> + <floater.string name="max_width_px"> + 360 + </floater.string> + <floater.string name="min_title_msg"> + Lag + </floater.string> + <floater.string name="min_width_px"> + 90 + </floater.string> + <floater.string name="client_text_msg"> + Programma in locale + </floater.string> + <floater.string name="client_frame_rate_critical_fps"> + 10 + </floater.string> + <floater.string name="client_frame_rate_warning_fps"> + 15 + </floater.string> + <floater.string name="client_frame_time_window_bg_msg"> + Normale, finestra sullo sfondo + </floater.string> + <floater.string name="client_frame_time_critical_msg"> + Velocità dei frame al di sotto di [CLIENT_FRAME_RATE_CRITICAL] + </floater.string> + <floater.string name="client_frame_time_warning_msg"> + Velocità dei frame tra [CLIENT_FRAME_RATE_CRITICAL] e [CLIENT_FRAME_RATE_WARNING] + </floater.string> + <floater.string name="client_frame_time_normal_msg"> + Normale + </floater.string> + <floater.string name="client_draw_distance_cause_msg"> + Possibile causa: Campo visivo impostato troppo alto + </floater.string> + <floater.string name="client_texture_loading_cause_msg"> + Possibile causa: Caricamento immagini + </floater.string> + <floater.string name="client_texture_memory_cause_msg"> + Possibile causa: Troppe immagini in memoria + </floater.string> + <floater.string name="client_complex_objects_cause_msg"> + Possibile causa: Troppi oggetti complessi intorno + </floater.string> + <floater.string name="network_text_msg"> + Network + </floater.string> + <floater.string name="network_packet_loss_critical_pct"> + 10 + </floater.string> + <floater.string name="network_packet_loss_warning_pct"> + 5 + </floater.string> + <floater.string name="network_packet_loss_critical_msg"> + La connessione sta calando al di sotto del [NETWORK_PACKET_LOSS_CRITICAL]% di pacchetti + </floater.string> + <floater.string name="network_packet_loss_warning_msg"> + La connessione sta calando tra il [NETWORK_PACKET_LOSS_WARNING]% e il [NETWORK_PACKET_LOSS_CRITICAL]% di pacchetti + </floater.string> + <floater.string name="network_performance_normal_msg"> + Normale + </floater.string> + <floater.string name="network_ping_critical_ms"> + 600 + </floater.string> + <floater.string name="network_ping_warning_ms"> + 300 + </floater.string> + <floater.string name="network_ping_critical_msg"> + Il tempo di ping della connessione è al di sopra di [NETWORK_PING_CRITICAL] ms + </floater.string> + <floater.string name="network_ping_warning_msg"> + Il tempo di ping della connessione è tra [NETWORK_PING_WARNING]-[NETWORK_PING_CRITICAL] ms + </floater.string> + <floater.string name="network_packet_loss_cause_msg"> + Possibile cattiva connessione o la larghezza di banda impostata nelle preferenze troppo alta. + </floater.string> + <floater.string name="network_ping_cause_msg"> + Possibile cattiva connessione o l'apertura di un programma di scambio files. + </floater.string> + <floater.string name="server_text_msg"> + Server + </floater.string> + <floater.string name="server_frame_rate_critical_fps"> + 20 + </floater.string> + <floater.string name="server_frame_rate_warning_fps"> + 30 + </floater.string> + <floater.string name="server_single_process_max_time_ms"> + 20 + </floater.string> + <floater.string name="server_frame_time_critical_msg"> + Velocità dei frame al di sotto di [SERVER_FRAME_RATE_CRITICAL] + </floater.string> + <floater.string name="server_frame_time_warning_msg"> + Velocità dei frame tra [SERVER_FRAME_RATE_CRITICAL] e [SERVER_FRAME_RATE_WARNING] + </floater.string> + <floater.string name="server_frame_time_normal_msg"> + Normale + </floater.string> + <floater.string name="server_physics_cause_msg"> + Possibile causa: troppi oggetti fisici + </floater.string> + <floater.string name="server_scripts_cause_msg"> + Possibile causa: troppi oggetti scriptati + </floater.string> + <floater.string name="server_net_cause_msg"> + Possibile causa: eccessivo traffico sulla rete + </floater.string> + <floater.string name="server_agent_cause_msg"> + Possibile causa: troppi residenti in movimento nella regione + </floater.string> + <floater.string name="server_images_cause_msg"> + Possibile causa: troppe elaborazioni di immagini + </floater.string> + <floater.string name="server_generic_cause_msg"> + Possibile causa: carico eccessivo del simulatore + </floater.string> + <floater.string name="smaller_label"> + >> + </floater.string> + <floater.string name="bigger_label"> + << + </floater.string> + <button label="" label_selected="" name="client_lagmeter" tool_tip="Stato del lag del programma in locale"/> + <text name="client"> + Client + </text> + <text font="SansSerifSmall" left="145" name="client_text"> + Normale + </text> + <text left="30" name="client_lag_cause" right="-10"/> + <button label="" label_selected="" name="network_lagmeter" tool_tip="Stato del lag del network"/> + <text name="network"> + Rete + </text> + <text font="SansSerifSmall" name="network_text"> + Normale + </text> + <text left="30" name="network_lag_cause" right="-10"/> + <button label="" label_selected="" name="server_lagmeter" tool_tip="Stato del lag del server"/> + <text name="server"> + Server + </text> + <text font="SansSerifSmall" name="server_text"> + Normale + </text> + <text left="30" name="server_lag_cause" right="-32"/> + <button label=">>" name="minimize" tool_tip="Cambia dimensioni floater"/> +</floater> diff --git a/indra/newview/skins/default/xui/it/floater_region_restarting.xml b/indra/newview/skins/default/xui/it/floater_region_restarting.xml new file mode 100644 index 0000000000..d4497288e0 --- /dev/null +++ b/indra/newview/skins/default/xui/it/floater_region_restarting.xml @@ -0,0 +1,23 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<floater name="region_restarting" title="RIAVVIO REGIONE IN CORSO"> + <string name="RegionName"> + La regione in cui ti trovi ([NAME]) verrà riavviata tra breve. + +Se rimani in questa regione verrai scollegato da Second Life. + </string> + <string name="RestartSeconds"> + Secondi prima del riavvio +[SECONDS] + </string> + <panel name="layout_panel_1"> + <text name="region_name"> + La regione in cui ti trovi (il nome di regione più lungo) verrà riavviata tra breve. + +Se rimani in questa regione verrai scollegato da Second Life. + </text> + <text name="restart_seconds"> + Secondi prima del riavvio + 32767 + </text> + </panel> +</floater> diff --git a/indra/newview/skins/default/xui/it/floater_scene_load_stats.xml b/indra/newview/skins/default/xui/it/floater_scene_load_stats.xml new file mode 100644 index 0000000000..ca18812eb7 --- /dev/null +++ b/indra/newview/skins/default/xui/it/floater_scene_load_stats.xml @@ -0,0 +1,64 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<floater name="Scene Load Statistics" title="STATISTICHE CARICAMENTO SCENA"> + <button label="In pausa" name="playpause"/> + <scroll_container name="statistics_scroll"> + <container_view name="statistics_view"> + <stat_view label="Di base" name="basic"> + <stat_bar label="Differenza pixel tra fotogrammi" name="frame difference"/> + <stat_bar label="Dati UDP ricevuti" name="bandwidth"/> + <stat_bar label="Perdita pacchetti" name="packet_loss"/> + </stat_view> + <stat_view label="Avanzata" name="advanced"> + <stat_view label="Render" name="render"> + <stat_bar label="Totale oggetti" name="objs"/> + <stat_bar label="Nuovi oggetti" name="newobjs"/> + <stat_bar label="Hit rate della cache per l'oggetto" name="object_cache_hits"/> + </stat_view> + <stat_view label="Texture" name="texture"> + <stat_bar label="Hit rate della cache" name="texture_cache_hits"/> + <stat_bar label="Latenza di lettura della cache" name="texture_cache_read_latency"/> + <stat_bar label="Conteggio" name="numimagesstat"/> + <stat_bar label="Conteggio grezzo" name="numrawimagesstat"/> + </stat_view> + <stat_view label="Rete" name="network"> + <stat_bar label="Pacchetti in ingresso" name="packetsinstat"/> + <stat_bar label="Pacchetti in uscita" name="packetsoutstat"/> + <stat_bar label="Oggetti" name="objectdatareceived"/> + <stat_bar label="Texture" name="texturedatareceived"/> + <stat_bar label="Risorsa" name="assetudpdatareceived"/> + <stat_bar label="Livelli" name="layersdatareceived"/> + <stat_bar label="Effettivi in ingresso" name="messagedatain"/> + <stat_bar label="Effettivi in uscita" name="messagedataout"/> + <stat_bar label="Operazioni VFS in sospeso" name="vfspendingoperations"/> + </stat_view> + </stat_view> + <stat_view label="Simulatore" name="sim"> + <stat_bar label="Oggetti" name="simobjects"/> + <stat_bar label="Oggetti attivi" name="simactiveobjects"/> + <stat_bar label="Script attivi" name="simactivescripts"/> + <stat_bar label="Pacchetti in ingresso" name="siminpps"/> + <stat_bar label="Pacchetti in uscita" name="simoutpps"/> + <stat_bar label="Download in attesa" name="simpendingdownloads"/> + <stat_bar label="Caricamenti in attesa" name="simpendinguploads"/> + <stat_bar label="Numero totale byte non confermati (Unacked)" name="simtotalunackedbytes"/> + <stat_view label="Tempo (ms)" name="simperf"> + <stat_bar label="Tempo totale Frame" name="simframemsec"/> + <stat_bar label="Tempo netto" name="simnetmsec"/> + <stat_bar label="Tempo motore fisico" name="simsimphysicsmsec"/> + <stat_bar label="Tempo simulazione" name="simsimothermsec"/> + <stat_bar label="Tempo agente" name="simagentmsec"/> + <stat_bar label="Tempo immagini" name="simimagesmsec"/> + <stat_bar label="Tempo script" name="simscriptmsec"/> + <stat_bar label="Tempo libero" name="simsparemsec"/> + <stat_view label="Dettagli tempo (ms)" name="timedetails"> + <stat_bar label="Passaggio fisica" name="simsimphysicsstepmsec"/> + <stat_bar label="Aggiorna forme fisica" name="simsimphysicsshapeupdatemsec"/> + <stat_bar label="Altro fisica" name="simsimphysicsothermsec"/> + <stat_bar label="Tempo pausa" name="simsleepmsec"/> + <stat_bar label="IO pompa" name="simpumpiomsec"/> + </stat_view> + </stat_view> + </stat_view> + </container_view> + </scroll_container> +</floater> diff --git a/indra/newview/skins/default/xui/it/floater_stats.xml b/indra/newview/skins/default/xui/it/floater_stats.xml index 825b2ce57a..1d850516b7 100755 --- a/indra/newview/skins/default/xui/it/floater_stats.xml +++ b/indra/newview/skins/default/xui/it/floater_stats.xml @@ -4,17 +4,20 @@ <container_view name="statistics_view"> <stat_view label="Di base" name="basic"> <stat_bar label="FPS" name="fps"/> - <stat_bar label="Larghezza banda" name="bandwidth"/> + <stat_bar label="Dati UDP ricevuti" name="bandwidth"/> <stat_bar label="Perdita pacchetti" name="packet_loss"/> <stat_bar label="Tempo Ping Sim" name="ping"/> </stat_view> <stat_view label="Avanzata" name="advanced"> <stat_view label="Render" name="render"> - <stat_bar label="KTris disegnato per fotogramma" name="ktrisframe"/> - <stat_bar label="KTris disegnato per secondo" name="ktrissec"/> + <stat_bar label="KTris per fotogramma" name="ktrisframe"/> + <stat_bar label="KTris per secondo" name="ktrissec"/> <stat_bar label="Totale oggetti" name="objs"/> <stat_bar label="Nuovi oggetti" name="newobjs"/> <stat_bar label="Hit rate della cache per l'oggetto" name="object_cache_hits"/> + <stat_bar label="Occlusion query eseguite" name="occlusion_queries"/> + <stat_bar label="Oggetti in occlusion" name="occluded"/> + <stat_bar label="Oggetti non in occlusion" name="unoccluded"/> </stat_view> <stat_view label="Texture" name="texture"> <stat_bar label="Hit rate della cache" name="texture_cache_hits"/> @@ -26,15 +29,32 @@ <stat_bar label="Memoria complessiva" name="rawmemstat"/> <stat_bar label="Memoria impegnata" name="glboundmemstat"/> </stat_view> + <stat_view label="Utilizzo memoria" name="memory"> + <stat_bar label="LLTrace" name="LLTrace"/> + <stat_bar label="Interfaccia utente" name="LLView"/> + <stat_bar label="Font" name="LLFontFreetype"/> + <stat_bar label="Inventario" name="LLInventoryObject"/> + <stat_bar label="Oggetti Viewer" name="LLViewerObject"/> + <stat_bar label="Dati gruppo octree" name="LLViewerOctreeGroup"/> + <stat_bar label="Dati octree" name="LLViewerOctreeEntry"/> + <stat_bar label="Cache oggetti Viewer" name="LLVOCacheEntry"/> + <stat_bar label="Disegnabili" name="LLDrawable"/> + <stat_bar label="Dati viso" name="LLFace"/> + <stat_bar label="Info disegno" name="LLDrawInfo"/> + <stat_bar label="Dati texture" name="LLTexture"/> + <stat_bar label="Dati immagine" name="LLImage"/> + <stat_bar label="Dati immagine GL" name="LLImageGL"/> + <stat_bar label="Buffer vertici" name="LLVertexBuffer"/> + </stat_view> <stat_view label="Rete" name="network"> <stat_bar label="Pacchetti in ingresso" name="packetsinstat"/> <stat_bar label="Pacchetti in uscita" name="packetsoutstat"/> - <stat_bar label="Oggetti" name="objectkbitstat"/> - <stat_bar label="Texture" name="texturekbitstat"/> - <stat_bar label="Risorse server" name="assetkbitstat"/> - <stat_bar label="Layer" name="layerskbitstat"/> - <stat_bar label="Effettivi in ingresso" name="actualinkbitstat"/> - <stat_bar label="Effettivi in uscita" name="actualoutkbitstat"/> + <stat_bar label="Oggetti" name="objectdatareceived"/> + <stat_bar label="Texture" name="texturedatareceived"/> + <stat_bar label="Risorsa" name="assetudpdatareceived"/> + <stat_bar label="Livelli" name="layersdatareceived"/> + <stat_bar label="Effettivi in ingresso" name="messagedatain"/> + <stat_bar label="Effettivi in uscita" name="messagedataout"/> <stat_bar label="Operazioni VFS in sospeso" name="vfspendingoperations"/> </stat_view> </stat_view> @@ -53,7 +73,8 @@ <stat_bar label="Passaggi silhouette saltati" name="simsimskippedsilhouettesteps"/> <stat_bar label="Personaggi aggiornati" name="simsimpctsteppedcharacters"/> </stat_view> - <stat_view label="Tempo (ms)" name="simperf"> + <stat_bar label="Totale dati non confermati (unacked)" name="simtotalunackedbytes"/> + <stat_view label="Orario" name="simperf"> <stat_bar label="Tempo totale Frame" name="simframemsec"/> <stat_bar label="Tempo netto" name="simnetmsec"/> <stat_bar label="Tempo motore fisico" name="simsimphysicsmsec"/> @@ -62,7 +83,7 @@ <stat_bar label="Tempo immagini" name="simimagesmsec"/> <stat_bar label="Tempo script" name="simscriptmsec"/> <stat_bar label="Tempo libero" name="simsparemsec"/> - <stat_view label="Dettagli tempo (ms)" name="timedetails"> + <stat_view label="Dettagli orario" name="timedetails"> <stat_bar label="Passaggio fisica" name="simsimphysicsstepmsec"/> <stat_bar label="Aggiorna forme fisica" name="simsimphysicsshapeupdatemsec"/> <stat_bar label="Altro fisica" name="simsimphysicsothermsec"/> diff --git a/indra/newview/skins/default/xui/it/menu_avatar_icon.xml b/indra/newview/skins/default/xui/it/menu_avatar_icon.xml index b93b695300..215eb836c8 100755 --- a/indra/newview/skins/default/xui/it/menu_avatar_icon.xml +++ b/indra/newview/skins/default/xui/it/menu_avatar_icon.xml @@ -2,6 +2,7 @@ <menu name="Avatar Icon Menu"> <menu_item_call label="Vedi profilo" name="Show Profile"/> <menu_item_call label="Manda IM..." name="Send IM"/> + <menu_item_call label="Richiedi teleport" name="Request Teleport"/> <menu_item_call label="Aggiungi come amico..." name="Add Friend"/> <menu_item_call label="Togli amicizia..." name="Remove Friend"/> </menu> diff --git a/indra/newview/skins/default/xui/it/menu_inventory.xml b/indra/newview/skins/default/xui/it/menu_inventory.xml index b31e35771d..c8042f4253 100755 --- a/indra/newview/skins/default/xui/it/menu_inventory.xml +++ b/indra/newview/skins/default/xui/it/menu_inventory.xml @@ -70,6 +70,7 @@ <menu_item_call label="Esegui" name="Sound Play"/> <menu_item_call label="Copia SLurl" name="url_copy"/> <menu_item_call label="Informazioni sul punto di riferimento" name="About Landmark"/> + <menu_item_call label="Mostra sulla mappa" name="show_on_map"/> <menu_item_call label="Riproduci in Second Life" name="Animation Play"/> <menu_item_call label="Esegui localmente" name="Animation Audition"/> <menu_item_call label="Invia un Instant Message" name="Send Instant Message"/> diff --git a/indra/newview/skins/default/xui/it/menu_login.xml b/indra/newview/skins/default/xui/it/menu_login.xml index 35053ec499..126089aa6a 100755 --- a/indra/newview/skins/default/xui/it/menu_login.xml +++ b/indra/newview/skins/default/xui/it/menu_login.xml @@ -5,7 +5,15 @@ <menu_item_call label="Esci da [APP_NAME]" name="Quit"/> </menu> <menu label="Aiuto" name="Help"> - <menu_item_call label="Aiuto di [SECOND_LIFE]" name="Second Life Help"/> + <menu_item_call label="Istruzioni..." name="How To"/> + <menu_item_call label="Guida introduttiva" name="Quickstart"/> + <menu_item_call label="Base di conoscenza" name="Knowledge Base"/> + <menu_item_call label="Wiki" name="Wiki"/> + <menu_item_call label="Forum della comunità " name="Community Forums"/> + <menu_item_call label="Portale assistenza" name="Support portal"/> + <menu_item_call label="[SECOND_LIFE] Notizie" name="Second Life News"/> + <menu_item_call label="[SECOND_LIFE] Blog" name="Second Life Blogs"/> + <menu_item_call label="Segnala bug" name="Report Bug"/> <menu_item_call label="Informazioni su [APP_NAME]" name="About Second Life"/> </menu> <menu_item_check label="Mostra menu Debug" name="Show Debug Menu"/> diff --git a/indra/newview/skins/default/xui/it/menu_teleport_history_item.xml b/indra/newview/skins/default/xui/it/menu_teleport_history_item.xml index 81053fbd65..31236895fa 100755 --- a/indra/newview/skins/default/xui/it/menu_teleport_history_item.xml +++ b/indra/newview/skins/default/xui/it/menu_teleport_history_item.xml @@ -2,5 +2,5 @@ <context_menu name="Teleport History Item Context Menu"> <menu_item_call label="Teleport" name="Teleport"/> <menu_item_call label="Maggiori informazioni" name="More Information"/> - <menu_item_call label="Copia negli appunti" name="CopyToClipboard"/> + <menu_item_call label="Copia SLurl" name="CopyToClipboard"/> </context_menu> diff --git a/indra/newview/skins/default/xui/it/menu_viewer.xml b/indra/newview/skins/default/xui/it/menu_viewer.xml index 52247d6c9c..3e6589927d 100755 --- a/indra/newview/skins/default/xui/it/menu_viewer.xml +++ b/indra/newview/skins/default/xui/it/menu_viewer.xml @@ -72,11 +72,11 @@ <menu_item_check label="Menu Avanzato" name="Show Advanced Menu"/> </menu> <menu label="Sole" name="Sun"> - <menu_item_call label="Alba" name="Sunrise"/> - <menu_item_call label="Mezzogiorno" name="Noon"/> - <menu_item_call label="Tramonto" name="Sunset"/> - <menu_item_call label="Mezzanotte" name="Midnight"/> - <menu_item_call label="Usa impostazioni regione" name="Use Region Settings"/> + <menu_item_check label="Alba" name="Sunrise"/> + <menu_item_check label="Mezzogiorno" name="Noon"/> + <menu_item_check label="Tramonto" name="Sunset"/> + <menu_item_check label="Mezzanotte" name="Midnight"/> + <menu_item_check label="Usa impostazioni regione" name="Use Region Settings"/> </menu> <menu label="Editor ambiente" name="Environment Editor"> <menu_item_call label="Impostazioni ambiente..." name="Environment Settings"/> @@ -165,8 +165,6 @@ </menu> <menu label="Aiuto" name="Help"> <menu_item_call label="Istruzioni..." name="How To"/> - <menu_item_call label="Aiuto di [SECOND_LIFE]" name="Second Life Help"/> - <menu_item_call label="Guida dell'utente" name="User’s guide"/> <menu_item_call label="Base di conoscenza" name="Knowledge Base"/> <menu_item_call label="Wiki" name="Wiki"/> <menu_item_call label="Forum della comunità " name="Community Forums"/> @@ -188,6 +186,7 @@ <menu label="Strumenti di performance" name="Performance Tools"> <menu_item_call label="Misuratore lag" name="Lag Meter"/> <menu_item_check label="Barra statistiche" name="Statistics Bar"/> + <menu_item_call label="Statistiche caricamento scena" name="Scene Load Statistics"/> <menu_item_check label="Mostra peso visualizzazione per avatar" name="Avatar Rendering Cost"/> </menu> <menu label="Evidenziazione e visibilità " name="Highlighting and Visibility"> @@ -249,6 +248,7 @@ <menu_item_check label="Timer veloci" name="Fast Timers"/> <menu_item_check label="Memoria" name="Memory"/> <menu_item_check label="Statistiche scena" name="Scene Statistics"/> + <menu_item_check label="Monitoraggio caricamento scena" name="Scene Loading Monitor"/> <menu_item_call label="Console di debug recupero texture" name="Texture Fetch Debug Console"/> <menu_item_call label="Informazioni regione sulla console di debug" name="Region Info to Debug Console"/> <menu_item_check label="Fotocamera" name="Camera"/> @@ -280,6 +280,7 @@ <menu_item_check label="Veloc. di visualizzazione casuale" name="Randomize Framerate"/> <menu_item_check label="Test frame" name="Frame Test"/> <menu_item_call label="Profilo frame" name="Frame Profile"/> + <menu_item_call label="Benchmark" name="Benchmark"/> </menu> <menu label="Render Metadata" name="Render Metadata"> <menu_item_check label="Normali" name="Normals"/> @@ -287,6 +288,7 @@ <menu_item_check label="Aggiorna tipo" name="Update Type"/> <menu_item_check label="Info livello dettaglio" name="LOD Info"/> <menu_item_check label="Crea coda" name="Build Queue"/> + <menu_item_check label="Giunti" name="Joints"/> <menu_item_check label="Vettori vento" name="Wind Vectors"/> <menu_item_check label="Complessità rendering" name="rendercomplexity"/> <menu_item_check label="Byte collegamento" name="attachment bytes"/> @@ -312,6 +314,7 @@ <menu_item_check label="Rendering delle luci unite" name="Render Attached Lights"/> <menu_item_check label="Rendering particelle unite" name="Render Attached Particles"/> <menu_item_check label="Gli oggetti brillano quando sono sotto il cursore" name="Hover Glow Objects"/> + <menu_item_call label="Pulisci cache immediatamente" name="Cache Clear"/> </menu> <menu label="Rete" name="Network"> <menu_item_check label="Metti in pausa" name="AgentPause"/> @@ -327,7 +330,6 @@ <menu_item_call label="Test browser multimedia" name="Web Browser Test"/> <menu_item_call label="Browser contenuto Web" name="Web Content Browser"/> <menu_item_call label="Stampa informazioni oggetto selezionato" name="Print Selected Object Info"/> - <menu_item_check label="Console di debug regione" name="Region Debug Console"/> <menu_item_check label="Debug clic" name="Debug Clicks"/> <menu_item_check label="Debug eventi mouse" name="Debug Mouse Events"/> </menu> diff --git a/indra/newview/skins/default/xui/it/notifications.xml b/indra/newview/skins/default/xui/it/notifications.xml index 96b8c96595..45c89ecd7a 100755 --- a/indra/newview/skins/default/xui/it/notifications.xml +++ b/indra/newview/skins/default/xui/it/notifications.xml @@ -114,13 +114,13 @@ Per ulteriori informazioni consulta il [[MARKETPLACE_IMPORTS_URL] registro error <usetemplate name="okbutton" yestext="OK"/> </notification> <notification name="OutboxImportFailed"> - Trasferimento non riuscito + Trasferimento non riuscito, errore '[ERROR_CODE]' Nessuna cartella è stata inviata a Marketplace, a causa di un errore di sistema o di rete. Riprova più tardi. <usetemplate name="okbutton" yestext="OK"/> </notification> <notification name="OutboxInitFailed"> - Inizializzazione Marketplace non riuscita + Inizializzazione Marketplace non riuscita, errore '[ERROR_CODE]' L'inizializzazione con il Marketplace non ha avuto successo a causa di un errore di sistema o di rete. Riprova più tardi. <usetemplate name="okbutton" yestext="OK"/> @@ -1734,6 +1734,10 @@ più del limite [LIMIT]. Sei sicuro di volere il teleport a <nolink>[LOCATION]</nolink>? <usetemplate ignoretext="Conferma il teleport verso un punto di riferimento" name="okcancelignore" notext="Annulla" yestext="Teleportati"/> </notification> + <notification name="TeleportViaSLAPP"> + Sei sicuro di volere il teleport a <nolink>[LOCATION]</nolink>? + <usetemplate ignoretext="Confermo di voler usare il teleport tramite SLAPP" name="okcancelignore" notext="Annulla" yestext="Teleport"/> + </notification> <notification name="TeleportToPick"> Teleport a [PICK]? <usetemplate ignoretext="Conferma che voglio il teleport verso l'ubicazione nei Luoghi preferiti" name="okcancelignore" notext="Annulla" yestext="Teleport"/> @@ -1944,6 +1948,9 @@ Cambierà migliaia di regioni e produrrà seri problemi ai vari server. <notification name="ProblemAddingEstateManager"> Si sono riscontrati problemi nell'aggiungere un nuovo manager della proprietà . Una o più proprietà potrebbero avere la lista dei manager piena. </notification> + <notification name="ProblemAddingEstateBanManager"> + Impossibile aggiungere il gestore o il proprietario della proprietà alla lista degli espulsi. + </notification> <notification name="ProblemAddingEstateGeneric"> Si sono riscontrati problemi nell'aggiunta a questo elenco della proprietà . Una o più proprietà potrebbe avere una lista piena. </notification> @@ -3028,13 +3035,13 @@ Per informazioni dettagliate, vedi il file del registro. Non è stata ottenuta la capacità della regione '[CAPABILITY]'. </notification> <notification name="ShareItemsConfirmation"> - Sei sicuro di volere condividere gli oggetti + Sei sicuro di volere condividere gli oggetti seguenti: -<nolink>[MSG]</nolink> +<nolink>[ITEMS]</nolink> -Con i seguenti residenti? +Con i seguenti residenti: -[RESIDENTS] +<nolink>[RESIDENTS]</nolink> <usetemplate name="okcancelbuttons" notext="Annulla" yestext="OK"/> </notification> <notification name="ShareFolderConfirmation"> @@ -3046,7 +3053,7 @@ Sei sicuro di volere condividere gli oggetti seguenti: Con i seguenti residenti: -[RESIDENTS] +<nolink>[RESIDENTS]</nolink> <usetemplate name="okcancelbuttons" notext="Annulla" yestext="Ok"/> </notification> <notification name="ItemsShared"> @@ -3502,10 +3509,6 @@ Riprova tra un minuto. <notification name="EjectComingSoon"> Non sei più benvenuto qui e hai [EJECT_TIME] secondi per andartene. </notification> - <notification name="NoEnterServerFull"> - Non puoi entrare in questa regione perché -il server è pieno. - </notification> <notification name="SaveBackToInvDisabled"> Opzione Salva nell'inventario disattivata </notification> @@ -3695,6 +3698,9 @@ il server è pieno. <notification name="LinkFailedTooMuchPhysics"> L'oggetto usa troppe risorse per la fisica -- le sue dinamiche sono state disattivate. </notification> + <notification name="EstateManagerFailedllTeleportHome"> + L'oggetto '[OBJECT_NAME]' a [SLURL] non può eseguire il teleport del gestore della proprietà alla sua casa. + </notification> <notification name="TeleportedHomeByObjectOnParcel"> Sei stato teleportato nella posizione iniziale dall'oggetto '[OBJECT_NAME]' del lotto '[PARCEL_NAME]' </notification> @@ -3885,13 +3891,18 @@ il server è pieno. Non sono stati selezionati abbastanza lotti affittati da collegare. </notification> <notification name="CantDivideLandMultipleParcelsSelected"> - Terreno non divisibile.\nHai selezionato più di un lotto.\nProva a selezionare una quantità di terreno più piccola. + Impossibile suddividere il terreno. +È stato selezionato più di un lotto. +Prova a selezionare un pezzo di terreno più piccolo. </notification> <notification name="CantDivideLandCantFindParcel"> - impossibile suddividere il terreno.\nimpossibile trovare il lotto.\nInvia una segnalazione con Aiuto -> Segnala bug... + Impossibile suddividere il terreno. +Lotto non trovato. +Invia una segnalazione con Aiuto -> Segnala Bug... </notification> <notification name="CantDivideLandWholeParcelSelected"> - Impossibile suddividere il terreno. È stato selezionato l'intero lotto.\nProva a selezionare un pezzo di terreno più piccolo. + Impossibile suddividere il terreno. È stato selezionato un intero lotto. +Prova a selezionare un pezzo di terreno più piccolo. </notification> <notification name="LandHasBeenDivided"> Il terreno è stato diviso. @@ -4031,4 +4042,8 @@ il server è pieno. Impossibile spostare i file. Il percorso precedente è stato ripristinato. <usetemplate ignoretext="Impossibile spostare i file. Il percorso precedente è stato ripristinato." name="okignore" yestext="OK"/> </notification> + <notification name="ChatHistoryIsBusyAlert"> + Il file della cronologia del file sta ancora eseguendo l'operazione precedente. Riprova nuovamente tra qualche minuto oppure chatta con un'altra persona. + <usetemplate name="okbutton" yestext="OK"/> + </notification> </notifications> diff --git a/indra/newview/skins/default/xui/it/panel_group_info_sidetray.xml b/indra/newview/skins/default/xui/it/panel_group_info_sidetray.xml index 34ee3c2dca..138edc3a26 100755 --- a/indra/newview/skins/default/xui/it/panel_group_info_sidetray.xml +++ b/indra/newview/skins/default/xui/it/panel_group_info_sidetray.xml @@ -20,7 +20,7 @@ <layout_panel name="group_accordions"> <accordion name="groups_accordion"> <accordion_tab name="group_general_tab" title="Generale"/> - <accordion_tab name="group_roles_tab" title="Ruoli"/> + <accordion_tab name="group_roles_tab" title="Ruoli e membri"/> <accordion_tab name="group_notices_tab" title="Avvisi"/> <accordion_tab name="group_land_tab" title="Terra/Beni"/> </accordion> diff --git a/indra/newview/skins/default/xui/it/panel_group_roles.xml b/indra/newview/skins/default/xui/it/panel_group_roles.xml index 478b35e628..79e9cd73d2 100755 --- a/indra/newview/skins/default/xui/it/panel_group_roles.xml +++ b/indra/newview/skins/default/xui/it/panel_group_roles.xml @@ -21,6 +21,7 @@ cliccando sui loro nomi. <name_list.columns label="Socio" name="name"/> <name_list.columns label="Donazioni" name="donated"/> <name_list.columns label="Stato" name="online"/> + <name_list.columns label="Titolo" name="title"/> </name_list> <button label="Invita" name="member_invite"/> <button label="Espelli" name="member_eject"/> diff --git a/indra/newview/skins/default/xui/it/panel_region_debug.xml b/indra/newview/skins/default/xui/it/panel_region_debug.xml index aba60d03aa..88c056bf5e 100755 --- a/indra/newview/skins/default/xui/it/panel_region_debug.xml +++ b/indra/newview/skins/default/xui/it/panel_region_debug.xml @@ -7,11 +7,8 @@ sconosciuta </text> <check_box label="Disabilita gli script" name="disable_scripts_check" tool_tip="Disabilita tutti gli script in questa regione"/> - <button label="?" name="disable_scripts_help"/> <check_box label="Disabilita le collisioni" name="disable_collisions_check" tool_tip="Disabilita tutte le collisioni non di avatar in questa regione"/> - <button label="?" name="disable_collisions_help"/> <check_box label="Disabilita la fisica" name="disable_physics_check" tool_tip="Disabilita tutta la fisica dei corpi in questa regione"/> - <button label="?" name="disable_physics_help"/> <button label="Applica" name="apply_btn"/> <text name="objret_text_lbl" width="130"> Restituisci oggetti @@ -31,10 +28,8 @@ <check_box label="In tutte le regioni di questa proprietà " name="return_estate_wide" tool_tip="Restituisci tutti gli oggetti nelle varie regioni che costituiscono l'insieme dei possedimenti terrieri"/> <button label="Restituisci" name="return_btn"/> <button label="Visualizza l'elenco dei maggiori collidenti..." name="top_colliders_btn" tool_tip="Elenco degli oggetti che stanno potenzialmente subendo le maggiori collisioni" width="280"/> - <button label="?" left="297" name="top_colliders_help"/> - <button label="Visualizza l'elenco degli script più pesanti..." name="top_scripts_btn" tool_tip="Elenco degli oggetti che impiegano più tempo a far girare gli script" width="280"/> - <button label="?" left="297" name="top_scripts_help"/> <button label="Riavvia la regione" name="restart_btn" tool_tip="Dai 2 minuti di tempo massimo e fai riavviare la regione"/> - <button label="?" name="restart_help"/> + <button label="Visualizza l'elenco degli script più pesanti..." name="top_scripts_btn" tool_tip="Elenco degli oggetti che impiegano più tempo a far girare gli script" width="280"/> <button label="Annulla riavvio" name="cancel_restart_btn" tool_tip="Annulla riavvio regione"/> + <button label="Console di debug regione" name="region_debug_console_btn" tool_tip="Apri console di debug regione"/> </panel> diff --git a/indra/newview/skins/default/xui/it/panel_region_general.xml b/indra/newview/skins/default/xui/it/panel_region_general.xml index c550e005ae..3e2f593d2f 100755 --- a/indra/newview/skins/default/xui/it/panel_region_general.xml +++ b/indra/newview/skins/default/xui/it/panel_region_general.xml @@ -20,12 +20,12 @@ </text> <check_box label="Proibisci la modifica del terreno" name="block_terraform_check"/> <check_box label="Impedisci il volo" name="block_fly_check"/> + <check_box label="Blocca il volo sul lotto" name="block_fly_over_check" tool_tip="Espandi il controllo dell'accesso in alto per impedire il volo sopra un lotto"/> <check_box label="Abilita i danni" name="allow_damage_check"/> <check_box label="Limita gli urti" name="restrict_pushobject"/> <check_box label="Abilita la rivendita del terreno" name="allow_land_resell_check"/> <check_box label="Abilita unione/suddivisione del terreno" name="allow_parcel_changes_check"/> <check_box label="Proibisci che il terreno appaia nelle ricerche" name="block_parcel_search_check" tool_tip="Permetti che le persone vedano questa regione e le sue suddivisioni nei risultati delle ricerche"/> - <check_box label="Consenti oggetti con reticolo" name="mesh_rez_enabled_check" tool_tip="Permetti alle persone di rezzare oggetti con reticolo su questa regione"/> <spinner label="Limite massimo di avatar" label_width="135" name="agent_limit_spin" width="190"/> <spinner label="Bonus di oggetti" label_width="135" name="object_bonus_spin" width="190"/> <text label="Maturità " name="access_text" width="120"> diff --git a/indra/newview/skins/default/xui/it/sidepanel_inventory.xml b/indra/newview/skins/default/xui/it/sidepanel_inventory.xml index 907857bf5a..2f00a023bb 100755 --- a/indra/newview/skins/default/xui/it/sidepanel_inventory.xml +++ b/indra/newview/skins/default/xui/it/sidepanel_inventory.xml @@ -33,7 +33,7 @@ <layout_panel name="shop_btn_lp"> <button label="Acquisti" name="shop_btn" tool_tip="Apri pagina web di Marketplace"/> <button label="Indossa" name="wear_btn" tool_tip="Indossa il vestiario selezionato"/> - <button label="Riproduci" name="play_btn"/> + <button label="Gioca" name="play_btn"/> <button label="Teleport" name="teleport_btn" tool_tip="Teleport alla zona selezionata"/> </layout_panel> </layout_stack> diff --git a/indra/newview/skins/default/xui/it/strings.xml b/indra/newview/skins/default/xui/it/strings.xml index 86d7f75b83..3835907f01 100755 --- a/indra/newview/skins/default/xui/it/strings.xml +++ b/indra/newview/skins/default/xui/it/strings.xml @@ -34,6 +34,45 @@ <string name="StartupRequireDriverUpdate"> Inizializzazione grafica non riuscita. Aggiorna il driver della scheda grafica! </string> + <string name="AboutHeader"> + [APP_NAME] [VIEWER_VERSION_0].[VIEWER_VERSION_1].[VIEWER_VERSION_2] ([VIEWER_VERSION_3]) [BUILD_DATE] [BUILD_TIME] ([CHANNEL]) +[[VIEWER_RELEASE_NOTES_URL] [ReleaseNotes]] + </string> + <string name="AboutCompiler"> + Generato con [COMPILER] versione [COMPILER_VERSION] + </string> + <string name="AboutPosition"> + Tu sei a [POSITION_LOCAL_0,number,1], [POSITION_LOCAL_1,number,1], [POSITION_LOCAL_2,number,1] in [REGION] che si trova a <nolink>[HOSTNAME]</nolink> ([HOSTIP]) +SLURL: <nolink>[SLURL]</nolink> +(coordinate globali [POSITION_0,number,1], [POSITION_1,number,1], [POSITION_2,number,1]) +[SERVER_VERSION] +[SERVER_RELEASE_NOTES_URL] + </string> + <string name="AboutSystem"> + CPU: [CPU] +Memoria: [MEMORY_MB] MB +Versione sistema operativo: [OS_VERSION] +Venditore scheda grafica: [GRAPHICS_CARD_VENDOR] +Scheda grafica: [GRAPHICS_CARD] + </string> + <string name="AboutDriver"> + Versione driver Windows per grafica: [GRAPHICS_DRIVER_VERSION] + </string> + <string name="AboutLibs"> + Versione OpenGL: [OPENGL_VERSION] + +Versione libcurl: [LIBCURL_VERSION] +Versione J2C Decoder: [J2C_VERSION] +Versione Driver audio: [AUDIO_DRIVER_VERSION] +Versione Qt Webkit: [QT_WEBKIT_VERSION] +Versione Server voice: [VOICE_VERSION] + </string> + <string name="AboutTraffic"> + Pacchetti perduti: [PACKETS_LOST,number,0]/[PACKETS_IN,number,0] ([PACKETS_PCT,number,1]%) + </string> + <string name="ErrorFetchingServerReleaseNotesURL"> + Errore nel recupero URL note rilascio versione + </string> <string name="ProgressRestoring"> Ripristino in corso... </string> @@ -931,12 +970,12 @@ Prova ad accedere nuovamente tra un minuto. <string name="ControlYourCamera"> Controllare la tua fotocamera </string> - <string name="AgentNameSubst"> - (Tu) - </string> <string name="TeleportYourAgent"> Teleportarti </string> + <string name="AgentNameSubst"> + (Tu) + </string> <string name="JoinAnExperience"> Partecipa a un'esperienza </string> @@ -1261,8 +1300,7 @@ Prova ad accedere nuovamente tra un minuto. <string name="InventoryInboxNoItems"> Gli acquissti dal mercato verranno mostrati qui. Potrai quindi trascinarli nel tuo inventario per usarli. </string> - <string name="Unconstrained">Libero</string> - <string name="MarketplaceURL"> + <string name="MarketplaceURL"> https://marketplace.[MARKETPLACE_DOMAIN_NAME]/ </string> <string name="MarketplaceURL_CreateStore"> @@ -1291,6 +1329,18 @@ Prova ad accedere nuovamente tra un minuto. <string name="InventoryOutboxNoItems"> Trascina le cartelle in questa area e clicca su "Invia a Marketplace" per metterle in vendita su [[MARKETPLACE_DASHBOARD_URL] Marketplace]. </string> + <string name="InventoryOutboxInitializingTitle"> + Inizializzazione Marketplace.in corso + </string> + <string name="InventoryOutboxInitializing"> + Stiamo eseguendo l'accesso al tuo account sul [[MARKETPLACE_CREATE_STORE_URL] negozio Marketplace]. + </string> + <string name="InventoryOutboxErrorTitle"> + Errori in Marketplace. + </string> + <string name="InventoryOutboxError"> + Il [[MARKETPLACE_CREATE_STORE_URL] negozio nel Marketplace] ha riportato errori. + </string> <string name="Marketplace Error None"> Nessun errore </string> @@ -1318,6 +1368,9 @@ Prova ad accedere nuovamente tra un minuto. <string name="Open landmarks"> Apri luoghi di riferimento </string> + <string name="Unconstrained"> + Libero + </string> <string name="no_transfer" value="(nessun trasferimento)"/> <string name="no_modify" value="(nessuna modifica)"/> <string name="no_copy" value="(nessuna copia)"/> @@ -1712,6 +1765,9 @@ Prova ad accedere nuovamente tra un minuto. <string name="CompileQueueDownloadedCompiling"> Scaricato, in compilazione </string> + <string name="CompileQueueServiceUnavailable"> + Il servizio di compilazione degli script non è disponibile + </string> <string name="CompileQueueScriptNotFound"> Script non trovato sul server. </string> diff --git a/indra/newview/skins/default/xui/ja/floater_lagmeter.xml b/indra/newview/skins/default/xui/ja/floater_lagmeter.xml new file mode 100644 index 0000000000..e3546cd837 --- /dev/null +++ b/indra/newview/skins/default/xui/ja/floater_lagmeter.xml @@ -0,0 +1,151 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<floater name="floater_lagmeter" title="ラグメーター"> + <floater.string name="max_title_msg"> + ラグ メーター + </floater.string> + <floater.string name="max_width_px"> + 350 + </floater.string> + <floater.string name="min_title_msg"> + ラグ + </floater.string> + <floater.string name="min_width_px"> + 90 + </floater.string> + <floater.string name="client_text_msg"> + クライアント + </floater.string> + <floater.string name="client_frame_rate_critical_fps"> + 10 + </floater.string> + <floater.string name="client_frame_rate_warning_fps"> + 15 + </floater.string> + <floater.string name="client_frame_time_window_bg_msg"> + ノーマルã€ã‚¦ã‚£ãƒ³ãƒ‰ã‚¦ã¯èƒŒæ™¯ã« + </floater.string> + <floater.string name="client_frame_time_critical_msg"> + クライアント フレームレート < [CLIENT_FRAME_RATE_CRITICAL] + </floater.string> + <floater.string name="client_frame_time_warning_msg"> + クライアント フレームレート: [CLIENT_FRAME_RATE_CRITICAL] ~ [CLIENT_FRAME_RATE_WARNING] + </floater.string> + <floater.string name="client_frame_time_normal_msg"> + ノーマル + </floater.string> + <floater.string name="client_draw_distance_cause_msg"> + 考ãˆã‚‰ã‚Œã‚‹åŽŸå› : æç”»è·é›¢ã®è¨å®šãŒå¤§ãã™ãŽã‚‹ + </floater.string> + <floater.string name="client_texture_loading_cause_msg"> + 考ãˆã‚‰ã‚Œã‚‹åŽŸå› : ç”»åƒã®ãƒãƒ¼ãƒ‰ä¸ + </floater.string> + <floater.string name="client_texture_memory_cause_msg"> + 考ãˆã‚‰ã‚Œã‚‹åŽŸå› : メモリ内ã®ç”»åƒæ•°ãŒå¤šã™ãŽã‚‹ + </floater.string> + <floater.string name="client_complex_objects_cause_msg"> + 考ãˆã‚‰ã‚Œã‚‹åŽŸå› : ç”»é¢ã«å«ã¾ã‚Œã‚‹è¤‡é›‘ãªã‚ªãƒ–ジェクトãŒå¤šã™ãŽã‚‹ + </floater.string> + <floater.string name="network_text_msg"> + ãƒãƒƒãƒˆãƒ¯ãƒ¼ã‚¯ + </floater.string> + <floater.string name="network_packet_loss_critical_pct"> + 10 + </floater.string> + <floater.string name="network_packet_loss_warning_pct"> + 5 + </floater.string> + <floater.string name="network_packet_loss_critical_msg"> + 接続ã§ãƒ‰ãƒãƒƒãƒ—ã•ã‚Œã‚‹ãƒ‘ケットã®å‰²åˆ: > [NETWORK_PACKET_LOSS_CRITICAL] + </floater.string> + <floater.string name="network_packet_loss_warning_msg"> + 接続ã§ãƒ‰ãƒãƒƒãƒ—ã•ã‚Œã‚‹ãƒ‘ケットã®å‰²åˆ:[NETWORK_PACKET_LOSS_WARNING] ~ [NETWORK_PACKET_LOSS_CRITICAL] + </floater.string> + <floater.string name="network_performance_normal_msg"> + ノーマル + </floater.string> + <floater.string name="network_ping_critical_ms"> + 600 + </floater.string> + <floater.string name="network_ping_warning_ms"> + 300 + </floater.string> + <floater.string name="network_ping_critical_msg"> + 接続㮠ping 時間: > [NETWORK_PING_CRITICAL] ミリ秒 + </floater.string> + <floater.string name="network_ping_warning_msg"> + 接続㮠ping 時間: [NETWORK_PING_WARNING] ~ [NETWORK_PING_CRITICAL] ミリ秒 + </floater.string> + <floater.string name="network_packet_loss_cause_msg"> + 接続ä¸è‰¯ã«ãªã£ã¦ã„ã‚‹ã‹ã€å¸¯åŸŸå¹…è¨å®šãŒé«˜ã™ãŽã¾ã™ã€‚ + </floater.string> + <floater.string name="network_ping_cause_msg"> + 接続ä¸è‰¯ã«ãªã£ã¦ã„ã‚‹ã‹ã€ãƒ•ã‚¡ã‚¤ãƒ«å…±æœ‰ã‚¢ãƒ—リケーションã«å•é¡ŒãŒã‚ã‚Šã¾ã™ã€‚ + </floater.string> + <floater.string name="server_text_msg"> + サーãƒãƒ¼ + </floater.string> + <floater.string name="server_frame_rate_critical_fps"> + 20 + </floater.string> + <floater.string name="server_frame_rate_warning_fps"> + 30 + </floater.string> + <floater.string name="server_single_process_max_time_ms"> + 20 + </floater.string> + <floater.string name="server_frame_time_critical_msg"> + シミュレーターã®ãƒ•ãƒ¬ãƒ¼ãƒ レート: < [SERVER_FRAME_RATE_CRITICAL] + </floater.string> + <floater.string name="server_frame_time_warning_msg"> + シミュレーターã®ãƒ•ãƒ¬ãƒ¼ãƒ レート: [SERVER_FRAME_RATE_CRITICAL] ~ [SERVER_FRAME_RATE_WARNING] + </floater.string> + <floater.string name="server_frame_time_normal_msg"> + ノーマル + </floater.string> + <floater.string name="server_physics_cause_msg"> + 考ãˆã‚‰ã‚Œã‚‹åŽŸå› : 物ç†çš„オブジェクトãŒå¤šã™ãŽã‚‹ + </floater.string> + <floater.string name="server_scripts_cause_msg"> + 考ãˆã‚‰ã‚Œã‚‹åŽŸå› : スクリプトをå«ã‚€ã‚ªãƒ–ジェクトãŒå¤šã™ãŽã‚‹ + </floater.string> + <floater.string name="server_net_cause_msg"> + 考ãˆã‚‰ã‚Œã‚‹åŽŸå› : ãƒãƒƒãƒˆãƒ¯ãƒ¼ã‚¯ トラフィックéŽå¤§ + </floater.string> + <floater.string name="server_agent_cause_msg"> + 考ãˆã‚‰ã‚Œã‚‹åŽŸå› : 地域内ã«ã¦å‹•ã„ã¦ã„ã‚‹ã‚¢ãƒã‚¿ãƒ¼ãŒå¤šã™ãŽã‚‹ + </floater.string> + <floater.string name="server_images_cause_msg"> + 考ãˆã‚‰ã‚Œã‚‹åŽŸå› : ç”»åƒè¨ˆç®—ãŒå¤šã™ãŽã‚‹ + </floater.string> + <floater.string name="server_generic_cause_msg"> + 考ãˆã‚‰ã‚Œã‚‹åŽŸå› : シミュレーターã®éŽè² è· + </floater.string> + <floater.string name="smaller_label"> + >> + </floater.string> + <floater.string name="bigger_label"> + << + </floater.string> + <button name="client_lagmeter" tool_tip="クライアント ラグ ステータス"/> + <text name="client"> + クライアント + </text> + <text name="client_text"> + ノーマル + </text> + <button name="network_lagmeter" tool_tip="ãƒãƒƒãƒˆãƒ¯ãƒ¼ã‚¯ ラグ ステータス"/> + <text name="network"> + ãƒãƒƒãƒˆãƒ¯ãƒ¼ã‚¯ + </text> + <text name="network_text"> + ノーマル + </text> + <button name="server_lagmeter" tool_tip="サーãƒãƒ¼ ラグ ステータス"/> + <text name="server"> + サーãƒãƒ¼ + </text> + <text name="server_text"> + ノーマル + </text> + <button label=">> " name="minimize" tool_tip="フãƒãƒ¼ã‚¿ãƒ¼ã®ã‚µã‚¤ã‚ºã‚’トグル"/> +</floater> diff --git a/indra/newview/skins/default/xui/ja/floater_region_restarting.xml b/indra/newview/skins/default/xui/ja/floater_region_restarting.xml new file mode 100644 index 0000000000..e9ba9d230d --- /dev/null +++ b/indra/newview/skins/default/xui/ja/floater_region_restarting.xml @@ -0,0 +1,23 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<floater name="region_restarting" title="リージョンã®å†èµ·å‹•"> + <string name="RegionName"> + 今 ([NAME]) ãŒã„るリージョンをå†èµ·å‹•ã—よã†ã¨ã—ã¦ã„ã¾ã™ã€‚ + +ã“ã®ã¾ã¾ã“ã“ã«ã„ã‚‹ã¨ãƒã‚°ã‚¢ã‚¦ãƒˆã•ã‚Œã¾ã™ã€‚ + </string> + <string name="RestartSeconds"> + å†èµ·å‹•ã¾ã§ã®ç§’æ•° +[SECONDS] + </string> + <panel name="layout_panel_1"> + <text name="region_name"> + 今 (-最長リージョンå-) ãŒã„るリージョンをå†èµ·å‹•ã—よã†ã¨ã—ã¦ã„ã¾ã™ã€‚ + +ã“ã®ã¾ã¾ã“ã“ã«ã„ã‚‹ã¨ãƒã‚°ã‚¢ã‚¦ãƒˆã•ã‚Œã¾ã™ã€‚ + </text> + <text name="restart_seconds"> + å†èµ·å‹•ã¾ã§ã®ç§’æ•° + 32767 + </text> + </panel> +</floater> diff --git a/indra/newview/skins/default/xui/ja/floater_scene_load_stats.xml b/indra/newview/skins/default/xui/ja/floater_scene_load_stats.xml new file mode 100644 index 0000000000..f6edce026f --- /dev/null +++ b/indra/newview/skins/default/xui/ja/floater_scene_load_stats.xml @@ -0,0 +1,64 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<floater name="Scene Load Statistics" title="シーン ãƒãƒ¼ãƒ‰çµ±è¨ˆæƒ…å ±"> + <button label="一時åœæ¢" name="playpause"/> + <scroll_container name="statistics_scroll"> + <container_view name="statistics_view"> + <stat_view label="ベーシック" name="basic"> + <stat_bar label="フレームピクセル差" name="frame difference"/> + <stat_bar label="UDP データをå—ã‘å–ã‚Šã¾ã—ãŸ" name="bandwidth"/> + <stat_bar label="パケットãƒã‚¹" name="packet_loss"/> + </stat_view> + <stat_view label="アドãƒãƒ³ã‚¹" name="advanced"> + <stat_view label="æç”»" name="render"> + <stat_bar label="オブジェクトåˆè¨ˆ" name="objs"/> + <stat_bar label="æ–°è¦ã‚ªãƒ–ジェクト" name="newobjs"/> + <stat_bar label="オブジェクト ã‚ャッシュ ヒット率" name="object_cache_hits"/> + </stat_view> + <stat_view label="テクスãƒãƒ£" name="texture"> + <stat_bar label="ã‚ャッシュ ヒット率" name="texture_cache_hits"/> + <stat_bar label="ã‚ャッシュèªã¿è¾¼ã¿é…延" name="texture_cache_read_latency"/> + <stat_bar label="カウント" name="numimagesstat"/> + <stat_bar label="Raw カウント" name="numrawimagesstat"/> + </stat_view> + <stat_view label="ãƒãƒƒãƒˆãƒ¯ãƒ¼ã‚¯" name="network"> + <stat_bar label="パケットイン" name="packetsinstat"/> + <stat_bar label="パケットアウト" name="packetsoutstat"/> + <stat_bar label="オブジェクト" name="objectdatareceived"/> + <stat_bar label="テクスãƒãƒ£" name="texturedatareceived"/> + <stat_bar label="資産" name="assetudpdatareceived"/> + <stat_bar label="レイヤー" name="layersdatareceived"/> + <stat_bar label="実際ã®å—ä¿¡" name="messagedatain"/> + <stat_bar label="実際ã®é€ä¿¡" name="messagedataout"/> + <stat_bar label="VFS ä¿ç•™ä¸ã®æ“作" name="vfspendingoperations"/> + </stat_view> + </stat_view> + <stat_view label="シミュレーター" name="sim"> + <stat_bar label="オブジェクト" name="simobjects"/> + <stat_bar label="アクティブãªã‚ªãƒ–ジェクト" name="simactiveobjects"/> + <stat_bar label="アクティブãªã‚¹ã‚¯ãƒªãƒ—ト" name="simactivescripts"/> + <stat_bar label="パケットイン" name="siminpps"/> + <stat_bar label="パケットアウト" name="simoutpps"/> + <stat_bar label="ä¿ç•™ä¸ã®ãƒ€ã‚¦ãƒ³ãƒãƒ¼ãƒ‰" name="simpendingdownloads"/> + <stat_bar label="ä¿ç•™ä¸ã®ã‚¢ãƒƒãƒ—ãƒãƒ¼ãƒ‰" name="simpendinguploads"/> + <stat_bar label="未é€ä¿¡ãƒã‚¤ãƒˆåˆè¨ˆ" name="simtotalunackedbytes"/> + <stat_view label="時間(ms)" name="simperf"> + <stat_bar label="フレーム時間åˆè¨ˆ" name="simframemsec"/> + <stat_bar label="ç·æ™‚é–“æ•°" name="simnetmsec"/> + <stat_bar label="物ç†çš„作用時間" name="simsimphysicsmsec"/> + <stat_bar label="シミュレーション時間" name="simsimothermsec"/> + <stat_bar label="エージェント時間" name="simagentmsec"/> + <stat_bar label="イメージ時間" name="simimagesmsec"/> + <stat_bar label="スクリプト時間" name="simscriptmsec"/> + <stat_bar label="余暇" name="simsparemsec"/> + <stat_view label="時間ã®è©³ç´°ï¼ˆms)" name="timedetails"> + <stat_bar label="物ç†åŠ¹æžœã®å˜ä½" name="simsimphysicsstepmsec"/> + <stat_bar label="物ç†å½¢çŠ¶ã‚’æ›´æ–°" name="simsimphysicsshapeupdatemsec"/> + <stat_bar label="ä»–ã®ç‰©ç†åŠ¹æžœ" name="simsimphysicsothermsec"/> + <stat_bar label="スリープ時間" name="simsleepmsec"/> + <stat_bar label="ãƒãƒ³ãƒ— I/O" name="simpumpiomsec"/> + </stat_view> + </stat_view> + </stat_view> + </container_view> + </scroll_container> +</floater> diff --git a/indra/newview/skins/default/xui/ja/floater_stats.xml b/indra/newview/skins/default/xui/ja/floater_stats.xml index 1922e4841a..2b3b51f3b7 100755 --- a/indra/newview/skins/default/xui/ja/floater_stats.xml +++ b/indra/newview/skins/default/xui/ja/floater_stats.xml @@ -4,17 +4,20 @@ <container_view name="statistics_view"> <stat_view label="ベーシック" name="basic"> <stat_bar label="FPS" name="fps"/> - <stat_bar label="帯域幅" name="bandwidth"/> + <stat_bar label="UDP データをå—ã‘å–ã‚Šã¾ã—ãŸ" name="bandwidth"/> <stat_bar label="パケットãƒã‚¹" name="packet_loss"/> <stat_bar label="Pingシム" name="ping"/> </stat_view> <stat_view label="アドãƒãƒ³ã‚¹" name="advanced"> <stat_view label="æç”»" name="render"> - <stat_bar label="フレームã”ã¨ã® KTris æç”»" name="ktrisframe"/> - <stat_bar label="秒ã”ã¨ã® KTris æç”»" name="ktrissec"/> + <stat_bar label="KTris (フレームã”ã¨)" name="ktrisframe"/> + <stat_bar label="KTris (秒ã”ã¨)" name="ktrissec"/> <stat_bar label="オブジェクトåˆè¨ˆ" name="objs"/> <stat_bar label="æ–°è¦ã‚ªãƒ–ジェクト" name="newobjs"/> <stat_bar label="オブジェクトã‚ャッシュヒット率" name="object_cache_hits"/> + <stat_bar label="閉鎖クエリ実行" name="occlusion_queries"/> + <stat_bar label="閉鎖オブジェクト" name="occluded"/> + <stat_bar label="éžé–‰éŽ–オブジェクト" name="unoccluded"/> </stat_view> <stat_view label="テクスãƒãƒ£" name="texture"> <stat_bar label="ã‚ャッシュヒット率" name="texture_cache_hits"/> @@ -26,15 +29,32 @@ <stat_bar label="Raw メモリ" name="rawmemstat"/> <stat_bar label="çµ±åˆãƒ¡ãƒ¢ãƒª" name="glboundmemstat"/> </stat_view> + <stat_view label="メモリ使用é‡" name="memory"> + <stat_bar label="LLTrace" name="LLTrace"/> + <stat_bar label="UI" name="LLView"/> + <stat_bar label="フォント" name="LLFontFreetype"/> + <stat_bar label="インベントリ" name="LLInventoryObject"/> + <stat_bar label="ビューワ オブジェクト" name="LLViewerObject"/> + <stat_bar label="Octree グループ データ" name="LLViewerOctreeGroup"/> + <stat_bar label="Octree データ" name="LLViewerOctreeEntry"/> + <stat_bar label="ビューワ オブジェクト ã‚ャッシュ" name="LLVOCacheEntry"/> + <stat_bar label="æç”»å¯èƒ½ã‚ªãƒ–ジェクト" name="LLDrawable"/> + <stat_bar label="顔データ" name="LLFace"/> + <stat_bar label="æç”»æƒ…å ±" name="LLDrawInfo"/> + <stat_bar label="テクスãƒãƒ£ データ" name="LLTexture"/> + <stat_bar label="ç”»åƒãƒ‡ãƒ¼ã‚¿" name="LLImage"/> + <stat_bar label="GL ç”»åƒãƒ‡ãƒ¼ã‚¿" name="LLImageGL"/> + <stat_bar label="é ‚ç‚¹ãƒãƒƒãƒ•ã‚¡" name="LLVertexBuffer"/> + </stat_view> <stat_view label="ãƒãƒƒãƒˆãƒ¯ãƒ¼ã‚¯" name="network"> <stat_bar label="パケットイン" name="packetsinstat"/> <stat_bar label="パケットアウト" name="packetsoutstat"/> - <stat_bar label="オブジェクト" name="objectkbitstat"/> - <stat_bar label="テクスãƒãƒ£" name="texturekbitstat"/> - <stat_bar label="アセット" name="assetkbitstat"/> - <stat_bar label="レイヤー" name="layerskbitstat"/> - <stat_bar label="実際ã®å—ä¿¡" name="actualinkbitstat"/> - <stat_bar label="実際ã®é€ä¿¡" name="actualoutkbitstat"/> + <stat_bar label="オブジェクト" name="objectdatareceived"/> + <stat_bar label="テクスãƒãƒ£" name="texturedatareceived"/> + <stat_bar label="資産" name="assetudpdatareceived"/> + <stat_bar label="レイヤー" name="layersdatareceived"/> + <stat_bar label="実際ã®å—ä¿¡" name="messagedatain"/> + <stat_bar label="実際ã®é€ä¿¡" name="messagedataout"/> <stat_bar label="VFS ä¿ç•™ä¸ã®æ“作" name="vfspendingoperations"/> </stat_view> </stat_view> @@ -64,8 +84,8 @@ <stat_bar label="パケットアウト" name="simoutpps"/> <stat_bar label="ä¿ç•™ä¸ã®ãƒ€ã‚¦ãƒ³ãƒãƒ¼ãƒ‰" name="simpendingdownloads"/> <stat_bar label="ä¿ç•™ä¸ã®ã‚¢ãƒƒãƒ—ãƒãƒ¼ãƒ‰" name="simpendinguploads"/> - <stat_bar label="未é€ä¿¡ãƒã‚¤ãƒˆåˆè¨ˆ" name="simtotalunackedbytes"/> - <stat_view label="時間(ms)" name="simperf"> + <stat_bar label="åˆè¨ˆæœªæ‰¿èªãƒ‡ãƒ¼ã‚¿" name="simtotalunackedbytes"/> + <stat_view label="時間" name="simperf"> <stat_bar label="フレーム時間åˆè¨ˆ" name="simframemsec"/> <stat_bar label="ç·æ™‚é–“æ•°" name="simnetmsec"/> <stat_bar label="物ç†çš„作用時間" name="simsimphysicsmsec"/> @@ -74,7 +94,7 @@ <stat_bar label="イメージ時間" name="simimagesmsec"/> <stat_bar label="スクリプト時間" name="simscriptmsec"/> <stat_bar label="余暇" name="simsparemsec"/> - <stat_view label="時間ã®è©³ç´°ï¼ˆms)" name="timedetails"> + <stat_view label="時間ã®è©³ç´°" name="timedetails"> <stat_bar label="物ç†åŠ¹æžœã®å˜ä½" name="simsimphysicsstepmsec"/> <stat_bar label="物ç†å½¢çŠ¶ã‚’æ›´æ–°" name="simsimphysicsshapeupdatemsec"/> <stat_bar label="ä»–ã®ç‰©ç†åŠ¹æžœ" name="simsimphysicsothermsec"/> diff --git a/indra/newview/skins/default/xui/ja/menu_avatar_icon.xml b/indra/newview/skins/default/xui/ja/menu_avatar_icon.xml index b04f602134..80ce080e39 100755 --- a/indra/newview/skins/default/xui/ja/menu_avatar_icon.xml +++ b/indra/newview/skins/default/xui/ja/menu_avatar_icon.xml @@ -2,6 +2,7 @@ <menu name="Avatar Icon Menu"> <menu_item_call label="プãƒãƒ•ã‚£ãƒ¼ãƒ«ã®è¡¨ç¤º" name="Show Profile"/> <menu_item_call label="IMã‚’é€ä¿¡..." name="Send IM"/> + <menu_item_call label="テレãƒãƒ¼ãƒˆã‚’リクエスト" name="Request Teleport"/> <menu_item_call label="ãƒ•ãƒ¬ãƒ³ãƒ‰ã‚’è¿½åŠ ..." name="Add Friend"/> <menu_item_call label="フレンドを削除..." name="Remove Friend"/> </menu> diff --git a/indra/newview/skins/default/xui/ja/menu_inventory.xml b/indra/newview/skins/default/xui/ja/menu_inventory.xml index 106b09453a..8d6c983aa7 100755 --- a/indra/newview/skins/default/xui/ja/menu_inventory.xml +++ b/indra/newview/skins/default/xui/ja/menu_inventory.xml @@ -70,6 +70,7 @@ <menu_item_call label="å†ç”Ÿã™ã‚‹" name="Sound Play"/> <menu_item_call label="SLurl をコピー" name="url_copy"/> <menu_item_call label="ランドマークã®æƒ…å ±" name="About Landmark"/> + <menu_item_call label="地図ã«è¡¨ç¤º" name="show_on_map"/> <menu_item_call label="インワールドã§å†ç”Ÿã™ã‚‹" name="Animation Play"/> <menu_item_call label="ãƒãƒ¼ã‚«ãƒ«ã§å†ç”Ÿã™ã‚‹" name="Animation Audition"/> <menu_item_call label="インスタントメッセージをé€ä¿¡ã™ã‚‹" name="Send Instant Message"/> diff --git a/indra/newview/skins/default/xui/ja/menu_login.xml b/indra/newview/skins/default/xui/ja/menu_login.xml index 3918732fa8..cd8bd52f91 100755 --- a/indra/newview/skins/default/xui/ja/menu_login.xml +++ b/indra/newview/skins/default/xui/ja/menu_login.xml @@ -5,7 +5,15 @@ <menu_item_call label="[APP_NAME] を終了" name="Quit"/> </menu> <menu label="ヘルプ" name="Help"> - <menu_item_call label="[SECOND_LIFE] ヘルプ" name="Second Life Help"/> + <menu_item_call label="ãƒã‚¦ãƒ„ー..." name="How To"/> + <menu_item_call label="クイックスタート" name="Quickstart"/> + <menu_item_call label="ナレッジベース" name="Knowledge Base"/> + <menu_item_call label="Wiki" name="Wiki"/> + <menu_item_call label="コミュニティ フォーラム" name="Community Forums"/> + <menu_item_call label="日本語サãƒãƒ¼ãƒˆãƒšãƒ¼ã‚¸" name="Support portal"/> + <menu_item_call label="[SECOND_LIFE] ニュース" name="Second Life News"/> + <menu_item_call label="[SECOND_LIFE] ブãƒã‚°" name="Second Life Blogs"/> + <menu_item_call label="ãƒã‚°ã‚’å ±å‘Šã™ã‚‹" name="Report Bug"/> <menu_item_call label="[APP_NAME] ã«ã¤ã„ã¦" name="About Second Life"/> </menu> <menu_item_check label="デãƒãƒƒã‚°ãƒ¡ãƒ‹ãƒ¥ãƒ¼ã‚’表示ã™ã‚‹" name="Show Debug Menu"/> diff --git a/indra/newview/skins/default/xui/ja/menu_teleport_history_item.xml b/indra/newview/skins/default/xui/ja/menu_teleport_history_item.xml index 66bc32214f..61642048b8 100755 --- a/indra/newview/skins/default/xui/ja/menu_teleport_history_item.xml +++ b/indra/newview/skins/default/xui/ja/menu_teleport_history_item.xml @@ -2,5 +2,5 @@ <context_menu name="Teleport History Item Context Menu"> <menu_item_call label="テレãƒãƒ¼ãƒˆ" name="Teleport"/> <menu_item_call label="ã‚‚ã£ã¨è©³ã—ã" name="More Information"/> - <menu_item_call label="クリップボードã«ã‚³ãƒ”ー" name="CopyToClipboard"/> + <menu_item_call label="SLurl をコピー" name="CopyToClipboard"/> </context_menu> diff --git a/indra/newview/skins/default/xui/ja/menu_viewer.xml b/indra/newview/skins/default/xui/ja/menu_viewer.xml index b1ec62115c..b151915ae4 100755 --- a/indra/newview/skins/default/xui/ja/menu_viewer.xml +++ b/indra/newview/skins/default/xui/ja/menu_viewer.xml @@ -72,11 +72,11 @@ <menu_item_check label="アドãƒãƒ³ã‚¹ãƒ¡ãƒ‹ãƒ¥ãƒ¼" name="Show Advanced Menu"/> </menu> <menu label="太陽" name="Sun"> - <menu_item_call label="æ—¥ã®å‡º" name="Sunrise"/> - <menu_item_call label="æ£åˆ" name="Noon"/> - <menu_item_call label="日没" name="Sunset"/> - <menu_item_call label="真夜ä¸" name="Midnight"/> - <menu_item_call label="リージョンã®è¨å®šã‚’使用" name="Use Region Settings"/> + <menu_item_check label="æ—¥ã®å‡º" name="Sunrise"/> + <menu_item_check label="æ£åˆ" name="Noon"/> + <menu_item_check label="日没" name="Sunset"/> + <menu_item_check label="真夜ä¸" name="Midnight"/> + <menu_item_check label="リージョンã®è¨å®šã‚’使用" name="Use Region Settings"/> </menu> <menu label="自然環境エディター" name="Environment Editor"> <menu_item_call label="自然環境ã®è¨å®š..." name="Environment Settings"/> @@ -165,8 +165,6 @@ </menu> <menu label="ヘルプ" name="Help"> <menu_item_call label="ãƒã‚¦ãƒ„ー..." name="How To"/> - <menu_item_call label="[SECOND_LIFE] ヘルプ" name="Second Life Help"/> - <menu_item_call label="ユーザーガイド" name="User’s guide"/> <menu_item_call label="ナレッジベース" name="Knowledge Base"/> <menu_item_call label="Wiki" name="Wiki"/> <menu_item_call label="コミュニティフォーラム" name="Community Forums"/> @@ -188,6 +186,7 @@ <menu label="パフォーマンスツール" name="Performance Tools"> <menu_item_call label="ラグ計測器" name="Lag Meter"/> <menu_item_check label="統計ãƒãƒ¼" name="Statistics Bar"/> + <menu_item_call label="シーン ãƒãƒ¼ãƒ‰çµ±è¨ˆæƒ…å ±" name="Scene Load Statistics"/> <menu_item_check label="ã‚¢ãƒã‚¿ãƒ¼ã®æ画ウェイトを表示" name="Avatar Rendering Cost"/> </menu> <menu label="ãƒã‚¤ãƒ©ã‚¤ãƒˆã¨ç›®ã«è¦‹ãˆã‚‹ã‚‚ã®" name="Highlighting and Visibility"> @@ -250,6 +249,7 @@ <menu_item_check label="ファーストタイマー" name="Fast Timers"/> <menu_item_check label="メモリ" name="Memory"/> <menu_item_check label="風景ã®çµ±è¨ˆ" name="Scene Statistics"/> + <menu_item_check label="シーン ãƒãƒ¼ãƒ‡ã‚£ãƒ³ã‚° モニター" name="Scene Loading Monitor"/> <menu_item_call label="テクスãƒãƒ£å–得デãƒãƒƒã‚°ã‚³ãƒ³ã‚½ãƒ¼ãƒ«" name="Texture Fetch Debug Console"/> <menu_item_call label="ãƒªãƒ¼ã‚¸ãƒ§ãƒ³æƒ…å ±ã‚’ãƒ‡ãƒãƒƒã‚°ã‚³ãƒ³ã‚½ãƒ¼ãƒ«ã¸" name="Region Info to Debug Console"/> <menu_item_call label="ã‚°ãƒ«ãƒ¼ãƒ—æƒ…å ±ã‚’ãƒ‡ãƒãƒƒã‚°ã‚³ãƒ³ã‚½ãƒ¼ãƒ«ã¸" name="Group Info to Debug Console"/> @@ -286,6 +286,7 @@ <menu_item_check label="定期的ã«é…ã„フレームを挿入ã™ã‚‹" name="Periodic Slow Frame"/> <menu_item_check label="フレームテスト" name="Frame Test"/> <menu_item_call label="フレームプãƒãƒ•ã‚£ãƒ¼ãƒ«" name="Frame Profile"/> + <menu_item_call label="ベンãƒãƒžãƒ¼ã‚¯" name="Benchmark"/> </menu> <menu label="メタデータã®ãƒ¬ãƒ³ãƒ€ãƒ¼" name="Render Metadata"> <menu_item_check label="ãƒã‚¦ãƒ³ãƒ‡ã‚£ãƒ³ã‚°ãƒœãƒƒã‚¯ã‚¹" name="Bounding Boxes"/> @@ -304,6 +305,7 @@ <menu_item_check label="制作ã‚ュー" name="Build Queue"/> <menu_item_check label="å…‰" name="Lights"/> <menu_item_check label="骨組ã¿ã®è¡çªåˆ¤å®š" name="Collision Skeleton"/> + <menu_item_check label="ジョイント" name="Joints"/> <menu_item_check label="レイã‚ャスト" name="Raycast"/> <menu_item_check label="風ã®ãƒ™ã‚¯ãƒˆãƒ«" name="Wind Vectors"/> <menu_item_check label="æç”»ã®è©³ç´°åº¦" name="rendercomplexity"/> @@ -336,6 +338,7 @@ <menu_item_check label="装ç€ã•ã‚ŒãŸå…‰æºã‚’æç”»ã™ã‚‹" name="Render Attached Lights"/> <menu_item_check label="å–り付ã‘られãŸãƒ‘ーティクルをæç”»ã™ã‚‹" name="Render Attached Particles"/> <menu_item_check label="マウスオーãƒãƒ¼ã§å¼·èª¿è¡¨ç¤ºã™ã‚‹" name="Hover Glow Objects"/> + <menu_item_call label="ã‚ャッシュをã™ãã«ã‚¯ãƒªã‚¢" name="Cache Clear"/> </menu> <menu label="ãƒãƒƒãƒˆãƒ¯ãƒ¼ã‚¯" name="Network"> <menu_item_check label="エージェントを一時åœæ¢ã™ã‚‹" name="AgentPause"/> @@ -368,7 +371,6 @@ <menu_item_call label="フォーカスホールダーをダンプ" name="Dump Focus Holder"/> <menu_item_call label="é¸æŠžã—ãŸã‚ªãƒ–ã‚¸ã‚§ã‚¯ãƒˆæƒ…å ±ã‚’ãƒ—ãƒªãƒ³ãƒˆ" name="Print Selected Object Info"/> <menu_item_call label="ã‚¨ãƒ¼ã‚¸ã‚§ãƒ³ãƒˆæƒ…å ±ã‚’ãƒ—ãƒªãƒ³ãƒˆ" name="Print Agent Info"/> - <menu_item_check label="地域デãƒãƒƒã‚°ã‚³ãƒ³ã‚½ãƒ¼ãƒ«" name="Region Debug Console"/> <menu_item_check label="SelectMgr ã®ãƒ‡ãƒãƒƒã‚°" name="Debug SelectMgr"/> <menu_item_check label="ダブルクリック" name="Debug Clicks"/> <menu_item_check label="デãƒãƒƒã‚°è¡¨ç¤º" name="Debug Views"/> diff --git a/indra/newview/skins/default/xui/ja/notifications.xml b/indra/newview/skins/default/xui/ja/notifications.xml index f1c916bf53..518f82daaf 100755 --- a/indra/newview/skins/default/xui/ja/notifications.xml +++ b/indra/newview/skins/default/xui/ja/notifications.xml @@ -113,13 +113,13 @@ <usetemplate name="okbutton" yestext="OK"/> </notification> <notification name="OutboxImportFailed"> - 転é€ã«å¤±æ•— + '[ERROR_CODE]' エラーã§è»¢é€ã§ãã¾ã›ã‚“ã§ã—㟠システムã¾ãŸã¯ãƒãƒƒãƒˆãƒ¯ãƒ¼ã‚¯ã®ã‚¨ãƒ©ãƒ¼ã®ãŸã‚ã€ãƒ•ã‚©ãƒ«ãƒ€ã¯ãƒžãƒ¼ã‚±ãƒƒãƒˆãƒ—レイスã«é€ä¿¡ã•ã‚Œã¾ã›ã‚“ã§ã—ãŸã€‚後ã§ã‚‚ã†ä¸€åº¦ãŠè©¦ã—ãã ã•ã„。 <usetemplate name="okbutton" yestext="OK"/> </notification> <notification name="OutboxInitFailed"> - マーケットプレイスã®åˆæœŸåŒ–ã«å¤±æ•— + '[ERROR_CODE]' エラーã§ãƒžãƒ¼ã‚±ãƒƒãƒˆãƒ—レイスをåˆæœŸåŒ–ã§ãã¾ã›ã‚“ã§ã—㟠システムã¾ãŸã¯ãƒãƒƒãƒˆãƒ¯ãƒ¼ã‚¯ã®ã‚¨ãƒ©ãƒ¼ã®ãŸã‚ã€ãƒžãƒ¼ã‚±ãƒƒãƒˆãƒ—レイスã®åˆæœŸåŒ–ã«å¤±æ•—ã—ã¾ã—ãŸã€‚後ã§ã‚‚ã†ä¸€åº¦ãŠè©¦ã—ãã ã•ã„。 <usetemplate name="okbutton" yestext="OK"/> @@ -1768,6 +1768,10 @@ http://wiki.secondlife.com/wiki/Setting_your_display_name ã‚’å‚ç…§ã—ã¦ãã ã ã“ã®ã¾ã¾ <nolink>[LOCATION]</nolink> ã«ãƒ†ãƒ¬ãƒãƒ¼ãƒˆã—ã¾ã™ã‹ï¼Ÿ <usetemplate ignoretext="ランドマークã«ãƒ†ãƒ¬ãƒãƒ¼ãƒˆã—ãŸã„ã‹ã©ã†ã‹ã®ç¢ºèª" name="okcancelignore" notext="ã‚ャンセル" yestext="テレãƒãƒ¼ãƒˆ"/> </notification> + <notification name="TeleportViaSLAPP"> + ã“ã®ã¾ã¾ <nolink>[LOCATION]</nolink> ã«ãƒ†ãƒ¬ãƒãƒ¼ãƒˆã—ã¾ã™ã‹ï¼Ÿ + <usetemplate ignoretext="SLAPP ã§ãƒ†ãƒ¬ãƒãƒ¼ãƒˆã™ã‚‹ã“ã¨ã‚’確èª" name="okcancelignore" notext="å–り消ã—" yestext="テレãƒãƒ¼ãƒˆ"/> + </notification> <notification name="TeleportToPick"> [PICK] ã«ãƒ†ãƒ¬ãƒãƒ¼ãƒˆã—ã¾ã™ã‹ï¼Ÿ <usetemplate ignoretext="ピックã®å ´æ‰€ã«ãƒ†ãƒ¬ãƒãƒ¼ãƒˆã—ãŸã„ã‹ã©ã†ã‹ã®ç¢ºèª" name="okcancelignore" notext="ã‚ャンセル" yestext="テレãƒãƒ¼ãƒˆ"/> @@ -1979,6 +1983,9 @@ http://wiki.secondlife.com/wiki/Setting_your_display_name ã‚’å‚ç…§ã—ã¦ãã ã æ–°ã—ã„ä¸å‹•ç”£ãƒžãƒãƒ¼ã‚¸ãƒ£ãƒ¼ã®è¿½åŠ ã«é–¢ã™ã‚‹å•é¡Œï¼š ã„ãšã‚Œã‹ã®ä¸å‹•ç”£ã®ãƒžãƒãƒ¼ã‚¸ãƒ£ãƒ¼ãƒªã‚¹ãƒˆãŒæº€æ¯ã«ãªã£ã¦ã„ã¾ã™ã€‚ </notification> + <notification name="ProblemAddingEstateBanManager"> + ä¸å‹•ç”£æ‰€æœ‰è€…ã¾ãŸã¯ç®¡ç†è€…ã‚’ç¦æ¢ãƒªã‚¹ãƒˆã«è¿½åŠ ã§ãã¾ã›ã‚“。 + </notification> <notification name="ProblemAddingEstateGeneric"> ä¸å‹•ç”£ãƒªã‚¹ãƒˆã®è¿½åŠ ã«é–¢ã™ã‚‹å•é¡Œï¼š ã„ãšã‚Œã‹ã®ä¸å‹•ç”£ã®ãƒªã‚¹ãƒˆãŒæº€æ¯ã«ãªã£ã¦ã„ã¾ã™ã€‚ @@ -3072,9 +3079,9 @@ M ã‚ーを押ã—ã¦å¤‰æ›´ã—ã¾ã™ã€‚ <nolink>[ITEMS]</nolink> -次ã®ä½äººã¨å…±æœ‰ã—ã¾ã™ã‹ï¼Ÿ +次ã®ä½äººã¨å…±æœ‰ï¼š -[RESIDENTS] +<nolink>[RESIDENTS]</nolink> <usetemplate name="okcancelbuttons" notext="å–り消ã—" yestext="OK"/> </notification> <notification name="ShareFolderConfirmation"> @@ -3086,7 +3093,7 @@ M ã‚ーを押ã—ã¦å¤‰æ›´ã—ã¾ã™ã€‚ 次ã®ä½äººã¨å…±æœ‰ï¼š -[RESIDENTS] +<nolink>[RESIDENTS]</nolink> <usetemplate name="okcancelbuttons" notext="å–り消ã—" yestext="Ok"/> </notification> <notification name="ItemsShared"> @@ -3541,10 +3548,6 @@ M ã‚ーを押ã—ã¦å¤‰æ›´ã—ã¾ã™ã€‚ <notification name="EjectComingSoon"> ã“ã“ã¸ã®å…¥å ´ãŒè¨±å¯ã•ã‚Œã¦ã„ãªã„ãŸã‚ã€[EJECT_TIME] 秒後ã«è¿½æ”¾ã•ã‚Œã¾ã™ã€‚ </notification> - <notification name="NoEnterServerFull"> - サーãƒãƒ¼ãŒåŸ‹ã¾ã£ã¦ã„ã‚‹ãŸã‚〠-ã“ã®ãƒªãƒ¼ã‚¸ãƒ§ãƒ³ã«å…¥å ´ã™ã‚‹ã“ã¨ã¯ã§ãã¾ã›ã‚“。 - </notification> <notification name="SaveBackToInvDisabled"> 「「æŒã¡ç‰©ã€ã«ä¿å˜ã€ãŒç„¡åŠ¹ã«ãªã£ã¦ã„ã¾ã™ã€‚ </notification> @@ -3729,6 +3732,9 @@ M ã‚ーを押ã—ã¦å¤‰æ›´ã—ã¾ã™ã€‚ <notification name="LinkFailedTooMuchPhysics"> オブジェクトãŒä½¿ç”¨ã—ã¦ã„る物ç†ãƒªã‚½ãƒ¼ã‚¹ãŒå¤šã™ãŽãŸãŸã‚ã€ãƒ€ã‚¤ãƒŠãƒŸãƒƒã‚¯ã‚¹ãŒç„¡åŠ¹ã«ã•ã‚Œã¾ã—ãŸã€‚ </notification> + <notification name="EstateManagerFailedllTeleportHome"> + [SLURL] ã®ã‚ªãƒ–ジェクト '[OBJECT_NAME]' ã§ä¸å‹•ç”£ãƒžãƒãƒ¼ã‚¸ãƒ£ãƒ¼ã®ãƒ›ãƒ¼ãƒ をテレãƒãƒ¼ãƒˆã§ãã¾ã›ã‚“。 + </notification> <notification name="TeleportedHomeByObjectOnParcel"> 区画 '[PARCEL_NAME]' ã®ã‚ªãƒ–ジェクト '[OBJECT_NAME]' ã«ã‚ˆã£ã¦ã€ã‚ãªãŸã¯ãƒ›ãƒ¼ãƒ ã«ãƒ†ãƒ¬ãƒãƒ¼ãƒˆã•ã‚Œã¾ã—ãŸã€‚ </notification> @@ -3919,13 +3925,18 @@ M ã‚ーを押ã—ã¦å¤‰æ›´ã—ã¾ã™ã€‚ é¸æŠžç¯„囲ã®ãƒªãƒ¼ã‚¹åŒºç”»ã®æ•°ãŒå°‘ãªã„ãŸã‚ã€å‚åŠ ã§ãã¾ã›ã‚“。 </notification> <notification name="CantDivideLandMultipleParcelsSelected"> - 土地を分割ã§ãã¾ã›ã‚“。\n区画ãŒè¤‡æ•°é¸æŠžã•ã‚Œã¦ã„ã¾ã™ã€‚\nã‚‚ã£ã¨å°ã•ã„土地をé¸æŠžã—ã¦ã¿ã¦ãã ã•ã„。 + 土地を分割ã§ãã¾ã›ã‚“。 +複数ã®åŒºç”»ãŒé¸æŠžã•ã‚Œã¾ã—ãŸã€‚ +å°ã•ã„区画をé¸æŠžã—ã¦ãã ã•ã„。 </notification> <notification name="CantDivideLandCantFindParcel"> - 土地を分解ã§ãã¾ã›ã‚“。\n区画ãŒè¦‹ã¤ã‹ã‚Šã¾ã›ã‚“。\n「Helpã€>「Reprt Bug...ã€ã§ãƒ¬ãƒãƒ¼ãƒˆã‚’è¡Œã£ã¦ãã ã•ã„。 + 土地を分割ã§ãã¾ã›ã‚“。 +区画ãŒè¦‹ã¤ã‹ã‚Šã¾ã›ã‚“。 +「ヘルプ〠-> 「ãƒã‚°ã®å ±å‘Šã€ã§å ±å‘Šã—ã¦ãã ã•ã„。 </notification> <notification name="CantDivideLandWholeParcelSelected"> - 土地を分割ã§ãã¾ã›ã‚“。区画全体をé¸æŠžã—ã¾ã™ã€‚\nå°ã•ã„土地をé¸æŠžã—ã¦ã¿ã¦ãã ã•ã„。 + 土地を分割ã§ãã¾ã›ã‚“。区画全体ãŒé¸æŠžã•ã‚Œã¦ã„ã¾ã™ã€‚ +å°ã•ã„区画をé¸æŠžã—ã¦ãã ã•ã„。 </notification> <notification name="LandHasBeenDivided"> 土地ãŒåˆ†å‰²ã•ã‚Œã¦ã„ã¾ã™ã€‚ @@ -4065,4 +4076,8 @@ M ã‚ーを押ã—ã¦å¤‰æ›´ã—ã¾ã™ã€‚ ファイルを移動ã§ãã¾ã›ã‚“。以å‰ã®ãƒ‘スãŒãƒªã‚¹ãƒˆã‚¢ã•ã‚Œã¾ã—ãŸã€‚ <usetemplate ignoretext="ファイルを移動ã§ãã¾ã›ã‚“。以å‰ã®ãƒ‘スãŒãƒªã‚¹ãƒˆã‚¢ã•ã‚Œã¾ã—ãŸã€‚" name="okignore" yestext="OK"/> </notification> + <notification name="ChatHistoryIsBusyAlert"> + ãƒãƒ£ãƒƒãƒˆå±¥æ´ãƒ•ã‚¡ã‚¤ãƒ«ãŒå‰ã®æ“作ã§ãƒ“ジーã§ã™ã€‚2ã€3 分経ã£ã¦ã‹ã‚‰ã‚‚ã†ä¸€åº¦è©¦ã™ã‹ã€åˆ¥ã®äººã¨ã®ãƒãƒ£ãƒƒãƒˆã‚’é¸æŠžã—ã¦ãã ã•ã„。 + <usetemplate name="okbutton" yestext="OK"/> + </notification> </notifications> diff --git a/indra/newview/skins/default/xui/ja/panel_group_info_sidetray.xml b/indra/newview/skins/default/xui/ja/panel_group_info_sidetray.xml index 7aa1aec6d0..ebcb36d950 100755 --- a/indra/newview/skins/default/xui/ja/panel_group_info_sidetray.xml +++ b/indra/newview/skins/default/xui/ja/panel_group_info_sidetray.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?> <panel label="グループインベントリ" name="GroupInfo"> <panel.string name="default_needs_apply_text"> ä¿å˜ã—ã¦ã„ãªã„変更ãŒã‚ã‚Šã¾ã™ @@ -20,7 +20,7 @@ <layout_panel name="group_accordions"> <accordion name="groups_accordion"> <accordion_tab name="group_general_tab" title="一般"/> - <accordion_tab name="group_roles_tab" title="役割"/> + <accordion_tab name="group_roles_tab" title="役割 & メンãƒãƒ¼"/> <accordion_tab name="group_notices_tab" title="通知"/> <accordion_tab name="group_land_tab" title="土地・資産"/> </accordion> diff --git a/indra/newview/skins/default/xui/ja/panel_group_roles.xml b/indra/newview/skins/default/xui/ja/panel_group_roles.xml index d40dedf566..8ca63988c3 100755 --- a/indra/newview/skins/default/xui/ja/panel_group_roles.xml +++ b/indra/newview/skins/default/xui/ja/panel_group_roles.xml @@ -21,6 +21,7 @@ Ctrl ã‚ーを押ã—ãªãŒã‚‰ãƒ¡ãƒ³ãƒãƒ¼åをクリックã™ã‚‹ã¨ <name_list.columns label="メンãƒãƒ¼" name="name"/> <name_list.columns label="寄付" name="donated"/> <name_list.columns label="ステータス" name="online"/> + <name_list.columns label="è·å" name="title"/> </name_list> <button label="招待" name="member_invite"/> <button label="追放" name="member_eject"/> diff --git a/indra/newview/skins/default/xui/ja/panel_region_debug.xml b/indra/newview/skins/default/xui/ja/panel_region_debug.xml index 169da27ce5..908af3d66a 100755 --- a/indra/newview/skins/default/xui/ja/panel_region_debug.xml +++ b/indra/newview/skins/default/xui/ja/panel_region_debug.xml @@ -7,11 +7,8 @@ 未知 </text> <check_box label="スクリプト無効化" name="disable_scripts_check" tool_tip="ã“ã®åœ°åŸŸã®ã‚¹ã‚¯ãƒªãƒ—トをã™ã¹ã¦ç„¡åŠ¹ã«ã—ã¾ã™"/> - <button label="?" name="disable_scripts_help"/> <check_box label="è¡çªã‚’無効化" name="disable_collisions_check" tool_tip="ã“ã®åœ°åŸŸã®éžã‚¢ãƒã‚¿ãƒ¼è¡çªã‚’無効ã«ã—ã¾ã™"/> - <button label="?" name="disable_collisions_help"/> <check_box label="物ç†ä½œç”¨ã‚’無効化" name="disable_physics_check" tool_tip="ã“ã®åœ°åŸŸã®ç‰©ç†ä½œç”¨ã‚’ã™ã¹ã¦ç„¡åŠ¹ã«ã—ã¾ã™"/> - <button label="?" name="disable_physics_help"/> <button label="é©ç”¨" name="apply_btn"/> <text name="objret_text_lbl" width="120"> オブジェクトã®è¿”å´ @@ -31,10 +28,8 @@ <check_box label="ã“ã®ä¸å‹•ç”£ã«å±žã™ã‚‹ã™ã¹ã¦ã®ãƒªãƒ¼ã‚¸ãƒ§ãƒ³ã®ã‚‚ã®" name="return_estate_wide" tool_tip="ã“ã®ä¸å‹•ç”£ã«å«ã¾ã‚Œã¦ã„ã‚‹ã™ã¹ã¦ã®åœ°åŸŸã®ã‚ªãƒ–ジェクトを返å´ã—ã¾ã™"/> <button label="è¿”å´" name="return_btn"/> <button label="上部コライダーå–å¾—" name="top_colliders_btn" tool_tip="è¡çªã™ã‚‹å¯èƒ½æ€§ãŒæœ€ã‚‚高ã„オブジェクトã®ãƒªã‚¹ãƒˆ"/> - <button label="?" name="top_colliders_help"/> - <button label="上部スクリプトå–å¾—" name="top_scripts_btn" tool_tip="スクリプトã®å®Ÿè¡Œã«æœ€ã‚‚時間を費やã—ã¦ã„るオブジェクトã®ãƒªã‚¹ãƒˆ"/> - <button label="?" name="top_scripts_help"/> <button label="地域å†èµ·å‹•" name="restart_btn" tool_tip="2分間ã®ã‚«ã‚¦ãƒ³ãƒˆãƒ€ã‚¦ãƒ³å¾Œã€åœ°åŸŸã‚’å†èµ·å‹•ã—ã¾ã™"/> - <button label="?" name="restart_help"/> + <button label="上部スクリプトå–å¾—" name="top_scripts_btn" tool_tip="スクリプトã®å®Ÿè¡Œã«æœ€ã‚‚時間を費やã—ã¦ã„るオブジェクトã®ãƒªã‚¹ãƒˆ"/> <button label="å†èµ·å‹•ã‚’ã‚ャンセル" name="cancel_restart_btn" tool_tip="リージョンã®å†èµ·å‹•ã‚’ã‚ャンセル"/> + <button label="地域デãƒãƒƒã‚°ã‚³ãƒ³ã‚½ãƒ¼ãƒ«" name="region_debug_console_btn" tool_tip="地域デãƒãƒƒã‚°ã‚³ãƒ³ã‚½ãƒ¼ãƒ«ã‚’é–‹ã"/> </panel> diff --git a/indra/newview/skins/default/xui/ja/panel_region_general.xml b/indra/newview/skins/default/xui/ja/panel_region_general.xml index 65148cf1ee..d23007dc6b 100755 --- a/indra/newview/skins/default/xui/ja/panel_region_general.xml +++ b/indra/newview/skins/default/xui/ja/panel_region_general.xml @@ -20,12 +20,12 @@ </text> <check_box label="地形編集をブãƒãƒƒã‚¯" name="block_terraform_check"/> <check_box label="飛行をブãƒãƒƒã‚¯" name="block_fly_check"/> + <check_box label="区画ã®é£›è¡Œã‚’ブãƒãƒƒã‚¯" name="block_fly_over_check" tool_tip="アクセス ãƒã‚§ãƒƒã‚¯ã‚’上方å‘ã«æ‹¡å¤§ã—ã€åŒºç”»ã‚’超ãˆã‚‹é£›è¡Œã‚’防ãŽã¾ã™"/> <check_box label="ダメージを許å¯" name="allow_damage_check"/> <check_box label="プッシュを制é™" name="restrict_pushobject"/> <check_box label="土地ã®å†è²©ã‚’許å¯" name="allow_land_resell_check"/> <check_box label="土地ã®çµ±åˆãƒ»åˆ†å‰²ã‚’許å¯" name="allow_parcel_changes_check"/> <check_box label="土地ã®æ¤œç´¢è¡¨ç¤ºã‚’ブãƒãƒƒã‚¯" name="block_parcel_search_check" tool_tip="検索çµæžœã§ã€ã“ã®åœ°åŸŸã¨åŒºç”»ã‚’表示ã™ã‚‹ã‹ã©ã†ã‹ã®è¨å®šã§ã™"/> - <check_box label="メッシュオブジェクトを許å¯" name="mesh_rez_enabled_check" tool_tip="ã“ã®ãƒªãƒ¼ã‚¸ãƒ§ãƒ³ã§ãƒ¡ãƒƒã‚·ãƒ¥ã‚ªãƒ–ジェクト㮠Rez を許å¯ã™ã‚‹"/> <spinner label="ã‚¢ãƒã‚¿ãƒ¼æ•°ä¸Šé™" name="agent_limit_spin"/> <spinner label="物体ボーナス" name="object_bonus_spin"/> <text label="æˆäººæŒ‡å®š" name="access_text"> diff --git a/indra/newview/skins/default/xui/ja/sidepanel_inventory.xml b/indra/newview/skins/default/xui/ja/sidepanel_inventory.xml index 32e84ce542..5aa0e86a5b 100755 --- a/indra/newview/skins/default/xui/ja/sidepanel_inventory.xml +++ b/indra/newview/skins/default/xui/ja/sidepanel_inventory.xml @@ -28,12 +28,12 @@ <button label="プãƒãƒ•ã‚£ãƒ¼ãƒ«" name="info_btn" tool_tip="オブジェクトã®ãƒ—ãƒãƒ•ã‚£ãƒ¼ãƒ«ã‚’表示ã™ã‚‹"/> </layout_panel> <layout_panel name="share_btn_lp"> - <button label="共有" name="share_btn" tool_tip="インベントリã®ã‚¢ã‚¤ãƒ†ãƒ を共有ã™ã‚‹"/> + <button label="共有" name="share_btn" tool_tip="「æŒã¡ç‰©ã€ã®ã‚¢ã‚¤ãƒ†ãƒ を共有ã™ã‚‹"/> </layout_panel> <layout_panel name="shop_btn_lp"> - <button label="店" name="shop_btn" tool_tip="マーケットプレイスã®ã‚µã‚¤ãƒˆã‚’é–‹ã"/> + <button label="ショッピング" name="shop_btn" tool_tip="マーケットプレイスã®ã‚µã‚¤ãƒˆã‚’é–‹ã"/> <button label="装ç€" name="wear_btn" tool_tip="é¸æŠžã—ãŸã‚¢ã‚¦ãƒˆãƒ•ã‚£ãƒƒãƒˆã‚’ç€ç”¨ã™ã‚‹"/> - <button label="プレイ" name="play_btn"/> + <button label="å†ç”Ÿ" name="play_btn"/> <button label="テレãƒãƒ¼ãƒˆ" name="teleport_btn" tool_tip="該当ã™ã‚‹ã‚¨ãƒªã‚¢ã«ãƒ†ãƒ¬ãƒãƒ¼ãƒˆã™ã‚‹"/> </layout_panel> </layout_stack> diff --git a/indra/newview/skins/default/xui/ja/strings.xml b/indra/newview/skins/default/xui/ja/strings.xml index 36966d6825..88fb652399 100755 --- a/indra/newview/skins/default/xui/ja/strings.xml +++ b/indra/newview/skins/default/xui/ja/strings.xml @@ -37,6 +37,44 @@ <string name="StartupRequireDriverUpdate"> グラフィックをåˆæœŸåŒ–ã§ãã¾ã›ã‚“ã§ã—ãŸã€‚グラフィックドライãƒã‚’æ›´æ–°ã—ã¦ãã ã•ã„。 </string> + <string name="AboutHeader"> + [APP_NAME] [VIEWER_VERSION_0].[VIEWER_VERSION_1].[VIEWER_VERSION_2] ([VIEWER_VERSION_3]) [BUILD_DATE] [BUILD_TIME] ([CHANNEL])[[VIEWER_RELEASE_NOTES_URL] [ReleaseNotes]] + </string> + <string name="AboutCompiler"> + コンパイラー [COMPILER] [COMPILER_VERSION] ãƒãƒ¼ã‚¸ãƒ§ãƒ³ + </string> + <string name="AboutPosition"> + ã‚ãªãŸã®ç¾åœ¨åœ°ã¯ã€[POSITION_LOCAL_0,number,1]ã€[POSITION_LOCAL_1,number,1]ã€[POSITION_LOCAL_2,number,1] ã® [REGION] ã§ã™ã€‚ä½ç½®ã¯ <nolink>[HOSTNAME]</nolink> ã§ã™ã€‚([HOSTIP]) +SLURL:<nolink>[SLURL]</nolink> +(ã‚°ãƒãƒ¼ãƒãƒ«åº§æ¨™ [POSITION_0,number,1]ã€[POSITION_1,number,1]ã€[POSITION_2,number,1]) +[SERVER_VERSION] +[SERVER_RELEASE_NOTES_URL] + </string> + <string name="AboutSystem"> + CPU:[CPU] +メモリ:[MEMORY_MB] MB +OS ãƒãƒ¼ã‚¸ãƒ§ãƒ³ï¼š[OS_VERSION] +ã‚°ãƒ©ãƒ•ã‚£ãƒƒã‚¯ã‚«ãƒ¼ãƒ‰è£½é€ å…ƒï¼š[GRAPHICS_CARD_VENDOR] +グラフィックカード:[GRAPHICS_CARD] + </string> + <string name="AboutDriver"> + Windows グラフィックドライãƒãƒãƒ¼ã‚¸ãƒ§ãƒ³ï¼š[GRAPHICS_DRIVER_VERSION] + </string> + <string name="AboutLibs"> + OpenGL ãƒãƒ¼ã‚¸ãƒ§ãƒ³ï¼š[OPENGL_VERSION] + +libcurl ãƒãƒ¼ã‚¸ãƒ§ãƒ³ï¼š[LIBCURL_VERSION] +J2C デコーダãƒãƒ¼ã‚¸ãƒ§ãƒ³ï¼š[J2C_VERSION] +オーディオドライãƒãƒãƒ¼ã‚¸ãƒ§ãƒ³ï¼š[AUDIO_DRIVER_VERSION] +Qt Webkit ãƒãƒ¼ã‚¸ãƒ§ãƒ³ï¼š[QT_WEBKIT_VERSION] +ボイスサーãƒãƒ¼ãƒãƒ¼ã‚¸ãƒ§ãƒ³:[VOICE_VERSION] + </string> + <string name="AboutTraffic"> + パケットãƒã‚¹ï¼š[PACKETS_LOST,number,0]/[PACKETS_IN,number,0] ([PACKETS_PCT,number,1]%) + </string> + <string name="ErrorFetchingServerReleaseNotesURL"> + サーãƒãƒ¼ã®ãƒªãƒªãƒ¼ã‚¹ãƒŽãƒ¼ãƒˆã® URL ã‚’å–å¾—ä¸ã«ã‚¨ãƒ©ãƒ¼ãŒç™ºç”Ÿã—ã¾ã—ãŸã€‚ + </string> <string name="ProgressRestoring"> 復元ä¸ã§ã™... </string> @@ -937,15 +975,15 @@ support@secondlife.com ã«ãŠå•ã„åˆã‚ã›ãã ã•ã„。 <string name="ControlYourCamera"> カメラã®ã‚³ãƒ³ãƒˆãƒãƒ¼ãƒ« </string> + <string name="TeleportYourAgent"> + ã‚ãªãŸã‚’テレãƒãƒ¼ãƒˆ + </string> <string name="NotConnected"> 接続ã•ã‚Œã¦ã„ã¾ã›ã‚“ </string> <string name="AgentNameSubst"> (ã‚ãªãŸ) </string> - <string name="TeleportYourAgent"> - ã‚ãªãŸã‚’テレãƒãƒ¼ãƒˆ - </string> <string name="JoinAnExperience"> 体験ã«å‚åŠ ã™ã‚‹ </string> @@ -1270,8 +1308,7 @@ support@secondlife.com ã«ãŠå•ã„åˆã‚ã›ãã ã•ã„。 <string name="InventoryInboxNoItems"> マーケットプレイスã§è³¼å…¥ã—ãŸå•†å“ã¯ã“ã“ã«è¡¨ç¤ºã•ã‚Œã¾ã™ã€‚ãã®å¾Œã€ã‚¢ã‚¤ãƒ†ãƒ をインベントリã«ãƒ‰ãƒ©ãƒƒã‚°ã™ã‚Œã°ã€ãれらã®ã‚¢ã‚¤ãƒ†ãƒ を使用ã§ãã¾ã™ã€‚ </string> - <string name="Unconstrained">éžæ‹˜æŸ</string> - <string name="MarketplaceURL"> + <string name="MarketplaceURL"> https://marketplace.[MARKETPLACE_DOMAIN_NAME]/ </string> <string name="MarketplaceURL_CreateStore"> @@ -1300,6 +1337,18 @@ support@secondlife.com ã«ãŠå•ã„åˆã‚ã›ãã ã•ã„。 <string name="InventoryOutboxNoItems"> [[MARKETPLACE_DASHBOARD_URL] マーケットプレイス]ã«è²©å£²ã™ã‚‹ã‚¢ã‚¤ãƒ†ãƒ を一覧ã™ã‚‹ã«ã¯ã€ãƒ•ã‚©ãƒ«ãƒ€ã‚’ã“ã®ã‚¨ãƒªã‚¢ã«ãƒ‰ãƒ©ãƒƒã‚°ã—ã€ã€Œãƒžãƒ¼ã‚±ãƒƒãƒˆãƒ—レイスã«é€ä¿¡ã€ã‚’クリックã—ã¾ã™ã€‚ </string> + <string name="InventoryOutboxInitializingTitle"> + マーケットプレイスã®åˆæœŸåŒ–。 + </string> + <string name="InventoryOutboxInitializing"> + [[MARKETPLACE_CREATE_STORE_URL] マーケットプレイス ストア] ã®ã‚¢ã‚«ã‚¦ãƒ³ãƒˆã«ã‚¢ã‚¯ã‚»ã‚¹ã—ã¦ã„ã¾ã™ã€‚ + </string> + <string name="InventoryOutboxErrorTitle"> + マーケットプレイス エラー。 + </string> + <string name="InventoryOutboxError"> + [[MARKETPLACE_CREATE_STORE_URL] マーケットプレイス ストア] ãŒã‚¨ãƒ©ãƒ¼ã‚’è¿”ã—ã¦ã„ã¾ã™ã€‚ + </string> <string name="Marketplace Error None"> エラーãªã— </string> @@ -1327,6 +1376,9 @@ support@secondlife.com ã«ãŠå•ã„åˆã‚ã›ãã ã•ã„。 <string name="Open landmarks"> ランドマークを開ã </string> + <string name="Unconstrained"> + éžæ‹˜æŸ + </string> <string name="no_transfer" value=" (å†è²©ãƒ»ãƒ—レゼントä¸å¯ï¼‰"/> <string name="no_modify" value=" (編集ä¸å¯ï¼‰"/> <string name="no_copy" value=" (コピーä¸å¯ï¼‰"/> @@ -1727,6 +1779,9 @@ support@secondlife.com ã«ãŠå•ã„åˆã‚ã›ãã ã•ã„。 <string name="CompileQueueDownloadedCompiling"> ダウンãƒãƒ¼ãƒ‰å®Œäº†ã€ã‚³ãƒ³ãƒ‘ã‚¤ãƒ«ä¸ </string> + <string name="CompileQueueServiceUnavailable"> + スクリプト コンパイル サービスを利用ã§ãã¾ã›ã‚“ + </string> <string name="CompileQueueScriptNotFound"> サーãƒãƒ¼ä¸Šã«ã‚¹ã‚¯ãƒªãƒ—トãŒè¦‹ã¤ã‹ã‚Šã¾ã›ã‚“。 </string> diff --git a/indra/newview/skins/default/xui/pl/floater_lagmeter.xml b/indra/newview/skins/default/xui/pl/floater_lagmeter.xml new file mode 100644 index 0000000000..8038550bcb --- /dev/null +++ b/indra/newview/skins/default/xui/pl/floater_lagmeter.xml @@ -0,0 +1,151 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<floater name="floater_lagmeter" title="POMIAR LAGÓW"> + <floater.string name="max_title_msg"> + Pomiar lagów + </floater.string> + <floater.string name="max_width_px"> + 360 + </floater.string> + <floater.string name="min_title_msg"> + Lag + </floater.string> + <floater.string name="min_width_px"> + 90 + </floater.string> + <floater.string name="client_text_msg"> + Klient + </floater.string> + <floater.string name="client_frame_rate_critical_fps"> + 10 + </floater.string> + <floater.string name="client_frame_rate_warning_fps"> + 15 + </floater.string> + <floater.string name="client_frame_time_window_bg_msg"> + W normie, okno w tle + </floater.string> + <floater.string name="client_frame_time_critical_msg"> + Ilość klatek na sekundÄ™ klienta poniżej [CLIENT_FRAME_RATE_CRITICAL] + </floater.string> + <floater.string name="client_frame_time_warning_msg"> + Ilość klatek na sekundÄ™ pomiÄ™dzy [CLIENT_FRAME_RATE_CRITICAL] i [CLIENT_FRAME_RATE_WARNING] + </floater.string> + <floater.string name="client_frame_time_normal_msg"> + W normie + </floater.string> + <floater.string name="client_draw_distance_cause_msg"> + Przyczyna: dystans rysowania jest za wysoki + </floater.string> + <floater.string name="client_texture_loading_cause_msg"> + Przyczyna: Å‚adowanie obrazu + </floater.string> + <floater.string name="client_texture_memory_cause_msg"> + Przyczyna: za dużo obrazów w pamiÄ™ci + </floater.string> + <floater.string name="client_complex_objects_cause_msg"> + Przyczyna: za dużo zÅ‚ożonych obiektów + </floater.string> + <floater.string name="network_text_msg"> + Sieć + </floater.string> + <floater.string name="network_packet_loss_critical_pct"> + 10 + </floater.string> + <floater.string name="network_packet_loss_warning_pct"> + 5 + </floater.string> + <floater.string name="network_packet_loss_critical_msg"> + Utrata pakietów przekracza [NETWORK_PACKET_LOSS_CRITICAL]% + </floater.string> + <floater.string name="network_packet_loss_warning_msg"> + Utrata pakietów przekracza [NETWORK_PACKET_LOSS_WARNING]%-[NETWORK_PACKET_LOSS_CRITICAL]% + </floater.string> + <floater.string name="network_performance_normal_msg"> + W normie + </floater.string> + <floater.string name="network_ping_critical_ms"> + 600 + </floater.string> + <floater.string name="network_ping_warning_ms"> + 300 + </floater.string> + <floater.string name="network_ping_critical_msg"> + Fatalny ping - [NETWORK_PING_CRITICAL] ms + </floater.string> + <floater.string name="network_ping_warning_msg"> + Wolny ping - [NETWORK_PING_WARNING]-[NETWORK_PING_CRITICAL] ms + </floater.string> + <floater.string name="network_packet_loss_cause_msg"> + ZÅ‚e poÅ‚Ä…czenie lub przepustowość. + </floater.string> + <floater.string name="network_ping_cause_msg"> + ZÅ‚e poÅ‚Ä…czenie lub aplikacja współdzielÄ…ca pliki. + </floater.string> + <floater.string name="server_text_msg"> + Serwer + </floater.string> + <floater.string name="server_frame_rate_critical_fps"> + 20 + </floater.string> + <floater.string name="server_frame_rate_warning_fps"> + 30 + </floater.string> + <floater.string name="server_single_process_max_time_ms"> + 20 + </floater.string> + <floater.string name="server_frame_time_critical_msg"> + Ilość klatek na sekundÄ™ poniżej [SERVER_FRAME_RATE_CRITICAL] + </floater.string> + <floater.string name="server_frame_time_warning_msg"> + Ilość klatek na sekundÄ™ pomiÄ™dzy [SERVER_FRAME_RATE_CRITICAL] i [SERVER_FRAME_RATE_WARNING] + </floater.string> + <floater.string name="server_frame_time_normal_msg"> + W normie + </floater.string> + <floater.string name="server_physics_cause_msg"> + Przyczyna: za dużo obiektów fizycznych + </floater.string> + <floater.string name="server_scripts_cause_msg"> + Przyczyna: za dużo obieków skryptowanych + </floater.string> + <floater.string name="server_net_cause_msg"> + Przyczyna: za duży ruch w sieci + </floater.string> + <floater.string name="server_agent_cause_msg"> + Przyczyna: za dużo poruszajÄ…cych siÄ™ awatarów w regionie + </floater.string> + <floater.string name="server_images_cause_msg"> + Przyczyna: za dużo kalkulacji obrazu + </floater.string> + <floater.string name="server_generic_cause_msg"> + Przyczyna: symulator Å‚aduje siÄ™ zbyt powoli + </floater.string> + <floater.string name="smaller_label"> + >> + </floater.string> + <floater.string name="bigger_label"> + << + </floater.string> + <button label="" label_selected="" name="client_lagmeter" tool_tip="Status lagów klienta"/> + <text name="client"> + Klient + </text> + <text name="client_text"> + W normie + </text> + <button label="" label_selected="" name="network_lagmeter" tool_tip="Network lag status"/> + <text name="network"> + Sieć + </text> + <text name="network_text"> + W normie + </text> + <button label="" label_selected="" name="server_lagmeter" tool_tip="Server lag status"/> + <text name="server"> + Serwer + </text> + <text name="server_text"> + W normie + </text> + <button label=">>" name="minimize" tool_tip="ZÅ‚Ä…cz rozmiar pliku xml"/> +</floater> diff --git a/indra/newview/skins/default/xui/pt/floater_lagmeter.xml b/indra/newview/skins/default/xui/pt/floater_lagmeter.xml new file mode 100644 index 0000000000..9932318293 --- /dev/null +++ b/indra/newview/skins/default/xui/pt/floater_lagmeter.xml @@ -0,0 +1,154 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<floater name="floater_lagmeter" title="LAG - Ãndice"> + <floater.string name="max_title_msg"> + Medidor de Atraso + </floater.string> + <floater.string name="max_width_px"> + 360 + </floater.string> + <floater.string name="min_title_msg"> + Atraso + </floater.string> + <floater.string name="min_width_px"> + 90 + </floater.string> + <floater.string name="client_text_msg"> + Cliente + </floater.string> + <floater.string name="client_frame_rate_critical_fps"> + 10 + </floater.string> + <floater.string name="client_frame_rate_warning_fps"> + 15 + </floater.string> + <floater.string name="client_frame_time_window_bg_msg"> + Normal, janela por baixo + </floater.string> + <floater.string name="client_frame_time_critical_msg"> + Taxa de quadros do Cliente abaixo de [CLIENT_FRAME_RATE_CRITICAL] + </floater.string> + <floater.string name="client_frame_time_warning_msg"> + Taxa de quadros do Cliente entre [CLIENT_FRAME_RATE_CRITICAL] e [CLIENT_FRAME_RATE_WARNING] + </floater.string> + <floater.string name="client_frame_time_normal_msg"> + Normal + </floater.string> + <floater.string name="client_draw_distance_cause_msg"> + Causa possÃvel: Distância de desenho ajustada muito alta + </floater.string> + <floater.string name="client_texture_loading_cause_msg"> + Causa possÃvel: Carregamento de Imagens + </floater.string> + <floater.string name="client_texture_memory_cause_msg"> + Causa possÃvel: Muitas imagens na memória + </floater.string> + <floater.string name="client_complex_objects_cause_msg"> + Causa possÃvel: Muitos objetos complexos na cena + </floater.string> + <floater.string name="network_text_msg"> + Rede + </floater.string> + <floater.string name="network_packet_loss_critical_pct"> + 10 + </floater.string> + <floater.string name="network_packet_loss_warning_pct"> + 5 + </floater.string> + <floater.string name="network_packet_loss_critical_msg"> + Conexão está caindo para cerca de [NETWORK_PACKET_LOSS_CRITICAL]% de pacotes + </floater.string> + <floater.string name="network_packet_loss_warning_msg"> + Conexão está caindo [NETWORK_PACKET_LOSS_WARNING]%-[NETWORK_PACKET_LOSS_CRITICAL]% de pacotes + </floater.string> + <floater.string name="network_performance_normal_msg"> + Normal + </floater.string> + <floater.string name="network_ping_critical_ms"> + 600 + </floater.string> + <floater.string name="network_ping_warning_ms"> + 300 + </floater.string> + <floater.string name="network_ping_critical_msg"> + Tempo de conexão de ping é cerca de [NETWORK_PING_CRITICAL] ms + </floater.string> + <floater.string name="network_ping_warning_msg"> + Tempo de conexão de ping é [NETWORK_PING_WARNING]-[NETWORK_PING_CRITICAL] ms + </floater.string> + <floater.string name="network_packet_loss_cause_msg"> + PossÃvel conexão ruim ou 'Largura de Banda' escolhida muito alta. + </floater.string> + <floater.string name="network_ping_cause_msg"> + PossÃvel conexão ruim ou aplicativos compartilhando arquivos. + </floater.string> + <floater.string name="server_text_msg"> + Servidor + </floater.string> + <floater.string name="server_frame_rate_critical_fps"> + 20 + </floater.string> + <floater.string name="server_frame_rate_warning_fps"> + 30 + </floater.string> + <floater.string name="server_single_process_max_time_ms"> + 20 + </floater.string> + <floater.string name="server_frame_time_critical_msg"> + Taxa de quadros abaixo de [SERVER_FRAME_RATE_CRITICAL] + </floater.string> + <floater.string name="server_frame_time_warning_msg"> + Taxa de quadros entre [SERVER_FRAME_RATE_CRITICAL] e [SERVER_FRAME_RATE_WARNING] + </floater.string> + <floater.string name="server_frame_time_normal_msg"> + Normal + </floater.string> + <floater.string name="server_physics_cause_msg"> + Causa possÃvel: Muitos objetos fÃsicos + </floater.string> + <floater.string name="server_scripts_cause_msg"> + Causa possÃvel: Muitos objetos com scripts + </floater.string> + <floater.string name="server_net_cause_msg"> + Causa possÃvel: Muito tráfego na rede + </floater.string> + <floater.string name="server_agent_cause_msg"> + Causa possÃvel: Muitas pessoas se movendo na região + </floater.string> + <floater.string name="server_images_cause_msg"> + Causa possÃvel: Muitos cálculos de imagem + </floater.string> + <floater.string name="server_generic_cause_msg"> + Causa possÃvel: Carga no simulador muito pesada + </floater.string> + <floater.string name="smaller_label"> + >> + </floater.string> + <floater.string name="bigger_label"> + << + </floater.string> + <button label="" label_selected="" name="client_lagmeter" tool_tip="Status de atraso no Cliente"/> + <text name="client"> + Cliente + </text> + <text font="SansSerifSmall" name="client_text"> + Normal + </text> + <text left="30" name="client_lag_cause" right="-10"/> + <button label="" label_selected="" name="network_lagmeter" tool_tip="Status de atraso na rede"/> + <text name="network"> + Rede + </text> + <text font="SansSerifSmall" name="network_text"> + Normal + </text> + <text left="30" name="network_lag_cause" right="-10"/> + <button label="" label_selected="" name="server_lagmeter" tool_tip="Status de atraso no servidor"/> + <text name="server"> + Servidor + </text> + <text font="SansSerifSmall" name="server_text"> + Normal + </text> + <text left="30" name="server_lag_cause" right="-32"/> + <button label=">>" name="minimize" tool_tip="Alternar o tamanho da janela"/> +</floater> diff --git a/indra/newview/skins/default/xui/pt/floater_region_restarting.xml b/indra/newview/skins/default/xui/pt/floater_region_restarting.xml new file mode 100644 index 0000000000..7fd13c0d75 --- /dev/null +++ b/indra/newview/skins/default/xui/pt/floater_region_restarting.xml @@ -0,0 +1,23 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<floater name="region_restarting" title="REINICIANDO REGIÃO"> + <string name="RegionName"> + A região na qual você está ([NAME]) está prestes a ser reiniciada. + +Se permanecer aqui, você será desconectado. + </string> + <string name="RestartSeconds"> + Segundos até o reinÃcio +[SECONDS] + </string> + <panel name="layout_panel_1"> + <text name="region_name"> + A região na qual você está (-Nome mais longo da região-) está prestes a ser reiniciada. + +Se permanecer aqui, você será desconectado. + </text> + <text name="restart_seconds"> + Segundos até o reinÃcio + 32767 + </text> + </panel> +</floater> diff --git a/indra/newview/skins/default/xui/pt/floater_scene_load_stats.xml b/indra/newview/skins/default/xui/pt/floater_scene_load_stats.xml new file mode 100644 index 0000000000..027e1ef311 --- /dev/null +++ b/indra/newview/skins/default/xui/pt/floater_scene_load_stats.xml @@ -0,0 +1,64 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<floater name="Scene Load Statistics" title="ESTATÃSTICAS DE CARREGAMENTO DE CENA"> + <button label="Pausar" name="playpause"/> + <scroll_container name="statistics_scroll"> + <container_view name="statistics_view"> + <stat_view label="Básico" name="basic"> + <stat_bar label="Diferença de frame em pixels" name="frame difference"/> + <stat_bar label="Dados de UDP recebidos" name="bandwidth"/> + <stat_bar label="Bandwidth" name="packet_loss"/> + </stat_view> + <stat_view label="Avançado" name="advanced"> + <stat_view label="Render" name="render"> + <stat_bar label="Total Objects" name="objs"/> + <stat_bar label="New Objects" name="newobjs"/> + <stat_bar label="Taxa de acertos do cache do objeto" name="object_cache_hits"/> + </stat_view> + <stat_view label="Textura" name="texture"> + <stat_bar label="Taxa de acertos do cache" name="texture_cache_hits"/> + <stat_bar label="Latência de leitura do cache" name="texture_cache_read_latency"/> + <stat_bar label="Contagem" name="numimagesstat"/> + <stat_bar label="Raw Count" name="numrawimagesstat"/> + </stat_view> + <stat_view label="Network" name="network"> + <stat_bar label="Packets In" name="packetsinstat"/> + <stat_bar label="Packets Out" name="packetsoutstat"/> + <stat_bar label="Objetos" name="objectdatareceived"/> + <stat_bar label="Textura" name="texturedatareceived"/> + <stat_bar label="Asset" name="assetudpdatareceived"/> + <stat_bar label="Layers" name="layersdatareceived"/> + <stat_bar label="Actual In" name="messagedatain"/> + <stat_bar label="Actual Out" name="messagedataout"/> + <stat_bar label="Operações pendentes do VFS" name="vfspendingoperations"/> + </stat_view> + </stat_view> + <stat_view label="Simulator" name="sim"> + <stat_bar label="Objetos" name="simobjects"/> + <stat_bar label="Active Objects" name="simactiveobjects"/> + <stat_bar label="Active Scripts" name="simactivescripts"/> + <stat_bar label="Packets In" name="siminpps"/> + <stat_bar label="Packets Out" name="simoutpps"/> + <stat_bar label="Pending Downloads" name="simpendingdownloads"/> + <stat_bar label="Pending Uploads" name="simpendinguploads"/> + <stat_bar label="Total Unacked Bytes" name="simtotalunackedbytes"/> + <stat_view label="Time (ms)" name="simperf"> + <stat_bar label="Total Frame Time" name="simframemsec"/> + <stat_bar label="Net Time" name="simnetmsec"/> + <stat_bar label="Physics Time" name="simsimphysicsmsec"/> + <stat_bar label="Simulation Time" name="simsimothermsec"/> + <stat_bar label="Agent Time" name="simagentmsec"/> + <stat_bar label="Images Time" name="simimagesmsec"/> + <stat_bar label="Script Time" name="simscriptmsec"/> + <stat_bar label="Tempo restante" name="simsparemsec"/> + <stat_view label="Detalhes de tempo (ms)" name="timedetails"> + <stat_bar label="Etapa fÃsica" name="simsimphysicsstepmsec"/> + <stat_bar label="Atualizar formas fÃsicas" name="simsimphysicsshapeupdatemsec"/> + <stat_bar label="FÃsica - outros" name="simsimphysicsothermsec"/> + <stat_bar label="Tempo de espera" name="simsleepmsec"/> + <stat_bar label="Bombear ES" name="simpumpiomsec"/> + </stat_view> + </stat_view> + </stat_view> + </container_view> + </scroll_container> +</floater> diff --git a/indra/newview/skins/default/xui/pt/floater_stats.xml b/indra/newview/skins/default/xui/pt/floater_stats.xml index be53624145..ef3307f54a 100755 --- a/indra/newview/skins/default/xui/pt/floater_stats.xml +++ b/indra/newview/skins/default/xui/pt/floater_stats.xml @@ -4,17 +4,20 @@ <container_view name="statistics_view"> <stat_view label="Básico" name="basic"> <stat_bar label="FPS" name="fps"/> - <stat_bar label="Bandwidth" name="bandwidth"/> + <stat_bar label="Dados de UDP recebidos" name="bandwidth"/> <stat_bar label="Bandwidth" name="packet_loss"/> <stat_bar label="Ping Sim" name="ping"/> </stat_view> <stat_view label="Avançado" name="advanced"> <stat_view label="Render" name="render"> - <stat_bar label="KTris desenhados por quadro" name="ktrisframe"/> - <stat_bar label="KTris desenhados por segundo" name="ktrissec"/> + <stat_bar label="KTris por quadro" name="ktrisframe"/> + <stat_bar label="KTris por segundo" name="ktrissec"/> <stat_bar label="Total Objects" name="objs"/> <stat_bar label="New Objects" name="newobjs"/> <stat_bar label="Taxa de acertos do cache do objeto" name="object_cache_hits"/> + <stat_bar label="Consultas de oclusão realizadas" name="occlusion_queries"/> + <stat_bar label="Objetos ocultos" name="occluded"/> + <stat_bar label="Objeto não oculto" name="unoccluded"/> </stat_view> <stat_view label="Texture" name="texture"> <stat_bar label="Taxa de acertos do cache" name="texture_cache_hits"/> @@ -26,15 +29,32 @@ <stat_bar label="Raw Mem" name="rawmemstat"/> <stat_bar label="Bound Mem" name="glboundmemstat"/> </stat_view> + <stat_view label="Uso de memória" name="memory"> + <stat_bar label="LLTrace" name="LLTrace"/> + <stat_bar label="Interface" name="LLView"/> + <stat_bar label="Fontes" name="LLFontFreetype"/> + <stat_bar label="Inventário" name="LLInventoryObject"/> + <stat_bar label="Objetos do visualizador" name="LLViewerObject"/> + <stat_bar label="Dados do grupo de octrees" name="LLViewerOctreeGroup"/> + <stat_bar label="Dados da octree" name="LLViewerOctreeEntry"/> + <stat_bar label="Cache de objetos do visualizador" name="LLVOCacheEntry"/> + <stat_bar label="Drawables" name="LLDrawable"/> + <stat_bar label="Dados do rosto" name="LLFace"/> + <stat_bar label="Informações de desenho" name="LLDrawInfo"/> + <stat_bar label="Dados de textura" name="LLTexture"/> + <stat_bar label="Dados de imagem" name="LLImage"/> + <stat_bar label="Dados de imagem do GL" name="LLImageGL"/> + <stat_bar label="Buffers do Vertex" name="LLVertexBuffer"/> + </stat_view> <stat_view label="Rede" name="network"> <stat_bar label="Packets In" name="packetsinstat"/> <stat_bar label="Packets Out" name="packetsoutstat"/> - <stat_bar label="Objects" name="objectkbitstat"/> - <stat_bar label="Texture" name="texturekbitstat"/> - <stat_bar label="Asset" name="assetkbitstat"/> - <stat_bar label="Layers" name="layerskbitstat"/> - <stat_bar label="Actual In" name="actualinkbitstat"/> - <stat_bar label="Actual Out" name="actualoutkbitstat"/> + <stat_bar label="Objetos" name="objectdatareceived"/> + <stat_bar label="Textura" name="texturedatareceived"/> + <stat_bar label="Asset" name="assetudpdatareceived"/> + <stat_bar label="Layers" name="layersdatareceived"/> + <stat_bar label="Actual In" name="messagedatain"/> + <stat_bar label="Actual Out" name="messagedataout"/> <stat_bar label="Operações pendentes do VFS" name="vfspendingoperations"/> </stat_view> </stat_view> @@ -53,7 +73,8 @@ <stat_bar label="Etapas de silhueta ignoradas" name="simsimskippedsilhouettesteps"/> <stat_bar label="Personagens atualizados" name="simsimpctsteppedcharacters"/> </stat_view> - <stat_view label="Time (ms)" name="simperf"> + <stat_bar label="Total de dados não reconhecidos" name="simtotalunackedbytes"/> + <stat_view label="Hora" name="simperf"> <stat_bar label="Total Frame Time" name="simframemsec"/> <stat_bar label="Net Time" name="simnetmsec"/> <stat_bar label="Physics Time" name="simsimphysicsmsec"/> @@ -62,7 +83,7 @@ <stat_bar label="Images Time" name="simimagesmsec"/> <stat_bar label="Script Time" name="simscriptmsec"/> <stat_bar label="Tempo restante" name="simsparemsec"/> - <stat_view label="Detalhes de tempo (ms)" name="timedetails"> + <stat_view label="Detalhes de hora" name="timedetails"> <stat_bar label="Etapa fÃsica" name="simsimphysicsstepmsec"/> <stat_bar label="Atualizar formas fÃsicas" name="simsimphysicsshapeupdatemsec"/> <stat_bar label="FÃsica - outros" name="simsimphysicsothermsec"/> diff --git a/indra/newview/skins/default/xui/pt/menu_avatar_icon.xml b/indra/newview/skins/default/xui/pt/menu_avatar_icon.xml index beba969b7e..f6211790a8 100755 --- a/indra/newview/skins/default/xui/pt/menu_avatar_icon.xml +++ b/indra/newview/skins/default/xui/pt/menu_avatar_icon.xml @@ -2,6 +2,7 @@ <menu name="Avatar Icon Menu"> <menu_item_call label="Ver perfil" name="Show Profile"/> <menu_item_call label="Enviar MI..." name="Send IM"/> + <menu_item_call label="Solicitar teletransporte" name="Request Teleport"/> <menu_item_call label="Adicionar amigo..." name="Add Friend"/> <menu_item_call label="Remover amigo..." name="Remove Friend"/> </menu> diff --git a/indra/newview/skins/default/xui/pt/menu_inventory.xml b/indra/newview/skins/default/xui/pt/menu_inventory.xml index a3a648eb34..636b356c8b 100755 --- a/indra/newview/skins/default/xui/pt/menu_inventory.xml +++ b/indra/newview/skins/default/xui/pt/menu_inventory.xml @@ -70,6 +70,7 @@ <menu_item_call label="Executar som" name="Sound Play"/> <menu_item_call label="Copiar SLurl" name="url_copy"/> <menu_item_call label="Sobre o marco" name="About Landmark"/> + <menu_item_call label="Mostrar no mapa" name="show_on_map"/> <menu_item_call label="Executar animação" name="Animation Play"/> <menu_item_call label="Executar áudio" name="Animation Audition"/> <menu_item_call label="Mandar MI" name="Send Instant Message"/> diff --git a/indra/newview/skins/default/xui/pt/menu_login.xml b/indra/newview/skins/default/xui/pt/menu_login.xml index cd840f3137..29dae6292a 100755 --- a/indra/newview/skins/default/xui/pt/menu_login.xml +++ b/indra/newview/skins/default/xui/pt/menu_login.xml @@ -5,7 +5,15 @@ <menu_item_call label="Sair do [APP_NAME]" name="Quit"/> </menu> <menu label="Ajuda" name="Help"> - <menu_item_call label="Ajuda do [SECOND_LIFE]" name="Second Life Help"/> + <menu_item_call label="Como..." name="How To"/> + <menu_item_call label="InÃcio rápido" name="Quickstart"/> + <menu_item_call label="Base de conhecimento" name="Knowledge Base"/> + <menu_item_call label="Wiki" name="Wiki"/> + <menu_item_call label="Fóruns da comunidade" name="Community Forums"/> + <menu_item_call label="Portal de suporte" name="Support portal"/> + <menu_item_call label="NotÃcias do [SECOND_LIFE]" name="Second Life News"/> + <menu_item_call label="Blogs do [SECOND_LIFE]" name="Second Life Blogs"/> + <menu_item_call label="Relatar bug" name="Report Bug"/> <menu_item_call label="Sobre [APP_NAME]" name="About Second Life"/> </menu> <menu_item_check label="Exibir menu de depuração" name="Show Debug Menu"/> diff --git a/indra/newview/skins/default/xui/pt/menu_teleport_history_item.xml b/indra/newview/skins/default/xui/pt/menu_teleport_history_item.xml index ec1e7a0950..3a2b3a8847 100755 --- a/indra/newview/skins/default/xui/pt/menu_teleport_history_item.xml +++ b/indra/newview/skins/default/xui/pt/menu_teleport_history_item.xml @@ -2,5 +2,5 @@ <context_menu name="Teleport History Item Context Menu"> <menu_item_call label="Teletransportar" name="Teleport"/> <menu_item_call label="Mais informações" name="More Information"/> - <menu_item_call label="Copiar" name="CopyToClipboard"/> + <menu_item_call label="Copiar SLurl" name="CopyToClipboard"/> </context_menu> diff --git a/indra/newview/skins/default/xui/pt/menu_viewer.xml b/indra/newview/skins/default/xui/pt/menu_viewer.xml index e6eceb5f2f..d106c47c64 100755 --- a/indra/newview/skins/default/xui/pt/menu_viewer.xml +++ b/indra/newview/skins/default/xui/pt/menu_viewer.xml @@ -72,11 +72,11 @@ <menu_item_check label="Menu avançado" name="Show Advanced Menu"/> </menu> <menu label="Sol" name="Sun"> - <menu_item_call label="Amanhecer" name="Sunrise"/> - <menu_item_call label="Meio-dia" name="Noon"/> - <menu_item_call label="Pôr-do-sol" name="Sunset"/> - <menu_item_call label="Meia-noite" name="Midnight"/> - <menu_item_call label="Usar configurações da região" name="Use Region Settings"/> + <menu_item_check label="Amanhecer" name="Sunrise"/> + <menu_item_check label="Meio-dia" name="Noon"/> + <menu_item_check label="Pôr-do-sol" name="Sunset"/> + <menu_item_check label="Meia-noite" name="Midnight"/> + <menu_item_check label="Usar configurações da região" name="Use Region Settings"/> </menu> <menu label="Editor de ambientes" name="Environment Editor"> <menu_item_call label="Configurações do ambiente..." name="Environment Settings"/> @@ -165,8 +165,6 @@ </menu> <menu label="Ajuda" name="Help"> <menu_item_call label="Como..." name="How To"/> - <menu_item_call label="[SECOND_LIFE] Ajuda" name="Second Life Help"/> - <menu_item_call label="Guia do usuário" name="User’s guide"/> <menu_item_call label="Base de conhecimento" name="Knowledge Base"/> <menu_item_call label="Wiki" name="Wiki"/> <menu_item_call label="Fóruns da comunidade" name="Community Forums"/> @@ -188,6 +186,7 @@ <menu label="Ferramentas de desempenho" name="Performance Tools"> <menu_item_call label="Medidor de lag" name="Lag Meter"/> <menu_item_check label="Barra de estatÃsticas" name="Statistics Bar"/> + <menu_item_call label="EstatÃsticas de carregamento de cena" name="Scene Load Statistics"/> <menu_item_check label="Mostrar peso do desenho para avatares" name="Avatar Rendering Cost"/> </menu> <menu label="Realces e visibilidade" name="Highlighting and Visibility"> @@ -249,6 +248,7 @@ <menu_item_check label="Tempos" name="Fast Timers"/> <menu_item_check label="Memória" name="Memory"/> <menu_item_check label="EstatÃsticas da cena" name="Scene Statistics"/> + <menu_item_check label="Monitor de carregamento de cena" name="Scene Loading Monitor"/> <menu_item_call label="Painel de depuração de obtenção de textura" name="Texture Fetch Debug Console"/> <menu_item_call label="Region Info to Debug Console" name="Region Info to Debug Console"/> <menu_item_check label="Câmera:" name="Camera"/> @@ -280,6 +280,7 @@ <menu_item_check label="Taxa de quadros aleatória" name="Randomize Framerate"/> <menu_item_check label="Frame Test" name="Frame Test"/> <menu_item_call label="Perfil do quadro" name="Frame Profile"/> + <menu_item_call label="Benchmark" name="Benchmark"/> </menu> <menu label="Render Metadata" name="Render Metadata"> <menu_item_check label="Normais" name="Normals"/> @@ -287,6 +288,7 @@ <menu_item_check label="Tipo de atualização" name="Update Type"/> <menu_item_check label="Dados LOD" name="LOD Info"/> <menu_item_check label="Fila de construção" name="Build Queue"/> + <menu_item_check label="Junções" name="Joints"/> <menu_item_check label="Vetores de vento" name="Wind Vectors"/> <menu_item_check label="Renderizar complexidade" name="rendercomplexity"/> <menu_item_check label="Bytes do anexo" name="attachment bytes"/> @@ -312,6 +314,7 @@ <menu_item_check label="Render Attached Lights" name="Render Attached Lights"/> <menu_item_check label="Render Attached Particles" name="Render Attached Particles"/> <menu_item_check label="Objetos iridescentes" name="Hover Glow Objects"/> + <menu_item_call label="Limpar cache imediatamente" name="Cache Clear"/> </menu> <menu label="Rede" name="Network"> <menu_item_check label="Pausar avatar" name="AgentPause"/> @@ -327,7 +330,6 @@ <menu_item_call label="Teste de mÃdia do navegador" name="Web Browser Test"/> <menu_item_call label="Navegador de conteúdo web" name="Web Content Browser"/> <menu_item_call label="Print Selected Object Info" name="Print Selected Object Info"/> - <menu_item_check label="Console de depuração de região" name="Region Debug Console"/> <menu_item_check label="Debug Clicks" name="Debug Clicks"/> <menu_item_check label="Debug Mouse Events" name="Debug Mouse Events"/> </menu> diff --git a/indra/newview/skins/default/xui/pt/notifications.xml b/indra/newview/skins/default/xui/pt/notifications.xml index d5096ec858..4e6b0765cb 100755 --- a/indra/newview/skins/default/xui/pt/notifications.xml +++ b/indra/newview/skins/default/xui/pt/notifications.xml @@ -113,15 +113,15 @@ Consulte o [[MARKETPLACE_IMPORTS_URL] log de erros] para mais informações. <usetemplate name="okbutton" yestext="OK"/> </notification> <notification name="OutboxImportFailed"> - Falha de transferência + Falha na transferência com o erro '[ERROR_CODE]' -Nenhuma pasta enviada para o Mercado devido a um erro do sistema ou da rede. Tente novamente mais tarde. +Nenhuma pasta foi enviada ao Marketplace devido a um erro do sistema ou da rede. Tente novamente mais tarde. <usetemplate name="okbutton" yestext="OK"/> </notification> <notification name="OutboxInitFailed"> - Falha na inicialização do Mercado + Falha na inicialização do Marketplace com o erro '[ERROR_CODE]' -Falha na inicialização do mercado devido a um erro do sistema ou da rede. Tente novamente mais tarde. +Ocorreu uma falha na inicialização do Marketplace devido a um erro do sistema ou da rede. Tente novamente mais tarde. <usetemplate name="okbutton" yestext="OK"/> </notification> <notification name="CompileQueueSaveText"> @@ -1722,6 +1722,10 @@ Por favor volte mais tarde. Tem certeza de quer ser teletransportado para <nolink>[LOCATION]</nolink>? <usetemplate ignoretext="Confirmar se eu quero ser teletransportado para marcos" name="okcancelignore" notext="Cancelar" yestext="Teletransportar"/> </notification> + <notification name="TeleportViaSLAPP"> + Tem certeza de quer ser teletransportado para <nolink>[LOCATION]</nolink>? + <usetemplate ignoretext="Confirmo que desejo me teleportar via SLAPP" name="okcancelignore" notext="Cancelar" yestext="Teletransportar"/> + </notification> <notification name="TeleportToPick"> Teletransportar para [PICK]? <usetemplate ignoretext="Confirmar se eu quero ser teletransportado para Destaques" name="okcancelignore" notext="Cancelar" yestext="Teletransportar"/> @@ -1932,6 +1936,9 @@ Isto mudará milhares de regiões e fará o spaceserver soluçar. <notification name="ProblemAddingEstateManager"> Problemas em adicionar um novo gerente da propriedade. Uma ou mais propriedades podem ter uma lista de gerentes cheia. </notification> + <notification name="ProblemAddingEstateBanManager"> + Não é possÃvel adicionar proprietários ou gerentes de terreno à lista de bloqueio. + </notification> <notification name="ProblemAddingEstateGeneric"> Problemas em adicionar a esta lista de propriedades. Uma ou mais propriedades podem ter uma lista cheia. </notification> @@ -3012,19 +3019,25 @@ Mais detalhes no log. Não foi possÃvel obter o recurso '[CAPABILITY]' da região. </notification> <notification name="ShareItemsConfirmation"> - Tem certeza de que quer compartilhar os itens abaixo? + Tem certeza de que deseja compartilhar os itens abaixo? <nolink>[ITEMS]</nolink> Com os seguintes residentes: -[RESIDENTS] +<nolink>[RESIDENTS]</nolink> <usetemplate name="okcancelbuttons" notext="Cancelar" yestext="OK"/> </notification> <notification name="ShareFolderConfirmation"> - Apenas uma pasta pode ser compartilhada por vez. + É possÃvel compartilhar apenas uma pasta de cada vez. + +Tem certeza de que deseja compartilhar os itens abaixo? + +<nolink>[ITEMS]</nolink> -Tem certeza de que quer compartilhar os itens abaixo? +Com os seguintes residentes: + +<nolink>[RESIDENTS]</nolink> <usetemplate name="okcancelbuttons" notext="Cancelar" yestext="OK"/> </notification> <notification name="ItemsShared"> @@ -3478,10 +3491,6 @@ Tente novamente em instantes. <notification name="EjectComingSoon"> Você não tem mais permissão para ficar aqui e tem [EJECT_TIME] segundos para sair. </notification> - <notification name="NoEnterServerFull"> - Você não pode entrar nesta região porque -o servidor está cheio. - </notification> <notification name="SaveBackToInvDisabled"> Salvar no inventário foi desativado. </notification> @@ -3671,6 +3680,9 @@ o servidor está cheio. <notification name="LinkFailedTooMuchPhysics"> O objeto usa muitos recursos fÃsicos – sua dinâmica foi desativada. </notification> + <notification name="EstateManagerFailedllTeleportHome"> + O objeto '[OBJECT_NAME]' em [SLURL] não pode teleportar gerentes de terreno de volta para casa. + </notification> <notification name="TeleportedHomeByObjectOnParcel"> Você foi teletransportado para seu inÃcio pelo objeto '[OBJECT_NAME]' no lote '[PARCEL_NAME]' </notification> @@ -3861,13 +3873,18 @@ o servidor está cheio. Não há lotes alugados suficientes na seleção para reunir. </notification> <notification name="CantDivideLandMultipleParcelsSelected"> - Não é possÃvel dividir o terreno.\nHá mais de um lote selecionado.\nTente selecionar um pedaço menor de terreno. + Não é possÃvel dividir o terreno. +Mais de um lote foi selecionado. +Tente selecionar uma quantidade menor de terreno. </notification> <notification name="CantDivideLandCantFindParcel"> - Não é possÃvel dividir o terreno.\nNão é possÃvel encontrar o lote.\nComunique isso em Ajuda -> Relatar bug... + Não é possÃvel dividir o terreno. +Não é possÃvel encontrar o lote. +Reporte em Ajuda -> Relatar bug... </notification> <notification name="CantDivideLandWholeParcelSelected"> - Não é possÃvel dividir o terreno. O lote inteiro está selecionado.\nTente selecionar um pedaço menor do terreno. + Não é possÃvel dividir o terreno. Todo o lote foi selecionado. +Tente selecionar uma quantidade menor de terreno. </notification> <notification name="LandHasBeenDivided"> O terreno foi dividido. @@ -4007,4 +4024,8 @@ o servidor está cheio. Não foi possÃvel mover arquivos. Caminho anterior restaurado. <usetemplate ignoretext="Não foi possÃvel mover arquivos. Caminho anterior restaurado." name="okignore" yestext="OK"/> </notification> + <notification name="ChatHistoryIsBusyAlert"> + O arquivo de histórico de bate-papo está ocupado com uma operação anterior. Tente novamente em alguns minutos ou selecione outra pessoa para bater papo. + <usetemplate name="okbutton" yestext="OK"/> + </notification> </notifications> diff --git a/indra/newview/skins/default/xui/pt/panel_group_info_sidetray.xml b/indra/newview/skins/default/xui/pt/panel_group_info_sidetray.xml index 30c825723b..7d8531a482 100755 --- a/indra/newview/skins/default/xui/pt/panel_group_info_sidetray.xml +++ b/indra/newview/skins/default/xui/pt/panel_group_info_sidetray.xml @@ -20,7 +20,7 @@ <layout_panel name="group_accordions"> <accordion name="groups_accordion"> <accordion_tab name="group_general_tab" title="Geral"/> - <accordion_tab name="group_roles_tab" title="Cargos"/> + <accordion_tab name="group_roles_tab" title="Funções e membros"/> <accordion_tab name="group_notices_tab" title="Avisos"/> <accordion_tab name="group_land_tab" title="Terrenos/Bens"/> </accordion> diff --git a/indra/newview/skins/default/xui/pt/panel_group_roles.xml b/indra/newview/skins/default/xui/pt/panel_group_roles.xml index 11a31570d1..84d275a8f2 100755 --- a/indra/newview/skins/default/xui/pt/panel_group_roles.xml +++ b/indra/newview/skins/default/xui/pt/panel_group_roles.xml @@ -19,8 +19,9 @@ <name_list.columns label="Membro" name="name"/> <name_list.columns label="Doações" name="donated"/> <name_list.columns label="Status" name="online"/> + <name_list.columns label="TÃtulo" name="title"/> </name_list> - <button label="Convidar" name="member_invite" /> + <button label="Convidar" name="member_invite"/> <button label="Ejetar" name="member_eject"/> </panel> <panel label="CARGOS" name="roles_sub_tab"> diff --git a/indra/newview/skins/default/xui/pt/panel_region_debug.xml b/indra/newview/skins/default/xui/pt/panel_region_debug.xml index be15d40d74..9070563fd0 100755 --- a/indra/newview/skins/default/xui/pt/panel_region_debug.xml +++ b/indra/newview/skins/default/xui/pt/panel_region_debug.xml @@ -7,11 +7,8 @@ desconhecido </text> <check_box label="Desativar scripts" name="disable_scripts_check" tool_tip="Desativar todos os scripts nesta região"/> - <button label="?" name="disable_scripts_help"/> <check_box label="Desativar colisões" name="disable_collisions_check" tool_tip="Desabilitar colisões de não-avatares nessa região"/> - <button label="?" name="disable_collisions_help"/> <check_box label="Desativar fÃsica" name="disable_physics_check" tool_tip="Desativar toda a fÃsÃca nesta região"/> - <button label="?" name="disable_physics_help"/> <button label="Aplicar" name="apply_btn"/> <text name="objret_text_lbl" width="130"> Devolver objeto @@ -31,10 +28,8 @@ <check_box label="Em todas as regiões desta propriedade" name="return_estate_wide" tool_tip="Devolver objetos em todas as regiões que constituem esta propriedade"/> <button label="Devolver" name="return_btn"/> <button label="Principais colidentes..." name="top_colliders_btn" tool_tip="Lista dos objetos com maior potencial de colisão" width="280"/> - <button label="?" left="297" name="top_colliders_help"/> - <button label="Principais scripts..." name="top_scripts_btn" tool_tip="Lista de objetos que mais passam tempo executando scripts" width="280"/> - <button label="?" left="297" name="top_scripts_help"/> <button label="Reiniciar a região" name="restart_btn" tool_tip="Após 2 minutos de contagem regressiva, reiniciar a região"/> - <button label="?" name="restart_help"/> + <button label="Principais scripts..." name="top_scripts_btn" tool_tip="Lista de objetos que mais passam tempo executando scripts" width="280"/> <button label="Cancelar reinÃcio" name="cancel_restart_btn" tool_tip="Cancelar reinÃcio da região"/> + <button label="Console de depuração de região" name="region_debug_console_btn" tool_tip="Abrir console de depuração de região"/> </panel> diff --git a/indra/newview/skins/default/xui/pt/panel_region_general.xml b/indra/newview/skins/default/xui/pt/panel_region_general.xml index 4be1cd11c0..a0d4579a04 100755 --- a/indra/newview/skins/default/xui/pt/panel_region_general.xml +++ b/indra/newview/skins/default/xui/pt/panel_region_general.xml @@ -20,12 +20,12 @@ </text> <check_box label="Bloquear terraplenagem" name="block_terraform_check"/> <check_box label="Bloquear voos" name="block_fly_check"/> + <check_box label="Bloquear sobrevoo no terreno" name="block_fly_over_check" tool_tip="Estender verificações de acesso para cima para evitar que voem sobre um terreno"/> <check_box label="Permitir dano" name="allow_damage_check"/> <check_box label="Restringir empurrões" name="restrict_pushobject"/> <check_box label="Permitir revenda do terreno" name="allow_land_resell_check"/> <check_box label="Permitir junção/divisão do terreno" name="allow_parcel_changes_check"/> <check_box label="Bloquear exibição do terreno na busca" name="block_parcel_search_check" tool_tip="Permitir que as pessoas vejam esta região e seus lotes nos resultados de busca"/> - <check_box label="Permitir objetos mesh" name="mesh_rez_enabled_check" tool_tip="Permitir que que outras pessoas renderizem objectos mesh nessa região"/> <spinner label="Limite do agente" name="agent_limit_spin"/> <spinner label="Bônus de objetos" name="object_bonus_spin"/> <text label="Maturidade" name="access_text"> diff --git a/indra/newview/skins/default/xui/pt/sidepanel_inventory.xml b/indra/newview/skins/default/xui/pt/sidepanel_inventory.xml index c44345323f..4747d14101 100755 --- a/indra/newview/skins/default/xui/pt/sidepanel_inventory.xml +++ b/indra/newview/skins/default/xui/pt/sidepanel_inventory.xml @@ -33,7 +33,7 @@ <layout_panel name="shop_btn_lp"> <button label="Comprar" name="shop_btn" tool_tip="Abrir página do Marketplace"/> <button label="Vestir" name="wear_btn" tool_tip="Vestir visual selecionado"/> - <button label="Tocar" name="play_btn"/> + <button label="Jogar" name="play_btn"/> <button label="Teletransportar" name="teleport_btn" tool_tip="Teletransportar para a área selecionada"/> </layout_panel> </layout_stack> diff --git a/indra/newview/skins/default/xui/pt/strings.xml b/indra/newview/skins/default/xui/pt/strings.xml index 8436452228..a5a3f04f78 100755 --- a/indra/newview/skins/default/xui/pt/strings.xml +++ b/indra/newview/skins/default/xui/pt/strings.xml @@ -28,6 +28,45 @@ <string name="StartupRequireDriverUpdate"> Falha na inicialização dos gráficos. Atualize seu driver gráfico! </string> + <string name="AboutHeader"> + [APP_NAME] [VIEWER_VERSION_0].[VIEWER_VERSION_1].[VIEWER_VERSION_2] ([VIEWER_VERSION_3]) [BUILD_DATE] [BUILD_TIME] ([CHANNEL]) +[[VIEWER_RELEASE_NOTES_URL] [Notas da versão]] + </string> + <string name="AboutCompiler"> + ConstruÃdo com [COMPILER] versão [COMPILER_VERSION] + </string> + <string name="AboutPosition"> + Você está em [POSITION_LOCAL_0,number,1], [POSITION_LOCAL_1,number,1], [POSITION_LOCAL_2,number,1] em [REGION] localizado em <nolink>[HOSTNAME]</nolink> ([HOSTIP]) +SLURL: <nolink>[SLURL]</nolink> +(coordenadas globais [POSITION_0,number,1], [POSITION_1,number,1], [POSITION_2,number,1]) +[SERVER_VERSION] +[SERVER_RELEASE_NOTES_URL] + </string> + <string name="AboutSystem"> + CPU: [CPU] +Memória: [MEMORY_MB] MBs +Versão OS: [OS_VERSION] +Placa de vÃdeo: [GRAPHICS_CARD_VENDOR] +Placa gráfica: [GRAPHICS_CARD] + </string> + <string name="AboutDriver"> + Versão do driver de vÃdeo Windows: [GRAPHICS_CARD_VENDOR] + </string> + <string name="AboutLibs"> + Versão OpenGL: [OPENGL_VERSION] + +Versão libcurl: [LIBCURL_VERSION] +Versão J2C Decoder: [J2C_VERSION] +Versão do driver de áudio: [AUDIO_DRIVER_VERSION] +Versão Qt Webkit: [QT_WEBKIT_VERSION] +Versão do servidor de voz: [VOICE_VERSION] + </string> + <string name="AboutTraffic"> + Packets Lost: [PACKETS_LOST,number,0]/[PACKETS_IN,number,0] ([PACKETS_PCT,number,1]%) + </string> + <string name="ErrorFetchingServerReleaseNotesURL"> + Erro ao obter URL de notas de versão do servidor. + </string> <string name="ProgressRestoring"> Restaurando... </string> @@ -886,12 +925,12 @@ Pessoas com contas gratuitas não poderão acessar o Second Life no momento para <string name="ControlYourCamera"> Controle sua camera </string> - <string name="AgentNameSubst"> - (Você) - </string> <string name="TeleportYourAgent"> Teletransportá-lo </string> + <string name="AgentNameSubst"> + (Você) + </string> <string name="JoinAnExperience"> Participar de uma experiência </string> @@ -1216,8 +1255,7 @@ Pessoas com contas gratuitas não poderão acessar o Second Life no momento para <string name="InventoryInboxNoItems"> Suas compras do Marketplace aparecerão aqui. Depois, você poderá arrastá-las para seu inventário para usá-las. </string> - <string name="Unconstrained">Sem limites</string> - <string name="MarketplaceURL"> + <string name="MarketplaceURL"> https://marketplace.[MARKETPLACE_DOMAIN_NAME]/ </string> <string name="MarketplaceURL_CreateStore"> @@ -1246,6 +1284,18 @@ Pessoas com contas gratuitas não poderão acessar o Second Life no momento para <string name="InventoryOutboxNoItems"> Arraste as pastas para estas áreas e então clique em "Enviar para Mercado" para listar os itens para venda no [[MARKETPLACE_DASHBOARD_URL] Mercado]. </string> + <string name="InventoryOutboxInitializingTitle"> + Inicializando o Marketplace. + </string> + <string name="InventoryOutboxInitializing"> + Estamos acessando sua conta na [loja [MARKETPLACE_CREATE_STORE_URL] do Marketplace]. + </string> + <string name="InventoryOutboxErrorTitle"> + Erros do Marketplace. + </string> + <string name="InventoryOutboxError"> + A loja [[MARKETPLACE_CREATE_STORE_URL] no Marketplace] está retornando erros. + </string> <string name="Marketplace Error None"> Sem erros </string> @@ -1273,6 +1323,9 @@ Pessoas com contas gratuitas não poderão acessar o Second Life no momento para <string name="Open landmarks"> Marcos abertos </string> + <string name="Unconstrained"> + Sem limites + </string> <string name="no_transfer" value="(não transferÃvel)"/> <string name="no_modify" value="(não modificável)"/> <string name="no_copy" value="(não copiável)"/> @@ -1667,6 +1720,9 @@ Pessoas com contas gratuitas não poderão acessar o Second Life no momento para <string name="CompileQueueDownloadedCompiling"> Baixado, agora compilando </string> + <string name="CompileQueueServiceUnavailable"> + Serviço de compilação de scripts não disponÃvel + </string> <string name="CompileQueueScriptNotFound"> Script não encontrado no servidor. </string> diff --git a/indra/newview/skins/default/xui/ru/floater_lagmeter.xml b/indra/newview/skins/default/xui/ru/floater_lagmeter.xml new file mode 100644 index 0000000000..c420006a03 --- /dev/null +++ b/indra/newview/skins/default/xui/ru/floater_lagmeter.xml @@ -0,0 +1,151 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<floater name="floater_lagmeter" title="УРОВЕÐЬ ЛÐГОВ"> + <floater.string name="max_title_msg"> + Уровень лагов + </floater.string> + <floater.string name="max_width_px"> + 360 + </floater.string> + <floater.string name="min_title_msg"> + Лаг + </floater.string> + <floater.string name="min_width_px"> + 90 + </floater.string> + <floater.string name="client_text_msg"> + Клиент + </floater.string> + <floater.string name="client_frame_rate_critical_fps"> + 10 + </floater.string> + <floater.string name="client_frame_rate_warning_fps"> + 15 + </floater.string> + <floater.string name="client_frame_time_window_bg_msg"> + Ðормально, окно в фоне + </floater.string> + <floater.string name="client_frame_time_critical_msg"> + ЧаÑтота кадров клиента ниже [CLIENT_FRAME_RATE_CRITICAL] + </floater.string> + <floater.string name="client_frame_time_warning_msg"> + ЧаÑтота кадров клиента от [CLIENT_FRAME_RATE_CRITICAL] до [CLIENT_FRAME_RATE_WARNING] + </floater.string> + <floater.string name="client_frame_time_normal_msg"> + Ðормально + </floater.string> + <floater.string name="client_draw_distance_cause_msg"> + Ð’Ð¾Ð·Ð¼Ð¾Ð¶Ð½Ð°Ñ Ð¿Ñ€Ð¸Ñ‡Ð¸Ð½Ð°: дальноÑÑ‚ÑŒ отриÑовки Ñлишком велика + </floater.string> + <floater.string name="client_texture_loading_cause_msg"> + Ð’Ð¾Ð·Ð¼Ð¾Ð¶Ð½Ð°Ñ Ð¿Ñ€Ð¸Ñ‡Ð¸Ð½Ð°: загрузка изображений + </floater.string> + <floater.string name="client_texture_memory_cause_msg"> + Ð’Ð¾Ð·Ð¼Ð¾Ð¶Ð½Ð°Ñ Ð¿Ñ€Ð¸Ñ‡Ð¸Ð½Ð°: Ñлишком много изображений в памÑти + </floater.string> + <floater.string name="client_complex_objects_cause_msg"> + Ð’Ð¾Ð·Ð¼Ð¾Ð¶Ð½Ð°Ñ Ð¿Ñ€Ð¸Ñ‡Ð¸Ð½Ð°: Ñлишком много Ñложных объектов в Ñцене + </floater.string> + <floater.string name="network_text_msg"> + Сеть + </floater.string> + <floater.string name="network_packet_loss_critical_pct"> + 10 + </floater.string> + <floater.string name="network_packet_loss_warning_pct"> + 5 + </floater.string> + <floater.string name="network_packet_loss_critical_msg"> + Сеть терÑет более [NETWORK_PACKET_LOSS_CRITICAL]% пакетов + </floater.string> + <floater.string name="network_packet_loss_warning_msg"> + Сеть терÑет [NETWORK_PACKET_LOSS_WARNING]–[NETWORK_PACKET_LOSS_CRITICAL]% пакетов + </floater.string> + <floater.string name="network_performance_normal_msg"> + Ðормально + </floater.string> + <floater.string name="network_ping_critical_ms"> + 600 + </floater.string> + <floater.string name="network_ping_warning_ms"> + 300 + </floater.string> + <floater.string name="network_ping_critical_msg"> + Пинг ÑÐ¾ÐµÐ´Ð¸Ð½ÐµÐ½Ð¸Ñ Ð±Ð¾Ð»ÐµÐµ [NETWORK_PING_CRITICAL] Ð¼Ñ + </floater.string> + <floater.string name="network_ping_warning_msg"> + Пинг ÑÐ¾ÐµÐ´Ð¸Ð½ÐµÐ½Ð¸Ñ [NETWORK_PING_WARNING]–[NETWORK_PING_CRITICAL] Ð¼Ñ + </floater.string> + <floater.string name="network_packet_loss_cause_msg"> + Возможно, плохое Ñоединение, или параметр «Ширина канала» Ñлишком велик. + </floater.string> + <floater.string name="network_ping_cause_msg"> + Возможно, плохое Ñоединение или еÑÑ‚ÑŒ работающие файлообменные программы. + </floater.string> + <floater.string name="server_text_msg"> + Сервер + </floater.string> + <floater.string name="server_frame_rate_critical_fps"> + 20 + </floater.string> + <floater.string name="server_frame_rate_warning_fps"> + 30 + </floater.string> + <floater.string name="server_single_process_max_time_ms"> + 20 + </floater.string> + <floater.string name="server_frame_time_critical_msg"> + ЧаÑтота кадров Ñервера ниже [SERVER_FRAME_RATE_CRITICAL] + </floater.string> + <floater.string name="server_frame_time_warning_msg"> + ЧаÑтота кадров Ñервера [SERVER_FRAME_RATE_CRITICAL]–[SERVER_FRAME_RATE_WARNING] + </floater.string> + <floater.string name="server_frame_time_normal_msg"> + Ðормально + </floater.string> + <floater.string name="server_physics_cause_msg"> + Ð’Ð¾Ð·Ð¼Ð¾Ð¶Ð½Ð°Ñ Ð¿Ñ€Ð¸Ñ‡Ð¸Ð½Ð°: Ñлишком много физичеÑких объектов + </floater.string> + <floater.string name="server_scripts_cause_msg"> + Ð’Ð¾Ð·Ð¼Ð¾Ð¶Ð½Ð°Ñ Ð¿Ñ€Ð¸Ñ‡Ð¸Ð½Ð°: Ñлишком много Ñкриптовых объектов + </floater.string> + <floater.string name="server_net_cause_msg"> + Ð’Ð¾Ð·Ð¼Ð¾Ð¶Ð½Ð°Ñ Ð¿Ñ€Ð¸Ñ‡Ð¸Ð½Ð°: Ñлишком большой Ñетевой трафик + </floater.string> + <floater.string name="server_agent_cause_msg"> + Ð’Ð¾Ð·Ð¼Ð¾Ð¶Ð½Ð°Ñ Ð¿Ñ€Ð¸Ñ‡Ð¸Ð½Ð°: Ñлишком много людей в регионе + </floater.string> + <floater.string name="server_images_cause_msg"> + Ð’Ð¾Ð·Ð¼Ð¾Ð¶Ð½Ð°Ñ Ð¿Ñ€Ð¸Ñ‡Ð¸Ð½Ð°: Ñлишком много изображений + </floater.string> + <floater.string name="server_generic_cause_msg"> + Ð’Ð¾Ð·Ð¼Ð¾Ð¶Ð½Ð°Ñ Ð¿Ñ€Ð¸Ñ‡Ð¸Ð½Ð°: Ñервер Ñильно загружен + </floater.string> + <floater.string name="smaller_label"> + >> + </floater.string> + <floater.string name="bigger_label"> + << + </floater.string> + <button name="client_lagmeter" tool_tip="Уровень лагов клиента"/> + <text name="client"> + Клиент + </text> + <text name="client_text"> + Ðормально + </text> + <button name="network_lagmeter" tool_tip="Уровень лагов Ñети"/> + <text name="network"> + Сеть + </text> + <text name="network_text"> + Ðормально + </text> + <button name="server_lagmeter" tool_tip="Уровень лагов Ñервера"/> + <text name="server"> + Сервер + </text> + <text name="server_text"> + Ðормально + </text> + <button label=">>" name="minimize" tool_tip="Переключение размера"/> +</floater> diff --git a/indra/newview/skins/default/xui/ru/floater_region_restarting.xml b/indra/newview/skins/default/xui/ru/floater_region_restarting.xml new file mode 100644 index 0000000000..1b4c0e33dc --- /dev/null +++ b/indra/newview/skins/default/xui/ru/floater_region_restarting.xml @@ -0,0 +1,23 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<floater name="region_restarting" title="ПЕРЕЗÐПУСК РЕГИОÐÐ"> + <string name="RegionName"> + Регион, в котором вы находитеÑÑŒ ([NAME]), будет перезапущен. + +ЕÑли вы оÑтанетеÑÑŒ в Ñтом регионе, вы выйдете из ÑиÑтемы. + </string> + <string name="RestartSeconds"> + Секунд до перезапуÑка +[SECONDS] + </string> + <panel name="layout_panel_1"> + <text name="region_name"> + Регион, в котором вы находитеÑÑŒ (-длинное название региона-), будет перезапущен. + +ЕÑли вы оÑтанетеÑÑŒ в Ñтом регионе, вы выйдете из ÑиÑтемы. + </text> + <text name="restart_seconds"> + Секунд до перезапуÑка + 32767 + </text> + </panel> +</floater> diff --git a/indra/newview/skins/default/xui/ru/floater_scene_load_stats.xml b/indra/newview/skins/default/xui/ru/floater_scene_load_stats.xml new file mode 100644 index 0000000000..a101e62627 --- /dev/null +++ b/indra/newview/skins/default/xui/ru/floater_scene_load_stats.xml @@ -0,0 +1,64 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<floater name="Scene Load Statistics" title="СТÐТИСТИКРЗÐГРУЗКИ СЦЕÐ"> + <button label="Пауза" name="playpause"/> + <scroll_container name="statistics_scroll"> + <container_view name="statistics_view"> + <stat_view label="ОÑновной" name="basic"> + <stat_bar label="Разница в пикÑелах на кадр" name="frame difference"/> + <stat_bar label="Получены данные UDP" name="bandwidth"/> + <stat_bar label="Потери пакетов" name="packet_loss"/> + </stat_view> + <stat_view label="РаÑширенный" name="advanced"> + <stat_view label="ОтриÑовка" name="render"> + <stat_bar label="Ð’Ñего объектов" name="objs"/> + <stat_bar label="Ðовых объектов" name="newobjs"/> + <stat_bar label="ЧаÑтота попаданий в кÑш объектов" name="object_cache_hits"/> + </stat_view> + <stat_view label="ТекÑтура" name="texture"> + <stat_bar label="ЧаÑтота попаданий в кÑш" name="texture_cache_hits"/> + <stat_bar label="Задержка Ñ‡Ñ‚ÐµÐ½Ð¸Ñ ÐºÑша" name="texture_cache_read_latency"/> + <stat_bar label="Кол-во" name="numimagesstat"/> + <stat_bar label="Ðеобраб. изображений" name="numrawimagesstat"/> + </stat_view> + <stat_view label="Сеть" name="network"> + <stat_bar label="ВходÑщие пакеты" name="packetsinstat"/> + <stat_bar label="ИÑходÑщие пакеты" name="packetsoutstat"/> + <stat_bar label="Объекты" name="objectdatareceived"/> + <stat_bar label="ТекÑтура" name="texturedatareceived"/> + <stat_bar label="Ðктив" name="assetudpdatareceived"/> + <stat_bar label="Слои" name="layersdatareceived"/> + <stat_bar label="ДейÑтвительный ввод" name="messagedatain"/> + <stat_bar label="ДейÑтвительный вывод" name="messagedataout"/> + <stat_bar label="Ожидающие операции VFS" name="vfspendingoperations"/> + </stat_view> + </stat_view> + <stat_view label="СимулÑтор" name="sim"> + <stat_bar label="Объекты" name="simobjects"/> + <stat_bar label="Ðктивные объекты" name="simactiveobjects"/> + <stat_bar label="Ðктивные Ñкрипты" name="simactivescripts"/> + <stat_bar label="ВходÑщие пакеты" name="siminpps"/> + <stat_bar label="ИÑходÑщие пакеты" name="simoutpps"/> + <stat_bar label="Отложенные загрузки" name="simpendingdownloads"/> + <stat_bar label="Отложенные передачи" name="simpendinguploads"/> + <stat_bar label="Общий нераÑпакованный объем (байт)" name="simtotalunackedbytes"/> + <stat_view label="Ð’Ñ€ÐµÐ¼Ñ (мÑ)" name="simperf"> + <stat_bar label="Общее Ð²Ñ€ÐµÐ¼Ñ ÐºÐ°Ð´Ñ€Ð°" name="simframemsec"/> + <stat_bar label="ЧиÑтое времÑ" name="simnetmsec"/> + <stat_bar label="Ð’Ñ€ÐµÐ¼Ñ Ð½Ð° физику" name="simsimphysicsmsec"/> + <stat_bar label="Ð’Ñ€ÐµÐ¼Ñ Ð½Ð° ÑимулÑцию" name="simsimothermsec"/> + <stat_bar label="Ð’Ñ€ÐµÐ¼Ñ Ð½Ð° клиент" name="simagentmsec"/> + <stat_bar label="Ð’Ñ€ÐµÐ¼Ñ Ð½Ð° изображениÑ" name="simimagesmsec"/> + <stat_bar label="Ð’Ñ€ÐµÐ¼Ñ Ð½Ð° Ñкрипт" name="simscriptmsec"/> + <stat_bar label="Резервное времÑ" name="simsparemsec"/> + <stat_view label="Данные времени (мÑ)" name="timedetails"> + <stat_bar label="Шаг физики" name="simsimphysicsstepmsec"/> + <stat_bar label="Обновить физ. формы" name="simsimphysicsshapeupdatemsec"/> + <stat_bar label="Физика - прочее" name="simsimphysicsothermsec"/> + <stat_bar label="Ð’Ñ€ÐµÐ¼Ñ Ñна" name="simsleepmsec"/> + <stat_bar label="Ð’Ñ€ÐµÐ¼Ñ Ð²Ð²Ð¾Ð´Ð°/вывода" name="simpumpiomsec"/> + </stat_view> + </stat_view> + </stat_view> + </container_view> + </scroll_container> +</floater> diff --git a/indra/newview/skins/default/xui/ru/floater_stats.xml b/indra/newview/skins/default/xui/ru/floater_stats.xml index 46426495dc..33a14adca9 100755 --- a/indra/newview/skins/default/xui/ru/floater_stats.xml +++ b/indra/newview/skins/default/xui/ru/floater_stats.xml @@ -4,7 +4,7 @@ <container_view name="statistics_view"> <stat_view label="БазоваÑ" name="basic"> <stat_bar label="Кадров/Ñ" name="fps"/> - <stat_bar label="Ширина канала" name="bandwidth"/> + <stat_bar label="Получены данные UDP" name="bandwidth"/> <stat_bar label="Потери пакетов" name="packet_loss"/> <stat_bar label="Пинг" name="ping"/> </stat_view> @@ -15,6 +15,9 @@ <stat_bar label="Ð’Ñего объектов" name="objs"/> <stat_bar label="Ðовых объектов" name="newobjs"/> <stat_bar label="ЧаÑтота попаданий в кÑш объектов" name="object_cache_hits"/> + <stat_bar label="Выполненные запроÑÑ‹ на Ñмыкание" name="occlusion_queries"/> + <stat_bar label="Объекты Ñомкнуты" name="occluded"/> + <stat_bar label="Объект разомкнут" name="unoccluded"/> </stat_view> <stat_view label="ТекÑтура" name="texture"> <stat_bar label="ЧаÑтота попаданий в кÑш" name="texture_cache_hits"/> @@ -26,15 +29,32 @@ <stat_bar label="ÐÐµÑ„Ð¾Ñ€Ð¼Ð°Ñ‚Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð½Ð°Ñ Ð¿Ð°Ð¼ÑÑ‚ÑŒ" name="rawmemstat"/> <stat_bar label="Ограничение памÑти" name="glboundmemstat"/> </stat_view> + <stat_view label="ИÑпользование памÑти" name="memory"> + <stat_bar label="LLTrace" name="LLTrace"/> + <stat_bar label="Ð˜Ð½Ñ‚ÐµÑ€Ñ„ÐµÐ¹Ñ Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ" name="LLView"/> + <stat_bar label="Шрифты" name="LLFontFreetype"/> + <stat_bar label="Инвентарь" name="LLInventoryObject"/> + <stat_bar label="Объекты клиента" name="LLViewerObject"/> + <stat_bar label="Данные группы октадеревьев" name="LLViewerOctreeGroup"/> + <stat_bar label="Данные октадерева" name="LLViewerOctreeEntry"/> + <stat_bar label="КÑш объектов клиента" name="LLVOCacheEntry"/> + <stat_bar label="РиÑуемые предметы" name="LLDrawable"/> + <stat_bar label="Данные лица" name="LLFace"/> + <stat_bar label="Ð˜Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ð¸Ñ Ð¾Ñ‚Ñ€Ð¸Ñовки" name="LLDrawInfo"/> + <stat_bar label="Данные текÑтуры" name="LLTexture"/> + <stat_bar label="Данные изображениÑ" name="LLImage"/> + <stat_bar label="Данные Ð¸Ð·Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð¸Ñ GL" name="LLImageGL"/> + <stat_bar label="Вершинные буферы" name="LLVertexBuffer"/> + </stat_view> <stat_view label="Сеть" name="network"> <stat_bar label="ВходÑщие пакеты" name="packetsinstat"/> <stat_bar label="ИÑходÑщие пакеты" name="packetsoutstat"/> - <stat_bar label="Объекты" name="objectkbitstat"/> - <stat_bar label="ТекÑтура" name="texturekbitstat"/> - <stat_bar label="Ðктив" name="assetkbitstat"/> - <stat_bar label="Слои" name="layerskbitstat"/> - <stat_bar label="ДейÑтвительный ввод" name="actualinkbitstat"/> - <stat_bar label="ДейÑтвительный вывод" name="actualoutkbitstat"/> + <stat_bar label="Объекты" name="objectdatareceived"/> + <stat_bar label="ТекÑтура" name="texturedatareceived"/> + <stat_bar label="Ðктив" name="assetudpdatareceived"/> + <stat_bar label="Слои" name="layersdatareceived"/> + <stat_bar label="ДейÑтвительный ввод" name="messagedatain"/> + <stat_bar label="ДейÑтвительный вывод" name="messagedataout"/> <stat_bar label="Ожидающие операции VFS" name="vfspendingoperations"/> </stat_view> </stat_view> @@ -64,8 +84,8 @@ <stat_bar label="ИÑходÑщие пакеты" name="simoutpps"/> <stat_bar label="Отложенные загрузки" name="simpendingdownloads"/> <stat_bar label="Отложенные передачи" name="simpendinguploads"/> - <stat_bar label="Общий нераÑпакованный объем (байт)" name="simtotalunackedbytes"/> - <stat_view label="Ð’Ñ€ÐµÐ¼Ñ (мÑ)" name="simperf"> + <stat_bar label="Общий неподтвержденный объем" name="simtotalunackedbytes"/> + <stat_view label="ВремÑ" name="simperf"> <stat_bar label="Общее Ð²Ñ€ÐµÐ¼Ñ ÐºÐ°Ð´Ñ€Ð°" name="simframemsec"/> <stat_bar label="ЧиÑтое времÑ" name="simnetmsec"/> <stat_bar label="Ð’Ñ€ÐµÐ¼Ñ Ð½Ð° физику" name="simsimphysicsmsec"/> @@ -74,7 +94,7 @@ <stat_bar label="Ð’Ñ€ÐµÐ¼Ñ Ð½Ð° изображениÑ" name="simimagesmsec"/> <stat_bar label="Ð’Ñ€ÐµÐ¼Ñ Ð½Ð° Ñкрипт" name="simscriptmsec"/> <stat_bar label="Резервное времÑ" name="simsparemsec"/> - <stat_view label="Данные времени (мÑ)" name="timedetails"> + <stat_view label="Данные времени" name="timedetails"> <stat_bar label="Шаг физики" name="simsimphysicsstepmsec"/> <stat_bar label="Обновить физ. формы" name="simsimphysicsshapeupdatemsec"/> <stat_bar label="Физика - прочее" name="simsimphysicsothermsec"/> diff --git a/indra/newview/skins/default/xui/ru/menu_avatar_icon.xml b/indra/newview/skins/default/xui/ru/menu_avatar_icon.xml index ac2b4be003..049001e8c3 100755 --- a/indra/newview/skins/default/xui/ru/menu_avatar_icon.xml +++ b/indra/newview/skins/default/xui/ru/menu_avatar_icon.xml @@ -2,6 +2,7 @@ <menu name="Avatar Icon Menu"> <menu_item_call label="Открыть профиль" name="Show Profile"/> <menu_item_call label="Отправить Ñообщение..." name="Send IM"/> + <menu_item_call label="Ð—Ð°Ð¿Ñ€Ð¾Ñ Ñ‚ÐµÐ»ÐµÐ¿Ð¾Ñ€Ñ‚Ð°Ñ†Ð¸Ð¸" name="Request Teleport"/> <menu_item_call label="Добавить в друзьÑ..." name="Add Friend"/> <menu_item_call label="Удалить из друзей..." name="Remove Friend"/> </menu> diff --git a/indra/newview/skins/default/xui/ru/menu_inventory.xml b/indra/newview/skins/default/xui/ru/menu_inventory.xml index 37ee19fc1d..308549c254 100755 --- a/indra/newview/skins/default/xui/ru/menu_inventory.xml +++ b/indra/newview/skins/default/xui/ru/menu_inventory.xml @@ -70,6 +70,7 @@ <menu_item_call label="ВоÑпроизвеÑти" name="Sound Play"/> <menu_item_call label="Копировать URL SL" name="url_copy"/> <menu_item_call label="О закладке" name="About Landmark"/> + <menu_item_call label="Показать на карте" name="show_on_map"/> <menu_item_call label="Проиграть Ð´Ð»Ñ Ð²Ñех" name="Animation Play"/> <menu_item_call label="Проиграть Ð´Ð»Ñ ÑебÑ" name="Animation Audition"/> <menu_item_call label="Отправить IM-Ñообщение" name="Send Instant Message"/> diff --git a/indra/newview/skins/default/xui/ru/menu_login.xml b/indra/newview/skins/default/xui/ru/menu_login.xml index 835c4e186e..885f6195b6 100755 --- a/indra/newview/skins/default/xui/ru/menu_login.xml +++ b/indra/newview/skins/default/xui/ru/menu_login.xml @@ -5,7 +5,15 @@ <menu_item_call label="Выход из [APP_NAME]" name="Quit"/> </menu> <menu label="Справка" name="Help"> - <menu_item_call label="Справка [SECOND_LIFE]" name="Second Life Help"/> + <menu_item_call label="ИнÑтрукции..." name="How To"/> + <menu_item_call label="Краткое руководÑтво" name="Quickstart"/> + <menu_item_call label="База знаний" name="Knowledge Base"/> + <menu_item_call label="Wiki" name="Wiki"/> + <menu_item_call label="Форумы ÑообщеÑтва" name="Community Forums"/> + <menu_item_call label="Портал поддержки" name="Support portal"/> + <menu_item_call label="ÐовоÑти [SECOND_LIFE]" name="Second Life News"/> + <menu_item_call label="Блоги [SECOND_LIFE]" name="Second Life Blogs"/> + <menu_item_call label="Сообщить об ошибке" name="Report Bug"/> <menu_item_call label="О [APP_NAME]" name="About Second Life"/> </menu> <menu_item_check label="Показать меню отладки" name="Show Debug Menu"/> diff --git a/indra/newview/skins/default/xui/ru/menu_teleport_history_item.xml b/indra/newview/skins/default/xui/ru/menu_teleport_history_item.xml index 6a22fd00dc..f495d27bf3 100755 --- a/indra/newview/skins/default/xui/ru/menu_teleport_history_item.xml +++ b/indra/newview/skins/default/xui/ru/menu_teleport_history_item.xml @@ -2,5 +2,5 @@ <context_menu name="Teleport History Item Context Menu"> <menu_item_call label="Телепорт" name="Teleport"/> <menu_item_call label="ИнформациÑ" name="More Information"/> - <menu_item_call label="Копировать в буфер обмена" name="CopyToClipboard"/> + <menu_item_call label="Копировать URL SL" name="CopyToClipboard"/> </context_menu> diff --git a/indra/newview/skins/default/xui/ru/menu_viewer.xml b/indra/newview/skins/default/xui/ru/menu_viewer.xml index fcb7c4e531..38c31b27b6 100755 --- a/indra/newview/skins/default/xui/ru/menu_viewer.xml +++ b/indra/newview/skins/default/xui/ru/menu_viewer.xml @@ -70,11 +70,11 @@ <menu_item_check label="Меню «Дополнительно»" name="Show Advanced Menu"/> </menu> <menu label="Солнце" name="Sun"> - <menu_item_call label="ВоÑход" name="Sunrise"/> - <menu_item_call label="Полдень" name="Noon"/> - <menu_item_call label="Закат" name="Sunset"/> - <menu_item_call label="Полночь" name="Midnight"/> - <menu_item_call label="ИÑпользовать наÑтройки региона" name="Use Region Settings"/> + <menu_item_check label="ВоÑход" name="Sunrise"/> + <menu_item_check label="Полдень" name="Noon"/> + <menu_item_check label="Закат" name="Sunset"/> + <menu_item_check label="Полночь" name="Midnight"/> + <menu_item_check label="ИÑпользовать наÑтройки региона" name="Use Region Settings"/> </menu> <menu label="Редактор Ñреды" name="Environment Editor"> <menu_item_call label="ÐаÑтройки Ñреды..." name="Environment Settings"/> @@ -162,7 +162,6 @@ </menu> <menu label="Справка" name="Help"> <menu_item_call label="ИнÑтрукции..." name="How To"/> - <menu_item_call label="Справка по [SECOND_LIFE]" name="Second Life Help"/> <menu_item_call label="Жалоба" name="Report Abuse"/> <menu_item_call label="Сообщить об ошибке" name="Report Bug"/> <menu_item_call label="О [APP_NAME]" name="About Second Life"/> @@ -178,6 +177,7 @@ <menu label="ПроизводительноÑÑ‚ÑŒ" name="Performance Tools"> <menu_item_call label="Запаздывание" name="Lag Meter"/> <menu_item_check label="СтатиÑтика" name="Statistics Bar"/> + <menu_item_call label="СтатиÑтика загрузки Ñцен" name="Scene Load Statistics"/> <menu_item_check label="Показать Ð²ÐµÑ Ð¾Ñ‚Ñ€Ð¸Ñовки Ð´Ð»Ñ Ð°Ð²Ð°Ñ‚Ð°Ñ€Ð¾Ð²" name="Avatar Rendering Cost"/> </menu> <menu label="ПодÑветка и видимоÑÑ‚ÑŒ" name="Highlighting and Visibility"> @@ -240,6 +240,7 @@ <menu_item_check label="Оперативные таймеры" name="Fast Timers"/> <menu_item_check label="ПамÑÑ‚ÑŒ" name="Memory"/> <menu_item_check label="СтатиÑтика по Ñцене" name="Scene Statistics"/> + <menu_item_check label="Монитор загрузки Ñцен" name="Scene Loading Monitor"/> <menu_item_call label="КонÑоль отладки Ð¸Ð·Ð²Ð»ÐµÑ‡ÐµÐ½Ð¸Ñ Ñ‚ÐµÐºÑтур" name="Texture Fetch Debug Console"/> <menu_item_call label="Данные о регионе на конÑоль отладки" name="Region Info to Debug Console"/> <menu_item_call label="Данны о группе на конÑоль отладки" name="Group Info to Debug Console"/> @@ -276,6 +277,7 @@ <menu_item_check label="ПериодичеÑкое замедление кадров" name="Periodic Slow Frame"/> <menu_item_check label="ТеÑÑ‚ кадров" name="Frame Test"/> <menu_item_call label="Профиль кадра" name="Frame Profile"/> + <menu_item_call label="ТеÑÑ‚" name="Benchmark"/> </menu> <menu label="Визуализировать метаданные" name="Render Metadata"> <menu_item_check label="Рамки" name="Bounding Boxes"/> @@ -294,6 +296,7 @@ <menu_item_check label="Очередь поÑтроителÑ" name="Build Queue"/> <menu_item_check label="ОÑвещение" name="Lights"/> <menu_item_check label="ÐšÐ°Ñ€ÐºÐ°Ñ Ñтолкновений" name="Collision Skeleton"/> + <menu_item_check label="СуÑтавы" name="Joints"/> <menu_item_check label="Лучи" name="Raycast"/> <menu_item_check label="ÐÐ°Ð¿Ñ€Ð°Ð²Ð»ÐµÐ½Ð¸Ñ Ð²ÐµÑ‚Ñ€Ð°" name="Wind Vectors"/> <menu_item_check label="СложноÑÑ‚ÑŒ визуализации" name="rendercomplexity"/> @@ -326,6 +329,7 @@ <menu_item_check label="Ð’Ð¸Ð·ÑƒÐ°Ð»Ð¸Ð·Ð°Ñ†Ð¸Ñ Ð¿Ñ€Ð¸Ñоединенных иÑточников Ñвета" name="Render Attached Lights"/> <menu_item_check label="Ð’Ð¸Ð·ÑƒÐ°Ð»Ð¸Ð·Ð°Ñ†Ð¸Ñ Ð¿Ñ€Ð¸Ñоединенных чаÑтиц" name="Render Attached Particles"/> <menu_item_check label="ПарÑщие ÑветÑщиеÑÑ Ð¾Ð±ÑŠÐµÐºÑ‚Ñ‹" name="Hover Glow Objects"/> + <menu_item_call label="Ðемедленно очиÑтить кÑш" name="Cache Clear"/> </menu> <menu label="Сеть" name="Network"> <menu_item_check label="ПриоÑтановить клиент" name="AgentPause"/> @@ -358,7 +362,6 @@ <menu_item_call label="Вывод ÑредÑтва фокуÑировки" name="Dump Focus Holder"/> <menu_item_call label="Печать информации о выбранных объектах" name="Print Selected Object Info"/> <menu_item_call label="Печать информации об агенте" name="Print Agent Info"/> - <menu_item_check label="КонÑоль отладки региона" name="Region Debug Console"/> <menu_item_check label="Отладка SelectMgr" name="Debug SelectMgr"/> <menu_item_check label="Отладка щелчков мышью" name="Debug Clicks"/> <menu_item_check label="Отладка обзора" name="Debug Views"/> diff --git a/indra/newview/skins/default/xui/ru/notifications.xml b/indra/newview/skins/default/xui/ru/notifications.xml index 1dc8202b00..336a97f35a 100755 --- a/indra/newview/skins/default/xui/ru/notifications.xml +++ b/indra/newview/skins/default/xui/ru/notifications.xml @@ -114,13 +114,13 @@ <usetemplate name="okbutton" yestext="OK"/> </notification> <notification name="OutboxImportFailed"> - Ошибка при передаче + Ðе удалоÑÑŒ передать, ошибка: «[ERROR_CODE]» Папки не отправлены в торговый центр из-за ошибки ÑиÑтемы или Ñети. Повторите попытку позже. <usetemplate name="okbutton" yestext="OK"/> </notification> <notification name="OutboxInitFailed"> - Ошибка инициализации торгового центра + Ðе удалоÑÑŒ инициализировать торговый центр, ошибка: «[ERROR_CODE]» Ðе удалоÑÑŒ инициализировать торговый центр из-за ошибки ÑиÑтемы или Ñети. Повторите попытку позже. <usetemplate name="okbutton" yestext="OK"/> @@ -1731,6 +1731,10 @@ http://secondlife.com/download. Ð’Ñ‹ дейÑтвительно хотите телепортироватьÑÑ Ð² <nolink>[LOCATION]</nolink>? <usetemplate ignoretext="Подтверждать телепортацию на закладку" name="okcancelignore" notext="Отмена" yestext="ТелепортациÑ"/> </notification> + <notification name="TeleportViaSLAPP"> + Ð’Ñ‹ дейÑтвительно хотите телепортироватьÑÑ Ð² <nolink>[LOCATION]</nolink>? + <usetemplate ignoretext="Подтверждать телепортацию через SLAPP" name="okcancelignore" notext="Отмена" yestext="ТелепортациÑ"/> + </notification> <notification name="TeleportToPick"> ТелепортироватьÑÑ Ð² [PICK]? <usetemplate ignoretext="Подтверждать телепортацию на меÑто в подборке" name="okcancelignore" notext="Отмена" yestext="ТелепортациÑ"/> @@ -1940,6 +1944,9 @@ http://secondlife.com/download. <notification name="ProblemAddingEstateManager"> Проблема при добавлении нового менеджера землевладениÑ. Возможно, в одном или неÑкольких землевладениÑÑ… ÑпиÑок менеджеров уже заполнен. </notification> + <notification name="ProblemAddingEstateBanManager"> + Ðевозможно добавить землевладельца или менеджера в ÑпиÑок запрета доÑтупа. + </notification> <notification name="ProblemAddingEstateGeneric"> Проблема при добавлении в Ñтот ÑпиÑок землевладениÑ. Возможно, в одном или неÑкольких землевладениÑÑ… ÑпиÑок уже заполнен. </notification> @@ -3029,7 +3036,7 @@ http://secondlife.com/download. Со Ñледующими жителÑми: -[RESIDENTS] +<nolink>[RESIDENTS]</nolink> <usetemplate name="okcancelbuttons" notext="Отмена" yestext="OK"/> </notification> <notification name="ShareFolderConfirmation"> @@ -3041,7 +3048,7 @@ http://secondlife.com/download. Со Ñледующими жителÑми: -[RESIDENTS] +<nolink>[RESIDENTS]</nolink> <usetemplate name="okcancelbuttons" notext="Отмена" yestext="ОК"/> </notification> <notification name="ItemsShared"> @@ -3497,10 +3504,6 @@ http://secondlife.com/download. <notification name="EjectComingSoon"> Вам запрещено здеÑÑŒ приÑутÑтвовать; у Ð²Ð°Ñ ÐµÑÑ‚ÑŒ [EJECT_TIME] Ñек, чтобы покинуть Ñто меÑто. </notification> - <notification name="NoEnterServerFull"> - Вам нет доÑтупа в Ñтот регион: -Ñерпер переполнен. - </notification> <notification name="SaveBackToInvDisabled"> Сохранение в инвентаре отключено. </notification> @@ -3689,6 +3692,9 @@ http://secondlife.com/download. <notification name="LinkFailedTooMuchPhysics"> Объект иÑпользует Ñлишком много реÑурÑов физики -- динамичеÑкое поведение отключено. </notification> + <notification name="EstateManagerFailedllTeleportHome"> + Объект «[OBJECT_NAME]» по адреÑу [SLURL] не может телепортировать менеджеров землевладений домой. + </notification> <notification name="TeleportedHomeByObjectOnParcel"> Ð’Ñ‹ были телепортированы домой объектом «[OBJECT_NAME]» на учаÑтке «[PARCEL_NAME]» </notification> @@ -3879,13 +3885,18 @@ http://secondlife.com/download. Выбрано недоÑтаточно арендуемых учаÑтков Ð´Ð»Ñ Ð²ÑтуплениÑ. </notification> <notification name="CantDivideLandMultipleParcelsSelected"> - ÐÐµÐ»ÑŒÐ·Ñ Ñ€Ð°Ð·Ð´ÐµÐ»Ð¸Ñ‚ÑŒ землю.\nВыбрано больше одного учаÑтка.\nВыберите меньшую территорию. + Ðевозможно разделить землю. +Выбрано неÑколько учаÑтков. +Попробуйте выбрать облаÑÑ‚ÑŒ поменьше. </notification> <notification name="CantDivideLandCantFindParcel"> - ÐÐµÐ»ÑŒÐ·Ñ Ñ€Ð°Ð·Ð´ÐµÐ»Ð¸Ñ‚ÑŒ землю.\nÐе удалоÑÑŒ найти учаÑток.\nСообщите об Ñтой неполадке: Справка -> Сообщить об ошибке... + Ðевозможно разделить землю. +Ðе удаетÑÑ Ð½Ð°Ð¹Ñ‚Ð¸ учаÑток. +Сообщите об Ñтом: Справка -> Сообщить об ошибке... </notification> <notification name="CantDivideLandWholeParcelSelected"> - Ðевозможно разделить землю. Выбран веÑÑŒ учаÑток.\nПопробуйте выбрать территорию поменьше. + Ðевозможно разделить землю. Выбран веÑÑŒ учаÑток. +Попробуйте выбрать облаÑÑ‚ÑŒ поменьше. </notification> <notification name="LandHasBeenDivided"> Ð—ÐµÐ¼Ð»Ñ Ñ€Ð°Ð·Ð´ÐµÐ»ÐµÐ½Ð°. @@ -4025,4 +4036,8 @@ http://secondlife.com/download. Ðевозможно перемеÑтить файлы. ВоÑÑтановлен прежний путь. <usetemplate ignoretext="Ðевозможно перемеÑтить файлы. ВоÑÑтановлен прежний путь." name="okignore" yestext="OK"/> </notification> + <notification name="ChatHistoryIsBusyAlert"> + Файл журнала чата занÑÑ‚ предыдущей операцией. Повторите попытку через неÑколько минут или выберите чат Ñ Ð´Ñ€ÑƒÐ³Ð¸Ð¼ лицом. + <usetemplate name="okbutton" yestext="OK"/> + </notification> </notifications> diff --git a/indra/newview/skins/default/xui/ru/panel_group_info_sidetray.xml b/indra/newview/skins/default/xui/ru/panel_group_info_sidetray.xml index d8cf1b4756..16aaa71268 100755 --- a/indra/newview/skins/default/xui/ru/panel_group_info_sidetray.xml +++ b/indra/newview/skins/default/xui/ru/panel_group_info_sidetray.xml @@ -20,7 +20,7 @@ <layout_panel name="group_accordions"> <accordion name="groups_accordion"> <accordion_tab name="group_general_tab" title="Общие"/> - <accordion_tab name="group_roles_tab" title="Роли"/> + <accordion_tab name="group_roles_tab" title="Роли и учаÑтники"/> <accordion_tab name="group_notices_tab" title="УведомлениÑ"/> <accordion_tab name="group_land_tab" title="ЗемлÑ/активы"/> </accordion> diff --git a/indra/newview/skins/default/xui/ru/panel_group_roles.xml b/indra/newview/skins/default/xui/ru/panel_group_roles.xml index c57f21679f..b497cc5583 100755 --- a/indra/newview/skins/default/xui/ru/panel_group_roles.xml +++ b/indra/newview/skins/default/xui/ru/panel_group_roles.xml @@ -21,6 +21,7 @@ <name_list.columns label="УчаÑтник" name="name"/> <name_list.columns label="Вклад" name="donated"/> <name_list.columns label="СтатуÑ" name="online"/> + <name_list.columns label="Роль" name="title"/> </name_list> <button label="ПриглаÑить" name="member_invite"/> <button label="Выкинуть" name="member_eject"/> diff --git a/indra/newview/skins/default/xui/ru/panel_region_debug.xml b/indra/newview/skins/default/xui/ru/panel_region_debug.xml index 4be1e781fa..d294a9e22e 100755 --- a/indra/newview/skins/default/xui/ru/panel_region_debug.xml +++ b/indra/newview/skins/default/xui/ru/panel_region_debug.xml @@ -28,7 +28,8 @@ <check_box label="С каждого региона Ñтого землевладениÑ" name="return_estate_wide" tool_tip="ВозвращаютÑÑ Ð¾Ð±ÑŠÐµÐºÑ‚Ñ‹ Ñо вÑех регионов, образующих Ñто землевладение"/> <button label="Возврат" name="return_btn"/> <button label="Самые активные учаÑтники Ñтолкновений..." name="top_colliders_btn" tool_tip="СпиÑок объектов, Ð´Ð»Ñ ÐºÐ¾Ñ‚Ð¾Ñ€Ñ‹Ñ… ÑÑ‚Ð¾Ð»ÐºÐ½Ð¾Ð²ÐµÐ½Ð¸Ñ Ð½Ð°Ð¸Ð±Ð¾Ð»ÐµÐµ вероÑтны"/> - <button label="СпиÑок лучших Ñкриптов..." name="top_scripts_btn" tool_tip="Объекты, в которых Ñкрипты выполнÑÑŽÑ‚ÑÑ Ð´Ð¾Ð»ÑŒÑˆÐµ вÑего"/> <button label="Перезагрузить регион" name="restart_btn" tool_tip="ОтÑчитать 2 минуты и перезагрузить регион"/> + <button label="СпиÑок лучших Ñкриптов..." name="top_scripts_btn" tool_tip="Объекты, в которых Ñкрипты выполнÑÑŽÑ‚ÑÑ Ð´Ð¾Ð»ÑŒÑˆÐµ вÑего"/> <button label="Отменить перезапуÑк" name="cancel_restart_btn" tool_tip="Отменить перезапуÑк региона"/> + <button label="КонÑоль отладки региона" name="region_debug_console_btn" tool_tip="Открыть конÑоль отладки региона"/> </panel> diff --git a/indra/newview/skins/default/xui/ru/panel_region_general.xml b/indra/newview/skins/default/xui/ru/panel_region_general.xml index 8559be6c9e..8b4a127d7e 100755 --- a/indra/newview/skins/default/xui/ru/panel_region_general.xml +++ b/indra/newview/skins/default/xui/ru/panel_region_general.xml @@ -20,12 +20,12 @@ </text> <check_box label="Запретить терраформирование" name="block_terraform_check"/> <check_box label="Запретить полеты" name="block_fly_check"/> + <check_box label="Запретить пролет над учаÑтком" name="block_fly_over_check" tool_tip="ПоднÑÑ‚ÑŒ проверку доÑтупа вверх Ð´Ð»Ñ Ð¿Ñ€ÐµÐ´Ð¾Ñ‚Ð²Ñ€Ð°Ñ‰ÐµÐ½Ð¸Ñ Ð¿Ñ€Ð¾Ð»ÐµÑ‚Ð° над учаÑтком"/> <check_box label="Разрешить повреждениÑ" name="allow_damage_check"/> <check_box label="Запретить толкание" name="restrict_pushobject"/> <check_box label="Разрешить перепродажу земли" name="allow_land_resell_check"/> <check_box label="Разрешить объединение/разделение земли" name="allow_parcel_changes_check"/> <check_box label="Ðе показывать землю в поиÑке" name="block_parcel_search_check" tool_tip="Отображать регион и его учаÑтки в результатах поиÑка"/> - <check_box label="Разрешить меши-объекты" name="mesh_rez_enabled_check" tool_tip="Разрешить жителÑм выкладывать меши в Ñтом регионе"/> <spinner label="Лимит агентов" name="agent_limit_spin"/> <spinner label="Льгота Ð´Ð»Ñ Ð¾Ð±ÑŠÐµÐºÑ‚Ð°" name="object_bonus_spin"/> <text label="ДозволенноÑÑ‚ÑŒ" name="access_text"> diff --git a/indra/newview/skins/default/xui/ru/sidepanel_inventory.xml b/indra/newview/skins/default/xui/ru/sidepanel_inventory.xml index 1741f63074..725b680050 100755 --- a/indra/newview/skins/default/xui/ru/sidepanel_inventory.xml +++ b/indra/newview/skins/default/xui/ru/sidepanel_inventory.xml @@ -28,13 +28,13 @@ <button label="Профиль" name="info_btn" tool_tip="Показать профиль объекта"/> </layout_panel> <layout_panel name="share_btn_lp"> - <button label="ПоделитьÑÑ" name="share_btn" tool_tip="ПоделитьÑÑ Ð²ÐµÑ‰ÑŒÑŽ из инвентарÑ"/> + <button label="ПоделитьÑÑ" name="share_btn" tool_tip="ПоделитьÑÑ Ð¾Ð±ÑŠÐµÐºÑ‚Ð¾Ð¼ из инвентарÑ"/> </layout_panel> <layout_panel name="shop_btn_lp"> - <button label="Торговый центр" name="shop_btn" tool_tip="Открыть Ñтраницу торгового центра"/> + <button label="Купить" name="shop_btn" tool_tip="Открыть Ñтраницу торгового центра"/> <button label="Ðадеть" name="wear_btn" tool_tip="Ðадеть выбранный коÑтюм"/> - <button label="Проиграть" name="play_btn"/> - <button label="Телепорт" name="teleport_btn" tool_tip="ТелепортироватьÑÑ Ð² выбранную облаÑÑ‚ÑŒ"/> + <button label="Играть" name="play_btn"/> + <button label="ТелепортациÑ" name="teleport_btn" tool_tip="ТелепортироватьÑÑ Ð² выбранную облаÑÑ‚ÑŒ"/> </layout_panel> </layout_stack> </panel> diff --git a/indra/newview/skins/default/xui/ru/strings.xml b/indra/newview/skins/default/xui/ru/strings.xml index 8faf834f8f..be5a8d95eb 100755 --- a/indra/newview/skins/default/xui/ru/strings.xml +++ b/indra/newview/skins/default/xui/ru/strings.xml @@ -37,6 +37,45 @@ <string name="StartupRequireDriverUpdate"> Ошибка инициализации графики. Обновите графичеÑкий драйвер! </string> + <string name="AboutHeader"> + [APP_NAME] [VIEWER_VERSION_0].[VIEWER_VERSION_1].[VIEWER_VERSION_2] ([VIEWER_VERSION_3]) [BUILD_DATE] [BUILD_TIME] ([CHANNEL]) +[[VIEWER_RELEASE_NOTES_URL] [ReleaseNotes]] + </string> + <string name="AboutCompiler"> + ИÑпользован компилÑтор [COMPILER], верÑÐ¸Ñ [COMPILER_VERSION] + </string> + <string name="AboutPosition"> + Ð’Ñ‹ в точке [POSITION_LOCAL_0,number,1], [POSITION_LOCAL_1,number,1], [POSITION_LOCAL_2,number,1] в регионе «[REGION]», раÑположенном на <nolink>[HOSTNAME]</nolink> ([HOSTIP]) +SLURL: <nolink>[SLURL]</nolink> +(глобальные координаты [POSITION_0,number,1], [POSITION_1,number,1], [POSITION_2,number,1]) +[SERVER_VERSION] +[SERVER_RELEASE_NOTES_URL] + </string> + <string name="AboutSystem"> + ЦП: [CPU] +ПамÑÑ‚ÑŒ: [MEMORY_MB] МБ +ВерÑÐ¸Ñ ÐžÐ¡: [OS_VERSION] +Производитель графичеÑкой платы: [GRAPHICS_CARD_VENDOR] +ГрафичеÑÐºÐ°Ñ Ð¿Ð»Ð°Ñ‚Ð°: [GRAPHICS_CARD] + </string> + <string name="AboutDriver"> + ВерÑÐ¸Ñ Ð³Ñ€Ð°Ñ„Ð¸Ñ‡ÐµÑкого драйвера Windows: [GRAPHICS_DRIVER_VERSION] + </string> + <string name="AboutLibs"> + ВерÑÐ¸Ñ OpenGL: [OPENGL_VERSION] + +ВерÑÐ¸Ñ libcurl: [LIBCURL_VERSION] +ВерÑÐ¸Ñ Ð´ÐµÐºÐ¾Ð´ÐµÑ€Ð° J2C: [J2C_VERSION] +ВерÑÐ¸Ñ Ð´Ñ€Ð°Ð¹Ð²ÐµÑ€Ð° звука: [AUDIO_DRIVER_VERSION] +ВерÑÐ¸Ñ Qt Webkit: [QT_WEBKIT_VERSION] +ВерÑÐ¸Ñ Ð³Ð¾Ð»Ð¾Ñового Ñервера: [VOICE_VERSION] + </string> + <string name="AboutTraffic"> + ПотерÑно пакетов: [PACKETS_LOST,number,0]/[PACKETS_IN,number,0] ([PACKETS_PCT,number,1]%) + </string> + <string name="ErrorFetchingServerReleaseNotesURL"> + Ошибка при получении URL-адреÑа заметок о выпуÑке Ñервера. + </string> <string name="ProgressRestoring"> ВоÑÑтановление... </string> @@ -934,15 +973,15 @@ support@secondlife.com. <string name="ControlYourCamera"> УправлÑÑ‚ÑŒ камерой </string> + <string name="TeleportYourAgent"> + Телепортировать Ð²Ð°Ñ + </string> <string name="NotConnected"> Ðет Ð¿Ð¾Ð´ÐºÐ»ÑŽÑ‡ÐµÐ½Ð¸Ñ </string> <string name="AgentNameSubst"> (Ð’Ñ‹) </string> - <string name="TeleportYourAgent"> - Телепортировать Ð²Ð°Ñ - </string> <string name="JoinAnExperience"> ПриÑоединитеÑÑŒ </string> @@ -1267,8 +1306,7 @@ support@secondlife.com. <string name="InventoryInboxNoItems"> ЗдеÑÑŒ будут показаны ваши покупки из торгового центра. Их можно будет перетащить в ваш инвентарь Ð´Ð»Ñ Ð¸ÑпользованиÑ. </string> - <string name="Unconstrained">Без ограничениÑ</string> - <string name="MarketplaceURL"> + <string name="MarketplaceURL"> https://marketplace.[MARKETPLACE_DOMAIN_NAME]/ </string> <string name="MarketplaceURL_CreateStore"> @@ -1297,6 +1335,18 @@ support@secondlife.com. <string name="InventoryOutboxNoItems"> Перетащите папки в Ñту облаÑÑ‚ÑŒ и щелкните «Отправить в торговый центр», чтобы выÑтавить их на продажу в [[MARKETPLACE_DASHBOARD_URL] Торговом центре]. </string> + <string name="InventoryOutboxInitializingTitle"> + Ð˜Ð½Ð¸Ñ†Ð¸Ð°Ð»Ð¸Ð·Ð°Ñ†Ð¸Ñ Ð¢Ð¾Ñ€Ð³Ð¾Ð²Ð¾Ð³Ð¾ центра. + </string> + <string name="InventoryOutboxInitializing"> + Мы обращаемÑÑ Ðº вашему аккаунту в [[MARKETPLACE_CREATE_STORE_URL] магазине]. + </string> + <string name="InventoryOutboxErrorTitle"> + Ошибки торгового центра. + </string> + <string name="InventoryOutboxError"> + [[MARKETPLACE_CREATE_STORE_URL] Магазин] возвращает ошибки. + </string> <string name="Marketplace Error None"> Ошибок нет </string> @@ -1324,6 +1374,9 @@ support@secondlife.com. <string name="Open landmarks"> Открыть закладки </string> + <string name="Unconstrained"> + Без Ð¾Ð³Ñ€Ð°Ð½Ð¸Ñ‡ÐµÐ½Ð¸Ñ + </string> <string name="no_transfer" value="(не передаетÑÑ)"/> <string name="no_modify" value="(не изменÑетÑÑ)"/> <string name="no_copy" value="(не копируетÑÑ)"/> @@ -1724,6 +1777,9 @@ support@secondlife.com. <string name="CompileQueueDownloadedCompiling"> Загружено, компилируетÑÑ </string> + <string name="CompileQueueServiceUnavailable"> + Служба ÐºÐ¾Ð¼Ð¿Ð¸Ð»Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð¸Ñ Ñкриптов недоÑтупна + </string> <string name="CompileQueueScriptNotFound"> Скрипт не найден на Ñервере. </string> diff --git a/indra/newview/skins/default/xui/tr/floater_lagmeter.xml b/indra/newview/skins/default/xui/tr/floater_lagmeter.xml new file mode 100644 index 0000000000..736c50be90 --- /dev/null +++ b/indra/newview/skins/default/xui/tr/floater_lagmeter.xml @@ -0,0 +1,151 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<floater name="floater_lagmeter" title="GECÄ°KME ÖLÇER"> + <floater.string name="max_title_msg"> + Gecikme Ölçer + </floater.string> + <floater.string name="max_width_px"> + 360 + </floater.string> + <floater.string name="min_title_msg"> + Gecikme + </floater.string> + <floater.string name="min_width_px"> + 90 + </floater.string> + <floater.string name="client_text_msg"> + Ä°stemci + </floater.string> + <floater.string name="client_frame_rate_critical_fps"> + 10 + </floater.string> + <floater.string name="client_frame_rate_warning_fps"> + 15 + </floater.string> + <floater.string name="client_frame_time_window_bg_msg"> + Normal, pencere alt zeminde + </floater.string> + <floater.string name="client_frame_time_critical_msg"> + Ä°stemci kare hızı [CLIENT_FRAME_RATE_CRITICAL] altında + </floater.string> + <floater.string name="client_frame_time_warning_msg"> + Ä°stemci kare hızı [CLIENT_FRAME_RATE_CRITICAL] ile [CLIENT_FRAME_RATE_WARNING] arasınad + </floater.string> + <floater.string name="client_frame_time_normal_msg"> + Normal + </floater.string> + <floater.string name="client_draw_distance_cause_msg"> + Muhtemel neden: Çizme mesafesi çok yüksek + </floater.string> + <floater.string name="client_texture_loading_cause_msg"> + Muhtemel neden: Görüntüler yükleniyor + </floater.string> + <floater.string name="client_texture_memory_cause_msg"> + Muhtemel neden: Bellekte çok fazla görüntü + </floater.string> + <floater.string name="client_complex_objects_cause_msg"> + Muhtemel neden: Sahnede çok fazla karmaşık nesne + </floater.string> + <floater.string name="network_text_msg"> + AÄŸ + </floater.string> + <floater.string name="network_packet_loss_critical_pct"> + 10 + </floater.string> + <floater.string name="network_packet_loss_warning_pct"> + 5 + </floater.string> + <floater.string name="network_packet_loss_critical_msg"> + BaÄŸlantı paketlerin % [NETWORK_PACKET_LOSS_CRITICAL]'sinden fazlasını bırakıyor + </floater.string> + <floater.string name="network_packet_loss_warning_msg"> + BaÄŸlantı paketlerin % [NETWORK_PACKET_LOSS_WARNING]%-[NETWORK_PACKET_LOSS_CRITICAL]'sini bırakıyor + </floater.string> + <floater.string name="network_performance_normal_msg"> + Normal + </floater.string> + <floater.string name="network_ping_critical_ms"> + 600 + </floater.string> + <floater.string name="network_ping_warning_ms"> + 300 + </floater.string> + <floater.string name="network_ping_critical_msg"> + BaÄŸlantı ping süresi [NETWORK_PING_CRITICAL] ms.den fazla + </floater.string> + <floater.string name="network_ping_warning_msg"> + BaÄŸlantı ping süresi [NETWORK_PING_WARNING]-[NETWORK_PING_CRITICAL] ms + </floater.string> + <floater.string name="network_packet_loss_cause_msg"> + Muhtemel yetersiz baÄŸlantı veya 'Bant GeniÅŸliÄŸi' tercihi çok yüksek. + </floater.string> + <floater.string name="network_ping_cause_msg"> + Muhtemel yetersiz baÄŸlantı veya dosya paylaşım uygulaması. + </floater.string> + <floater.string name="server_text_msg"> + Sunucu + </floater.string> + <floater.string name="server_frame_rate_critical_fps"> + 20 + </floater.string> + <floater.string name="server_frame_rate_warning_fps"> + 30 + </floater.string> + <floater.string name="server_single_process_max_time_ms"> + 20 + </floater.string> + <floater.string name="server_frame_time_critical_msg"> + Simülatör kare hızı [SERVER_FRAME_RATE_CRITICAL] altında + </floater.string> + <floater.string name="server_frame_time_warning_msg"> + Simülatör kare hızı [SERVER_FRAME_RATE_CRITICAL] ve [SERVER_FRAME_RATE_WARNING] arasında + </floater.string> + <floater.string name="server_frame_time_normal_msg"> + Normal + </floater.string> + <floater.string name="server_physics_cause_msg"> + Muhtemel Neden: Çok fazla fiziki nesne + </floater.string> + <floater.string name="server_scripts_cause_msg"> + Muhtemel Neden: Çok fazla komut dosyalı nesne + </floater.string> + <floater.string name="server_net_cause_msg"> + Muhtemel Neden: Çok fazla aÄŸ trafiÄŸi + </floater.string> + <floater.string name="server_agent_cause_msg"> + Muhtemel Neden: Bölgede hareket eden çok fazla insan var + </floater.string> + <floater.string name="server_images_cause_msg"> + Muhtemel Neden: Çok fazla görüntü hesabı + </floater.string> + <floater.string name="server_generic_cause_msg"> + Muhtemel Neden: Simülatör yükü çok ağır + </floater.string> + <floater.string name="smaller_label"> + >> + </floater.string> + <floater.string name="bigger_label"> + << + </floater.string> + <button name="client_lagmeter" tool_tip="Ä°stemci gecikme durumu"/> + <text name="client"> + Ä°stemci + </text> + <text name="client_text"> + Normal + </text> + <button name="network_lagmeter" tool_tip="AÄŸ gecikme durumu"/> + <text name="network"> + AÄŸ + </text> + <text name="network_text"> + Normal + </text> + <button name="server_lagmeter" tool_tip="Sunucu gecikme durumu"/> + <text name="server"> + Sunucu + </text> + <text name="server_text"> + Normal + </text> + <button label=">>" name="minimize" tool_tip="Gezdirici büyüklüğünü deÄŸiÅŸtir"/> +</floater> diff --git a/indra/newview/skins/default/xui/tr/floater_region_restarting.xml b/indra/newview/skins/default/xui/tr/floater_region_restarting.xml new file mode 100644 index 0000000000..1f9ead8bdd --- /dev/null +++ b/indra/newview/skins/default/xui/tr/floater_region_restarting.xml @@ -0,0 +1,23 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<floater name="region_restarting" title="BÖLGEYÄ° YENÄ°DEN BAÅžLAT"> + <string name="RegionName"> + Åžu anda içinde bulunduÄŸunuz bölge ([NAME]) yeniden baÅŸlatılmak üzere. + +Bu bölgede kalmaya devam ederseniz oturumunuz sonlandırılacak. + </string> + <string name="RestartSeconds"> + Yeniden baÅŸlatma için kalan süre +[SECONDS] + </string> + <panel name="layout_panel_1"> + <text name="region_name"> + Åžu anda içinde bulunduÄŸunuz bölge (-Bölgenin uzun adı-) yeniden baÅŸlatılmak üzere. + +Bu bölgede kalmaya devam ederseniz oturumunuz sonlandırılacak. + </text> + <text name="restart_seconds"> + Yeniden baÅŸlatma için kalan süre + 32767 + </text> + </panel> +</floater> diff --git a/indra/newview/skins/default/xui/tr/floater_scene_load_stats.xml b/indra/newview/skins/default/xui/tr/floater_scene_load_stats.xml new file mode 100644 index 0000000000..ae0a94595d --- /dev/null +++ b/indra/newview/skins/default/xui/tr/floater_scene_load_stats.xml @@ -0,0 +1,64 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<floater name="Scene Load Statistics" title="SAHNE YÃœKLEME Ä°STATÄ°STÄ°KLERÄ°"> + <button label="Duraklat" name="playpause"/> + <scroll_container name="statistics_scroll"> + <container_view name="statistics_view"> + <stat_view label="Temel" name="basic"> + <stat_bar label="Çerçeve Piksel Farkı" name="frame difference"/> + <stat_bar label="UDP Verileri Alındı" name="bandwidth"/> + <stat_bar label="Paket Kaybı" name="packet_loss"/> + </stat_view> + <stat_view label="GeliÅŸmiÅŸ" name="advanced"> + <stat_view label="Ä°ÅŸle" name="render"> + <stat_bar label="Toplam Nesne" name="objs"/> + <stat_bar label="Yeni Nesne" name="newobjs"/> + <stat_bar label="Nesne Önbellek Ä°sabet Oranı" name="object_cache_hits"/> + </stat_view> + <stat_view label="Doku" name="texture"> + <stat_bar label="Önbellek Ä°sabet Oranı" name="texture_cache_hits"/> + <stat_bar label="Önbellek Okuma Gecikme Süresi" name="texture_cache_read_latency"/> + <stat_bar label="Sayım" name="numimagesstat"/> + <stat_bar label="Ham Sayım" name="numrawimagesstat"/> + </stat_view> + <stat_view label="AÄŸ" name="network"> + <stat_bar label="Gelen Paketler" name="packetsinstat"/> + <stat_bar label="Giden Paketler" name="packetsoutstat"/> + <stat_bar label="Nesneler" name="objectdatareceived"/> + <stat_bar label="Doku" name="texturedatareceived"/> + <stat_bar label="Varlık" name="assetudpdatareceived"/> + <stat_bar label="Katmanlar" name="layersdatareceived"/> + <stat_bar label="Gerçekte Gelen" name="messagedatain"/> + <stat_bar label="Gerçekte Giden" name="messagedataout"/> + <stat_bar label="VFS Bekleyen Ä°ÅŸlemler" name="vfspendingoperations"/> + </stat_view> + </stat_view> + <stat_view label="Simülatör" name="sim"> + <stat_bar label="Nesneler" name="simobjects"/> + <stat_bar label="Etkin Nesneler" name="simactiveobjects"/> + <stat_bar label="Etkin Komut Dosyaları" name="simactivescripts"/> + <stat_bar label="Gelen Paketler" name="siminpps"/> + <stat_bar label="Giden Paketler" name="simoutpps"/> + <stat_bar label="Bekleyen Karşıdan Yüklemeler" name="simpendingdownloads"/> + <stat_bar label="Bekleyen Karşıya Yüklemeler" name="simpendinguploads"/> + <stat_bar label="Toplam BildirilmiÅŸ Bayt" name="simtotalunackedbytes"/> + <stat_view label="Zaman (ms)" name="simperf"> + <stat_bar label="Toplam Çerçeve Süresi" name="simframemsec"/> + <stat_bar label="Net Süre" name="simnetmsec"/> + <stat_bar label="Fizik Süresi" name="simsimphysicsmsec"/> + <stat_bar label="Simülasyon Süresi" name="simsimothermsec"/> + <stat_bar label="Aracı Süresi" name="simagentmsec"/> + <stat_bar label="Görüntü Süresi" name="simimagesmsec"/> + <stat_bar label="Komut Dosyası Süresi" name="simscriptmsec"/> + <stat_bar label="Yedek Zaman" name="simsparemsec"/> + <stat_view label="Zaman Ayrıntıları (ms)" name="timedetails"> + <stat_bar label="Fizik Adımı" name="simsimphysicsstepmsec"/> + <stat_bar label="Fizik Åžekillerini Güncelle" name="simsimphysicsshapeupdatemsec"/> + <stat_bar label="Fizik DiÄŸer" name="simsimphysicsothermsec"/> + <stat_bar label="Uyku Zamanı" name="simsleepmsec"/> + <stat_bar label="Pompa GiriÅŸ Çıkış" name="simpumpiomsec"/> + </stat_view> + </stat_view> + </stat_view> + </container_view> + </scroll_container> +</floater> diff --git a/indra/newview/skins/default/xui/tr/floater_stats.xml b/indra/newview/skins/default/xui/tr/floater_stats.xml index afce87bdaa..2c0c33737f 100755 --- a/indra/newview/skins/default/xui/tr/floater_stats.xml +++ b/indra/newview/skins/default/xui/tr/floater_stats.xml @@ -4,17 +4,20 @@ <container_view name="statistics_view"> <stat_view label="Temel" name="basic"> <stat_bar label="FPS" name="fps"/> - <stat_bar label="Bant geniÅŸliÄŸi" name="bandwidth"/> + <stat_bar label="UDP Verileri Alındı" name="bandwidth"/> <stat_bar label="Paket Kaybı" name="packet_loss"/> <stat_bar label="Sim Pingi" name="ping"/> </stat_view> <stat_view label="GeliÅŸmiÅŸ" name="advanced"> <stat_view label="Ä°ÅŸle" name="render"> - <stat_bar label="Çerçeve Başına Çizilen Üçgenler" name="ktrisframe"/> - <stat_bar label="Saniyede Bir Çizilen Üçgenler" name="ktrissec"/> + <stat_bar label="Çerçeve Başına Üçgenler" name="ktrisframe"/> + <stat_bar label="Saniye Başına Üçgenler" name="ktrissec"/> <stat_bar label="Toplam Nesne" name="objs"/> <stat_bar label="Yeni Nesne" name="newobjs"/> <stat_bar label="Nesne Önbellek Ä°sabet Oranı" name="object_cache_hits"/> + <stat_bar label="GerçekleÅŸtirilen Gölgeleme Sorguları" name="occlusion_queries"/> + <stat_bar label="Gölgelenen Nesneler" name="occluded"/> + <stat_bar label="Gölgelenmeye Nesneler" name="unoccluded"/> </stat_view> <stat_view label="Doku" name="texture"> <stat_bar label="Önbellek Ä°sabet Oranı" name="texture_cache_hits"/> @@ -26,15 +29,32 @@ <stat_bar label="Ham Bellek" name="rawmemstat"/> <stat_bar label="BaÄŸlı Doku BelleÄŸi" name="glboundmemstat"/> </stat_view> + <stat_view label="Bellek Kullanımı" name="memory"> + <stat_bar label="LLTrace" name="LLTrace"/> + <stat_bar label="KA" name="LLView"/> + <stat_bar label="Fontlar" name="LLFontFreetype"/> + <stat_bar label="Envanter" name="LLInventoryObject"/> + <stat_bar label="Görüntüleyici Nesneleri" name="LLViewerObject"/> + <stat_bar label="Gölgeleme AÄŸacı Grup Verileri" name="LLViewerOctreeGroup"/> + <stat_bar label="Gölgeleme AÄŸacı Verileri" name="LLViewerOctreeEntry"/> + <stat_bar label="Görüntüleyici Nesne ÖnbelleÄŸi" name="LLVOCacheEntry"/> + <stat_bar label="Çizilebilir nesneler" name="LLDrawable"/> + <stat_bar label="Yüz Verileri" name="LLFace"/> + <stat_bar label="Çizim Bilgileri" name="LLDrawInfo"/> + <stat_bar label="Doku Verileri" name="LLTexture"/> + <stat_bar label="Görüntü Verileri" name="LLImage"/> + <stat_bar label="GL Görüntü Verileri" name="LLImageGL"/> + <stat_bar label="Vertex Tamponları" name="LLVertexBuffer"/> + </stat_view> <stat_view label="AÄŸ" name="network"> <stat_bar label="Gelen Paketler" name="packetsinstat"/> <stat_bar label="Giden Paketler" name="packetsoutstat"/> - <stat_bar label="Nesneler" name="objectkbitstat"/> - <stat_bar label="Doku" name="texturekbitstat"/> - <stat_bar label="Varlık" name="assetkbitstat"/> - <stat_bar label="Katmanlar" name="layerskbitstat"/> - <stat_bar label="Gerçekte Gelen" name="actualinkbitstat"/> - <stat_bar label="Gerçekte Giden" name="actualoutkbitstat"/> + <stat_bar label="Nesneler" name="objectdatareceived"/> + <stat_bar label="Doku" name="texturedatareceived"/> + <stat_bar label="Varlık" name="assetudpdatareceived"/> + <stat_bar label="Katmanlar" name="layersdatareceived"/> + <stat_bar label="Gerçekte Gelen" name="messagedatain"/> + <stat_bar label="Gerçekte Giden" name="messagedataout"/> <stat_bar label="VFS Bekleyen Ä°ÅŸlemler" name="vfspendingoperations"/> </stat_view> </stat_view> @@ -64,8 +84,8 @@ <stat_bar label="Giden Paketler" name="simoutpps"/> <stat_bar label="Bekleyen Karşıdan Yüklemeler" name="simpendingdownloads"/> <stat_bar label="Bekleyen Karşıya Yüklemeler" name="simpendinguploads"/> - <stat_bar label="Toplam BildirilmiÅŸ Bayt" name="simtotalunackedbytes"/> - <stat_view label="Zaman (ms)" name="simperf"> + <stat_bar label="Toplam BildirilmiÅŸ Veriler" name="simtotalunackedbytes"/> + <stat_view label="Süre" name="simperf"> <stat_bar label="Toplam Çerçeve Süresi" name="simframemsec"/> <stat_bar label="Net Süre" name="simnetmsec"/> <stat_bar label="Fizik Süresi" name="simsimphysicsmsec"/> @@ -74,7 +94,7 @@ <stat_bar label="Görüntü Süresi" name="simimagesmsec"/> <stat_bar label="Komut Dosyası Süresi" name="simscriptmsec"/> <stat_bar label="Yedek Zaman" name="simsparemsec"/> - <stat_view label="Zaman Ayrıntıları (ms)" name="timedetails"> + <stat_view label="Zaman Ayrıntıları" name="timedetails"> <stat_bar label="Fizik Adımı" name="simsimphysicsstepmsec"/> <stat_bar label="Fizik Åžekillerini Güncelle" name="simsimphysicsshapeupdatemsec"/> <stat_bar label="Fizik DiÄŸer" name="simsimphysicsothermsec"/> diff --git a/indra/newview/skins/default/xui/tr/menu_avatar_icon.xml b/indra/newview/skins/default/xui/tr/menu_avatar_icon.xml index d3ef490735..dc3724cfc8 100755 --- a/indra/newview/skins/default/xui/tr/menu_avatar_icon.xml +++ b/indra/newview/skins/default/xui/tr/menu_avatar_icon.xml @@ -2,6 +2,7 @@ <menu name="Avatar Icon Menu"> <menu_item_call label="Profili Göster" name="Show Profile"/> <menu_item_call label="AÄ° Gönder..." name="Send IM"/> + <menu_item_call label="Işınlanma Talep Et" name="Request Teleport"/> <menu_item_call label="ArkadaÅŸ Ekle..." name="Add Friend"/> <menu_item_call label="Arkadaşı Çıkar..." name="Remove Friend"/> </menu> diff --git a/indra/newview/skins/default/xui/tr/menu_inventory.xml b/indra/newview/skins/default/xui/tr/menu_inventory.xml index 51049427af..7239c4be06 100755 --- a/indra/newview/skins/default/xui/tr/menu_inventory.xml +++ b/indra/newview/skins/default/xui/tr/menu_inventory.xml @@ -70,6 +70,7 @@ <menu_item_call label="Oyna" name="Sound Play"/> <menu_item_call label="SLurl'i Kopyala" name="url_copy"/> <menu_item_call label="Yer Ä°mi Hakkında" name="About Landmark"/> + <menu_item_call label="Haritada Göster" name="show_on_map"/> <menu_item_call label="SL Dünyasında Oynat" name="Animation Play"/> <menu_item_call label="Yerel Olarak Oynat" name="Animation Audition"/> <menu_item_call label="Anlık Ä°leti Gönder" name="Send Instant Message"/> diff --git a/indra/newview/skins/default/xui/tr/menu_login.xml b/indra/newview/skins/default/xui/tr/menu_login.xml index 79c95407e8..ecd29370a5 100755 --- a/indra/newview/skins/default/xui/tr/menu_login.xml +++ b/indra/newview/skins/default/xui/tr/menu_login.xml @@ -5,7 +5,15 @@ <menu_item_call label="[APP_NAME]'den Çık" name="Quit"/> </menu> <menu label="Yardım" name="Help"> - <menu_item_call label="[SECOND_LIFE] Yardımı" name="Second Life Help"/> + <menu_item_call label="Nasıl yapılır..." name="How To"/> + <menu_item_call label="Hızlı BaÅŸlangıç" name="Quickstart"/> + <menu_item_call label="Bilgi Bankası" name="Knowledge Base"/> + <menu_item_call label="Wiki" name="Wiki"/> + <menu_item_call label="Topluluk Forumları" name="Community Forums"/> + <menu_item_call label="Destek porteli" name="Support portal"/> + <menu_item_call label="[SECOND_LIFE] Haberler" name="Second Life News"/> + <menu_item_call label="[SECOND_LIFE] Bloklar" name="Second Life Blogs"/> + <menu_item_call label="Hata Bildir" name="Report Bug"/> <menu_item_call label="[APP_NAME] Hakkında" name="About Second Life"/> </menu> <menu_item_check label="Hata Ayıklama Menüsünü Göster" name="Show Debug Menu"/> diff --git a/indra/newview/skins/default/xui/tr/menu_teleport_history_item.xml b/indra/newview/skins/default/xui/tr/menu_teleport_history_item.xml index 93984162e7..d7ff807c3d 100755 --- a/indra/newview/skins/default/xui/tr/menu_teleport_history_item.xml +++ b/indra/newview/skins/default/xui/tr/menu_teleport_history_item.xml @@ -2,5 +2,5 @@ <context_menu name="Teleport History Item Context Menu"> <menu_item_call label="Işınla" name="Teleport"/> <menu_item_call label="Ek Bilgi" name="More Information"/> - <menu_item_call label="Panoya Kopyala" name="CopyToClipboard"/> + <menu_item_call label="SLurl'i Kopyala" name="CopyToClipboard"/> </context_menu> diff --git a/indra/newview/skins/default/xui/tr/menu_viewer.xml b/indra/newview/skins/default/xui/tr/menu_viewer.xml index 4236f91636..eabea0cc67 100755 --- a/indra/newview/skins/default/xui/tr/menu_viewer.xml +++ b/indra/newview/skins/default/xui/tr/menu_viewer.xml @@ -70,11 +70,11 @@ <menu_item_check label="GeliÅŸmiÅŸ Menü" name="Show Advanced Menu"/> </menu> <menu label="GüneÅŸ" name="Sun"> - <menu_item_call label="Gün DoÄŸumu" name="Sunrise"/> - <menu_item_call label="Gün Ortası" name="Noon"/> - <menu_item_call label="Gün Batımı" name="Sunset"/> - <menu_item_call label="Gece Yarısı" name="Midnight"/> - <menu_item_call label="Bölge Ayarlarını Kullan" name="Use Region Settings"/> + <menu_item_check label="Gün DoÄŸumu" name="Sunrise"/> + <menu_item_check label="Gün Ortası" name="Noon"/> + <menu_item_check label="Gün Batımı" name="Sunset"/> + <menu_item_check label="Gece Yarısı" name="Midnight"/> + <menu_item_check label="Bölge Ayarlarını Kullan" name="Use Region Settings"/> </menu> <menu label="Ortam Düzenleyici" name="Environment Editor"> <menu_item_call label="Ortam Ayarları..." name="Environment Settings"/> @@ -163,8 +163,6 @@ </menu> <menu label="Yardım" name="Help"> <menu_item_call label="Nasıl yapılır..." name="How To"/> - <menu_item_call label="[SECOND_LIFE] Yardımı" name="Second Life Help"/> - <menu_item_call label="Kullanıcı kılavuzu" name="User’s guide"/> <menu_item_call label="Bilgi Bankası" name="Knowledge Base"/> <menu_item_call label="Wiki" name="Wiki"/> <menu_item_call label="Topluluk Forumları" name="Community Forums"/> @@ -186,6 +184,7 @@ <menu label="Performans Araçları" name="Performance Tools"> <menu_item_call label="Gecikme Ölçer" name="Lag Meter"/> <menu_item_check label="Ä°statistik ÇubuÄŸu" name="Statistics Bar"/> + <menu_item_call label="Sahne Yükleme Ä°statistikleri" name="Scene Load Statistics"/> <menu_item_check label="Avatarlar İçin Çizim Ağırlığını Göster" name="Avatar Rendering Cost"/> </menu> <menu label="Vurgulama ve Görünürlük" name="Highlighting and Visibility"> @@ -248,6 +247,7 @@ <menu_item_check label="Hızlı Zamanlayıcılar" name="Fast Timers"/> <menu_item_check label="Bellek" name="Memory"/> <menu_item_check label="Sahne Ä°statistikleri" name="Scene Statistics"/> + <menu_item_check label="Sahne Yükleme Ekranı" name="Scene Loading Monitor"/> <menu_item_call label="Doku Alınması Hata Ayıklama Konsolu" name="Texture Fetch Debug Console"/> <menu_item_call label="Hata Ayıklama Konsoluna giden Bölge Bilgisi" name="Region Info to Debug Console"/> <menu_item_call label="Hata Ayıklama Konsoluna giden Grup Bilgisi" name="Group Info to Debug Console"/> @@ -284,6 +284,7 @@ <menu_item_check label="Düzenli YavaÅŸ Çerçeve" name="Periodic Slow Frame"/> <menu_item_check label="Çerçeve Testi" name="Frame Test"/> <menu_item_call label="Çerçeve Profili..." name="Frame Profile"/> + <menu_item_call label="DeÄŸerlendirme" name="Benchmark"/> </menu> <menu label="Meta Verileri Ä°ÅŸle" name="Render Metadata"> <menu_item_check label="Sınırlama Kutuları" name="Bounding Boxes"/> @@ -302,6 +303,7 @@ <menu_item_check label="Ä°nÅŸa KuyruÄŸu" name="Build Queue"/> <menu_item_check label="Işıklar" name="Lights"/> <menu_item_check label="Çarpışma Ä°skeleti" name="Collision Skeleton"/> + <menu_item_check label="Eklemler" name="Joints"/> <menu_item_check label="Işın Yayını" name="Raycast"/> <menu_item_check label="Rüzgar Vektörleri" name="Wind Vectors"/> <menu_item_check label="Ä°ÅŸleme Karmaşıklığı" name="rendercomplexity"/> @@ -334,6 +336,7 @@ <menu_item_check label="EklenmiÅŸ Işıkları Ä°ÅŸle" name="Render Attached Lights"/> <menu_item_check label="EklenmiÅŸ Parçacıkları Ä°ÅŸle" name="Render Attached Particles"/> <menu_item_check label="Parıldayan Nesneler Ãœzerine Gel" name="Hover Glow Objects"/> + <menu_item_call label="ÖnbelleÄŸi Hemen Temizle" name="Cache Clear"/> </menu> <menu label="AÄŸ" name="Network"> <menu_item_check label="Aracıyı Durdur" name="AgentPause"/> @@ -366,7 +369,6 @@ <menu_item_call label="Odaklayıcı Tutucunun Dökümünü Al" name="Dump Focus Holder"/> <menu_item_call label="Seçilen Nesne Bilgisini Yazdır" name="Print Selected Object Info"/> <menu_item_call label="Aracı Bilgisini Yazdır" name="Print Agent Info"/> - <menu_item_check label="Bölge Hata Ayıklama Konsolu" name="Region Debug Console"/> <menu_item_check label="SelectMgr İçin Hata Ayıklama" name="Debug SelectMgr"/> <menu_item_check label="Tıklamalar İçin Hata Ayıklama" name="Debug Clicks"/> <menu_item_check label="Görünümler için Hata Ayıklama" name="Debug Views"/> diff --git a/indra/newview/skins/default/xui/tr/notifications.xml b/indra/newview/skins/default/xui/tr/notifications.xml index 492178ab82..a58abca3ac 100755 --- a/indra/newview/skins/default/xui/tr/notifications.xml +++ b/indra/newview/skins/default/xui/tr/notifications.xml @@ -114,13 +114,13 @@ Daha fazla bilgi için bkz. [[MARKETPLACE_IMPORTS_URL] hata günlüğü]. <usetemplate name="okbutton" yestext="Tamam"/> </notification> <notification name="OutboxImportFailed"> - Aktarım baÅŸarılamadı + Aktarım '[ERROR_CODE]' hatası nedeniyle baÅŸarısız oldu Bir sistem veya aÄŸ hatası nedeniyle Pazaryerine hiçbir klasör gönderilemedi. Daha sonra tekrar deneyin. <usetemplate name="okbutton" yestext="Tamam"/> </notification> <notification name="OutboxInitFailed"> - Pazaryeri baÅŸlatılamadı. + Pazaryeri baÅŸlatılması '[ERROR_CODE]' hatası nedeniyle baÅŸarısız oldu Bir sistem veya aÄŸ hatası nedeniyle Pazaryeri baÅŸlatılamadı. Daha sonra tekrar deneyin. <usetemplate name="okbutton" yestext="Tamam"/> @@ -1731,6 +1731,10 @@ Lütfen daha sonra tekrar deneyin. <nolink>[LOCATION]</nolink> konumuna ışınlanmak istediÄŸinize emin misiniz? <usetemplate ignoretext="Bir yer imine ışınlanma istediÄŸimde doÄŸrulama iste" name="okcancelignore" notext="Ä°ptal Et" yestext="Işınla"/> </notification> + <notification name="TeleportViaSLAPP"> + <nolink>[LOCATION]</nolink> konumuna ışınlanmak istediÄŸinize emin misiniz? + <usetemplate ignoretext="SLAPP ile ışınlanma istediÄŸimde doÄŸrulama iste" name="okcancelignore" notext="Ä°ptal" yestext="Işınla"/> + </notification> <notification name="TeleportToPick"> [PICK] konumuna ışınlanılsın mı? <usetemplate ignoretext="Seçme sekmesindeki bir konuma ışınlanma istediÄŸimde doÄŸrulama iste" name="okcancelignore" notext="Ä°ptal Et" yestext="Işınla"/> @@ -1940,6 +1944,9 @@ Binlerce bölgeyi deÄŸiÅŸtirecek ve alan sunucusunu kesintiye uÄŸratacaktır. <notification name="ProblemAddingEstateManager"> Yeni bir gayrimenkul yöneticisi eklenirken problem oluÅŸtu. Bir veya birden fazla gayrimenkulün yönetici listesi dolu olabilir. </notification> + <notification name="ProblemAddingEstateBanManager"> + Gayri menkul sahibi ya da yöneticisi yasaklı listesine eklenemedi. + </notification> <notification name="ProblemAddingEstateGeneric"> Bu gayrimenkul listesine eklenirken problem oluÅŸtu. Bir veya birden fazla gayrimenkulün listesi dolu olabilir. </notification> @@ -3027,9 +3034,9 @@ Ayrıntılar için günlük dosyasına bakın. <nolink>[ITEMS]</nolink> -PaylaÅŸmanın yapılacağı Sakinler: +PaylaÅŸmanın yapılacağı Second Life Sakinleri: -[RESIDENTS] +<nolink>[RESIDENTS]</nolink> <usetemplate name="okcancelbuttons" notext="Ä°ptal" yestext="Tamam"/> </notification> <notification name="ShareFolderConfirmation"> @@ -3041,7 +3048,7 @@ AÅŸağıdaki öğeleri paylaÅŸmak istediÄŸinize emin misiniz? PaylaÅŸmanın yapılacağı Second Life Sakinleri: -[RESIDENTS] +<nolink>[RESIDENTS]</nolink> <usetemplate name="okcancelbuttons" notext="Ä°ptal" yestext="Tamam"/> </notification> <notification name="ItemsShared"> @@ -3496,10 +3503,6 @@ Lütfen bir dakika sonra tekrar deneyin. <notification name="EjectComingSoon"> Daha fazla burada olma izniniz yok ve ayrılmak için [EJECT_TIME] saniyeniz var. </notification> - <notification name="NoEnterServerFull"> - Bu bölgeye giremezsiniz çünkü -sunucu dolu. - </notification> <notification name="SaveBackToInvDisabled"> Envantere Geri Kaydet devre dışı bırakıldı. </notification> @@ -3683,6 +3686,9 @@ sunucu dolu. <notification name="LinkFailedTooMuchPhysics"> Nesne çok fazla fizik kaynağı kullanıyor -- dinamikleri devre dışı bırakıldı. </notification> + <notification name="EstateManagerFailedllTeleportHome"> + [SLURL] adresindeki '[OBJECT_NAME]' nesnesi gayri menkul yöneticilerini ana konuma ışınlayamıyor. + </notification> <notification name="TeleportedHomeByObjectOnParcel"> '[PARCEL_NAME]' parseli üzerindeki '[OBJECT_NAME]' nesnesi tarafından ana konuma ışınlandınız </notification> @@ -3873,13 +3879,18 @@ sunucu dolu. Seçimde birleÅŸtirilecek yeterli sayıda lease edilmiÅŸ parsel yok. </notification> <notification name="CantDivideLandMultipleParcelsSelected"> - Arazi bölünemedi.\nBirden fazla parsel seçili durumda.\nDaha küçük bir arazi parçası seçmeyi deneyin. + Arazi bölünemiyor. +Birden fazla parsel seçili. +Daha küçük bir arazi parçası seçmeyi deneyin. </notification> <notification name="CantDivideLandCantFindParcel"> - Arazi bölünemiyor.\nParsel bulunamıyor.\nLütfen Yardım -> Hata Bildir ile bildirin... + Arazi bölünemiyor. +Parsel bulunamıyor. +Lütfen Yardım -> Hata Bildir... sekmesinden hatayı bildirin </notification> <notification name="CantDivideLandWholeParcelSelected"> - Arazi bölünemiyor. Tüm parsel seçilidir.\nDaha küçük bir arazi parçası seçmeyi deneyin. + Arazi bölünemiyor. Tüm parsel seçili. +Daha küçük bir arazi parçası seçmeyi deneyin. </notification> <notification name="LandHasBeenDivided"> Arazi bölündü. @@ -4019,4 +4030,8 @@ sunucu dolu. Dosyalar taşınamıyor. Önceki yol geri yüklendi. <usetemplate ignoretext="Dosyalar taşınamıyor. Önceki yol geri yüklendi." name="okignore" yestext="Tamam"/> </notification> + <notification name="ChatHistoryIsBusyAlert"> + Sohbet geçmiÅŸi dosyası önceki iÅŸlemi gerçekleÅŸtirmekle meÅŸgul. Lütfen bir kaç dakika sonra tekrar deneyin veya baÅŸka bir kiÅŸiyle sohbet etmeyi deneyin. + <usetemplate name="okbutton" yestext="Tamam"/> + </notification> </notifications> diff --git a/indra/newview/skins/default/xui/tr/panel_group_info_sidetray.xml b/indra/newview/skins/default/xui/tr/panel_group_info_sidetray.xml index 32f39da490..e4697eaa21 100755 --- a/indra/newview/skins/default/xui/tr/panel_group_info_sidetray.xml +++ b/indra/newview/skins/default/xui/tr/panel_group_info_sidetray.xml @@ -20,7 +20,7 @@ <layout_panel name="group_accordions"> <accordion name="groups_accordion"> <accordion_tab name="group_general_tab" title="Genel"/> - <accordion_tab name="group_roles_tab" title="Roller"/> + <accordion_tab name="group_roles_tab" title="Roller ve Ãœyeler"/> <accordion_tab name="group_notices_tab" title="Bildirimler"/> <accordion_tab name="group_land_tab" title="Arazi/Varlıklar"/> </accordion> diff --git a/indra/newview/skins/default/xui/tr/panel_group_roles.xml b/indra/newview/skins/default/xui/tr/panel_group_roles.xml index fb03107da8..ef8b093ddf 100755 --- a/indra/newview/skins/default/xui/tr/panel_group_roles.xml +++ b/indra/newview/skins/default/xui/tr/panel_group_roles.xml @@ -20,6 +20,7 @@ Ctrl tuÅŸuna basıp adlarına tıklayarak birden fazla Ãœye seçebilirsiniz. <name_list.columns label="Ãœye" name="name"/> <name_list.columns label="Bağış" name="donated"/> <name_list.columns label="Durum" name="online"/> + <name_list.columns label="Ãœnvan" name="title"/> </name_list> <button label="Davet Et" name="member_invite"/> <button label="Çıkar" name="member_eject"/> diff --git a/indra/newview/skins/default/xui/tr/panel_region_debug.xml b/indra/newview/skins/default/xui/tr/panel_region_debug.xml index 834ece563f..74a0a1569e 100755 --- a/indra/newview/skins/default/xui/tr/panel_region_debug.xml +++ b/indra/newview/skins/default/xui/tr/panel_region_debug.xml @@ -28,7 +28,8 @@ <check_box label="Bu gayrimenkulu oluÅŸturan bölgelerin tümünde" name="return_estate_wide" tool_tip="Bu gayrimenkulu oluÅŸturan bölgelerin tümündeki nesneler iade edilsin"/> <button label="Ä°ade Et" name="return_btn"/> <button label="En Çok Çarpışanlar..." name="top_colliders_btn" tool_tip="En çok potansiyel çarpışma yaÅŸayan nesnelerin listesi"/> - <button label="En Çok Komut Dsy. ÇalÅŸtr...." name="top_scripts_btn" tool_tip="Komut dosyalarını çalıştırırken en çok zaman harcayan nesnelerin listesi"/> <button label="Bölgeyi Yeniden BaÅŸlat" name="restart_btn" tool_tip="2 dakikalık bir geri sayımdan sonra bölgeyi yeniden baÅŸlat"/> + <button label="En Çok Komut Dsy. ÇalÅŸtr...." name="top_scripts_btn" tool_tip="Komut dosyalarını çalıştırırken en çok zaman harcayan nesnelerin listesi"/> <button label="Yeniden BaÅŸlatmayı Ä°ptal Et" name="cancel_restart_btn" tool_tip="Bölge yeniden baÅŸlatmasını iptal et"/> + <button label="Bölge Hata Ayıklama Konsolu" name="region_debug_console_btn" tool_tip="Açık Bölge Hata Ayıklama Konsolu"/> </panel> diff --git a/indra/newview/skins/default/xui/tr/panel_region_general.xml b/indra/newview/skins/default/xui/tr/panel_region_general.xml index 37da0f2cca..e6abef883d 100755 --- a/indra/newview/skins/default/xui/tr/panel_region_general.xml +++ b/indra/newview/skins/default/xui/tr/panel_region_general.xml @@ -20,12 +20,12 @@ </text> <check_box label="Yer Åžekillendirmeyi Engelle" name="block_terraform_check"/> <check_box label="Uçmayı Engelle" name="block_fly_check"/> + <check_box label="Parselin Ãœzerinde Uçmayı Engelle" name="block_fly_over_check" tool_tip="Bir parselin üzerinden uçulmasını engellemek için onay iÅŸaretlerini yukarı doÄŸru geniÅŸletin"/> <check_box label="Hasara Ä°zin Ver" name="allow_damage_check"/> <check_box label="Ä°tmeyi Kısıtla" name="restrict_pushobject"/> <check_box label="Arazinin Tekrar Satışına Ä°zin Ver" name="allow_land_resell_check"/> <check_box label="Arazinin BirleÅŸmesine/Bölünmesine Ä°zin Ver" name="allow_parcel_changes_check"/> <check_box label="Aramada Arazinin Gösterilmesini Engelle" name="block_parcel_search_check" tool_tip="Arama sonuçlarında bu bölge ve parselleri görünsün"/> - <check_box label="Örgü Nesnelere Ä°zin Ver" name="mesh_rez_enabled_check" tool_tip="Bu bölgede insanların örgü nesneleri oluÅŸturmasına izin verilsin"/> <spinner label="Aracı Limiti" name="agent_limit_spin"/> <spinner label="Nesne Bonusu" name="object_bonus_spin"/> <text label="EriÅŸkinlik" name="access_text"> diff --git a/indra/newview/skins/default/xui/tr/strings.xml b/indra/newview/skins/default/xui/tr/strings.xml index 31c5d2d310..f575b9e608 100755 --- a/indra/newview/skins/default/xui/tr/strings.xml +++ b/indra/newview/skins/default/xui/tr/strings.xml @@ -37,6 +37,45 @@ <string name="StartupRequireDriverUpdate"> Grafik baÅŸlatma baÅŸarılamadı. Lütfen grafik sürücünüzü güncelleÅŸtirin! </string> + <string name="AboutHeader"> + [APP_NAME] [VIEWER_VERSION_0].[VIEWER_VERSION_1].[VIEWER_VERSION_2] ([VIEWER_VERSION_3]) [BUILD_DATE] [BUILD_TIME] ([CHANNEL]) +[[VIEWER_RELEASE_NOTES_URL] [Sürüm Notları]] + </string> + <string name="AboutCompiler"> + [COMPILER] [COMPILER_VERSION] sürümü ile oluÅŸturuldu + </string> + <string name="AboutPosition"> + <nolink>[HOSTNAME]</nolink> ([HOSTIP]) üzerinde bulunan [REGION] içerisinde [POSITION_LOCAL_0,number,1], [POSITION_LOCAL_1,number,1], [POSITION_LOCAL_2,number,1] konumundasınız +SLURL: <nolink>[SLURL]</nolink> +(küresel koordinatlar [POSITION_0,number,1], [POSITION_1,number,1], [POSITION_2,number,1]) +[SERVER_VERSION] +[SERVER_RELEASE_NOTES_URL] + </string> + <string name="AboutSystem"> + CPU: [CPU] +Bellek: [MEMORY_MB] MB +Ä°ÅŸl. Sis. Sürümü: [OS_VERSION] +Grafik Kartı Ãœreticisi: [GRAPHICS_CARD_VENDOR] +Grafik Kartı: [GRAPHICS_CARD] + </string> + <string name="AboutDriver"> + Windows Grafik Sürücüsü Sürümü: [GRAPHICS_DRIVER_VERSION] + </string> + <string name="AboutLibs"> + OpenGL Sürümü: [OPENGL_VERSION] + +libcurl Sürümü: [LIBCURL_VERSION] +J2C Kod Çözücü Sürümü: [J2C_VERSION] +Ses Sürücüsü Sürümü: [AUDIO_DRIVER_VERSION] +Qt Web Kit Sürümü: [QT_WEBKIT_VERSION] +Ses Sunucusu Sürümü: [VOICE_VERSION] + </string> + <string name="AboutTraffic"> + Kaybolan Paketler: [PACKETS_LOST,number,0]/[PACKETS_IN,number,0] ([PACKETS_PCT,number,1]%) + </string> + <string name="ErrorFetchingServerReleaseNotesURL"> + Sunucu sürümü notları URL'si alınırken hata oluÅŸtu. + </string> <string name="ProgressRestoring"> Geri yükleniyor... </string> @@ -934,15 +973,15 @@ Lütfen bir dakika içerisinde tekrar oturum açmayı deneyin. <string name="ControlYourCamera"> Kameranızı kontrol etmek </string> + <string name="TeleportYourAgent"> + Sizi ışınlama + </string> <string name="NotConnected"> BaÄŸlı DeÄŸil </string> <string name="AgentNameSubst"> (Siz) </string> - <string name="TeleportYourAgent"> - Sizi ışınlama - </string> <string name="JoinAnExperience"> Bir tecrübeye katıl </string> @@ -1267,8 +1306,7 @@ Lütfen bir dakika içerisinde tekrar oturum açmayı deneyin. <string name="InventoryInboxNoItems"> Pazaryerinda satın aldıklarınız burada görünecektir. Bunları kullanmak için envanterinize sürükleyebilirsiniz. </string> - <string name="Unconstrained">Kısıtsız</string> - <string name="MarketplaceURL"> + <string name="MarketplaceURL"> https://marketplace.[MARKETPLACE_DOMAIN_NAME]/ </string> <string name="MarketplaceURL_CreateStore"> @@ -1297,6 +1335,18 @@ Lütfen bir dakika içerisinde tekrar oturum açmayı deneyin. <string name="InventoryOutboxNoItems"> Bu alana klasörleri sürükleyin ve bunları [[MARKETPLACE_DASHBOARD_URL] Pazaryerinde] satılık olarak duyurmak için "Pazaryerine Gönder" üzerine tıklayın. </string> + <string name="InventoryOutboxInitializingTitle"> + Pazaryeri BaÅŸlatılıyor. + </string> + <string name="InventoryOutboxInitializing"> + [[MARKETPLACE_CREATE_STORE_URL] MaÄŸazası] üzerindeki hesabınıza eriÅŸiyoruz. + </string> + <string name="InventoryOutboxErrorTitle"> + Pazaryeri Hataları + </string> + <string name="InventoryOutboxError"> + [[MARKETPLACE_CREATE_STORE_URL] MaÄŸazası] hata döndürüyor. + </string> <string name="Marketplace Error None"> Hata yok </string> @@ -1324,6 +1374,9 @@ Lütfen bir dakika içerisinde tekrar oturum açmayı deneyin. <string name="Open landmarks"> Açık yer imleri </string> + <string name="Unconstrained"> + Kısıtsız + </string> <string name="no_transfer" value="(aktarım yok)"/> <string name="no_modify" value="(deÄŸiÅŸtirme yok)"/> <string name="no_copy" value="(kopya yok)"/> @@ -1724,6 +1777,9 @@ Lütfen bir dakika içerisinde tekrar oturum açmayı deneyin. <string name="CompileQueueDownloadedCompiling"> Karşıdan yüklendi, ÅŸimdi derleniyor </string> + <string name="CompileQueueServiceUnavailable"> + Komut dosyası derleme hizmeti kullanılamıyor + </string> <string name="CompileQueueScriptNotFound"> Komut dosyası sunucuda bulunamadı. </string> diff --git a/indra/newview/skins/default/xui/zh/floater_lagmeter.xml b/indra/newview/skins/default/xui/zh/floater_lagmeter.xml new file mode 100644 index 0000000000..6e58e7332f --- /dev/null +++ b/indra/newview/skins/default/xui/zh/floater_lagmeter.xml @@ -0,0 +1,151 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<floater name="floater_lagmeter" title="LAG 測é‡å™¨"> + <floater.string name="max_title_msg"> + Lag 測é‡å™¨ + </floater.string> + <floater.string name="max_width_px"> + 360 + </floater.string> + <floater.string name="min_title_msg"> + Lag + </floater.string> + <floater.string name="min_width_px"> + 90 + </floater.string> + <floater.string name="client_text_msg"> + 客戶端 + </floater.string> + <floater.string name="client_frame_rate_critical_fps"> + 10 + </floater.string> + <floater.string name="client_frame_rate_warning_fps"> + 15 + </floater.string> + <floater.string name="client_frame_time_window_bg_msg"> + Normal, window in background + </floater.string> + <floater.string name="client_frame_time_critical_msg"> + Client frame rate below [CLIENT_FRAME_RATE_CRITICAL] + </floater.string> + <floater.string name="client_frame_time_warning_msg"> + Client frame rate between [CLIENT_FRAME_RATE_CRITICAL] and [CLIENT_FRAME_RATE_WARNING] + </floater.string> + <floater.string name="client_frame_time_normal_msg"> + æ£å¸¸ + </floater.string> + <floater.string name="client_draw_distance_cause_msg"> + Possible cause: Draw distance set too high + </floater.string> + <floater.string name="client_texture_loading_cause_msg"> + Possible cause: Images loading + </floater.string> + <floater.string name="client_texture_memory_cause_msg"> + Possible cause: Too many images in memory + </floater.string> + <floater.string name="client_complex_objects_cause_msg"> + Possible cause: Too many complex objects in scene + </floater.string> + <floater.string name="network_text_msg"> + 網路 + </floater.string> + <floater.string name="network_packet_loss_critical_pct"> + 10 + </floater.string> + <floater.string name="network_packet_loss_warning_pct"> + 5 + </floater.string> + <floater.string name="network_packet_loss_critical_msg"> + Connection is dropping over [NETWORK_PACKET_LOSS_CRITICAL]% of packets + </floater.string> + <floater.string name="network_packet_loss_warning_msg"> + Connection is dropping [NETWORK_PACKET_LOSS_WARNING]%-[NETWORK_PACKET_LOSS_CRITICAL]% of packets + </floater.string> + <floater.string name="network_performance_normal_msg"> + æ£å¸¸ + </floater.string> + <floater.string name="network_ping_critical_ms"> + 600 + </floater.string> + <floater.string name="network_ping_warning_ms"> + 300 + </floater.string> + <floater.string name="network_ping_critical_msg"> + Connection ping time is over [NETWORK_PING_CRITICAL] ms + </floater.string> + <floater.string name="network_ping_warning_msg"> + Connection ping time is [NETWORK_PING_WARNING]-[NETWORK_PING_CRITICAL] ms + </floater.string> + <floater.string name="network_packet_loss_cause_msg"> + Possible bad connection or 'Bandwidth' pref too high. + </floater.string> + <floater.string name="network_ping_cause_msg"> + Possible bad connection or file-sharing app. + </floater.string> + <floater.string name="server_text_msg"> + 伺æœå™¨ + </floater.string> + <floater.string name="server_frame_rate_critical_fps"> + 20 + </floater.string> + <floater.string name="server_frame_rate_warning_fps"> + 30 + </floater.string> + <floater.string name="server_single_process_max_time_ms"> + 20 + </floater.string> + <floater.string name="server_frame_time_critical_msg"> + 模擬器 framerate 低於 [SERVER_FRAME_RATE_CRITICAL] + </floater.string> + <floater.string name="server_frame_time_warning_msg"> + 模擬器 framerate 介於 [SERVER_FRAME_RATE_CRITICAL] 與 [SERVER_FRAME_RATE_WARNING] 之間 + </floater.string> + <floater.string name="server_frame_time_normal_msg"> + æ£å¸¸ + </floater.string> + <floater.string name="server_physics_cause_msg"> + å¯èƒ½åŽŸå› :太多物ç†ç‰©ä»¶ + </floater.string> + <floater.string name="server_scripts_cause_msg"> + å¯èƒ½åŽŸå› :太多腳本物件 + </floater.string> + <floater.string name="server_net_cause_msg"> + å¯èƒ½åŽŸå› :太多網路æµé‡ + </floater.string> + <floater.string name="server_agent_cause_msg"> + å¯èƒ½åŽŸå› :地å€æœ‰å¤ªå¤šç§»å‹•çš„人 + </floater.string> + <floater.string name="server_images_cause_msg"> + å¯èƒ½åŽŸå› :太多圖åƒè¨ˆç®— + </floater.string> + <floater.string name="server_generic_cause_msg"> + å¯èƒ½åŽŸå› ï¼šæ¨¡æ“¬å™¨è² è¼‰éŽé‡ + </floater.string> + <floater.string name="smaller_label"> + >> + </floater.string> + <floater.string name="bigger_label"> + << + </floater.string> + <button name="client_lagmeter" tool_tip="客戶端 lag 狀態"/> + <text name="client"> + 客戶端 + </text> + <text name="client_text"> + æ£å¸¸ + </text> + <button name="network_lagmeter" tool_tip="網路 lag 狀態"/> + <text name="network"> + 網路 + </text> + <text name="network_text"> + æ£å¸¸ + </text> + <button name="server_lagmeter" tool_tip="伺æœå™¨ lag 狀態"/> + <text name="server"> + 伺æœå™¨ + </text> + <text name="server_text"> + æ£å¸¸ + </text> + <button label=">>" name="minimize" tool_tip="切æ›æµ®å‹•è¦–窗尺寸"/> +</floater> diff --git a/indra/newview/skins/default/xui/zh/floater_region_restarting.xml b/indra/newview/skins/default/xui/zh/floater_region_restarting.xml new file mode 100644 index 0000000000..afac7da203 --- /dev/null +++ b/indra/newview/skins/default/xui/zh/floater_region_restarting.xml @@ -0,0 +1,23 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<floater name="region_restarting" title="地å€é‡æ–°å•Ÿå‹•ä¸"> + <string name="RegionName"> + ä½ æ‰€åœ¨çš„åœ°å€([NAME])å³å°‡é‡æ–°å•Ÿå‹•ã€‚ + +å¦‚æžœä½ ç¹¼çºŒç•™åœ¨é€™åœ°å€ï¼Œä½ 將會被登出。 + </string> + <string name="RestartSeconds"> + é‡æ–°å•Ÿå‹•å€’數秒數: +[SECONDS] + </string> + <panel name="layout_panel_1"> + <text name="region_name"> + ä½ æ‰€åœ¨çš„åœ°å€(-最長地å€å-)å³å°‡é‡æ–°å•Ÿå‹•ã€‚ + +å¦‚æžœä½ ç¹¼çºŒç•™åœ¨é€™åœ°å€ï¼Œä½ 將會被登出。 + </text> + <text name="restart_seconds"> + é‡æ–°å•Ÿå‹•å€’數秒數: + 32767 + </text> + </panel> +</floater> diff --git a/indra/newview/skins/default/xui/zh/floater_scene_load_stats.xml b/indra/newview/skins/default/xui/zh/floater_scene_load_stats.xml new file mode 100644 index 0000000000..1a5c20abeb --- /dev/null +++ b/indra/newview/skins/default/xui/zh/floater_scene_load_stats.xml @@ -0,0 +1,64 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<floater name="Scene Load Statistics" title="å ´æ™¯è² è¼‰çµ±è¨ˆè³‡æ–™"> + <button label="æš«åœ" name="playpause"/> + <scroll_container name="statistics_scroll"> + <container_view name="statistics_view"> + <stat_view label="基本" name="basic"> + <stat_bar label="å¹€åƒç´ å·®" name="frame difference"/> + <stat_bar label="已收到UDP資料" name="bandwidth"/> + <stat_bar label="å°åŒ…æ失" name="packet_loss"/> + </stat_view> + <stat_view label="進階" name="advanced"> + <stat_view label="呈åƒ" name="render"> + <stat_bar label="物件總計" name="objs"/> + <stat_bar label="新物件" name="newobjs"/> + <stat_bar label="物件快å–讀å–率" name="object_cache_hits"/> + </stat_view> + <stat_view label="æ質" name="texture"> + <stat_bar label="å¿«å–讀å–率" name="texture_cache_hits"/> + <stat_bar label="å¿«å–讀å–延é²" name="texture_cache_read_latency"/> + <stat_bar label="計數" name="numimagesstat"/> + <stat_bar label="原始計數" name="numrawimagesstat"/> + </stat_view> + <stat_view label="網路" name="network"> + <stat_bar label="進入å°åŒ…" name="packetsinstat"/> + <stat_bar label="出去å°åŒ…" name="packetsoutstat"/> + <stat_bar label="物件" name="objectdatareceived"/> + <stat_bar label="æ質" name="texturedatareceived"/> + <stat_bar label="資產" name="assetudpdatareceived"/> + <stat_bar label="層次" name="layersdatareceived"/> + <stat_bar label="實入" name="messagedatain"/> + <stat_bar label="實出" name="messagedataout"/> + <stat_bar label="VFS 待行作æ¥" name="vfspendingoperations"/> + </stat_view> + </stat_view> + <stat_view label="模擬器" name="sim"> + <stat_bar label="物件" name="simobjects"/> + <stat_bar label="使用ä¸ç‰©ä»¶" name="simactiveobjects"/> + <stat_bar label="使用ä¸è…³æœ¬" name="simactivescripts"/> + <stat_bar label="進入å°åŒ…" name="siminpps"/> + <stat_bar label="出去å°åŒ…" name="simoutpps"/> + <stat_bar label="擱置下載" name="simpendingdownloads"/> + <stat_bar label="擱置上傳" name="simpendinguploads"/> + <stat_bar label="未承èªçš„總ä½å…ƒçµ„數" name="simtotalunackedbytes"/> + <stat_view label="時間(毫秒)" name="simperf"> + <stat_bar label="總幀時間" name="simframemsec"/> + <stat_bar label="淨時間" name="simnetmsec"/> + <stat_bar label="物ç†æ™‚é–“" name="simsimphysicsmsec"/> + <stat_bar label="模擬時間" name="simsimothermsec"/> + <stat_bar label="用戶時間" name="simagentmsec"/> + <stat_bar label="圖åƒæ™‚é–“" name="simimagesmsec"/> + <stat_bar label="腳本時間" name="simscriptmsec"/> + <stat_bar label="閒置時間" name="simsparemsec"/> + <stat_view label="時間細節(毫秒)" name="timedetails"> + <stat_bar label="物ç†æ¥é©Ÿ" name="simsimphysicsstepmsec"/> + <stat_bar label="更新物ç†å½¢ç‹€" name="simsimphysicsshapeupdatemsec"/> + <stat_bar label="物ç†ï¼ˆå…¶ä»–)" name="simsimphysicsothermsec"/> + <stat_bar label="ç¡çœ 時間" name="simsleepmsec"/> + <stat_bar label="基礎網路輸出入" name="simpumpiomsec"/> + </stat_view> + </stat_view> + </stat_view> + </container_view> + </scroll_container> +</floater> diff --git a/indra/newview/skins/default/xui/zh/floater_stats.xml b/indra/newview/skins/default/xui/zh/floater_stats.xml index 4af5684ec1..282e61e73d 100755 --- a/indra/newview/skins/default/xui/zh/floater_stats.xml +++ b/indra/newview/skins/default/xui/zh/floater_stats.xml @@ -4,17 +4,20 @@ <container_view name="statistics_view"> <stat_view label="基本" name="basic"> <stat_bar label="æ¯ç§’幀數" name="fps"/> - <stat_bar label="é »å¯¬" name="bandwidth"/> + <stat_bar label="已收到UDP資料" name="bandwidth"/> <stat_bar label="å°åŒ…æ失" name="packet_loss"/> <stat_bar label="探詢模擬器有無å應" name="ping"/> </stat_view> <stat_view label="進階" name="advanced"> <stat_view label="呈åƒ" name="render"> - <stat_bar label="繪出的 KTris(æ¯å¹€ï¼‰" name="ktrisframe"/> - <stat_bar label="繪出的 KTris(æ¯ç§’)" name="ktrissec"/> + <stat_bar label="KTris(æ¯å¹€ï¼‰" name="ktrisframe"/> + <stat_bar label="KTris(æ¯ç§’)" name="ktrissec"/> <stat_bar label="物件總計" name="objs"/> <stat_bar label="新物件" name="newobjs"/> <stat_bar label="物件快å–讀å–率" name="object_cache_hits"/> + <stat_bar label="已執行é®è”½æŸ¥è©¢" name="occlusion_queries"/> + <stat_bar label="物件已é®è”½" name="occluded"/> + <stat_bar label="物件已解除é®è”½" name="unoccluded"/> </stat_view> <stat_view label="æ質" name="texture"> <stat_bar label="å¿«å–讀å–率" name="texture_cache_hits"/> @@ -26,15 +29,32 @@ <stat_bar label="原始記憶" name="rawmemstat"/> <stat_bar label="ç•Œé™è¨˜æ†¶" name="glboundmemstat"/> </stat_view> + <stat_view label="記憶體使用狀æ³" name="memory"> + <stat_bar label="LLTrace" name="LLTrace"/> + <stat_bar label="使用者界é¢" name="LLView"/> + <stat_bar label="å—åž‹" name="LLFontFreetype"/> + <stat_bar label="收ç´å€" name="LLInventoryObject"/> + <stat_bar label="Viewer物件" name="LLViewerObject"/> + <stat_bar label="å…«å‰æ¨¹ç¾¤è³‡æ–™" name="LLViewerOctreeGroup"/> + <stat_bar label="å…«å‰æ¨¹è³‡æ–™" name="LLViewerOctreeEntry"/> + <stat_bar label="Viewer物件快å–" name="LLVOCacheEntry"/> + <stat_bar label="å¯ç¹ªç‰©ä»¶" name="LLDrawable"/> + <stat_bar label="臉部資料" name="LLFace"/> + <stat_bar label="æ繪資訊" name="LLDrawInfo"/> + <stat_bar label="æ質資料" name="LLTexture"/> + <stat_bar label="圖åƒè³‡æ–™" name="LLImage"/> + <stat_bar label="GL圖åƒè³‡æ–™" name="LLImageGL"/> + <stat_bar label="é ‚é»žç·©è¡" name="LLVertexBuffer"/> + </stat_view> <stat_view label="網路" name="network"> <stat_bar label="進入å°åŒ…" name="packetsinstat"/> <stat_bar label="出去å°åŒ…" name="packetsoutstat"/> - <stat_bar label="物件" name="objectkbitstat"/> - <stat_bar label="æ質" name="texturekbitstat"/> - <stat_bar label="資產" name="assetkbitstat"/> - <stat_bar label="層次" name="layerskbitstat"/> - <stat_bar label="實入" name="actualinkbitstat"/> - <stat_bar label="實出" name="actualoutkbitstat"/> + <stat_bar label="物件" name="objectdatareceived"/> + <stat_bar label="æ質" name="texturedatareceived"/> + <stat_bar label="資產" name="assetudpdatareceived"/> + <stat_bar label="層次" name="layersdatareceived"/> + <stat_bar label="實入" name="messagedatain"/> + <stat_bar label="實出" name="messagedataout"/> <stat_bar label="VFS 待行作æ¥" name="vfspendingoperations"/> </stat_view> </stat_view> @@ -64,8 +84,8 @@ <stat_bar label="出去å°åŒ…" name="simoutpps"/> <stat_bar label="擱置下載" name="simpendingdownloads"/> <stat_bar label="擱置上傳" name="simpendinguploads"/> - <stat_bar label="未承èªçš„總ä½å…ƒçµ„數" name="simtotalunackedbytes"/> - <stat_view label="時間(毫秒)" name="simperf"> + <stat_bar label="未承èªçš„總資料" name="simtotalunackedbytes"/> + <stat_view label="時間" name="simperf"> <stat_bar label="總禎時間" name="simframemsec"/> <stat_bar label="淨時間" name="simnetmsec"/> <stat_bar label="物ç†æ™‚é–“" name="simsimphysicsmsec"/> @@ -74,7 +94,7 @@ <stat_bar label="圖åƒæ™‚é–“" name="simimagesmsec"/> <stat_bar label="腳本時間" name="simscriptmsec"/> <stat_bar label="閒置時間" name="simsparemsec"/> - <stat_view label="時間細節(毫秒)" name="timedetails"> + <stat_view label="時間細節" name="timedetails"> <stat_bar label="物ç†æ¥é©Ÿ" name="simsimphysicsstepmsec"/> <stat_bar label="更新物ç†å½¢ç‹€" name="simsimphysicsshapeupdatemsec"/> <stat_bar label="物ç†ï¼ˆå…¶ä»–)" name="simsimphysicsothermsec"/> diff --git a/indra/newview/skins/default/xui/zh/menu_avatar_icon.xml b/indra/newview/skins/default/xui/zh/menu_avatar_icon.xml index ef0986a13b..cefb395256 100755 --- a/indra/newview/skins/default/xui/zh/menu_avatar_icon.xml +++ b/indra/newview/skins/default/xui/zh/menu_avatar_icon.xml @@ -2,6 +2,7 @@ <menu name="Avatar Icon Menu"> <menu_item_call label="察看檔案" name="Show Profile"/> <menu_item_call label="é€å‡º IM..." name="Send IM"/> + <menu_item_call label="è¦æ±‚瞬間傳é€" name="Request Teleport"/> <menu_item_call label="åŠ ç‚ºæœ‹å‹..." name="Add Friend"/> <menu_item_call label="移除朋å‹..." name="Remove Friend"/> </menu> diff --git a/indra/newview/skins/default/xui/zh/menu_inventory.xml b/indra/newview/skins/default/xui/zh/menu_inventory.xml index 7f745ffaa7..478f987035 100755 --- a/indra/newview/skins/default/xui/zh/menu_inventory.xml +++ b/indra/newview/skins/default/xui/zh/menu_inventory.xml @@ -70,6 +70,7 @@ <menu_item_call label="æ’放" name="Sound Play"/> <menu_item_call label="覆製 SLurl" name="url_copy"/> <menu_item_call label="æ·»åŠ åœ°æ¨™" name="About Landmark"/> + <menu_item_call label="顯示在地圖上" name="show_on_map"/> <menu_item_call label="在虛擬世界æ’放" name="Animation Play"/> <menu_item_call label="在本地æ’放" name="Animation Audition"/> <menu_item_call label="é€å‡ºå³æ™‚訊æ¯" name="Send Instant Message"/> diff --git a/indra/newview/skins/default/xui/zh/menu_login.xml b/indra/newview/skins/default/xui/zh/menu_login.xml index 1d3d771efb..4a1e2f4364 100755 --- a/indra/newview/skins/default/xui/zh/menu_login.xml +++ b/indra/newview/skins/default/xui/zh/menu_login.xml @@ -5,7 +5,15 @@ <menu_item_call label="退出 [APP_NAME]" name="Quit"/> </menu> <menu label="幫助" name="Help"> - <menu_item_call label="[SECOND_LIFE] 幫助" name="Second Life Help"/> + <menu_item_call label="簡易教å¸â€¦" name="How To"/> + <menu_item_call label="快速上手" name="Quickstart"/> + <menu_item_call label="知è˜åº«" name="Knowledge Base"/> + <menu_item_call label="ç¶åŸº" name="Wiki"/> + <menu_item_call label="社群論壇" name="Community Forums"/> + <menu_item_call label="支æ´å…¥å£" name="Support portal"/> + <menu_item_call label="[SECOND_LIFE] 最新消æ¯" name="Second Life News"/> + <menu_item_call label="[SECOND_LIFE] 部è½æ ¼" name="Second Life Blogs"/> + <menu_item_call label="å›žå ±éŒ¯èª¤" name="Report Bug"/> <menu_item_call label="關於 [APP_NAME]" name="About Second Life"/> </menu> <menu_item_check label="顯示除錯é¸å–®" name="Show Debug Menu"/> diff --git a/indra/newview/skins/default/xui/zh/menu_teleport_history_item.xml b/indra/newview/skins/default/xui/zh/menu_teleport_history_item.xml index c636e108ad..bf60983896 100755 --- a/indra/newview/skins/default/xui/zh/menu_teleport_history_item.xml +++ b/indra/newview/skins/default/xui/zh/menu_teleport_history_item.xml @@ -2,5 +2,5 @@ <context_menu name="Teleport History Item Context Menu"> <menu_item_call label="瞬間傳é€" name="Teleport"/> <menu_item_call label="更多資訊" name="More Information"/> - <menu_item_call label="覆製到剪貼簿" name="CopyToClipboard"/> + <menu_item_call label="覆製 SLurl" name="CopyToClipboard"/> </context_menu> diff --git a/indra/newview/skins/default/xui/zh/menu_viewer.xml b/indra/newview/skins/default/xui/zh/menu_viewer.xml index b267bda2bb..eb602d8e3b 100755 --- a/indra/newview/skins/default/xui/zh/menu_viewer.xml +++ b/indra/newview/skins/default/xui/zh/menu_viewer.xml @@ -70,11 +70,11 @@ <menu_item_check label="進階é¸å–®" name="Show Advanced Menu"/> </menu> <menu label="太陽" name="Sun"> - <menu_item_call label="日出" name="Sunrise"/> - <menu_item_call label="ä¸åˆ" name="Noon"/> - <menu_item_call label="æ—¥è½" name="Sunset"/> - <menu_item_call label="åˆå¤œ" name="Midnight"/> - <menu_item_call label="使用地å€è¨å®š" name="Use Region Settings"/> + <menu_item_check label="日出" name="Sunrise"/> + <menu_item_check label="ä¸åˆ" name="Noon"/> + <menu_item_check label="æ—¥è½" name="Sunset"/> + <menu_item_check label="åˆå¤œ" name="Midnight"/> + <menu_item_check label="使用地å€è¨å®š" name="Use Region Settings"/> </menu> <menu label="環境編輯器" name="Environment Editor"> <menu_item_call label="環境è¨å®šâ€¦" name="Environment Settings"/> @@ -163,8 +163,6 @@ </menu> <menu label="幫助" name="Help"> <menu_item_call label="簡易教å¸â€¦" name="How To"/> - <menu_item_call label="[SECOND_LIFE] 幫助" name="Second Life Help"/> - <menu_item_call label="使用者指å—" name="User’s guide"/> <menu_item_call label="知è˜åº«" name="Knowledge Base"/> <menu_item_call label="ç¶åŸº" name="Wiki"/> <menu_item_call label="社群論壇" name="Community Forums"/> @@ -186,6 +184,7 @@ <menu label="效能工具" name="Performance Tools"> <menu_item_call label="Lag 測é‡å™¨" name="Lag Meter"/> <menu_item_check label="統計列" name="Statistics Bar"/> + <menu_item_call label="å ´æ™¯è² è¼‰çµ±è¨ˆè³‡æ–™" name="Scene Load Statistics"/> <menu_item_check label="顯示化身的繪製é‡é‡" name="Avatar Rendering Cost"/> </menu> <menu label="高亮顯示與å¯è¦‹åº¦" name="Highlighting and Visibility"> @@ -248,6 +247,7 @@ <menu_item_check label="快速碼錶" name="Fast Timers"/> <menu_item_check label="記憶體" name="Memory"/> <menu_item_check label="å ´æ™¯çµ±è¨ˆè³‡æ–™" name="Scene Statistics"/> + <menu_item_check label="å ´æ™¯è¼‰å…¥ç›£æŽ§å™¨" name="Scene Loading Monitor"/> <menu_item_call label="æ質擷å–除錯控制å°" name="Texture Fetch Debug Console"/> <menu_item_call label="地å€è³‡è¨Šå‚³è‡³é™¤éŒ¯æŽ§åˆ¶å°" name="Region Info to Debug Console"/> <menu_item_call label="群組資訊至除錯控制å°" name="Group Info to Debug Console"/> @@ -284,6 +284,7 @@ <menu_item_check label="定期出ç¾æ…¢å¹€çŽ‡" name="Periodic Slow Frame"/> <menu_item_check label="ç•«é¢æ¸¬è©¦" name="Frame Test"/> <menu_item_call label="幀特性" name="Frame Profile"/> + <menu_item_call label="標竿測試" name="Benchmark"/> </menu> <menu label="呈åƒçš„元資料" name="Render Metadata"> <menu_item_check label="外框箱" name="Bounding Boxes"/> @@ -302,6 +303,7 @@ <menu_item_check label="建製佇列" name="Build Queue"/> <menu_item_check label="燈光" name="Lights"/> <menu_item_check label="碰撞骨架" name="Collision Skeleton"/> + <menu_item_check label="接點" name="Joints"/> <menu_item_check label="光線投射" name="Raycast"/> <menu_item_check label="風力å‘é‡" name="Wind Vectors"/> <menu_item_check label="繪出複雜度" name="rendercomplexity"/> @@ -334,6 +336,7 @@ <menu_item_check label="使附著燈光呈åƒ" name="Render Attached Lights"/> <menu_item_check label="使附著例å效果呈åƒ" name="Render Attached Particles"/> <menu_item_check label="åœæ‡¸ç™¼å…‰ç‰©ä»¶" name="Hover Glow Objects"/> + <menu_item_call label="ç«‹å³æ¸…除快å–" name="Cache Clear"/> </menu> <menu label="網路" name="Network"> <menu_item_check label="æš«åœç”¨æˆ¶" name="AgentPause"/> @@ -366,7 +369,6 @@ <menu_item_call label="傾å°ç„¦é»žå®¹å™¨" name="Dump Focus Holder"/> <menu_item_call label="列å°æ‰€é¸ç‰©ä»¶è³‡è¨Š" name="Print Selected Object Info"/> <menu_item_call label="列å°ç”¨æˆ¶è³‡è¨Š" name="Print Agent Info"/> - <menu_item_check label="地å€é™¤éŒ¯æŽ§åˆ¶å°" name="Region Debug Console"/> <menu_item_check label="除錯 SelectMgr" name="Debug SelectMgr"/> <menu_item_check label="除錯點按動作" name="Debug Clicks"/> <menu_item_check label="視角除錯" name="Debug Views"/> diff --git a/indra/newview/skins/default/xui/zh/notifications.xml b/indra/newview/skins/default/xui/zh/notifications.xml index 864f20fc15..46cbaa60b1 100755 --- a/indra/newview/skins/default/xui/zh/notifications.xml +++ b/indra/newview/skins/default/xui/zh/notifications.xml @@ -114,15 +114,15 @@ <usetemplate name="okbutton" yestext="確定"/> </notification> <notification name="OutboxImportFailed"> - 轉移失敗 + 傳é€å¤±æ•—,錯誤碼 '[ERROR_CODE]' 未將任何資料夾é€å¾€ç¬¬äºŒäººç”Ÿè³¼ç‰©å¸‚集,系統或網路出錯。 è«‹ç¨å€™å†è©¦ä¸€æ¬¡ã€‚ <usetemplate name="okbutton" yestext="確定"/> </notification> <notification name="OutboxInitFailed"> - 第二人生購物市集åˆå§‹åŒ–失敗 + 購物市集åˆå§‹åŒ–失敗,錯誤碼 '[ERROR_CODE]' -第二人生購物市集åˆå§‹åŒ–失敗,系統或網路出錯。 è«‹ç¨å€™å†è©¦ä¸€æ¬¡ã€‚ +購物市集åˆå§‹åŒ–失敗,系統或網路出錯。 è«‹ç¨å€™å†è©¦ä¸€æ¬¡ã€‚ <usetemplate name="okbutton" yestext="確定"/> </notification> <notification name="CompileQueueSaveText"> @@ -1722,6 +1722,10 @@ SHA1 指紋:[MD5_DIGEST] ä½ ç¢ºå®šè¦çž¬é–“傳é€åˆ°<nolink>[LOCATION]</nolink>? <usetemplate ignoretext="確èªæˆ‘è¦çž¬é–“傳é€åˆ°æŸå€‹åœ°æ¨™" name="okcancelignore" notext="å–消" yestext="瞬間傳é€"/> </notification> + <notification name="TeleportViaSLAPP"> + ä½ ç¢ºå®šè¦çž¬é–“傳é€åˆ°<nolink>[LOCATION]</nolink>? + <usetemplate ignoretext="確èªæˆ‘è¦é€éŽSLAPP瞬間傳é€" name="okcancelignore" notext="å–消" yestext="瞬間傳é€"/> + </notification> <notification name="TeleportToPick"> 瞬間傳é€åˆ° [PICK]? <usetemplate ignoretext="確èªæˆ‘è¦çž¬é–“傳é€åˆ°ç²¾é¸åœ°é»žçš„所在ä½ç½®" name="okcancelignore" notext="å–消" yestext="瞬間傳é€"/> @@ -1931,6 +1935,9 @@ SHA1 指紋:[MD5_DIGEST] <notification name="ProblemAddingEstateManager"> æ–°å¢žé ˜åœ°ç®¡ç†äººæ™‚出å•é¡Œã€‚ å…¶ä¸ä¸€å€‹é ˜åœ°çš„管ç†äººæ¸…å–®å¯èƒ½å·²ç¶“é¡æ»¿ã€‚ </notification> + <notification name="ProblemAddingEstateBanManager"> + ç„¡æ³•æŠŠé ˜åœ°æ‰€æœ‰äººæˆ–ç®¡ç†å“¡åŠ å…¥é ˜åœ°çš„å°éŽ–åå–®ä¸ã€‚ + </notification> <notification name="ProblemAddingEstateGeneric"> æ–°å¢žåˆ°é€™å€‹é ˜åœ°æ¸…å–®æ™‚å‡ºå•é¡Œã€‚ å…¶ä¸ä¸€å€‹é ˜åœ°çš„清單å¯èƒ½å·²æ»¿ã€‚ </notification> @@ -3019,7 +3026,7 @@ SHA1 指紋:[MD5_DIGEST] 居民: -[RESIDENTS] +<nolink>[RESIDENTS]</nolink> <usetemplate name="okcancelbuttons" notext="å–消" yestext="確定"/> </notification> <notification name="ShareFolderConfirmation"> @@ -3031,7 +3038,7 @@ SHA1 指紋:[MD5_DIGEST] 居民: -[RESIDENTS] +<nolink>[RESIDENTS]</nolink> <usetemplate name="okcancelbuttons" notext="å–消" yestext="確定"/> </notification> <notification name="ItemsShared"> @@ -3487,10 +3494,6 @@ SHA1 指紋:[MD5_DIGEST] <notification name="EjectComingSoon"> ä½ ä¸å†å…è¨±å¾…åœ¨é€™è£¡ï¼Œå¿…é ˆåœ¨ [EJECT_TIME] 秒內離開。 </notification> - <notification name="NoEnterServerFull"> - ä½ ç„¡æ³•é€²å…¥é€™åœ°å€ï¼Œå› 為 -伺æœå™¨æ»¿è¼‰ã€‚ - </notification> <notification name="SaveBackToInvDisabled"> 「儲å˜å›žæ”¶ç´å€ã€åŠŸèƒ½å·²è¢«åœç”¨ã€‚ </notification> @@ -3680,6 +3683,9 @@ SHA1 指紋:[MD5_DIGEST] <notification name="LinkFailedTooMuchPhysics"> 物件使用了éŽå¤šç‰©ç†è³‡æºï¼Œå…¶å‹•æ…‹ç‰¹æ€§å·²è¢«åœç”¨ã€‚ </notification> + <notification name="EstateManagerFailedllTeleportHome"> + ä½æ–¼[SLURL]的物件'[OBJECT_NAME]'ç„¡æ³•å°‡é ˜åœ°ç®¡ç†å“¡çž¬é–“傳é€å›žå®¶ã€‚ + </notification> <notification name="TeleportedHomeByObjectOnParcel"> ä½ å·²è¢« '[PARCEL_NAME]' 地段的物件 '[OBJECT_NAME]' æˆåŠŸçž¬é–“傳é€å›žå®¶ </notification> @@ -3870,13 +3876,18 @@ SHA1 指紋:[MD5_DIGEST] 未é¸å–è¶³å¤ ç§Ÿç”¨åœ°æ®µï¼Œç„¡æ³•åˆä½µã€‚ </notification> <notification name="CantDivideLandMultipleParcelsSelected"> - 無法分割土地,\nå› ç‚ºä½ é¸å–了多個地段,\n請縮å°æ‰€é¸åœŸåœ°ã€‚ + 無法分割土地。 +é¸å–了超éŽä¸€å€‹åœ°æ®µã€‚ +請試著縮å°æ‰€é¸çš„土地。 </notification> <notification name="CantDivideLandCantFindParcel"> - 無法分割土地。\n找ä¸åˆ°åœ°æ®µã€‚\n請到「幫助 > å›žå ±éŒ¯èª¤â€¦â€¦ã€å›žå ±å•é¡Œ + 無法分割土地。 +找ä¸åˆ°åœ°æ®µã€‚ +請到「幫助->å›žå ±éŒ¯èª¤ã€å›žå ±å•é¡Œ </notification> <notification name="CantDivideLandWholeParcelSelected"> - 無法分割土地。 é¸å–了整個地段。\n請試著縮å°æ‰€é¸çš„土地。 + 無法分割土地。 é¸æ“‡äº†æ•´å€‹åœ°æ®µã€‚ +請試著縮å°æ‰€é¸çš„土地。 </notification> <notification name="LandHasBeenDivided"> 土地分割æˆåŠŸã€‚ @@ -4016,4 +4027,8 @@ SHA1 指紋:[MD5_DIGEST] 無法移動檔案。 å·²æ¢å¾©å‰ä¸€å€‹è·¯å¾‘。 <usetemplate ignoretext="無法移動檔案。 å·²æ¢å¾©å‰ä¸€å€‹è·¯å¾‘。" name="okignore" yestext="確定"/> </notification> + <notification name="ChatHistoryIsBusyAlert"> + èŠå¤©ç´€éŒ„檔案還在處ç†å‰ä¸€å€‹å‹•ä½œã€‚ è«‹ç¨å€™å†è©¦ï¼Œæˆ–è«‹æ›ä¸€å€‹èŠå¤©å°è±¡ã€‚ + <usetemplate name="okbutton" yestext="確定"/> + </notification> </notifications> diff --git a/indra/newview/skins/default/xui/zh/panel_group_info_sidetray.xml b/indra/newview/skins/default/xui/zh/panel_group_info_sidetray.xml index f979a4c53e..43e3507961 100755 --- a/indra/newview/skins/default/xui/zh/panel_group_info_sidetray.xml +++ b/indra/newview/skins/default/xui/zh/panel_group_info_sidetray.xml @@ -20,7 +20,7 @@ <layout_panel name="group_accordions"> <accordion name="groups_accordion"> <accordion_tab name="group_general_tab" title="基本資料"/> - <accordion_tab name="group_roles_tab" title="角色"/> + <accordion_tab name="group_roles_tab" title="角色與æˆå“¡"/> <accordion_tab name="group_notices_tab" title="通知"/> <accordion_tab name="group_land_tab" title="土地 / 資產"/> </accordion> diff --git a/indra/newview/skins/default/xui/zh/panel_group_roles.xml b/indra/newview/skins/default/xui/zh/panel_group_roles.xml index 59086c3de2..69ee8451de 100755 --- a/indra/newview/skins/default/xui/zh/panel_group_roles.xml +++ b/indra/newview/skins/default/xui/zh/panel_group_roles.xml @@ -21,6 +21,7 @@ <name_list.columns label="æˆå“¡" name="name"/> <name_list.columns label="æ款" name="donated"/> <name_list.columns label="狀態" name="online"/> + <name_list.columns label="é 銜" name="title"/> </name_list> <button label="邀請" name="member_invite"/> <button label="踢出" name="member_eject"/> diff --git a/indra/newview/skins/default/xui/zh/panel_region_debug.xml b/indra/newview/skins/default/xui/zh/panel_region_debug.xml index e5d5e6eaf7..0bb59a7b14 100755 --- a/indra/newview/skins/default/xui/zh/panel_region_debug.xml +++ b/indra/newview/skins/default/xui/zh/panel_region_debug.xml @@ -28,7 +28,8 @@ <check_box label="æ–¼é€™å€‹é ˜åœ°å…§çš„æ¯ä¸€å€‹åœ°å€" name="return_estate_wide" tool_tip="é€€å›žé€™å€‹é ˜åœ°å…§å…¨éƒ¨åœ°å€ä¸æ¨™è¨˜ç‚ºä»–的物件"/> <button label="退回" name="return_btn"/> <button label="å–得最常碰撞的物件..." name="top_colliders_btn" tool_tip="æ¢åˆ—出目å‰é‹ä½œä¸æœ€å¸¸ç¢°æ’žçš„物件清單"/> - <button label="å–得最耗能腳本..." name="top_scripts_btn" tool_tip="æ¢åˆ—���目å‰é‹ä½œä¸æœ€è€—能的腳本清單"/> <button label="地å€é‡æ–°å•Ÿå‹•" name="restart_btn" tool_tip="給予兩分é˜å€’數計時並é‡æ–°å•Ÿå‹•"/> + <button label="å–得最耗能腳本..." name="top_scripts_btn" tool_tip="æ¢åˆ—���目å‰é‹ä½œä¸æœ€è€—能的腳本清單"/> <button label="å–消é‡æ–°å•Ÿå‹•" name="cancel_restart_btn" tool_tip="å–消地å€é‡æ–°å•Ÿå‹•"/> + <button label="地å€é™¤éŒ¯æŽ§åˆ¶å°" name="region_debug_console_btn" tool_tip="開啟地å€é™¤éŒ¯æŽ§åˆ¶å°"/> </panel> diff --git a/indra/newview/skins/default/xui/zh/panel_region_general.xml b/indra/newview/skins/default/xui/zh/panel_region_general.xml index f6b2c46354..0ce3b659b2 100755 --- a/indra/newview/skins/default/xui/zh/panel_region_general.xml +++ b/indra/newview/skins/default/xui/zh/panel_region_general.xml @@ -20,12 +20,12 @@ </text> <check_box label="阻æ¢åœŸåœ°è®Šå½¢" name="block_terraform_check"/> <check_box label="阻æ¢é£›è¡Œ" name="block_fly_check"/> + <check_box label="ç¦æ¢é£›è¶Šåœ°æ®µ" name="block_fly_over_check" tool_tip="將出入管制往上空擴大,一併ç¦æ¢é£›è¶Šåœ°æ®µ"/> <check_box label="å…許傷害" name="allow_damage_check"/> <check_box label="é™åˆ¶æŽ¨æ’ž" name="restrict_pushobject"/> <check_box label="å…許土地轉售" name="allow_land_resell_check"/> <check_box label="å…許土地 åˆä½µ/分割" name="allow_parcel_changes_check"/> <check_box label="阻擋土地顯示於æœå°‹ä¸" name="block_parcel_search_check" tool_tip="讓其他人å¯ä»¥åœ¨æœå°‹çµæžœä¸çœ‹åˆ°é€™å€‹åœ°å€èˆ‡å…¶ä¸çš„地段"/> - <check_box label="å…許網é¢ç‰©ä»¶" name="mesh_rez_enabled_check" tool_tip="å…許大家在æ¤åœ°å€ç”¢ç”Ÿç¶²é¢ç‰©ä»¶"/> <spinner label="人數上é™" name="agent_limit_spin"/> <spinner label="物件紅利" name="object_bonus_spin"/> <text label="分級" name="access_text"> diff --git a/indra/newview/skins/default/xui/zh/sidepanel_inventory.xml b/indra/newview/skins/default/xui/zh/sidepanel_inventory.xml index 4034a7154f..54ea7cab22 100755 --- a/indra/newview/skins/default/xui/zh/sidepanel_inventory.xml +++ b/indra/newview/skins/default/xui/zh/sidepanel_inventory.xml @@ -25,15 +25,15 @@ <panel name="button_panel"> <layout_stack name="button_panel_ls"> <layout_panel name="info_btn_lp"> - <button label="檔案" name="info_btn" tool_tip="顯示物件檔案"/> + <button label="檔案" name="info_btn" tool_tip="顯示物件簡介"/> </layout_panel> <layout_panel name="share_btn_lp"> <button label="分享" name="share_btn" tool_tip="分享一個收ç´å€ç‰©å“"/> </layout_panel> <layout_panel name="shop_btn_lp"> - <button label="購物" name="shop_btn" tool_tip="é–‹å•Ÿ Marketplace 購物市集網é "/> + <button label="購物" name="shop_btn" tool_tip="開啟購物市集網é "/> <button label="穿上" name="wear_btn" tool_tip="穿上所é¸æ“‡çš„è£æ‰®"/> - <button label="æ’放" name="play_btn"/> + <button label="éŠæˆ²" name="play_btn"/> <button label="瞬間傳é€" name="teleport_btn" tool_tip="瞬間傳é€åˆ°æ‰€é¸çš„å€åŸŸ"/> </layout_panel> </layout_stack> diff --git a/indra/newview/skins/default/xui/zh/strings.xml b/indra/newview/skins/default/xui/zh/strings.xml index d9fa105ef4..4e636e7816 100755 --- a/indra/newview/skins/default/xui/zh/strings.xml +++ b/indra/newview/skins/default/xui/zh/strings.xml @@ -37,6 +37,45 @@ <string name="StartupRequireDriverUpdate"> 顯åƒåˆå§‹åŒ–失敗。 è«‹æ›´æ–°ä½ çš„é¡¯åƒå¡é©…動程å¼ï¼ </string> + <string name="AboutHeader"> + [APP_NAME] [VIEWER_VERSION_0].[VIEWER_VERSION_1].[VIEWER_VERSION_2] ([VIEWER_VERSION_3]) [BUILD_DATE] [BUILD_TIME] ([CHANNEL]) +[[VIEWER_RELEASE_NOTES_URL] [ReleaseNotes]] + </string> + <string name="AboutCompiler"> + 以 [COMPILER_VERSION] 版本 [COMPILER] 建置 + </string> + <string name="AboutPosition"> + ä½ çš„æ–¹ä½æ˜¯ [POSITION_LOCAL_0,number,1], [POSITION_LOCAL_1,number,1], [POSITION_LOCAL_2,number,1],地å€å:[REGION],主機:<nolink>[HOSTNAME]</nolink> ([HOSTIP]) +第二人生URL:<nolink>[SLURL]</nolink> +(全域å標:[POSITION_0,number,1], [POSITION_1,number,1], [POSITION_2,number,1]) +[SERVER_VERSION] +[SERVER_RELEASE_NOTES_URL] + </string> + <string name="AboutSystem"> + CPU:[CPU] +記憶體:[MEMORY_MB] MB +作æ¥ç³»çµ±ç‰ˆæœ¬ï¼š[OS_VERSION] +顯示å¡ä¾›æ‡‰å•†ï¼š[GRAPHICS_CARD_VENDOR] +顯示å¡ï¼š[GRAPHICS_CARD] + </string> + <string name="AboutDriver"> + Windows 顯示驅動程å¼ç‰ˆæœ¬ï¼š[GRAPHICS_DRIVER_VERSION] + </string> + <string name="AboutLibs"> + OpenGL 版本:[OPENGL_VERSION] + +libcurl 版本: [LIBCURL_VERSION] +J2C 解碼器版本: [J2C_VERSION] +音效驅動程å¼ç‰ˆæœ¬ï¼š [AUDIO_DRIVER_VERSION] +Qt Webkit 版本: [QT_WEBKIT_VERSION] +語音伺æœå™¨ç‰ˆæœ¬ï¼š [VOICE_VERSION] + </string> + <string name="AboutTraffic"> + å°åŒ…丟失:[PACKETS_LOST,number,0]/[PACKETS_IN,number,0] ([PACKETS_PCT,number,1]%) + </string> + <string name="ErrorFetchingServerReleaseNotesURL"> + æ“·å–伺æœå™¨ç‰ˆæœ¬èªªæ˜Ž URL 時出錯。 + </string> <string name="ProgressRestoring"> 回å˜ä¸... </string> @@ -929,15 +968,15 @@ http://secondlife.com/viewer-access-faq <string name="ControlYourCamera"> æŽ§åˆ¶ä½ çš„æ”影機 </string> + <string name="TeleportYourAgent"> + 瞬間傳é€ä½ 本人 + </string> <string name="NotConnected"> 未è¯æŽ¥ </string> <string name="AgentNameSubst"> ï¼ˆä½ ï¼‰ </string> - <string name="TeleportYourAgent"> - 瞬間傳é€ä½ 本人 - </string> <string name="JoinAnExperience"> åŠ å…¥é«”é©— </string> @@ -1291,6 +1330,18 @@ http://secondlife.com/viewer-access-faq <string name="InventoryOutboxNoItems"> 將資料夾拖曳到這個å€åŸŸï¼Œå†é»žæŒ‰ã€Œé€å¾€ç¬¬äºŒäººç”Ÿè³¼ç‰©å¸‚集ã€ï¼Œå³å¯åœ¨[[MARKETPLACE_DASHBOARD_URL]第二人生購物市集]登列出售。 </string> + <string name="InventoryOutboxInitializingTitle"> + æ£åœ¨åˆå§‹åŒ–購物市集。 + </string> + <string name="InventoryOutboxInitializing"> + 我們æ£åœ¨æ±‚å–ä½ çš„[[MARKETPLACE_CREATE_STORE_URL] 購物市集商店]帳戶。 + </string> + <string name="InventoryOutboxErrorTitle"> + 購物市集出錯。 + </string> + <string name="InventoryOutboxError"> + [[MARKETPLACE_CREATE_STORE_URL] 購物市集商店]æ£å‚³å›žéŒ¯èª¤ã€‚ + </string> <string name="Marketplace Error None"> 零錯誤 </string> @@ -1318,6 +1369,9 @@ http://secondlife.com/viewer-access-faq <string name="Open landmarks"> 開啟地標 </string> + <string name="Unconstrained"> + ä¸å—é™ + </string> <string name="no_transfer" value="(ç¦æ¢è½‰è®“)"/> <string name="no_modify" value="(ç¦æ¢ä¿®æ”¹ï¼‰"/> <string name="no_copy" value="(ç¦æ¢è¤‡è£½ï¼‰"/> @@ -1718,6 +1772,9 @@ http://secondlife.com/viewer-access-faq <string name="CompileQueueDownloadedCompiling"> 已下載,æ£åœ¨ç·¨è¯ä¸ </string> + <string name="CompileQueueServiceUnavailable"> + 腳本編è¯æœå‹™ç„¡æ³•ä½¿ç”¨ + </string> <string name="CompileQueueScriptNotFound"> 伺æœå™¨ä¸Šæœªç™¼ç¾è…³æœ¬ã€‚ </string> diff --git a/indra/win_updater/CMakeLists.txt b/indra/win_updater/CMakeLists.txt deleted file mode 100755 index 210486c668..0000000000 --- a/indra/win_updater/CMakeLists.txt +++ /dev/null @@ -1,45 +0,0 @@ -# -*- cmake -*- - -project(win_updater) - -include(00-Common) -include(LLCommon) -include(Linking) - -# *HACK - override msvcrt implementation (intialized on 00-Common) to be -# statically linked for the installer this relies on vc taking the last flag on -# the command line -set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} /MTd") -set(CMAKE_CXX_FLAGS_RELWITHDEBINFO "${CMAKE_CXX_FLAGS_RELWITHDEBINFO} /MT") -set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} /MT") - -include_directories( - ${LLCOMMON_INCLUDE_DIRS} - ) - -set(win_updater_SOURCE_FILES updater.cpp) - -set(win_updater_HEADER_FILES CMakeLists.txt) - -set_source_files_properties(${win_updater_HEADER_FILES} - PROPERTIES HEADER_FILE_ONLY TRUE) - -list(APPEND win_updater_SOURCE_FILES ${win_updater_HEADER_FILES}) - -add_executable(windows-updater WIN32 ${win_updater_SOURCE_FILES}) - -target_link_libraries(windows-updater - wininet - user32 - gdi32 - shell32 - ) - -set_target_properties(windows-updater - PROPERTIES - LINK_FLAGS "/NODEFAULTLIB:MSVCRT" - LINK_FLAGS_DEBUG "/NODEFAULTLIB:\"LIBCMT;MSVCRT\"" - ) - -# The windows-updater doesn't link against anything non-system, apparently -#ll_deploy_sharedlibs_command(windows-updater) diff --git a/indra/win_updater/updater.cpp b/indra/win_updater/updater.cpp deleted file mode 100755 index aeab5a3b13..0000000000 --- a/indra/win_updater/updater.cpp +++ /dev/null @@ -1,516 +0,0 @@ -/** - * @file updater.cpp - * @brief Windows auto-updater - * - * $LicenseInfo:firstyear=2002&license=viewerlgpl$ - * Second Life Viewer Source Code - * Copyright (C) 2010, Linden Research, Inc. - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; - * version 2.1 of the License only. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - * - * Linden Research, Inc., 945 Battery Street, San Francisco, CA 94111 USA - * $/LicenseInfo$ - */ - -// -// Usage: updater -url <url> -// - -// We use dangerous fopen, strtok, mbstowcs, sprintf -// which generates warnings on VC2005. -// *TODO: Switch to fopen_s, strtok_s, etc. -#define _CRT_SECURE_NO_DEPRECATE - -#include <windows.h> -#include <wininet.h> -#include <stdio.h> -#include <string> -#include <iostream> -#include <stdexcept> -#include <sstream> -#include <fstream> - -#define BUFSIZE 8192 - -int gTotalBytesRead = 0; -DWORD gTotalBytes = -1; -HWND gWindow = NULL; -WCHAR gProgress[256]; -char* gUpdateURL = NULL; - -#if _DEBUG -std::ofstream logfile; -#define DEBUG(expr) logfile << expr << std::endl -#else -#define DEBUG(expr) /**/ -#endif - -char* wchars_to_utf8chars(const WCHAR* in_chars) -{ - int tlen = 0; - const WCHAR* twc = in_chars; - while (*twc++ != 0) - { - tlen++; - } - char* outchars = new char[tlen]; - char* res = outchars; - for (int i=0; i<tlen; i++) - { - int cur_char = (int)(*in_chars++); - if (cur_char < 0x80) - { - *outchars++ = (char)cur_char; - } - else - { - *outchars++ = '?'; - } - } - *outchars = 0; - return res; -} - -class Fetcher -{ -public: - Fetcher(const std::wstring& uri) - { - // These actions are broken out as separate methods not because it - // makes the code clearer, but to avoid triggering AntiVir and - // McAfee-GW-Edition virus scanners (DEV-31680). - mInet = openInet(); - mDownload = openUrl(uri); - } - - ~Fetcher() - { - DEBUG("Calling InternetCloseHandle"); - InternetCloseHandle(mDownload); - InternetCloseHandle(mInet); - } - - unsigned long read(char* buffer, size_t bufflen) const; - - DWORD getTotalBytes() const - { - DWORD totalBytes; - DWORD sizeof_total_bytes = sizeof(totalBytes); - HttpQueryInfo(mDownload, HTTP_QUERY_CONTENT_LENGTH | HTTP_QUERY_FLAG_NUMBER, - &totalBytes, &sizeof_total_bytes, NULL); - return totalBytes; - } - - struct InetError: public std::runtime_error - { - InetError(const std::string& what): std::runtime_error(what) {} - }; - -private: - // We test results from a number of different MS functions with different - // return types -- but the common characteristic is that 0 (i.e. (! result)) - // means an error of some kind. - template <typename RESULT> - static RESULT check(const std::string& desc, RESULT result) - { - if (result) - { - // success, show caller - return result; - } - DWORD err = GetLastError(); - std::ostringstream out; - out << desc << " Failed: " << err; - DEBUG(out.str()); - throw InetError(out.str()); - } - - HINTERNET openUrl(const std::wstring& uri) const; - HINTERNET openInet() const; - - HINTERNET mInet, mDownload; -}; - -HINTERNET Fetcher::openInet() const -{ - DEBUG("Calling InternetOpen"); - // Init wininet subsystem - return check("InternetOpen", - InternetOpen(L"LindenUpdater", INTERNET_OPEN_TYPE_PRECONFIG, NULL, NULL, 0)); -} - -HINTERNET Fetcher::openUrl(const std::wstring& uri) const -{ - DEBUG("Calling InternetOpenUrl: " << wchars_to_utf8chars(uri.c_str())); - return check("InternetOpenUrl", - InternetOpenUrl(mInet, uri.c_str(), NULL, 0, INTERNET_FLAG_NEED_FILE, NULL)); -} - -unsigned long Fetcher::read(char* buffer, size_t bufflen) const -{ - unsigned long bytes_read = 0; - DEBUG("Calling InternetReadFile"); - check("InternetReadFile", - InternetReadFile(mDownload, buffer, bufflen, &bytes_read)); - return bytes_read; -} - -int WINAPI get_url_into_file(const std::wstring& uri, const std::string& path, int *cancelled) -{ - int success = FALSE; - *cancelled = FALSE; - - DEBUG("Opening '" << path << "'"); - - FILE* fp = fopen(path.c_str(), "wb"); /* Flawfinder: ignore */ - - if (!fp) - { - DEBUG("Failed to open '" << path << "'"); - return success; - } - - // Note, ctor can throw, since it uses check() function. - Fetcher fetcher(uri); - gTotalBytes = fetcher.getTotalBytes(); - -/*==========================================================================*| - // nobody uses total_bytes?!? What's this doing here? - DWORD total_bytes = 0; - success = check("InternetQueryDataAvailable", - InternetQueryDataAvailable(hdownload, &total_bytes, 0, 0)); -|*==========================================================================*/ - - success = FALSE; - while(!success && !(*cancelled)) - { - char data[BUFSIZE]; /* Flawfinder: ignore */ - unsigned long bytes_read = fetcher.read(data, sizeof(data)); - - if (!bytes_read) - { - DEBUG("InternetReadFile Read " << bytes_read << " bytes."); - } - - DEBUG("Reading Data, bytes_read = " << bytes_read); - - if (bytes_read == 0) - { - // If InternetFileRead returns TRUE AND bytes_read == 0 - // we've successfully downloaded the entire file - wsprintf(gProgress, L"Download complete."); - success = TRUE; - } - else - { - // write what we've got, then continue - fwrite(data, sizeof(char), bytes_read, fp); - - gTotalBytesRead += int(bytes_read); - - if (gTotalBytes != -1) - wsprintf(gProgress, L"Downloaded: %d%%", 100 * gTotalBytesRead / gTotalBytes); - else - wsprintf(gProgress, L"Downloaded: %dK", gTotalBytesRead / 1024); - - } - - DEBUG("Calling InvalidateRect"); - - // Mark the window as needing redraw (of the whole thing) - InvalidateRect(gWindow, NULL, TRUE); - - // Do the redraw - DEBUG("Calling UpdateWindow"); - UpdateWindow(gWindow); - - DEBUG("Calling PeekMessage"); - MSG msg; - while (PeekMessage(&msg, NULL, 0, 0, PM_REMOVE)) - { - TranslateMessage(&msg); - DispatchMessage(&msg); - - if (msg.message == WM_QUIT) - { - // bail out, user cancelled - *cancelled = TRUE; - } - } - } - - fclose(fp); - return success; -} - -LRESULT CALLBACK WinProc(HWND hwnd, UINT message, WPARAM wparam, LPARAM lparam) -{ - HDC hdc; // Drawing context - PAINTSTRUCT ps; - - switch(message) - { - case WM_PAINT: - { - hdc = BeginPaint(hwnd, &ps); - - RECT rect; - GetClientRect(hwnd, &rect); - DrawText(hdc, gProgress, -1, &rect, - DT_SINGLELINE | DT_CENTER | DT_VCENTER); - - EndPaint(hwnd, &ps); - return 0; - } - case WM_CLOSE: - case WM_DESTROY: - // Get out of full screen - // full_screen_mode(false); - PostQuitMessage(0); - return 0; - } - return DefWindowProc(hwnd, message, wparam, lparam); -} - -#define win_class_name L"FullScreen" - -int parse_args(int argc, char **argv) -{ - int j; - - for (j = 1; j < argc; j++) - { - if ((!strcmp(argv[j], "-url")) && (++j < argc)) - { - gUpdateURL = argv[j]; - } - } - - // If nothing was set, let the caller know. - if (!gUpdateURL) - { - return 1; - } - return 0; -} - -int WINAPI -WinMain (HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nShowCmd) -{ - // Parse the command line. - LPSTR cmd_line_including_exe_name = GetCommandLineA(); - - const int MAX_ARGS = 100; - int argc = 0; - char* argv[MAX_ARGS]; /* Flawfinder: ignore */ - -#if _DEBUG - logfile.open("updater.log", std::ios_base::out); - DEBUG("Parsing command arguments"); -#endif - - char *token = NULL; - if( cmd_line_including_exe_name[0] == '\"' ) - { - // Exe name is enclosed in quotes - token = strtok( cmd_line_including_exe_name, "\"" ); - argv[argc++] = token; - token = strtok( NULL, " \t," ); - } - else - { - // Exe name is not enclosed in quotes - token = strtok( cmd_line_including_exe_name, " \t," ); - } - - while( (token != NULL) && (argc < MAX_ARGS) ) - { - argv[argc++] = token; - /* Get next token: */ - if (*(token + strlen(token) + 1) == '\"') /* Flawfinder: ignore */ - { - token = strtok( NULL, "\""); - } - else - { - token = strtok( NULL, " \t," ); - } - } - - gUpdateURL = NULL; - - ///////////////////////////////////////// - // - // Process command line arguments - // - - DEBUG("Processing command arguments"); - - // - // Parse the command line arguments - // - int parse_args_result = parse_args(argc, argv); - - WNDCLASSEX wndclassex = { 0 }; - //DEVMODE dev_mode = { 0 }; - - const int WINDOW_WIDTH = 250; - const int WINDOW_HEIGHT = 100; - - wsprintf(gProgress, L"Connecting..."); - - /* Init the WNDCLASSEX */ - wndclassex.cbSize = sizeof(WNDCLASSEX); - wndclassex.style = CS_HREDRAW | CS_VREDRAW; - wndclassex.hInstance = hInstance; - wndclassex.lpfnWndProc = WinProc; - wndclassex.hbrBackground = (HBRUSH) GetStockObject(WHITE_BRUSH); - wndclassex.lpszClassName = win_class_name; - - RegisterClassEx(&wndclassex); - - // Get the size of the screen - //EnumDisplaySettings(NULL, ENUM_CURRENT_SETTINGS, &dev_mode); - - gWindow = CreateWindowEx(NULL, win_class_name, - L"Second Life Updater", - WS_OVERLAPPEDWINDOW, - CW_USEDEFAULT, - CW_USEDEFAULT, - WINDOW_WIDTH, - WINDOW_HEIGHT, - NULL, NULL, hInstance, NULL); - - ShowWindow(gWindow, nShowCmd); - UpdateWindow(gWindow); - - if (parse_args_result) - { - MessageBox(gWindow, - L"Usage: updater -url <url> [-name <window_title>] [-program <program_name>] [-silent]", - L"Usage", MB_OK); - return parse_args_result; - } - - // Did we get a userserver to work with? - if (!gUpdateURL) - { - MessageBox(gWindow, L"Please specify the download url from the command line", - L"Error", MB_OK); - return 1; - } - - // Can't feed GetTempPath into GetTempFile directly - char temp_path[MAX_PATH]; /* Flawfinder: ignore */ - if (0 == GetTempPathA(sizeof(temp_path), temp_path)) - { - MessageBox(gWindow, L"Problem with GetTempPath()", - L"Error", MB_OK); - return 1; - } - std::string update_exec_path(temp_path); - update_exec_path.append("Second_Life_Updater.exe"); - - WCHAR update_uri[4096]; - mbstowcs(update_uri, gUpdateURL, sizeof(update_uri)); - - int success = 0; - int cancelled = 0; - - // Actually do the download - try - { - DEBUG("Calling get_url_into_file"); - success = get_url_into_file(update_uri, update_exec_path, &cancelled); - } - catch (const Fetcher::InetError& e) - { - (void)e; - success = FALSE; - DEBUG("Caught: " << e.what()); - } - - // WinInet can't tell us if we got a 404 or not. Therefor, we check - // for the size of the downloaded file, and assume that our installer - // will always be greater than 1MB. - if (gTotalBytesRead < (1024 * 1024) && ! cancelled) - { - MessageBox(gWindow, - L"The Second Life auto-update has failed.\n" - L"The problem may be caused by other software installed \n" - L"on your computer, such as a firewall.\n" - L"Please visit http://secondlife.com/download/ \n" - L"to download the latest version of Second Life.\n", - NULL, MB_OK); - return 1; - } - - if (cancelled) - { - // silently exit - return 0; - } - - if (!success) - { - MessageBox(gWindow, - L"Second Life download failed.\n" - L"Please try again later.", - NULL, MB_OK); - return 1; - } - - // TODO: Make updates silent (with /S to NSIS) - //char params[256]; /* Flawfinder: ignore */ - //sprintf(params, "/S"); /* Flawfinder: ignore */ - //MessageBox(gWindow, - // L"Updating Second Life.\n\nSecond Life will automatically start once the update is complete. This may take a minute...", - // L"Download Complete", - // MB_OK); - -/*==========================================================================*| - // DEV-31680: ShellExecuteA() causes McAfee-GW-Edition and AntiVir - // scanners to flag this executable as a probable virus vector. - // Less than or equal to 32 means failure - if (32 >= (int) ShellExecuteA(gWindow, "open", update_exec_path.c_str(), NULL, - "C:\\", SW_SHOWDEFAULT)) -|*==========================================================================*/ - // from http://msdn.microsoft.com/en-us/library/ms682512(VS.85).aspx - STARTUPINFOA si; - PROCESS_INFORMATION pi; - ZeroMemory(&si, sizeof(si)); - si.cb = sizeof(si); - ZeroMemory(&pi, sizeof(pi)); - - if (! CreateProcessA(update_exec_path.c_str(), // executable file - NULL, // command line - NULL, // process cannot be inherited - NULL, // thread cannot be inherited - FALSE, // do not inherit existing handles - 0, // process creation flags - NULL, // inherit parent's environment - NULL, // inherit parent's current dir - &si, // STARTUPINFO - &pi)) // PROCESS_INFORMATION - { - MessageBox(gWindow, L"Update failed. Please try again later.", NULL, MB_OK); - return 1; - } - - // Give installer some time to open a window - Sleep(1000); - - return 0; -} |